From owner-svn-src-all@FreeBSD.ORG Sun May 24 00:53:45 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 61B095AE; Sun, 24 May 2015 00:53:45 +0000 (UTC) Received: from svn.freebsd.org (svn.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 4F9C8139E; Sun, 24 May 2015 00:53:45 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4O0rjDa013443; Sun, 24 May 2015 00:53:45 GMT (envelope-from ian@FreeBSD.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4O0rhpe013434; Sun, 24 May 2015 00:53:43 GMT (envelope-from ian@FreeBSD.org) Message-Id: <201505240053.t4O0rhpe013434@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ian set sender to ian@FreeBSD.org using -f From: Ian Lepore Date: Sun, 24 May 2015 00:53:43 +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: r283341 - in stable/10/sys: dev/usb/serial 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-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 00:53:45 -0000 Author: ian Date: Sun May 24 00:53:43 2015 New Revision: 283341 URL: https://svnweb.freebsd.org/changeset/base/283341 Log: MFC r279728, r279729, r279756, r279773, r282424, r281367: Add mutex support to the pps_ioctl() API in the kernel. Add PPS support to USB serial drivers. Use correct mode variable for PPS support. Switch polarity of USB serial PPS events. The ftdi "get latency" and "get bitmode" device commands are read operations, not writes. Implement a mechanism for making changes in the kernel<->driver PPS interface without breaking ABI or API compatibility with existing drivers. Bump version number to indicate the new PPS ABI version changes in the pps_state structure. Modified: stable/10/sys/dev/usb/serial/uftdi.c stable/10/sys/dev/usb/serial/usb_serial.c stable/10/sys/dev/usb/serial/usb_serial.h stable/10/sys/kern/kern_tc.c stable/10/sys/sys/param.h stable/10/sys/sys/timepps.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/usb/serial/uftdi.c ============================================================================== --- stable/10/sys/dev/usb/serial/uftdi.c Sat May 23 23:35:19 2015 (r283340) +++ stable/10/sys/dev/usb/serial/uftdi.c Sun May 24 00:53:43 2015 (r283341) @@ -1703,7 +1703,7 @@ uftdi_get_bitmode(struct ucom_softc *uco struct uftdi_softc *sc = ucom->sc_parent; usb_device_request_t req; - req.bmRequestType = UT_WRITE_VENDOR_DEVICE; + req.bmRequestType = UT_READ_VENDOR_DEVICE; req.bRequest = FTDI_SIO_GET_BITMODE; USETW(req.wIndex, sc->sc_ucom.sc_portno); @@ -1740,7 +1740,7 @@ uftdi_get_latency(struct ucom_softc *uco usb_error_t err; uint8_t buf; - req.bmRequestType = UT_WRITE_VENDOR_DEVICE; + req.bmRequestType = UT_READ_VENDOR_DEVICE; req.bRequest = FTDI_SIO_GET_LATENCY; USETW(req.wIndex, sc->sc_ucom.sc_portno); Modified: stable/10/sys/dev/usb/serial/usb_serial.c ============================================================================== --- stable/10/sys/dev/usb/serial/usb_serial.c Sat May 23 23:35:19 2015 (r283340) +++ stable/10/sys/dev/usb/serial/usb_serial.c Sun May 24 00:53:43 2015 (r283341) @@ -96,6 +96,11 @@ __FBSDID("$FreeBSD$"); static SYSCTL_NODE(_hw_usb, OID_AUTO, ucom, CTLFLAG_RW, 0, "USB ucom"); +static int ucom_pps_mode; + +SYSCTL_INT(_hw_usb_ucom, OID_AUTO, pps_mode, CTLFLAG_RWTUN, + &ucom_pps_mode, 0, "pulse capturing mode - 0/1/2 - disabled/CTS/DCD"); + #ifdef USB_DEBUG static int ucom_debug = 0; @@ -412,6 +417,11 @@ ucom_attach_tty(struct ucom_super_softc sc->sc_tty = tp; + sc->sc_pps.ppscap = PPS_CAPTUREBOTH; + sc->sc_pps.driver_abi = PPS_ABI_VERSION; + sc->sc_pps.driver_mtx = sc->sc_mtx; + pps_init_abi(&sc->sc_pps); + DPRINTF("ttycreate: %s\n", buf); /* Check if this device should be a console */ @@ -861,6 +871,8 @@ ucom_ioctl(struct tty *tp, u_long cmd, c } else { error = ENOIOCTL; } + if (error == ENOIOCTL) + error = pps_ioctl(cmd, data, &sc->sc_pps); break; } return (error); @@ -1064,7 +1076,7 @@ ucom_cfg_status_change(struct usb_proc_m struct tty *tp; uint8_t new_msr; uint8_t new_lsr; - uint8_t onoff; + uint8_t msr_delta; uint8_t lsr_delta; tp = sc->sc_tty; @@ -1088,15 +1100,42 @@ ucom_cfg_status_change(struct usb_proc_m /* TTY device closed */ return; } - onoff = ((sc->sc_msr ^ new_msr) & SER_DCD); + msr_delta = (sc->sc_msr ^ new_msr); lsr_delta = (sc->sc_lsr ^ new_lsr); sc->sc_msr = new_msr; sc->sc_lsr = new_lsr; - if (onoff) { + /* + * Time pulse counting support. Note that both CTS and DCD are + * active-low signals. The status bit is high to indicate that + * the signal on the line is low, which corresponds to a PPS + * clear event. + */ + switch(ucom_pps_mode) { + case 1: + if ((sc->sc_pps.ppsparam.mode & PPS_CAPTUREBOTH) && + (msr_delta & SER_CTS)) { + pps_capture(&sc->sc_pps); + pps_event(&sc->sc_pps, (sc->sc_msr & SER_CTS) ? + PPS_CAPTURECLEAR : PPS_CAPTUREASSERT); + } + break; + case 2: + if ((sc->sc_pps.ppsparam.mode & PPS_CAPTUREBOTH) && + (msr_delta & SER_DCD)) { + pps_capture(&sc->sc_pps); + pps_event(&sc->sc_pps, (sc->sc_msr & SER_DCD) ? + PPS_CAPTURECLEAR : PPS_CAPTUREASSERT); + } + break; + default: + break; + } + + if (msr_delta & SER_DCD) { - onoff = (sc->sc_msr & SER_DCD) ? 1 : 0; + int onoff = (sc->sc_msr & SER_DCD) ? 1 : 0; DPRINTF("DCD changed to %d\n", onoff); Modified: stable/10/sys/dev/usb/serial/usb_serial.h ============================================================================== --- stable/10/sys/dev/usb/serial/usb_serial.h Sat May 23 23:35:19 2015 (r283340) +++ stable/10/sys/dev/usb/serial/usb_serial.h Sun May 24 00:53:43 2015 (r283341) @@ -64,6 +64,7 @@ #include #include #include +#include /* Module interface related macros */ #define UCOM_MODVER 1 @@ -155,6 +156,8 @@ struct ucom_softc { struct ucom_cfg_task sc_line_state_task[2]; struct ucom_cfg_task sc_status_task[2]; struct ucom_param_task sc_param_task[2]; + /* pulse capturing support, PPS */ + struct pps_state sc_pps; /* Used to set "UCOM_FLAG_GP_DATA" flag: */ struct usb_proc_msg *sc_last_start_xfer; const struct ucom_callback *sc_callback; Modified: stable/10/sys/kern/kern_tc.c ============================================================================== --- stable/10/sys/kern/kern_tc.c Sat May 23 23:35:19 2015 (r283340) +++ stable/10/sys/kern/kern_tc.c Sun May 24 00:53:43 2015 (r283341) @@ -23,10 +23,8 @@ __FBSDID("$FreeBSD$"); #include #include #include -#ifdef FFCLOCK #include #include -#endif #include #include #include @@ -1462,6 +1460,17 @@ SYSCTL_PROC(_kern_timecounter, OID_AUTO, * RFC 2783 PPS-API implementation. */ +/* + * Return true if the driver is aware of the abi version extensions in the + * pps_state structure, and it supports at least the given abi version number. + */ +static inline int +abi_aware(struct pps_state *pps, int vers) +{ + + return ((pps->kcmode & KCMODE_ABIFLAG) && pps->driver_abi >= vers); +} + static int pps_fetch(struct pps_fetch_args *fapi, struct pps_state *pps) { @@ -1491,7 +1500,17 @@ pps_fetch(struct pps_fetch_args *fapi, s cseq = pps->ppsinfo.clear_sequence; while (aseq == pps->ppsinfo.assert_sequence && cseq == pps->ppsinfo.clear_sequence) { - err = tsleep(pps, PCATCH, "ppsfch", timo); + if (abi_aware(pps, 1) && pps->driver_mtx != NULL) { + if (pps->flags & PPSFLAG_MTX_SPIN) { + err = msleep_spin(pps, pps->driver_mtx, + "ppsfch", timo); + } else { + err = msleep(pps, pps->driver_mtx, PCATCH, + "ppsfch", timo); + } + } else { + err = tsleep(pps, PCATCH, "ppsfch", timo); + } if (err == EWOULDBLOCK && fapi->timeout.tv_sec == -1) { continue; } else if (err != 0) { @@ -1581,7 +1600,8 @@ pps_ioctl(u_long cmd, caddr_t data, stru return (EINVAL); if (kapi->edge & ~pps->ppscap) return (EINVAL); - pps->kcmode = kapi->edge; + pps->kcmode = (kapi->edge & KCMODE_EDGEMASK) | + (pps->kcmode & KCMODE_ABIFLAG); return (0); #else return (EOPNOTSUPP); @@ -1602,6 +1622,18 @@ pps_init(struct pps_state *pps) #ifdef FFCLOCK pps->ppscap |= PPS_TSCLK_MASK; #endif + pps->kcmode &= ~KCMODE_ABIFLAG; +} + +void +pps_init_abi(struct pps_state *pps) +{ + + pps_init(pps); + if (pps->driver_abi > 0) { + pps->kcmode |= KCMODE_ABIFLAG; + pps->kernel_abi = PPS_ABI_VERSION; + } } void Modified: stable/10/sys/sys/param.h ============================================================================== --- stable/10/sys/sys/param.h Sat May 23 23:35:19 2015 (r283340) +++ stable/10/sys/sys/param.h Sun May 24 00:53:43 2015 (r283341) @@ -58,7 +58,7 @@ * in the range 5 to 9. */ #undef __FreeBSD_version -#define __FreeBSD_version 1001515 /* Master, propagated to newvers */ +#define __FreeBSD_version 1001516 /* Master, propagated to newvers */ /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, Modified: stable/10/sys/sys/timepps.h ============================================================================== --- stable/10/sys/sys/timepps.h Sat May 23 23:35:19 2015 (r283340) +++ stable/10/sys/sys/timepps.h Sun May 24 00:53:43 2015 (r283341) @@ -133,6 +133,15 @@ struct pps_kcbind_args { #ifdef _KERNEL +struct mtx; + +#define KCMODE_EDGEMASK 0x03 +#define KCMODE_ABIFLAG 0x80000000 /* Internal use: abi-aware driver. */ + +#define PPS_ABI_VERSION 1 + +#define PPSFLAG_MTX_SPIN 0x01 /* Driver mtx is MTX_SPIN type. */ + struct pps_state { /* Capture information. */ struct timehands *capth; @@ -148,11 +157,19 @@ struct pps_state { int ppscap; struct timecounter *ppstc; unsigned ppscount[3]; + /* + * The following fields are valid if the driver calls pps_init_abi(). + */ + uint16_t driver_abi; /* Driver sets before pps_init_abi(). */ + uint16_t kernel_abi; /* Kernel sets during pps_init_abi(). */ + struct mtx *driver_mtx; /* Optional, valid if non-NULL. */ + uint32_t flags; }; void pps_capture(struct pps_state *pps); void pps_event(struct pps_state *pps, int event); void pps_init(struct pps_state *pps); +void pps_init_abi(struct pps_state *pps); int pps_ioctl(unsigned long cmd, caddr_t data, struct pps_state *pps); void hardpps(struct timespec *tsp, long nsec); From owner-svn-src-all@FreeBSD.ORG Sun May 24 01:09:52 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4FCE1782; Sun, 24 May 2015 01:09:52 +0000 (UTC) Received: from svn.freebsd.org (svn.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 3E08114E5; Sun, 24 May 2015 01:09:52 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4O19q4M019197; Sun, 24 May 2015 01:09:52 GMT (envelope-from ian@FreeBSD.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4O19qET019196; Sun, 24 May 2015 01:09:52 GMT (envelope-from ian@FreeBSD.org) Message-Id: <201505240109.t4O19qET019196@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ian set sender to ian@FreeBSD.org using -f From: Ian Lepore Date: Sun, 24 May 2015 01:09:52 +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: r283342 - 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-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 01:09:52 -0000 Author: ian Date: Sun May 24 01:09:51 2015 New Revision: 283342 URL: https://svnweb.freebsd.org/changeset/base/283342 Log: MFC r280221: Update ucom(4) with information about the new PPS capture abilities. Modified: stable/10/share/man/man4/ucom.4 Directory Properties: stable/10/ (props changed) Modified: stable/10/share/man/man4/ucom.4 ============================================================================== --- stable/10/share/man/man4/ucom.4 Sun May 24 00:53:43 2015 (r283341) +++ stable/10/share/man/man4/ucom.4 Sun May 24 01:09:51 2015 (r283342) @@ -29,7 +29,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 1, 2008 +.Dd March 11, 2015 .Dt UCOM 4 .Os .Sh NAME @@ -63,11 +63,34 @@ This means that normal programs such as or .Xr ppp 8 can be used to access the device. +.Sh Pulse Per Second (PPS) Timing Interface +The +.Nm +driver can capture PPS timing information as defined in RFC 2783. +The API, accessed via +.Xr ioctl 8 , +is available on the tty device. +To use the PPS capture feature with +.Xr ntpd 8 , +symlink the tty device to +.Va /dev/pps0. .Pp The -.Va portno -locater can be used to decide which port to use for devices that have -multiple external ports. +.Va hw.usb.ucom.pps_mode +sysctl configures the PPS capture mode. +It can be set in +.Xr loader.conf 5 +or +.Xr sysctl.conf 5 . +The following capture modes are available: +.Bl -tag -compact -offset "mmmm" -width "mmmm" +.It 0 +Capture disabled (default). +.It 1 +Capture pulses on the CTS line. +.It 2 +Capture pulses on the DCD line. +.El .Sh FILES .Bl -tag -width ".Pa /dev/cuaU?" .It Pa /dev/cuaU? From owner-svn-src-all@FreeBSD.ORG Sun May 24 01:48:34 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 50B97C85; Sun, 24 May 2015 01:48:34 +0000 (UTC) Received: from svn.freebsd.org (svn.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 321FE1897; Sun, 24 May 2015 01:48:34 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4O1mYFS038527; Sun, 24 May 2015 01:48:34 GMT (envelope-from pkelsey@FreeBSD.org) Received: (from pkelsey@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4O1mYVM038526; Sun, 24 May 2015 01:48:34 GMT (envelope-from pkelsey@FreeBSD.org) Message-Id: <201505240148.t4O1mYVM038526@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: pkelsey set sender to pkelsey@FreeBSD.org using -f From: Patrick Kelsey Date: Sun, 24 May 2015 01:48:34 +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: r283343 - stable/10/sys/dev/netmap X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 01:48:34 -0000 Author: pkelsey Date: Sun May 24 01:48:33 2015 New Revision: 283343 URL: https://svnweb.freebsd.org/changeset/base/283343 Log: MFC r282978: When a netmap process terminates without the full set of buffers it was granted via rings and ni_bufs_list_head represented in those rings and lists (e.g., via SIGKILL), those buffers are no longer available for subsequent users for the lifetime of the system. To mitigate this resource leak, reset the allocator state when the last ref to that allocator is released. Note that this only recovers leaked resources for an allocator when there are no longer any users of that allocator, so there remain circumstances in which leaked allocator resources may not ever be recovered - consider a set of multiple netmap processes that are all using the same allocator (say, the global allocator) where members of that set may be killed and restarted over time but at any given point there is one member of that set running. Modified: stable/10/sys/dev/netmap/netmap_mem2.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/netmap/netmap_mem2.c ============================================================================== --- stable/10/sys/dev/netmap/netmap_mem2.c Sun May 24 01:09:51 2015 (r283342) +++ stable/10/sys/dev/netmap/netmap_mem2.c Sun May 24 01:48:33 2015 (r283343) @@ -130,9 +130,9 @@ struct netmap_mem_d { /* the three allocators */ struct netmap_obj_pool pools[NETMAP_POOLS_NR]; - netmap_mem_config_t config; - netmap_mem_finalize_t finalize; - netmap_mem_deref_t deref; + netmap_mem_config_t config; /* called with NMA_LOCK held */ + netmap_mem_finalize_t finalize; /* called with NMA_LOCK held */ + netmap_mem_deref_t deref; /* called with NMA_LOCK held */ nm_memid_t nm_id; /* allocator identifier */ int nm_grp; /* iommu groupd id */ @@ -751,6 +751,12 @@ netmap_reset_obj_allocator(struct netmap u_int i; size_t sz = p->_clustsize; + /* + * Free each cluster allocated in + * netmap_finalize_obj_allocator(). The cluster start + * addresses are stored at multiples of p->_clusterentries + * in the lut. + */ for (i = 0; i < p->objtotal; i += p->_clustentries) { if (p->lut[i].vaddr) contigfree(p->lut[i].vaddr, sz, M_NETMAP); @@ -929,6 +935,7 @@ netmap_finalize_obj_allocator(struct net if (i % p->_clustentries == 0 && p->lut[i].vaddr) contigfree(p->lut[i].vaddr, n, M_NETMAP); + p->lut[i].vaddr = NULL; } out: p->objtotal = i; @@ -936,6 +943,17 @@ netmap_finalize_obj_allocator(struct net p->numclusters = (i + p->_clustentries - 1) / p->_clustentries; break; } + /* + * Set bitmap and lut state for all buffers in the current + * cluster. + * + * [i, lim) is the set of buffer indexes that cover the + * current cluster. + * + * 'clust' is really the address of the current buffer in + * the current cluster as we index through it with a stride + * of p->_objsize. + */ for (; i < lim; i++, clust += p->_objsize) { p->bitmap[ (i>>5) ] |= ( 1 << (i & 31) ); p->lut[i].vaddr = clust; @@ -1092,10 +1110,8 @@ static int netmap_mem_private_finalize(struct netmap_mem_d *nmd) { int err; - NMA_LOCK(nmd); nmd->refcount++; err = netmap_mem_finalize_all(nmd); - NMA_UNLOCK(nmd); return err; } @@ -1103,10 +1119,8 @@ netmap_mem_private_finalize(struct netma static void netmap_mem_private_deref(struct netmap_mem_d *nmd) { - NMA_LOCK(nmd); if (--nmd->refcount <= 0) netmap_mem_reset_all(nmd); - NMA_UNLOCK(nmd); } @@ -1242,10 +1256,7 @@ static int netmap_mem_global_finalize(struct netmap_mem_d *nmd) { int err; - - NMA_LOCK(nmd); - - + /* update configuration if changed */ if (netmap_mem_global_config(nmd)) goto out; @@ -1268,8 +1279,6 @@ out: nmd->refcount--; err = nmd->lasterr; - NMA_UNLOCK(nmd); - return err; } @@ -1518,7 +1527,6 @@ netmap_mem_if_delete(struct netmap_adapt static void netmap_mem_global_deref(struct netmap_mem_d *nmd) { - NMA_LOCK(nmd); nmd->refcount--; if (!nmd->refcount) @@ -1526,7 +1534,6 @@ netmap_mem_global_deref(struct netmap_me if (netmap_verbose) D("refcount = %d", nmd->refcount); - NMA_UNLOCK(nmd); } int @@ -1535,7 +1542,9 @@ netmap_mem_finalize(struct netmap_mem_d if (nm_mem_assign_group(nmd, na->pdev) < 0) { return ENOMEM; } else { + NMA_LOCK(nmd); nmd->finalize(nmd); + NMA_UNLOCK(nmd); } if (!nmd->lasterr && na->pdev) @@ -1549,6 +1558,48 @@ netmap_mem_deref(struct netmap_mem_d *nm { NMA_LOCK(nmd); netmap_mem_unmap(&nmd->pools[NETMAP_BUF_POOL], na); + if (nmd->refcount == 1) { + u_int i; + + /* + * Reset the allocator when it falls out of use so that any + * pool resources leaked by unclean application exits are + * reclaimed. + */ + for (i = 0; i < NETMAP_POOLS_NR; i++) { + struct netmap_obj_pool *p; + u_int j; + + p = &nmd->pools[i]; + p->objfree = p->objtotal; + /* + * Reproduce the net effect of the M_ZERO malloc() + * and marking of free entries in the bitmap that + * occur in finalize_obj_allocator() + */ + memset(p->bitmap, + '\0', + sizeof(uint32_t) * ((p->objtotal + 31) / 32)); + + /* + * Set all the bits in the bitmap that have + * corresponding buffers to 1 to indicate they are + * free. + */ + for (j = 0; j < p->objtotal; j++) { + if (p->lut[j].vaddr != NULL) { + p->bitmap[ (j>>5) ] |= ( 1 << (j & 31) ); + } + } + } + + /* + * Per netmap_mem_finalize_all(), + * buffers 0 and 1 are reserved + */ + nmd->pools[NETMAP_BUF_POOL].objfree -= 2; + nmd->pools[NETMAP_BUF_POOL].bitmap[0] = ~3; + } + nmd->deref(nmd); NMA_UNLOCK(nmd); - return nmd->deref(nmd); } From owner-svn-src-all@FreeBSD.ORG Sun May 24 01:52:23 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0CF15DD4; Sun, 24 May 2015 01:52:23 +0000 (UTC) Received: from svn.freebsd.org (svn.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 EDAE51958; Sun, 24 May 2015 01:52:22 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4O1qMcg042657; Sun, 24 May 2015 01:52:22 GMT (envelope-from pkelsey@FreeBSD.org) Received: (from pkelsey@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4O1qMst042656; Sun, 24 May 2015 01:52:22 GMT (envelope-from pkelsey@FreeBSD.org) Message-Id: <201505240152.t4O1qMst042656@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: pkelsey set sender to pkelsey@FreeBSD.org using -f From: Patrick Kelsey Date: Sun, 24 May 2015 01:52:22 +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: r283344 - stable/10/share/man/man3 X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 01:52:23 -0000 Author: pkelsey Date: Sun May 24 01:52:22 2015 New Revision: 283344 URL: https://svnweb.freebsd.org/changeset/base/283344 Log: MFC r283093: Added description of POSIX-specified behavior when invoked on a key from within that key's destructor. Modified: stable/10/share/man/man3/pthread_getspecific.3 Directory Properties: stable/10/ (props changed) Modified: stable/10/share/man/man3/pthread_getspecific.3 ============================================================================== --- stable/10/share/man/man3/pthread_getspecific.3 Sun May 24 01:48:33 2015 (r283343) +++ stable/10/share/man/man3/pthread_getspecific.3 Sun May 24 01:52:22 2015 (r283344) @@ -64,6 +64,11 @@ is undefined. The .Fn pthread_getspecific function may be called from a thread-specific data destructor function. +A call to +.Fn pthread_getspecific +for the thread-specific data key being destroyed returns the value NULL, +unless the value is changed (after the destructor starts) by a call to +.Fn pthread_setspecific . .Sh RETURN VALUES The .Fn pthread_getspecific From owner-svn-src-all@FreeBSD.ORG Sun May 24 02:15:19 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 08DFF122; Sun, 24 May 2015 02:15:19 +0000 (UTC) Received: from svn.freebsd.org (svn.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 EB8721B58; Sun, 24 May 2015 02:15:18 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4O2FImt053298; Sun, 24 May 2015 02:15:18 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4O2FIN6053297; Sun, 24 May 2015 02:15:18 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201505240215.t4O2FIN6053297@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Sun, 24 May 2015 02:15:18 +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: r283345 - stable/10/release X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 02:15:19 -0000 Author: gjb Date: Sun May 24 02:15:18 2015 New Revision: 283345 URL: https://svnweb.freebsd.org/changeset/base/283345 Log: MFC r283252: Include the TARGET in the EC2 AMI name. Without this, AWS rejects subsequent image uploads of a different architecture because the name conflicts. Sponsored by: The FreeBSD Foundation Modified: stable/10/release/Makefile.ec2 Directory Properties: stable/10/ (props changed) Modified: stable/10/release/Makefile.ec2 ============================================================================== --- stable/10/release/Makefile.ec2 Sun May 24 01:52:22 2015 (r283344) +++ stable/10/release/Makefile.ec2 Sun May 24 02:15:18 2015 (r283345) @@ -53,7 +53,7 @@ ec2ami: cw-ec2 ${CW_EC2_PORTINSTALL} .endif /usr/local/bin/bsdec2-image-upload ${PUBLISH} \ ${.OBJDIR}/ec2.raw \ - "${TYPE} ${REVISION}-${BRANCH}${AMINAMESUFFIX}" \ - "${TYPE} ${REVISION}-${BRANCH}" \ + "${TYPE} ${REVISION}-${BRANCH}-${TARGET}${AMINAMESUFFIX}" \ + "${TYPE} ${REVISION}-${BRANCH}-${TARGET}" \ ${AWSREGION} ${AWSBUCKET} ${AWSKEYFILE} @touch ${.TARGET} From owner-svn-src-all@FreeBSD.ORG Sun May 24 04:14:11 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3C0BA241; Sun, 24 May 2015 04:14:11 +0000 (UTC) Received: from svn.freebsd.org (svn.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 0F9DB17B9; Sun, 24 May 2015 04:14:11 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4O4EAYP013542; Sun, 24 May 2015 04:14:10 GMT (envelope-from trasz@FreeBSD.org) Received: (from trasz@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4O4EATu013539; Sun, 24 May 2015 04:14:10 GMT (envelope-from trasz@FreeBSD.org) Message-Id: <201505240414.t4O4EATu013539@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: trasz set sender to trasz@FreeBSD.org using -f From: Edward Tomasz Napierala Date: Sun, 24 May 2015 04:14:10 +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: r283349 - stable/10/sys/cam X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 04:14:11 -0000 Author: trasz Date: Sun May 24 04:14:09 2015 New Revision: 283349 URL: https://svnweb.freebsd.org/changeset/base/283349 Log: MFC r279554: Make periphdriver_register() take XPT lock when modifying the periph_drivers array. This fixes a panic that sometimes occured when kldloading ctl.ko. PR: 200384 Sponsored by: The FreeBSD Foundation Modified: stable/10/sys/cam/cam_periph.c stable/10/sys/cam/cam_xpt.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cam/cam_periph.c ============================================================================== --- stable/10/sys/cam/cam_periph.c Sun May 24 02:46:08 2015 (r283348) +++ stable/10/sys/cam/cam_periph.c Sun May 24 04:14:09 2015 (r283349) @@ -108,9 +108,19 @@ periphdriver_register(void *data) struct periph_driver **newdrivers, **old; int ndrivers; +again: ndrivers = nperiph_drivers + 2; newdrivers = malloc(sizeof(*newdrivers) * ndrivers, M_CAMPERIPH, M_WAITOK); + xpt_lock_buses(); + if (ndrivers != nperiph_drivers + 2) { + /* + * Lost race against itself; go around. + */ + xpt_unlock_buses(); + free(newdrivers, M_CAMPERIPH); + goto again; + } if (periph_drivers) bcopy(periph_drivers, newdrivers, sizeof(*newdrivers) * nperiph_drivers); @@ -118,9 +128,10 @@ periphdriver_register(void *data) newdrivers[nperiph_drivers + 1] = NULL; old = periph_drivers; periph_drivers = newdrivers; + nperiph_drivers++; + xpt_unlock_buses(); if (old) free(old, M_CAMPERIPH); - nperiph_drivers++; /* If driver marked as early or it is late now, initialize it. */ if (((drv->flags & CAM_PERIPH_DRV_EARLY) != 0 && initialized > 0) || initialized > 1) Modified: stable/10/sys/cam/cam_xpt.c ============================================================================== --- stable/10/sys/cam/cam_xpt.c Sun May 24 02:46:08 2015 (r283348) +++ stable/10/sys/cam/cam_xpt.c Sun May 24 04:14:09 2015 (r283349) @@ -149,6 +149,8 @@ typedef int xpt_pdrvfunc_t (struct perip /* Transport layer configuration information */ static struct xpt_softc xsoftc; +MTX_SYSINIT(xpt_topo_init, &xsoftc.xpt_topo_lock, "XPT topology lock", MTX_DEF); + TUNABLE_INT("kern.cam.boot_delay", &xsoftc.boot_delay); SYSCTL_INT(_kern_cam, OID_AUTO, boot_delay, CTLFLAG_RDTUN, &xsoftc.boot_delay, 0, "Bus registration wait time"); @@ -850,7 +852,6 @@ xpt_init(void *dummy) mtx_init(&xsoftc.xpt_lock, "XPT lock", NULL, MTX_DEF); mtx_init(&xsoftc.xpt_highpower_lock, "XPT highpower lock", NULL, MTX_DEF); - mtx_init(&xsoftc.xpt_topo_lock, "XPT topology lock", NULL, MTX_DEF); xsoftc.xpt_taskq = taskqueue_create("CAM XPT task", M_WAITOK, taskqueue_thread_enqueue, /*context*/&xsoftc.xpt_taskq); From owner-svn-src-all@FreeBSD.ORG Sun May 24 06:53:10 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E488E31B; Sun, 24 May 2015 06:53:10 +0000 (UTC) Received: from svn.freebsd.org (svn.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 D1B6618B5; Sun, 24 May 2015 06:53:10 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4O6rAEp091392; Sun, 24 May 2015 06:53:10 GMT (envelope-from arybchik@FreeBSD.org) Received: (from arybchik@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4O6rAa0091391; Sun, 24 May 2015 06:53:10 GMT (envelope-from arybchik@FreeBSD.org) Message-Id: <201505240653.t4O6rAa0091391@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: arybchik set sender to arybchik@FreeBSD.org using -f From: Andrew Rybchenko Date: Sun, 24 May 2015 06:53:10 +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: r283350 - stable/10/sys/dev/sfxge X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 06:53:11 -0000 Author: arybchik Date: Sun May 24 06:53:10 2015 New Revision: 283350 URL: https://svnweb.freebsd.org/changeset/base/283350 Log: MFC: r283278 sfxge: relax assertion to allow RST flag in TSO packets Kernel under stress load, mixed MC reboot and sfupdate really generates TSO packet with RST flag. It will generate many TCP packets with RST flag set. May be RST flag should be set in the last segment only, but it could be dropped. So, it is safer to keep the flag in all packets to be sure that connection is reset. Sponsored by: Solarflare Communications, Inc. Modified: stable/10/sys/dev/sfxge/sfxge_tx.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/sfxge/sfxge_tx.c ============================================================================== --- stable/10/sys/dev/sfxge/sfxge_tx.c Sun May 24 04:14:09 2015 (r283349) +++ stable/10/sys/dev/sfxge/sfxge_tx.c Sun May 24 06:53:10 2015 (r283350) @@ -865,8 +865,14 @@ static void tso_start(struct sfxge_tso_s tso->seqnum = ntohl(th->th_seq); /* These flags must not be duplicated */ - KASSERT(!(th->th_flags & (TH_URG | TH_SYN | TH_RST)), - ("incompatible TCP flag on TSO packet")); + /* + * RST should not be duplicated as well, but FreeBSD kernel + * generates TSO packets with RST flag. So, do not assert + * its absence. + */ + KASSERT(!(th->th_flags & (TH_URG | TH_SYN)), + ("incompatible TCP flag 0x%x on TSO packet", + th->th_flags & (TH_URG | TH_SYN))); tso->out_len = mbuf->m_pkthdr.len - tso->header_len; } From owner-svn-src-all@FreeBSD.ORG Sun May 24 07:09:17 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 6E5E0785; Sun, 24 May 2015 07:09:17 +0000 (UTC) Received: from svn.freebsd.org (svn.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 5C97F19F6; Sun, 24 May 2015 07:09:17 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4O79HUE098964; Sun, 24 May 2015 07:09:17 GMT (envelope-from ganbold@FreeBSD.org) Received: (from ganbold@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4O79HES098963; Sun, 24 May 2015 07:09:17 GMT (envelope-from ganbold@FreeBSD.org) Message-Id: <201505240709.t4O79HES098963@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ganbold set sender to ganbold@FreeBSD.org using -f From: Ganbold Tsagaankhuu Date: Sun, 24 May 2015 07:09:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283352 - head/sys/boot/fdt/dts/arm X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 07:09:17 -0000 Author: ganbold Date: Sun May 24 07:09:16 2015 New Revision: 283352 URL: https://svnweb.freebsd.org/changeset/base/283352 Log: Enable leds for VSATV102 in dts. Differential Revision: https://reviews.freebsd.org/D2614 Submitted by: John Wehle Modified: head/sys/boot/fdt/dts/arm/vsatv102-m6.dts Modified: head/sys/boot/fdt/dts/arm/vsatv102-m6.dts ============================================================================== --- head/sys/boot/fdt/dts/arm/vsatv102-m6.dts Sun May 24 07:00:58 2015 (r283351) +++ head/sys/boot/fdt/dts/arm/vsatv102-m6.dts Sun May 24 07:09:16 2015 (r283352) @@ -282,6 +282,17 @@ }; }; + leds { + compatible = "gpio-leds"; + + sys_led { + gpios = <&gpioao 2>; /* gpioao_2 sys_led */ + label = "sys_led"; + + default-state = "on"; + }; + }; + chosen { stdin = "uart0"; stdout = "uart0"; From owner-svn-src-all@FreeBSD.ORG Sun May 24 07:21:30 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D2956437; Sun, 24 May 2015 07:21:30 +0000 (UTC) Received: from svn.freebsd.org (svn.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 A7C131BE4; Sun, 24 May 2015 07:21:30 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4O7LUqR010690; Sun, 24 May 2015 07:21:30 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4O7LUDv010689; Sun, 24 May 2015 07:21:30 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201505240721.t4O7LUDv010689@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Garrett Cooper Date: Sun, 24 May 2015 07:21:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283357 - head/tools/regression/file X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 07:21:30 -0000 Author: ngie Date: Sun May 24 07:21:30 2015 New Revision: 283357 URL: https://svnweb.freebsd.org/changeset/base/283357 Log: Remove directory for test that has been integrated in under tests/sys/... X-MFC with: r282067 MFC after: 1 week Deleted: head/tools/regression/file/ From owner-svn-src-all@FreeBSD.ORG Sun May 24 07:32:05 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C1463A30; Sun, 24 May 2015 07:32:05 +0000 (UTC) Received: from svn.freebsd.org (svn.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 931831CE6; Sun, 24 May 2015 07:32:05 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4O7W5w8016200; Sun, 24 May 2015 07:32:05 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4O7W3Xj016178; Sun, 24 May 2015 07:32:03 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201505240732.t4O7W3Xj016178@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Sun, 24 May 2015 07:32:03 +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: r283359 - in stable/10/sys: amd64/linux32 compat/freebsd32 compat/svr4 i386/ibcs2 i386/linux 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-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 07:32:05 -0000 Author: kib Date: Sun May 24 07:32:02 2015 New Revision: 283359 URL: https://svnweb.freebsd.org/changeset/base/283359 Log: MFC r282708: On exec, single-threading must be enforced before arguments space is allocated from exec_map. Modified: stable/10/sys/amd64/linux32/linux32_machdep.c stable/10/sys/compat/freebsd32/freebsd32_misc.c stable/10/sys/compat/svr4/svr4_misc.c stable/10/sys/i386/ibcs2/ibcs2_misc.c stable/10/sys/i386/linux/linux_machdep.c stable/10/sys/kern/kern_exec.c stable/10/sys/sys/imgact.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/amd64/linux32/linux32_machdep.c ============================================================================== --- stable/10/sys/amd64/linux32/linux32_machdep.c Sun May 24 07:23:16 2015 (r283358) +++ stable/10/sys/amd64/linux32/linux32_machdep.c Sun May 24 07:32:02 2015 (r283359) @@ -137,6 +137,7 @@ int linux_execve(struct thread *td, struct linux_execve_args *args) { struct image_args eargs; + struct vmspace *oldvmspace; char *path; int error; @@ -147,12 +148,17 @@ linux_execve(struct thread *td, struct l printf(ARGS(execve, "%s"), path); #endif + error = pre_execve(td, &oldvmspace); + if (error != 0) { + free(path, M_TEMP); + return (error); + } error = freebsd32_exec_copyin_args(&eargs, path, UIO_SYSSPACE, args->argp, args->envp); free(path, M_TEMP); if (error == 0) error = kern_execve(td, &eargs, NULL); - if (error == 0) + if (error == 0) { /* Linux process can execute FreeBSD one, do not attempt * to create emuldata for such process using * linux_proc_init, this leads to a panic on KASSERT @@ -160,6 +166,8 @@ linux_execve(struct thread *td, struct l */ if (SV_PROC_ABI(td->td_proc) == SV_ABI_LINUX) error = linux_proc_init(td, 0, 0); + } + post_execve(td, error, oldvmspace); return (error); } Modified: stable/10/sys/compat/freebsd32/freebsd32_misc.c ============================================================================== --- stable/10/sys/compat/freebsd32/freebsd32_misc.c Sun May 24 07:23:16 2015 (r283358) +++ stable/10/sys/compat/freebsd32/freebsd32_misc.c Sun May 24 07:32:02 2015 (r283359) @@ -400,12 +400,17 @@ int freebsd32_execve(struct thread *td, struct freebsd32_execve_args *uap) { struct image_args eargs; + struct vmspace *oldvmspace; int error; + error = pre_execve(td, &oldvmspace); + if (error != 0) + return (error); error = freebsd32_exec_copyin_args(&eargs, uap->fname, UIO_USERSPACE, uap->argv, uap->envv); if (error == 0) error = kern_execve(td, &eargs, NULL); + post_execve(td, error, oldvmspace); return (error); } @@ -413,14 +418,19 @@ int freebsd32_fexecve(struct thread *td, struct freebsd32_fexecve_args *uap) { struct image_args eargs; + struct vmspace *oldvmspace; int error; + error = pre_execve(td, &oldvmspace); + if (error != 0) + return (error); error = freebsd32_exec_copyin_args(&eargs, NULL, UIO_SYSSPACE, uap->argv, uap->envv); if (error == 0) { eargs.fd = uap->fd; error = kern_execve(td, &eargs, NULL); } + post_execve(td, error, oldvmspace); return (error); } Modified: stable/10/sys/compat/svr4/svr4_misc.c ============================================================================== --- stable/10/sys/compat/svr4/svr4_misc.c Sun May 24 07:23:16 2015 (r283358) +++ stable/10/sys/compat/svr4/svr4_misc.c Sun May 24 07:32:02 2015 (r283359) @@ -167,15 +167,22 @@ svr4_sys_execv(td, uap) struct svr4_sys_execv_args *uap; { struct image_args eargs; + struct vmspace *oldvmspace; char *path; int error; CHECKALTEXIST(td, uap->path, &path); + error = pre_execve(td, &oldvmspace); + if (error != 0) { + free(path, M_TEMP); + return (error); + } error = exec_copyin_args(&eargs, path, UIO_SYSSPACE, uap->argp, NULL); free(path, M_TEMP); if (error == 0) error = kern_execve(td, &eargs, NULL); + post_execve(td, error, oldvmspace); return (error); } @@ -185,16 +192,23 @@ svr4_sys_execve(td, uap) struct svr4_sys_execve_args *uap; { struct image_args eargs; + struct vmspace *oldvmspace; char *path; int error; CHECKALTEXIST(td, uap->path, &path); + error = pre_execve(td, &oldvmspace); + if (error != 0) { + free(path, M_TEMP); + return (error); + } error = exec_copyin_args(&eargs, path, UIO_SYSSPACE, uap->argp, uap->envp); free(path, M_TEMP); if (error == 0) error = kern_execve(td, &eargs, NULL); + post_execve(td, error, oldvmspace); return (error); } Modified: stable/10/sys/i386/ibcs2/ibcs2_misc.c ============================================================================== --- stable/10/sys/i386/ibcs2/ibcs2_misc.c Sun May 24 07:23:16 2015 (r283358) +++ stable/10/sys/i386/ibcs2/ibcs2_misc.c Sun May 24 07:32:02 2015 (r283359) @@ -200,15 +200,22 @@ ibcs2_execv(td, uap) struct ibcs2_execv_args *uap; { struct image_args eargs; + struct vmspace *oldvmspace; char *path; int error; CHECKALTEXIST(td, uap->path, &path); + error = pre_execve(td, &oldvmspace); + if (error != 0) { + free(path, M_TEMP); + return (error); + } error = exec_copyin_args(&eargs, path, UIO_SYSSPACE, uap->argp, NULL); free(path, M_TEMP); if (error == 0) error = kern_execve(td, &eargs, NULL); + post_execve(td, error, oldvmspace); return (error); } @@ -218,16 +225,23 @@ ibcs2_execve(td, uap) struct ibcs2_execve_args *uap; { struct image_args eargs; + struct vmspace *oldvmspace; char *path; int error; CHECKALTEXIST(td, uap->path, &path); + error = pre_execve(td, &oldvmspace); + if (error != 0) { + free(path, M_TEMP); + return (error); + } error = exec_copyin_args(&eargs, path, UIO_SYSSPACE, uap->argp, uap->envp); free(path, M_TEMP); if (error == 0) error = kern_execve(td, &eargs, NULL); + post_execve(td, error, oldvmspace); return (error); } Modified: stable/10/sys/i386/linux/linux_machdep.c ============================================================================== --- stable/10/sys/i386/linux/linux_machdep.c Sun May 24 07:23:16 2015 (r283358) +++ stable/10/sys/i386/linux/linux_machdep.c Sun May 24 07:32:02 2015 (r283359) @@ -126,9 +126,10 @@ bsd_to_linux_sigaltstack(int bsa) int linux_execve(struct thread *td, struct linux_execve_args *args) { - int error; - char *newpath; struct image_args eargs; + struct vmspace *oldvmspace; + char *newpath; + int error; LCONVPATHEXIST(td, args->path, &newpath); @@ -137,12 +138,17 @@ linux_execve(struct thread *td, struct l printf(ARGS(execve, "%s"), newpath); #endif + error = pre_execve(td, &oldvmspace); + if (error != 0) { + free(newpath, M_TEMP); + return (error); + } error = exec_copyin_args(&eargs, newpath, UIO_SYSSPACE, args->argp, args->envp); free(newpath, M_TEMP); if (error == 0) error = kern_execve(td, &eargs, NULL); - if (error == 0) + if (error == 0) { /* linux process can exec fbsd one, dont attempt * to create emuldata for such process using * linux_proc_init, this leads to a panic on KASSERT @@ -150,6 +156,8 @@ linux_execve(struct thread *td, struct l */ if (SV_PROC_ABI(td->td_proc) == SV_ABI_LINUX) error = linux_proc_init(td, 0, 0); + } + post_execve(td, error, oldvmspace); return (error); } Modified: stable/10/sys/kern/kern_exec.c ============================================================================== --- stable/10/sys/kern/kern_exec.c Sun May 24 07:23:16 2015 (r283358) +++ stable/10/sys/kern/kern_exec.c Sun May 24 07:32:02 2015 (r283359) @@ -196,21 +196,20 @@ struct execve_args { #endif int -sys_execve(td, uap) - struct thread *td; - struct execve_args /* { - char *fname; - char **argv; - char **envv; - } */ *uap; +sys_execve(struct thread *td, struct execve_args *uap) { - int error; struct image_args args; + struct vmspace *oldvmspace; + int error; + error = pre_execve(td, &oldvmspace); + if (error != 0) + return (error); error = exec_copyin_args(&args, uap->fname, UIO_USERSPACE, uap->argv, uap->envv); if (error == 0) error = kern_execve(td, &args, NULL); + post_execve(td, error, oldvmspace); return (error); } @@ -224,15 +223,20 @@ struct fexecve_args { int sys_fexecve(struct thread *td, struct fexecve_args *uap) { - int error; struct image_args args; + struct vmspace *oldvmspace; + int error; + error = pre_execve(td, &oldvmspace); + if (error != 0) + return (error); error = exec_copyin_args(&args, NULL, UIO_SYSSPACE, uap->argv, uap->envv); if (error == 0) { args.fd = uap->fd; error = kern_execve(td, &args, NULL); } + post_execve(td, error, oldvmspace); return (error); } @@ -246,65 +250,56 @@ struct __mac_execve_args { #endif int -sys___mac_execve(td, uap) - struct thread *td; - struct __mac_execve_args /* { - char *fname; - char **argv; - char **envv; - struct mac *mac_p; - } */ *uap; +sys___mac_execve(struct thread *td, struct __mac_execve_args *uap) { #ifdef MAC - int error; struct image_args args; + struct vmspace *oldvmspace; + int error; + error = pre_execve(td, &oldvmspace); + if (error != 0) + return (error); error = exec_copyin_args(&args, uap->fname, UIO_USERSPACE, uap->argv, uap->envv); if (error == 0) error = kern_execve(td, &args, uap->mac_p); + post_execve(td, error, oldvmspace); return (error); #else return (ENOSYS); #endif } -/* - * XXX: kern_execve has the astonishing property of not always returning to - * the caller. If sufficiently bad things happen during the call to - * do_execve(), it can end up calling exit1(); as a result, callers must - * avoid doing anything which they might need to undo (e.g., allocating - * memory). - */ int -kern_execve(td, args, mac_p) - struct thread *td; - struct image_args *args; - struct mac *mac_p; +pre_execve(struct thread *td, struct vmspace **oldvmspace) { - struct proc *p = td->td_proc; - struct vmspace *oldvmspace; + struct proc *p; int error; - AUDIT_ARG_ARGV(args->begin_argv, args->argc, - args->begin_envv - args->begin_argv); - AUDIT_ARG_ENVV(args->begin_envv, args->envc, - args->endp - args->begin_envv); - if (p->p_flag & P_HADTHREADS) { + KASSERT(td == curthread, ("non-current thread %p", td)); + error = 0; + p = td->td_proc; + if ((p->p_flag & P_HADTHREADS) != 0) { PROC_LOCK(p); - if (thread_single(p, SINGLE_BOUNDARY)) { - PROC_UNLOCK(p); - exec_free_args(args); - return (ERESTART); /* Try again later. */ - } + if (thread_single(p, SINGLE_BOUNDARY) != 0) + error = ERESTART; PROC_UNLOCK(p); } + KASSERT(error != 0 || (td->td_pflags & TDP_EXECVMSPC) == 0, + ("nested execve")); + *oldvmspace = p->p_vmspace; + return (error); +} - KASSERT((td->td_pflags & TDP_EXECVMSPC) == 0, ("nested execve")); - oldvmspace = td->td_proc->p_vmspace; - error = do_execve(td, args, mac_p); +void +post_execve(struct thread *td, int error, struct vmspace *oldvmspace) +{ + struct proc *p; - if (p->p_flag & P_HADTHREADS) { + KASSERT(td == curthread, ("non-current thread %p", td)); + p = td->td_proc; + if ((p->p_flag & P_HADTHREADS) != 0) { PROC_LOCK(p); /* * If success, we upgrade to SINGLE_EXIT state to @@ -317,13 +312,29 @@ kern_execve(td, args, mac_p) PROC_UNLOCK(p); } if ((td->td_pflags & TDP_EXECVMSPC) != 0) { - KASSERT(td->td_proc->p_vmspace != oldvmspace, + KASSERT(p->p_vmspace != oldvmspace, ("oldvmspace still used")); vmspace_free(oldvmspace); td->td_pflags &= ~TDP_EXECVMSPC; } +} - return (error); +/* + * XXX: kern_execve has the astonishing property of not always returning to + * the caller. If sufficiently bad things happen during the call to + * do_execve(), it can end up calling exit1(); as a result, callers must + * avoid doing anything which they might need to undo (e.g., allocating + * memory). + */ +int +kern_execve(struct thread *td, struct image_args *args, struct mac *mac_p) +{ + + AUDIT_ARG_ARGV(args->begin_argv, args->argc, + args->begin_envv - args->begin_argv); + AUDIT_ARG_ENVV(args->begin_envv, args->envc, + args->endp - args->begin_envv); + return (do_execve(td, args, mac_p)); } /* Modified: stable/10/sys/sys/imgact.h ============================================================================== --- stable/10/sys/sys/imgact.h Sun May 24 07:23:16 2015 (r283358) +++ stable/10/sys/sys/imgact.h Sun May 24 07:32:02 2015 (r283359) @@ -86,6 +86,7 @@ struct image_params { #ifdef _KERNEL struct sysentvec; struct thread; +struct vmspace; #define IMGACT_CORE_COMPRESS 0x01 @@ -98,6 +99,8 @@ void exec_setregs(struct thread *, struc int exec_shell_imgact(struct image_params *); int exec_copyin_args(struct image_args *, char *, enum uio_seg, char **, char **); +int pre_execve(struct thread *td, struct vmspace **oldvmspace); +void post_execve(struct thread *td, int error, struct vmspace *oldvmspace); #endif #endif /* !_SYS_IMGACT_H_ */ From owner-svn-src-all@FreeBSD.ORG Sun May 24 07:45:44 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 334E1C93; Sun, 24 May 2015 07:45:44 +0000 (UTC) Received: from svn.freebsd.org (svn.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 20EC61DED; Sun, 24 May 2015 07:45:44 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4O7jilJ021594; Sun, 24 May 2015 07:45:44 GMT (envelope-from ganbold@FreeBSD.org) Received: (from ganbold@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4O7jhXf021591; Sun, 24 May 2015 07:45:43 GMT (envelope-from ganbold@FreeBSD.org) Message-Id: <201505240745.t4O7jhXf021591@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ganbold set sender to ganbold@FreeBSD.org using -f From: Ganbold Tsagaankhuu Date: Sun, 24 May 2015 07:45:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283360 - in head/sys/dev: acpi_support gpio led X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 07:45:44 -0000 Author: ganbold Date: Sun May 24 07:45:42 2015 New Revision: 283360 URL: https://svnweb.freebsd.org/changeset/base/283360 Log: This implements default-state support as described in: https://www.kernel.org/doc/Documentation/devicetree/bindings/leds/leds-gpio.txt Without this booting the VSATV102 causes the blue "working" led to turn off when the kernel starts up. With this the led (which is turned on by the firmware) stays on since that's the default state specified in the FDT. Expanded the meaning of the led_create_state state parameter in order to implement support for "keep". The original values were: == 0 Off != 0 On The new values are: == -1 don't change / keep current setting == 0 Off != -1 && != 0 On This should have no effect on acpi_asus_attach which only calls led_create_state with state set to 1. Updated acpi_ibm_attach in order to avoid surprises. Differential Revision: https://reviews.freebsd.org/D2615 Submitted by: John Wehle Reviewed by: gonzo, loos Modified: head/sys/dev/acpi_support/acpi_ibm.c head/sys/dev/gpio/gpioled.c head/sys/dev/led/led.c Modified: head/sys/dev/acpi_support/acpi_ibm.c ============================================================================== --- head/sys/dev/acpi_support/acpi_ibm.c Sun May 24 07:32:02 2015 (r283359) +++ head/sys/dev/acpi_support/acpi_ibm.c Sun May 24 07:45:42 2015 (r283360) @@ -445,7 +445,8 @@ acpi_ibm_attach(device_t dev) /* Hook up light to led(4) */ if (sc->light_set_supported) - sc->led_dev = led_create_state(ibm_led, sc, "thinklight", sc->light_val); + sc->led_dev = led_create_state(ibm_led, sc, "thinklight", + (sc->light_val ? 1 : 0)); return (0); } Modified: head/sys/dev/gpio/gpioled.c ============================================================================== --- head/sys/dev/gpio/gpioled.c Sun May 24 07:32:02 2015 (r283359) +++ head/sys/dev/gpio/gpioled.c Sun May 24 07:45:42 2015 (r283360) @@ -166,8 +166,10 @@ static int gpioled_attach(device_t dev) { struct gpioled_softc *sc; + int state; #ifdef FDT phandle_t node; + char *default_state; char *name; #else const char *name; @@ -177,10 +179,29 @@ gpioled_attach(device_t dev) sc->sc_dev = dev; sc->sc_busdev = device_get_parent(dev); GPIOLED_LOCK_INIT(sc); + + state = 0; + #ifdef FDT - name = NULL; if ((node = ofw_bus_get_node(dev)) == -1) return (ENXIO); + + if (OF_getprop_alloc(node, "default-state", + sizeof(char), (void **)&default_state) != -1) { + if (strcasecmp(default_state, "on") == 0) + state = 1; + else if (strcasecmp(default_state, "off") == 0) + state = 0; + else if (strcasecmp(default_state, "keep") == 0) + state = -1; + else { + device_printf(dev, + "unknown value for default-state in FDT\n"); + } + free(default_state, M_OFWPROP); + } + + name = NULL; if (OF_getprop_alloc(node, "label", 1, (void **)&name) == -1) OF_getprop_alloc(node, "name", 1, (void **)&name); #else @@ -189,8 +210,8 @@ gpioled_attach(device_t dev) name = NULL; #endif - sc->sc_leddev = led_create(gpioled_control, sc, name ? name : - device_get_nameunit(dev)); + sc->sc_leddev = led_create_state(gpioled_control, sc, name ? name : + device_get_nameunit(dev), state); #ifdef FDT if (name != NULL) free(name, M_OFWPROP); Modified: head/sys/dev/led/led.c ============================================================================== --- head/sys/dev/led/led.c Sun May 24 07:32:02 2015 (r283359) +++ head/sys/dev/led/led.c Sun May 24 07:45:42 2015 (r283360) @@ -293,7 +293,8 @@ led_create_state(led_t *func, void *priv mtx_lock(&led_mtx); sc->dev->si_drv1 = sc; LIST_INSERT_HEAD(&led_list, sc, list); - sc->func(sc->private, state != 0); + if (state != -1) + sc->func(sc->private, state != 0); mtx_unlock(&led_mtx); return (sc->dev); From owner-svn-src-all@FreeBSD.ORG Sun May 24 08:45:21 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3EC4CEF5; Sun, 24 May 2015 08:45:21 +0000 (UTC) Received: from svn.freebsd.org (svn.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 1FE5D149E; Sun, 24 May 2015 08:45:21 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4O8jKWO052624; Sun, 24 May 2015 08:45:21 GMT (envelope-from ganbold@FreeBSD.org) Received: (from ganbold@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4O8jK1A052621; Sun, 24 May 2015 08:45:20 GMT (envelope-from ganbold@FreeBSD.org) Message-Id: <201505240845.t4O8jK1A052621@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ganbold set sender to ganbold@FreeBSD.org using -f From: Ganbold Tsagaankhuu Date: Sun, 24 May 2015 08:45:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283361 - in head/sys: arm/conf boot/fdt/dts/arm X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 08:45:21 -0000 Author: ganbold Date: Sun May 24 08:45:19 2015 New Revision: 283361 URL: https://svnweb.freebsd.org/changeset/base/283361 Log: Add kernel config and dts files for an aml8726-m3 based device. Following u-boot commands allow FreeBSD boot on Yiyate Android TV Box (aml8726-m3): tv open 480p mmc rescan 0 fatload mmc 0 0x80100000 kernel.bin go 0x80100000 The current FreeBSD driver doesn't program the video clocks so the u-boot tv command is necessary in order for the frame buffer to be useful (otherwise it can be skipped). The SD card for the Yiyate Android TV Box doesn't need anything special beyond creating a FAT16 and a UFS filesystem. Differential Revision: https://reviews.freebsd.org/D2636 Submitted by: John Wehle Added: head/sys/arm/conf/YYHD18 (contents, props changed) head/sys/boot/fdt/dts/arm/meson3.dtsi (contents, props changed) head/sys/boot/fdt/dts/arm/yyhd18-m3.dts (contents, props changed) Added: head/sys/arm/conf/YYHD18 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/arm/conf/YYHD18 Sun May 24 08:45:19 2015 (r283361) @@ -0,0 +1,26 @@ +# YYHD18 -- Custom configuration for the Yiyate Android TV box +# +# For more information on this file, please read the config(5) manual page, +# and/or the handbook section on Kernel Configuration Files: +# +# http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html +# +# The handbook is also available locally in /usr/share/doc/handbook +# if you've installed the doc distribution, otherwise always see the +# FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the +# latest information. +# +# An exhaustive list of options and more detailed explanations of the +# device lines is also present in the ../../conf/NOTES and NOTES files. +# If you are in doubt as to the purpose or necessity of a line, check first +# in NOTES. +# +# $FreeBSD$ + +#NO_UNIVERSE + +include "AML8726" +ident YYHD18 + +options FDT_DTB_STATIC +makeoptions FDT_DTS_FILE=yyhd18-m3.dts Added: head/sys/boot/fdt/dts/arm/meson3.dtsi ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/boot/fdt/dts/arm/meson3.dtsi Sun May 24 08:45:19 2015 (r283361) @@ -0,0 +1,77 @@ +/*- + * Copyright (c) 2015 John Wehle + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * The basic single core aml8726 (aka meson) uses an Amlogic interrupt + * controller, however meson.dtsi specifies GIC (which is present on + * the multicore aml8726) so we need to override things here. + */ + +/include/ "meson.dtsi" + +/ { + model = "Amlogic Meson3 SoC"; + compatible = "amlogic,meson3"; + + interrupt-parent = <&pic>; + + pic: pic@c1109a40 { + device_type = "interrupt-controller"; + compatible = "amlogic,aml8726-pic"; + reg = <0xc1109a40 128>; /* cbus 0x2690 */ + + interrupt-controller; + #interrupt-cells = <3>; + }; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu@200 { + device_type = "cpu"; + compatible = "arm,cortex-a9"; + next-level-cache = <&L2>; + reg = <0x200>; + }; + }; + + clk81: clk@0 { + #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <0>; + }; +}; + +&gic { + status = "disabled"; +}; + +&L2 { + interrupts = <0 61 1>; +}; Added: head/sys/boot/fdt/dts/arm/yyhd18-m3.dts ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/boot/fdt/dts/arm/yyhd18-m3.dts Sun May 24 08:45:19 2015 (r283361) @@ -0,0 +1,237 @@ +/*- + * Copyright (c) 2015 John Wehle + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * The ordering of certain devices is significant (e.g. usb depends on + * usb-phy which depends on gpio, also the timer should appear early on + * to provide a reasonably accurate DELAY implementation). + */ + +/dts-v1/; + +/memreserve/ 0x84900000 0x00600000; /* 6MB frame buffer */ + +#include "meson3.dtsi" + +/ { + /* + * My development unit is a Yiyate Android TV Box containing + * a HD18 motherboard and an aml8726-m3 SoC ... later versions + * shipped with an aml8726-m6. Printenv in uboot shows m3-oplay + * as the boardname supplied as part of mmcargs. + */ + + model = "yiyate,hd18-m3"; + compatible = "yiyate,hd18-m3", "amlogic,meson3"; + + #address-cells = <1>; + #size-cells = <1>; + + aliases { + soc = &soc; + screen = &screen; + uart0 = &uart_AO; + }; + + memory { + device_type = "memory"; + reg = <0x80000000 0x40000000>; /* 1GB RAM */ + }; + + soc: soc { + device_type = "soc"; + bus-frequency = <0>; + + ccm@c1104140 { + compatible = "amlogic,aml8726-ccm"; + reg = <0xc1104140 20>; /* cbus 0x1050 */ + + functions = "ethernet", "i2c", "rng", "sdio", + "uart-a", "uart-b", "uart-c", + "usb-a", "usb-b"; + }; + + pinctrl: pinctrl@c11080b0 { + compatible = "amlogic,aml8726-pinctrl"; + reg = <0xc11080b0 40>, /* mux */ + <0xc11080e8 24>, /* pu/pd */ + <0xc11080e8 24>, /* pull enable */ + <0xc8100014 4>, /* ao mux */ + <0xc810002c 4>, /* ao pu/pd */ + <0xc810002c 4>; /* ao pull enable */ + + /* + * Currently only pin muxing that deviates + * from the power on default of gpio is + * specified here. + */ + + pinctrl-names = "default"; + pinctrl-0 = <&pins_uartao &pins_ethernet &pins_hdmi>; + + pins_ethernet: ethernet { + amlogic,pins = "clk_out", "tx_en", + "tx_d0", "tx_d1", + "crs_dv", "rx_err", + "rx_d0", "rx_d1", + "mdc", "mdio"; + amlogic,function = "ethernet"; + }; + + pins_hdmi: hdmi { + amlogic,pins = "cec", "hpd", + "scl", "sda"; + amlogic,function = "hdmi"; + }; + + pins_sdio_b: sdio_b { + amlogic,pins = "clk", "cmd", + "d0", "d1", + "d2", "d3"; + amlogic,function = "sdio-b"; + }; + + pins_uartao: uartao { + amlogic,pins = "tx", "rx"; + amlogic,function = "uart-ao"; + }; + }; + + rtc@c8100740 { + compatible = "amlogic,aml8726-rtc"; + reg = <0xc8100740 20>; /* aobus 0x1d0 */ + interrupts = <0 72 1>; /* AM_IRQ2(8) */ + }; + + clkmsr: clkmsr@c1108758 { + compatible = "amlogic,aml8726-clkmsr"; + reg = <0xc1108758 16>; /* cbus 0x21d6 */ + + clocks = <&clk81>; + }; + + gpio5: gpio@c110806c { + compatible = "amlogic,aml8726-gpio"; + reg = <0xc110806c 4>, /* oen cbus 0x201b */ + <0xc1108070 4>, /* out */ + <0xc1108074 4>; /* in */ + + gpio-controller; + #gpio-cells = <1>; + pin-count = <32>; + }; + + mmc@c1108c20 { + compatible = "amlogic,aml8726-mmc"; + reg = <0xc1108c20 32>; /* cbus 0x2308 */ + interrupts = <0 28 1>; /* AM_IRQ0(28) */ + + clocks = <&clk81>; + + pinctrl-names = "default"; + pinctrl-0 = <&pins_sdio_b>; + + mmc-voltages = "3.3"; + + mmc-pwr-en = <&gpio5 31 0>; /* card_8 */ + ins-detect = <&gpio5 29 0>; /* card_6 */ + }; + + rng@c1108100 { + compatible = "amlogic,aml8726-rng"; + reg = <0xc1108100 8>; /* cbus 0x2040 */ + }; + + usb-phy@c1108400 { + /* usb-a and usb-b phy */ + compatible = "amlogic,aml8726-m3-usb-phy"; + reg = <0xc1108400 32>; /* cbus 0x2100 */ + }; + + usb@c9040000 { + /* usb-a */ + compatible = "synopsys,designware-hs-otg2"; + reg = <0xc9040000 0x40000>; /* ahbbus 0x40000*/ + interrupts = <0 30 4>; /* AM_IRQ0(30) */ + #address-cells = <1>; + #size-cells = <0>; + }; + + usb@c90c0000 { + /* usb-b */ + compatible = "synopsys,designware-hs-otg2"; + reg = <0xc90c0000 0x40000>; /* ahbbus 0xc0000 */ + interrupts = <0 31 4>; /* AM_IRQ0(31) */ + #address-cells = <1>; + #size-cells = <0>; + + dr_mode = "host"; + }; + + eth@c9410000 { + /* ethernet */ + compatible = "snps,dwmac"; + reg = <0xc9410000 0x2000>; /* ahbbus 0x410000 */ + interrupts = <0 8 1>; /* AM_IRQ0(8) */ + #address-cells = <1>; + #size-cells = <0>; + }; + + screen: fb@c8001324 { + device_type = "display"; + compatible = "amlogic,aml8726-fb"; + reg = <0xc8001324 12>, /* CANVAS */ + <0xc1106800 1024>, /* VIU */ + <0xc1107400 1024>; /* VPP */ + interrupts = <0 2 1>, /* AM_IRQ0(2) */ + <0 3 1>, /* AM_IRQ0(3) */ + <0 12 1>, /* AM_IRQ0(12) */ + <0 13 1>; /* AM_IRQ0(13) */ + + address = <0x84900000>; /* match memreserve */ + width = <720>; + height = <480>; + depth = <24>; + linebytes = <2160>; + }; + }; + + chosen { + stdin = "uart0"; + stdout = "uart0"; + }; +}; + +&clk81 { + clock-frequency = <0>; +}; + +&uart_AO { + status = "okay"; + current-speed = <115200>; +}; From owner-svn-src-all@FreeBSD.ORG Sun May 24 11:04:46 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 264A5B57; Sun, 24 May 2015 11:04:46 +0000 (UTC) Received: from svn.freebsd.org (svn.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 127BE123A; Sun, 24 May 2015 11:04:46 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OB4jr8020687; Sun, 24 May 2015 11:04:45 GMT (envelope-from andrew@FreeBSD.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OB4jg6020686; Sun, 24 May 2015 11:04:45 GMT (envelope-from andrew@FreeBSD.org) Message-Id: <201505241104.t4OB4jg6020686@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: andrew set sender to andrew@FreeBSD.org using -f From: Andrew Turner Date: Sun, 24 May 2015 11:04:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283362 - head/sys/arm/qemu X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 11:04:46 -0000 Author: andrew Date: Sun May 24 11:04:45 2015 New Revision: 283362 URL: https://svnweb.freebsd.org/changeset/base/283362 Log: Include the ofw cpu driver. This allows us to get a list of cpus enabled by qemu, however we may not be running on them. Modified: head/sys/arm/qemu/files.qemu Modified: head/sys/arm/qemu/files.qemu ============================================================================== --- head/sys/arm/qemu/files.qemu Sun May 24 08:45:19 2015 (r283361) +++ head/sys/arm/qemu/files.qemu Sun May 24 11:04:45 2015 (r283362) @@ -13,3 +13,5 @@ kern/kern_clocksource.c standard arm/arm/generic_timer.c standard arm/qemu/virt_common.c standard arm/qemu/virt_machdep.c standard + +dev/ofw/ofw_cpu.c standard From owner-svn-src-all@FreeBSD.ORG Sun May 24 11:08:07 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id EEAFBCD4; Sun, 24 May 2015 11:08:06 +0000 (UTC) Received: from svn.freebsd.org (svn.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 D0A5B1263; Sun, 24 May 2015 11:08:06 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OB86mW021188; Sun, 24 May 2015 11:08:06 GMT (envelope-from andrew@FreeBSD.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OB865h021187; Sun, 24 May 2015 11:08:06 GMT (envelope-from andrew@FreeBSD.org) Message-Id: <201505241108.t4OB865h021187@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: andrew set sender to andrew@FreeBSD.org using -f From: Andrew Turner Date: Sun, 24 May 2015 11:08:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283363 - head/sys/dev/psci X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 11:08:07 -0000 Author: andrew Date: Sun May 24 11:08:06 2015 New Revision: 283363 URL: https://svnweb.freebsd.org/changeset/base/283363 Log: Rework the PSCI cpu on code to allow it to work before device drivers have started. This allows this functions to be used with the regular ARM SMP initialisation sequence. Modified: head/sys/dev/psci/psci.c Modified: head/sys/dev/psci/psci.c ============================================================================== --- head/sys/dev/psci/psci.c Sun May 24 11:04:45 2015 (r283362) +++ head/sys/dev/psci/psci.c Sun May 24 11:08:06 2015 (r283363) @@ -102,6 +102,24 @@ EARLY_DRIVER_MODULE(psci, simplebus, psc EARLY_DRIVER_MODULE(psci, ofwbus, psci_driver, psci_devclass, 0, 0, BUS_PASS_CPU + BUS_PASS_ORDER_FIRST); +static psci_callfn_t +psci_get_callfn(phandle_t node) +{ + char method[16]; + + if ((OF_getprop(node, "method", method, sizeof(method))) > 0) { + if (strcmp(method, "hvc") == 0) + return (psci_hvc_despatch); + else if (strcmp(method, "smc") == 0) + return (psci_smc_despatch); + else + printf("psci: PSCI conduit \"%s\" invalid\n", method); + } else + printf("psci: PSCI conduit not supplied in the device tree\n"); + + return (NULL); +} + static int psci_probe(device_t dev) { @@ -126,7 +144,6 @@ psci_attach(device_t dev) const struct ofw_compat_data *ocd; psci_initfn_t psci_init; phandle_t node; - char method[16]; if (psci_softc != NULL) return (ENXIO); @@ -136,22 +153,9 @@ psci_attach(device_t dev) KASSERT(psci_init != NULL, ("PSCI init function cannot be NULL")); node = ofw_bus_get_node(dev); - if ((OF_getprop(node, "method", method, sizeof(method))) > 0) { - if (strcmp(method, "hvc") == 0) - sc->psci_call = psci_hvc_despatch; - else if (strcmp(method, "smc") == 0) - sc->psci_call = psci_smc_despatch; - else { - device_printf(dev, - "psci_attach: PSCI conduit \"%s\" invalid\n", - method); - return (ENXIO); - } - } else { - device_printf(dev, - "psci_attach: PSCI conduit not supplied in the DT\n"); + sc->psci_call = psci_get_callfn(node); + if (sc->psci_call == NULL) return (ENXIO); - } if (psci_init(dev)) return (ENXIO); @@ -177,10 +181,27 @@ psci_get_version(struct psci_softc *sc) int psci_cpu_on(unsigned long cpu, unsigned long entry, unsigned long context_id) { + psci_callfn_t callfn; + phandle_t node; + uint32_t fnid; + + if (psci_softc == NULL) { + node = ofw_bus_find_compatible(OF_peer(0), "arm,psci-0.2"); + if (node == 0) + /* TODO: Handle psci 0.1 */ + return (PSCI_RETVAL_INTERNAL_FAILURE); + + fnid = PSCI_FNID_CPU_ON; + callfn = psci_get_callfn(node); + if (callfn == NULL) + return (PSCI_RETVAL_INTERNAL_FAILURE); + } else { + callfn = psci_softc->psci_call; + fnid = psci_softc->psci_fnids[PSCI_FN_CPU_ON]; + } /* PSCI v0.1 and v0.2 both support cpu_on. */ - return(psci_softc->psci_call(psci_softc->psci_fnids[PSCI_FN_CPU_ON], cpu, - entry, context_id)); + return (callfn(fnid, cpu, entry, context_id)); } static void From owner-svn-src-all@FreeBSD.ORG Sun May 24 11:24:15 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id AE5BFF59; Sun, 24 May 2015 11:24:15 +0000 (UTC) Received: from svn.freebsd.org (svn.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 9D0431450; Sun, 24 May 2015 11:24:15 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OBOFbf030453; Sun, 24 May 2015 11:24:15 GMT (envelope-from melifaro@FreeBSD.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OBOFe6030452; Sun, 24 May 2015 11:24:15 GMT (envelope-from melifaro@FreeBSD.org) Message-Id: <201505241124.t4OBOFe6030452@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: melifaro set sender to melifaro@FreeBSD.org using -f From: "Alexander V. Chernikov" Date: Sun, 24 May 2015 11:24:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283364 - head/sys/sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 11:24:15 -0000 Author: melifaro Date: Sun May 24 11:24:14 2015 New Revision: 283364 URL: https://svnweb.freebsd.org/changeset/base/283364 Log: Fix SIOCGI2C structure requirement. In reality, SIOCGI2C ioctl requires struct ifreq as many other ioctls. Doing copyin() on (significantly) larger struct ifstat sometimes triggered EFAULT. Reported by: Olivier Cochard-Labbé MFC after: 1 week Modified: head/sys/sys/sockio.h Modified: head/sys/sys/sockio.h ============================================================================== --- head/sys/sys/sockio.h Sun May 24 11:08:06 2015 (r283363) +++ head/sys/sys/sockio.h Sun May 24 11:24:14 2015 (r283364) @@ -96,7 +96,7 @@ #define SIOCGIFSTATUS _IOWR('i', 59, struct ifstat) /* get IF status */ #define SIOCSIFLLADDR _IOW('i', 60, struct ifreq) /* set linklevel addr */ -#define SIOCGI2C _IOWR('i', 61, struct ifstat) /* get I2C data */ +#define SIOCGI2C _IOWR('i', 61, struct ifreq) /* get I2C data */ #define SIOCSIFPHYADDR _IOW('i', 70, struct ifaliasreq) /* set gif addres */ #define SIOCGIFPSRCADDR _IOWR('i', 71, struct ifreq) /* get gif psrc addr */ From owner-svn-src-all@FreeBSD.ORG Sun May 24 12:12:03 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4C25686A; Sun, 24 May 2015 12:12:03 +0000 (UTC) Received: from svn.freebsd.org (svn.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 2D369198C; Sun, 24 May 2015 12:12:03 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OCC3es054612; Sun, 24 May 2015 12:12:03 GMT (envelope-from andrew@FreeBSD.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OCC2uU054606; Sun, 24 May 2015 12:12:02 GMT (envelope-from andrew@FreeBSD.org) Message-Id: <201505241212.t4OCC2uU054606@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: andrew set sender to andrew@FreeBSD.org using -f From: Andrew Turner Date: Sun, 24 May 2015 12:12:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283365 - in head/sys/arm: arm include X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 12:12:03 -0000 Author: andrew Date: Sun May 24 12:12:01 2015 New Revision: 283365 URL: https://svnweb.freebsd.org/changeset/base/283365 Log: Add more cp15_ functions, and use them in cpufunc.c where possible. Modified: head/sys/arm/arm/cpufunc.c head/sys/arm/include/cpu-v6.h head/sys/arm/include/sysreg.h Modified: head/sys/arm/arm/cpufunc.c ============================================================================== --- head/sys/arm/arm/cpufunc.c Sun May 24 11:24:14 2015 (r283364) +++ head/sys/arm/arm/cpufunc.c Sun May 24 12:12:01 2015 (r283365) @@ -1116,37 +1116,20 @@ cpu_scc_setup_ccnt(void) * you want! */ #ifdef _PMC_USER_READ_WRITE_ -#if defined(CPU_ARM1176) - /* Use the Secure User and Non-secure Access Validation Control Register - * to allow userland access - */ - __asm volatile ("mcr p15, 0, %0, c15, c9, 0\n\t" - : - : "r"(0x00000001)); -#else /* Set PMUSERENR[0] to allow userland access */ - __asm volatile ("mcr p15, 0, %0, c9, c14, 0\n\t" - : - : "r"(0x00000001)); -#endif + cp15_pmuserenr_set(1); #endif #if defined(CPU_ARM1176) /* Set PMCR[2,0] to enable counters and reset CCNT */ - __asm volatile ("mcr p15, 0, %0, c15, c12, 0\n\t" - : - : "r"(0x00000005)); + cp15_pmcr_set(5); #else /* Set up the PMCCNTR register as a cyclecounter: * Set PMINTENCLR to 0xFFFFFFFF to block interrupts * Set PMCR[2,0] to enable counters and reset CCNT * Set PMCNTENSET to 0x80000000 to enable CCNT */ - __asm volatile ("mcr p15, 0, %0, c9, c14, 2\n\t" - "mcr p15, 0, %1, c9, c12, 0\n\t" - "mcr p15, 0, %2, c9, c12, 1\n\t" - : - : "r"(0xFFFFFFFF), - "r"(0x00000005), - "r"(0x80000000)); + cp15_pminten_clr(0xFFFFFFFF); + cp15_pmcr_set(5); + cp15_pmcnten_set(0x80000000); #endif } #endif @@ -1214,19 +1197,18 @@ arm11x6_setup(void) __asm volatile ("mcr\tp15, 0, %0, c7, c7, 0" : : "r"(sbz)); /* Allow detection code to find the VFP if it's fitted. */ - __asm volatile ("mcr\tp15, 0, %0, c1, c0, 2" : : "r" (0x0fffffff)); + cp15_cpacr_set(0x0fffffff); /* Set the control register */ ctrl = cpuctrl; cpu_control(~cpuctrl_wax, cpuctrl); - __asm volatile ("mrc p15, 0, %0, c1, c0, 1\n\t" - "and %1, %0, %2\n\t" - "orr %1, %1, %3\n\t" - "teq %0, %1\n\t" - "mcrne p15, 0, %1, c1, c0, 1\n\t" - : "=r"(tmp), "=r"(tmp2) : - "r"(auxctrl_wax), "r"(auxctrl)); + tmp = cp15_actlr_get(); + tmp2 = tmp; + tmp &= auxctrl_wax; + tmp |= auxctrl; + if (tmp != tmp2) + cp15_actlr_set(tmp); /* And again. */ cpu_idcache_wbinv_all(); Modified: head/sys/arm/include/cpu-v6.h ============================================================================== --- head/sys/arm/include/cpu-v6.h Sun May 24 11:24:14 2015 (r283364) +++ head/sys/arm/include/cpu-v6.h Sun May 24 12:12:01 2015 (r283365) @@ -139,6 +139,8 @@ _WF1(_CP15_ICIMVAU, CP15_ICIMVAU(%0)) / /* Various control registers */ +_RF0(cp15_cpacr_get, CP15_CPACR(%0)) +_WF1(cp15_cpacr_set, CP15_CPACR(%0)) _RF0(cp15_dfsr_get, CP15_DFSR(%0)) _RF0(cp15_ifsr_get, CP15_IFSR(%0)) _WF1(cp15_prrr_set, CP15_PRRR(%0)) @@ -149,8 +151,10 @@ _RF0(cp15_dfar_get, CP15_DFAR(%0)) _RF0(cp15_ifar_get, CP15_IFAR(%0)) _RF0(cp15_l2ctlr_get, CP15_L2CTLR(%0)) #endif -#if __ARM_ARCH >= 6 +/* ARMv6+ and XScale */ _RF0(cp15_actlr_get, CP15_ACTLR(%0)) +_WF1(cp15_actlr_set, CP15_ACTLR(%0)) +#if __ARM_ARCH >= 6 _WF1(cp15_ats1cpr_set, CP15_ATS1CPR(%0)); _RF0(cp15_par_get, CP15_PAR); _RF0(cp15_sctlr_get, CP15_SCTLR(%0)) @@ -163,7 +167,10 @@ _RF0(cp15_tcmtr_get, CP15_TCMTR(%0)) _RF0(cp15_tlbtr_get, CP15_TLBTR(%0)) _RF0(cp15_mpidr_get, CP15_MPIDR(%0)) _RF0(cp15_revidr_get, CP15_REVIDR(%0)) +_RF0(cp15_ccsidr_get, CP15_CCSIDR(%0)) +_RF0(cp15_clidr_get, CP15_CLIDR(%0)) _RF0(cp15_aidr_get, CP15_AIDR(%0)) +_WF1(cp15_csselr_set, CP15_CSSELR(%0)) _RF0(cp15_id_pfr0_get, CP15_ID_PFR0(%0)) _RF0(cp15_id_pfr1_get, CP15_ID_PFR1(%0)) _RF0(cp15_id_dfr0_get, CP15_ID_DFR0(%0)) @@ -183,6 +190,10 @@ _RF0(cp15_cbar_get, CP15_CBAR(%0)) /* Performance Monitor registers */ #if __ARM_ARCH == 6 && defined(CPU_ARM1176) +_RF0(cp15_pmuserenr_get, CP15_PMUSERENR(%0)) +_WF1(cp15_pmuserenr_set, CP15_PMUSERENR(%0)) +_RF0(cp15_pmcr_get, CP15_PMCR(%0)) +_WF1(cp15_pmcr_set, CP15_PMCR(%0)) _RF0(cp15_pmccntr_get, CP15_PMCCNTR(%0)) _WF1(cp15_pmccntr_set, CP15_PMCCNTR(%0)) #elif __ARM_ARCH > 6 Modified: head/sys/arm/include/sysreg.h ============================================================================== --- head/sys/arm/include/sysreg.h Sun May 24 11:24:14 2015 (r283364) +++ head/sys/arm/include/sysreg.h Sun May 24 12:12:01 2015 (r283365) @@ -210,6 +210,8 @@ * CP15 C9 registers */ #if __ARM_ARCH == 6 && defined(CPU_ARM1176) +#define CP15_PMUSERENR(rr) p15, 0, rr, c15, c9, 0 /* Access Validation Control Register */ +#define CP15_PMCR(rr) p15, 0, rr, c15, c12, 0 /* Performance Monitor Control Register */ #define CP15_PMCCNTR(rr) p15, 0, rr, c15, c12, 1 /* PM Cycle Count Register */ #elif __ARM_ARCH > 6 #define CP15_L2CTLR(rr) p15, 1, rr, c9, c0, 2 /* L2 Control Register */ From owner-svn-src-all@FreeBSD.ORG Sun May 24 12:20:17 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 11B749E3; Sun, 24 May 2015 12:20:17 +0000 (UTC) Received: from svn.freebsd.org (svn.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 F32E719E4; Sun, 24 May 2015 12:20:16 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OCKGHc058135; Sun, 24 May 2015 12:20:16 GMT (envelope-from andrew@FreeBSD.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OCKCCp058111; Sun, 24 May 2015 12:20:12 GMT (envelope-from andrew@FreeBSD.org) Message-Id: <201505241220.t4OCKCCp058111@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: andrew set sender to andrew@FreeBSD.org using -f From: Andrew Turner Date: Sun, 24 May 2015 12:20:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283366 - head/sys/arm/arm X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 12:20:17 -0000 Author: andrew Date: Sun May 24 12:20:11 2015 New Revision: 283366 URL: https://svnweb.freebsd.org/changeset/base/283366 Log: Remove trailing whitespace from sys/arm/arm Modified: head/sys/arm/arm/bcopyinout.S head/sys/arm/arm/bcopyinout_xscale.S head/sys/arm/arm/blockio.S head/sys/arm/arm/bus_space_base.c head/sys/arm/arm/busdma_machdep-v6.c head/sys/arm/arm/busdma_machdep.c head/sys/arm/arm/copystr.S head/sys/arm/arm/cpu_asm-v6.S head/sys/arm/arm/cpufunc.c head/sys/arm/arm/cpufunc_asm_arm11x6.S head/sys/arm/arm/cpufunc_asm_arm9.S head/sys/arm/arm/cpufunc_asm_armv6.S head/sys/arm/arm/cpufunc_asm_armv7.S head/sys/arm/arm/cpufunc_asm_xscale_c3.S head/sys/arm/arm/cpuinfo.c head/sys/arm/arm/db_interface.c head/sys/arm/arm/elf_trampoline.c head/sys/arm/arm/exception.S head/sys/arm/arm/fiq.c head/sys/arm/arm/fusu.S head/sys/arm/arm/gic.c head/sys/arm/arm/intr.c head/sys/arm/arm/machdep.c head/sys/arm/arm/mp_machdep.c head/sys/arm/arm/mpcore_timer.c head/sys/arm/arm/nexus.c head/sys/arm/arm/physmem.c head/sys/arm/arm/pl190.c head/sys/arm/arm/pl310.c head/sys/arm/arm/pmap-v6-new.c head/sys/arm/arm/pmap-v6.c head/sys/arm/arm/pmap.c head/sys/arm/arm/support.S head/sys/arm/arm/swtch.S head/sys/arm/arm/trap.c head/sys/arm/arm/vfp.c head/sys/arm/arm/vm_machdep.c Modified: head/sys/arm/arm/bcopyinout.S ============================================================================== --- head/sys/arm/arm/bcopyinout.S Sun May 24 12:12:01 2015 (r283365) +++ head/sys/arm/arm/bcopyinout.S Sun May 24 12:20:11 2015 (r283366) @@ -69,7 +69,7 @@ __FBSDID("$FreeBSD$"); #define SAVE_REGS stmfd sp!, {r4-r11} #define RESTORE_REGS ldmfd sp!, {r4-r11} - + #if defined(_ARM_ARCH_5E) #define HELLOCPP # #define PREFETCH(rx,o) pld [ rx , HELLOCPP (o) ] @@ -88,7 +88,7 @@ __FBSDID("$FreeBSD$"); * r4-r11 are scratch */ ENTRY(copyin) - /* Quick exit if length is zero */ + /* Quick exit if length is zero */ teq r2, #0 moveq r0, #0 RETeq @@ -326,7 +326,7 @@ END(copyin) */ ENTRY(copyout) - /* Quick exit if length is zero */ + /* Quick exit if length is zero */ teq r2, #0 moveq r0, #0 RETeq Modified: head/sys/arm/arm/bcopyinout_xscale.S ============================================================================== --- head/sys/arm/arm/bcopyinout_xscale.S Sun May 24 12:12:01 2015 (r283365) +++ head/sys/arm/arm/bcopyinout_xscale.S Sun May 24 12:20:11 2015 (r283366) @@ -85,7 +85,7 @@ ENTRY(copyin) ldmfd sp!, {r0-r2, r4, lr} moveq r0, #0 RETeq - + .Lnormal: stmfd sp!, {r10-r11, lr} @@ -527,8 +527,8 @@ ENTRY(copyout) ldmfd sp!, {r0-r2, r4, lr} moveq r0, #0 RETeq - -.Lnormale: + +.Lnormale: stmfd sp!, {r10-r11, lr} GET_PCB(r10) @@ -584,7 +584,7 @@ ENTRY(copyout) ldrne ip, [r0], #0x04 subne r2, r2, #0x04 strtne ip, [r1], #0x04 - + stmfd sp!, {r4-r9} /* Free up some registers */ mov r3, #-1 /* Signal restore r4-r9 */ Modified: head/sys/arm/arm/blockio.S ============================================================================== --- head/sys/arm/arm/blockio.S Sun May 24 12:12:01 2015 (r283365) +++ head/sys/arm/arm/blockio.S Sun May 24 12:20:11 2015 (r283366) @@ -43,7 +43,7 @@ * * Created : 08/10/94 * Modified : 22/01/99 -- R.Earnshaw - * Faster, and small tweaks for StrongARM + * Faster, and small tweaks for StrongARM */ #include @@ -251,7 +251,7 @@ ENTRY(outsw) str r3, [r0] str ip, [r0] - + /* mov ip, r3, lsl #16 * orr ip, ip, ip, lsr #16 * str ip, [r0] @@ -358,7 +358,7 @@ ENTRY(outsw16) eor r3, r3, r4, lsl #16 /* r3 = (A^B^A)(B) = (B)(B) */ str r3, [r0] str r4, [r0] - + /* mov r3, r4, lsl #16 * orr r3, r3, r3, lsr #16 * str r3, [r0] Modified: head/sys/arm/arm/bus_space_base.c ============================================================================== --- head/sys/arm/arm/bus_space_base.c Sun May 24 12:12:01 2015 (r283365) +++ head/sys/arm/arm/bus_space_base.c Sun May 24 12:20:11 2015 (r283366) @@ -116,10 +116,10 @@ static struct bus_space arm_base_bus_spa .bs_c_8 = BS_UNIMPLEMENTED, /* read stream (single) */ - .bs_r_1_s = NULL, /* Use inline code in bus.h */ - .bs_r_2_s = NULL, /* Use inline code in bus.h */ - .bs_r_4_s = NULL, /* Use inline code in bus.h */ - .bs_r_8_s = NULL, /* Use inline code in bus.h */ + .bs_r_1_s = NULL, /* Use inline code in bus.h */ + .bs_r_2_s = NULL, /* Use inline code in bus.h */ + .bs_r_4_s = NULL, /* Use inline code in bus.h */ + .bs_r_8_s = NULL, /* Use inline code in bus.h */ /* read multiple stream */ .bs_rm_1_s = generic_bs_rm_1, @@ -134,10 +134,10 @@ static struct bus_space arm_base_bus_spa .bs_rr_8_s = BS_UNIMPLEMENTED, /* write stream (single) */ - .bs_w_1_s = NULL, /* Use inline code in bus.h */ - .bs_w_2_s = NULL, /* Use inline code in bus.h */ - .bs_w_4_s = NULL, /* Use inline code in bus.h */ - .bs_w_8_s = NULL, /* Use inline code in bus.h */ + .bs_w_1_s = NULL, /* Use inline code in bus.h */ + .bs_w_2_s = NULL, /* Use inline code in bus.h */ + .bs_w_4_s = NULL, /* Use inline code in bus.h */ + .bs_w_8_s = NULL, /* Use inline code in bus.h */ /* write multiple stream */ .bs_wm_1_s = generic_bs_wm_1, Modified: head/sys/arm/arm/busdma_machdep-v6.c ============================================================================== --- head/sys/arm/arm/busdma_machdep-v6.c Sun May 24 12:12:01 2015 (r283365) +++ head/sys/arm/arm/busdma_machdep-v6.c Sun May 24 12:20:11 2015 (r283366) @@ -160,7 +160,7 @@ SYSCTL_UINT(_hw_busdma, OID_AUTO, maps_d "Number of active maps for bus_dmamem_alloc buffers"); SYSCTL_UINT(_hw_busdma, OID_AUTO, maps_coherent, CTLFLAG_RD, &maps_coherent, 0, "Number of active maps with BUS_DMA_COHERENT flag set"); -SYSCTL_COUNTER_U64(_hw_busdma, OID_AUTO, maploads_total, CTLFLAG_RD, +SYSCTL_COUNTER_U64(_hw_busdma, OID_AUTO, maploads_total, CTLFLAG_RD, &maploads_total, "Number of load operations performed"); SYSCTL_COUNTER_U64(_hw_busdma, OID_AUTO, maploads_bounced, CTLFLAG_RD, &maploads_bounced, "Number of load operations that used bounce buffers"); @@ -230,14 +230,14 @@ busdma_init(void *dummy) uma_flags = 0; /* Create a cache of buffers in standard (cacheable) memory. */ - standard_allocator = busdma_bufalloc_create("buffer", + standard_allocator = busdma_bufalloc_create("buffer", arm_dcache_align, /* minimum_alignment */ - NULL, /* uma_alloc func */ + NULL, /* uma_alloc func */ NULL, /* uma_free func */ uma_flags); /* uma_zcreate_flags */ #ifdef INVARIANTS - /* + /* * Force UMA zone to allocate service structures like * slabs using own allocator. uma_debug code performs * atomic ops on uma_slab_t fields and safety of this @@ -251,8 +251,8 @@ busdma_init(void *dummy) */ coherent_allocator = busdma_bufalloc_create("coherent", arm_dcache_align, /* minimum_alignment */ - busdma_bufalloc_alloc_uncacheable, - busdma_bufalloc_free_uncacheable, + busdma_bufalloc_alloc_uncacheable, + busdma_bufalloc_free_uncacheable, uma_flags); /* uma_zcreate_flags */ } @@ -343,7 +343,7 @@ cacheline_bounce(bus_dmamap_t map, bus_a * address spaces. */ static __inline int -might_bounce(bus_dma_tag_t dmat, bus_dmamap_t map, bus_addr_t addr, +might_bounce(bus_dma_tag_t dmat, bus_dmamap_t map, bus_addr_t addr, bus_size_t size) { @@ -364,7 +364,7 @@ might_bounce(bus_dma_tag_t dmat, bus_dma * the DMA needs to bounce, otherwise any DMA within the zone bounces. */ static int -must_bounce(bus_dma_tag_t dmat, bus_dmamap_t map, bus_addr_t paddr, +must_bounce(bus_dma_tag_t dmat, bus_dmamap_t map, bus_addr_t paddr, bus_size_t size) { @@ -387,11 +387,11 @@ must_bounce(bus_dma_tag_t dmat, bus_dmam */ while (dmat != NULL && exclusion_bounce(dmat)) { if ((paddr >= dmat->lowaddr && paddr <= dmat->highaddr) && - (dmat->filter == NULL || + (dmat->filter == NULL || dmat->filter(dmat->filterarg, paddr) != 0)) return (1); dmat = dmat->parent; - } + } return (0); } @@ -554,7 +554,7 @@ bus_dma_tag_create(bus_dma_tag_t parent, * number of pages in a transfer. */ maxsize = roundup2(maxsize, PAGE_SIZE) + PAGE_SIZE; - + if ((error = alloc_bounce_zone(newtag)) != 0) { free(newtag, M_DEVBUF); return (error); @@ -630,7 +630,7 @@ static int allocate_bz_and_pages(bus_dma struct bounce_zone *bz; int maxpages; int error; - + if (dmat->bounce_zone == NULL) if ((error = alloc_bounce_zone(dmat)) != 0) return (error); @@ -651,13 +651,13 @@ static int allocate_bz_and_pages(bus_dma if ((dmat->flags & BUS_DMA_MIN_ALLOC_COMP) == 0 || (bz->map_count > 0 && bz->total_bpages < maxpages)) { int pages; - + pages = atop(roundup2(dmat->maxsize, PAGE_SIZE)) + 1; pages = MIN(maxpages - bz->total_bpages, pages); pages = MAX(pages, 2); if (alloc_bounce_pages(dmat, pages) < pages) return (ENOMEM); - + if ((dmat->flags & BUS_DMA_MIN_ALLOC_COMP) == 0) dmat->flags |= BUS_DMA_MIN_ALLOC_COMP; } @@ -676,7 +676,7 @@ allocate_map(bus_dma_tag_t dmat, int mfl * variable-sized array of sync_list structures. Following that * we allocate enough extra space to hold the array of bus_dma_segments. */ - KASSERT(dmat->nsegments <= MAX_DMA_SEGMENTS, + KASSERT(dmat->nsegments <= MAX_DMA_SEGMENTS, ("cannot allocate %u dma segments (max is %u)", dmat->nsegments, MAX_DMA_SEGMENTS)); segsize = sizeof(struct bus_dma_segment) * dmat->nsegments; @@ -931,7 +931,7 @@ _bus_dmamap_count_pages(bus_dma_tag_t dm else paddr = pmap_extract(map->pmap, vaddr); if (must_bounce(dmat, map, paddr, - min(vendaddr - vaddr, (PAGE_SIZE - ((vm_offset_t)vaddr & + min(vendaddr - vaddr, (PAGE_SIZE - ((vm_offset_t)vaddr & PAGE_MASK)))) != 0) { map->pagesneeded++; } @@ -1267,7 +1267,7 @@ _bus_dmamap_fix_user(vm_offset_t buf, bu bus_addr_t curaddr; vm_offset_t va; - /* + /* * each synclist entry is contained within a single page. * this would be needed if BUS_DMASYNC_POSTxxxx was implemented */ @@ -1339,7 +1339,7 @@ _bus_dmamap_sync(bus_dma_tag_t dmat, bus cpu_dcache_wb_range((vm_offset_t)bpage->vaddr, bpage->datacount); l2cache_wb_range((vm_offset_t)bpage->vaddr, - (vm_offset_t)bpage->busaddr, + (vm_offset_t)bpage->busaddr, bpage->datacount); bpage = STAILQ_NEXT(bpage, links); } @@ -1387,10 +1387,10 @@ _bus_dmamap_sync(bus_dma_tag_t dmat, bus startv = bpage->vaddr &~ arm_dcache_align_mask; startp = bpage->busaddr &~ arm_dcache_align_mask; len = bpage->datacount; - + if (startv != bpage->vaddr) len += bpage->vaddr & arm_dcache_align_mask; - if (len & arm_dcache_align_mask) + if (len & arm_dcache_align_mask) len = (len - (len & arm_dcache_align_mask)) + arm_dcache_align; @@ -1473,7 +1473,7 @@ _bus_dmamap_sync(bus_dma_tag_t dmat, bus sl->busaddr, 1); } cpu_dcache_inv_range(sl->vaddr, sl->datacount); - l2cache_inv_range(sl->vaddr, sl->busaddr, + l2cache_inv_range(sl->vaddr, sl->busaddr, sl->datacount); sl++; } @@ -1485,7 +1485,7 @@ _bus_dmamap_sync(bus_dma_tag_t dmat, bus case BUS_DMASYNC_POSTREAD: case BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE: while (sl != end) { - l2cache_inv_range(sl->vaddr, sl->busaddr, + l2cache_inv_range(sl->vaddr, sl->busaddr, sl->datacount); cpu_dcache_inv_range(sl->vaddr, sl->datacount); sl++; Modified: head/sys/arm/arm/busdma_machdep.c ============================================================================== --- head/sys/arm/arm/busdma_machdep.c Sun May 24 12:12:01 2015 (r283365) +++ head/sys/arm/arm/busdma_machdep.c Sun May 24 12:20:11 2015 (r283366) @@ -237,7 +237,7 @@ dmamap_ctor(void *mem, int size, void *a * This is the dtor function passed to uma_zcreate() for the pool of dma maps. * It may need platform-specific changes if this code is copied . */ -static void +static void dmamap_dtor(void *mem, int size, void *arg) { bus_dmamap_t map; @@ -256,9 +256,9 @@ busdma_init(void *dummy) dmamap_ctor, dmamap_dtor, NULL, NULL, UMA_ALIGN_PTR, 0); /* Create a cache of buffers in standard (cacheable) memory. */ - standard_allocator = busdma_bufalloc_create("buffer", + standard_allocator = busdma_bufalloc_create("buffer", arm_dcache_align, /* minimum_alignment */ - NULL, /* uma_alloc func */ + NULL, /* uma_alloc func */ NULL, /* uma_free func */ 0); /* uma_zcreate_flags */ @@ -268,8 +268,8 @@ busdma_init(void *dummy) */ coherent_allocator = busdma_bufalloc_create("coherent", arm_dcache_align, /* minimum_alignment */ - busdma_bufalloc_alloc_uncacheable, - busdma_bufalloc_free_uncacheable, + busdma_bufalloc_alloc_uncacheable, + busdma_bufalloc_free_uncacheable, 0); /* uma_zcreate_flags */ } @@ -308,7 +308,7 @@ run_filter(bus_dma_tag_t dmat, bus_addr_ || (*dmat->filter)(dmat->filterarg, paddr) != 0)) retval = 1; - dmat = dmat->parent; + dmat = dmat->parent; } while (retval == 0 && dmat != NULL); return (retval); } @@ -531,13 +531,13 @@ bus_dma_tag_destroy(bus_dma_tag_t dmat) #endif if (dmat != NULL) { - + if (dmat->map_count != 0) return (EBUSY); - + while (dmat != NULL) { bus_dma_tag_t parent; - + parent = dmat->parent; atomic_subtract_int(&dmat->ref_count, 1); if (dmat->ref_count == 0) { @@ -588,7 +588,7 @@ bus_dmamap_create(bus_dma_tag_t dmat, in * now, because we can't sleep for resources at map load time. */ if (dmat->segments == NULL) { - dmat->segments = malloc(dmat->nsegments * + dmat->segments = malloc(dmat->nsegments * sizeof(*dmat->segments), M_DEVBUF, M_NOWAIT); if (dmat->segments == NULL) { free(slist, M_DEVBUF); @@ -701,7 +701,7 @@ bus_dmamem_alloc(bus_dma_tag_t dmat, voi * now, because we can't sleep for resources at map load time. */ if (dmat->segments == NULL) - dmat->segments = malloc(dmat->nsegments * + dmat->segments = malloc(dmat->nsegments * sizeof(*dmat->segments), M_DEVBUF, mflags); slist = malloc(sizeof(*slist) * dmat->nsegments, M_DEVBUF, M_NOWAIT); @@ -918,7 +918,7 @@ _bus_dmamap_addseg(bus_dma_tag_t dmat, b * memory address to an address in the DMA window. */ curaddr = (curaddr - dr->dr_sysbase) + dr->dr_busbase; - + } seg = *segp; @@ -1206,7 +1206,7 @@ _bus_dmamap_sync_bp(bus_dma_tag_t dmat, STAILQ_FOREACH(bpage, &map->bpages, links) { if (op & BUS_DMASYNC_PREWRITE) { if (bpage->datavaddr != 0) - bcopy((void *)bpage->datavaddr, + bcopy((void *)bpage->datavaddr, (void *)bpage->vaddr, bpage->datacount); else physcopyout(bpage->dataaddr, Modified: head/sys/arm/arm/copystr.S ============================================================================== --- head/sys/arm/arm/copystr.S Sun May 24 12:12:01 2015 (r283365) +++ head/sys/arm/arm/copystr.S Sun May 24 12:20:11 2015 (r283366) @@ -38,7 +38,6 @@ * Created : 16/05/95 */ - #include "assym.s" #include #include Modified: head/sys/arm/arm/cpu_asm-v6.S ============================================================================== --- head/sys/arm/arm/cpu_asm-v6.S Sun May 24 12:12:01 2015 (r283365) +++ head/sys/arm/arm/cpu_asm-v6.S Sun May 24 12:20:11 2015 (r283366) @@ -33,10 +33,10 @@ #include #include -/* +/* * Define cache functions used by startup code, which counts on the fact that * only r0-r3,r12 (ip) are modified and no stack space is used. These functions - * must be called with interrupts disabled. Moreover, these work only with + * must be called with interrupts disabled. Moreover, these work only with * caches integrated to CPU (accessible via CP15); systems with an external L2 * cache controller such as a PL310 need separate calls to that device driver * to affect L2 caches. This is not a factor during early kernel startup, as Modified: head/sys/arm/arm/cpufunc.c ============================================================================== --- head/sys/arm/arm/cpufunc.c Sun May 24 12:12:01 2015 (r283365) +++ head/sys/arm/arm/cpufunc.c Sun May 24 12:20:11 2015 (r283366) @@ -361,7 +361,7 @@ struct cpu_functions pj4bv7_cpufuncs = { struct cpu_functions xscale_cpufuncs = { /* CPU functions */ - + cpufunc_id, /* id */ xscale_cpwait, /* cpwait */ @@ -426,7 +426,7 @@ struct cpu_functions xscale_cpufuncs = { #ifdef CPU_XSCALE_81342 struct cpu_functions xscalec3_cpufuncs = { /* CPU functions */ - + cpufunc_id, /* id */ xscale_cpwait, /* cpwait */ @@ -553,63 +553,63 @@ struct cpu_functions fa526_cpufuncs = { #if defined(CPU_ARM1176) struct cpu_functions arm1176_cpufuncs = { /* CPU functions */ - + cpufunc_id, /* id */ cpufunc_nullop, /* cpwait */ - + /* MMU functions */ - + cpufunc_control, /* control */ cpufunc_domains, /* Domain */ arm11x6_setttb, /* Setttb */ cpufunc_faultstatus, /* Faultstatus */ cpufunc_faultaddress, /* Faultaddress */ - + /* TLB functions */ - + arm11_tlb_flushID, /* tlb_flushID */ arm11_tlb_flushID_SE, /* tlb_flushID_SE */ arm11_tlb_flushI, /* tlb_flushI */ arm11_tlb_flushI_SE, /* tlb_flushI_SE */ arm11_tlb_flushD, /* tlb_flushD */ arm11_tlb_flushD_SE, /* tlb_flushD_SE */ - + /* Cache operations */ - + arm11x6_icache_sync_all, /* icache_sync_all */ arm11x6_icache_sync_range, /* icache_sync_range */ - + arm11x6_dcache_wbinv_all, /* dcache_wbinv_all */ armv6_dcache_wbinv_range, /* dcache_wbinv_range */ armv6_dcache_inv_range, /* dcache_inv_range */ armv6_dcache_wb_range, /* dcache_wb_range */ - + armv6_idcache_inv_all, /* idcache_inv_all */ arm11x6_idcache_wbinv_all, /* idcache_wbinv_all */ arm11x6_idcache_wbinv_range, /* idcache_wbinv_range */ - + (void *)cpufunc_nullop, /* l2cache_wbinv_all */ (void *)cpufunc_nullop, /* l2cache_wbinv_range */ (void *)cpufunc_nullop, /* l2cache_inv_range */ (void *)cpufunc_nullop, /* l2cache_wb_range */ (void *)cpufunc_nullop, /* l2cache_drain_writebuf */ - + /* Other functions */ - + arm11x6_flush_prefetchbuf, /* flush_prefetchbuf */ arm11_drain_writebuf, /* drain_writebuf */ cpufunc_nullop, /* flush_brnchtgt_C */ (void *)cpufunc_nullop, /* flush_brnchtgt_E */ - + arm11x6_sleep, /* sleep */ - + /* Soft functions */ - + cpufunc_null_fixup, /* dataabt_fixup */ cpufunc_null_fixup, /* prefetchabt_fixup */ - + arm11_context_switch, /* context_switch */ - + arm11x6_setup /* cpu setup */ }; #endif /*CPU_ARM1176 */ @@ -617,46 +617,46 @@ struct cpu_functions arm1176_cpufuncs = #if defined(CPU_CORTEXA) || defined(CPU_KRAIT) struct cpu_functions cortexa_cpufuncs = { /* CPU functions */ - + cpufunc_id, /* id */ cpufunc_nullop, /* cpwait */ - + /* MMU functions */ - + cpufunc_control, /* control */ cpufunc_domains, /* Domain */ armv7_setttb, /* Setttb */ cpufunc_faultstatus, /* Faultstatus */ cpufunc_faultaddress, /* Faultaddress */ - - /* + + /* * TLB functions. ARMv7 does all TLB ops based on a unified TLB model * whether the hardware implements separate I+D or not, so we use the * same 'ID' functions for all 3 variations. */ - + armv7_tlb_flushID, /* tlb_flushID */ armv7_tlb_flushID_SE, /* tlb_flushID_SE */ armv7_tlb_flushID, /* tlb_flushI */ armv7_tlb_flushID_SE, /* tlb_flushI_SE */ armv7_tlb_flushID, /* tlb_flushD */ armv7_tlb_flushID_SE, /* tlb_flushD_SE */ - + /* Cache operations */ - + armv7_icache_sync_all, /* icache_sync_all */ armv7_icache_sync_range, /* icache_sync_range */ - + armv7_dcache_wbinv_all, /* dcache_wbinv_all */ armv7_dcache_wbinv_range, /* dcache_wbinv_range */ armv7_dcache_inv_range, /* dcache_inv_range */ armv7_dcache_wb_range, /* dcache_wb_range */ - + armv7_idcache_inv_all, /* idcache_inv_all */ armv7_idcache_wbinv_all, /* idcache_wbinv_all */ armv7_idcache_wbinv_range, /* idcache_wbinv_range */ - - /* + + /* * Note: For CPUs using the PL310 the L2 ops are filled in when the * L2 cache controller is actually enabled. */ @@ -665,23 +665,23 @@ struct cpu_functions cortexa_cpufuncs = (void *)cpufunc_nullop, /* l2cache_inv_range */ (void *)cpufunc_nullop, /* l2cache_wb_range */ (void *)cpufunc_nullop, /* l2cache_drain_writebuf */ - + /* Other functions */ - + cpufunc_nullop, /* flush_prefetchbuf */ armv7_drain_writebuf, /* drain_writebuf */ cpufunc_nullop, /* flush_brnchtgt_C */ (void *)cpufunc_nullop, /* flush_brnchtgt_E */ - + armv7_cpu_sleep, /* sleep */ - + /* Soft functions */ - + cpufunc_null_fixup, /* dataabt_fixup */ cpufunc_null_fixup, /* prefetchabt_fixup */ - + armv7_context_switch, /* context_switch */ - + cortexa_setup /* cpu setup */ }; #endif /* CPU_CORTEXA */ @@ -758,7 +758,7 @@ get_cachetype_cp15() __asm __volatile("mrc p15, 1, %0, c0, c0, 0" : "=r" (csize)); arm_cache_type[sel] = csize; - arm_dcache_align = 1 << + arm_dcache_align = 1 << (CPUV7_CT_xSIZE_LEN(csize) + 4); arm_dcache_align_mask = arm_dcache_align - 1; } @@ -913,12 +913,12 @@ set_cpufuncs() cpufuncs = cortexa_cpufuncs; cpu_reset_needs_v4_MMU_disable = 1; /* V4 or higher */ get_cachetype_cp15(); - + pmap_pte_init_mmu_v6(); goto out; } #endif /* CPU_CORTEXA */ - + #if defined(CPU_MV_PJ4B) if (cputype == CPU_ID_MV88SV581X_V7 || cputype == CPU_ID_MV88SV584X_V7 || @@ -1165,7 +1165,7 @@ arm11x6_setup(void) (3 << 30) | /* SBZ */ (1 << 29) | /* FA */ (1 << 28) | /* TR */ - (3 << 26) | /* SBZ */ + (3 << 26) | /* SBZ */ (3 << 19) | /* SBZ */ (1 << 17); /* SBZ */ @@ -1258,39 +1258,39 @@ void cortexa_setup(void) { int cpuctrl, cpuctrlmask; - + cpuctrlmask = CPU_CONTROL_MMU_ENABLE | /* MMU enable [0] */ CPU_CONTROL_AFLT_ENABLE | /* Alignment fault [1] */ CPU_CONTROL_DC_ENABLE | /* DCache enable [2] */ CPU_CONTROL_BPRD_ENABLE | /* Branch prediction [11] */ CPU_CONTROL_IC_ENABLE | /* ICache enable [12] */ CPU_CONTROL_VECRELOC; /* Vector relocation [13] */ - + cpuctrl = CPU_CONTROL_MMU_ENABLE | CPU_CONTROL_IC_ENABLE | CPU_CONTROL_DC_ENABLE | CPU_CONTROL_BPRD_ENABLE; - + #ifndef ARM32_DISABLE_ALIGNMENT_FAULTS cpuctrl |= CPU_CONTROL_AFLT_ENABLE; #endif - + /* Switch to big endian */ #ifdef __ARMEB__ cpuctrl |= CPU_CONTROL_BEND_ENABLE; #endif - + /* Check if the vector page is at the high address (0xffff0000) */ if (vector_page == ARM_VECTORS_HIGH) cpuctrl |= CPU_CONTROL_VECRELOC; - + /* Clear out the cache */ cpu_idcache_wbinv_all(); - + /* Set the control register */ ctrl = cpuctrl; cpu_control(cpuctrlmask, cpuctrl); - + /* And again. */ cpu_idcache_wbinv_all(); #ifdef SMP Modified: head/sys/arm/arm/cpufunc_asm_arm11x6.S ============================================================================== --- head/sys/arm/arm/cpufunc_asm_arm11x6.S Sun May 24 12:12:01 2015 (r283365) +++ head/sys/arm/arm/cpufunc_asm_arm11x6.S Sun May 24 12:20:11 2015 (r283366) @@ -73,7 +73,7 @@ __FBSDID("$FreeBSD$"); * * Erratum 411920 in ARM1136 (fixed in r1p4) * Erratum 415045 in ARM1176 (fixed in r0p5?) - * + * * - value of arg 'reg' Should Be Zero */ #define Invalidate_I_cache(Rtmp1, Rtmp2) \ @@ -150,20 +150,20 @@ ENTRY_NP(arm11x6_icache_sync_range) /* Erratum ARM1176 371367 */ mrs r2, cpsr /* save the CPSR */ cpsid ifa /* disable interrupts (irq,fiq,abort) */ - mov r3, #0 + mov r3, #0 mcr p15, 0, r3, c13, c0, 0 /* write FCSE (uTLB invalidate) */ mcr p15, 0, r3, c7, c5, 4 /* flush prefetch buffer */ - add r3, pc, #0x24 + add r3, pc, #0x24 mcr p15, 0, r3, c7, c13, 1 /* prefetch I-cache line */ mcrr p15, 0, r1, r0, c5 /* invalidate I-cache range */ msr cpsr_cx, r2 /* local_irq_restore */ - nop - nop - nop - nop - nop - nop - nop + nop + nop + nop + nop + nop + nop + nop mcrr p15, 0, r1, r0, c12 /* clean and invalidate D cache range */ /* XXXNH */ mcr p15, 0, r0, c7, c10, 4 /* drain the write buffer */ @@ -177,20 +177,20 @@ ENTRY_NP(arm11x6_idcache_wbinv_range) /* Erratum ARM1176 371367 */ mrs r2, cpsr /* save the CPSR */ cpsid ifa /* disable interrupts (irq,fiq,abort) */ - mov r3, #0 + mov r3, #0 mcr p15, 0, r3, c13, c0, 0 /* write FCSE (uTLB invalidate) */ mcr p15, 0, r3, c7, c5, 4 /* flush prefetch buffer */ - add r3, pc, #0x24 + add r3, pc, #0x24 mcr p15, 0, r3, c7, c13, 1 /* prefetch I-cache line */ mcrr p15, 0, r1, r0, c5 /* invalidate I-cache range */ msr cpsr_cx, r2 /* local_irq_restore */ - nop - nop - nop - nop - nop - nop - nop + nop + nop + nop + nop + nop + nop + nop mcrr p15, 0, r1, r0, c14 /* clean and invalidate D cache range */ mcr p15, 0, r0, c7, c10, 4 /* drain the write buffer */ @@ -199,7 +199,7 @@ END(arm11x6_idcache_wbinv_range) /* * Preload the cache before issuing the WFI by conditionally disabling the - * mcr intstructions the first time around the loop. Ensure the function is + * mcr intstructions the first time around the loop. Ensure the function is * cacheline aligned. */ .arch armv6 Modified: head/sys/arm/arm/cpufunc_asm_arm9.S ============================================================================== --- head/sys/arm/arm/cpufunc_asm_arm9.S Sun May 24 12:12:01 2015 (r283365) +++ head/sys/arm/arm/cpufunc_asm_arm9.S Sun May 24 12:20:11 2015 (r283366) @@ -130,7 +130,7 @@ ENTRY(arm9_dcache_wb_range) bhi .Larm9_wb_next mov pc, lr END(arm9_dcache_wb_range) - + ENTRY(arm9_dcache_wbinv_range) ldr ip, .Larm9_line_size cmp r1, #0x4000 @@ -147,7 +147,7 @@ ENTRY(arm9_dcache_wbinv_range) bhi .Larm9_wbinv_next mov pc, lr END(arm9_dcache_wbinv_range) - + /* * Note, we must not invalidate everything. If the range is too big we * must use wb-inv of the entire cache. Modified: head/sys/arm/arm/cpufunc_asm_armv6.S ============================================================================== --- head/sys/arm/arm/cpufunc_asm_armv6.S Sun May 24 12:12:01 2015 (r283365) +++ head/sys/arm/arm/cpufunc_asm_armv6.S Sun May 24 12:20:11 2015 (r283366) @@ -37,7 +37,7 @@ /* * $FreeBSD$ */ - + #include .arch armv6 @@ -69,7 +69,7 @@ ENTRY(armv6_dcache_wb_range) mcr p15, 0, r0, c7, c10, 4 /* drain the write buffer */ RET END(armv6_dcache_wb_range) - + /* LINTSTUB: void armv6_dcache_wbinv_range(vaddr_t, vsize_t); */ ENTRY(armv6_dcache_wbinv_range) add r1, r1, r0 @@ -78,7 +78,7 @@ ENTRY(armv6_dcache_wbinv_range) mcr p15, 0, r0, c7, c10, 4 /* drain the write buffer */ RET END(armv6_dcache_wbinv_range) - + /* * Note, we must not invalidate everything. If the range is too big we * must use wb-inv of the entire cache. Modified: head/sys/arm/arm/cpufunc_asm_armv7.S ============================================================================== --- head/sys/arm/arm/cpufunc_asm_armv7.S Sun May 24 12:12:01 2015 (r283365) +++ head/sys/arm/arm/cpufunc_asm_armv7.S Sun May 24 12:20:11 2015 (r283366) @@ -64,7 +64,7 @@ __FBSDID("$FreeBSD$"); #define PT_OUTER_WT (2 << 3) #define PT_OUTER_WB (3 << 3) #define PT_OUTER_WBWA (1 << 3) - + #ifdef SMP #define PT_ATTR (PT_S|PT_INNER_WBWA|PT_OUTER_WBWA|PT_NOS) #else Modified: head/sys/arm/arm/cpufunc_asm_xscale_c3.S ============================================================================== --- head/sys/arm/arm/cpufunc_asm_xscale_c3.S Sun May 24 12:12:01 2015 (r283365) +++ head/sys/arm/arm/cpufunc_asm_xscale_c3.S Sun May 24 12:20:11 2015 (r283366) @@ -135,7 +135,7 @@ __FBSDID("$FreeBSD$"); ldr r4, .Lblock_userspace_access ; \ ldr ip, [r4] ; \ orr r0, ip, #1 ; \ - str r0, [r4] + str r0, [r4] #define XSCALE_CACHE_CLEAN_UNBLOCK \ str ip, [r3] ; \ @@ -217,7 +217,7 @@ ENTRY(xscalec3_cache_syncI_rng) CPWAIT_AND_RETURN(r0) END(xscalec3_cache_syncI_rng) - + ENTRY(xscalec3_cache_purgeD_rng) cmp r1, #0x4000 Modified: head/sys/arm/arm/cpuinfo.c ============================================================================== --- head/sys/arm/arm/cpuinfo.c Sun May 24 12:12:01 2015 (r283365) +++ head/sys/arm/arm/cpuinfo.c Sun May 24 12:20:11 2015 (r283366) @@ -48,7 +48,7 @@ void cpuinfo_init(void) { - cpuinfo.midr = cp15_midr_get(); + cpuinfo.midr = cp15_midr_get(); /* Test old version id schemes first */ if ((cpuinfo.midr & CPU_ID_IMPLEMENTOR_MASK) == CPU_ID_ARM_LTD) { if (CPU_ID_ISOLD(cpuinfo.midr)) { @@ -74,7 +74,7 @@ cpuinfo_init(void) /* non ARM -> must be new id scheme */ cpuinfo.architecture = (cpuinfo.midr >> 16) & 0x0F; cpuinfo.revision = (cpuinfo.midr >> 20) & 0x0F; - } + } /* Parse rest of MIDR */ cpuinfo.implementer = (cpuinfo.midr >> 24) & 0xFF; cpuinfo.part_number = (cpuinfo.midr >> 4) & 0xFFF; @@ -86,11 +86,11 @@ cpuinfo_init(void) cpuinfo.tlbtr = cp15_tlbtr_get(); cpuinfo.mpidr = cp15_mpidr_get(); cpuinfo.revidr = cp15_revidr_get(); - + /* if CPU is not v7 cpu id scheme */ if (cpuinfo.architecture != 0xF) return; - + cpuinfo.id_pfr0 = cp15_id_pfr0_get(); cpuinfo.id_pfr1 = cp15_id_pfr1_get(); cpuinfo.id_dfr0 = cp15_id_dfr0_get(); Modified: head/sys/arm/arm/db_interface.c ============================================================================== --- head/sys/arm/arm/db_interface.c Sun May 24 12:12:01 2015 (r283365) +++ head/sys/arm/arm/db_interface.c Sun May 24 12:20:11 2015 (r283366) @@ -326,12 +326,9 @@ branch_taken(u_int insn, db_addr_t pc) default: break; /* XXX */ } - } return (addr + offset); - } - case 0xa: /* b ... */ case 0xb: /* bl ... */ addr = ((insn << 2) & 0x03ffffff); Modified: head/sys/arm/arm/elf_trampoline.c ============================================================================== --- head/sys/arm/arm/elf_trampoline.c Sun May 24 12:12:01 2015 (r283365) +++ head/sys/arm/arm/elf_trampoline.c Sun May 24 12:20:11 2015 (r283366) @@ -93,7 +93,7 @@ extern void sheeva_l2cache_wbinv_all(voi #define cpu_idcache_wbinv_all armv7_idcache_wbinv_all #define cpu_l2cache_wbinv_all() #else -#define cpu_l2cache_wbinv_all() +#define cpu_l2cache_wbinv_all() #endif static void armadaxp_idcache_wbinv_all(void); @@ -216,7 +216,7 @@ _startC(void) "mov sp, %1\n" "mov pc, %0\n" : : "r" (target_addr), "r" (tmp_sp)); - + } #endif #ifdef KZIP @@ -225,7 +225,7 @@ _startC(void) sp += 2 * L1_TABLE_SIZE; #endif sp += 1024 * 1024; /* Should be enough for a stack */ - + __asm __volatile("adr %0, 2f\n" "bic %0, %0, #0xff000000\n" "and %1, %1, #0xff000000\n" @@ -366,7 +366,7 @@ get_cachetype_cp15() static void arm9_setup(void) { - + get_cachetype_cp15(); arm9_dcache_sets_inc = 1U << arm_dcache_l2_linesize; arm9_dcache_sets_max = (1U << (arm_dcache_l2_linesize + @@ -490,7 +490,7 @@ load_kernel(unsigned int kstart, unsigne vm_offset_t lastaddr = 0; Elf_Addr ssym = 0; Elf_Dyn *dp; - + eh = (Elf32_Ehdr *)kstart; ssym = 0; entry_point = (void*)eh->e_entry; @@ -504,7 +504,7 @@ load_kernel(unsigned int kstart, unsigne lastaddr = phdr[i].p_vaddr - KERNVIRTADDR + curaddr + phdr[i].p_memsz; } - + /* Save the symbol tables, as there're about to be scratched. */ memcpy(shdr, (void *)(kstart + eh->e_shoff), sizeof(*shdr) * eh->e_shnum); @@ -552,12 +552,12 @@ load_kernel(unsigned int kstart, unsigne lastaddr = roundup(lastaddr, sizeof(shdr[symstrindex].sh_size)); } - + } } if (!d) return ((void *)lastaddr); - + j = eh->e_phnum; for (i = 0; i < j; i++) { volatile char c; @@ -610,7 +610,7 @@ load_kernel(unsigned int kstart, unsigne ((void(*)(void))(entry_point - KERNVIRTADDR + curaddr))(); __asm __volatile(".globl func_end\n" "func_end:"); - + /* NOTREACHED */ return NULL; } @@ -653,7 +653,7 @@ setup_pagetables(unsigned int pt_addr, v "mov r0, r0\n" "sub pc, pc, #4\n" : "=r" (tmp) : "r" (pd), "r" (domain)); - + /* * XXX: This is the most stupid workaround I've ever wrote. * For some reason, the KB9202 won't boot the kernel unless @@ -680,7 +680,7 @@ __start(void) if (*kernel == 0x1f && kernel[1] == 0x8b) { pt_addr = (((int)&_end + KERNSIZE + 0x100) & ~(L1_TABLE_SIZE - 1)) + L1_TABLE_SIZE; - + #ifdef CPU_ARM9 /* So that idcache_wbinv works; */ if ((cpufunc_id() & 0x0000f000) == 0x00009000) @@ -715,7 +715,7 @@ __start(void) dst = (void *)(((vm_offset_t)dst & ~3)); pt_addr = ((unsigned int)dst &~(L1_TABLE_SIZE - 1)) + L1_TABLE_SIZE; setup_pagetables(pt_addr, (vm_paddr_t)curaddr, - (vm_paddr_t)curaddr + 0x10000000, 0); + (vm_paddr_t)curaddr + 0x10000000, 0); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sun May 24 12:33:14 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2D6C4BF4; Sun, 24 May 2015 12:33:14 +0000 (UTC) Received: from svn.freebsd.org (svn.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 1BC391B9F; Sun, 24 May 2015 12:33:14 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OCXDjB064562; Sun, 24 May 2015 12:33:13 GMT (envelope-from andrew@FreeBSD.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OCXDQ7064558; Sun, 24 May 2015 12:33:13 GMT (envelope-from andrew@FreeBSD.org) Message-Id: <201505241233.t4OCXDQ7064558@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: andrew set sender to andrew@FreeBSD.org using -f From: Andrew Turner Date: Sun, 24 May 2015 12:33:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283367 - in head/sys/arm: conf qemu X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 12:33:14 -0000 Author: andrew Date: Sun May 24 12:33:12 2015 New Revision: 283367 URL: https://svnweb.freebsd.org/changeset/base/283367 Log: Enable SMP on the qemu virt platform. We use the device tree to find which cpus to enable, and PSCI to start them. Added: head/sys/arm/qemu/virt_mp.c (contents, props changed) Modified: head/sys/arm/conf/VIRT head/sys/arm/qemu/files.qemu Modified: head/sys/arm/conf/VIRT ============================================================================== --- head/sys/arm/conf/VIRT Sun May 24 12:20:11 2015 (r283366) +++ head/sys/arm/conf/VIRT Sun May 24 12:33:12 2015 (r283367) @@ -24,8 +24,9 @@ include "std.armv6" include "../qemu/std.virt" options HZ=100 -options SCHED_4BSD # 4BSD scheduler +options SCHED_ULE # 4BSD scheduler options PLATFORM +options SMP # Enable multiple cores # Debugging for use in -current makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols Modified: head/sys/arm/qemu/files.qemu ============================================================================== --- head/sys/arm/qemu/files.qemu Sun May 24 12:20:11 2015 (r283366) +++ head/sys/arm/qemu/files.qemu Sun May 24 12:33:12 2015 (r283367) @@ -13,5 +13,6 @@ kern/kern_clocksource.c standard arm/arm/generic_timer.c standard arm/qemu/virt_common.c standard arm/qemu/virt_machdep.c standard +arm/qemu/virt_mp.c optional smp dev/ofw/ofw_cpu.c standard Added: head/sys/arm/qemu/virt_mp.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/arm/qemu/virt_mp.c Sun May 24 12:33:12 2015 (r283367) @@ -0,0 +1,119 @@ +/*- + * Copyright (c) 2015 Andrew Turner + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include +#include + +static int running_cpus; + +int +platform_mp_probe(void) +{ + int ncpus; + + ncpus = ofw_cpu_early_foreach(NULL, true); + if (ncpus <= 1) { + mp_ncpus = 1; + return (0); + } + + mp_ncpus = MIN(ncpus, MAXCPU); + + return (1); +} + +static boolean_t +virt_maxid(u_int id, phandle_t node, u_int addr_cells, pcell_t *reg) +{ + + if (mp_maxid < id) + mp_maxid = id; + + return (true); +} + +void +platform_mp_setmaxid(void) +{ + + mp_maxid = PCPU_GET(cpuid); + ofw_cpu_early_foreach(virt_maxid, true); +} + +static boolean_t +virt_start_ap(u_int id, phandle_t node, u_int addr_cells, pcell_t *reg) +{ + int err; + + if (running_cpus >= mp_ncpus) + return (false); + running_cpus++; + + err = psci_cpu_on(*reg, pmap_kextract((vm_offset_t)mpentry), id); + + if (err != PSCI_RETVAL_SUCCESS) + return (false); + + return (true); +} + +void +platform_mp_start_ap(void) +{ + + ofw_cpu_early_foreach(virt_start_ap, true); +} + +void +platform_mp_init_secondary(void) +{ + + arm_init_secondary_ic(); +} + +void +platform_ipi_send(cpuset_t cpus, u_int ipi) +{ + + pic_ipi_send(cpus, ipi); +} From owner-svn-src-all@FreeBSD.ORG Sun May 24 13:24:20 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E8D071BE; Sun, 24 May 2015 13:24:20 +0000 (UTC) Received: from vps.hungerhost.com (vps.hungerhost.com [216.38.53.176]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id BC3F01FCD; Sun, 24 May 2015 13:24:20 +0000 (UTC) Received: from [65.255.63.100] (port=49668 helo=[10.144.4.135]) by vps.hungerhost.com with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.82) (envelope-from ) id 1YwVt5-00084v-5w; Sun, 24 May 2015 09:24:19 -0400 From: "George Neville-Neil" To: "hiren panchasara" Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r282240 - in head: cddl/lib/libdtrace sys/netinet Date: Sun, 24 May 2015 09:24:16 -0400 Message-ID: <820BB330-CCB9-46DE-86CF-3D233B84F69B@freebsd.org> In-Reply-To: <20150523215927.GM95600@strugglingcoder.info> References: <201504291719.t3THJtIM020724@svn.freebsd.org> <20150523215927.GM95600@strugglingcoder.info> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=_MailMate_43C74825-FD11-470C-B167-0F1CA0DD76A0_="; micalg=pgp-sha1; protocol="application/pgp-signature" X-Mailer: MailMate (1.9.1r5084) X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - vps.hungerhost.com X-AntiAbuse: Original Domain - freebsd.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - freebsd.org X-Get-Message-Sender-Via: vps.hungerhost.com: authenticated_id: gnn@neville-neil.com X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 13:24:21 -0000 This is an OpenPGP/MIME signed message (RFC 3156 and 4880). --=_MailMate_43C74825-FD11-470C-B167-0F1CA0DD76A0_= Content-Type: text/plain On 23 May 2015, at 17:59, hiren panchasara wrote: > On 04/29/15 at 05:19P, George V. Neville-Neil wrote: >> Author: gnn >> Date: Wed Apr 29 17:19:55 2015 >> New Revision: 282240 >> URL: https://svnweb.freebsd.org/changeset/base/282240 >> >> Log: >> Brief demo script showing the various values that can be read via >> the new SIFTR statically defined tracepoint (SDT). >> >> Differential Revision: https://reviews.freebsd.org/D2387 >> Reviewed by: bz, markj >> >> Modified: >> head/cddl/lib/libdtrace/tcp.d >> head/sys/netinet/in_kdtrace.c >> head/sys/netinet/in_kdtrace.h >> head/sys/netinet/siftr.c > > George, > > This seems useful. Can this be MFC'd to 10? > I think it can be. I'll mark this and do it when I'm back from holiday. Nag me if I forget :-) Best, George --=_MailMate_43C74825-FD11-470C-B167-0F1CA0DD76A0_= Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc -----BEGIN PGP SIGNATURE----- Comment: GPGTools - http://gpgtools.org iEYEARECAAYFAlVh0QAACgkQYdh2wUQKM9JhuACfS5Si0cnIxMk5JxOZzt+PnbZB DmAAoLJ2nE7Q4SmpZ2WmFjOhDqZsCto8 =EWLV -----END PGP SIGNATURE----- --=_MailMate_43C74825-FD11-470C-B167-0F1CA0DD76A0_=-- From owner-svn-src-all@FreeBSD.ORG Sun May 24 14:25:08 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2276D7D5; Sun, 24 May 2015 14:25:08 +0000 (UTC) Received: from svn.freebsd.org (svn.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 1062E159C; Sun, 24 May 2015 14:25:08 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OEP8cg018802; Sun, 24 May 2015 14:25:08 GMT (envelope-from ian@FreeBSD.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OEP3J1018776; Sun, 24 May 2015 14:25:03 GMT (envelope-from ian@FreeBSD.org) Message-Id: <201505241425.t4OEP3J1018776@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ian set sender to ian@FreeBSD.org using -f From: Ian Lepore Date: Sun, 24 May 2015 14:25:03 +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: r283368 - stable/10/sys/arm/conf X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 14:25:08 -0000 Author: ian Date: Sun May 24 14:25:03 2015 New Revision: 283368 URL: https://svnweb.freebsd.org/changeset/base/283368 Log: MFC r276004: Fix the indentation to simplify comparing the ARM config files. Modified: stable/10/sys/arm/conf/BEAGLEBONE stable/10/sys/arm/conf/CNS11XXNAS stable/10/sys/arm/conf/CUBIEBOARD stable/10/sys/arm/conf/CUBIEBOARD2 stable/10/sys/arm/conf/DIGI-CCWMX53 stable/10/sys/arm/conf/DOCKSTAR stable/10/sys/arm/conf/DREAMPLUG-1001 stable/10/sys/arm/conf/EFIKA_MX stable/10/sys/arm/conf/EXYNOS5.common stable/10/sys/arm/conf/HL201 stable/10/sys/arm/conf/IMX53 stable/10/sys/arm/conf/IMX53-QSB stable/10/sys/arm/conf/IMX6 stable/10/sys/arm/conf/SAM9260EK stable/10/sys/arm/conf/VERSATILEPB stable/10/sys/arm/conf/VYBRID Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/arm/conf/BEAGLEBONE ============================================================================== --- stable/10/sys/arm/conf/BEAGLEBONE Sun May 24 12:33:12 2015 (r283367) +++ stable/10/sys/arm/conf/BEAGLEBONE Sun May 24 14:25:03 2015 (r283368) @@ -77,7 +77,7 @@ options DDB # Enable the kernel debug #options DIAGNOSTIC # NFS server support -#options NFSD +#options NFSD # NFS root from boopt/dhcp #options BOOTP Modified: stable/10/sys/arm/conf/CNS11XXNAS ============================================================================== --- stable/10/sys/arm/conf/CNS11XXNAS Sun May 24 12:33:12 2015 (r283367) +++ stable/10/sys/arm/conf/CNS11XXNAS Sun May 24 14:25:03 2015 (r283368) @@ -103,7 +103,7 @@ device bpf device loop device md -device random # Entropy device +device random # Entropy device device usb @@ -114,12 +114,12 @@ device umass device scbus # SCSI bus (required for ATA/SCSI) device da # Direct Access (disks) device pass -device cfi +device cfi #device udav # Davicom DM9601E USB device geom_label device geom_journal -device geom_part_bsd +device geom_part_bsd options ROOTDEVNAME=\"ufs:da0s1a\" Modified: stable/10/sys/arm/conf/CUBIEBOARD ============================================================================== --- stable/10/sys/arm/conf/CUBIEBOARD Sun May 24 12:33:12 2015 (r283367) +++ stable/10/sys/arm/conf/CUBIEBOARD Sun May 24 14:25:03 2015 (r283368) @@ -92,7 +92,7 @@ options ROOTDEVNAME=\"ufs:/dev/da0s2\" # ATA controllers #device ahci # AHCI-compatible SATA controllers #device ata # Legacy ATA/SATA controllers -#options ATA_STATIC_ID # Static device numbering +#options ATA_STATIC_ID # Static device numbering # Console and misc device uart Modified: stable/10/sys/arm/conf/CUBIEBOARD2 ============================================================================== --- stable/10/sys/arm/conf/CUBIEBOARD2 Sun May 24 12:33:12 2015 (r283367) +++ stable/10/sys/arm/conf/CUBIEBOARD2 Sun May 24 14:25:03 2015 (r283368) @@ -93,7 +93,7 @@ options ROOTDEVNAME=\"ufs:/dev/da0s2\" # ATA controllers #device ahci # AHCI-compatible SATA controllers #device ata # Legacy ATA/SATA controllers -#options ATA_STATIC_ID # Static device numbering +#options ATA_STATIC_ID # Static device numbering # Console and misc device uart Modified: stable/10/sys/arm/conf/DIGI-CCWMX53 ============================================================================== --- stable/10/sys/arm/conf/DIGI-CCWMX53 Sun May 24 12:33:12 2015 (r283367) +++ stable/10/sys/arm/conf/DIGI-CCWMX53 Sun May 24 14:25:03 2015 (r283368) @@ -22,7 +22,7 @@ include "IMX53" ident DIGI-CCWMX53 -makeoptions WITHOUT_MODULES="ahc" +makeoptions WITHOUT_MODULES="ahc" # required for netbooting #options BOOTP @@ -34,5 +34,5 @@ makeoptions WITHOUT_MODULES="ahc" #options ROOTDEVNAME=\"ufs:ada0s2a\" # Flattened Device Tree -options FDT_DTB_STATIC -makeoptions FDT_DTS_FILE=digi-ccwmx53.dts +options FDT_DTB_STATIC +makeoptions FDT_DTS_FILE=digi-ccwmx53.dts Modified: stable/10/sys/arm/conf/DOCKSTAR ============================================================================== --- stable/10/sys/arm/conf/DOCKSTAR Sun May 24 12:33:12 2015 (r283367) +++ stable/10/sys/arm/conf/DOCKSTAR Sun May 24 14:25:03 2015 (r283368) @@ -58,12 +58,12 @@ device faith # IPv6-to-IPv4 relaying device firmware # firmware(9) required for USB wlan device gif # IPv6 and IPv4 tunneling device loop # Network loopback -device md # Memory/malloc disk +device md # Memory/malloc disk device pty # BSD-style compatibility pseudo ttys device random # Entropy device -device tun # Packet tunnel. +device tun # Packet tunnel. device ether # Required for all ethernet devices -device vlan # 802.1Q VLAN support +device vlan # 802.1Q VLAN support device wlan # 802.11 WLAN support # cam support for umass and ahci @@ -81,66 +81,66 @@ device e1000phy # USB options USB_HOST_ALIGN=32 # Align DMA to cacheline -#options USB_DEBUG # Compile in USB debug support -device usb # Basic usb support -device ehci # USB host controller -device umass # Mass storage -device uhid # Human-interface devices -device rum # Ralink Technology RT2501USB wireless NICs -device uath # Atheros AR5523 wireless NICs -device ural # Ralink Technology RT2500USB wireless NICs -device zyd # ZyDAS zb1211/zb1211b wireless NICs -device urtw # Realtek RTL8187B/L USB -device upgt # Conexant/Intersil PrismGT SoftMAC USB -device u3g # USB-based 3G modems (Option, Huawei, Sierra) +#options USB_DEBUG # Compile in USB debug support +device usb # Basic usb support +device ehci # USB host controller +device umass # Mass storage +device uhid # Human-interface devices +device rum # Ralink Technology RT2501USB wireless NICs +device uath # Atheros AR5523 wireless NICs +device ural # Ralink Technology RT2500USB wireless NICs +device zyd # ZyDAS zb1211/zb1211b wireless NICs +device urtw # Realtek RTL8187B/L USB +device upgt # Conexant/Intersil PrismGT SoftMAC USB +device u3g # USB-based 3G modems (Option, Huawei, Sierra) # I2C (TWSI) device iic device iicbus # Sound -device sound -device snd_uaudio +device sound +device snd_uaudio #crypto -device cesa # Marvell security engine -device crypto -device cryptodev +device cesa # Marvell security engine +device crypto +device cryptodev # IPSec -device enc -options IPSEC -options IPSEC_NAT_T -options TCP_SIGNATURE # include support for RFC 2385 +device enc +options IPSEC +options IPSEC_NAT_T +options TCP_SIGNATURE # include support for RFC 2385 # IPFW -options IPFIREWALL -options IPFIREWALL_DEFAULT_TO_ACCEPT -options IPFIREWALL_VERBOSE -options IPFIREWALL_VERBOSE_LIMIT=100 -options IPFIREWALL_NAT -options LIBALIAS -options DUMMYNET -options IPDIVERT +options IPFIREWALL +options IPFIREWALL_DEFAULT_TO_ACCEPT +options IPFIREWALL_VERBOSE +options IPFIREWALL_VERBOSE_LIMIT=100 +options IPFIREWALL_NAT +options LIBALIAS +options DUMMYNET +options IPDIVERT #PF -device pf -device pflog -device pfsync +device pf +device pflog +device pfsync # ALTQ, required for PF -options ALTQ # Basic ALTQ support -options ALTQ_CBQ # Class Based Queueing -options ALTQ_RED # Random Early Detection -options ALTQ_RIO # RED In/Out -options ALTQ_HFSC # Hierarchical Packet Scheduler -options ALTQ_CDNR # Traffic conditioner -options ALTQ_PRIQ # Priority Queueing -options ALTQ_NOPCC # Required if the TSC is unusable +options ALTQ # Basic ALTQ support +options ALTQ_CBQ # Class Based Queueing +options ALTQ_RED # Random Early Detection +options ALTQ_RIO # RED In/Out +options ALTQ_HFSC # Hierarchical Packet Scheduler +options ALTQ_CDNR # Traffic conditioner +options ALTQ_PRIQ # Priority Queueing +options ALTQ_NOPCC # Required if the TSC is unusable #options ALTQ_DEBUG # Debugging -makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols +makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols options BREAK_TO_DEBUGGER options ALT_BREAK_TO_DEBUGGER options DDB Modified: stable/10/sys/arm/conf/DREAMPLUG-1001 ============================================================================== --- stable/10/sys/arm/conf/DREAMPLUG-1001 Sun May 24 12:33:12 2015 (r283367) +++ stable/10/sys/arm/conf/DREAMPLUG-1001 Sun May 24 14:25:03 2015 (r283368) @@ -58,22 +58,22 @@ options FDT_DTB_STATIC # Misc pseudo devices device bpf # Required for DHCP device faith # IPv6-to-IPv4 relaying (translation) -device firmware # firmware(9) required for USB wlan -device gif # IPv6 and IPv4 tunneling +device firmware # firmware(9) required for USB wlan +device gif # IPv6 and IPv4 tunneling device loop # Network loopback -device md # Memory/malloc disk +device md # Memory/malloc disk device pty # BSD-style compatibility pseudo ttys device random # Entropy device -device tun # Packet tunnel. +device tun # Packet tunnel. device ether # Required for all ethernet devices -device vlan # 802.1Q VLAN support +device vlan # 802.1Q VLAN support device wlan # 802.11 WLAN support # cam support for umass and ahci device scbus device pass device da -device cd +device cd # Serial ports device uart @@ -85,18 +85,18 @@ device e1000phy # USB options USB_HOST_ALIGN=32 # Align DMA to cacheline -#options USB_DEBUG # Compile in USB debug support -device usb # Basic usb support -device ehci # USB host controller -device umass # Mass storage -device uhid # Human-interface devices -device rum # Ralink Technology RT2501USB wireless NICs -device uath # Atheros AR5523 wireless NICs -device ural # Ralink Technology RT2500USB wireless NICs -device zyd # ZyDAS zb1211/zb1211b wireless NICs -device urtw # Realtek RTL8187B/L USB -device upgt # Conexant/Intersil PrismGT SoftMAC USB -device u3g # USB-based 3G modems (Option, Huawei, Sierra) +#options USB_DEBUG # Compile in USB debug support +device usb # Basic usb support +device ehci # USB host controller +device umass # Mass storage +device uhid # Human-interface devices +device rum # Ralink Technology RT2501USB wireless NICs +device uath # Atheros AR5523 wireless NICs +device ural # Ralink Technology RT2500USB wireless NICs +device zyd # ZyDAS zb1211/zb1211b wireless NICs +device urtw # Realtek RTL8187B/L USB +device upgt # Conexant/Intersil PrismGT SoftMAC USB +device u3g # USB-based 3G modems (Option, Huawei, Sierra) # I2C (TWSI) device iic @@ -107,48 +107,48 @@ device mvs device ahci # Sound -device sound -device snd_uaudio +device sound +device snd_uaudio #crypto -device cesa # Marvell security engine -device crypto -device cryptodev +device cesa # Marvell security engine +device crypto +device cryptodev # IPSec -device enc -options IPSEC -options IPSEC_NAT_T -options TCP_SIGNATURE # include support for RFC 2385 +device enc +options IPSEC +options IPSEC_NAT_T +options TCP_SIGNATURE # include support for RFC 2385 # IPFW -options IPFIREWALL -options IPFIREWALL_DEFAULT_TO_ACCEPT -options IPFIREWALL_VERBOSE -options IPFIREWALL_VERBOSE_LIMIT=100 -options IPFIREWALL_NAT -options LIBALIAS -options DUMMYNET -options IPDIVERT +options IPFIREWALL +options IPFIREWALL_DEFAULT_TO_ACCEPT +options IPFIREWALL_VERBOSE +options IPFIREWALL_VERBOSE_LIMIT=100 +options IPFIREWALL_NAT +options LIBALIAS +options DUMMYNET +options IPDIVERT #PF -device pf -device pflog -device pfsync +device pf +device pflog +device pfsync # ALTQ, required for PF -options ALTQ # Basic ALTQ support -options ALTQ_CBQ # Class Based Queueing -options ALTQ_RED # Random Early Detection -options ALTQ_RIO # RED In/Out -options ALTQ_HFSC # Hierarchical Packet Scheduler -options ALTQ_CDNR # Traffic conditioner -options ALTQ_PRIQ # Priority Queueing -options ALTQ_NOPCC # Required if the TSC is unusable +options ALTQ # Basic ALTQ support +options ALTQ_CBQ # Class Based Queueing +options ALTQ_RED # Random Early Detection +options ALTQ_RIO # RED In/Out +options ALTQ_HFSC # Hierarchical Packet Scheduler +options ALTQ_CDNR # Traffic conditioner +options ALTQ_PRIQ # Priority Queueing +options ALTQ_NOPCC # Required if the TSC is unusable #options ALTQ_DEBUG # Debugging -makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols +makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols options BREAK_TO_DEBUGGER options ALT_BREAK_TO_DEBUGGER options DDB @@ -179,7 +179,7 @@ options ROOTDEVNAME=\"ufs:/dev/da1s1a\" # create a kernel config file that looks like this: # # include DREAMPLUG-1001 -# nomakeoptions FDT_DTS_FILE +# nomakeoptions FDT_DTS_FILE # makeoptions FDT_DTS_FILE=dreamplug-1001N.dts # device nand Modified: stable/10/sys/arm/conf/EFIKA_MX ============================================================================== --- stable/10/sys/arm/conf/EFIKA_MX Sun May 24 12:33:12 2015 (r283367) +++ stable/10/sys/arm/conf/EFIKA_MX Sun May 24 14:25:03 2015 (r283368) @@ -22,7 +22,7 @@ ident EFIKA_MX include "../freescale/imx/std.imx51" -makeoptions WITHOUT_MODULES="ahc" +makeoptions WITHOUT_MODULES="ahc" options SCHED_4BSD # 4BSD scheduler options PREEMPTION # Enable kernel thread preemption @@ -187,7 +187,7 @@ makeoptions FDT_DTS_FILE=efikamx.dts # Uncomment following lines for framebuffer/syscons support device sc device kbdmux -options SC_DFLT_FONT # compile font in -makeoptions SC_DFLT_FONT=cp437 +options SC_DFLT_FONT # compile font in +makeoptions SC_DFLT_FONT=cp437 device ukbd # Allow keyboard like HIDs to control console device ums Modified: stable/10/sys/arm/conf/EXYNOS5.common ============================================================================== --- stable/10/sys/arm/conf/EXYNOS5.common Sun May 24 12:33:12 2015 (r283367) +++ stable/10/sys/arm/conf/EXYNOS5.common Sun May 24 14:25:03 2015 (r283368) @@ -99,8 +99,8 @@ device gpio options USB_HOST_ALIGN=64 # Align usb buffers to cache line size. device usb options USB_DEBUG -#options USB_REQ_DEBUG -#options USB_VERBOSE +#options USB_REQ_DEBUG +#options USB_VERBOSE #device musb device ehci #device ohci Modified: stable/10/sys/arm/conf/HL201 ============================================================================== --- stable/10/sys/arm/conf/HL201 Sun May 24 12:33:12 2015 (r283367) +++ stable/10/sys/arm/conf/HL201 Sun May 24 14:25:03 2015 (r283368) @@ -133,5 +133,5 @@ device nand # NAND interface on CS3 #makeoptions FDT_DTS_FILE=hl201.dts options EARLY_PRINTF -options SOCDEV_PA=0xfc000000 +options SOCDEV_PA=0xfc000000 options SOCDEV_VA=0xdc000000 Modified: stable/10/sys/arm/conf/IMX53 ============================================================================== --- stable/10/sys/arm/conf/IMX53 Sun May 24 12:33:12 2015 (r283367) +++ stable/10/sys/arm/conf/IMX53 Sun May 24 14:25:03 2015 (r283368) @@ -170,5 +170,5 @@ options FDT # Configure using FDT/DTB #device sc #device vt #device kbdmux -#options SC_DFLT_FONT # compile font in -#makeoptions SC_DFLT_FONT=cp437 +#options SC_DFLT_FONT # compile font in +#makeoptions SC_DFLT_FONT=cp437 Modified: stable/10/sys/arm/conf/IMX53-QSB ============================================================================== --- stable/10/sys/arm/conf/IMX53-QSB Sun May 24 12:33:12 2015 (r283367) +++ stable/10/sys/arm/conf/IMX53-QSB Sun May 24 14:25:03 2015 (r283368) @@ -34,5 +34,5 @@ options HZ=250 # 4ms scheduling quant #options ROOTDEVNAME=\"ufs:ada0s2a\" # Flattened Device Tree -options FDT_DTB_STATIC -makeoptions FDT_DTS_FILE=imx53-qsb.dts +options FDT_DTB_STATIC +makeoptions FDT_DTS_FILE=imx53-qsb.dts Modified: stable/10/sys/arm/conf/IMX6 ============================================================================== --- stable/10/sys/arm/conf/IMX6 Sun May 24 12:33:12 2015 (r283367) +++ stable/10/sys/arm/conf/IMX6 Sun May 24 14:25:03 2015 (r283368) @@ -98,7 +98,7 @@ device miibus # Required for ethernet device bpf # Berkeley packet filter (required for DHCP) # General-purpose input/output -device gpio +device gpio # Serial (COM) ports device uart # Multi-uart driver Modified: stable/10/sys/arm/conf/SAM9260EK ============================================================================== --- stable/10/sys/arm/conf/SAM9260EK Sun May 24 12:33:12 2015 (r283367) +++ stable/10/sys/arm/conf/SAM9260EK Sun May 24 14:25:03 2015 (r283368) @@ -181,5 +181,5 @@ device nand # NAND interface on CS3 #makeoptions FDT_DTS_FILE=sam9260ek.dts options EARLY_PRINTF -options SOCDEV_PA=0xfc000000 +options SOCDEV_PA=0xfc000000 options SOCDEV_VA=0xdc000000 Modified: stable/10/sys/arm/conf/VERSATILEPB ============================================================================== --- stable/10/sys/arm/conf/VERSATILEPB Sun May 24 12:33:12 2015 (r283367) +++ stable/10/sys/arm/conf/VERSATILEPB Sun May 24 14:25:03 2015 (r283368) @@ -106,8 +106,8 @@ device pass # Passthrough device (dir # Comment following lines for headless setup device sc device kbdmux -options SC_DFLT_FONT # compile font in -makeoptions SC_DFLT_FONT=cp437 +options SC_DFLT_FONT # compile font in +makeoptions SC_DFLT_FONT=cp437 options KDB options DDB # Enable the kernel debugger Modified: stable/10/sys/arm/conf/VYBRID ============================================================================== --- stable/10/sys/arm/conf/VYBRID Sun May 24 12:33:12 2015 (r283367) +++ stable/10/sys/arm/conf/VYBRID Sun May 24 14:25:03 2015 (r283368) @@ -110,8 +110,8 @@ device gpio options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. device usb options USB_DEBUG -#options USB_REQ_DEBUG -#options USB_VERBOSE +#options USB_REQ_DEBUG +#options USB_VERBOSE #device musb device ehci #device ohci From owner-svn-src-all@FreeBSD.ORG Sun May 24 14:29:36 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E8B32941; Sun, 24 May 2015 14:29:36 +0000 (UTC) Received: from svn.freebsd.org (svn.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 BCC5A15BF; Sun, 24 May 2015 14:29:36 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OETai1019399; Sun, 24 May 2015 14:29:36 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OETaMm019397; Sun, 24 May 2015 14:29:36 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241429.t4OETaMm019397@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 14:29:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283369 - in head/sys: amd64/linux32 i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 14:29:37 -0000 Author: dchagin Date: Sun May 24 14:29:35 2015 New Revision: 283369 URL: https://svnweb.freebsd.org/changeset/base/283369 Log: In preparation for switching linuxulator to the use the native 1:1 threads print the thread id in addition to the pid in debug messages. Modified: head/sys/amd64/linux32/linux.h head/sys/i386/linux/linux.h Modified: head/sys/amd64/linux32/linux.h ============================================================================== --- head/sys/amd64/linux32/linux.h Sun May 24 14:25:03 2015 (r283368) +++ head/sys/amd64/linux32/linux.h Sun May 24 14:29:35 2015 (r283369) @@ -40,8 +40,10 @@ */ extern u_char linux_debug_map[]; #define ldebug(name) isclr(linux_debug_map, LINUX_SYS_linux_ ## name) -#define ARGS(nm, fmt) "linux(%ld): "#nm"("fmt")\n", (long)td->td_proc->p_pid -#define LMSG(fmt) "linux(%ld): "fmt"\n", (long)td->td_proc->p_pid +#define ARGS(nm, fmt) "linux(%ld/%ld): "#nm"("fmt")\n", \ + (long)td->td_proc->p_pid, (long)td->td_tid +#define LMSG(fmt) "linux(%ld/%ld): "fmt"\n", \ + (long)td->td_proc->p_pid, (long)td->td_tid #define LINUX_DTRACE linuxulator32 #ifdef MALLOC_DECLARE Modified: head/sys/i386/linux/linux.h ============================================================================== --- head/sys/i386/linux/linux.h Sun May 24 14:25:03 2015 (r283368) +++ head/sys/i386/linux/linux.h Sun May 24 14:29:35 2015 (r283369) @@ -40,8 +40,10 @@ */ extern u_char linux_debug_map[]; #define ldebug(name) isclr(linux_debug_map, LINUX_SYS_linux_ ## name) -#define ARGS(nm, fmt) "linux(%ld): "#nm"("fmt")\n", (long)td->td_proc->p_pid -#define LMSG(fmt) "linux(%ld): "fmt"\n", (long)td->td_proc->p_pid +#define ARGS(nm, fmt) "linux(%ld/%ld): "#nm"("fmt")\n", \ + (long)td->td_proc->p_pid, (long)td->td_tid +#define LMSG(fmt) "linux(%ld/%ld): "fmt"\n", \ + (long)td->td_proc->p_pid, (long)td->td_tid #define LINUX_DTRACE linuxulator #ifdef MALLOC_DECLARE From owner-svn-src-all@FreeBSD.ORG Sun May 24 14:33:21 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 547D0AC8; Sun, 24 May 2015 14:33:21 +0000 (UTC) Received: from svn.freebsd.org (svn.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 287D3166A; Sun, 24 May 2015 14:33:21 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OEXLCe023629; Sun, 24 May 2015 14:33:21 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OEXKIk023625; Sun, 24 May 2015 14:33:20 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241433.t4OEXKIk023625@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 14:33:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283370 - in head/sys: amd64/linux32 compat/linux i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 14:33:21 -0000 Author: dchagin Date: Sun May 24 14:33:19 2015 New Revision: 283370 URL: https://svnweb.freebsd.org/changeset/base/283370 Log: In preparation for switching linuxulator to the use the native 1:1 threads introduce linux_exit() stub instead of sys_exit() call (which terminates process). In the new linuxulator exit() system call terminates the calling thread (not a whole process). Differential Revision: https://reviews.freebsd.org/D1027 Reviewed by: trasz Modified: head/sys/amd64/linux32/syscalls.master head/sys/compat/linux/linux_fork.c head/sys/i386/linux/syscalls.master Modified: head/sys/amd64/linux32/syscalls.master ============================================================================== --- head/sys/amd64/linux32/syscalls.master Sun May 24 14:29:35 2015 (r283369) +++ head/sys/amd64/linux32/syscalls.master Sun May 24 14:33:19 2015 (r283370) @@ -38,8 +38,7 @@ ; #ifdef's, etc. may be included, and are copied to the output files. 0 AUE_NULL UNIMPL setup -1 AUE_EXIT NOPROTO { void sys_exit(int rval); } exit \ - sys_exit_args void +1 AUE_EXIT STD { void linux_exit(int rval); } 2 AUE_FORK STD { int linux_fork(void); } 3 AUE_NULL NOPROTO { int read(int fd, char *buf, \ u_int nbyte); } Modified: head/sys/compat/linux/linux_fork.c ============================================================================== --- head/sys/compat/linux/linux_fork.c Sun May 24 14:29:35 2015 (r283369) +++ head/sys/compat/linux/linux_fork.c Sun May 24 14:33:19 2015 (r283370) @@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #ifdef COMPAT_LINUX32 #include @@ -297,3 +298,16 @@ linux_clone(struct thread *td, struct li return (0); } + +int +linux_exit(struct thread *td, struct linux_exit_args *args) +{ + +#ifdef DEBUG + if (ldebug(exit)) + printf(ARGS(exit, "%d"), args->rval); +#endif + + exit1(td, W_EXITCODE(args->rval, 0)); + /* NOTREACHED */ +} Modified: head/sys/i386/linux/syscalls.master ============================================================================== --- head/sys/i386/linux/syscalls.master Sun May 24 14:29:35 2015 (r283369) +++ head/sys/i386/linux/syscalls.master Sun May 24 14:33:19 2015 (r283370) @@ -37,8 +37,7 @@ ; #ifdef's, etc. may be included, and are copied to the output files. 0 AUE_NULL UNIMPL setup -1 AUE_EXIT NOPROTO { void sys_exit(int rval); } exit \ - sys_exit_args void +1 AUE_EXIT STD { void linux_exit(int rval); } 2 AUE_FORK STD { int linux_fork(void); } 3 AUE_NULL NOPROTO { int read(int fd, char *buf, \ u_int nbyte); } From owner-svn-src-all@FreeBSD.ORG Sun May 24 14:34:49 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B417DC2C; Sun, 24 May 2015 14:34:49 +0000 (UTC) Received: from svn.freebsd.org (svn.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 96863167A; Sun, 24 May 2015 14:34:49 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OEYncw023878; Sun, 24 May 2015 14:34:49 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OEYkr0023857; Sun, 24 May 2015 14:34:46 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241434.t4OEYkr0023857@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 14:34:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283371 - in head/sys: amd64/linux32 i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 14:34:49 -0000 Author: dchagin Date: Sun May 24 14:34:46 2015 New Revision: 283371 URL: https://svnweb.freebsd.org/changeset/base/283371 Log: Regen for r283370. Modified: head/sys/amd64/linux32/linux32_proto.h head/sys/amd64/linux32/linux32_syscall.h head/sys/amd64/linux32/linux32_syscalls.c head/sys/amd64/linux32/linux32_sysent.c head/sys/amd64/linux32/linux32_systrace_args.c head/sys/i386/linux/linux_proto.h head/sys/i386/linux/linux_syscall.h head/sys/i386/linux/linux_syscalls.c head/sys/i386/linux/linux_sysent.c head/sys/i386/linux/linux_systrace_args.c Modified: head/sys/amd64/linux32/linux32_proto.h ============================================================================== --- head/sys/amd64/linux32/linux32_proto.h Sun May 24 14:33:19 2015 (r283370) +++ head/sys/amd64/linux32/linux32_proto.h Sun May 24 14:34:46 2015 (r283371) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 276508 2015-01-01 18:37:03Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283370 2015-05-24 14:33:19Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -35,6 +35,9 @@ struct thread; #endif #define nosys linux_nosys +struct linux_exit_args { + char rval_l_[PADL_(int)]; int rval; char rval_r_[PADR_(int)]; +}; struct linux_fork_args { register_t dummy; }; @@ -1105,6 +1108,7 @@ struct linux_process_vm_writev_args { register_t dummy; }; #define nosys linux_nosys +int linux_exit(struct thread *, struct linux_exit_args *); int linux_fork(struct thread *, struct linux_fork_args *); int linux_open(struct thread *, struct linux_open_args *); int linux_waitpid(struct thread *, struct linux_waitpid_args *); @@ -1407,6 +1411,7 @@ int linux_process_vm_writev(struct threa #endif /* COMPAT_FREEBSD7 */ +#define LINUX_SYS_AUE_linux_exit AUE_EXIT #define LINUX_SYS_AUE_linux_fork AUE_FORK #define LINUX_SYS_AUE_linux_open AUE_OPEN_RWTC #define LINUX_SYS_AUE_linux_waitpid AUE_WAIT4 Modified: head/sys/amd64/linux32/linux32_syscall.h ============================================================================== --- head/sys/amd64/linux32/linux32_syscall.h Sun May 24 14:33:19 2015 (r283370) +++ head/sys/amd64/linux32/linux32_syscall.h Sun May 24 14:34:46 2015 (r283371) @@ -3,10 +3,10 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 276508 2015-01-01 18:37:03Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283370 2015-05-24 14:33:19Z dchagin */ -#define LINUX_SYS_exit 1 +#define LINUX_SYS_linux_exit 1 #define LINUX_SYS_linux_fork 2 #define LINUX_SYS_read 3 #define LINUX_SYS_write 4 Modified: head/sys/amd64/linux32/linux32_syscalls.c ============================================================================== --- head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 14:33:19 2015 (r283370) +++ head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 14:34:46 2015 (r283371) @@ -3,13 +3,13 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 276508 2015-01-01 18:37:03Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283370 2015-05-24 14:33:19Z dchagin */ const char *linux_syscallnames[] = { #define nosys linux_nosys "#0", /* 0 = setup */ - "exit", /* 1 = exit */ + "linux_exit", /* 1 = linux_exit */ "linux_fork", /* 2 = linux_fork */ "read", /* 3 = read */ "write", /* 4 = write */ Modified: head/sys/amd64/linux32/linux32_sysent.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysent.c Sun May 24 14:33:19 2015 (r283370) +++ head/sys/amd64/linux32/linux32_sysent.c Sun May 24 14:34:46 2015 (r283371) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 276508 2015-01-01 18:37:03Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283370 2015-05-24 14:33:19Z dchagin */ #include "opt_compat.h" @@ -20,7 +20,7 @@ struct sysent linux_sysent[] = { #define nosys linux_nosys { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 0 = setup */ - { AS(sys_exit_args), (sy_call_t *)sys_sys_exit, AUE_EXIT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 1 = exit */ + { AS(linux_exit_args), (sy_call_t *)linux_exit, AUE_EXIT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 1 = linux_exit */ { 0, (sy_call_t *)linux_fork, AUE_FORK, NULL, 0, 0, 0, SY_THR_STATIC }, /* 2 = linux_fork */ { AS(read_args), (sy_call_t *)sys_read, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 3 = read */ { AS(write_args), (sy_call_t *)sys_write, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 4 = write */ Modified: head/sys/amd64/linux32/linux32_systrace_args.c ============================================================================== --- head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 14:33:19 2015 (r283370) +++ head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 14:34:46 2015 (r283371) @@ -12,9 +12,9 @@ systrace_args(int sysnum, void *params, int64_t *iarg = (int64_t *) uarg; switch (sysnum) { #define nosys linux_nosys - /* sys_exit */ + /* linux_exit */ case 1: { - struct sys_exit_args *p = params; + struct linux_exit_args *p = params; iarg[0] = p->rval; /* int */ *n_args = 1; break; @@ -2287,7 +2287,7 @@ systrace_entry_setargdesc(int sysnum, in const char *p = NULL; switch (sysnum) { #define nosys linux_nosys - /* sys_exit */ + /* linux_exit */ case 1: switch(ndx) { case 0: @@ -5502,7 +5502,7 @@ systrace_return_setargdesc(int sysnum, i const char *p = NULL; switch (sysnum) { #define nosys linux_nosys - /* sys_exit */ + /* linux_exit */ case 1: if (ndx == 0 || ndx == 1) p = "void"; Modified: head/sys/i386/linux/linux_proto.h ============================================================================== --- head/sys/i386/linux/linux_proto.h Sun May 24 14:33:19 2015 (r283370) +++ head/sys/i386/linux/linux_proto.h Sun May 24 14:34:46 2015 (r283371) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 276509 2015-01-01 18:41:34Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283370 2015-05-24 14:33:19Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -35,6 +35,9 @@ struct thread; #endif #define nosys linux_nosys +struct linux_exit_args { + char rval_l_[PADL_(int)]; int rval; char rval_r_[PADR_(int)]; +}; struct linux_fork_args { register_t dummy; }; @@ -1119,6 +1122,7 @@ struct linux_process_vm_writev_args { register_t dummy; }; #define nosys linux_nosys +int linux_exit(struct thread *, struct linux_exit_args *); int linux_fork(struct thread *, struct linux_fork_args *); int linux_open(struct thread *, struct linux_open_args *); int linux_waitpid(struct thread *, struct linux_waitpid_args *); @@ -1422,6 +1426,7 @@ int linux_process_vm_writev(struct threa #endif /* COMPAT_FREEBSD7 */ +#define LINUX_SYS_AUE_linux_exit AUE_EXIT #define LINUX_SYS_AUE_linux_fork AUE_FORK #define LINUX_SYS_AUE_linux_open AUE_OPEN_RWTC #define LINUX_SYS_AUE_linux_waitpid AUE_WAIT4 Modified: head/sys/i386/linux/linux_syscall.h ============================================================================== --- head/sys/i386/linux/linux_syscall.h Sun May 24 14:33:19 2015 (r283370) +++ head/sys/i386/linux/linux_syscall.h Sun May 24 14:34:46 2015 (r283371) @@ -3,10 +3,10 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 276509 2015-01-01 18:41:34Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283370 2015-05-24 14:33:19Z dchagin */ -#define LINUX_SYS_exit 1 +#define LINUX_SYS_linux_exit 1 #define LINUX_SYS_linux_fork 2 #define LINUX_SYS_read 3 #define LINUX_SYS_write 4 Modified: head/sys/i386/linux/linux_syscalls.c ============================================================================== --- head/sys/i386/linux/linux_syscalls.c Sun May 24 14:33:19 2015 (r283370) +++ head/sys/i386/linux/linux_syscalls.c Sun May 24 14:34:46 2015 (r283371) @@ -3,13 +3,13 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 276509 2015-01-01 18:41:34Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283370 2015-05-24 14:33:19Z dchagin */ const char *linux_syscallnames[] = { #define nosys linux_nosys "#0", /* 0 = setup */ - "exit", /* 1 = exit */ + "linux_exit", /* 1 = linux_exit */ "linux_fork", /* 2 = linux_fork */ "read", /* 3 = read */ "write", /* 4 = write */ Modified: head/sys/i386/linux/linux_sysent.c ============================================================================== --- head/sys/i386/linux/linux_sysent.c Sun May 24 14:33:19 2015 (r283370) +++ head/sys/i386/linux/linux_sysent.c Sun May 24 14:34:46 2015 (r283371) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 276509 2015-01-01 18:41:34Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283370 2015-05-24 14:33:19Z dchagin */ #include @@ -19,7 +19,7 @@ struct sysent linux_sysent[] = { #define nosys linux_nosys { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 0 = setup */ - { AS(sys_exit_args), (sy_call_t *)sys_sys_exit, AUE_EXIT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 1 = exit */ + { AS(linux_exit_args), (sy_call_t *)linux_exit, AUE_EXIT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 1 = linux_exit */ { 0, (sy_call_t *)linux_fork, AUE_FORK, NULL, 0, 0, 0, SY_THR_STATIC }, /* 2 = linux_fork */ { AS(read_args), (sy_call_t *)sys_read, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 3 = read */ { AS(write_args), (sy_call_t *)sys_write, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 4 = write */ Modified: head/sys/i386/linux/linux_systrace_args.c ============================================================================== --- head/sys/i386/linux/linux_systrace_args.c Sun May 24 14:33:19 2015 (r283370) +++ head/sys/i386/linux/linux_systrace_args.c Sun May 24 14:34:46 2015 (r283371) @@ -12,9 +12,9 @@ systrace_args(int sysnum, void *params, int64_t *iarg = (int64_t *) uarg; switch (sysnum) { #define nosys linux_nosys - /* sys_exit */ + /* linux_exit */ case 1: { - struct sys_exit_args *p = params; + struct linux_exit_args *p = params; iarg[0] = p->rval; /* int */ *n_args = 1; break; @@ -2363,7 +2363,7 @@ systrace_entry_setargdesc(int sysnum, in const char *p = NULL; switch (sysnum) { #define nosys linux_nosys - /* sys_exit */ + /* linux_exit */ case 1: switch(ndx) { case 0: @@ -5733,7 +5733,7 @@ systrace_return_setargdesc(int sysnum, i const char *p = NULL; switch (sysnum) { #define nosys linux_nosys - /* sys_exit */ + /* linux_exit */ case 1: if (ndx == 0 || ndx == 1) p = "void"; From owner-svn-src-all@FreeBSD.ORG Sun May 24 14:36:35 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0A5AFD7D; Sun, 24 May 2015 14:36:35 +0000 (UTC) Received: from svn.freebsd.org (svn.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 D11DD1687; Sun, 24 May 2015 14:36:34 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OEaYMH024210; Sun, 24 May 2015 14:36:34 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OEaYBf024207; Sun, 24 May 2015 14:36:34 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241436.t4OEaYBf024207@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 14:36:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283372 - in head/sys: kern sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 14:36:35 -0000 Author: dchagin Date: Sun May 24 14:36:33 2015 New Revision: 283372 URL: https://svnweb.freebsd.org/changeset/base/283372 Log: In preparation for switching linuxulator to the use the native 1:1 threads split sys_thr_exit() up into sys_thr_exit() and kern_thr_exit(). Move Where the second will be used in linux_exit() system call later. Differential Revision: https://reviews.freebsd.org/D1028 Reviewed by: trasz Modified: head/sys/kern/kern_thr.c head/sys/sys/syscallsubr.h Modified: head/sys/kern/kern_thr.c ============================================================================== --- head/sys/kern/kern_thr.c Sun May 24 14:34:46 2015 (r283371) +++ head/sys/kern/kern_thr.c Sun May 24 14:36:33 2015 (r283372) @@ -307,9 +307,6 @@ int sys_thr_exit(struct thread *td, struct thr_exit_args *uap) /* long *state */ { - struct proc *p; - - p = td->td_proc; /* Signal userland that it can free the stack. */ if ((void *)uap->state != NULL) { @@ -317,8 +314,17 @@ sys_thr_exit(struct thread *td, struct t kern_umtx_wake(td, uap->state, INT_MAX, 0); } - rw_wlock(&tidhash_lock); + return (kern_thr_exit(td)); +} + +int +kern_thr_exit(struct thread *td) +{ + struct proc *p; + p = td->td_proc; + + rw_wlock(&tidhash_lock); PROC_LOCK(p); if (p->p_numthreads != 1) { Modified: head/sys/sys/syscallsubr.h ============================================================================== --- head/sys/sys/syscallsubr.h Sun May 24 14:34:46 2015 (r283371) +++ head/sys/sys/syscallsubr.h Sun May 24 14:36:33 2015 (r283372) @@ -214,6 +214,7 @@ int kern_ktimer_settime(struct thread *t int kern_ktimer_gettime(struct thread *td, int timer_id, struct itimerspec *val); int kern_ktimer_getoverrun(struct thread *td, int timer_id); +int kern_thr_exit(struct thread *td); int kern_thr_new(struct thread *td, struct thr_param *param); int kern_thr_suspend(struct thread *td, struct timespec *tsp); int kern_truncate(struct thread *td, char *path, enum uio_seg pathseg, From owner-svn-src-all@FreeBSD.ORG Sun May 24 14:37:46 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C4A17EE0; Sun, 24 May 2015 14:37:46 +0000 (UTC) Received: from svn.freebsd.org (svn.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 98A76169B; Sun, 24 May 2015 14:37:46 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OEbkG0024407; Sun, 24 May 2015 14:37:46 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OEbkoM024405; Sun, 24 May 2015 14:37:46 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241437.t4OEbkoM024405@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 14:37:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283373 - in head/sys: kern sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 14:37:46 -0000 Author: dchagin Date: Sun May 24 14:37:45 2015 New Revision: 283373 URL: https://svnweb.freebsd.org/changeset/base/283373 Log: In preparation for switching linuxulator to the use the native 1:1 threads introduce kern_thr_alloc() which will be used later in the linux_clone(). Differential Revision: https://reviews.freebsd.org/D1029 Reviewed by: trasz Modified: head/sys/kern/kern_thr.c head/sys/sys/syscallsubr.h Modified: head/sys/kern/kern_thr.c ============================================================================== --- head/sys/kern/kern_thr.c Sun May 24 14:36:33 2015 (r283372) +++ head/sys/kern/kern_thr.c Sun May 24 14:37:45 2015 (r283373) @@ -162,12 +162,6 @@ create_thread(struct thread *td, mcontex p = td->td_proc; - /* Have race condition but it is cheap. */ - if (p->p_numthreads >= max_threads_per_proc) { - ++max_threads_hits; - return (EPROCLIM); - } - if (rtp != NULL) { switch(rtp->type) { case RTP_PRIO_REALTIME: @@ -197,11 +191,9 @@ create_thread(struct thread *td, mcontex #endif /* Initialize our td */ - newtd = thread_alloc(0); - if (newtd == NULL) { - error = ENOMEM; + error = kern_thr_alloc(p, 0, &newtd); + if (error) goto fail; - } cpu_set_upcall(newtd, td); @@ -566,3 +558,20 @@ sys_thr_set_name(struct thread *td, stru PROC_UNLOCK(p); return (error); } + +int +kern_thr_alloc(struct proc *p, int pages, struct thread **ntd) +{ + + /* Have race condition but it is cheap. */ + if (p->p_numthreads >= max_threads_per_proc) { + ++max_threads_hits; + return (EPROCLIM); + } + + *ntd = thread_alloc(pages); + if (*ntd == NULL) + return (ENOMEM); + + return (0); +} Modified: head/sys/sys/syscallsubr.h ============================================================================== --- head/sys/sys/syscallsubr.h Sun May 24 14:36:33 2015 (r283372) +++ head/sys/sys/syscallsubr.h Sun May 24 14:37:45 2015 (r283373) @@ -214,6 +214,7 @@ int kern_ktimer_settime(struct thread *t int kern_ktimer_gettime(struct thread *td, int timer_id, struct itimerspec *val); int kern_ktimer_getoverrun(struct thread *td, int timer_id); +int kern_thr_alloc(struct proc *, int pages, struct thread **); int kern_thr_exit(struct thread *td); int kern_thr_new(struct thread *td, struct thr_param *param); int kern_thr_suspend(struct thread *td, struct timespec *tsp); From owner-svn-src-all@FreeBSD.ORG Sun May 24 14:39:28 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2D472101; Sun, 24 May 2015 14:39:28 +0000 (UTC) Received: from svn.freebsd.org (svn.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 1B0BB16AD; Sun, 24 May 2015 14:39:28 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OEdRmX024684; Sun, 24 May 2015 14:39:27 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OEdRGD024680; Sun, 24 May 2015 14:39:27 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241439.t4OEdRGD024680@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 14:39:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283374 - in head/sys: amd64/linux32 compat/linux kern sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 14:39:28 -0000 Author: dchagin Date: Sun May 24 14:39:26 2015 New Revision: 283374 URL: https://svnweb.freebsd.org/changeset/base/283374 Log: In preparation for switching linuxulator to the use the native 1:1 threads refactor kern_sched_rr_get_interval() and sys_sched_rr_get_interval(). Add a kern_sched_rr_get_interval() counterpart which takes a targettd parameter to allow specify target thread directly by callee (new Linuxulator). Linuxulator temporarily uses first thread in proc. Move linux_sched_rr_get_interval() to the MI part. Differential Revision: https://reviews.freebsd.org/D1032 Reviewed by: trasz Modified: head/sys/amd64/linux32/linux32_machdep.c head/sys/compat/linux/linux_misc.c head/sys/kern/p1003_1b.c head/sys/sys/syscallsubr.h Modified: head/sys/amd64/linux32/linux32_machdep.c ============================================================================== --- head/sys/amd64/linux32/linux32_machdep.c Sun May 24 14:37:45 2015 (r283373) +++ head/sys/amd64/linux32/linux32_machdep.c Sun May 24 14:39:26 2015 (r283374) @@ -925,22 +925,6 @@ linux_getrusage(struct thread *td, struc } int -linux_sched_rr_get_interval(struct thread *td, - struct linux_sched_rr_get_interval_args *uap) -{ - struct timespec ts; - struct l_timespec ts32; - int error; - - error = kern_sched_rr_get_interval(td, uap->pid, &ts); - if (error != 0) - return (error); - ts32.tv_sec = ts.tv_sec; - ts32.tv_nsec = ts.tv_nsec; - return (copyout(&ts32, uap->interval, sizeof(ts32))); -} - -int linux_set_thread_area(struct thread *td, struct linux_set_thread_area_args *args) { Modified: head/sys/compat/linux/linux_misc.c ============================================================================== --- head/sys/compat/linux/linux_misc.c Sun May 24 14:37:45 2015 (r283373) +++ head/sys/compat/linux/linux_misc.c Sun May 24 14:39:26 2015 (r283374) @@ -1928,3 +1928,33 @@ linux_sched_setaffinity(struct thread *t return (sys_cpuset_setaffinity(td, &csa)); } + +int +linux_sched_rr_get_interval(struct thread *td, + struct linux_sched_rr_get_interval_args *uap) +{ + struct timespec ts; + struct l_timespec lts; + struct thread *tdt; + struct proc *p; + int error; + + if (uap->pid == 0) { + tdt = td; + p = tdt->td_proc; + PROC_LOCK(p); + } else { + p = pfind(uap->pid); + if (p == NULL) + return (ESRCH); + tdt = FIRST_THREAD_IN_PROC(p); + } + + error = kern_sched_rr_get_interval_td(td, tdt, &ts); + PROC_UNLOCK(p); + if (error != 0) + return (error); + lts.tv_sec = ts.tv_sec; + lts.tv_nsec = ts.tv_nsec; + return (copyout(<s, uap->interval, sizeof(lts))); +} Modified: head/sys/kern/p1003_1b.c ============================================================================== --- head/sys/kern/p1003_1b.c Sun May 24 14:37:45 2015 (r283373) +++ head/sys/kern/p1003_1b.c Sun May 24 14:39:26 2015 (r283374) @@ -296,13 +296,26 @@ kern_sched_rr_get_interval(struct thread targettd = FIRST_THREAD_IN_PROC(targetp); } - e = p_cansee(td, targetp); - if (e == 0) - e = ksched_rr_get_interval(ksched, targettd, ts); + e = kern_sched_rr_get_interval_td(td, targettd, ts); PROC_UNLOCK(targetp); return (e); } +int +kern_sched_rr_get_interval_td(struct thread *td, struct thread *targettd, + struct timespec *ts) +{ + struct proc *p; + int error; + + p = targettd->td_proc; + PROC_LOCK_ASSERT(p, MA_OWNED); + + error = p_cansee(td, p); + if (error == 0) + error = ksched_rr_get_interval(ksched, targettd, ts); + return (error); +} #endif static void Modified: head/sys/sys/syscallsubr.h ============================================================================== --- head/sys/sys/syscallsubr.h Sun May 24 14:37:45 2015 (r283373) +++ head/sys/sys/syscallsubr.h Sun May 24 14:39:26 2015 (r283374) @@ -171,6 +171,8 @@ int kern_rmdirat(struct thread *td, int enum uio_seg pathseg); int kern_sched_rr_get_interval(struct thread *td, pid_t pid, struct timespec *ts); +int kern_sched_rr_get_interval_td(struct thread *td, struct thread *targettd, + struct timespec *ts); int kern_semctl(struct thread *td, int semid, int semnum, int cmd, union semun *arg, register_t *rval); int kern_select(struct thread *td, int nd, fd_set *fd_in, fd_set *fd_ou, From owner-svn-src-all@FreeBSD.ORG Sun May 24 14:40:42 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B58AF260; Sun, 24 May 2015 14:40:42 +0000 (UTC) Received: from svn.freebsd.org (svn.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 A3F4416BA; Sun, 24 May 2015 14:40:42 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OEeg6I026851; Sun, 24 May 2015 14:40:42 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OEegui026850; Sun, 24 May 2015 14:40:42 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241440.t4OEegui026850@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 14:40:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283375 - head/sys/i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 14:40:42 -0000 Author: dchagin Date: Sun May 24 14:40:41 2015 New Revision: 283375 URL: https://svnweb.freebsd.org/changeset/base/283375 Log: In preparation for switching linuxulator to the use the native 1:1 threads use MI linux_sched_rr_get_interval() in i386. Differential Revision: https://reviews.freebsd.org/D1033 Reviewed by: trasz Modified: head/sys/i386/linux/syscalls.master Modified: head/sys/i386/linux/syscalls.master ============================================================================== --- head/sys/i386/linux/syscalls.master Sun May 24 14:39:26 2015 (r283374) +++ head/sys/i386/linux/syscalls.master Sun May 24 14:40:41 2015 (r283375) @@ -283,8 +283,8 @@ l_int policy); } 160 AUE_SCHED_GET_PRIORITY_MIN STD { int linux_sched_get_priority_min( \ l_int policy); } -161 AUE_SCHED_RR_GET_INTERVAL NOPROTO { int sched_rr_get_interval(l_pid_t pid, \ - struct l_timespec *interval); } +161 AUE_SCHED_RR_GET_INTERVAL STD { int linux_sched_rr_get_interval( \ + l_pid_t pid, struct l_timespec *interval); } 162 AUE_NULL STD { int linux_nanosleep( \ const struct l_timespec *rqtp, \ struct l_timespec *rmtp); } From owner-svn-src-all@FreeBSD.ORG Sun May 24 14:43:08 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4C3273E3; Sun, 24 May 2015 14:43:08 +0000 (UTC) Received: from svn.freebsd.org (svn.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 2D0471767; Sun, 24 May 2015 14:43:08 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OEh83J028846; Sun, 24 May 2015 14:43:08 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OEh6tk028836; Sun, 24 May 2015 14:43:06 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241443.t4OEh6tk028836@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 14:43:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283376 - head/sys/i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 14:43:08 -0000 Author: dchagin Date: Sun May 24 14:43:06 2015 New Revision: 283376 URL: https://svnweb.freebsd.org/changeset/base/283376 Log: Regen for r283375. Modified: head/sys/i386/linux/linux_proto.h head/sys/i386/linux/linux_syscall.h head/sys/i386/linux/linux_syscalls.c head/sys/i386/linux/linux_sysent.c head/sys/i386/linux/linux_systrace_args.c Modified: head/sys/i386/linux/linux_proto.h ============================================================================== --- head/sys/i386/linux/linux_proto.h Sun May 24 14:40:41 2015 (r283375) +++ head/sys/i386/linux/linux_proto.h Sun May 24 14:43:06 2015 (r283376) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283370 2015-05-24 14:33:19Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283375 2015-05-24 14:40:41Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -490,6 +490,10 @@ struct linux_sched_get_priority_max_args struct linux_sched_get_priority_min_args { char policy_l_[PADL_(l_int)]; l_int policy; char policy_r_[PADR_(l_int)]; }; +struct linux_sched_rr_get_interval_args { + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; + char interval_l_[PADL_(struct l_timespec *)]; struct l_timespec * interval; char interval_r_[PADR_(struct l_timespec *)]; +}; struct linux_nanosleep_args { char rqtp_l_[PADL_(const struct l_timespec *)]; const struct l_timespec * rqtp; char rqtp_r_[PADR_(const struct l_timespec *)]; char rmtp_l_[PADL_(struct l_timespec *)]; struct l_timespec * rmtp; char rmtp_r_[PADR_(struct l_timespec *)]; @@ -1238,6 +1242,7 @@ int linux_sched_setscheduler(struct thre int linux_sched_getscheduler(struct thread *, struct linux_sched_getscheduler_args *); int linux_sched_get_priority_max(struct thread *, struct linux_sched_get_priority_max_args *); int linux_sched_get_priority_min(struct thread *, struct linux_sched_get_priority_min_args *); +int linux_sched_rr_get_interval(struct thread *, struct linux_sched_rr_get_interval_args *); int linux_nanosleep(struct thread *, struct linux_nanosleep_args *); int linux_mremap(struct thread *, struct linux_mremap_args *); int linux_setresuid16(struct thread *, struct linux_setresuid16_args *); @@ -1542,6 +1547,7 @@ int linux_process_vm_writev(struct threa #define LINUX_SYS_AUE_linux_sched_getscheduler AUE_SCHED_GETSCHEDULER #define LINUX_SYS_AUE_linux_sched_get_priority_max AUE_SCHED_GET_PRIORITY_MAX #define LINUX_SYS_AUE_linux_sched_get_priority_min AUE_SCHED_GET_PRIORITY_MIN +#define LINUX_SYS_AUE_linux_sched_rr_get_interval AUE_SCHED_RR_GET_INTERVAL #define LINUX_SYS_AUE_linux_nanosleep AUE_NULL #define LINUX_SYS_AUE_linux_mremap AUE_NULL #define LINUX_SYS_AUE_linux_setresuid16 AUE_SETRESUID Modified: head/sys/i386/linux/linux_syscall.h ============================================================================== --- head/sys/i386/linux/linux_syscall.h Sun May 24 14:40:41 2015 (r283375) +++ head/sys/i386/linux/linux_syscall.h Sun May 24 14:43:06 2015 (r283376) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283370 2015-05-24 14:33:19Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283375 2015-05-24 14:40:41Z dchagin */ #define LINUX_SYS_linux_exit 1 @@ -155,7 +155,7 @@ #define LINUX_SYS_sched_yield 158 #define LINUX_SYS_linux_sched_get_priority_max 159 #define LINUX_SYS_linux_sched_get_priority_min 160 -#define LINUX_SYS_sched_rr_get_interval 161 +#define LINUX_SYS_linux_sched_rr_get_interval 161 #define LINUX_SYS_linux_nanosleep 162 #define LINUX_SYS_linux_mremap 163 #define LINUX_SYS_linux_setresuid16 164 Modified: head/sys/i386/linux/linux_syscalls.c ============================================================================== --- head/sys/i386/linux/linux_syscalls.c Sun May 24 14:40:41 2015 (r283375) +++ head/sys/i386/linux/linux_syscalls.c Sun May 24 14:43:06 2015 (r283376) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283370 2015-05-24 14:33:19Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283375 2015-05-24 14:40:41Z dchagin */ const char *linux_syscallnames[] = { @@ -169,7 +169,7 @@ const char *linux_syscallnames[] = { "sched_yield", /* 158 = sched_yield */ "linux_sched_get_priority_max", /* 159 = linux_sched_get_priority_max */ "linux_sched_get_priority_min", /* 160 = linux_sched_get_priority_min */ - "sched_rr_get_interval", /* 161 = sched_rr_get_interval */ + "linux_sched_rr_get_interval", /* 161 = linux_sched_rr_get_interval */ "linux_nanosleep", /* 162 = linux_nanosleep */ "linux_mremap", /* 163 = linux_mremap */ "linux_setresuid16", /* 164 = linux_setresuid16 */ Modified: head/sys/i386/linux/linux_sysent.c ============================================================================== --- head/sys/i386/linux/linux_sysent.c Sun May 24 14:40:41 2015 (r283375) +++ head/sys/i386/linux/linux_sysent.c Sun May 24 14:43:06 2015 (r283376) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283370 2015-05-24 14:33:19Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283375 2015-05-24 14:40:41Z dchagin */ #include @@ -179,7 +179,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)sys_sched_yield, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 158 = sched_yield */ { AS(linux_sched_get_priority_max_args), (sy_call_t *)linux_sched_get_priority_max, AUE_SCHED_GET_PRIORITY_MAX, NULL, 0, 0, 0, SY_THR_STATIC }, /* 159 = linux_sched_get_priority_max */ { AS(linux_sched_get_priority_min_args), (sy_call_t *)linux_sched_get_priority_min, AUE_SCHED_GET_PRIORITY_MIN, NULL, 0, 0, 0, SY_THR_STATIC }, /* 160 = linux_sched_get_priority_min */ - { AS(sched_rr_get_interval_args), (sy_call_t *)sys_sched_rr_get_interval, AUE_SCHED_RR_GET_INTERVAL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 161 = sched_rr_get_interval */ + { AS(linux_sched_rr_get_interval_args), (sy_call_t *)linux_sched_rr_get_interval, AUE_SCHED_RR_GET_INTERVAL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 161 = linux_sched_rr_get_interval */ { AS(linux_nanosleep_args), (sy_call_t *)linux_nanosleep, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 162 = linux_nanosleep */ { AS(linux_mremap_args), (sy_call_t *)linux_mremap, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 163 = linux_mremap */ { AS(linux_setresuid16_args), (sy_call_t *)linux_setresuid16, AUE_SETRESUID, NULL, 0, 0, 0, SY_THR_STATIC }, /* 164 = linux_setresuid16 */ Modified: head/sys/i386/linux/linux_systrace_args.c ============================================================================== --- head/sys/i386/linux/linux_systrace_args.c Sun May 24 14:40:41 2015 (r283375) +++ head/sys/i386/linux/linux_systrace_args.c Sun May 24 14:43:06 2015 (r283376) @@ -1132,9 +1132,9 @@ systrace_args(int sysnum, void *params, *n_args = 1; break; } - /* sched_rr_get_interval */ + /* linux_sched_rr_get_interval */ case 161: { - struct sched_rr_get_interval_args *p = params; + struct linux_sched_rr_get_interval_args *p = params; iarg[0] = p->pid; /* l_pid_t */ uarg[1] = (intptr_t) p->interval; /* struct l_timespec * */ *n_args = 2; @@ -4057,7 +4057,7 @@ systrace_entry_setargdesc(int sysnum, in break; }; break; - /* sched_rr_get_interval */ + /* linux_sched_rr_get_interval */ case 161: switch(ndx) { case 0: @@ -6397,7 +6397,7 @@ systrace_return_setargdesc(int sysnum, i if (ndx == 0 || ndx == 1) p = "int"; break; - /* sched_rr_get_interval */ + /* linux_sched_rr_get_interval */ case 161: if (ndx == 0 || ndx == 1) p = "int"; From owner-svn-src-all@FreeBSD.ORG Sun May 24 14:44:08 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 14E18532; Sun, 24 May 2015 14:44:08 +0000 (UTC) Received: from svn.freebsd.org (svn.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 E9BE71771; Sun, 24 May 2015 14:44:07 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OEi71g029042; Sun, 24 May 2015 14:44:07 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OEi7Ic029040; Sun, 24 May 2015 14:44:07 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241444.t4OEi7Ic029040@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 14:44:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283377 - in head/sys: kern sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 14:44:08 -0000 Author: dchagin Date: Sun May 24 14:44:06 2015 New Revision: 283377 URL: https://svnweb.freebsd.org/changeset/base/283377 Log: In preparation for switching linuxulator to the use the native 1:1 threads split sys_sched_getparam(), sys_sched_setparam(), sys_sched_getscheduler(), sys_sched_setscheduler() to their kern_* counterparts and add targettd parameter to allow specify the target thread directly by callee. Differential Revision: https://reviews.freebsd.org/D1034 Reviewed by: trasz Modified: head/sys/kern/p1003_1b.c head/sys/sys/syscallsubr.h Modified: head/sys/kern/p1003_1b.c ============================================================================== --- head/sys/kern/p1003_1b.c Sun May 24 14:43:06 2015 (r283376) +++ head/sys/kern/p1003_1b.c Sun May 24 14:44:06 2015 (r283377) @@ -130,16 +130,29 @@ sys_sched_setparam(struct thread *td, st targettd = FIRST_THREAD_IN_PROC(targetp); } - e = p_cansched(td, targetp); - if (e == 0) { - e = ksched_setparam(ksched, targettd, - (const struct sched_param *)&sched_param); - } + e = kern_sched_setparam(td, targettd, &sched_param); PROC_UNLOCK(targetp); return (e); } int +kern_sched_setparam(struct thread *td, struct thread *targettd, + struct sched_param *param) +{ + struct proc *targetp; + int error; + + targetp = targettd->td_proc; + PROC_LOCK_ASSERT(targetp, MA_OWNED); + + error = p_cansched(td, targetp); + if (error == 0) + error = ksched_setparam(ksched, targettd, + (const struct sched_param *)param); + return (error); +} + +int sys_sched_getparam(struct thread *td, struct sched_getparam_args *uap) { int e; @@ -159,10 +172,7 @@ sys_sched_getparam(struct thread *td, st targettd = FIRST_THREAD_IN_PROC(targetp); } - e = p_cansee(td, targetp); - if (e == 0) { - e = ksched_getparam(ksched, targettd, &sched_param); - } + e = kern_sched_getparam(td, targettd, &sched_param); PROC_UNLOCK(targetp); if (e == 0) e = copyout(&sched_param, uap->param, sizeof(sched_param)); @@ -170,6 +180,22 @@ sys_sched_getparam(struct thread *td, st } int +kern_sched_getparam(struct thread *td, struct thread *targettd, + struct sched_param *param) +{ + struct proc *targetp; + int error; + + targetp = targettd->td_proc; + PROC_LOCK_ASSERT(targetp, MA_OWNED); + + error = p_cansee(td, targetp); + if (error == 0) + error = ksched_getparam(ksched, targettd, param); + return (error); +} + +int sys_sched_setscheduler(struct thread *td, struct sched_setscheduler_args *uap) { int e; @@ -177,11 +203,6 @@ sys_sched_setscheduler(struct thread *td struct thread *targettd; struct proc *targetp; - /* Don't allow non root user to set a scheduler policy. */ - e = priv_check(td, PRIV_SCHED_SET); - if (e) - return (e); - e = copyin(uap->param, &sched_param, sizeof(sched_param)); if (e) return (e); @@ -197,16 +218,35 @@ sys_sched_setscheduler(struct thread *td targettd = FIRST_THREAD_IN_PROC(targetp); } - e = p_cansched(td, targetp); - if (e == 0) { - e = ksched_setscheduler(ksched, targettd, - uap->policy, (const struct sched_param *)&sched_param); - } + e = kern_sched_setscheduler(td, targettd, uap->policy, + &sched_param); PROC_UNLOCK(targetp); return (e); } int +kern_sched_setscheduler(struct thread *td, struct thread *targettd, + int policy, struct sched_param *param) +{ + struct proc *targetp; + int error; + + targetp = targettd->td_proc; + PROC_LOCK_ASSERT(targetp, MA_OWNED); + + /* Don't allow non root user to set a scheduler policy. */ + error = priv_check(td, PRIV_SCHED_SET); + if (error) + return (error); + + error = p_cansched(td, targetp); + if (error == 0) + error = ksched_setscheduler(ksched, targettd, policy, + (const struct sched_param *)param); + return (error); +} + +int sys_sched_getscheduler(struct thread *td, struct sched_getscheduler_args *uap) { int e, policy; @@ -224,17 +264,31 @@ sys_sched_getscheduler(struct thread *td targettd = FIRST_THREAD_IN_PROC(targetp); } - e = p_cansee(td, targetp); - if (e == 0) { - e = ksched_getscheduler(ksched, targettd, &policy); - td->td_retval[0] = policy; - } + e = kern_sched_getscheduler(td, targettd, &policy); PROC_UNLOCK(targetp); + if (e == 0) + td->td_retval[0] = policy; return (e); } int +kern_sched_getscheduler(struct thread *td, struct thread *targettd, + int *policy) +{ + struct proc *targetp; + int error; + + targetp = targettd->td_proc; + PROC_LOCK_ASSERT(targetp, MA_OWNED); + + error = p_cansee(td, targetp); + if (error == 0) + error = ksched_getscheduler(ksched, targettd, policy); + return (error); +} + +int sys_sched_yield(struct thread *td, struct sched_yield_args *uap) { Modified: head/sys/sys/syscallsubr.h ============================================================================== --- head/sys/sys/syscallsubr.h Sun May 24 14:43:06 2015 (r283376) +++ head/sys/sys/syscallsubr.h Sun May 24 14:44:06 2015 (r283377) @@ -55,6 +55,7 @@ struct sendfile_args; struct sockaddr; struct stat; struct thr_param; +struct sched_param; struct __wrusage; int kern___getcwd(struct thread *td, char *buf, enum uio_seg bufseg, @@ -169,6 +170,14 @@ int kern_renameat(struct thread *td, int char *new, enum uio_seg pathseg); int kern_rmdirat(struct thread *td, int fd, char *path, enum uio_seg pathseg); +int kern_sched_getparam(struct thread *td, struct thread *targettd, + struct sched_param *param); +int kern_sched_getscheduler(struct thread *td, struct thread *targettd, + int *policy); +int kern_sched_setparam(struct thread *td, struct thread *targettd, + struct sched_param *param); +int kern_sched_setscheduler(struct thread *td, struct thread *targettd, + int policy, struct sched_param *param); int kern_sched_rr_get_interval(struct thread *td, pid_t pid, struct timespec *ts); int kern_sched_rr_get_interval_td(struct thread *td, struct thread *targettd, From owner-svn-src-all@FreeBSD.ORG Sun May 24 14:44:57 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id CE4BA686; Sun, 24 May 2015 14:44:57 +0000 (UTC) Received: from svn.freebsd.org (svn.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 BCC0C177E; Sun, 24 May 2015 14:44:57 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OEivPX029209; Sun, 24 May 2015 14:44:57 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OEiv78029208; Sun, 24 May 2015 14:44:57 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241444.t4OEiv78029208@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 14:44:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283378 - head/sys/amd64/linux32 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 14:44:57 -0000 Author: dchagin Date: Sun May 24 14:44:57 2015 New Revision: 283378 URL: https://svnweb.freebsd.org/changeset/base/283378 Log: Remove a now unused include. Differential Revision: https://reviews.freebsd.org/D1035 Reviewed by: trasz Modified: head/sys/amd64/linux32/linux32_machdep.c Modified: head/sys/amd64/linux32/linux32_machdep.c ============================================================================== --- head/sys/amd64/linux32/linux32_machdep.c Sun May 24 14:44:06 2015 (r283377) +++ head/sys/amd64/linux32/linux32_machdep.c Sun May 24 14:44:57 2015 (r283378) @@ -48,7 +48,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include From owner-svn-src-all@FreeBSD.ORG Sun May 24 14:45:59 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1B4447ED; Sun, 24 May 2015 14:45:59 +0000 (UTC) Received: from svn.freebsd.org (svn.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 09823178E; Sun, 24 May 2015 14:45:59 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OEjwId029446; Sun, 24 May 2015 14:45:58 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OEjwFW029435; Sun, 24 May 2015 14:45:58 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241445.t4OEjwFW029435@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 14:45:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283379 - in head/sys: amd64/linux32 compat/linux i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 14:45:59 -0000 Author: dchagin Date: Sun May 24 14:45:57 2015 New Revision: 283379 URL: https://svnweb.freebsd.org/changeset/base/283379 Log: Implement a Linux version of sched_getparam() && sched_setparam(). Temporarily use the first thread in proc. Differential Revision: https://reviews.freebsd.org/D1036 Reviewed by: trasz Modified: head/sys/amd64/linux32/syscalls.master head/sys/compat/linux/linux_misc.c head/sys/i386/linux/syscalls.master Modified: head/sys/amd64/linux32/syscalls.master ============================================================================== --- head/sys/amd64/linux32/syscalls.master Sun May 24 14:44:57 2015 (r283378) +++ head/sys/amd64/linux32/syscalls.master Sun May 24 14:45:57 2015 (r283379) @@ -267,10 +267,10 @@ 151 AUE_MUNLOCK NOPROTO { int munlock(const void *addr, size_t len); } 152 AUE_MLOCKALL NOPROTO { int mlockall(int how); } 153 AUE_MUNLOCKALL NOPROTO { int munlockall(void); } -154 AUE_SCHED_SETPARAM NOPROTO { int sched_setparam(pid_t pid, \ - const struct sched_param *param); } -155 AUE_SCHED_GETPARAM NOPROTO { int sched_getparam(pid_t pid, \ - struct sched_param *param); } +154 AUE_SCHED_SETPARAM STD { int linux_sched_setparam(l_pid_t pid, \ + struct l_sched_param *param); } +155 AUE_SCHED_GETPARAM STD { int linux_sched_getparam(l_pid_t pid, \ + struct l_sched_param *param); } 156 AUE_SCHED_SETSCHEDULER STD { int linux_sched_setscheduler( \ l_pid_t pid, l_int policy, \ struct l_sched_param *param); } Modified: head/sys/compat/linux/linux_misc.c ============================================================================== --- head/sys/compat/linux/linux_misc.c Sun May 24 14:44:57 2015 (r283378) +++ head/sys/compat/linux/linux_misc.c Sun May 24 14:45:57 2015 (r283379) @@ -1873,6 +1873,78 @@ linux_prctl(struct thread *td, struct li return (error); } +int +linux_sched_setparam(struct thread *td, + struct linux_sched_setparam_args *uap) +{ + struct sched_param sched_param; + struct thread *tdt; + struct proc *p; + int error; + +#ifdef DEBUG + if (ldebug(sched_setparam)) + printf(ARGS(sched_setparam, "%d, *"), uap->pid); +#endif + + error = copyin(uap->param, &sched_param, sizeof(sched_param)); + if (error) + return (error); + + if (uap->pid == 0) { + tdt = td; + p = tdt->td_proc; + PROC_LOCK(p); + } else { + p = pfind(uap->pid); + if (p == NULL) + return (ESRCH); + /* + * XXX. Scheduling parameters are in fact per-thread + * attributes in Linux. Temporarily use the first + * thread in proc. The same for get_param(). + */ + tdt = FIRST_THREAD_IN_PROC(p); + } + + error = kern_sched_setparam(td, tdt, &sched_param); + PROC_UNLOCK(p); + return (error); +} + +int +linux_sched_getparam(struct thread *td, + struct linux_sched_getparam_args *uap) +{ + struct sched_param sched_param; + struct thread *tdt; + struct proc *p; + int error; + +#ifdef DEBUG + if (ldebug(sched_getparam)) + printf(ARGS(sched_getparam, "%d, *"), uap->pid); +#endif + + if (uap->pid == 0) { + tdt = td; + p = tdt->td_proc; + PROC_LOCK(p); + } else { + p = pfind(uap->pid); + if (p == NULL) + return (ESRCH); + tdt = FIRST_THREAD_IN_PROC(p); + } + + error = kern_sched_getparam(td, tdt, &sched_param); + PROC_UNLOCK(p); + if (error == 0) + error = copyout(&sched_param, uap->param, + sizeof(sched_param)); + return (error); +} + /* * Get affinity of a process. */ Modified: head/sys/i386/linux/syscalls.master ============================================================================== --- head/sys/i386/linux/syscalls.master Sun May 24 14:44:57 2015 (r283378) +++ head/sys/i386/linux/syscalls.master Sun May 24 14:45:57 2015 (r283379) @@ -269,10 +269,10 @@ 151 AUE_MUNLOCK NOPROTO { int munlock(const void *addr, size_t len); } 152 AUE_MLOCKALL NOPROTO { int mlockall(int how); } 153 AUE_MUNLOCKALL NOPROTO { int munlockall(void); } -154 AUE_SCHED_SETPARAM NOPROTO { int sched_setparam(pid_t pid, \ - const struct sched_param *param); } -155 AUE_SCHED_GETPARAM NOPROTO { int sched_getparam(pid_t pid, \ - struct sched_param *param); } +154 AUE_SCHED_SETPARAM STD { int linux_sched_setparam(l_pid_t pid, \ + struct l_sched_param *param); } +155 AUE_SCHED_GETPARAM STD { int linux_sched_getparam(l_pid_t pid, \ + struct l_sched_param *param); } 156 AUE_SCHED_SETSCHEDULER STD { int linux_sched_setscheduler( \ l_pid_t pid, l_int policy, \ struct l_sched_param *param); } From owner-svn-src-all@FreeBSD.ORG Sun May 24 14:47:03 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 78525951; Sun, 24 May 2015 14:47:03 +0000 (UTC) Received: from svn.freebsd.org (svn.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 65A1817A3; Sun, 24 May 2015 14:47:03 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OEl3P6029676; Sun, 24 May 2015 14:47:03 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OEl0pd029660; Sun, 24 May 2015 14:47:00 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241447.t4OEl0pd029660@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 14:47:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283380 - in head/sys: amd64/linux32 i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 14:47:03 -0000 Author: dchagin Date: Sun May 24 14:47:00 2015 New Revision: 283380 URL: https://svnweb.freebsd.org/changeset/base/283380 Log: Regen for r283379. Modified: head/sys/amd64/linux32/linux32_proto.h head/sys/amd64/linux32/linux32_syscall.h head/sys/amd64/linux32/linux32_syscalls.c head/sys/amd64/linux32/linux32_sysent.c head/sys/amd64/linux32/linux32_systrace_args.c head/sys/i386/linux/linux_proto.h head/sys/i386/linux/linux_syscall.h head/sys/i386/linux/linux_syscalls.c head/sys/i386/linux/linux_sysent.c head/sys/i386/linux/linux_systrace_args.c Modified: head/sys/amd64/linux32/linux32_proto.h ============================================================================== --- head/sys/amd64/linux32/linux32_proto.h Sun May 24 14:45:57 2015 (r283379) +++ head/sys/amd64/linux32/linux32_proto.h Sun May 24 14:47:00 2015 (r283380) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283370 2015-05-24 14:33:19Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283379 2015-05-24 14:45:57Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -478,6 +478,14 @@ struct linux_fdatasync_args { struct linux_sysctl_args { char args_l_[PADL_(struct l___sysctl_args *)]; struct l___sysctl_args * args; char args_r_[PADR_(struct l___sysctl_args *)]; }; +struct linux_sched_setparam_args { + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; + char param_l_[PADL_(struct l_sched_param *)]; struct l_sched_param * param; char param_r_[PADR_(struct l_sched_param *)]; +}; +struct linux_sched_getparam_args { + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; + char param_l_[PADL_(struct l_sched_param *)]; struct l_sched_param * param; char param_r_[PADR_(struct l_sched_param *)]; +}; struct linux_sched_setscheduler_args { char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; char policy_l_[PADL_(l_int)]; l_int policy; char policy_r_[PADR_(l_int)]; @@ -1220,6 +1228,8 @@ int linux_writev(struct thread *, struct int linux_getsid(struct thread *, struct linux_getsid_args *); int linux_fdatasync(struct thread *, struct linux_fdatasync_args *); int linux_sysctl(struct thread *, struct linux_sysctl_args *); +int linux_sched_setparam(struct thread *, struct linux_sched_setparam_args *); +int linux_sched_getparam(struct thread *, struct linux_sched_getparam_args *); int linux_sched_setscheduler(struct thread *, struct linux_sched_setscheduler_args *); int linux_sched_getscheduler(struct thread *, struct linux_sched_getscheduler_args *); int linux_sched_get_priority_max(struct thread *, struct linux_sched_get_priority_max_args *); @@ -1523,6 +1533,8 @@ int linux_process_vm_writev(struct threa #define LINUX_SYS_AUE_linux_getsid AUE_GETSID #define LINUX_SYS_AUE_linux_fdatasync AUE_NULL #define LINUX_SYS_AUE_linux_sysctl AUE_SYSCTL +#define LINUX_SYS_AUE_linux_sched_setparam AUE_SCHED_SETPARAM +#define LINUX_SYS_AUE_linux_sched_getparam AUE_SCHED_GETPARAM #define LINUX_SYS_AUE_linux_sched_setscheduler AUE_SCHED_SETSCHEDULER #define LINUX_SYS_AUE_linux_sched_getscheduler AUE_SCHED_GETSCHEDULER #define LINUX_SYS_AUE_linux_sched_get_priority_max AUE_SCHED_GET_PRIORITY_MAX Modified: head/sys/amd64/linux32/linux32_syscall.h ============================================================================== --- head/sys/amd64/linux32/linux32_syscall.h Sun May 24 14:45:57 2015 (r283379) +++ head/sys/amd64/linux32/linux32_syscall.h Sun May 24 14:47:00 2015 (r283380) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283370 2015-05-24 14:33:19Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283379 2015-05-24 14:45:57Z dchagin */ #define LINUX_SYS_linux_exit 1 @@ -143,8 +143,8 @@ #define LINUX_SYS_munlock 151 #define LINUX_SYS_mlockall 152 #define LINUX_SYS_munlockall 153 -#define LINUX_SYS_sched_setparam 154 -#define LINUX_SYS_sched_getparam 155 +#define LINUX_SYS_linux_sched_setparam 154 +#define LINUX_SYS_linux_sched_getparam 155 #define LINUX_SYS_linux_sched_setscheduler 156 #define LINUX_SYS_linux_sched_getscheduler 157 #define LINUX_SYS_sched_yield 158 Modified: head/sys/amd64/linux32/linux32_syscalls.c ============================================================================== --- head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 14:45:57 2015 (r283379) +++ head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 14:47:00 2015 (r283380) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283370 2015-05-24 14:33:19Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283379 2015-05-24 14:45:57Z dchagin */ const char *linux_syscallnames[] = { @@ -162,8 +162,8 @@ const char *linux_syscallnames[] = { "munlock", /* 151 = munlock */ "mlockall", /* 152 = mlockall */ "munlockall", /* 153 = munlockall */ - "sched_setparam", /* 154 = sched_setparam */ - "sched_getparam", /* 155 = sched_getparam */ + "linux_sched_setparam", /* 154 = linux_sched_setparam */ + "linux_sched_getparam", /* 155 = linux_sched_getparam */ "linux_sched_setscheduler", /* 156 = linux_sched_setscheduler */ "linux_sched_getscheduler", /* 157 = linux_sched_getscheduler */ "sched_yield", /* 158 = sched_yield */ Modified: head/sys/amd64/linux32/linux32_sysent.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysent.c Sun May 24 14:45:57 2015 (r283379) +++ head/sys/amd64/linux32/linux32_sysent.c Sun May 24 14:47:00 2015 (r283380) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283370 2015-05-24 14:33:19Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283379 2015-05-24 14:45:57Z dchagin */ #include "opt_compat.h" @@ -173,8 +173,8 @@ struct sysent linux_sysent[] = { { AS(munlock_args), (sy_call_t *)sys_munlock, AUE_MUNLOCK, NULL, 0, 0, 0, SY_THR_STATIC }, /* 151 = munlock */ { AS(mlockall_args), (sy_call_t *)sys_mlockall, AUE_MLOCKALL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 152 = mlockall */ { 0, (sy_call_t *)sys_munlockall, AUE_MUNLOCKALL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 153 = munlockall */ - { AS(sched_setparam_args), (sy_call_t *)sys_sched_setparam, AUE_SCHED_SETPARAM, NULL, 0, 0, 0, SY_THR_STATIC }, /* 154 = sched_setparam */ - { AS(sched_getparam_args), (sy_call_t *)sys_sched_getparam, AUE_SCHED_GETPARAM, NULL, 0, 0, 0, SY_THR_STATIC }, /* 155 = sched_getparam */ + { AS(linux_sched_setparam_args), (sy_call_t *)linux_sched_setparam, AUE_SCHED_SETPARAM, NULL, 0, 0, 0, SY_THR_STATIC }, /* 154 = linux_sched_setparam */ + { AS(linux_sched_getparam_args), (sy_call_t *)linux_sched_getparam, AUE_SCHED_GETPARAM, NULL, 0, 0, 0, SY_THR_STATIC }, /* 155 = linux_sched_getparam */ { AS(linux_sched_setscheduler_args), (sy_call_t *)linux_sched_setscheduler, AUE_SCHED_SETSCHEDULER, NULL, 0, 0, 0, SY_THR_STATIC }, /* 156 = linux_sched_setscheduler */ { AS(linux_sched_getscheduler_args), (sy_call_t *)linux_sched_getscheduler, AUE_SCHED_GETSCHEDULER, NULL, 0, 0, 0, SY_THR_STATIC }, /* 157 = linux_sched_getscheduler */ { 0, (sy_call_t *)sys_sched_yield, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 158 = sched_yield */ Modified: head/sys/amd64/linux32/linux32_systrace_args.c ============================================================================== --- head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 14:45:57 2015 (r283379) +++ head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 14:47:00 2015 (r283380) @@ -1043,19 +1043,19 @@ systrace_args(int sysnum, void *params, *n_args = 0; break; } - /* sched_setparam */ + /* linux_sched_setparam */ case 154: { - struct sched_setparam_args *p = params; - iarg[0] = p->pid; /* pid_t */ - uarg[1] = (intptr_t) p->param; /* const struct sched_param * */ + struct linux_sched_setparam_args *p = params; + iarg[0] = p->pid; /* l_pid_t */ + uarg[1] = (intptr_t) p->param; /* struct l_sched_param * */ *n_args = 2; break; } - /* sched_getparam */ + /* linux_sched_getparam */ case 155: { - struct sched_getparam_args *p = params; - iarg[0] = p->pid; /* pid_t */ - uarg[1] = (intptr_t) p->param; /* struct sched_param * */ + struct linux_sched_getparam_args *p = params; + iarg[0] = p->pid; /* l_pid_t */ + uarg[1] = (intptr_t) p->param; /* struct l_sched_param * */ *n_args = 2; break; } @@ -3848,27 +3848,27 @@ systrace_entry_setargdesc(int sysnum, in /* munlockall */ case 153: break; - /* sched_setparam */ + /* linux_sched_setparam */ case 154: switch(ndx) { case 0: - p = "pid_t"; + p = "l_pid_t"; break; case 1: - p = "const struct sched_param *"; + p = "struct l_sched_param *"; break; default: break; }; break; - /* sched_getparam */ + /* linux_sched_getparam */ case 155: switch(ndx) { case 0: - p = "pid_t"; + p = "l_pid_t"; break; case 1: - p = "struct sched_param *"; + p = "struct l_sched_param *"; break; default: break; @@ -6112,12 +6112,12 @@ systrace_return_setargdesc(int sysnum, i break; /* munlockall */ case 153: - /* sched_setparam */ + /* linux_sched_setparam */ case 154: if (ndx == 0 || ndx == 1) p = "int"; break; - /* sched_getparam */ + /* linux_sched_getparam */ case 155: if (ndx == 0 || ndx == 1) p = "int"; Modified: head/sys/i386/linux/linux_proto.h ============================================================================== --- head/sys/i386/linux/linux_proto.h Sun May 24 14:45:57 2015 (r283379) +++ head/sys/i386/linux/linux_proto.h Sun May 24 14:47:00 2015 (r283380) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283375 2015-05-24 14:40:41Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283379 2015-05-24 14:45:57Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -476,6 +476,14 @@ struct linux_fdatasync_args { struct linux_sysctl_args { char args_l_[PADL_(struct l___sysctl_args *)]; struct l___sysctl_args * args; char args_r_[PADR_(struct l___sysctl_args *)]; }; +struct linux_sched_setparam_args { + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; + char param_l_[PADL_(struct l_sched_param *)]; struct l_sched_param * param; char param_r_[PADR_(struct l_sched_param *)]; +}; +struct linux_sched_getparam_args { + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; + char param_l_[PADL_(struct l_sched_param *)]; struct l_sched_param * param; char param_r_[PADR_(struct l_sched_param *)]; +}; struct linux_sched_setscheduler_args { char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; char policy_l_[PADL_(l_int)]; l_int policy; char policy_r_[PADR_(l_int)]; @@ -1238,6 +1246,8 @@ int linux_msync(struct thread *, struct int linux_getsid(struct thread *, struct linux_getsid_args *); int linux_fdatasync(struct thread *, struct linux_fdatasync_args *); int linux_sysctl(struct thread *, struct linux_sysctl_args *); +int linux_sched_setparam(struct thread *, struct linux_sched_setparam_args *); +int linux_sched_getparam(struct thread *, struct linux_sched_getparam_args *); int linux_sched_setscheduler(struct thread *, struct linux_sched_setscheduler_args *); int linux_sched_getscheduler(struct thread *, struct linux_sched_getscheduler_args *); int linux_sched_get_priority_max(struct thread *, struct linux_sched_get_priority_max_args *); @@ -1543,6 +1553,8 @@ int linux_process_vm_writev(struct threa #define LINUX_SYS_AUE_linux_getsid AUE_GETSID #define LINUX_SYS_AUE_linux_fdatasync AUE_NULL #define LINUX_SYS_AUE_linux_sysctl AUE_SYSCTL +#define LINUX_SYS_AUE_linux_sched_setparam AUE_SCHED_SETPARAM +#define LINUX_SYS_AUE_linux_sched_getparam AUE_SCHED_GETPARAM #define LINUX_SYS_AUE_linux_sched_setscheduler AUE_SCHED_SETSCHEDULER #define LINUX_SYS_AUE_linux_sched_getscheduler AUE_SCHED_GETSCHEDULER #define LINUX_SYS_AUE_linux_sched_get_priority_max AUE_SCHED_GET_PRIORITY_MAX Modified: head/sys/i386/linux/linux_syscall.h ============================================================================== --- head/sys/i386/linux/linux_syscall.h Sun May 24 14:45:57 2015 (r283379) +++ head/sys/i386/linux/linux_syscall.h Sun May 24 14:47:00 2015 (r283380) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283375 2015-05-24 14:40:41Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283379 2015-05-24 14:45:57Z dchagin */ #define LINUX_SYS_linux_exit 1 @@ -148,8 +148,8 @@ #define LINUX_SYS_munlock 151 #define LINUX_SYS_mlockall 152 #define LINUX_SYS_munlockall 153 -#define LINUX_SYS_sched_setparam 154 -#define LINUX_SYS_sched_getparam 155 +#define LINUX_SYS_linux_sched_setparam 154 +#define LINUX_SYS_linux_sched_getparam 155 #define LINUX_SYS_linux_sched_setscheduler 156 #define LINUX_SYS_linux_sched_getscheduler 157 #define LINUX_SYS_sched_yield 158 Modified: head/sys/i386/linux/linux_syscalls.c ============================================================================== --- head/sys/i386/linux/linux_syscalls.c Sun May 24 14:45:57 2015 (r283379) +++ head/sys/i386/linux/linux_syscalls.c Sun May 24 14:47:00 2015 (r283380) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283375 2015-05-24 14:40:41Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283379 2015-05-24 14:45:57Z dchagin */ const char *linux_syscallnames[] = { @@ -162,8 +162,8 @@ const char *linux_syscallnames[] = { "munlock", /* 151 = munlock */ "mlockall", /* 152 = mlockall */ "munlockall", /* 153 = munlockall */ - "sched_setparam", /* 154 = sched_setparam */ - "sched_getparam", /* 155 = sched_getparam */ + "linux_sched_setparam", /* 154 = linux_sched_setparam */ + "linux_sched_getparam", /* 155 = linux_sched_getparam */ "linux_sched_setscheduler", /* 156 = linux_sched_setscheduler */ "linux_sched_getscheduler", /* 157 = linux_sched_getscheduler */ "sched_yield", /* 158 = sched_yield */ Modified: head/sys/i386/linux/linux_sysent.c ============================================================================== --- head/sys/i386/linux/linux_sysent.c Sun May 24 14:45:57 2015 (r283379) +++ head/sys/i386/linux/linux_sysent.c Sun May 24 14:47:00 2015 (r283380) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283375 2015-05-24 14:40:41Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283379 2015-05-24 14:45:57Z dchagin */ #include @@ -172,8 +172,8 @@ struct sysent linux_sysent[] = { { AS(munlock_args), (sy_call_t *)sys_munlock, AUE_MUNLOCK, NULL, 0, 0, 0, SY_THR_STATIC }, /* 151 = munlock */ { AS(mlockall_args), (sy_call_t *)sys_mlockall, AUE_MLOCKALL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 152 = mlockall */ { 0, (sy_call_t *)sys_munlockall, AUE_MUNLOCKALL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 153 = munlockall */ - { AS(sched_setparam_args), (sy_call_t *)sys_sched_setparam, AUE_SCHED_SETPARAM, NULL, 0, 0, 0, SY_THR_STATIC }, /* 154 = sched_setparam */ - { AS(sched_getparam_args), (sy_call_t *)sys_sched_getparam, AUE_SCHED_GETPARAM, NULL, 0, 0, 0, SY_THR_STATIC }, /* 155 = sched_getparam */ + { AS(linux_sched_setparam_args), (sy_call_t *)linux_sched_setparam, AUE_SCHED_SETPARAM, NULL, 0, 0, 0, SY_THR_STATIC }, /* 154 = linux_sched_setparam */ + { AS(linux_sched_getparam_args), (sy_call_t *)linux_sched_getparam, AUE_SCHED_GETPARAM, NULL, 0, 0, 0, SY_THR_STATIC }, /* 155 = linux_sched_getparam */ { AS(linux_sched_setscheduler_args), (sy_call_t *)linux_sched_setscheduler, AUE_SCHED_SETSCHEDULER, NULL, 0, 0, 0, SY_THR_STATIC }, /* 156 = linux_sched_setscheduler */ { AS(linux_sched_getscheduler_args), (sy_call_t *)linux_sched_getscheduler, AUE_SCHED_GETSCHEDULER, NULL, 0, 0, 0, SY_THR_STATIC }, /* 157 = linux_sched_getscheduler */ { 0, (sy_call_t *)sys_sched_yield, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 158 = sched_yield */ Modified: head/sys/i386/linux/linux_systrace_args.c ============================================================================== --- head/sys/i386/linux/linux_systrace_args.c Sun May 24 14:45:57 2015 (r283379) +++ head/sys/i386/linux/linux_systrace_args.c Sun May 24 14:47:00 2015 (r283380) @@ -1081,19 +1081,19 @@ systrace_args(int sysnum, void *params, *n_args = 0; break; } - /* sched_setparam */ + /* linux_sched_setparam */ case 154: { - struct sched_setparam_args *p = params; - iarg[0] = p->pid; /* pid_t */ - uarg[1] = (intptr_t) p->param; /* const struct sched_param * */ + struct linux_sched_setparam_args *p = params; + iarg[0] = p->pid; /* l_pid_t */ + uarg[1] = (intptr_t) p->param; /* struct l_sched_param * */ *n_args = 2; break; } - /* sched_getparam */ + /* linux_sched_getparam */ case 155: { - struct sched_getparam_args *p = params; - iarg[0] = p->pid; /* pid_t */ - uarg[1] = (intptr_t) p->param; /* struct sched_param * */ + struct linux_sched_getparam_args *p = params; + iarg[0] = p->pid; /* l_pid_t */ + uarg[1] = (intptr_t) p->param; /* struct l_sched_param * */ *n_args = 2; break; } @@ -3982,27 +3982,27 @@ systrace_entry_setargdesc(int sysnum, in /* munlockall */ case 153: break; - /* sched_setparam */ + /* linux_sched_setparam */ case 154: switch(ndx) { case 0: - p = "pid_t"; + p = "l_pid_t"; break; case 1: - p = "const struct sched_param *"; + p = "struct l_sched_param *"; break; default: break; }; break; - /* sched_getparam */ + /* linux_sched_getparam */ case 155: switch(ndx) { case 0: - p = "pid_t"; + p = "l_pid_t"; break; case 1: - p = "struct sched_param *"; + p = "struct l_sched_param *"; break; default: break; @@ -6365,12 +6365,12 @@ systrace_return_setargdesc(int sysnum, i break; /* munlockall */ case 153: - /* sched_setparam */ + /* linux_sched_setparam */ case 154: if (ndx == 0 || ndx == 1) p = "int"; break; - /* sched_getparam */ + /* linux_sched_getparam */ case 155: if (ndx == 0 || ndx == 1) p = "int"; From owner-svn-src-all@FreeBSD.ORG Sun May 24 14:49:22 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C6173BAF; Sun, 24 May 2015 14:49:22 +0000 (UTC) Received: from svn.freebsd.org (svn.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 B47AF17C8; Sun, 24 May 2015 14:49:22 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OEnMsG030162; Sun, 24 May 2015 14:49:22 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OEnMDI030161; Sun, 24 May 2015 14:49:22 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241449.t4OEnMDI030161@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 14:49:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283381 - head/sys/sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 14:49:22 -0000 Author: dchagin Date: Sun May 24 14:49:21 2015 New Revision: 283381 URL: https://svnweb.freebsd.org/changeset/base/283381 Log: In preparation for switching linuxulator to the use the native 1:1 threads add per thread emulator state data. Differential Revision: https://reviews.freebsd.org/D1037 Reviewed by: trasz Modified: head/sys/sys/proc.h Modified: head/sys/sys/proc.h ============================================================================== --- head/sys/sys/proc.h Sun May 24 14:47:00 2015 (r283380) +++ head/sys/sys/proc.h Sun May 24 14:49:21 2015 (r283381) @@ -325,6 +325,7 @@ struct thread { struct proc *td_rfppwait_p; /* (k) The vforked child */ struct vm_page **td_ma; /* (k) uio pages held */ int td_ma_cnt; /* (k) size of *td_ma */ + void *td_emuldata; /* Emulator state data */ }; struct mtx *thread_lock_block(struct thread *); From owner-svn-src-all@FreeBSD.ORG Sun May 24 14:51:34 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 977ACD44; Sun, 24 May 2015 14:51:34 +0000 (UTC) Received: from svn.freebsd.org (svn.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 835BF1898; Sun, 24 May 2015 14:51:34 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OEpYjo033447; Sun, 24 May 2015 14:51:34 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OEpUad033423; Sun, 24 May 2015 14:51:30 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241451.t4OEpUad033423@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 14:51:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283382 - in head/sys: amd64/amd64 arm/arm compat/ia32 compat/svr4 i386/i386 i386/ibcs2 kern mips/mips powerpc/powerpc sparc64/sparc64 sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 14:51:34 -0000 Author: dchagin Date: Sun May 24 14:51:29 2015 New Revision: 283382 URL: https://svnweb.freebsd.org/changeset/base/283382 Log: In preparation for switching linuxulator to the use the native 1:1 threads add a hook for cleaning thread resources before the thread die. Differential Revision: https://reviews.freebsd.org/D1038 Modified: head/sys/amd64/amd64/elf_machdep.c head/sys/arm/arm/elf_machdep.c head/sys/compat/ia32/ia32_sysvec.c head/sys/compat/svr4/svr4_sysvec.c head/sys/i386/i386/elf_machdep.c head/sys/i386/ibcs2/ibcs2_sysvec.c head/sys/kern/imgact_aout.c head/sys/kern/init_main.c head/sys/kern/kern_thread.c head/sys/mips/mips/elf_machdep.c head/sys/mips/mips/freebsd32_machdep.c head/sys/powerpc/powerpc/elf32_machdep.c head/sys/powerpc/powerpc/elf64_machdep.c head/sys/sparc64/sparc64/elf_machdep.c head/sys/sys/sysent.h Modified: head/sys/amd64/amd64/elf_machdep.c ============================================================================== --- head/sys/amd64/amd64/elf_machdep.c Sun May 24 14:49:21 2015 (r283381) +++ head/sys/amd64/amd64/elf_machdep.c Sun May 24 14:51:29 2015 (r283382) @@ -82,6 +82,7 @@ struct sysentvec elf64_freebsd_sysvec = .sv_shared_page_base = SHAREDPAGE, .sv_shared_page_len = PAGE_SIZE, .sv_schedtail = NULL, + .sv_thread_detach = NULL, }; INIT_SYSENTVEC(elf64_sysvec, &elf64_freebsd_sysvec); Modified: head/sys/arm/arm/elf_machdep.c ============================================================================== --- head/sys/arm/arm/elf_machdep.c Sun May 24 14:49:21 2015 (r283381) +++ head/sys/arm/arm/elf_machdep.c Sun May 24 14:51:29 2015 (r283382) @@ -81,6 +81,7 @@ struct sysentvec elf32_freebsd_sysvec = .sv_fetch_syscall_args = cpu_fetch_syscall_args, .sv_syscallnames = syscallnames, .sv_schedtail = NULL, + .sv_thread_detach = NULL, }; static Elf32_Brandinfo freebsd_brand_info = { Modified: head/sys/compat/ia32/ia32_sysvec.c ============================================================================== --- head/sys/compat/ia32/ia32_sysvec.c Sun May 24 14:49:21 2015 (r283381) +++ head/sys/compat/ia32/ia32_sysvec.c Sun May 24 14:51:29 2015 (r283382) @@ -136,6 +136,7 @@ struct sysentvec ia32_freebsd_sysvec = { .sv_shared_page_base = FREEBSD32_SHAREDPAGE, .sv_shared_page_len = PAGE_SIZE, .sv_schedtail = NULL, + .sv_thread_detach = NULL, }; INIT_SYSENTVEC(elf_ia32_sysvec, &ia32_freebsd_sysvec); Modified: head/sys/compat/svr4/svr4_sysvec.c ============================================================================== --- head/sys/compat/svr4/svr4_sysvec.c Sun May 24 14:49:21 2015 (r283381) +++ head/sys/compat/svr4/svr4_sysvec.c Sun May 24 14:51:29 2015 (r283382) @@ -196,6 +196,7 @@ struct sysentvec svr4_sysvec = { .sv_fetch_syscall_args = cpu_fetch_syscall_args, .sv_syscallnames = NULL, .sv_schedtail = NULL, + .sv_thread_detach = NULL, }; const char svr4_emul_path[] = "/compat/svr4"; Modified: head/sys/i386/i386/elf_machdep.c ============================================================================== --- head/sys/i386/i386/elf_machdep.c Sun May 24 14:49:21 2015 (r283381) +++ head/sys/i386/i386/elf_machdep.c Sun May 24 14:51:29 2015 (r283382) @@ -88,6 +88,7 @@ struct sysentvec elf32_freebsd_sysvec = .sv_shared_page_base = SHAREDPAGE, .sv_shared_page_len = PAGE_SIZE, .sv_schedtail = NULL, + .sv_thread_detach = NULL, }; INIT_SYSENTVEC(elf32_sysvec, &elf32_freebsd_sysvec); Modified: head/sys/i386/ibcs2/ibcs2_sysvec.c ============================================================================== --- head/sys/i386/ibcs2/ibcs2_sysvec.c Sun May 24 14:49:21 2015 (r283381) +++ head/sys/i386/ibcs2/ibcs2_sysvec.c Sun May 24 14:51:29 2015 (r283382) @@ -89,6 +89,7 @@ struct sysentvec ibcs2_svr3_sysvec = { .sv_fetch_syscall_args = cpu_fetch_syscall_args, .sv_syscallnames = NULL, .sv_schedtail = NULL, + .sv_thread_detach = NULL, }; static int Modified: head/sys/kern/imgact_aout.c ============================================================================== --- head/sys/kern/imgact_aout.c Sun May 24 14:49:21 2015 (r283381) +++ head/sys/kern/imgact_aout.c Sun May 24 14:51:29 2015 (r283382) @@ -99,6 +99,7 @@ struct sysentvec aout_sysvec = { .sv_fetch_syscall_args = cpu_fetch_syscall_args, .sv_syscallnames = syscallnames, .sv_schedtail = NULL, + .sv_thread_detach = NULL, }; #elif defined(__amd64__) Modified: head/sys/kern/init_main.c ============================================================================== --- head/sys/kern/init_main.c Sun May 24 14:49:21 2015 (r283381) +++ head/sys/kern/init_main.c Sun May 24 14:51:29 2015 (r283382) @@ -411,6 +411,7 @@ struct sysentvec null_sysvec = { .sv_fetch_syscall_args = null_fetch_syscall_args, .sv_syscallnames = NULL, .sv_schedtail = NULL, + .sv_thread_detach = NULL, }; /* Modified: head/sys/kern/kern_thread.c ============================================================================== --- head/sys/kern/kern_thread.c Sun May 24 14:49:21 2015 (r283381) +++ head/sys/kern/kern_thread.c Sun May 24 14:51:29 2015 (r283382) @@ -45,6 +45,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -884,6 +885,14 @@ thread_suspend_check(int return_instead) if ((p->p_flag & P_SINGLE_EXIT) && (p->p_singlethread != td)) { PROC_UNLOCK(p); tidhash_remove(td); + + /* + * Allow Linux emulation layer to do some work + * before thread suicide. + */ + if (__predict_false(p->p_sysent->sv_thread_detach != NULL)) + (p->p_sysent->sv_thread_detach)(td); + PROC_LOCK(p); tdsigcleanup(td); umtx_thread_exit(td); Modified: head/sys/mips/mips/elf_machdep.c ============================================================================== --- head/sys/mips/mips/elf_machdep.c Sun May 24 14:49:21 2015 (r283381) +++ head/sys/mips/mips/elf_machdep.c Sun May 24 14:51:29 2015 (r283382) @@ -83,6 +83,7 @@ struct sysentvec elf64_freebsd_sysvec = .sv_fetch_syscall_args = cpu_fetch_syscall_args, .sv_syscallnames = syscallnames, .sv_schedtail = NULL, + .sv_thread_detach = NULL, }; static Elf64_Brandinfo freebsd_brand_info = { @@ -139,6 +140,7 @@ struct sysentvec elf32_freebsd_sysvec = .sv_fetch_syscall_args = cpu_fetch_syscall_args, .sv_syscallnames = syscallnames, .sv_schedtail = NULL, + .sv_thread_detach = NULL, }; static Elf32_Brandinfo freebsd_brand_info = { Modified: head/sys/mips/mips/freebsd32_machdep.c ============================================================================== --- head/sys/mips/mips/freebsd32_machdep.c Sun May 24 14:49:21 2015 (r283381) +++ head/sys/mips/mips/freebsd32_machdep.c Sun May 24 14:51:29 2015 (r283382) @@ -106,6 +106,7 @@ struct sysentvec elf32_freebsd_sysvec = .sv_fetch_syscall_args = cpu_fetch_syscall_args, .sv_syscallnames = freebsd32_syscallnames, .sv_schedtail = NULL, + .sv_thread_detach = NULL, }; INIT_SYSENTVEC(elf32_sysvec, &elf32_freebsd_sysvec); Modified: head/sys/powerpc/powerpc/elf32_machdep.c ============================================================================== --- head/sys/powerpc/powerpc/elf32_machdep.c Sun May 24 14:49:21 2015 (r283381) +++ head/sys/powerpc/powerpc/elf32_machdep.c Sun May 24 14:51:29 2015 (r283382) @@ -108,6 +108,7 @@ struct sysentvec elf32_freebsd_sysvec = .sv_shared_page_base = FREEBSD32_SHAREDPAGE, .sv_shared_page_len = PAGE_SIZE, .sv_schedtail = NULL, + .sv_thread_detach = NULL, }; INIT_SYSENTVEC(elf32_sysvec, &elf32_freebsd_sysvec); Modified: head/sys/powerpc/powerpc/elf64_machdep.c ============================================================================== --- head/sys/powerpc/powerpc/elf64_machdep.c Sun May 24 14:49:21 2015 (r283381) +++ head/sys/powerpc/powerpc/elf64_machdep.c Sun May 24 14:51:29 2015 (r283382) @@ -84,6 +84,7 @@ struct sysentvec elf64_freebsd_sysvec = .sv_shared_page_base = SHAREDPAGE, .sv_shared_page_len = PAGE_SIZE, .sv_schedtail = NULL, + .sv_thread_detach = NULL, }; INIT_SYSENTVEC(elf64_sysvec, &elf64_freebsd_sysvec); Modified: head/sys/sparc64/sparc64/elf_machdep.c ============================================================================== --- head/sys/sparc64/sparc64/elf_machdep.c Sun May 24 14:49:21 2015 (r283381) +++ head/sys/sparc64/sparc64/elf_machdep.c Sun May 24 14:51:29 2015 (r283382) @@ -87,6 +87,7 @@ static struct sysentvec elf64_freebsd_sy .sv_fetch_syscall_args = cpu_fetch_syscall_args, .sv_syscallnames = syscallnames, .sv_schedtail = NULL, + .sv_thread_detach = NULL, }; static Elf64_Brandinfo freebsd_brand_info = { Modified: head/sys/sys/sysent.h ============================================================================== --- head/sys/sys/sysent.h Sun May 24 14:49:21 2015 (r283381) +++ head/sys/sys/sysent.h Sun May 24 14:51:29 2015 (r283382) @@ -136,6 +136,7 @@ struct sysentvec { uint32_t sv_timekeep_gen; void *sv_shared_page_obj; void (*sv_schedtail)(struct thread *); + void (*sv_thread_detach)(struct thread *); }; #define SV_ILP32 0x000100 From owner-svn-src-all@FreeBSD.ORG Sun May 24 14:53:19 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 6D738EAD; Sun, 24 May 2015 14:53:19 +0000 (UTC) Received: from svn.freebsd.org (svn.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 5AEC018AD; Sun, 24 May 2015 14:53:19 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OErJ6a034394; Sun, 24 May 2015 14:53:19 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OErHG2034385; Sun, 24 May 2015 14:53:17 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241453.t4OErHG2034385@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 14:53:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283383 - in head/sys: amd64/linux32 compat/linux i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 14:53:19 -0000 Author: dchagin Date: Sun May 24 14:53:16 2015 New Revision: 283383 URL: https://svnweb.freebsd.org/changeset/base/283383 Log: Switch linuxulator to use the native 1:1 threads. The reasons: 1. Get rid of the stubs/quirks with process dethreading, process reparent when the process group leader exits and close to this problems on wait(), waitpid(), etc. 2. Reuse our kernel code instead of writing excessive thread managment routines in Linuxulator. Implementation details: 1. The thread is created via kern_thr_new() in the clone() call with the CLONE_THREAD parameter. Thus, everything else is a process. 2. The test that the process has a threads is done via P_HADTHREADS bit p_flag of struct proc. 3. Per thread emulator state data structure is now located in the struct thread and freed in the thread_dtor() hook. Mandatory holdig of the p_mtx required when referencing emuldata from the other threads. 4. PID mangling has changed. Now Linux pid is the native tid and Linux tgid is the native pid, with the exception of the first thread in the process where tid and pid are one and the same. Ugliness: In case when the Linux thread is the initial thread in the thread group thread id is equal to the process id. Glibc depends on this magic (assert in pthread_getattr_np.c). So for system calls that take thread id as a parameter we should use the special method to reference struct thread. Differential Revision: https://reviews.freebsd.org/D1039 Modified: head/sys/amd64/linux32/linux32_machdep.c head/sys/amd64/linux32/linux32_sysvec.c head/sys/compat/linux/check_error.d head/sys/compat/linux/check_internal_locks.d head/sys/compat/linux/linux_emul.c head/sys/compat/linux/linux_emul.h head/sys/compat/linux/linux_fork.c head/sys/compat/linux/linux_futex.c head/sys/compat/linux/linux_futex.h head/sys/compat/linux/linux_misc.c head/sys/compat/linux/linux_misc.h head/sys/compat/linux/linux_signal.c head/sys/compat/linux/stats_timing.d head/sys/i386/linux/linux_machdep.c head/sys/i386/linux/linux_sysvec.c Modified: head/sys/amd64/linux32/linux32_machdep.c ============================================================================== --- head/sys/amd64/linux32/linux32_machdep.c Sun May 24 14:51:29 2015 (r283382) +++ head/sys/amd64/linux32/linux32_machdep.c Sun May 24 14:53:16 2015 (r283383) @@ -157,15 +157,8 @@ linux_execve(struct thread *td, struct l free(path, M_TEMP); if (error == 0) error = kern_execve(td, &eargs, NULL); - if (error == 0) { - /* Linux process can execute FreeBSD one, do not attempt - * to create emuldata for such process using - * linux_proc_init, this leads to a panic on KASSERT - * because such process has p->p_emuldata == NULL. - */ - if (SV_PROC_ABI(td->td_proc) == SV_ABI_LINUX) - error = linux_proc_init(td, 0, 0); - } + if (error == 0) + error = linux_common_execve(td, &eargs); post_execve(td, error, oldvmspace); return (error); } @@ -464,8 +457,14 @@ int linux_set_upcall_kse(struct thread *td, register_t stack) { - td->td_frame->tf_rsp = stack; + if (stack) + td->td_frame->tf_rsp = stack; + /* + * The newly created Linux thread returns + * to the user space by the same path that a parent do. + */ + td->td_frame->tf_rax = 0; return (0); } Modified: head/sys/amd64/linux32/linux32_sysvec.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysvec.c Sun May 24 14:51:29 2015 (r283382) +++ head/sys/amd64/linux32/linux32_sysvec.c Sun May 24 14:53:16 2015 (r283383) @@ -130,6 +130,7 @@ static boolean_t linux32_trans_osrel(con static eventhandler_tag linux_exit_tag; static eventhandler_tag linux_exec_tag; +static eventhandler_tag linux_thread_dtor_tag; /* * Linux syscalls return negative errno's, we do positive and map them @@ -1037,6 +1038,7 @@ struct sysentvec elf_linux_sysvec = { .sv_shared_page_base = LINUX32_SHAREDPAGE, .sv_shared_page_len = PAGE_SIZE, .sv_schedtail = linux_schedtail, + .sv_thread_detach = linux_thread_detach, }; INIT_SYSENTVEC(elf_sysvec, &elf_linux_sysvec); @@ -1125,14 +1127,14 @@ linux_elf_modevent(module_t mod, int typ linux_ioctl_register_handler(*lihp); SET_FOREACH(ldhp, linux_device_handler_set) linux_device_register_handler(*ldhp); - mtx_init(&emul_lock, "emuldata lock", NULL, MTX_DEF); - sx_init(&emul_shared_lock, "emuldata->shared lock"); LIST_INIT(&futex_list); mtx_init(&futex_mtx, "ftllk", NULL, MTX_DEF); linux_exit_tag = EVENTHANDLER_REGISTER(process_exit, linux_proc_exit, NULL, 1000); linux_exec_tag = EVENTHANDLER_REGISTER(process_exec, linux_proc_exec, NULL, 1000); + linux_thread_dtor_tag = EVENTHANDLER_REGISTER(thread_dtor, + linux_thread_dtor, NULL, EVENTHANDLER_PRI_ANY); linux_szplatform = roundup(strlen(linux_platform) + 1, sizeof(char *)); linux_osd_jail_register(); @@ -1158,11 +1160,10 @@ linux_elf_modevent(module_t mod, int typ linux_ioctl_unregister_handler(*lihp); SET_FOREACH(ldhp, linux_device_handler_set) linux_device_unregister_handler(*ldhp); - mtx_destroy(&emul_lock); - sx_destroy(&emul_shared_lock); mtx_destroy(&futex_mtx); EVENTHANDLER_DEREGISTER(process_exit, linux_exit_tag); EVENTHANDLER_DEREGISTER(process_exec, linux_exec_tag); + EVENTHANDLER_DEREGISTER(thread_dtor, linux_thread_dtor_tag); linux_osd_jail_deregister(); if (bootverbose) printf("Linux ELF exec handler removed\n"); Modified: head/sys/compat/linux/check_error.d ============================================================================== --- head/sys/compat/linux/check_error.d Sun May 24 14:51:29 2015 (r283382) +++ head/sys/compat/linux/check_error.d Sun May 24 14:53:16 2015 (r283383) @@ -36,8 +36,8 @@ */ linuxulator*:dummy::not_implemented, -linuxulator*:emul:proc_exit:child_clear_tid_error, -linuxulator*:emul:proc_exit:futex_failed, +linuxulator*:emul:linux_thread_detach:child_clear_tid_error, +linuxulator*:emul:linux_thread_detach:futex_failed, linuxulator*:emul:linux_schedtail:copyout_error, linuxulator*:futex:futex_get:error, linuxulator*:futex:futex_sleep:requeue_error, Modified: head/sys/compat/linux/check_internal_locks.d ============================================================================== --- head/sys/compat/linux/check_internal_locks.d Sun May 24 14:51:29 2015 (r283382) +++ head/sys/compat/linux/check_internal_locks.d Sun May 24 14:53:16 2015 (r283383) @@ -41,14 +41,9 @@ BEGIN { - check["emul_lock"] = 0; - check["emul_shared_rlock"] = 0; - check["emul_shared_wlock"] = 0; check["futex_mtx"] = 0; } -linuxulator*:locks:emul_lock:locked, -linuxulator*:locks:emul_shared_wlock:locked, linuxulator*:locks:futex_mtx:locked /check[probefunc] > 0/ { @@ -57,9 +52,6 @@ linuxulator*:locks:futex_mtx:locked stack(); } -linuxulator*:locks:emul_lock:locked, -linuxulator*:locks:emul_shared_rlock:locked, -linuxulator*:locks:emul_shared_wlock:locked, linuxulator*:locks:futex_mtx:locked { ++check[probefunc]; @@ -69,9 +61,6 @@ linuxulator*:locks:futex_mtx:locked spec[probefunc] = speculation(); } -linuxulator*:locks:emul_lock:unlock, -linuxulator*:locks:emul_shared_rlock:unlock, -linuxulator*:locks:emul_shared_wlock:unlock, linuxulator*:locks:futex_mtx:unlock /check[probefunc] == 0/ { @@ -82,9 +71,6 @@ linuxulator*:locks:futex_mtx:unlock stack(); } -linuxulator*:locks:emul_lock:unlock, -linuxulator*:locks:emul_shared_rlock:unlock, -linuxulator*:locks:emul_shared_wlock:unlock, linuxulator*:locks:futex_mtx:unlock { discard(spec[probefunc]); @@ -95,27 +81,6 @@ linuxulator*:locks:futex_mtx:unlock /* Timeout handling */ tick-10s -/spec["emul_lock"] != 0 && timestamp - ts["emul_lock"] >= 9999999000/ -{ - commit(spec["emul_lock"]); - spec["emul_lock"] = 0; -} - -tick-10s -/spec["emul_shared_wlock"] != 0 && timestamp - ts["emul_shared_wlock"] >= 9999999000/ -{ - commit(spec["emul_shared_wlock"]); - spec["emul_shared_wlock"] = 0; -} - -tick-10s -/spec["emul_shared_rlock"] != 0 && timestamp - ts["emul_shared_rlock"] >= 9999999000/ -{ - commit(spec["emul_shared_rlock"]); - spec["emul_shared_rlock"] = 0; -} - -tick-10s /spec["futex_mtx"] != 0 && timestamp - ts["futex_mtx"] >= 9999999000/ { commit(spec["futex_mtx"]); Modified: head/sys/compat/linux/linux_emul.c ============================================================================== --- head/sys/compat/linux/linux_emul.c Sun May 24 14:51:29 2015 (r283382) +++ head/sys/compat/linux/linux_emul.c Sun May 24 14:53:16 2015 (r283383) @@ -1,5 +1,6 @@ /*- * Copyright (c) 2006 Roman Divacky + * Copyright (c) 2013 Dmitry Chagin * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -35,6 +36,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -58,6 +60,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include /** * Special DTrace provider for the linuxulator. @@ -73,33 +76,21 @@ __FBSDID("$FreeBSD$"); LIN_SDT_PROVIDER_DEFINE(LINUX_DTRACE); /** - * Special DTrace module "locks", it covers some linuxulator internal - * locks. - */ -LIN_SDT_PROBE_DEFINE1(locks, emul_lock, locked, "struct mtx *"); -LIN_SDT_PROBE_DEFINE1(locks, emul_lock, unlock, "struct mtx *"); -LIN_SDT_PROBE_DEFINE1(locks, emul_shared_rlock, locked, "struct sx *"); -LIN_SDT_PROBE_DEFINE1(locks, emul_shared_rlock, unlock, "struct sx *"); -LIN_SDT_PROBE_DEFINE1(locks, emul_shared_wlock, locked, "struct sx *"); -LIN_SDT_PROBE_DEFINE1(locks, emul_shared_wlock, unlock, "struct sx *"); - -/** * DTrace probes in this module. */ -LIN_SDT_PROBE_DEFINE2(emul, em_find, entry, "struct proc *", "int"); +LIN_SDT_PROBE_DEFINE1(emul, em_find, entry, "struct thread *"); LIN_SDT_PROBE_DEFINE0(emul, em_find, return); -LIN_SDT_PROBE_DEFINE3(emul, proc_init, entry, "struct thread *", "pid_t", - "int"); +LIN_SDT_PROBE_DEFINE3(emul, proc_init, entry, "struct thread *", + "struct thread *", "int"); LIN_SDT_PROBE_DEFINE0(emul, proc_init, create_thread); LIN_SDT_PROBE_DEFINE0(emul, proc_init, fork); LIN_SDT_PROBE_DEFINE0(emul, proc_init, exec); LIN_SDT_PROBE_DEFINE0(emul, proc_init, return); LIN_SDT_PROBE_DEFINE1(emul, proc_exit, entry, "struct proc *"); -LIN_SDT_PROBE_DEFINE0(emul, proc_exit, futex_failed); -LIN_SDT_PROBE_DEFINE3(emul, proc_exit, reparent, "pid_t", "pid_t", - "struct proc *"); -LIN_SDT_PROBE_DEFINE1(emul, proc_exit, child_clear_tid_error, "int"); -LIN_SDT_PROBE_DEFINE0(emul, proc_exit, return); +LIN_SDT_PROBE_DEFINE1(emul, linux_thread_detach, entry, "struct thread *"); +LIN_SDT_PROBE_DEFINE0(emul, linux_thread_detach, futex_failed); +LIN_SDT_PROBE_DEFINE1(emul, linux_thread_detach, child_clear_tid_error, "int"); +LIN_SDT_PROBE_DEFINE0(emul, linux_thread_detach, return); LIN_SDT_PROBE_DEFINE2(emul, proc_exec, entry, "struct proc *", "struct image_params *"); LIN_SDT_PROBE_DEFINE0(emul, proc_exec, return); @@ -108,284 +99,208 @@ LIN_SDT_PROBE_DEFINE1(emul, linux_schedt LIN_SDT_PROBE_DEFINE0(emul, linux_schedtail, return); LIN_SDT_PROBE_DEFINE1(emul, linux_set_tid_address, entry, "int *"); LIN_SDT_PROBE_DEFINE0(emul, linux_set_tid_address, return); -LIN_SDT_PROBE_DEFINE2(emul, linux_kill_threads, entry, "struct thread *", - "int"); -LIN_SDT_PROBE_DEFINE1(emul, linux_kill_threads, kill, "pid_t"); -LIN_SDT_PROBE_DEFINE0(emul, linux_kill_threads, return); - -struct sx emul_shared_lock; -struct mtx emul_lock; -/* this returns locked reference to the emuldata entry (if found) */ +/* + * This returns reference to the emuldata entry (if found) + * + * Hold PROC_LOCK when referencing emuldata from other threads. + */ struct linux_emuldata * -em_find(struct proc *p, int locked) +em_find(struct thread *td) { struct linux_emuldata *em; - LIN_SDT_PROBE2(emul, em_find, entry, p, locked); - - if (locked == EMUL_DOLOCK) - EMUL_LOCK(&emul_lock); + LIN_SDT_PROBE1(emul, em_find, entry, td); - em = p->p_emuldata; - - if (em == NULL && locked == EMUL_DOLOCK) - EMUL_UNLOCK(&emul_lock); + em = td->td_emuldata; LIN_SDT_PROBE1(emul, em_find, return, em); + return (em); } -int -linux_proc_init(struct thread *td, pid_t child, int flags) +void +linux_proc_init(struct thread *td, struct thread *newtd, int flags) { - struct linux_emuldata *em, *p_em; - struct proc *p; + struct linux_emuldata *em; - LIN_SDT_PROBE3(emul, proc_init, entry, td, child, flags); + LIN_SDT_PROBE3(emul, proc_init, entry, td, newtd, flags); - if (child != 0) { - /* fork or create a thread */ - em = malloc(sizeof *em, M_LINUX, M_WAITOK | M_ZERO); - em->pid = child; + if (newtd != NULL) { + /* non-exec call */ + em = malloc(sizeof(*em), M_TEMP, M_WAITOK | M_ZERO); em->pdeath_signal = 0; em->flags = 0; em->robust_futexes = NULL; if (flags & LINUX_CLONE_THREAD) { - /* handled later in the code */ LIN_SDT_PROBE0(emul, proc_init, create_thread); - } else { - struct linux_emuldata_shared *s; + em->em_tid = newtd->td_tid; + } else { LIN_SDT_PROBE0(emul, proc_init, fork); - s = malloc(sizeof *s, M_LINUX, M_WAITOK | M_ZERO); - s->refs = 1; - s->group_pid = child; - - LIST_INIT(&s->threads); - em->shared = s; + em->em_tid = newtd->td_proc->p_pid; } + newtd->td_emuldata = em; } else { /* exec */ LIN_SDT_PROBE0(emul, proc_init, exec); /* lookup the old one */ - em = em_find(td->td_proc, EMUL_DOLOCK); + em = em_find(td); KASSERT(em != NULL, ("proc_init: emuldata not found in exec case.\n")); + + em->em_tid = td->td_proc->p_pid; } em->child_clear_tid = NULL; em->child_set_tid = NULL; + LIN_SDT_PROBE0(emul, proc_init, return); +} + +void +linux_proc_exit(void *arg __unused, struct proc *p) +{ + struct thread *td = curthread; + + if (__predict_false(SV_CURPROC_ABI() != SV_ABI_LINUX)) { + LIN_SDT_PROBE1(emul, proc_exit, entry, p); + (p->p_sysent->sv_thread_detach)(td); + } +} + +int +linux_common_execve(struct thread *td, struct image_args *eargs) +{ + struct linux_emuldata *em; + struct proc *p; + int error; + + p = td->td_proc; + /* - * allocate the shared struct only in clone()/fork cases in the case - * of clone() td = calling proc and child = pid of the newly created - * proc + * Unlike FreeBSD abort all other threads before + * proceeding exec. */ - if (child != 0) { - if (flags & LINUX_CLONE_THREAD) { - /* lookup the parent */ - /* - * we dont have to lock the p_em because - * its waiting for us in linux_clone so - * there is no chance of it changing the - * p_em->shared address - */ - p_em = em_find(td->td_proc, EMUL_DONTLOCK); - KASSERT(p_em != NULL, ("proc_init: parent emuldata not found for CLONE_THREAD\n")); - em->shared = p_em->shared; - EMUL_SHARED_WLOCK(&emul_shared_lock); - em->shared->refs++; - EMUL_SHARED_WUNLOCK(&emul_shared_lock); - } else { - /* - * handled earlier to avoid malloc(M_WAITOK) with - * rwlock held - */ - } + PROC_LOCK(p); + /* See exit1() comments. */ + thread_suspend_check(0); + while (p->p_flag & P_HADTHREADS) { + if (!thread_single(p, SINGLE_EXIT)) + break; + thread_suspend_check(0); + } + PROC_UNLOCK(p); - EMUL_SHARED_WLOCK(&emul_shared_lock); - LIST_INSERT_HEAD(&em->shared->threads, em, threads); - EMUL_SHARED_WUNLOCK(&emul_shared_lock); - - p = pfind(child); - KASSERT(p != NULL, ("process not found in proc_init\n")); - p->p_emuldata = em; + error = kern_execve(td, eargs, NULL); + if (error != 0) + return (error); + + /* + * In a case of transition from Linux binary execing to + * FreeBSD binary we destroy linux emuldata thread entry. + */ + if (SV_CURPROC_ABI() != SV_ABI_LINUX) { + PROC_LOCK(p); + em = em_find(td); + KASSERT(em != NULL, ("proc_exec: emuldata not found.\n")); + td->td_emuldata = NULL; PROC_UNLOCK(p); - } else - EMUL_UNLOCK(&emul_lock); - LIN_SDT_PROBE0(emul, proc_init, return); + free(em, M_TEMP); + } return (0); } -void -linux_proc_exit(void *arg __unused, struct proc *p) +void +linux_proc_exec(void *arg __unused, struct proc *p, struct image_params *imgp) { - struct linux_emuldata *em; - int error, shared_flags, shared_xstat; - struct thread *td = FIRST_THREAD_IN_PROC(p); - int *child_clear_tid; - struct proc *q, *nq; - - if (__predict_true(p->p_sysent != &elf_linux_sysvec)) - return; + struct thread *td = curthread; - LIN_SDT_PROBE1(emul, proc_exit, entry, p); + /* + * In a case of execing to linux binary we create linux + * emuldata thread entry. + */ + if (__predict_false((imgp->sysent->sv_flags & SV_ABI_MASK) == + SV_ABI_LINUX)) { + LIN_SDT_PROBE2(emul, proc_exec, entry, p, imgp); + if (SV_PROC_ABI(p) == SV_ABI_LINUX) + linux_proc_init(td, NULL, 0); + else + linux_proc_init(td, td, 0); - release_futexes(p); + LIN_SDT_PROBE0(emul, proc_exec, return); + } +} - /* find the emuldata */ - em = em_find(p, EMUL_DOLOCK); +void +linux_thread_detach(struct thread *td) +{ + struct linux_sys_futex_args cup; + struct linux_emuldata *em; + int *child_clear_tid; + int null = 0; + int error; - KASSERT(em != NULL, ("proc_exit: emuldata not found.\n")); + LIN_SDT_PROBE1(emul, linux_thread_detach, entry, td); - /* reparent all procs that are not a thread leader to initproc */ - if (em->shared->group_pid != p->p_pid) { - LIN_SDT_PROBE3(emul, proc_exit, reparent, - em->shared->group_pid, p->p_pid, p); + em = em_find(td); + KASSERT(em != NULL, ("thread_detach: emuldata not found.\n")); - child_clear_tid = em->child_clear_tid; - EMUL_UNLOCK(&emul_lock); - sx_xlock(&proctree_lock); - wakeup(initproc); - PROC_LOCK(p); - proc_reparent(p, initproc); - p->p_sigparent = SIGCHLD; - PROC_UNLOCK(p); - sx_xunlock(&proctree_lock); - } else { - child_clear_tid = em->child_clear_tid; - EMUL_UNLOCK(&emul_lock); - } + LINUX_CTR1(exit, "thread detach(%d)", em->em_tid); - EMUL_SHARED_WLOCK(&emul_shared_lock); - shared_flags = em->shared->flags; - shared_xstat = em->shared->xstat; - LIST_REMOVE(em, threads); - - em->shared->refs--; - if (em->shared->refs == 0) { - EMUL_SHARED_WUNLOCK(&emul_shared_lock); - free(em->shared, M_LINUX); - } else - EMUL_SHARED_WUNLOCK(&emul_shared_lock); + release_futexes(td, em); - if ((shared_flags & EMUL_SHARED_HASXSTAT) != 0) - p->p_xstat = shared_xstat; + child_clear_tid = em->child_clear_tid; if (child_clear_tid != NULL) { - struct linux_sys_futex_args cup; - int null = 0; + LINUX_CTR2(exit, "thread detach(%d) %p", + em->em_tid, child_clear_tid); + error = copyout(&null, child_clear_tid, sizeof(null)); if (error) { - LIN_SDT_PROBE1(emul, proc_exit, + LIN_SDT_PROBE1(emul, linux_thread_detach, child_clear_tid_error, error); - free(em, M_LINUX); - - LIN_SDT_PROBE0(emul, proc_exit, return); + LIN_SDT_PROBE0(emul, linux_thread_detach, return); return; } - /* futexes stuff */ cup.uaddr = child_clear_tid; cup.op = LINUX_FUTEX_WAKE; cup.val = 0x7fffffff; /* Awake everyone */ cup.timeout = NULL; cup.uaddr2 = NULL; cup.val3 = 0; - error = linux_sys_futex(FIRST_THREAD_IN_PROC(p), &cup); + error = linux_sys_futex(td, &cup); /* * this cannot happen at the moment and if this happens it * probably means there is a user space bug */ if (error) { - LIN_SDT_PROBE0(emul, proc_exit, futex_failed); - printf(LMSG("futex stuff in proc_exit failed.\n")); - } - } - - /* clean the stuff up */ - free(em, M_LINUX); - - /* this is a little weird but rewritten from exit1() */ - sx_xlock(&proctree_lock); - q = LIST_FIRST(&p->p_children); - for (; q != NULL; q = nq) { - nq = LIST_NEXT(q, p_sibling); - if (q->p_flag & P_WEXIT) - continue; - if (__predict_false(q->p_sysent != &elf_linux_sysvec)) - continue; - em = em_find(q, EMUL_DOLOCK); - KASSERT(em != NULL, ("linux_reparent: emuldata not found: %i\n", q->p_pid)); - PROC_LOCK(q); - if ((q->p_flag & P_WEXIT) == 0 && em->pdeath_signal != 0) { - kern_psignal(q, em->pdeath_signal); + LIN_SDT_PROBE0(emul, linux_thread_detach, futex_failed); + printf(LMSG("futex stuff in thread_detach failed.\n")); } - PROC_UNLOCK(q); - EMUL_UNLOCK(&emul_lock); } - sx_xunlock(&proctree_lock); - LIN_SDT_PROBE0(emul, proc_exit, return); + LIN_SDT_PROBE0(emul, linux_thread_detach, return); } -/* - * This is used in a case of transition from FreeBSD binary execing to linux binary - * in this case we create linux emuldata proc entry with the pid of the currently running - * process. - */ -void -linux_proc_exec(void *arg __unused, struct proc *p, struct image_params *imgp) +void +linux_thread_dtor(void *arg __unused, struct thread *td) { - if (__predict_false(imgp->sysent == &elf_linux_sysvec)) { - LIN_SDT_PROBE2(emul, proc_exec, entry, p, imgp); - } - if (__predict_false(imgp->sysent == &elf_linux_sysvec - && p->p_sysent != &elf_linux_sysvec)) - linux_proc_init(FIRST_THREAD_IN_PROC(p), p->p_pid, 0); - if (__predict_false((p->p_sysent->sv_flags & SV_ABI_MASK) == - SV_ABI_LINUX)) - /* Kill threads regardless of imgp->sysent value */ - linux_kill_threads(FIRST_THREAD_IN_PROC(p), SIGKILL); - if (__predict_false(imgp->sysent != &elf_linux_sysvec - && p->p_sysent == &elf_linux_sysvec)) { - struct linux_emuldata *em; - - /* - * XXX:There's a race because here we assign p->p_emuldata NULL - * but the process is still counted as linux one for a short - * time so some other process might reference it and try to - * access its p->p_emuldata and panicing on a NULL reference. - */ - em = em_find(p, EMUL_DONTLOCK); - - KASSERT(em != NULL, ("proc_exec: emuldata not found.\n")); - - EMUL_SHARED_WLOCK(&emul_shared_lock); - LIST_REMOVE(em, threads); - - PROC_LOCK(p); - p->p_emuldata = NULL; - PROC_UNLOCK(p); + struct linux_emuldata *em; - em->shared->refs--; - if (em->shared->refs == 0) { - EMUL_SHARED_WUNLOCK(&emul_shared_lock); - free(em->shared, M_LINUX); - } else - EMUL_SHARED_WUNLOCK(&emul_shared_lock); + em = em_find(td); + if (em == NULL) + return; + td->td_emuldata = NULL; - free(em, M_LINUX); - } + LINUX_CTR1(exit, "thread dtor(%d)", em->em_tid); - if (__predict_false(imgp->sysent == &elf_linux_sysvec)) { - LIN_SDT_PROBE0(emul, proc_exec, return); - } + free(em, M_TEMP); } void @@ -396,30 +311,28 @@ linux_schedtail(struct thread *td) int error = 0; int *child_set_tid; - p = td->td_proc; - - LIN_SDT_PROBE1(emul, linux_schedtail, entry, p); + LIN_SDT_PROBE1(emul, linux_schedtail, entry, td); - /* find the emuldata */ - em = em_find(p, EMUL_DOLOCK); + p = td->td_proc; + em = em_find(td); KASSERT(em != NULL, ("linux_schedtail: emuldata not found.\n")); child_set_tid = em->child_set_tid; - EMUL_UNLOCK(&emul_lock); if (child_set_tid != NULL) { - error = copyout(&p->p_pid, (int *)child_set_tid, - sizeof(p->p_pid)); + error = copyout(&em->em_tid, (int *)child_set_tid, + sizeof(em->em_tid)); + LINUX_CTR4(clone, "schedtail(%d) %p stored %d error %d", + td->td_tid, child_set_tid, em->em_tid, error); if (error != 0) { LIN_SDT_PROBE1(emul, linux_schedtail, copyout_error, error); } - } + } else + LINUX_CTR1(clone, "schedtail(%d)", em->em_tid); LIN_SDT_PROBE0(emul, linux_schedtail, return); - - return; } int @@ -429,45 +342,16 @@ linux_set_tid_address(struct thread *td, LIN_SDT_PROBE1(emul, linux_set_tid_address, entry, args->tidptr); - /* find the emuldata */ - em = em_find(td->td_proc, EMUL_DOLOCK); - + em = em_find(td); KASSERT(em != NULL, ("set_tid_address: emuldata not found.\n")); em->child_clear_tid = args->tidptr; - td->td_retval[0] = td->td_proc->p_pid; - EMUL_UNLOCK(&emul_lock); + td->td_retval[0] = em->em_tid; - LIN_SDT_PROBE0(emul, linux_set_tid_address, return); - return 0; -} - -void -linux_kill_threads(struct thread *td, int sig) -{ - struct linux_emuldata *em, *td_em, *tmp_em; - struct proc *sp; - - LIN_SDT_PROBE2(emul, linux_kill_threads, entry, td, sig); - - td_em = em_find(td->td_proc, EMUL_DONTLOCK); + LINUX_CTR3(set_tid_address, "tidptr(%d) %p, returns %d", + em->em_tid, args->tidptr, td->td_retval[0]); - KASSERT(td_em != NULL, ("linux_kill_threads: emuldata not found.\n")); - - EMUL_SHARED_RLOCK(&emul_shared_lock); - LIST_FOREACH_SAFE(em, &td_em->shared->threads, threads, tmp_em) { - if (em->pid == td_em->pid) - continue; - - sp = pfind(em->pid); - if ((sp->p_flag & P_WEXIT) == 0) - kern_psignal(sp, sig); - PROC_UNLOCK(sp); - - LIN_SDT_PROBE1(emul, linux_kill_threads, kill, em->pid); - } - EMUL_SHARED_RUNLOCK(&emul_shared_lock); - - LIN_SDT_PROBE0(emul, linux_kill_threads, return); + LIN_SDT_PROBE0(emul, linux_set_tid_address, return); + return (0); } Modified: head/sys/compat/linux/linux_emul.h ============================================================================== --- head/sys/compat/linux/linux_emul.h Sun May 24 14:51:29 2015 (r283382) +++ head/sys/compat/linux/linux_emul.h Sun May 24 14:53:16 2015 (r283383) @@ -1,5 +1,6 @@ /*- * Copyright (c) 2006 Roman Divacky + * Copyright (c) 2013 Dmitry Chagin * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -31,91 +32,33 @@ #ifndef _LINUX_EMUL_H_ #define _LINUX_EMUL_H_ -#define EMUL_SHARED_HASXSTAT 0x01 - -struct linux_emuldata_shared { - int refs; - int flags; - int xstat; - pid_t group_pid; - - LIST_HEAD(, linux_emuldata) threads; /* head of list of linux threads */ -}; - /* * modeled after similar structure in NetBSD * this will be extended as we need more functionality */ struct linux_emuldata { - pid_t pid; - int *child_set_tid; /* in clone(): Child's TID to set on clone */ int *child_clear_tid;/* in clone(): Child's TID to clear on exit */ - struct linux_emuldata_shared *shared; - int pdeath_signal; /* parent death signal */ int flags; /* different emuldata flags */ + int em_tid; /* thread id */ struct linux_robust_list_head *robust_futexes; - - LIST_ENTRY(linux_emuldata) threads; /* list of linux threads */ }; -struct linux_emuldata *em_find(struct proc *, int locked); - -/* - * DTrace probes for locks should be fired after locking and before releasing - * to prevent races (to provide data/function stability in dtrace, see the - * output of "dtrace -v ..." and the corresponding dtrace docs). - */ -#define EMUL_LOCK(l) do { \ - mtx_lock(l); \ - LIN_SDT_PROBE1(locks, emul_lock, \ - locked, l); \ - } while (0) -#define EMUL_UNLOCK(l) do { \ - LIN_SDT_PROBE1(locks, emul_lock, \ - unlock, l); \ - mtx_unlock(l); \ - } while (0) - -#define EMUL_SHARED_RLOCK(l) do { \ - sx_slock(l); \ - LIN_SDT_PROBE1(locks, emul_shared_rlock, \ - locked, l); \ - } while (0) -#define EMUL_SHARED_RUNLOCK(l) do { \ - LIN_SDT_PROBE1(locks, emul_shared_rlock, \ - unlock, l); \ - sx_sunlock(l); \ - } while (0) -#define EMUL_SHARED_WLOCK(l) do { \ - sx_xlock(l); \ - LIN_SDT_PROBE1(locks, emul_shared_wlock, \ - locked, l); \ - } while (0) -#define EMUL_SHARED_WUNLOCK(l) do { \ - LIN_SDT_PROBE1(locks, emul_shared_wlock, \ - unlock, l); \ - sx_xunlock(l); \ - } while (0) - -/* for em_find use */ -#define EMUL_DOLOCK 1 -#define EMUL_DONTLOCK 0 +struct linux_emuldata *em_find(struct thread *); /* emuldata flags */ #define LINUX_XDEPR_REQUEUEOP 0x00000001 /* uses deprecated futex REQUEUE op*/ -int linux_proc_init(struct thread *, pid_t, int); +void linux_proc_init(struct thread *, struct thread *, int); void linux_proc_exit(void *, struct proc *); void linux_schedtail(struct thread *); void linux_proc_exec(void *, struct proc *, struct image_params *); -void linux_kill_threads(struct thread *, int); - -extern struct sx emul_shared_lock; -extern struct mtx emul_lock; +void linux_thread_dtor(void *arg __unused, struct thread *); +void linux_thread_detach(struct thread *); +int linux_common_execve(struct thread *, struct image_args *); #endif /* !_LINUX_EMUL_H_ */ Modified: head/sys/compat/linux/linux_fork.c ============================================================================== --- head/sys/compat/linux/linux_fork.c Sun May 24 14:51:29 2015 (r283382) +++ head/sys/compat/linux/linux_fork.c Sun May 24 14:53:16 2015 (r283383) @@ -34,15 +34,21 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include +#include #include -#include +#include #include #include #include +#include +#include +#include + #ifdef COMPAT_LINUX32 #include #include @@ -50,18 +56,10 @@ __FBSDID("$FreeBSD$"); #include #include #endif -#include #include #include #include - -/* DTrace init */ -LIN_SDT_PROVIDER_DECLARE(LINUX_DTRACE); - -/* Linuxulator-global DTrace probes */ -LIN_SDT_PROBE_DECLARE(locks, emul_lock, locked); -LIN_SDT_PROBE_DECLARE(locks, emul_lock, unlock); - +#include int linux_fork(struct thread *td, struct linux_fork_args *args) @@ -79,14 +77,11 @@ linux_fork(struct thread *td, struct lin != 0) return (error); - td->td_retval[0] = p2->p_pid; - td->td_retval[1] = 0; + td2 = FIRST_THREAD_IN_PROC(p2); - error = linux_proc_init(td, td->td_retval[0], 0); - if (error) - return (error); + linux_proc_init(td, td2, 0); - td2 = FIRST_THREAD_IN_PROC(p2); + td->td_retval[0] = p2->p_pid; /* * Make this runnable after we are finished with it. @@ -116,17 +111,16 @@ linux_vfork(struct thread *td, struct li NULL, 0)) != 0) return (error); - td->td_retval[0] = p2->p_pid; - error = linux_proc_init(td, td->td_retval[0], 0); - if (error) - return (error); + td2 = FIRST_THREAD_IN_PROC(p2); + + linux_proc_init(td, td2, 0); PROC_LOCK(p2); p2->p_flag |= P_PPWAIT; PROC_UNLOCK(p2); - td2 = FIRST_THREAD_IN_PROC(p2); + td->td_retval[0] = p2->p_pid; /* * Make this runnable after we are finished with it. @@ -145,8 +139,8 @@ linux_vfork(struct thread *td, struct li return (0); } -int -linux_clone(struct thread *td, struct linux_clone_args *args) +static int +linux_clone_proc(struct thread *td, struct linux_clone_args *args) { int error, ff = RFPROC | RFSTOPPED; struct proc *p2; @@ -183,22 +177,6 @@ linux_clone(struct thread *td, struct li if (!(args->flags & (LINUX_CLONE_FILES | LINUX_CLONE_FS))) ff |= RFFDG; - /* - * Attempt to detect when linux_clone(2) is used for creating - * kernel threads. Unfortunately despite the existence of the - * CLONE_THREAD flag, version of linuxthreads package used in - * most popular distros as of beginning of 2005 doesn't make - * any use of it. Therefore, this detection relies on - * empirical observation that linuxthreads sets certain - * combination of flags, so that we can make more or less - * precise detection and notify the FreeBSD kernel that several - * processes are in fact part of the same threading group, so - * that special treatment is necessary for signal delivery - * between those processes and fd locking. - */ - if ((args->flags & 0xffffff00) == LINUX_THREADING_FLAGS) - ff |= RFTHREAD; - if (args->flags & LINUX_CLONE_PARENT_SETTID) if (args->parent_tidptr == NULL) return (EINVAL); @@ -207,29 +185,13 @@ linux_clone(struct thread *td, struct li if (error) return (error); - if (args->flags & (LINUX_CLONE_PARENT | LINUX_CLONE_THREAD)) { - sx_xlock(&proctree_lock); - PROC_LOCK(p2); - proc_reparent(p2, td->td_proc->p_pptr); - PROC_UNLOCK(p2); - sx_xunlock(&proctree_lock); - } + td2 = FIRST_THREAD_IN_PROC(p2); /* create the emuldata */ - error = linux_proc_init(td, p2->p_pid, args->flags); - /* reference it - no need to check this */ - em = em_find(p2, EMUL_DOLOCK); - KASSERT(em != NULL, ("clone: emuldata not found.")); - /* and adjust it */ + linux_proc_init(td, td2, args->flags); - if (args->flags & LINUX_CLONE_THREAD) { -#ifdef notyet - PROC_LOCK(p2); - p2->p_pgrp = td->td_proc->p_pgrp; - PROC_UNLOCK(p2); -#endif - exit_signal = 0; - } + em = em_find(td2); + KASSERT(em != NULL, ("clone_proc: emuldata not found.\n")); if (args->flags & LINUX_CLONE_CHILD_SETTID) em->child_set_tid = args->child_tidptr; @@ -241,8 +203,6 @@ linux_clone(struct thread *td, struct li else em->child_clear_tid = NULL; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sun May 24 14:54:13 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 6C735B2; Sun, 24 May 2015 14:54:13 +0000 (UTC) Received: from svn.freebsd.org (svn.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 5A8F618BB; Sun, 24 May 2015 14:54:13 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OEsDHB034571; Sun, 24 May 2015 14:54:13 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OEsDXX034570; Sun, 24 May 2015 14:54:13 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241454.t4OEsDXX034570@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 14:54:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283384 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 14:54:13 -0000 Author: dchagin Date: Sun May 24 14:54:12 2015 New Revision: 283384 URL: https://svnweb.freebsd.org/changeset/base/283384 Log: pthread_join() caller do futex_wait on child_clear_tid. As a results of multiple simultaneous calls to pthread_join() specifying the same target thread are undefined wake up the one thread. Differential Revision: https://reviews.freebsd.org/D1040 Modified: head/sys/compat/linux/linux_emul.c Modified: head/sys/compat/linux/linux_emul.c ============================================================================== --- head/sys/compat/linux/linux_emul.c Sun May 24 14:53:16 2015 (r283383) +++ head/sys/compat/linux/linux_emul.c Sun May 24 14:54:12 2015 (r283384) @@ -270,7 +270,7 @@ linux_thread_detach(struct thread *td) cup.uaddr = child_clear_tid; cup.op = LINUX_FUTEX_WAKE; - cup.val = 0x7fffffff; /* Awake everyone */ + cup.val = 1; /* wake one */ cup.timeout = NULL; cup.uaddr2 = NULL; cup.val3 = 0; From owner-svn-src-all@FreeBSD.ORG Sun May 24 14:55:13 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id CCDAE20C; Sun, 24 May 2015 14:55:13 +0000 (UTC) Received: from svn.freebsd.org (svn.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 ADD9418C9; Sun, 24 May 2015 14:55:13 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OEtD7H034809; Sun, 24 May 2015 14:55:13 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OEtDdA034805; Sun, 24 May 2015 14:55:13 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241455.t4OEtDdA034805@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 14:55:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283385 - in head/sys: amd64/linux32 i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 14:55:14 -0000 Author: dchagin Date: Sun May 24 14:55:12 2015 New Revision: 283385 URL: https://svnweb.freebsd.org/changeset/base/283385 Log: Some style(9) && whitespaces fixes. No functional changes. Differential Revision: https://reviews.freebsd.org/D1041 Reviewed by: emaste Modified: head/sys/amd64/linux32/linux32_sysvec.c head/sys/i386/linux/linux_sysvec.c Modified: head/sys/amd64/linux32/linux32_sysvec.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysvec.c Sun May 24 14:54:12 2015 (r283384) +++ head/sys/amd64/linux32/linux32_sysvec.c Sun May 24 14:55:12 2015 (r283385) @@ -294,7 +294,7 @@ elf_linux_fixup(register_t **stack_base, base--; suword32(base, (uint32_t)imgp->args->argc); *stack_base = (register_t *)base; - return 0; + return (0); } extern unsigned long linux_sznonrtsigcode; @@ -1171,9 +1171,9 @@ linux_elf_modevent(module_t mod, int typ printf("Could not deinstall ELF interpreter entry\n"); break; default: - return EOPNOTSUPP; + return (EOPNOTSUPP); } - return error; + return (error); } static moduledata_t linux_elf_mod = { Modified: head/sys/i386/linux/linux_sysvec.c ============================================================================== --- head/sys/i386/linux/linux_sysvec.c Sun May 24 14:54:12 2015 (r283384) +++ head/sys/i386/linux/linux_sysvec.c Sun May 24 14:55:12 2015 (r283385) @@ -209,15 +209,15 @@ static int translate_traps(int signal, int trap_code) { if (signal != SIGBUS) - return signal; + return (signal); switch (trap_code) { case T_PROTFLT: case T_TSSFLT: case T_DOUBLEFLT: case T_PAGEFLT: - return SIGSEGV; + return (SIGSEGV); default: - return signal; + return (signal); } } @@ -685,7 +685,7 @@ linux_sigreturn(struct thread *td, struc #define EFLAGS_SECURE(ef, oef) ((((ef) ^ (oef)) & ~PSL_USERCHANGE) == 0) eflags = frame.sf_sc.sc_eflags; if (!EFLAGS_SECURE(eflags, regs->tf_eflags)) - return(EINVAL); + return (EINVAL); /* * Don't allow users to load a valid privileged %cs. Let the @@ -700,7 +700,7 @@ linux_sigreturn(struct thread *td, struc ksi.ksi_trapno = T_PROTFLT; ksi.ksi_addr = (void *)regs->tf_eip; trapsignal(td, &ksi); - return(EINVAL); + return (EINVAL); } lmask.__bits[0] = frame.sf_sc.sc_mask; @@ -776,7 +776,7 @@ linux_rt_sigreturn(struct thread *td, st #define EFLAGS_SECURE(ef, oef) ((((ef) ^ (oef)) & ~PSL_USERCHANGE) == 0) eflags = context->sc_eflags; if (!EFLAGS_SECURE(eflags, regs->tf_eflags)) - return(EINVAL); + return (EINVAL); /* * Don't allow users to load a valid privileged %cs. Let the @@ -791,7 +791,7 @@ linux_rt_sigreturn(struct thread *td, st ksi.ksi_trapno = T_PROTFLT; ksi.ksi_addr = (void *)regs->tf_eip; trapsignal(td, &ksi); - return(EINVAL); + return (EINVAL); } linux_to_bsd_sigset(&uc.uc_sigmask, &bmask); @@ -1147,9 +1147,9 @@ linux_elf_modevent(module_t mod, int typ printf("Could not deinstall ELF interpreter entry\n"); break; default: - return EOPNOTSUPP; + return (EOPNOTSUPP); } - return error; + return (error); } static moduledata_t linux_elf_mod = { From owner-svn-src-all@FreeBSD.ORG Sun May 24 14:56:22 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 831A436C; Sun, 24 May 2015 14:56:22 +0000 (UTC) Received: from svn.freebsd.org (svn.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 576ED18D9; Sun, 24 May 2015 14:56:22 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OEuMd0035010; Sun, 24 May 2015 14:56:22 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OEuLmx035008; Sun, 24 May 2015 14:56:21 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241456.t4OEuLmx035008@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 14:56:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283386 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 14:56:22 -0000 Author: dchagin Date: Sun May 24 14:56:21 2015 New Revision: 283386 URL: https://svnweb.freebsd.org/changeset/base/283386 Log: Introduce LINUX_VERSION_STR, LINUX_VERSION_CODE macro for use instead of harcoded pr_osrelease, pr_osrel values. This will be used later in the VDSO. Differential Revision: https://reviews.freebsd.org/D1042 Reviewed by: trasz Modified: head/sys/compat/linux/linux_mib.c head/sys/compat/linux/linux_mib.h Modified: head/sys/compat/linux/linux_mib.c ============================================================================== --- head/sys/compat/linux/linux_mib.c Sun May 24 14:55:12 2015 (r283385) +++ head/sys/compat/linux/linux_mib.c Sun May 24 14:56:21 2015 (r283386) @@ -129,9 +129,9 @@ struct linux_prison { static struct linux_prison lprison0 = { .pr_osname = "Linux", - .pr_osrelease = "2.6.18", + .pr_osrelease = LINUX_VERSION_STR, .pr_oss_version = 0x030600, - .pr_osrel = 2006018 + .pr_osrel = LINUX_VERSION_CODE }; static unsigned linux_osd_jail_slot; Modified: head/sys/compat/linux/linux_mib.h ============================================================================== --- head/sys/compat/linux/linux_mib.h Sun May 24 14:55:12 2015 (r283385) +++ head/sys/compat/linux/linux_mib.h Sun May 24 14:56:21 2015 (r283386) @@ -42,8 +42,19 @@ int linux_get_oss_version(struct thread int linux_kernver(struct thread *td); -#define LINUX_KERNVER_2004000 2004000 -#define LINUX_KERNVER_2006000 2006000 +#define LINUX_KVERSION 2 +#define LINUX_KPATCHLEVEL 6 +#define LINUX_KSUBLEVEL 18 + +#define LINUX_KERNVER(a,b,c) (((a) << 16) + ((b) << 8) + (c)) +#define LINUX_VERSION_CODE LINUX_KERNVER(LINUX_KVERSION, \ + LINUX_KPATCHLEVEL, LINUX_KSUBLEVEL) +#define LINUX_KERNVERSTR(x) #x +#define LINUX_XKERNVERSTR(x) LINUX_KERNVERSTR(x) +#define LINUX_VERSION_STR LINUX_XKERNVERSTR(LINUX_KVERSION.LINUX_KPATCHLEVEL.LINUX_KSUBLEVEL) + +#define LINUX_KERNVER_2004000 LINUX_KERNVER(2,4,0) +#define LINUX_KERNVER_2006000 LINUX_KERNVER(2,6,0) #define linux_use26(t) (linux_kernver(t) >= LINUX_KERNVER_2006000) From owner-svn-src-all@FreeBSD.ORG Sun May 24 14:57:20 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D2EC34C9; Sun, 24 May 2015 14:57:20 +0000 (UTC) Received: from svn.freebsd.org (svn.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 BEB8618EB; Sun, 24 May 2015 14:57:20 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OEvKuB035201; Sun, 24 May 2015 14:57:20 GMT (envelope-from ian@FreeBSD.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OEvIL5035187; Sun, 24 May 2015 14:57:18 GMT (envelope-from ian@FreeBSD.org) Message-Id: <201505241457.t4OEvIL5035187@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ian set sender to ian@FreeBSD.org using -f From: Ian Lepore Date: Sun, 24 May 2015 14:57:18 +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: r283387 - stable/10/sys/arm/conf X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 14:57:20 -0000 Author: ian Date: Sun May 24 14:57:17 2015 New Revision: 283387 URL: https://svnweb.freebsd.org/changeset/base/283387 Log: MFC r279837: Remove MODULES_OVERRIDE="" and WITHOUT_MODULES="ahc" from armv6 configs. Modified: stable/10/sys/arm/conf/ARMADAXP stable/10/sys/arm/conf/CUBIEBOARD stable/10/sys/arm/conf/CUBIEBOARD2 stable/10/sys/arm/conf/EXYNOS5.common stable/10/sys/arm/conf/PANDABOARD stable/10/sys/arm/conf/TS7800 stable/10/sys/arm/conf/VYBRID stable/10/sys/arm/conf/ZEDBOARD Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/arm/conf/ARMADAXP ============================================================================== --- stable/10/sys/arm/conf/ARMADAXP Sun May 24 14:56:21 2015 (r283386) +++ stable/10/sys/arm/conf/ARMADAXP Sun May 24 14:57:17 2015 (r283387) @@ -22,7 +22,6 @@ ident MV-88F78XX0 include "../mv/armadaxp/std.mv78x60" options SOC_MV_ARMADAXP -makeoptions MODULES_OVERRIDE="" makeoptions WERROR="-Werror" Modified: stable/10/sys/arm/conf/CUBIEBOARD ============================================================================== --- stable/10/sys/arm/conf/CUBIEBOARD Sun May 24 14:56:21 2015 (r283386) +++ stable/10/sys/arm/conf/CUBIEBOARD Sun May 24 14:57:17 2015 (r283387) @@ -23,9 +23,6 @@ ident CUBIEBOARD include "../allwinner/std.a10" -makeoptions MODULES_OVERRIDE="" -makeoptions WITHOUT_MODULES="ahc" - options HZ=100 options SCHED_4BSD # 4BSD scheduler options PREEMPTION # Enable kernel thread preemption Modified: stable/10/sys/arm/conf/CUBIEBOARD2 ============================================================================== --- stable/10/sys/arm/conf/CUBIEBOARD2 Sun May 24 14:56:21 2015 (r283386) +++ stable/10/sys/arm/conf/CUBIEBOARD2 Sun May 24 14:57:17 2015 (r283387) @@ -23,9 +23,6 @@ ident CUBIEBOARD2 include "../allwinner/a20/std.a20" -makeoptions MODULES_OVERRIDE="" -makeoptions WITHOUT_MODULES="ahc" - options HZ=100 options SCHED_ULE # ULE scheduler options PREEMPTION # Enable kernel thread preemption Modified: stable/10/sys/arm/conf/EXYNOS5.common ============================================================================== --- stable/10/sys/arm/conf/EXYNOS5.common Sun May 24 14:56:21 2015 (r283386) +++ stable/10/sys/arm/conf/EXYNOS5.common Sun May 24 14:57:17 2015 (r283387) @@ -18,9 +18,6 @@ # # $FreeBSD$ -makeoptions MODULES_OVERRIDE="" -makeoptions WITHOUT_MODULES="ahc" - makeoptions WERROR="-Werror" options HZ=100 Modified: stable/10/sys/arm/conf/PANDABOARD ============================================================================== --- stable/10/sys/arm/conf/PANDABOARD Sun May 24 14:56:21 2015 (r283386) +++ stable/10/sys/arm/conf/PANDABOARD Sun May 24 14:57:17 2015 (r283387) @@ -29,9 +29,6 @@ hints "PANDABOARD.hints" include "../ti/omap4/pandaboard/std.pandaboard" -makeoptions MODULES_OVERRIDE="" -makeoptions WITHOUT_MODULES="ahc" - options HZ=100 options SCHED_ULE # ULE scheduler options PREEMPTION # Enable kernel thread preemption Modified: stable/10/sys/arm/conf/TS7800 ============================================================================== --- stable/10/sys/arm/conf/TS7800 Sun May 24 14:56:21 2015 (r283386) +++ stable/10/sys/arm/conf/TS7800 Sun May 24 14:57:17 2015 (r283387) @@ -8,7 +8,6 @@ ident TS7800 include "../mv/orion/std.ts7800" options SOC_MV_ORION -makeoptions MODULES_OVERRIDE="" #makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols makeoptions WERROR="-Werror" Modified: stable/10/sys/arm/conf/VYBRID ============================================================================== --- stable/10/sys/arm/conf/VYBRID Sun May 24 14:56:21 2015 (r283386) +++ stable/10/sys/arm/conf/VYBRID Sun May 24 14:57:17 2015 (r283387) @@ -21,9 +21,6 @@ ident VYBRID include "../freescale/vybrid/std.vybrid" -makeoptions MODULES_OVERRIDE="" -makeoptions WITHOUT_MODULES="ahc" - makeoptions WERROR="-Werror" options HZ=100 Modified: stable/10/sys/arm/conf/ZEDBOARD ============================================================================== --- stable/10/sys/arm/conf/ZEDBOARD Sun May 24 14:56:21 2015 (r283386) +++ stable/10/sys/arm/conf/ZEDBOARD Sun May 24 14:57:17 2015 (r283387) @@ -23,9 +23,6 @@ ident ZEDBOARD include "../xilinx/zedboard/std.zedboard" -makeoptions MODULES_OVERRIDE="" -makeoptions WITHOUT_MODULES="ahc" - options SCHED_ULE # ULE scheduler options PREEMPTION # Enable kernel thread preemption options INET # InterNETworking From owner-svn-src-all@FreeBSD.ORG Sun May 24 14:57:40 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 90DB95FA; Sun, 24 May 2015 14:57:40 +0000 (UTC) Received: from svn.freebsd.org (svn.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 7F34818ED; Sun, 24 May 2015 14:57:40 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OEveff035288; Sun, 24 May 2015 14:57:40 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OEvejd035287; Sun, 24 May 2015 14:57:40 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241457.t4OEvejd035287@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 14:57:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283388 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 14:57:40 -0000 Author: dchagin Date: Sun May 24 14:57:39 2015 New Revision: 283388 URL: https://svnweb.freebsd.org/changeset/base/283388 Log: Remove a now unused define. Differential Revision: https://reviews.freebsd.org/D1043 Reviewed by: trasz Modified: head/sys/compat/linux/linux_misc.h Modified: head/sys/compat/linux/linux_misc.h ============================================================================== --- head/sys/compat/linux/linux_misc.h Sun May 24 14:57:17 2015 (r283387) +++ head/sys/compat/linux/linux_misc.h Sun May 24 14:57:39 2015 (r283388) @@ -90,10 +90,6 @@ extern const char *linux_platform; #define LINUX_CLONE_CHILD_CLEARTID 0x00200000 #define LINUX_CLONE_CHILD_SETTID 0x01000000 -#define LINUX_THREADING_FLAGS \ - (LINUX_CLONE_VM | LINUX_CLONE_FS | LINUX_CLONE_FILES | \ - LINUX_CLONE_SIGHAND | LINUX_CLONE_THREAD) - /* Scheduling policies */ #define LINUX_SCHED_OTHER 0 #define LINUX_SCHED_FIFO 1 From owner-svn-src-all@FreeBSD.ORG Sun May 24 14:58:32 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 044F574B; Sun, 24 May 2015 14:58:32 +0000 (UTC) Received: from svn.freebsd.org (svn.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 D96BE1900; Sun, 24 May 2015 14:58:31 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OEwV2Y035510; Sun, 24 May 2015 14:58:31 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OEwVAp035506; Sun, 24 May 2015 14:58:31 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241458.t4OEwVAp035506@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 14:58:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283389 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 14:58:32 -0000 Author: dchagin Date: Sun May 24 14:58:30 2015 New Revision: 283389 URL: https://svnweb.freebsd.org/changeset/base/283389 Log: Add a siginfo_t conversion function. Differential Revision: https://reviews.freebsd.org/D1044 Reviewed by: emaste, trasz Modified: head/sys/compat/linux/linux_signal.c head/sys/compat/linux/linux_signal.h Modified: head/sys/compat/linux/linux_signal.c ============================================================================== --- head/sys/compat/linux/linux_signal.c Sun May 24 14:57:39 2015 (r283388) +++ head/sys/compat/linux/linux_signal.c Sun May 24 14:58:30 2015 (r283389) @@ -57,6 +57,8 @@ __FBSDID("$FreeBSD$"); static int linux_do_tkill(struct thread *td, struct thread *tdt, ksiginfo_t *ksi); +static void sicode_to_lsicode(int si_code, int *lsi_code); + void linux_to_bsd_sigset(l_sigset_t *lss, sigset_t *bss) @@ -595,7 +597,7 @@ linux_tgkill(struct thread *td, struct l ksiginfo_init(&ksi); ksi.ksi_signo = sig; - ksi.ksi_code = LINUX_SI_TKILL; + ksi.ksi_code = SI_LWP; ksi.ksi_errno = 0; ksi.ksi_pid = td->td_proc->p_pid; ksi.ksi_uid = td->td_proc->p_ucred->cr_ruid; @@ -633,7 +635,7 @@ linux_tkill(struct thread *td, struct li ksiginfo_init(&ksi); ksi.ksi_signo = sig; - ksi.ksi_code = LINUX_SI_TKILL; + ksi.ksi_code = SI_LWP; ksi.ksi_errno = 0; ksi.ksi_pid = td->td_proc->p_pid; ksi.ksi_uid = td->td_proc->p_ucred->cr_ruid; @@ -641,36 +643,111 @@ linux_tkill(struct thread *td, struct li } void -ksiginfo_to_lsiginfo(ksiginfo_t *ksi, l_siginfo_t *lsi, l_int sig) +ksiginfo_to_lsiginfo(const ksiginfo_t *ksi, l_siginfo_t *lsi, l_int sig) { - lsi->lsi_signo = sig; - lsi->lsi_code = ksi->ksi_code; + siginfo_to_lsiginfo(&ksi->ksi_info, lsi, sig); +} + +static void +sicode_to_lsicode(int si_code, int *lsi_code) +{ - switch (sig) { - case LINUX_SIGPOLL: - /* XXX si_fd? */ - lsi->lsi_band = ksi->ksi_band; - break; - case LINUX_SIGCHLD: - lsi->lsi_pid = ksi->ksi_pid; - lsi->lsi_uid = ksi->ksi_uid; - lsi->lsi_status = ksi->ksi_status; - break; - case LINUX_SIGBUS: - case LINUX_SIGILL: - case LINUX_SIGFPE: - case LINUX_SIGSEGV: - lsi->lsi_addr = PTROUT(ksi->ksi_addr); + switch (si_code) { + case SI_USER: + *lsi_code = LINUX_SI_USER; + break; + case SI_KERNEL: + *lsi_code = LINUX_SI_KERNEL; + break; + case SI_QUEUE: + *lsi_code = LINUX_SI_QUEUE; + break; + case SI_TIMER: + *lsi_code = LINUX_SI_TIMER; + break; + case SI_MESGQ: + *lsi_code = LINUX_SI_MESGQ; + break; + case SI_ASYNCIO: + *lsi_code = LINUX_SI_ASYNCIO; + break; + case SI_LWP: + *lsi_code = LINUX_SI_TKILL; break; default: - /* XXX SI_TIMER etc... */ - lsi->lsi_pid = ksi->ksi_pid; - lsi->lsi_uid = ksi->ksi_uid; + *lsi_code = si_code; break; } - if (sig >= LINUX_SIGRTMIN) { - lsi->lsi_int = ksi->ksi_info.si_value.sival_int; - lsi->lsi_ptr = PTROUT(ksi->ksi_info.si_value.sival_ptr); +} + +void +siginfo_to_lsiginfo(const siginfo_t *si, l_siginfo_t *lsi, l_int sig) +{ + + /* sig alredy converted */ + lsi->lsi_signo = sig; + sicode_to_lsicode(si->si_code, &lsi->lsi_code); + + switch (si->si_code) { + case SI_LWP: + lsi->lsi_pid = si->si_pid; + lsi->lsi_uid = si->si_uid; + break; + + case SI_TIMER: + lsi->lsi_int = si->si_value.sival_int; + lsi->lsi_ptr = PTROUT(si->si_value.sival_ptr); + lsi->lsi_tid = si->si_timerid; + break; + + case SI_QUEUE: + lsi->lsi_pid = si->si_pid; + lsi->lsi_uid = si->si_uid; + lsi->lsi_ptr = PTROUT(si->si_value.sival_ptr); + break; + + case SI_ASYNCIO: + lsi->lsi_int = si->si_value.sival_int; + lsi->lsi_ptr = PTROUT(si->si_value.sival_ptr); + break; + + default: + switch (sig) { + case LINUX_SIGPOLL: + /* XXX si_fd? */ + lsi->lsi_band = si->si_band; + break; + + case LINUX_SIGCHLD: + lsi->lsi_errno = 0; + lsi->lsi_pid = si->si_pid; + lsi->lsi_uid = si->si_uid; + + if (si->si_code == CLD_STOPPED) + lsi->lsi_status = BSD_TO_LINUX_SIGNAL(si->si_status); + else if (si->si_code == CLD_CONTINUED) + lsi->lsi_status = BSD_TO_LINUX_SIGNAL(SIGCONT); + else + lsi->lsi_status = si->si_status; + break; + + case LINUX_SIGBUS: + case LINUX_SIGILL: + case LINUX_SIGFPE: + case LINUX_SIGSEGV: + lsi->lsi_addr = PTROUT(si->si_addr); + break; + + default: + lsi->lsi_pid = si->si_pid; + lsi->lsi_uid = si->si_uid; + if (sig >= LINUX_SIGRTMIN) { + lsi->lsi_int = si->si_value.sival_int; + lsi->lsi_ptr = PTROUT(si->si_value.sival_ptr); + } + break; + } + break; } } Modified: head/sys/compat/linux/linux_signal.h ============================================================================== --- head/sys/compat/linux/linux_signal.h Sun May 24 14:57:39 2015 (r283388) +++ head/sys/compat/linux/linux_signal.h Sun May 24 14:58:30 2015 (r283389) @@ -31,7 +31,17 @@ #ifndef _LINUX_SIGNAL_H_ #define _LINUX_SIGNAL_H_ -#define LINUX_SI_TKILL -6; +/* + * si_code values + */ +#define LINUX_SI_USER 0 /* sent by kill, sigsend, raise */ +#define LINUX_SI_KERNEL 0x80 /* sent by the kernel from somewhere */ +#define LINUX_SI_QUEUE -1 /* sent by sigqueue */ +#define LINUX_SI_TIMER -2 /* sent by timer expiration */ +#define LINUX_SI_MESGQ -3 /* sent by real time mesq state change */ +#define LINUX_SI_ASYNCIO -4 /* sent by AIO completion */ +#define LINUX_SI_SIGIO -5 /* sent by queued SIGIO */ +#define LINUX_SI_TKILL -6 /* sent by tkill system call */ extern int bsd_to_linux_signal[]; extern int linux_to_bsd_signal[]; @@ -39,7 +49,8 @@ extern int linux_to_bsd_signal[]; void linux_to_bsd_sigset(l_sigset_t *, sigset_t *); void bsd_to_linux_sigset(sigset_t *, l_sigset_t *); int linux_do_sigaction(struct thread *, int, l_sigaction_t *, l_sigaction_t *); -void ksiginfo_to_lsiginfo(ksiginfo_t *ksi, l_siginfo_t *lsi, l_int sig); +void ksiginfo_to_lsiginfo(const ksiginfo_t *ksi, l_siginfo_t *lsi, l_int sig); +void siginfo_to_lsiginfo(const siginfo_t *si, l_siginfo_t *lsi, l_int sig); #define LINUX_SIG_VALID(sig) ((sig) <= LINUX_NSIG && (sig) > 0) From owner-svn-src-all@FreeBSD.ORG Sun May 24 14:59:45 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E208F8D5; Sun, 24 May 2015 14:59:45 +0000 (UTC) Received: from woozle.rinet.ru (woozle.rinet.ru [195.54.192.68]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 6D2BC1921; Sun, 24 May 2015 14:59:44 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by woozle.rinet.ru (8.14.5/8.14.5) with ESMTP id t4OEsJQp072865; Sun, 24 May 2015 17:55:19 +0300 (MSK) (envelope-from marck@rinet.ru) Date: Sun, 24 May 2015 17:54:19 +0300 (MSK) From: Dmitry Morozovsky To: Dmitry Chagin cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283383 - in head/sys: amd64/linux32 compat/linux i386/linux In-Reply-To: <201505241453.t4OErHG2034385@svn.freebsd.org> Message-ID: References: <201505241453.t4OErHG2034385@svn.freebsd.org> User-Agent: Alpine 2.00 (BSF 1167 2008-08-23) X-NCC-RegID: ru.rinet X-OpenPGP-Key-ID: 6B691B03 MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.4.3 (woozle.rinet.ru [0.0.0.0]); Sun, 24 May 2015 17:55:20 +0300 (MSK) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 14:59:46 -0000 On Sun, 24 May 2015, Dmitry Chagin wrote: > Author: dchagin > Date: Sun May 24 14:53:16 2015 > New Revision: 283383 > URL: https://svnweb.freebsd.org/changeset/base/283383 > > Log: > Switch linuxulator to use the native 1:1 threads. Wow. Quite a bit of work! -- Sincerely, D.Marck [DM5020, MCK-RIPE, DM3-RIPN] [ FreeBSD committer: marck@FreeBSD.org ] ------------------------------------------------------------------------ *** Dmitry Morozovsky --- D.Marck --- Wild Woozle --- marck@rinet.ru *** ------------------------------------------------------------------------ From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:00:28 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D8E53A2D; Sun, 24 May 2015 15:00:28 +0000 (UTC) Received: from svn.freebsd.org (svn.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 AD40D192C; Sun, 24 May 2015 15:00:28 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OF0SXd035961; Sun, 24 May 2015 15:00:28 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OF0Sxp035959; Sun, 24 May 2015 15:00:28 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241500.t4OF0Sxp035959@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:00:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283390 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:00:29 -0000 Author: dchagin Date: Sun May 24 15:00:27 2015 New Revision: 283390 URL: https://svnweb.freebsd.org/changeset/base/283390 Log: Add a function for converting wait options. Differential Revision: https://reviews.freebsd.org/D1045 Reviewed by: trasz Modified: head/sys/compat/linux/linux_misc.c head/sys/compat/linux/linux_misc.h Modified: head/sys/compat/linux/linux_misc.c ============================================================================== --- head/sys/compat/linux/linux_misc.c Sun May 24 14:58:30 2015 (r283389) +++ head/sys/compat/linux/linux_misc.c Sun May 24 15:00:27 2015 (r283390) @@ -2008,3 +2008,22 @@ linux_tdfind(struct thread *td, lwpid_t return (tdt); } + +void +linux_to_bsd_waitopts(int options, int *bsdopts) +{ + + if (options & LINUX_WNOHANG) + *bsdopts |= WNOHANG; + if (options & LINUX_WUNTRACED) + *bsdopts |= WUNTRACED; + if (options & LINUX_WEXITED) + *bsdopts |= WEXITED; + if (options & LINUX_WCONTINUED) + *bsdopts |= WCONTINUED; + if (options & LINUX_WNOWAIT) + *bsdopts |= WNOWAIT; + + if (options & __WCLONE) + *bsdopts |= WLINUXCLONE; +} Modified: head/sys/compat/linux/linux_misc.h ============================================================================== --- head/sys/compat/linux/linux_misc.h Sun May 24 14:58:30 2015 (r283389) +++ head/sys/compat/linux/linux_misc.h Sun May 24 15:00:27 2015 (r283390) @@ -113,10 +113,21 @@ struct l_new_utsname { extern int stclohz; -#define __WCLONE 0x80000000 +#define LINUX_WNOHANG 0x00000001 +#define LINUX_WUNTRACED 0x00000002 +#define LINUX_WSTOPPED LINUX_WUNTRACED +#define LINUX_WEXITED 0x00000004 +#define LINUX_WCONTINUED 0x00000008 +#define LINUX_WNOWAIT 0x01000000 + + +#define __WNOTHREAD 0x20000000 +#define __WALL 0x40000000 +#define __WCLONE 0x80000000 int linux_common_wait(struct thread *td, int pid, int *status, int options, struct rusage *ru); +void linux_to_bsd_waitopts(int options, int *bsdopts); int linux_set_upcall_kse(struct thread *td, register_t stack); int linux_set_cloned_tls(struct thread *td, void *desc); struct thread *linux_tdfind(struct thread *, lwpid_t, pid_t); From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:03:12 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2C20FBAF; Sun, 24 May 2015 15:03:12 +0000 (UTC) Received: from svn.freebsd.org (svn.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 1A1CA1A2A; Sun, 24 May 2015 15:03:12 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OF3Bp6039913; Sun, 24 May 2015 15:03:11 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OF3AQA039904; Sun, 24 May 2015 15:03:10 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241503.t4OF3AQA039904@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:03:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283391 - in head/sys: amd64/linux32 compat/linux i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:03:12 -0000 Author: dchagin Date: Sun May 24 15:03:09 2015 New Revision: 283391 URL: https://svnweb.freebsd.org/changeset/base/283391 Log: To reduce code duplication introduce linux_copyout_rusage() method. Use it in linux_wait4() system call and move linux_wait4() to the MI path. While here add a prototype for the static bsd_to_linux_rusage(). Differential Revision: https://reviews.freebsd.org/D2138 Reviewed by: trasz Modified: head/sys/amd64/linux32/linux.h head/sys/amd64/linux32/linux32_genassym.c head/sys/amd64/linux32/linux32_machdep.c head/sys/compat/linux/linux_misc.c head/sys/i386/linux/linux.h head/sys/i386/linux/linux_machdep.c Modified: head/sys/amd64/linux32/linux.h ============================================================================== --- head/sys/amd64/linux32/linux.h Sun May 24 15:00:27 2015 (r283390) +++ head/sys/amd64/linux32/linux.h Sun May 24 15:03:09 2015 (r283391) @@ -780,6 +780,7 @@ struct l_iovec32 { int linux32_copyiniov(struct l_iovec32 *iovp32, l_ulong iovcnt, struct iovec **iovp, int error); +int linux_copyout_rusage(struct rusage *ru, void *uaddr); /* robust futexes */ struct linux_robust_list { Modified: head/sys/amd64/linux32/linux32_genassym.c ============================================================================== --- head/sys/amd64/linux32/linux32_genassym.c Sun May 24 15:00:27 2015 (r283390) +++ head/sys/amd64/linux32/linux32_genassym.c Sun May 24 15:03:09 2015 (r283391) @@ -3,6 +3,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include Modified: head/sys/amd64/linux32/linux32_machdep.c ============================================================================== --- head/sys/amd64/linux32/linux32_machdep.c Sun May 24 15:00:27 2015 (r283390) +++ head/sys/amd64/linux32/linux32_machdep.c Sun May 24 15:03:09 2015 (r283391) @@ -72,6 +72,8 @@ __FBSDID("$FreeBSD$"); #include #include +static void bsd_to_linux_rusage(struct rusage *ru, struct l_rusage *lru); + struct l_old_select_argv { l_int nfds; l_uintptr_t readfds; @@ -133,6 +135,16 @@ bsd_to_linux_rusage(struct rusage *ru, s } int +linux_copyout_rusage(struct rusage *ru, void *uaddr) +{ + struct l_rusage lru; + + bsd_to_linux_rusage(ru, &lru); + + return (copyout(&lru, uaddr, sizeof(struct l_rusage))); +} + +int linux_execve(struct thread *td, struct linux_execve_args *args) { struct image_args eargs; @@ -908,17 +920,14 @@ linux_settimeofday(struct thread *td, st int linux_getrusage(struct thread *td, struct linux_getrusage_args *uap) { - struct l_rusage s32; struct rusage s; int error; error = kern_getrusage(td, uap->who, &s); if (error != 0) return (error); - if (uap->rusage != NULL) { - bsd_to_linux_rusage(&s, &s32); - error = copyout(&s32, uap->rusage, sizeof(s32)); - } + if (uap->rusage != NULL) + error = linux_copyout_rusage(&s, uap->rusage); return (error); } @@ -1024,37 +1033,3 @@ linux_set_thread_area(struct thread *td, return (0); } - -int -linux_wait4(struct thread *td, struct linux_wait4_args *args) -{ - int error, options; - struct rusage ru, *rup; - struct l_rusage lru; - -#ifdef DEBUG - if (ldebug(wait4)) - printf(ARGS(wait4, "%d, %p, %d, %p"), - args->pid, (void *)args->status, args->options, - (void *)args->rusage); -#endif - - options = (args->options & (WNOHANG | WUNTRACED)); - /* WLINUXCLONE should be equal to __WCLONE, but we make sure */ - if (args->options & __WCLONE) - options |= WLINUXCLONE; - - if (args->rusage != NULL) - rup = &ru; - else - rup = NULL; - error = linux_common_wait(td, args->pid, args->status, options, rup); - if (error) - return (error); - if (args->rusage != NULL) { - bsd_to_linux_rusage(rup, &lru); - error = copyout(&lru, args->rusage, sizeof(lru)); - } - - return (error); -} Modified: head/sys/compat/linux/linux_misc.c ============================================================================== --- head/sys/compat/linux/linux_misc.c Sun May 24 15:00:27 2015 (r283390) +++ head/sys/compat/linux/linux_misc.c Sun May 24 15:03:09 2015 (r283391) @@ -886,6 +886,35 @@ linux_waitpid(struct thread *td, struct return (linux_common_wait(td, args->pid, args->status, options, NULL)); } +int +linux_wait4(struct thread *td, struct linux_wait4_args *args) +{ + int error, options; + struct rusage ru, *rup; + +#ifdef DEBUG + if (ldebug(wait4)) + printf(ARGS(wait4, "%d, %p, %d, %p"), + args->pid, (void *)args->status, args->options, + (void *)args->rusage); +#endif + + options = (args->options & (WNOHANG | WUNTRACED)); + /* WLINUXCLONE should be equal to __WCLONE, but we make sure */ + if (args->options & __WCLONE) + options |= WLINUXCLONE; + + if (args->rusage != NULL) + rup = &ru; + else + rup = NULL; + error = linux_common_wait(td, args->pid, args->status, options, rup); + if (error != 0) + return (error); + if (args->rusage != NULL) + error = linux_copyout_rusage(&ru, args->rusage); + return (error); +} int linux_mknod(struct thread *td, struct linux_mknod_args *args) Modified: head/sys/i386/linux/linux.h ============================================================================== --- head/sys/i386/linux/linux.h Sun May 24 15:00:27 2015 (r283390) +++ head/sys/i386/linux/linux.h Sun May 24 15:03:09 2015 (r283391) @@ -741,6 +741,8 @@ struct l_desc_struct { #define LINUX_GET_USEABLE(desc) \ (((desc)->b >> LINUX_ENTRY_B_USEABLE) & 1) +#define linux_copyout_rusage(r, u) copyout(r, u, sizeof(*r)) + /* robust futexes */ struct linux_robust_list { struct linux_robust_list *next; Modified: head/sys/i386/linux/linux_machdep.c ============================================================================== --- head/sys/i386/linux/linux_machdep.c Sun May 24 15:00:27 2015 (r283390) +++ head/sys/i386/linux/linux_machdep.c Sun May 24 15:03:09 2015 (r283391) @@ -1047,34 +1047,3 @@ linux_mq_getsetattr(struct thread *td, s return (ENOSYS); #endif } - -int -linux_wait4(struct thread *td, struct linux_wait4_args *args) -{ - int error, options; - struct rusage ru, *rup; - -#ifdef DEBUG - if (ldebug(wait4)) - printf(ARGS(wait4, "%d, %p, %d, %p"), - args->pid, (void *)args->status, args->options, - (void *)args->rusage); -#endif - - options = (args->options & (WNOHANG | WUNTRACED)); - /* WLINUXCLONE should be equal to __WCLONE, but we make sure */ - if (args->options & __WCLONE) - options |= WLINUXCLONE; - - if (args->rusage != NULL) - rup = &ru; - else - rup = NULL; - error = linux_common_wait(td, args->pid, args->status, options, rup); - if (error) - return (error); - if (args->rusage != NULL) - error = copyout(&ru, args->rusage, sizeof(ru)); - - return (error); -} From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:04:13 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 61798CFE; Sun, 24 May 2015 15:04:13 +0000 (UTC) Received: from svn.freebsd.org (svn.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 4F1431A34; Sun, 24 May 2015 15:04:13 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OF4DTK040110; Sun, 24 May 2015 15:04:13 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OF4DZO040109; Sun, 24 May 2015 15:04:13 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241504.t4OF4DZO040109@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:04:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283392 - head/sys/i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:04:13 -0000 Author: dchagin Date: Sun May 24 15:04:12 2015 New Revision: 283392 URL: https://svnweb.freebsd.org/changeset/base/283392 Log: struct l_rusage does not defined for i386 Linuxulator due to it's nature. Differential Revision: https://reviews.freebsd.org/D2139 Modified: head/sys/i386/linux/syscalls.master Modified: head/sys/i386/linux/syscalls.master ============================================================================== --- head/sys/i386/linux/syscalls.master Sun May 24 15:03:09 2015 (r283391) +++ head/sys/i386/linux/syscalls.master Sun May 24 15:04:12 2015 (r283392) @@ -208,7 +208,7 @@ 113 AUE_NULL STD { int linux_vm86old(void); } 114 AUE_WAIT4 STD { int linux_wait4(l_pid_t pid, \ l_int *status, l_int options, \ - struct l_rusage *rusage); } + void *rusage); } 115 AUE_SWAPOFF STD { int linux_swapoff(void); } 116 AUE_NULL STD { int linux_sysinfo(struct l_sysinfo *info); } 117 AUE_NULL STD { int linux_ipc(l_uint what, l_int arg1, \ From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:05:24 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5879BE68; Sun, 24 May 2015 15:05:24 +0000 (UTC) Received: from svn.freebsd.org (svn.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 46CF11A4C; Sun, 24 May 2015 15:05:24 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OF5OpH040357; Sun, 24 May 2015 15:05:24 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OF5Ml3040348; Sun, 24 May 2015 15:05:22 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241505.t4OF5Ml3040348@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:05:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283393 - head/sys/i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:05:24 -0000 Author: dchagin Date: Sun May 24 15:05:22 2015 New Revision: 283393 URL: https://svnweb.freebsd.org/changeset/base/283393 Log: Regen for r283392. Modified: head/sys/i386/linux/linux_proto.h head/sys/i386/linux/linux_syscall.h head/sys/i386/linux/linux_syscalls.c head/sys/i386/linux/linux_sysent.c head/sys/i386/linux/linux_systrace_args.c Modified: head/sys/i386/linux/linux_proto.h ============================================================================== --- head/sys/i386/linux/linux_proto.h Sun May 24 15:04:12 2015 (r283392) +++ head/sys/i386/linux/linux_proto.h Sun May 24 15:05:22 2015 (r283393) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283379 2015-05-24 14:45:57Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283392 2015-05-24 15:04:12Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -360,7 +360,7 @@ struct linux_wait4_args { char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; char status_l_[PADL_(l_int *)]; l_int * status; char status_r_[PADR_(l_int *)]; char options_l_[PADL_(l_int)]; l_int options; char options_r_[PADR_(l_int)]; - char rusage_l_[PADL_(struct l_rusage *)]; struct l_rusage * rusage; char rusage_r_[PADR_(struct l_rusage *)]; + char rusage_l_[PADL_(void *)]; void * rusage; char rusage_r_[PADR_(void *)]; }; struct linux_swapoff_args { register_t dummy; Modified: head/sys/i386/linux/linux_syscall.h ============================================================================== --- head/sys/i386/linux/linux_syscall.h Sun May 24 15:04:12 2015 (r283392) +++ head/sys/i386/linux/linux_syscall.h Sun May 24 15:05:22 2015 (r283393) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283379 2015-05-24 14:45:57Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283392 2015-05-24 15:04:12Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/i386/linux/linux_syscalls.c ============================================================================== --- head/sys/i386/linux/linux_syscalls.c Sun May 24 15:04:12 2015 (r283392) +++ head/sys/i386/linux/linux_syscalls.c Sun May 24 15:05:22 2015 (r283393) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283379 2015-05-24 14:45:57Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283392 2015-05-24 15:04:12Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/i386/linux/linux_sysent.c ============================================================================== --- head/sys/i386/linux/linux_sysent.c Sun May 24 15:04:12 2015 (r283392) +++ head/sys/i386/linux/linux_sysent.c Sun May 24 15:05:22 2015 (r283393) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283379 2015-05-24 14:45:57Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283392 2015-05-24 15:04:12Z dchagin */ #include Modified: head/sys/i386/linux/linux_systrace_args.c ============================================================================== --- head/sys/i386/linux/linux_systrace_args.c Sun May 24 15:04:12 2015 (r283392) +++ head/sys/i386/linux/linux_systrace_args.c Sun May 24 15:05:22 2015 (r283393) @@ -792,7 +792,7 @@ systrace_args(int sysnum, void *params, iarg[0] = p->pid; /* l_pid_t */ uarg[1] = (intptr_t) p->status; /* l_int * */ iarg[2] = p->options; /* l_int */ - uarg[3] = (intptr_t) p->rusage; /* struct l_rusage * */ + uarg[3] = (intptr_t) p->rusage; /* void * */ *n_args = 4; break; } @@ -3548,7 +3548,7 @@ systrace_entry_setargdesc(int sysnum, in p = "l_int"; break; case 3: - p = "struct l_rusage *"; + p = "void *"; break; default: break; From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:06:41 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A00F0FD5; Sun, 24 May 2015 15:06:41 +0000 (UTC) Received: from svn.freebsd.org (svn.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 810A01A5E; Sun, 24 May 2015 15:06:41 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OF6faH040574; Sun, 24 May 2015 15:06:41 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OF6d6v040562; Sun, 24 May 2015 15:06:39 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241506.t4OF6d6v040562@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:06:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283394 - in head/sys: amd64/linux32 compat/linux i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:06:41 -0000 Author: dchagin Date: Sun May 24 15:06:39 2015 New Revision: 283394 URL: https://svnweb.freebsd.org/changeset/base/283394 Log: Implement waitid() system call. Differential Revision: https://reviews.freebsd.org/D1046 Modified: head/sys/amd64/linux32/linux32_dummy.c head/sys/amd64/linux32/syscalls.master head/sys/compat/linux/linux_misc.c head/sys/compat/linux/linux_misc.h head/sys/i386/linux/linux_dummy.c head/sys/i386/linux/syscalls.master Modified: head/sys/amd64/linux32/linux32_dummy.c ============================================================================== --- head/sys/amd64/linux32/linux32_dummy.c Sun May 24 15:05:22 2015 (r283393) +++ head/sys/amd64/linux32/linux32_dummy.c Sun May 24 15:06:39 2015 (r283394) @@ -84,7 +84,6 @@ DUMMY(mq_timedreceive); DUMMY(mq_notify); DUMMY(mq_getsetattr); DUMMY(kexec_load); -DUMMY(waitid); /* linux 2.6.11: */ DUMMY(add_key); DUMMY(request_key); Modified: head/sys/amd64/linux32/syscalls.master ============================================================================== --- head/sys/amd64/linux32/syscalls.master Sun May 24 15:05:22 2015 (r283393) +++ head/sys/amd64/linux32/syscalls.master Sun May 24 15:06:39 2015 (r283394) @@ -466,7 +466,9 @@ 281 AUE_NULL STD { int linux_mq_notify(void); } 282 AUE_NULL STD { int linux_mq_getsetattr(void); } 283 AUE_NULL STD { int linux_kexec_load(void); } -284 AUE_NULL STD { int linux_waitid(void); } +284 AUE_WAIT6 STD { int linux_waitid(int idtype, l_pid_t id, \ + l_siginfo_t *info, int options, \ + struct l_rusage *rusage); } 285 AUE_NULL UNIMPL ; linux 2.6.11: 286 AUE_NULL STD { int linux_add_key(void); } Modified: head/sys/compat/linux/linux_misc.c ============================================================================== --- head/sys/compat/linux/linux_misc.c Sun May 24 15:05:22 2015 (r283393) +++ head/sys/compat/linux/linux_misc.c Sun May 24 15:06:39 2015 (r283394) @@ -917,6 +917,68 @@ linux_wait4(struct thread *td, struct li } int +linux_waitid(struct thread *td, struct linux_waitid_args *args) +{ + int status, options, sig; + struct __wrusage wru; + siginfo_t siginfo; + l_siginfo_t lsi; + idtype_t idtype; + struct proc *p; + int error; + + options = 0; + linux_to_bsd_waitopts(args->options, &options); + + if (options & ~(WNOHANG | WNOWAIT | WEXITED | WUNTRACED | WCONTINUED)) + return (EINVAL); + if (!(options & (WEXITED | WUNTRACED | WCONTINUED))) + return (EINVAL); + + switch (args->idtype) { + case LINUX_P_ALL: + idtype = P_ALL; + break; + case LINUX_P_PID: + if (args->id <= 0) + return (EINVAL); + idtype = P_PID; + break; + case LINUX_P_PGID: + if (args->id <= 0) + return (EINVAL); + idtype = P_PGID; + break; + default: + return (EINVAL); + } + + error = kern_wait6(td, idtype, args->id, &status, options, + &wru, &siginfo); + if (error != 0) + return (error); + if (args->rusage != NULL) { + error = linux_copyout_rusage(&wru.wru_children, + args->rusage); + if (error != 0) + return (error); + } + if (args->info != NULL) { + p = td->td_proc; + if (td->td_retval[0] == 0) + bzero(&lsi, sizeof(lsi)); + else { + sig = BSD_TO_LINUX_SIGNAL(siginfo.si_signo); + siginfo_to_lsiginfo(&siginfo, &lsi, sig); + } + error = copyout(&lsi, args->info, sizeof(lsi)); + } + td->td_retval[0] = 0; + + return (error); +} + +int linux_mknod(struct thread *td, struct linux_mknod_args *args) { char *path; Modified: head/sys/compat/linux/linux_misc.h ============================================================================== --- head/sys/compat/linux/linux_misc.h Sun May 24 15:05:22 2015 (r283393) +++ head/sys/compat/linux/linux_misc.h Sun May 24 15:06:39 2015 (r283394) @@ -125,6 +125,12 @@ extern int stclohz; #define __WALL 0x40000000 #define __WCLONE 0x80000000 +/* Linux waitid idtype */ +#define LINUX_P_ALL 0 +#define LINUX_P_PID 1 +#define LINUX_P_PGID 2 + + int linux_common_wait(struct thread *td, int pid, int *status, int options, struct rusage *ru); void linux_to_bsd_waitopts(int options, int *bsdopts); Modified: head/sys/i386/linux/linux_dummy.c ============================================================================== --- head/sys/i386/linux/linux_dummy.c Sun May 24 15:05:22 2015 (r283393) +++ head/sys/i386/linux/linux_dummy.c Sun May 24 15:06:39 2015 (r283394) @@ -80,7 +80,6 @@ DUMMY(mbind); DUMMY(get_mempolicy); DUMMY(set_mempolicy); DUMMY(kexec_load); -DUMMY(waitid); /* linux 2.6.11: */ DUMMY(add_key); DUMMY(request_key); Modified: head/sys/i386/linux/syscalls.master ============================================================================== --- head/sys/i386/linux/syscalls.master Sun May 24 15:05:22 2015 (r283393) +++ head/sys/i386/linux/syscalls.master Sun May 24 15:06:39 2015 (r283394) @@ -474,7 +474,9 @@ 282 AUE_NULL STD { int linux_mq_getsetattr(l_mqd_t mqd, const struct mq_attr *attr, \ struct mq_attr *oattr); } 283 AUE_NULL STD { int linux_kexec_load(void); } -284 AUE_NULL STD { int linux_waitid(void); } +284 AUE_WAIT6 STD { int linux_waitid(int idtype, l_pid_t id, \ + l_siginfo_t *info, int options, \ + void *rusage); } 285 AUE_NULL UNIMPL ; linux 2.6.11: 286 AUE_NULL STD { int linux_add_key(void); } From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:08:29 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3A8261C6; Sun, 24 May 2015 15:08:29 +0000 (UTC) Received: from svn.freebsd.org (svn.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 2779F1A7B; Sun, 24 May 2015 15:08:29 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OF8TWK040900; Sun, 24 May 2015 15:08:29 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OF8QZP040883; Sun, 24 May 2015 15:08:26 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241508.t4OF8QZP040883@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:08:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283395 - in head/sys: amd64/linux32 i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:08:29 -0000 Author: dchagin Date: Sun May 24 15:08:25 2015 New Revision: 283395 URL: https://svnweb.freebsd.org/changeset/base/283395 Log: Regen for r283394. Modified: head/sys/amd64/linux32/linux32_proto.h head/sys/amd64/linux32/linux32_syscall.h head/sys/amd64/linux32/linux32_syscalls.c head/sys/amd64/linux32/linux32_sysent.c head/sys/amd64/linux32/linux32_systrace_args.c head/sys/i386/linux/linux_proto.h head/sys/i386/linux/linux_syscall.h head/sys/i386/linux/linux_syscalls.c head/sys/i386/linux/linux_sysent.c head/sys/i386/linux/linux_systrace_args.c Modified: head/sys/amd64/linux32/linux32_proto.h ============================================================================== --- head/sys/amd64/linux32/linux32_proto.h Sun May 24 15:06:39 2015 (r283394) +++ head/sys/amd64/linux32/linux32_proto.h Sun May 24 15:08:25 2015 (r283395) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283379 2015-05-24 14:45:57Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283394 2015-05-24 15:06:39Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -884,7 +884,11 @@ struct linux_kexec_load_args { register_t dummy; }; struct linux_waitid_args { - register_t dummy; + char idtype_l_[PADL_(int)]; int idtype; char idtype_r_[PADR_(int)]; + char id_l_[PADL_(l_pid_t)]; l_pid_t id; char id_r_[PADR_(l_pid_t)]; + char info_l_[PADL_(l_siginfo_t *)]; l_siginfo_t * info; char info_r_[PADR_(l_siginfo_t *)]; + char options_l_[PADL_(int)]; int options; char options_r_[PADR_(int)]; + char rusage_l_[PADL_(struct l_rusage *)]; struct l_rusage * rusage; char rusage_r_[PADR_(struct l_rusage *)]; }; struct linux_add_key_args { register_t dummy; @@ -1634,7 +1638,7 @@ int linux_process_vm_writev(struct threa #define LINUX_SYS_AUE_linux_mq_notify AUE_NULL #define LINUX_SYS_AUE_linux_mq_getsetattr AUE_NULL #define LINUX_SYS_AUE_linux_kexec_load AUE_NULL -#define LINUX_SYS_AUE_linux_waitid AUE_NULL +#define LINUX_SYS_AUE_linux_waitid AUE_WAIT6 #define LINUX_SYS_AUE_linux_add_key AUE_NULL #define LINUX_SYS_AUE_linux_request_key AUE_NULL #define LINUX_SYS_AUE_linux_keyctl AUE_NULL Modified: head/sys/amd64/linux32/linux32_syscall.h ============================================================================== --- head/sys/amd64/linux32/linux32_syscall.h Sun May 24 15:06:39 2015 (r283394) +++ head/sys/amd64/linux32/linux32_syscall.h Sun May 24 15:08:25 2015 (r283395) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283379 2015-05-24 14:45:57Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283394 2015-05-24 15:06:39Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/amd64/linux32/linux32_syscalls.c ============================================================================== --- head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 15:06:39 2015 (r283394) +++ head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 15:08:25 2015 (r283395) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283379 2015-05-24 14:45:57Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283394 2015-05-24 15:06:39Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/amd64/linux32/linux32_sysent.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysent.c Sun May 24 15:06:39 2015 (r283394) +++ head/sys/amd64/linux32/linux32_sysent.c Sun May 24 15:08:25 2015 (r283395) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283379 2015-05-24 14:45:57Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283394 2015-05-24 15:06:39Z dchagin */ #include "opt_compat.h" @@ -303,7 +303,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_mq_notify, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 281 = linux_mq_notify */ { 0, (sy_call_t *)linux_mq_getsetattr, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 282 = linux_mq_getsetattr */ { 0, (sy_call_t *)linux_kexec_load, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 283 = linux_kexec_load */ - { 0, (sy_call_t *)linux_waitid, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 284 = linux_waitid */ + { AS(linux_waitid_args), (sy_call_t *)linux_waitid, AUE_WAIT6, NULL, 0, 0, 0, SY_THR_STATIC }, /* 284 = linux_waitid */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 285 = */ { 0, (sy_call_t *)linux_add_key, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 286 = linux_add_key */ { 0, (sy_call_t *)linux_request_key, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 287 = linux_request_key */ Modified: head/sys/amd64/linux32/linux32_systrace_args.c ============================================================================== --- head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 15:06:39 2015 (r283394) +++ head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 15:08:25 2015 (r283395) @@ -1886,7 +1886,13 @@ systrace_args(int sysnum, void *params, } /* linux_waitid */ case 284: { - *n_args = 0; + struct linux_waitid_args *p = params; + iarg[0] = p->idtype; /* int */ + iarg[1] = p->id; /* l_pid_t */ + uarg[2] = (intptr_t) p->info; /* l_siginfo_t * */ + iarg[3] = p->options; /* int */ + uarg[4] = (intptr_t) p->rusage; /* struct l_rusage * */ + *n_args = 5; break; } /* linux_add_key */ @@ -5068,6 +5074,25 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_waitid */ case 284: + switch(ndx) { + case 0: + p = "int"; + break; + case 1: + p = "l_pid_t"; + break; + case 2: + p = "l_siginfo_t *"; + break; + case 3: + p = "int"; + break; + case 4: + p = "struct l_rusage *"; + break; + default: + break; + }; break; /* linux_add_key */ case 286: @@ -6569,6 +6594,9 @@ systrace_return_setargdesc(int sysnum, i case 283: /* linux_waitid */ case 284: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_add_key */ case 286: /* linux_request_key */ Modified: head/sys/i386/linux/linux_proto.h ============================================================================== --- head/sys/i386/linux/linux_proto.h Sun May 24 15:06:39 2015 (r283394) +++ head/sys/i386/linux/linux_proto.h Sun May 24 15:08:25 2015 (r283395) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283392 2015-05-24 15:04:12Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283394 2015-05-24 15:06:39Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -902,7 +902,11 @@ struct linux_kexec_load_args { register_t dummy; }; struct linux_waitid_args { - register_t dummy; + char idtype_l_[PADL_(int)]; int idtype; char idtype_r_[PADR_(int)]; + char id_l_[PADL_(l_pid_t)]; l_pid_t id; char id_r_[PADR_(l_pid_t)]; + char info_l_[PADL_(l_siginfo_t *)]; l_siginfo_t * info; char info_r_[PADR_(l_siginfo_t *)]; + char options_l_[PADL_(int)]; int options; char options_r_[PADR_(int)]; + char rusage_l_[PADL_(void *)]; void * rusage; char rusage_r_[PADR_(void *)]; }; struct linux_add_key_args { register_t dummy; @@ -1656,7 +1660,7 @@ int linux_process_vm_writev(struct threa #define LINUX_SYS_AUE_linux_mq_notify AUE_NULL #define LINUX_SYS_AUE_linux_mq_getsetattr AUE_NULL #define LINUX_SYS_AUE_linux_kexec_load AUE_NULL -#define LINUX_SYS_AUE_linux_waitid AUE_NULL +#define LINUX_SYS_AUE_linux_waitid AUE_WAIT6 #define LINUX_SYS_AUE_linux_add_key AUE_NULL #define LINUX_SYS_AUE_linux_request_key AUE_NULL #define LINUX_SYS_AUE_linux_keyctl AUE_NULL Modified: head/sys/i386/linux/linux_syscall.h ============================================================================== --- head/sys/i386/linux/linux_syscall.h Sun May 24 15:06:39 2015 (r283394) +++ head/sys/i386/linux/linux_syscall.h Sun May 24 15:08:25 2015 (r283395) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283392 2015-05-24 15:04:12Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283394 2015-05-24 15:06:39Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/i386/linux/linux_syscalls.c ============================================================================== --- head/sys/i386/linux/linux_syscalls.c Sun May 24 15:06:39 2015 (r283394) +++ head/sys/i386/linux/linux_syscalls.c Sun May 24 15:08:25 2015 (r283395) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283392 2015-05-24 15:04:12Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283394 2015-05-24 15:06:39Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/i386/linux/linux_sysent.c ============================================================================== --- head/sys/i386/linux/linux_sysent.c Sun May 24 15:06:39 2015 (r283394) +++ head/sys/i386/linux/linux_sysent.c Sun May 24 15:08:25 2015 (r283395) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283392 2015-05-24 15:04:12Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283394 2015-05-24 15:06:39Z dchagin */ #include @@ -302,7 +302,7 @@ struct sysent linux_sysent[] = { { AS(linux_mq_notify_args), (sy_call_t *)linux_mq_notify, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 281 = linux_mq_notify */ { AS(linux_mq_getsetattr_args), (sy_call_t *)linux_mq_getsetattr, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 282 = linux_mq_getsetattr */ { 0, (sy_call_t *)linux_kexec_load, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 283 = linux_kexec_load */ - { 0, (sy_call_t *)linux_waitid, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 284 = linux_waitid */ + { AS(linux_waitid_args), (sy_call_t *)linux_waitid, AUE_WAIT6, NULL, 0, 0, 0, SY_THR_STATIC }, /* 284 = linux_waitid */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 285 = */ { 0, (sy_call_t *)linux_add_key, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 286 = linux_add_key */ { 0, (sy_call_t *)linux_request_key, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 287 = linux_request_key */ Modified: head/sys/i386/linux/linux_systrace_args.c ============================================================================== --- head/sys/i386/linux/linux_systrace_args.c Sun May 24 15:06:39 2015 (r283394) +++ head/sys/i386/linux/linux_systrace_args.c Sun May 24 15:08:25 2015 (r283395) @@ -1962,7 +1962,13 @@ systrace_args(int sysnum, void *params, } /* linux_waitid */ case 284: { - *n_args = 0; + struct linux_waitid_args *p = params; + iarg[0] = p->idtype; /* int */ + iarg[1] = p->id; /* l_pid_t */ + uarg[2] = (intptr_t) p->info; /* l_siginfo_t * */ + iarg[3] = p->options; /* int */ + uarg[4] = (intptr_t) p->rusage; /* void * */ + *n_args = 5; break; } /* linux_add_key */ @@ -5299,6 +5305,25 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_waitid */ case 284: + switch(ndx) { + case 0: + p = "int"; + break; + case 1: + p = "l_pid_t"; + break; + case 2: + p = "l_siginfo_t *"; + break; + case 3: + p = "int"; + break; + case 4: + p = "void *"; + break; + default: + break; + }; break; /* linux_add_key */ case 286: @@ -6847,6 +6872,9 @@ systrace_return_setargdesc(int sysnum, i case 283: /* linux_waitid */ case 284: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_add_key */ case 286: /* linux_request_key */ From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:11:34 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 6C165353; Sun, 24 May 2015 15:11:34 +0000 (UTC) Received: from svn.freebsd.org (svn.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 4C8E21A9E; Sun, 24 May 2015 15:11:34 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OFBYgp044461; Sun, 24 May 2015 15:11:34 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OFBW1c044455; Sun, 24 May 2015 15:11:32 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241511.t4OFBW1c044455@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:11:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283396 - in head/sys: amd64/linux32 compat/linux i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:11:34 -0000 Author: dchagin Date: Sun May 24 15:11:32 2015 New Revision: 283396 URL: https://svnweb.freebsd.org/changeset/base/283396 Log: Implement rt_sigqueueinfo() system call. Differential Revision: https://reviews.freebsd.org/D1047 Reviewed by: trasz Modified: head/sys/amd64/linux32/linux32_dummy.c head/sys/amd64/linux32/syscalls.master head/sys/compat/linux/linux_signal.c head/sys/compat/linux/linux_signal.h head/sys/i386/linux/linux_dummy.c head/sys/i386/linux/syscalls.master Modified: head/sys/amd64/linux32/linux32_dummy.c ============================================================================== --- head/sys/amd64/linux32/linux32_dummy.c Sun May 24 15:08:25 2015 (r283395) +++ head/sys/amd64/linux32/linux32_dummy.c Sun May 24 15:11:32 2015 (r283396) @@ -61,7 +61,6 @@ DUMMY(bdflush); DUMMY(sysfs); DUMMY(query_module); DUMMY(nfsservctl); -DUMMY(rt_sigqueueinfo); DUMMY(sendfile); DUMMY(setfsuid); DUMMY(setfsgid); Modified: head/sys/amd64/linux32/syscalls.master ============================================================================== --- head/sys/amd64/linux32/syscalls.master Sun May 24 15:08:25 2015 (r283395) +++ head/sys/amd64/linux32/syscalls.master Sun May 24 15:11:32 2015 (r283396) @@ -318,7 +318,8 @@ l_siginfo_t *ptr, \ struct l_timeval *timeout, \ l_size_t sigsetsize); } -178 AUE_NULL STD { int linux_rt_sigqueueinfo(void); } +178 AUE_NULL STD { int linux_rt_sigqueueinfo(l_pid_t pid, l_int sig, \ + l_siginfo_t *info); } 179 AUE_NULL STD { int linux_rt_sigsuspend( \ l_sigset_t *newset, \ l_size_t sigsetsize); } Modified: head/sys/compat/linux/linux_signal.c ============================================================================== --- head/sys/compat/linux/linux_signal.c Sun May 24 15:08:25 2015 (r283395) +++ head/sys/compat/linux/linux_signal.c Sun May 24 15:11:32 2015 (r283396) @@ -751,3 +751,58 @@ siginfo_to_lsiginfo(const siginfo_t *si, break; } } + +void +lsiginfo_to_ksiginfo(const l_siginfo_t *lsi, ksiginfo_t *ksi, int sig) +{ + + ksi->ksi_signo = sig; + ksi->ksi_code = lsi->lsi_code; /* XXX. Convert. */ + ksi->ksi_pid = lsi->lsi_pid; + ksi->ksi_uid = lsi->lsi_uid; + ksi->ksi_status = lsi->lsi_status; + ksi->ksi_addr = PTRIN(lsi->lsi_addr); + ksi->ksi_info.si_value.sival_int = lsi->lsi_int; +} + +int +linux_rt_sigqueueinfo(struct thread *td, struct linux_rt_sigqueueinfo_args *args) +{ + l_siginfo_t linfo; + struct proc *p; + ksiginfo_t ksi; + int error; + int sig; + + if (!LINUX_SIG_VALID(args->sig)) + return (EINVAL); + + error = copyin(args->info, &linfo, sizeof(linfo)); + if (error != 0) + return (error); + + if (linfo.lsi_code >= 0) + return (EPERM); + + if (args->sig > 0 && args->sig <= LINUX_SIGTBLSZ) + sig = linux_to_bsd_signal[_SIG_IDX(args->sig)]; + else + sig = args->sig; + + error = ESRCH; + if ((p = pfind(args->pid)) != NULL || + (p = zpfind(args->pid)) != NULL) { + error = p_cansignal(td, p, sig); + if (error != 0) { + PROC_UNLOCK(p); + return (error); + } + + ksiginfo_init(&ksi); + lsiginfo_to_ksiginfo(&linfo, &ksi, sig); + error = tdsendsignal(p, NULL, sig, &ksi); + PROC_UNLOCK(p); + } + + return (error); +} Modified: head/sys/compat/linux/linux_signal.h ============================================================================== --- head/sys/compat/linux/linux_signal.h Sun May 24 15:08:25 2015 (r283395) +++ head/sys/compat/linux/linux_signal.h Sun May 24 15:11:32 2015 (r283396) @@ -51,6 +51,7 @@ void bsd_to_linux_sigset(sigset_t *, l_s int linux_do_sigaction(struct thread *, int, l_sigaction_t *, l_sigaction_t *); void ksiginfo_to_lsiginfo(const ksiginfo_t *ksi, l_siginfo_t *lsi, l_int sig); void siginfo_to_lsiginfo(const siginfo_t *si, l_siginfo_t *lsi, l_int sig); +void lsiginfo_to_ksiginfo(const l_siginfo_t *lsi, ksiginfo_t *ksi, int sig); #define LINUX_SIG_VALID(sig) ((sig) <= LINUX_NSIG && (sig) > 0) Modified: head/sys/i386/linux/linux_dummy.c ============================================================================== --- head/sys/i386/linux/linux_dummy.c Sun May 24 15:08:25 2015 (r283395) +++ head/sys/i386/linux/linux_dummy.c Sun May 24 15:11:32 2015 (r283396) @@ -64,7 +64,6 @@ DUMMY(sysfs); DUMMY(vm86); DUMMY(query_module); DUMMY(nfsservctl); -DUMMY(rt_sigqueueinfo); DUMMY(sendfile); /* different semantics */ DUMMY(setfsuid); DUMMY(setfsgid); Modified: head/sys/i386/linux/syscalls.master ============================================================================== --- head/sys/i386/linux/syscalls.master Sun May 24 15:08:25 2015 (r283395) +++ head/sys/i386/linux/syscalls.master Sun May 24 15:11:32 2015 (r283396) @@ -320,7 +320,8 @@ l_siginfo_t *ptr, \ struct l_timeval *timeout, \ l_size_t sigsetsize); } -178 AUE_NULL STD { int linux_rt_sigqueueinfo(void); } +178 AUE_NULL STD { int linux_rt_sigqueueinfo(l_pid_t pid, l_int sig, \ + l_siginfo_t *info); } 179 AUE_NULL STD { int linux_rt_sigsuspend( \ l_sigset_t *newset, \ l_size_t sigsetsize); } From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:12:41 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7723F4AF; Sun, 24 May 2015 15:12:41 +0000 (UTC) Received: from svn.freebsd.org (svn.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 592291B55; Sun, 24 May 2015 15:12:41 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OFCfKO045162; Sun, 24 May 2015 15:12:41 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OFCcwQ045149; Sun, 24 May 2015 15:12:38 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241512.t4OFCcwQ045149@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:12:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283397 - in head/sys: amd64/linux32 i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:12:41 -0000 Author: dchagin Date: Sun May 24 15:12:38 2015 New Revision: 283397 URL: https://svnweb.freebsd.org/changeset/base/283397 Log: Regen for r283396. Modified: head/sys/amd64/linux32/linux32_proto.h head/sys/amd64/linux32/linux32_syscall.h head/sys/amd64/linux32/linux32_syscalls.c head/sys/amd64/linux32/linux32_sysent.c head/sys/amd64/linux32/linux32_systrace_args.c head/sys/i386/linux/linux_proto.h head/sys/i386/linux/linux_syscall.h head/sys/i386/linux/linux_syscalls.c head/sys/i386/linux/linux_sysent.c head/sys/i386/linux/linux_systrace_args.c Modified: head/sys/amd64/linux32/linux32_proto.h ============================================================================== --- head/sys/amd64/linux32/linux32_proto.h Sun May 24 15:11:32 2015 (r283396) +++ head/sys/amd64/linux32/linux32_proto.h Sun May 24 15:12:38 2015 (r283397) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283394 2015-05-24 15:06:39Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283396 2015-05-24 15:11:32Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -574,7 +574,9 @@ struct linux_rt_sigtimedwait_args { char sigsetsize_l_[PADL_(l_size_t)]; l_size_t sigsetsize; char sigsetsize_r_[PADR_(l_size_t)]; }; struct linux_rt_sigqueueinfo_args { - register_t dummy; + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; + char sig_l_[PADL_(l_int)]; l_int sig; char sig_r_[PADR_(l_int)]; + char info_l_[PADL_(l_siginfo_t *)]; l_siginfo_t * info; char info_r_[PADR_(l_siginfo_t *)]; }; struct linux_rt_sigsuspend_args { char newset_l_[PADL_(l_sigset_t *)]; l_sigset_t * newset; char newset_r_[PADR_(l_sigset_t *)]; Modified: head/sys/amd64/linux32/linux32_syscall.h ============================================================================== --- head/sys/amd64/linux32/linux32_syscall.h Sun May 24 15:11:32 2015 (r283396) +++ head/sys/amd64/linux32/linux32_syscall.h Sun May 24 15:12:38 2015 (r283397) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283394 2015-05-24 15:06:39Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283396 2015-05-24 15:11:32Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/amd64/linux32/linux32_syscalls.c ============================================================================== --- head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 15:11:32 2015 (r283396) +++ head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 15:12:38 2015 (r283397) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283394 2015-05-24 15:06:39Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283396 2015-05-24 15:11:32Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/amd64/linux32/linux32_sysent.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysent.c Sun May 24 15:11:32 2015 (r283396) +++ head/sys/amd64/linux32/linux32_sysent.c Sun May 24 15:12:38 2015 (r283397) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283394 2015-05-24 15:06:39Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283396 2015-05-24 15:11:32Z dchagin */ #include "opt_compat.h" @@ -197,7 +197,7 @@ struct sysent linux_sysent[] = { { AS(linux_rt_sigprocmask_args), (sy_call_t *)linux_rt_sigprocmask, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 175 = linux_rt_sigprocmask */ { AS(linux_rt_sigpending_args), (sy_call_t *)linux_rt_sigpending, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 176 = linux_rt_sigpending */ { AS(linux_rt_sigtimedwait_args), (sy_call_t *)linux_rt_sigtimedwait, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 177 = linux_rt_sigtimedwait */ - { 0, (sy_call_t *)linux_rt_sigqueueinfo, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 178 = linux_rt_sigqueueinfo */ + { AS(linux_rt_sigqueueinfo_args), (sy_call_t *)linux_rt_sigqueueinfo, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 178 = linux_rt_sigqueueinfo */ { AS(linux_rt_sigsuspend_args), (sy_call_t *)linux_rt_sigsuspend, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 179 = linux_rt_sigsuspend */ { AS(linux_pread_args), (sy_call_t *)linux_pread, AUE_PREAD, NULL, 0, 0, 0, SY_THR_STATIC }, /* 180 = linux_pread */ { AS(linux_pwrite_args), (sy_call_t *)linux_pwrite, AUE_PWRITE, NULL, 0, 0, 0, SY_THR_STATIC }, /* 181 = linux_pwrite */ Modified: head/sys/amd64/linux32/linux32_systrace_args.c ============================================================================== --- head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 15:11:32 2015 (r283396) +++ head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 15:12:38 2015 (r283397) @@ -1234,7 +1234,11 @@ systrace_args(int sysnum, void *params, } /* linux_rt_sigqueueinfo */ case 178: { - *n_args = 0; + struct linux_rt_sigqueueinfo_args *p = params; + iarg[0] = p->pid; /* l_pid_t */ + iarg[1] = p->sig; /* l_int */ + uarg[2] = (intptr_t) p->info; /* l_siginfo_t * */ + *n_args = 3; break; } /* linux_rt_sigsuspend */ @@ -4167,6 +4171,19 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_rt_sigqueueinfo */ case 178: + switch(ndx) { + case 0: + p = "l_pid_t"; + break; + case 1: + p = "l_int"; + break; + case 2: + p = "l_siginfo_t *"; + break; + default: + break; + }; break; /* linux_rt_sigsuspend */ case 179: @@ -6245,6 +6262,9 @@ systrace_return_setargdesc(int sysnum, i break; /* linux_rt_sigqueueinfo */ case 178: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_rt_sigsuspend */ case 179: if (ndx == 0 || ndx == 1) Modified: head/sys/i386/linux/linux_proto.h ============================================================================== --- head/sys/i386/linux/linux_proto.h Sun May 24 15:11:32 2015 (r283396) +++ head/sys/i386/linux/linux_proto.h Sun May 24 15:12:38 2015 (r283397) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283394 2015-05-24 15:06:39Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283396 2015-05-24 15:11:32Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -575,7 +575,9 @@ struct linux_rt_sigtimedwait_args { char sigsetsize_l_[PADL_(l_size_t)]; l_size_t sigsetsize; char sigsetsize_r_[PADR_(l_size_t)]; }; struct linux_rt_sigqueueinfo_args { - register_t dummy; + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; + char sig_l_[PADL_(l_int)]; l_int sig; char sig_r_[PADR_(l_int)]; + char info_l_[PADL_(l_siginfo_t *)]; l_siginfo_t * info; char info_r_[PADR_(l_siginfo_t *)]; }; struct linux_rt_sigsuspend_args { char newset_l_[PADL_(l_sigset_t *)]; l_sigset_t * newset; char newset_r_[PADR_(l_sigset_t *)]; Modified: head/sys/i386/linux/linux_syscall.h ============================================================================== --- head/sys/i386/linux/linux_syscall.h Sun May 24 15:11:32 2015 (r283396) +++ head/sys/i386/linux/linux_syscall.h Sun May 24 15:12:38 2015 (r283397) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283394 2015-05-24 15:06:39Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283396 2015-05-24 15:11:32Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/i386/linux/linux_syscalls.c ============================================================================== --- head/sys/i386/linux/linux_syscalls.c Sun May 24 15:11:32 2015 (r283396) +++ head/sys/i386/linux/linux_syscalls.c Sun May 24 15:12:38 2015 (r283397) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283394 2015-05-24 15:06:39Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283396 2015-05-24 15:11:32Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/i386/linux/linux_sysent.c ============================================================================== --- head/sys/i386/linux/linux_sysent.c Sun May 24 15:11:32 2015 (r283396) +++ head/sys/i386/linux/linux_sysent.c Sun May 24 15:12:38 2015 (r283397) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283394 2015-05-24 15:06:39Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283396 2015-05-24 15:11:32Z dchagin */ #include @@ -196,7 +196,7 @@ struct sysent linux_sysent[] = { { AS(linux_rt_sigprocmask_args), (sy_call_t *)linux_rt_sigprocmask, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 175 = linux_rt_sigprocmask */ { AS(linux_rt_sigpending_args), (sy_call_t *)linux_rt_sigpending, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 176 = linux_rt_sigpending */ { AS(linux_rt_sigtimedwait_args), (sy_call_t *)linux_rt_sigtimedwait, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 177 = linux_rt_sigtimedwait */ - { 0, (sy_call_t *)linux_rt_sigqueueinfo, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 178 = linux_rt_sigqueueinfo */ + { AS(linux_rt_sigqueueinfo_args), (sy_call_t *)linux_rt_sigqueueinfo, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 178 = linux_rt_sigqueueinfo */ { AS(linux_rt_sigsuspend_args), (sy_call_t *)linux_rt_sigsuspend, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 179 = linux_rt_sigsuspend */ { AS(linux_pread_args), (sy_call_t *)linux_pread, AUE_PREAD, NULL, 0, 0, 0, SY_THR_STATIC }, /* 180 = linux_pread */ { AS(linux_pwrite_args), (sy_call_t *)linux_pwrite, AUE_PWRITE, NULL, 0, 0, 0, SY_THR_STATIC }, /* 181 = linux_pwrite */ Modified: head/sys/i386/linux/linux_systrace_args.c ============================================================================== --- head/sys/i386/linux/linux_systrace_args.c Sun May 24 15:11:32 2015 (r283396) +++ head/sys/i386/linux/linux_systrace_args.c Sun May 24 15:12:38 2015 (r283397) @@ -1277,7 +1277,11 @@ systrace_args(int sysnum, void *params, } /* linux_rt_sigqueueinfo */ case 178: { - *n_args = 0; + struct linux_rt_sigqueueinfo_args *p = params; + iarg[0] = p->pid; /* l_pid_t */ + iarg[1] = p->sig; /* l_int */ + uarg[2] = (intptr_t) p->info; /* l_siginfo_t * */ + *n_args = 3; break; } /* linux_rt_sigsuspend */ @@ -4304,6 +4308,19 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_rt_sigqueueinfo */ case 178: + switch(ndx) { + case 0: + p = "l_pid_t"; + break; + case 1: + p = "l_int"; + break; + case 2: + p = "l_siginfo_t *"; + break; + default: + break; + }; break; /* linux_rt_sigsuspend */ case 179: @@ -6500,6 +6517,9 @@ systrace_return_setargdesc(int sysnum, i break; /* linux_rt_sigqueueinfo */ case 178: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_rt_sigsuspend */ case 179: if (ndx == 0 || ndx == 1) From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:13:57 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1AD61606; Sun, 24 May 2015 15:13:57 +0000 (UTC) Received: from svn.freebsd.org (svn.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 084C51B6D; Sun, 24 May 2015 15:13:57 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OFDuus045368; Sun, 24 May 2015 15:13:56 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OFDu5X045367; Sun, 24 May 2015 15:13:56 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241513.t4OFDu5X045367@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:13:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283398 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:13:57 -0000 Author: dchagin Date: Sun May 24 15:13:56 2015 New Revision: 283398 URL: https://svnweb.freebsd.org/changeset/base/283398 Log: Sched_rr_get_interval returns EINVAL in case when the invalid pid specified. This silence the ltp tests. Differential Revision: https://reviews.freebsd.org/D1048 Reviewed by: trasz Modified: head/sys/compat/linux/linux_misc.c Modified: head/sys/compat/linux/linux_misc.c ============================================================================== --- head/sys/compat/linux/linux_misc.c Sun May 24 15:12:38 2015 (r283397) +++ head/sys/compat/linux/linux_misc.c Sun May 24 15:13:56 2015 (r283398) @@ -2043,6 +2043,13 @@ linux_sched_rr_get_interval(struct threa struct thread *tdt; int error; + /* + * According to man in case the invalid pid specified + * EINVAL should be returned. + */ + if (uap->pid < 0) + return (EINVAL); + tdt = linux_tdfind(td, uap->pid, -1); if (tdt == NULL) return (ESRCH); From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:14:53 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B4A7E759; Sun, 24 May 2015 15:14:53 +0000 (UTC) Received: from svn.freebsd.org (svn.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 A1F391B7E; Sun, 24 May 2015 15:14:53 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OFErQr045559; Sun, 24 May 2015 15:14:53 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OFEqs5045553; Sun, 24 May 2015 15:14:52 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241514.t4OFEqs5045553@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:14:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283399 - in head/sys: amd64/linux32 compat/linux i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:14:53 -0000 Author: dchagin Date: Sun May 24 15:14:51 2015 New Revision: 283399 URL: https://svnweb.freebsd.org/changeset/base/283399 Log: Implement dup3() system call. Differential Revision: https://reviews.freebsd.org/D1049 Reviewed by: emaste Modified: head/sys/amd64/linux32/linux32_dummy.c head/sys/amd64/linux32/syscalls.master head/sys/compat/linux/linux_file.c head/sys/i386/linux/linux_dummy.c head/sys/i386/linux/syscalls.master Modified: head/sys/amd64/linux32/linux32_dummy.c ============================================================================== --- head/sys/amd64/linux32/linux32_dummy.c Sun May 24 15:13:56 2015 (r283398) +++ head/sys/amd64/linux32/linux32_dummy.c Sun May 24 15:14:51 2015 (r283399) @@ -122,7 +122,6 @@ DUMMY(timerfd_gettime); DUMMY(signalfd4); DUMMY(eventfd2); DUMMY(epoll_create1); -DUMMY(dup3); DUMMY(inotify_init1); /* linux 2.6.30: */ DUMMY(preadv); Modified: head/sys/amd64/linux32/syscalls.master ============================================================================== --- head/sys/amd64/linux32/syscalls.master Sun May 24 15:13:56 2015 (r283398) +++ head/sys/amd64/linux32/syscalls.master Sun May 24 15:14:51 2015 (r283399) @@ -539,7 +539,8 @@ 327 AUE_NULL STD { int linux_signalfd4(void); } 328 AUE_NULL STD { int linux_eventfd2(void); } 329 AUE_NULL STD { int linux_epoll_create1(void); } -330 AUE_NULL STD { int linux_dup3(void); } +330 AUE_NULL STD { int linux_dup3(l_int oldfd, \ + l_int newfd, l_int flags); } 331 AUE_NULL STD { int linux_pipe2(l_int *pipefds, l_int flags); } 332 AUE_NULL STD { int linux_inotify_init1(void); } ; linux 2.6.30: Modified: head/sys/compat/linux/linux_file.c ============================================================================== --- head/sys/compat/linux/linux_file.c Sun May 24 15:13:56 2015 (r283398) +++ head/sys/compat/linux/linux_file.c Sun May 24 15:14:51 2015 (r283399) @@ -1608,3 +1608,22 @@ linux_pipe2(struct thread *td, struct li /* XXX: Close descriptors on error. */ return (copyout(fildes, args->pipefds, sizeof(fildes))); } + +int +linux_dup3(struct thread *td, struct linux_dup3_args *args) +{ + int cmd; + intptr_t newfd; + + if (args->oldfd == args->newfd) + return (EINVAL); + if ((args->flags & ~LINUX_O_CLOEXEC) != 0) + return (EINVAL); + if (args->flags & LINUX_O_CLOEXEC) + cmd = F_DUP2FD_CLOEXEC; + else + cmd = F_DUP2FD; + + newfd = args->newfd; + return (kern_fcntl(td, args->oldfd, cmd, newfd)); +} Modified: head/sys/i386/linux/linux_dummy.c ============================================================================== --- head/sys/i386/linux/linux_dummy.c Sun May 24 15:13:56 2015 (r283398) +++ head/sys/i386/linux/linux_dummy.c Sun May 24 15:14:51 2015 (r283399) @@ -118,7 +118,6 @@ DUMMY(timerfd_gettime); DUMMY(signalfd4); DUMMY(eventfd2); DUMMY(epoll_create1); -DUMMY(dup3); DUMMY(inotify_init1); /* linux 2.6.30: */ DUMMY(preadv); Modified: head/sys/i386/linux/syscalls.master ============================================================================== --- head/sys/i386/linux/syscalls.master Sun May 24 15:13:56 2015 (r283398) +++ head/sys/i386/linux/syscalls.master Sun May 24 15:14:51 2015 (r283399) @@ -547,7 +547,8 @@ 327 AUE_NULL STD { int linux_signalfd4(void); } 328 AUE_NULL STD { int linux_eventfd2(void); } 329 AUE_NULL STD { int linux_epoll_create1(void); } -330 AUE_NULL STD { int linux_dup3(void); } +330 AUE_NULL STD { int linux_dup3(l_int oldfd, \ + l_int newfd, l_int flags); } 331 AUE_NULL STD { int linux_pipe2(l_int *pipefds, l_int flags); } 332 AUE_NULL STD { int linux_inotify_init1(void); } ; linux 2.6.30: From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:15:49 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C933A8B6; Sun, 24 May 2015 15:15:49 +0000 (UTC) Received: from svn.freebsd.org (svn.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 A55471B93; Sun, 24 May 2015 15:15:49 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OFFnIu045797; Sun, 24 May 2015 15:15:49 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OFFkCu045782; Sun, 24 May 2015 15:15:46 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241515.t4OFFkCu045782@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:15:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283400 - in head/sys: amd64/linux32 i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:15:49 -0000 Author: dchagin Date: Sun May 24 15:15:46 2015 New Revision: 283400 URL: https://svnweb.freebsd.org/changeset/base/283400 Log: Regen for r283399. Modified: head/sys/amd64/linux32/linux32_proto.h head/sys/amd64/linux32/linux32_syscall.h head/sys/amd64/linux32/linux32_syscalls.c head/sys/amd64/linux32/linux32_sysent.c head/sys/amd64/linux32/linux32_systrace_args.c head/sys/i386/linux/linux_proto.h head/sys/i386/linux/linux_syscall.h head/sys/i386/linux/linux_syscalls.c head/sys/i386/linux/linux_sysent.c head/sys/i386/linux/linux_systrace_args.c Modified: head/sys/amd64/linux32/linux32_proto.h ============================================================================== --- head/sys/amd64/linux32/linux32_proto.h Sun May 24 15:14:51 2015 (r283399) +++ head/sys/amd64/linux32/linux32_proto.h Sun May 24 15:15:46 2015 (r283400) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283396 2015-05-24 15:11:32Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283399 2015-05-24 15:14:51Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -1064,7 +1064,9 @@ struct linux_epoll_create1_args { register_t dummy; }; struct linux_dup3_args { - register_t dummy; + char oldfd_l_[PADL_(l_int)]; l_int oldfd; char oldfd_r_[PADR_(l_int)]; + char newfd_l_[PADL_(l_int)]; l_int newfd; char newfd_r_[PADR_(l_int)]; + char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)]; }; struct linux_pipe2_args { char pipefds_l_[PADL_(l_int *)]; l_int * pipefds; char pipefds_r_[PADR_(l_int *)]; Modified: head/sys/amd64/linux32/linux32_syscall.h ============================================================================== --- head/sys/amd64/linux32/linux32_syscall.h Sun May 24 15:14:51 2015 (r283399) +++ head/sys/amd64/linux32/linux32_syscall.h Sun May 24 15:15:46 2015 (r283400) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283396 2015-05-24 15:11:32Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283399 2015-05-24 15:14:51Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/amd64/linux32/linux32_syscalls.c ============================================================================== --- head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 15:14:51 2015 (r283399) +++ head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 15:15:46 2015 (r283400) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283396 2015-05-24 15:11:32Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283399 2015-05-24 15:14:51Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/amd64/linux32/linux32_sysent.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysent.c Sun May 24 15:14:51 2015 (r283399) +++ head/sys/amd64/linux32/linux32_sysent.c Sun May 24 15:15:46 2015 (r283400) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283396 2015-05-24 15:11:32Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283399 2015-05-24 15:14:51Z dchagin */ #include "opt_compat.h" @@ -349,7 +349,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_signalfd4, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 327 = linux_signalfd4 */ { 0, (sy_call_t *)linux_eventfd2, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 328 = linux_eventfd2 */ { 0, (sy_call_t *)linux_epoll_create1, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 329 = linux_epoll_create1 */ - { 0, (sy_call_t *)linux_dup3, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 330 = linux_dup3 */ + { AS(linux_dup3_args), (sy_call_t *)linux_dup3, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 330 = linux_dup3 */ { AS(linux_pipe2_args), (sy_call_t *)linux_pipe2, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 331 = linux_pipe2 */ { 0, (sy_call_t *)linux_inotify_init1, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 332 = linux_inotify_init1 */ { 0, (sy_call_t *)linux_preadv, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 333 = linux_preadv */ Modified: head/sys/amd64/linux32/linux32_systrace_args.c ============================================================================== --- head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 15:14:51 2015 (r283399) +++ head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 15:15:46 2015 (r283400) @@ -2190,7 +2190,11 @@ systrace_args(int sysnum, void *params, } /* linux_dup3 */ case 330: { - *n_args = 0; + struct linux_dup3_args *p = params; + iarg[0] = p->oldfd; /* l_int */ + iarg[1] = p->newfd; /* l_int */ + iarg[2] = p->flags; /* l_int */ + *n_args = 3; break; } /* linux_pipe2 */ @@ -5467,6 +5471,19 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_dup3 */ case 330: + switch(ndx) { + case 0: + p = "l_int"; + break; + case 1: + p = "l_int"; + break; + case 2: + p = "l_int"; + break; + default: + break; + }; break; /* linux_pipe2 */ case 331: @@ -6752,6 +6769,9 @@ systrace_return_setargdesc(int sysnum, i case 329: /* linux_dup3 */ case 330: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_pipe2 */ case 331: if (ndx == 0 || ndx == 1) Modified: head/sys/i386/linux/linux_proto.h ============================================================================== --- head/sys/i386/linux/linux_proto.h Sun May 24 15:14:51 2015 (r283399) +++ head/sys/i386/linux/linux_proto.h Sun May 24 15:15:46 2015 (r283400) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283396 2015-05-24 15:11:32Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283399 2015-05-24 15:14:51Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -1082,7 +1082,9 @@ struct linux_epoll_create1_args { register_t dummy; }; struct linux_dup3_args { - register_t dummy; + char oldfd_l_[PADL_(l_int)]; l_int oldfd; char oldfd_r_[PADR_(l_int)]; + char newfd_l_[PADL_(l_int)]; l_int newfd; char newfd_r_[PADR_(l_int)]; + char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)]; }; struct linux_pipe2_args { char pipefds_l_[PADL_(l_int *)]; l_int * pipefds; char pipefds_r_[PADR_(l_int *)]; Modified: head/sys/i386/linux/linux_syscall.h ============================================================================== --- head/sys/i386/linux/linux_syscall.h Sun May 24 15:14:51 2015 (r283399) +++ head/sys/i386/linux/linux_syscall.h Sun May 24 15:15:46 2015 (r283400) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283396 2015-05-24 15:11:32Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283399 2015-05-24 15:14:51Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/i386/linux/linux_syscalls.c ============================================================================== --- head/sys/i386/linux/linux_syscalls.c Sun May 24 15:14:51 2015 (r283399) +++ head/sys/i386/linux/linux_syscalls.c Sun May 24 15:15:46 2015 (r283400) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283396 2015-05-24 15:11:32Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283399 2015-05-24 15:14:51Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/i386/linux/linux_sysent.c ============================================================================== --- head/sys/i386/linux/linux_sysent.c Sun May 24 15:14:51 2015 (r283399) +++ head/sys/i386/linux/linux_sysent.c Sun May 24 15:15:46 2015 (r283400) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283396 2015-05-24 15:11:32Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283399 2015-05-24 15:14:51Z dchagin */ #include @@ -348,7 +348,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_signalfd4, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 327 = linux_signalfd4 */ { 0, (sy_call_t *)linux_eventfd2, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 328 = linux_eventfd2 */ { 0, (sy_call_t *)linux_epoll_create1, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 329 = linux_epoll_create1 */ - { 0, (sy_call_t *)linux_dup3, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 330 = linux_dup3 */ + { AS(linux_dup3_args), (sy_call_t *)linux_dup3, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 330 = linux_dup3 */ { AS(linux_pipe2_args), (sy_call_t *)linux_pipe2, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 331 = linux_pipe2 */ { 0, (sy_call_t *)linux_inotify_init1, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 332 = linux_inotify_init1 */ { 0, (sy_call_t *)linux_preadv, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 333 = linux_preadv */ Modified: head/sys/i386/linux/linux_systrace_args.c ============================================================================== --- head/sys/i386/linux/linux_systrace_args.c Sun May 24 15:14:51 2015 (r283399) +++ head/sys/i386/linux/linux_systrace_args.c Sun May 24 15:15:46 2015 (r283400) @@ -2266,7 +2266,11 @@ systrace_args(int sysnum, void *params, } /* linux_dup3 */ case 330: { - *n_args = 0; + struct linux_dup3_args *p = params; + iarg[0] = p->oldfd; /* l_int */ + iarg[1] = p->newfd; /* l_int */ + iarg[2] = p->flags; /* l_int */ + *n_args = 3; break; } /* linux_pipe2 */ @@ -5698,6 +5702,19 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_dup3 */ case 330: + switch(ndx) { + case 0: + p = "l_int"; + break; + case 1: + p = "l_int"; + break; + case 2: + p = "l_int"; + break; + default: + break; + }; break; /* linux_pipe2 */ case 331: @@ -7030,6 +7047,9 @@ systrace_return_setargdesc(int sysnum, i case 329: /* linux_dup3 */ case 330: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_pipe2 */ case 331: if (ndx == 0 || ndx == 1) From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:18:22 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0E088B00; Sun, 24 May 2015 15:18:22 +0000 (UTC) Received: from svn.freebsd.org (svn.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 E2F661BB3; Sun, 24 May 2015 15:18:21 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OFILnA046322; Sun, 24 May 2015 15:18:21 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OFIKeJ046306; Sun, 24 May 2015 15:18:20 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241518.t4OFIKeJ046306@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:18:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283401 - in head/sys: amd64/linux32 compat/linux i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:18:22 -0000 Author: dchagin Date: Sun May 24 15:18:19 2015 New Revision: 283401 URL: https://svnweb.freebsd.org/changeset/base/283401 Log: Implement prlimit64() system call. Differential Revision: https://reviews.freebsd.org/D1050 Reviewed by: emaste, trasz Modified: head/sys/amd64/linux32/linux32_dummy.c head/sys/amd64/linux32/syscalls.master head/sys/compat/linux/linux_misc.c head/sys/compat/linux/linux_misc.h head/sys/i386/linux/linux_dummy.c head/sys/i386/linux/syscalls.master Modified: head/sys/amd64/linux32/linux32_dummy.c ============================================================================== --- head/sys/amd64/linux32/linux32_dummy.c Sun May 24 15:15:46 2015 (r283400) +++ head/sys/amd64/linux32/linux32_dummy.c Sun May 24 15:18:19 2015 (r283401) @@ -133,8 +133,6 @@ DUMMY(perf_event_open); DUMMY(recvmmsg); DUMMY(fanotify_init); DUMMY(fanotify_mark); -/* linux 2.6.36: */ -DUMMY(prlimit64); /* later: */ DUMMY(name_to_handle_at); DUMMY(open_by_handle_at); Modified: head/sys/amd64/linux32/syscalls.master ============================================================================== --- head/sys/amd64/linux32/syscalls.master Sun May 24 15:15:46 2015 (r283400) +++ head/sys/amd64/linux32/syscalls.master Sun May 24 15:18:19 2015 (r283401) @@ -554,7 +554,10 @@ 338 AUE_NULL STD { int linux_fanotify_init(void); } 339 AUE_NULL STD { int linux_fanotify_mark(void); } ; linux 2.6.36: -340 AUE_NULL STD { int linux_prlimit64(void); } +340 AUE_NULL STD { int linux_prlimit64(l_pid_t pid, \ + l_uint resource, \ + struct rlimit *new, \ + struct rlimit *old); } ; later: 341 AUE_NULL STD { int linux_name_to_handle_at(void); } 342 AUE_NULL STD { int linux_open_by_handle_at(void); } Modified: head/sys/compat/linux/linux_misc.c ============================================================================== --- head/sys/compat/linux/linux_misc.c Sun May 24 15:15:46 2015 (r283400) +++ head/sys/compat/linux/linux_misc.c Sun May 24 15:18:19 2015 (r283401) @@ -2034,6 +2034,79 @@ linux_sched_setaffinity(struct thread *t return (sys_cpuset_setaffinity(td, &csa)); } +struct linux_rlimit64 { + uint64_t rlim_cur; + uint64_t rlim_max; +}; + +int +linux_prlimit64(struct thread *td, struct linux_prlimit64_args *args) +{ + struct rlimit rlim, nrlim; + struct linux_rlimit64 lrlim; + struct proc *p; + u_int which; + int flags; + int error; + +#ifdef DEBUG + if (ldebug(prlimit64)) + printf(ARGS(prlimit64, "%d, %d, %p, %p"), args->pid, + args->resource, (void *)args->new, (void *)args->old); +#endif + + if (args->resource >= LINUX_RLIM_NLIMITS) + return (EINVAL); + + which = linux_to_bsd_resource[args->resource]; + if (which == -1) + return (EINVAL); + + if (args->new != NULL) { + /* + * Note. Unlike FreeBSD where rlim is signed 64-bit Linux + * rlim is unsigned 64-bit. FreeBSD treats negative limits + * as INFINITY so we do not need a conversion even. + */ + error = copyin(args->new, &nrlim, sizeof(nrlim)); + if (error != 0) + return (error); + } + + flags = PGET_HOLD | PGET_NOTWEXIT; + if (args->new != NULL) + flags |= PGET_CANDEBUG; + else + flags |= PGET_CANSEE; + error = pget(args->pid, flags, &p); + if (error != 0) + return (error); + + if (args->old != NULL) { + PROC_LOCK(p); + lim_rlimit(p, which, &rlim); + PROC_UNLOCK(p); + if (rlim.rlim_cur == RLIM_INFINITY) + lrlim.rlim_cur = LINUX_RLIM_INFINITY; + else + lrlim.rlim_cur = rlim.rlim_cur; + if (rlim.rlim_max == RLIM_INFINITY) + lrlim.rlim_max = LINUX_RLIM_INFINITY; + else + lrlim.rlim_max = rlim.rlim_max; + error = copyout(&lrlim, args->old, sizeof(lrlim)); + if (error != 0) + goto out; + } + + if (args->new != NULL) + error = kern_proc_setrlimit(td, p, which, &nrlim); + + out: + PRELE(p); + return (error); +} + int linux_sched_rr_get_interval(struct thread *td, struct linux_sched_rr_get_interval_args *uap) Modified: head/sys/compat/linux/linux_misc.h ============================================================================== --- head/sys/compat/linux/linux_misc.h Sun May 24 15:15:46 2015 (r283400) +++ head/sys/compat/linux/linux_misc.h Sun May 24 15:18:19 2015 (r283401) @@ -130,6 +130,7 @@ extern int stclohz; #define LINUX_P_PID 1 #define LINUX_P_PGID 2 +#define LINUX_RLIM_INFINITY (~0UL) int linux_common_wait(struct thread *td, int pid, int *status, int options, struct rusage *ru); Modified: head/sys/i386/linux/linux_dummy.c ============================================================================== --- head/sys/i386/linux/linux_dummy.c Sun May 24 15:15:46 2015 (r283400) +++ head/sys/i386/linux/linux_dummy.c Sun May 24 15:18:19 2015 (r283401) @@ -129,8 +129,6 @@ DUMMY(perf_event_open); DUMMY(recvmmsg); DUMMY(fanotify_init); DUMMY(fanotify_mark); -/* linux 2.6.36: */ -DUMMY(prlimit64); /* later: */ DUMMY(name_to_handle_at); DUMMY(open_by_handle_at); Modified: head/sys/i386/linux/syscalls.master ============================================================================== --- head/sys/i386/linux/syscalls.master Sun May 24 15:15:46 2015 (r283400) +++ head/sys/i386/linux/syscalls.master Sun May 24 15:18:19 2015 (r283401) @@ -562,7 +562,10 @@ 338 AUE_NULL STD { int linux_fanotify_init(void); } 339 AUE_NULL STD { int linux_fanotify_mark(void); } ; linux 2.6.36: -340 AUE_NULL STD { int linux_prlimit64(void); } +340 AUE_NULL STD { int linux_prlimit64(l_pid_t pid, \ + l_uint resource, \ + struct rlimit *new, \ + struct rlimit *old); } ; later: 341 AUE_NULL STD { int linux_name_to_handle_at(void); } 342 AUE_NULL STD { int linux_open_by_handle_at(void); } From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:19:48 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8C3A9C72; Sun, 24 May 2015 15:19:48 +0000 (UTC) Received: from svn.freebsd.org (svn.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 6D3F01BCD; Sun, 24 May 2015 15:19:48 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OFJmYu046553; Sun, 24 May 2015 15:19:48 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OFJjbS046543; Sun, 24 May 2015 15:19:45 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241519.t4OFJjbS046543@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:19:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283402 - in head/sys: amd64/linux32 i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:19:48 -0000 Author: dchagin Date: Sun May 24 15:19:44 2015 New Revision: 283402 URL: https://svnweb.freebsd.org/changeset/base/283402 Log: Regen for r283401. Modified: head/sys/amd64/linux32/linux32_proto.h head/sys/amd64/linux32/linux32_syscall.h head/sys/amd64/linux32/linux32_syscalls.c head/sys/amd64/linux32/linux32_sysent.c head/sys/amd64/linux32/linux32_systrace_args.c head/sys/i386/linux/linux_proto.h head/sys/i386/linux/linux_syscall.h head/sys/i386/linux/linux_syscalls.c head/sys/i386/linux/linux_sysent.c head/sys/i386/linux/linux_systrace_args.c Modified: head/sys/amd64/linux32/linux32_proto.h ============================================================================== --- head/sys/amd64/linux32/linux32_proto.h Sun May 24 15:18:19 2015 (r283401) +++ head/sys/amd64/linux32/linux32_proto.h Sun May 24 15:19:44 2015 (r283402) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283399 2015-05-24 15:14:51Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283401 2015-05-24 15:18:19Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -1097,7 +1097,10 @@ struct linux_fanotify_mark_args { register_t dummy; }; struct linux_prlimit64_args { - register_t dummy; + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; + char resource_l_[PADL_(l_uint)]; l_uint resource; char resource_r_[PADR_(l_uint)]; + char new_l_[PADL_(struct rlimit *)]; struct rlimit * new; char new_r_[PADR_(struct rlimit *)]; + char old_l_[PADL_(struct rlimit *)]; struct rlimit * old; char old_r_[PADR_(struct rlimit *)]; }; struct linux_name_to_handle_at_args { register_t dummy; Modified: head/sys/amd64/linux32/linux32_syscall.h ============================================================================== --- head/sys/amd64/linux32/linux32_syscall.h Sun May 24 15:18:19 2015 (r283401) +++ head/sys/amd64/linux32/linux32_syscall.h Sun May 24 15:19:44 2015 (r283402) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283399 2015-05-24 15:14:51Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283401 2015-05-24 15:18:19Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/amd64/linux32/linux32_syscalls.c ============================================================================== --- head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 15:18:19 2015 (r283401) +++ head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 15:19:44 2015 (r283402) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283399 2015-05-24 15:14:51Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283401 2015-05-24 15:18:19Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/amd64/linux32/linux32_sysent.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysent.c Sun May 24 15:18:19 2015 (r283401) +++ head/sys/amd64/linux32/linux32_sysent.c Sun May 24 15:19:44 2015 (r283402) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283399 2015-05-24 15:14:51Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283401 2015-05-24 15:18:19Z dchagin */ #include "opt_compat.h" @@ -359,7 +359,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_recvmmsg, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 337 = linux_recvmmsg */ { 0, (sy_call_t *)linux_fanotify_init, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 338 = linux_fanotify_init */ { 0, (sy_call_t *)linux_fanotify_mark, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 339 = linux_fanotify_mark */ - { 0, (sy_call_t *)linux_prlimit64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 340 = linux_prlimit64 */ + { AS(linux_prlimit64_args), (sy_call_t *)linux_prlimit64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 340 = linux_prlimit64 */ { 0, (sy_call_t *)linux_name_to_handle_at, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 341 = linux_name_to_handle_at */ { 0, (sy_call_t *)linux_open_by_handle_at, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 342 = linux_open_by_handle_at */ { 0, (sy_call_t *)linux_clock_adjtime, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 343 = linux_clock_adjtime */ Modified: head/sys/amd64/linux32/linux32_systrace_args.c ============================================================================== --- head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 15:18:19 2015 (r283401) +++ head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 15:19:44 2015 (r283402) @@ -2247,7 +2247,12 @@ systrace_args(int sysnum, void *params, } /* linux_prlimit64 */ case 340: { - *n_args = 0; + struct linux_prlimit64_args *p = params; + iarg[0] = p->pid; /* l_pid_t */ + iarg[1] = p->resource; /* l_uint */ + uarg[2] = (intptr_t) p->new; /* struct rlimit * */ + uarg[3] = (intptr_t) p->old; /* struct rlimit * */ + *n_args = 4; break; } /* linux_name_to_handle_at */ @@ -5524,6 +5529,22 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_prlimit64 */ case 340: + switch(ndx) { + case 0: + p = "l_pid_t"; + break; + case 1: + p = "l_uint"; + break; + case 2: + p = "struct rlimit *"; + break; + case 3: + p = "struct rlimit *"; + break; + default: + break; + }; break; /* linux_name_to_handle_at */ case 341: @@ -6795,6 +6816,9 @@ systrace_return_setargdesc(int sysnum, i case 339: /* linux_prlimit64 */ case 340: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_name_to_handle_at */ case 341: /* linux_open_by_handle_at */ Modified: head/sys/i386/linux/linux_proto.h ============================================================================== --- head/sys/i386/linux/linux_proto.h Sun May 24 15:18:19 2015 (r283401) +++ head/sys/i386/linux/linux_proto.h Sun May 24 15:19:44 2015 (r283402) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283399 2015-05-24 15:14:51Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283401 2015-05-24 15:18:19Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -1115,7 +1115,10 @@ struct linux_fanotify_mark_args { register_t dummy; }; struct linux_prlimit64_args { - register_t dummy; + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; + char resource_l_[PADL_(l_uint)]; l_uint resource; char resource_r_[PADR_(l_uint)]; + char new_l_[PADL_(struct rlimit *)]; struct rlimit * new; char new_r_[PADR_(struct rlimit *)]; + char old_l_[PADL_(struct rlimit *)]; struct rlimit * old; char old_r_[PADR_(struct rlimit *)]; }; struct linux_name_to_handle_at_args { register_t dummy; Modified: head/sys/i386/linux/linux_syscall.h ============================================================================== --- head/sys/i386/linux/linux_syscall.h Sun May 24 15:18:19 2015 (r283401) +++ head/sys/i386/linux/linux_syscall.h Sun May 24 15:19:44 2015 (r283402) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283399 2015-05-24 15:14:51Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283401 2015-05-24 15:18:19Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/i386/linux/linux_syscalls.c ============================================================================== --- head/sys/i386/linux/linux_syscalls.c Sun May 24 15:18:19 2015 (r283401) +++ head/sys/i386/linux/linux_syscalls.c Sun May 24 15:19:44 2015 (r283402) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283399 2015-05-24 15:14:51Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283401 2015-05-24 15:18:19Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/i386/linux/linux_sysent.c ============================================================================== --- head/sys/i386/linux/linux_sysent.c Sun May 24 15:18:19 2015 (r283401) +++ head/sys/i386/linux/linux_sysent.c Sun May 24 15:19:44 2015 (r283402) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283399 2015-05-24 15:14:51Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283401 2015-05-24 15:18:19Z dchagin */ #include @@ -358,7 +358,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_recvmmsg, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 337 = linux_recvmmsg */ { 0, (sy_call_t *)linux_fanotify_init, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 338 = linux_fanotify_init */ { 0, (sy_call_t *)linux_fanotify_mark, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 339 = linux_fanotify_mark */ - { 0, (sy_call_t *)linux_prlimit64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 340 = linux_prlimit64 */ + { AS(linux_prlimit64_args), (sy_call_t *)linux_prlimit64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 340 = linux_prlimit64 */ { 0, (sy_call_t *)linux_name_to_handle_at, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 341 = linux_name_to_handle_at */ { 0, (sy_call_t *)linux_open_by_handle_at, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 342 = linux_open_by_handle_at */ { 0, (sy_call_t *)linux_clock_adjtime, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 343 = linux_clock_adjtime */ Modified: head/sys/i386/linux/linux_systrace_args.c ============================================================================== --- head/sys/i386/linux/linux_systrace_args.c Sun May 24 15:18:19 2015 (r283401) +++ head/sys/i386/linux/linux_systrace_args.c Sun May 24 15:19:44 2015 (r283402) @@ -2323,7 +2323,12 @@ systrace_args(int sysnum, void *params, } /* linux_prlimit64 */ case 340: { - *n_args = 0; + struct linux_prlimit64_args *p = params; + iarg[0] = p->pid; /* l_pid_t */ + iarg[1] = p->resource; /* l_uint */ + uarg[2] = (intptr_t) p->new; /* struct rlimit * */ + uarg[3] = (intptr_t) p->old; /* struct rlimit * */ + *n_args = 4; break; } /* linux_name_to_handle_at */ @@ -5755,6 +5760,22 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_prlimit64 */ case 340: + switch(ndx) { + case 0: + p = "l_pid_t"; + break; + case 1: + p = "l_uint"; + break; + case 2: + p = "struct rlimit *"; + break; + case 3: + p = "struct rlimit *"; + break; + default: + break; + }; break; /* linux_name_to_handle_at */ case 341: @@ -7073,6 +7094,9 @@ systrace_return_setargdesc(int sysnum, i case 339: /* linux_prlimit64 */ case 340: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_name_to_handle_at */ case 341: /* linux_open_by_handle_at */ From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:21:27 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 97443FED; Sun, 24 May 2015 15:21:27 +0000 (UTC) Received: from svn.freebsd.org (svn.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 788D81BFC; Sun, 24 May 2015 15:21:27 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OFLRAI049939; Sun, 24 May 2015 15:21:27 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OFLQMD049929; Sun, 24 May 2015 15:21:26 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241521.t4OFLQMD049929@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:21:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283403 - in head/sys: amd64/linux32 compat/linux i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:21:27 -0000 Author: dchagin Date: Sun May 24 15:21:25 2015 New Revision: 283403 URL: https://svnweb.freebsd.org/changeset/base/283403 Log: Implement pselect6() system call. Differential Revision: https://reviews.freebsd.org/D1051 Reviewed by: trasz Modified: head/sys/amd64/linux32/linux32_dummy.c head/sys/amd64/linux32/syscalls.master head/sys/compat/linux/linux_misc.c head/sys/i386/linux/linux_dummy.c head/sys/i386/linux/syscalls.master Modified: head/sys/amd64/linux32/linux32_dummy.c ============================================================================== --- head/sys/amd64/linux32/linux32_dummy.c Sun May 24 15:19:44 2015 (r283402) +++ head/sys/amd64/linux32/linux32_dummy.c Sun May 24 15:21:25 2015 (r283403) @@ -95,7 +95,6 @@ DUMMY(inotify_add_watch); DUMMY(inotify_rm_watch); /* linux 2.6.16: */ DUMMY(migrate_pages); -DUMMY(pselect6); DUMMY(ppoll); DUMMY(unshare); /* linux 2.6.17: */ Modified: head/sys/amd64/linux32/syscalls.master ============================================================================== --- head/sys/amd64/linux32/syscalls.master Sun May 24 15:19:44 2015 (r283402) +++ head/sys/amd64/linux32/syscalls.master Sun May 24 15:21:25 2015 (r283403) @@ -508,7 +508,9 @@ 306 AUE_FCHMODAT STD { int linux_fchmodat(l_int dfd, const char *filename, \ l_mode_t mode); } 307 AUE_FACCESSAT STD { int linux_faccessat(l_int dfd, const char *filename, l_int amode, int flag); } -308 AUE_NULL STD { int linux_pselect6(void); } +308 AUE_SELECT STD { int linux_pselect6(l_int nfds, l_fd_set *readfds, \ + l_fd_set *writefds, l_fd_set *exceptfds, \ + struct l_timespec *tsp, l_uintptr_t *sig); } 309 AUE_NULL STD { int linux_ppoll(void); } 310 AUE_NULL STD { int linux_unshare(void); } ; linux 2.6.17: Modified: head/sys/compat/linux/linux_misc.c ============================================================================== --- head/sys/compat/linux/linux_misc.c Sun May 24 15:19:44 2015 (r283402) +++ head/sys/compat/linux/linux_misc.c Sun May 24 15:21:25 2015 (r283403) @@ -116,6 +116,12 @@ struct l_sysinfo { l_uint mem_unit; char _f[20-2*sizeof(l_long)-sizeof(l_int)]; /* padding */ }; + +struct l_pselect6arg { + l_uintptr_t ss; + l_size_t ss_len; +}; + int linux_sysinfo(struct thread *td, struct linux_sysinfo_args *args) { @@ -2108,6 +2114,84 @@ linux_prlimit64(struct thread *td, struc } int +linux_pselect6(struct thread *td, struct linux_pselect6_args *args) +{ + struct timeval utv, tv0, tv1, *tvp; + struct l_pselect6arg lpse6; + struct l_timespec lts; + struct timespec uts; + l_sigset_t l_ss; + sigset_t *ssp; + sigset_t ss; + int error; + + ssp = NULL; + if (args->sig != NULL) { + error = copyin(args->sig, &lpse6, sizeof(lpse6)); + if (error != 0) + return (error); + if (lpse6.ss_len != sizeof(l_ss)) + return (EINVAL); + if (lpse6.ss != 0) { + error = copyin(PTRIN(lpse6.ss), &l_ss, + sizeof(l_ss)); + if (error != 0) + return (error); + linux_to_bsd_sigset(&l_ss, &ss); + ssp = &ss; + } + } + + /* + * Currently glibc changes nanosecond number to microsecond. + * This mean losing precision but for now it is hardly seen. + */ + if (args->tsp != NULL) { + error = copyin(args->tsp, <s, sizeof(lts)); + if (error != 0) + return (error); + uts.tv_sec = lts.tv_sec; + uts.tv_nsec = lts.tv_nsec; + + TIMESPEC_TO_TIMEVAL(&utv, &uts); + if (itimerfix(&utv)) + return (EINVAL); + + microtime(&tv0); + tvp = &utv; + } else + tvp = NULL; + + error = kern_pselect(td, args->nfds, args->readfds, args->writefds, + args->exceptfds, tvp, ssp, sizeof(l_int) * 8); + + if (error == 0 && args->tsp != NULL) { + if (td->td_retval[0] != 0) { + /* + * Compute how much time was left of the timeout, + * by subtracting the current time and the time + * before we started the call, and subtracting + * that result from the user-supplied value. + */ + + microtime(&tv1); + timevalsub(&tv1, &tv0); + timevalsub(&utv, &tv1); + if (utv.tv_sec < 0) + timevalclear(&utv); + } else + timevalclear(&utv); + + TIMEVAL_TO_TIMESPEC(&utv, &uts); + lts.tv_sec = uts.tv_sec; + lts.tv_nsec = uts.tv_nsec; + error = copyout(<s, args->tsp, sizeof(lts)); + } + + return (error); +} + +int linux_sched_rr_get_interval(struct thread *td, struct linux_sched_rr_get_interval_args *uap) { Modified: head/sys/i386/linux/linux_dummy.c ============================================================================== --- head/sys/i386/linux/linux_dummy.c Sun May 24 15:19:44 2015 (r283402) +++ head/sys/i386/linux/linux_dummy.c Sun May 24 15:21:25 2015 (r283403) @@ -91,7 +91,6 @@ DUMMY(inotify_add_watch); DUMMY(inotify_rm_watch); /* linux 2.6.16: */ DUMMY(migrate_pages); -DUMMY(pselect6); DUMMY(ppoll); DUMMY(unshare); /* linux 2.6.17: */ Modified: head/sys/i386/linux/syscalls.master ============================================================================== --- head/sys/i386/linux/syscalls.master Sun May 24 15:19:44 2015 (r283402) +++ head/sys/i386/linux/syscalls.master Sun May 24 15:21:25 2015 (r283403) @@ -516,7 +516,9 @@ 306 AUE_FCHMODAT STD { int linux_fchmodat(l_int dfd, const char *filename, \ l_mode_t mode); } 307 AUE_FACCESSAT STD { int linux_faccessat(l_int dfd, const char *filename, l_int amode, l_int flag); } -308 AUE_NULL STD { int linux_pselect6(void); } +308 AUE_SELECT STD { int linux_pselect6(l_int nfds, l_fd_set *readfds, \ + l_fd_set *writefds, l_fd_set *exceptfds, \ + struct l_timespec *tsp, l_uintptr_t *sig); } 309 AUE_NULL STD { int linux_ppoll(void); } 310 AUE_NULL STD { int linux_unshare(void); } ; linux 2.6.17: From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:21:49 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A526F1CC; Sun, 24 May 2015 15:21:49 +0000 (UTC) Received: from svn.freebsd.org (svn.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 92FB41CAD; Sun, 24 May 2015 15:21:49 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OFLntS050530; Sun, 24 May 2015 15:21:49 GMT (envelope-from ian@FreeBSD.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OFLmgC050522; Sun, 24 May 2015 15:21:48 GMT (envelope-from ian@FreeBSD.org) Message-Id: <201505241521.t4OFLmgC050522@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ian set sender to ian@FreeBSD.org using -f From: Ian Lepore Date: Sun, 24 May 2015 15:21: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: r283404 - stable/10/sys/arm/conf X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:21:49 -0000 Author: ian Date: Sun May 24 15:21:47 2015 New Revision: 283404 URL: https://svnweb.freebsd.org/changeset/base/283404 Log: MFC r279850: Remove MODULES_OVERRIDE="" for Marvel-based armv5 systems. Also add some #NO_UNIVERSE to configs that essentially duplicate DB-88F6XXX. Modified: stable/10/sys/arm/conf/DB-78XXX stable/10/sys/arm/conf/DB-88F5XXX stable/10/sys/arm/conf/DB-88F6XXX stable/10/sys/arm/conf/DOCKSTAR stable/10/sys/arm/conf/DREAMPLUG-1001 stable/10/sys/arm/conf/SHEEVAPLUG Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/arm/conf/DB-78XXX ============================================================================== --- stable/10/sys/arm/conf/DB-78XXX Sun May 24 15:21:25 2015 (r283403) +++ stable/10/sys/arm/conf/DB-78XXX Sun May 24 15:21:47 2015 (r283404) @@ -8,7 +8,6 @@ ident DB-88F78XX include "../mv/discovery/std.db78xxx" options SOC_MV_DISCOVERY -makeoptions MODULES_OVERRIDE="" #makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols makeoptions WERROR="-Werror" Modified: stable/10/sys/arm/conf/DB-88F5XXX ============================================================================== --- stable/10/sys/arm/conf/DB-88F5XXX Sun May 24 15:21:25 2015 (r283403) +++ stable/10/sys/arm/conf/DB-88F5XXX Sun May 24 15:21:47 2015 (r283404) @@ -8,7 +8,6 @@ ident DB-88F5XXX include "../mv/orion/std.db88f5xxx" options SOC_MV_ORION -makeoptions MODULES_OVERRIDE="" #makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols makeoptions WERROR="-Werror" Modified: stable/10/sys/arm/conf/DB-88F6XXX ============================================================================== --- stable/10/sys/arm/conf/DB-88F6XXX Sun May 24 15:21:25 2015 (r283403) +++ stable/10/sys/arm/conf/DB-88F6XXX Sun May 24 15:21:47 2015 (r283404) @@ -8,7 +8,6 @@ ident DB-88F6XXX include "../mv/kirkwood/std.db88f6xxx" options SOC_MV_KIRKWOOD -makeoptions MODULES_OVERRIDE="" #makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols makeoptions WERROR="-Werror" Modified: stable/10/sys/arm/conf/DOCKSTAR ============================================================================== --- stable/10/sys/arm/conf/DOCKSTAR Sun May 24 15:21:25 2015 (r283403) +++ stable/10/sys/arm/conf/DOCKSTAR Sun May 24 15:21:47 2015 (r283404) @@ -17,6 +17,7 @@ # # $FreeBSD$ # +#NO_UNIVERSE ident DOCKSTAR @@ -24,8 +25,6 @@ include "../mv/kirkwood/std.db88f6xxx" makeoptions FDT_DTS_FILE=dockstar.dts -makeoptions MODULES_OVERRIDE="" - options SOC_MV_KIRKWOOD options SCHED_4BSD # 4BSD scheduler Modified: stable/10/sys/arm/conf/DREAMPLUG-1001 ============================================================================== --- stable/10/sys/arm/conf/DREAMPLUG-1001 Sun May 24 15:21:25 2015 (r283403) +++ stable/10/sys/arm/conf/DREAMPLUG-1001 Sun May 24 15:21:47 2015 (r283404) @@ -20,6 +20,7 @@ # # $FreeBSD$ # +#NO_UNIVERSE ident DREAMPLUG-1001 @@ -27,8 +28,6 @@ include "../mv/kirkwood/std.db88f6xxx" makeoptions FDT_DTS_FILE=dreamplug-1001.dts -makeoptions MODULES_OVERRIDE="" - options SOC_MV_KIRKWOOD options SCHED_4BSD # 4BSD scheduler Modified: stable/10/sys/arm/conf/SHEEVAPLUG ============================================================================== --- stable/10/sys/arm/conf/SHEEVAPLUG Sun May 24 15:21:25 2015 (r283403) +++ stable/10/sys/arm/conf/SHEEVAPLUG Sun May 24 15:21:47 2015 (r283404) @@ -3,12 +3,12 @@ # # $FreeBSD$ # +#NO_UNIVERSE ident SHEEVAPLUG include "../mv/kirkwood/std.db88f6xxx" options SOC_MV_KIRKWOOD -makeoptions MODULES_OVERRIDE="" #makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols makeoptions WERROR="-Werror" From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:22:37 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id F3BF732B; Sun, 24 May 2015 15:22:36 +0000 (UTC) Received: from svn.freebsd.org (svn.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 E07DB1CC2; Sun, 24 May 2015 15:22:36 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OFMaO7050781; Sun, 24 May 2015 15:22:36 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OFMYmM050757; Sun, 24 May 2015 15:22:34 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241522.t4OFMYmM050757@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:22:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283405 - in head/sys: amd64/linux32 i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:22:37 -0000 Author: dchagin Date: Sun May 24 15:22:33 2015 New Revision: 283405 URL: https://svnweb.freebsd.org/changeset/base/283405 Log: Regen for r283403. Modified: head/sys/amd64/linux32/linux32_proto.h head/sys/amd64/linux32/linux32_syscall.h head/sys/amd64/linux32/linux32_syscalls.c head/sys/amd64/linux32/linux32_sysent.c head/sys/amd64/linux32/linux32_systrace_args.c head/sys/i386/linux/linux_proto.h head/sys/i386/linux/linux_syscall.h head/sys/i386/linux/linux_syscalls.c head/sys/i386/linux/linux_sysent.c head/sys/i386/linux/linux_systrace_args.c Modified: head/sys/amd64/linux32/linux32_proto.h ============================================================================== --- head/sys/amd64/linux32/linux32_proto.h Sun May 24 15:21:47 2015 (r283404) +++ head/sys/amd64/linux32/linux32_proto.h Sun May 24 15:22:33 2015 (r283405) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283401 2015-05-24 15:18:19Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283403 2015-05-24 15:21:25Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -995,7 +995,12 @@ struct linux_faccessat_args { char flag_l_[PADL_(int)]; int flag; char flag_r_[PADR_(int)]; }; struct linux_pselect6_args { - register_t dummy; + char nfds_l_[PADL_(l_int)]; l_int nfds; char nfds_r_[PADR_(l_int)]; + char readfds_l_[PADL_(l_fd_set *)]; l_fd_set * readfds; char readfds_r_[PADR_(l_fd_set *)]; + char writefds_l_[PADL_(l_fd_set *)]; l_fd_set * writefds; char writefds_r_[PADR_(l_fd_set *)]; + char exceptfds_l_[PADL_(l_fd_set *)]; l_fd_set * exceptfds; char exceptfds_r_[PADR_(l_fd_set *)]; + char tsp_l_[PADL_(struct l_timespec *)]; struct l_timespec * tsp; char tsp_r_[PADR_(struct l_timespec *)]; + char sig_l_[PADL_(l_uintptr_t *)]; l_uintptr_t * sig; char sig_r_[PADR_(l_uintptr_t *)]; }; struct linux_ppoll_args { register_t dummy; @@ -1668,7 +1673,7 @@ int linux_process_vm_writev(struct threa #define LINUX_SYS_AUE_linux_readlinkat AUE_READLINKAT #define LINUX_SYS_AUE_linux_fchmodat AUE_FCHMODAT #define LINUX_SYS_AUE_linux_faccessat AUE_FACCESSAT -#define LINUX_SYS_AUE_linux_pselect6 AUE_NULL +#define LINUX_SYS_AUE_linux_pselect6 AUE_SELECT #define LINUX_SYS_AUE_linux_ppoll AUE_NULL #define LINUX_SYS_AUE_linux_unshare AUE_NULL #define LINUX_SYS_AUE_linux_set_robust_list AUE_NULL Modified: head/sys/amd64/linux32/linux32_syscall.h ============================================================================== --- head/sys/amd64/linux32/linux32_syscall.h Sun May 24 15:21:47 2015 (r283404) +++ head/sys/amd64/linux32/linux32_syscall.h Sun May 24 15:22:33 2015 (r283405) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283401 2015-05-24 15:18:19Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283403 2015-05-24 15:21:25Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/amd64/linux32/linux32_syscalls.c ============================================================================== --- head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 15:21:47 2015 (r283404) +++ head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 15:22:33 2015 (r283405) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283401 2015-05-24 15:18:19Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283403 2015-05-24 15:21:25Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/amd64/linux32/linux32_sysent.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysent.c Sun May 24 15:21:47 2015 (r283404) +++ head/sys/amd64/linux32/linux32_sysent.c Sun May 24 15:22:33 2015 (r283405) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283401 2015-05-24 15:18:19Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283403 2015-05-24 15:21:25Z dchagin */ #include "opt_compat.h" @@ -327,7 +327,7 @@ struct sysent linux_sysent[] = { { AS(linux_readlinkat_args), (sy_call_t *)linux_readlinkat, AUE_READLINKAT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 305 = linux_readlinkat */ { AS(linux_fchmodat_args), (sy_call_t *)linux_fchmodat, AUE_FCHMODAT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 306 = linux_fchmodat */ { AS(linux_faccessat_args), (sy_call_t *)linux_faccessat, AUE_FACCESSAT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 307 = linux_faccessat */ - { 0, (sy_call_t *)linux_pselect6, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 308 = linux_pselect6 */ + { AS(linux_pselect6_args), (sy_call_t *)linux_pselect6, AUE_SELECT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 308 = linux_pselect6 */ { 0, (sy_call_t *)linux_ppoll, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 309 = linux_ppoll */ { 0, (sy_call_t *)linux_unshare, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 310 = linux_unshare */ { AS(linux_set_robust_list_args), (sy_call_t *)linux_set_robust_list, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 311 = linux_set_robust_list */ Modified: head/sys/amd64/linux32/linux32_systrace_args.c ============================================================================== --- head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 15:21:47 2015 (r283404) +++ head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 15:22:33 2015 (r283405) @@ -2073,7 +2073,14 @@ systrace_args(int sysnum, void *params, } /* linux_pselect6 */ case 308: { - *n_args = 0; + struct linux_pselect6_args *p = params; + iarg[0] = p->nfds; /* l_int */ + uarg[1] = (intptr_t) p->readfds; /* l_fd_set * */ + uarg[2] = (intptr_t) p->writefds; /* l_fd_set * */ + uarg[3] = (intptr_t) p->exceptfds; /* l_fd_set * */ + uarg[4] = (intptr_t) p->tsp; /* struct l_timespec * */ + uarg[5] = (intptr_t) p->sig; /* l_uintptr_t * */ + *n_args = 6; break; } /* linux_ppoll */ @@ -5387,6 +5394,28 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_pselect6 */ case 308: + switch(ndx) { + case 0: + p = "l_int"; + break; + case 1: + p = "l_fd_set *"; + break; + case 2: + p = "l_fd_set *"; + break; + case 3: + p = "l_fd_set *"; + break; + case 4: + p = "struct l_timespec *"; + break; + case 5: + p = "l_uintptr_t *"; + break; + default: + break; + }; break; /* linux_ppoll */ case 309: @@ -6740,6 +6769,9 @@ systrace_return_setargdesc(int sysnum, i break; /* linux_pselect6 */ case 308: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_ppoll */ case 309: /* linux_unshare */ Modified: head/sys/i386/linux/linux_proto.h ============================================================================== --- head/sys/i386/linux/linux_proto.h Sun May 24 15:21:47 2015 (r283404) +++ head/sys/i386/linux/linux_proto.h Sun May 24 15:22:33 2015 (r283405) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283401 2015-05-24 15:18:19Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283403 2015-05-24 15:21:25Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -1013,7 +1013,12 @@ struct linux_faccessat_args { char flag_l_[PADL_(l_int)]; l_int flag; char flag_r_[PADR_(l_int)]; }; struct linux_pselect6_args { - register_t dummy; + char nfds_l_[PADL_(l_int)]; l_int nfds; char nfds_r_[PADR_(l_int)]; + char readfds_l_[PADL_(l_fd_set *)]; l_fd_set * readfds; char readfds_r_[PADR_(l_fd_set *)]; + char writefds_l_[PADL_(l_fd_set *)]; l_fd_set * writefds; char writefds_r_[PADR_(l_fd_set *)]; + char exceptfds_l_[PADL_(l_fd_set *)]; l_fd_set * exceptfds; char exceptfds_r_[PADR_(l_fd_set *)]; + char tsp_l_[PADL_(struct l_timespec *)]; struct l_timespec * tsp; char tsp_r_[PADR_(struct l_timespec *)]; + char sig_l_[PADL_(l_uintptr_t *)]; l_uintptr_t * sig; char sig_r_[PADR_(l_uintptr_t *)]; }; struct linux_ppoll_args { register_t dummy; @@ -1690,7 +1695,7 @@ int linux_process_vm_writev(struct threa #define LINUX_SYS_AUE_linux_readlinkat AUE_READLINKAT #define LINUX_SYS_AUE_linux_fchmodat AUE_FCHMODAT #define LINUX_SYS_AUE_linux_faccessat AUE_FACCESSAT -#define LINUX_SYS_AUE_linux_pselect6 AUE_NULL +#define LINUX_SYS_AUE_linux_pselect6 AUE_SELECT #define LINUX_SYS_AUE_linux_ppoll AUE_NULL #define LINUX_SYS_AUE_linux_unshare AUE_NULL #define LINUX_SYS_AUE_linux_set_robust_list AUE_NULL Modified: head/sys/i386/linux/linux_syscall.h ============================================================================== --- head/sys/i386/linux/linux_syscall.h Sun May 24 15:21:47 2015 (r283404) +++ head/sys/i386/linux/linux_syscall.h Sun May 24 15:22:33 2015 (r283405) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283401 2015-05-24 15:18:19Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283403 2015-05-24 15:21:25Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/i386/linux/linux_syscalls.c ============================================================================== --- head/sys/i386/linux/linux_syscalls.c Sun May 24 15:21:47 2015 (r283404) +++ head/sys/i386/linux/linux_syscalls.c Sun May 24 15:22:33 2015 (r283405) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283401 2015-05-24 15:18:19Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283403 2015-05-24 15:21:25Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/i386/linux/linux_sysent.c ============================================================================== --- head/sys/i386/linux/linux_sysent.c Sun May 24 15:21:47 2015 (r283404) +++ head/sys/i386/linux/linux_sysent.c Sun May 24 15:22:33 2015 (r283405) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283401 2015-05-24 15:18:19Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283403 2015-05-24 15:21:25Z dchagin */ #include @@ -326,7 +326,7 @@ struct sysent linux_sysent[] = { { AS(linux_readlinkat_args), (sy_call_t *)linux_readlinkat, AUE_READLINKAT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 305 = linux_readlinkat */ { AS(linux_fchmodat_args), (sy_call_t *)linux_fchmodat, AUE_FCHMODAT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 306 = linux_fchmodat */ { AS(linux_faccessat_args), (sy_call_t *)linux_faccessat, AUE_FACCESSAT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 307 = linux_faccessat */ - { 0, (sy_call_t *)linux_pselect6, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 308 = linux_pselect6 */ + { AS(linux_pselect6_args), (sy_call_t *)linux_pselect6, AUE_SELECT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 308 = linux_pselect6 */ { 0, (sy_call_t *)linux_ppoll, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 309 = linux_ppoll */ { 0, (sy_call_t *)linux_unshare, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 310 = linux_unshare */ { AS(linux_set_robust_list_args), (sy_call_t *)linux_set_robust_list, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 311 = linux_set_robust_list */ Modified: head/sys/i386/linux/linux_systrace_args.c ============================================================================== --- head/sys/i386/linux/linux_systrace_args.c Sun May 24 15:21:47 2015 (r283404) +++ head/sys/i386/linux/linux_systrace_args.c Sun May 24 15:22:33 2015 (r283405) @@ -2149,7 +2149,14 @@ systrace_args(int sysnum, void *params, } /* linux_pselect6 */ case 308: { - *n_args = 0; + struct linux_pselect6_args *p = params; + iarg[0] = p->nfds; /* l_int */ + uarg[1] = (intptr_t) p->readfds; /* l_fd_set * */ + uarg[2] = (intptr_t) p->writefds; /* l_fd_set * */ + uarg[3] = (intptr_t) p->exceptfds; /* l_fd_set * */ + uarg[4] = (intptr_t) p->tsp; /* struct l_timespec * */ + uarg[5] = (intptr_t) p->sig; /* l_uintptr_t * */ + *n_args = 6; break; } /* linux_ppoll */ @@ -5618,6 +5625,28 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_pselect6 */ case 308: + switch(ndx) { + case 0: + p = "l_int"; + break; + case 1: + p = "l_fd_set *"; + break; + case 2: + p = "l_fd_set *"; + break; + case 3: + p = "l_fd_set *"; + break; + case 4: + p = "struct l_timespec *"; + break; + case 5: + p = "l_uintptr_t *"; + break; + default: + break; + }; break; /* linux_ppoll */ case 309: @@ -7018,6 +7047,9 @@ systrace_return_setargdesc(int sysnum, i break; /* linux_pselect6 */ case 308: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_ppoll */ case 309: /* linux_unshare */ From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:27:32 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 60BD54D1; Sun, 24 May 2015 15:27:32 +0000 (UTC) Received: from svn.freebsd.org (svn.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 4EB0C1CF1; Sun, 24 May 2015 15:27:32 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OFRWvr051426; Sun, 24 May 2015 15:27:32 GMT (envelope-from tijl@FreeBSD.org) Received: (from tijl@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OFRWqX051425; Sun, 24 May 2015 15:27:32 GMT (envelope-from tijl@FreeBSD.org) Message-Id: <201505241527.t4OFRWqX051425@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tijl set sender to tijl@FreeBSD.org using -f From: Tijl Coosemans Date: Sun, 24 May 2015 15:27:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283406 - head/lib/libiconv_modules/UTF7 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:27:32 -0000 Author: tijl Date: Sun May 24 15:27:31 2015 New Revision: 283406 URL: https://svnweb.freebsd.org/changeset/base/283406 Log: Fix decoding of UTF-7 when a base64 encoded chunk appears at the end of the input buffer. _citrus_UTF7_mbtoutf16 stored the decoder state at the beginning so it could restore this state on an incomplete character such that the next call would restart the decoding. The problem was that "-" (end of base64 mode) at the end of a string was also treated as an incomplete character but was also removed from the state buffer. So the initial state would be restored (with base64 mode) and the next call would no longer see the "-" so it continued in base64 mode. This state saving/restoring isn't needed here. It's already handled elsewhere (citrus_iconv_std.c:_citrus_iconv_std_iconv_convert) so just remove it. Also initialise *nresult. PR: 200398 Tested by: delphij MFC after: 1 week Modified: head/lib/libiconv_modules/UTF7/citrus_utf7.c Modified: head/lib/libiconv_modules/UTF7/citrus_utf7.c ============================================================================== --- head/lib/libiconv_modules/UTF7/citrus_utf7.c Sun May 24 15:22:33 2015 (r283405) +++ head/lib/libiconv_modules/UTF7/citrus_utf7.c Sun May 24 15:27:31 2015 (r283406) @@ -154,21 +154,17 @@ _citrus_UTF7_mbtoutf16(_UTF7EncodingInfo uint16_t * __restrict u16, char ** __restrict s, size_t n, _UTF7State * __restrict psenc, size_t * __restrict nresult) { - _UTF7State sv; char *s0; int done, i, len; + *nresult = 0; s0 = *s; - sv = *psenc; for (i = 0, done = 0; done == 0; i++) { if (i == psenc->chlen) { if (n-- < 1) { *nresult = (size_t)-2; *s = s0; - sv.chlen = psenc->chlen; - memcpy(sv.ch, psenc->ch, sizeof(sv.ch)); - *psenc = sv; return (0); } psenc->ch[psenc->chlen++] = *s0++; From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:28:21 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C519561B; Sun, 24 May 2015 15:28:21 +0000 (UTC) Received: from svn.freebsd.org (svn.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 B103B1CF9; Sun, 24 May 2015 15:28:21 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OFSLgk051618; Sun, 24 May 2015 15:28:21 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OFSILt051595; Sun, 24 May 2015 15:28:18 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241528.t4OFSILt051595@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:28:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283407 - in head/sys: amd64/linux32 compat/linux conf i386/linux modules/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:28:21 -0000 Author: dchagin Date: Sun May 24 15:28:17 2015 New Revision: 283407 URL: https://svnweb.freebsd.org/changeset/base/283407 Log: Implement vdso - virtual dynamic shared object. Through vdso Linux exposes functions from kernel with proper DWARF CFI information so that it becomes easier to unwind through them. Using vdso is a mandatory for a thread cancelation && cleanup on a modern glibc. Differential Revision: https://reviews.freebsd.org/D1060 Added: head/sys/amd64/linux32/linux32_vdso.lds.s (contents, props changed) head/sys/compat/linux/linux_vdso.c (contents, props changed) head/sys/compat/linux/linux_vdso.h (contents, props changed) head/sys/i386/linux/linux_vdso.lds.s (contents, props changed) Modified: head/sys/amd64/linux32/linux.h head/sys/amd64/linux32/linux32_genassym.c head/sys/amd64/linux32/linux32_locore.s head/sys/amd64/linux32/linux32_sysvec.c head/sys/compat/linux/linux_misc.h head/sys/conf/files.amd64 head/sys/conf/files.i386 head/sys/i386/linux/linux.h head/sys/i386/linux/linux_genassym.c head/sys/i386/linux/linux_locore.s head/sys/i386/linux/linux_sysvec.c head/sys/modules/linux/Makefile Modified: head/sys/amd64/linux32/linux.h ============================================================================== --- head/sys/amd64/linux32/linux.h Sun May 24 15:27:31 2015 (r283406) +++ head/sys/amd64/linux32/linux.h Sun May 24 15:28:17 2015 (r283407) @@ -114,7 +114,7 @@ typedef struct { /* * Miscellaneous */ -#define LINUX_AT_COUNT 16 /* Count of used aux entry types. +#define LINUX_AT_COUNT 18 /* Count of used aux entry types. * Keep this synchronized with * elf_linux_fixup() code. */ Modified: head/sys/amd64/linux32/linux32_genassym.c ============================================================================== --- head/sys/amd64/linux32/linux32_genassym.c Sun May 24 15:27:31 2015 (r283406) +++ head/sys/amd64/linux32/linux32_genassym.c Sun May 24 15:28:17 2015 (r283407) @@ -7,9 +7,12 @@ __FBSDID("$FreeBSD$"); #include #include +#include ASSYM(LINUX_SIGF_HANDLER, offsetof(struct l_sigframe, sf_handler)); ASSYM(LINUX_SIGF_SC, offsetof(struct l_sigframe, sf_sc)); ASSYM(LINUX_RT_SIGF_HANDLER, offsetof(struct l_rt_sigframe, sf_handler)); ASSYM(LINUX_RT_SIGF_UC, offsetof(struct l_rt_sigframe, sf_sc)); ASSYM(LINUX_RT_SIGF_SC, offsetof(struct l_ucontext, uc_mcontext)); +ASSYM(LINUX_VERSION_CODE, LINUX_VERSION_CODE); +ASSYM(LINUX_SC_ESP, offsetof(struct l_sigcontext, sc_esp)); Modified: head/sys/amd64/linux32/linux32_locore.s ============================================================================== --- head/sys/amd64/linux32/linux32_locore.s Sun May 24 15:27:31 2015 (r283406) +++ head/sys/amd64/linux32/linux32_locore.s Sun May 24 15:28:17 2015 (r283407) @@ -8,31 +8,143 @@ .text .code32 -NON_GPROF_ENTRY(linux_sigcode) - call *LINUX_SIGF_HANDLER(%esp) - leal LINUX_SIGF_SC(%esp),%ebx /* linux scp */ - movl %esp, %ebx /* pass sigframe */ - push %eax /* fake ret addr */ +/* + * To avoid excess stack frame the signal trampoline code emulates + * the 'call' instruction. + */ +NON_GPROF_ENTRY(linux32_sigcode) + movl %esp, %ebx /* preserve sigframe */ + call .getip0 +.getip0: + popl %eax + add $.startsigcode-.getip0, %eax /* ret address */ + push %eax + jmp *LINUX_SIGF_HANDLER(%ebx) +.startsigcode: + popl %eax movl $LINUX_SYS_linux_sigreturn,%eax /* linux_sigreturn() */ int $0x80 /* enter kernel with args */ +.endsigcode: 0: jmp 0b - ALIGN_TEXT -/* XXXXX */ -linux_rt_sigcode: - call *LINUX_RT_SIGF_HANDLER(%esp) + +NON_GPROF_ENTRY(linux32_rt_sigcode) leal LINUX_RT_SIGF_UC(%esp),%ebx /* linux ucp */ leal LINUX_RT_SIGF_SC(%ebx),%ecx /* linux sigcontext */ - push %eax /* fake ret addr */ + movl %esp, %edi + call .getip1 +.getip1: + popl %eax + add $.startrtsigcode-.getip1, %eax /* ret address */ + push %eax + jmp *LINUX_RT_SIGF_HANDLER(%edi) +.startrtsigcode: movl $LINUX_SYS_linux_rt_sigreturn,%eax /* linux_rt_sigreturn() */ int $0x80 /* enter kernel with args */ +.endrtsigcode: 0: jmp 0b - ALIGN_TEXT -/* XXXXX */ -linux_esigcode: - - .data - .globl linux_szsigcode, linux_sznonrtsigcode -linux_szsigcode: - .long linux_esigcode-linux_sigcode -linux_sznonrtsigcode: - .long linux_rt_sigcode-linux_sigcode + +NON_GPROF_ENTRY(linux32_vsyscall) +.startvsyscall: + int $0x80 + ret +.endvsyscall: + + + .section .note.Linux, "a",@note + .long 2f - 1f /* namesz */ + .balign 4 + .long 4f - 3f /* descsz */ + .long 0 +1: + .asciz "Linux" +2: + .balign 4 +3: + .long LINUX_VERSION_CODE +4: + .balign 4 + .previous + + +#define do_cfa_expr(offset) \ + .byte 0x0f; /* DW_CFA_def_cfa_expression */ \ + .uleb128 11f-10f; /* length */ \ +10: .byte 0x74; /* DW_OP_breg4 */ \ + .sleb128 offset; /* offset */ \ + .byte 0x06; /* DW_OP_deref */ \ +11: + + + /* CIE */ + .section .eh_frame,"a",@progbits +.LSTARTFRAMEDLSI1: + .long .LENDCIEDLSI1-.LSTARTCIEDLSI1 +.LSTARTCIEDLSI1: + .long 0 /* CIE ID */ + .byte 1 /* Version number */ + .string "zRS" /* NULL-terminated + * augmentation string + */ + .uleb128 1 /* Code alignment factor */ + .sleb128 -4 /* Data alignment factor */ + .byte 8 /* Return address + * register column + */ + .uleb128 1 /* Augmentation value length */ + .byte 0x1b /* DW_EH_PE_pcrel|DW_EH_PE_sdata4. */ + .byte 0 /* DW_CFA_nop */ + .align 4 +.LENDCIEDLSI1: + + /* FDE */ + .long .LENDFDEDLSI1-.LSTARTFDEDLSI1 /* Length FDE */ +.LSTARTFDEDLSI1: + .long .LSTARTFDEDLSI1-.LSTARTFRAMEDLSI1 /* CIE pointer */ + .long .startsigcode-. /* PC-relative start address */ + .long .endsigcode-.startsigcode + .uleb128 0 /* Augmentation */ + do_cfa_expr(LINUX_SIGF_SC-8) + .align 4 +.LENDFDEDLSI1: + + .long .LENDFDEDLSI2-.LSTARTFDEDLSI2 /* Length FDE */ +.LSTARTFDEDLSI2: + .long .LSTARTFDEDLSI2-.LSTARTFRAMEDLSI1 /* CIE pointer */ + .long .startrtsigcode-. /* PC-relative start address */ + .long .endrtsigcode-.startrtsigcode + .uleb128 0 /* Augmentation */ + do_cfa_expr(LINUX_RT_SIGF_SC-4+LINUX_SC_ESP) + .align 4 +.LENDFDEDLSI2: + .previous + + .section .eh_frame,"a",@progbits +.LSTARTFRAMEDLSI2: + .long .LENDCIEDLSI2-.LSTARTCIEDLSI2 +.LSTARTCIEDLSI2: + .long 0 /* CIE ID */ + .byte 1 /* Version number */ + .string "zR" /* NULL-terminated + * augmentation string + */ + .uleb128 1 /* Code alignment factor */ + .sleb128 -4 /* Data alignment factor */ + .byte 8 /* Return address register column */ + .uleb128 1 /* Augmentation value length */ + .byte 0x1b /* DW_EH_PE_pcrel|DW_EH_PE_sdata4. */ + .byte 0x0c /* DW_CFA_def_cfa */ + .uleb128 4 + .uleb128 4 + .byte 0x88 /* DW_CFA_offset, column 0x8 */ + .uleb128 1 + .align 4 +.LENDCIEDLSI2: + .long .LENDFDEDLSI3-.LSTARTFDEDLSI3 /* Length FDE */ +.LSTARTFDEDLSI3: + .long .LSTARTFDEDLSI3-.LSTARTFRAMEDLSI2 /* CIE pointer */ + .long .startvsyscall-. /* PC-relative start address */ + .long .endvsyscall-.startvsyscall + .uleb128 0 + .align 4 +.LENDFDEDLSI3: + .previous Modified: head/sys/amd64/linux32/linux32_sysvec.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysvec.c Sun May 24 15:27:31 2015 (r283406) +++ head/sys/amd64/linux32/linux32_sysvec.c Sun May 24 15:28:17 2015 (r283407) @@ -83,6 +83,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include MODULE_VERSION(linux, 1); @@ -111,8 +112,11 @@ MALLOC_DEFINE(M_LINUX, "linux", "Linux m const char *linux_platform = "i686"; static int linux_szplatform; -extern char linux_sigcode[]; -extern int linux_szsigcode; +static int linux_szsigcode; +static vm_object_t linux_shared_page_obj; +static char *linux_shared_page_mapping; +extern char _binary_linux32_locore_o_start; +extern char _binary_linux32_locore_o_end; extern struct sysent linux_sysent[LINUX_SYS_MAXSYSCALL]; @@ -127,6 +131,8 @@ static void exec_linux_setregs(struct th struct image_params *imgp, u_long stack); static void linux32_fixlimit(struct rlimit *rl, int which); static boolean_t linux32_trans_osrel(const Elf_Note *note, int32_t *osrel); +static void linux_vdso_install(void *param); +static void linux_vdso_deinstall(void *param); static eventhandler_tag linux_exit_tag; static eventhandler_tag linux_exec_tag; @@ -220,6 +226,10 @@ struct linux32_ps_strings { u_int ps_nenvstr; /* the number of environment strings */ }; +LINUX_VDSO_SYM_INTPTR(linux32_sigcode); +LINUX_VDSO_SYM_INTPTR(linux32_rt_sigcode); +LINUX_VDSO_SYM_INTPTR(linux32_vsyscall); + /* * If FreeBSD & Linux have a difference of opinion about what a trap * means, deal with it here. @@ -259,6 +269,9 @@ elf_linux_fixup(register_t **stack_base, args = (Elf32_Auxargs *)imgp->auxargs; pos = base + (imgp->args->argc + imgp->args->envc + 2); + AUXARGS_ENTRY_32(pos, LINUX_AT_SYSINFO_EHDR, + imgp->proc->p_sysent->sv_shared_page_base); + AUXARGS_ENTRY_32(pos, LINUX_AT_SYSINFO, linux32_vsyscall); AUXARGS_ENTRY_32(pos, LINUX_AT_HWCAP, cpu_feature); /* @@ -297,8 +310,6 @@ elf_linux_fixup(register_t **stack_base, return (0); } -extern unsigned long linux_sznonrtsigcode; - static void linux_rt_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) { @@ -353,7 +364,8 @@ linux_rt_sendsig(sig_t catcher, ksiginfo ksiginfo_to_lsiginfo(ksi, &frame.sf_si, sig); /* - * Build the signal context to be used by sigreturn. + * Build the signal context to be used by sigreturn + * and libgcc unwind. */ frame.sf_sc.uc_flags = 0; /* XXX ??? */ frame.sf_sc.uc_link = 0; /* XXX ??? */ @@ -371,6 +383,7 @@ linux_rt_sendsig(sig_t catcher, ksiginfo frame.sf_sc.uc_mcontext.sc_esi = regs->tf_rsi; frame.sf_sc.uc_mcontext.sc_ebp = regs->tf_rbp; frame.sf_sc.uc_mcontext.sc_ebx = regs->tf_rbx; + frame.sf_sc.uc_mcontext.sc_esp = regs->tf_rsp; frame.sf_sc.uc_mcontext.sc_edx = regs->tf_rdx; frame.sf_sc.uc_mcontext.sc_ecx = regs->tf_rcx; frame.sf_sc.uc_mcontext.sc_eax = regs->tf_rax; @@ -412,7 +425,7 @@ linux_rt_sendsig(sig_t catcher, ksiginfo * Build context to run handler in. */ regs->tf_rsp = PTROUT(fp); - regs->tf_rip = p->p_sysent->sv_sigcode_base + linux_sznonrtsigcode; + regs->tf_rip = linux32_rt_sigcode; regs->tf_rflags &= ~(PSL_T | PSL_D); regs->tf_cs = _ucode32sel; regs->tf_ss = _udatasel; @@ -507,6 +520,7 @@ linux_sendsig(sig_t catcher, ksiginfo_t frame.sf_sc.sc_esi = regs->tf_rsi; frame.sf_sc.sc_ebp = regs->tf_rbp; frame.sf_sc.sc_ebx = regs->tf_rbx; + frame.sf_sc.sc_esp = regs->tf_rsp; frame.sf_sc.sc_edx = regs->tf_rdx; frame.sf_sc.sc_ecx = regs->tf_rcx; frame.sf_sc.sc_eax = regs->tf_rax; @@ -535,7 +549,7 @@ linux_sendsig(sig_t catcher, ksiginfo_t * Build context to run handler in. */ regs->tf_rsp = PTROUT(fp); - regs->tf_rip = p->p_sysent->sv_sigcode_base; + regs->tf_rip = linux32_sigcode; regs->tf_rflags &= ~(PSL_T | PSL_D); regs->tf_cs = _ucode32sel; regs->tf_ss = _udatasel; @@ -1014,7 +1028,7 @@ struct sysentvec elf_linux_sysvec = { .sv_transtrap = translate_traps, .sv_fixup = elf_linux_fixup, .sv_sendsig = linux_sendsig, - .sv_sigcode = linux_sigcode, + .sv_sigcode = &_binary_linux32_locore_o_start, .sv_szsigcode = &linux_szsigcode, .sv_prepsyscall = NULL, .sv_name = "Linux ELF32", @@ -1040,7 +1054,39 @@ struct sysentvec elf_linux_sysvec = { .sv_schedtail = linux_schedtail, .sv_thread_detach = linux_thread_detach, }; -INIT_SYSENTVEC(elf_sysvec, &elf_linux_sysvec); + +static void +linux_vdso_install(void *param) +{ + + linux_szsigcode = (&_binary_linux32_locore_o_end - + &_binary_linux32_locore_o_start); + + if (linux_szsigcode > elf_linux_sysvec.sv_shared_page_len) + panic("Linux invalid vdso size\n"); + + __elfN(linux_vdso_fixup)(&elf_linux_sysvec); + + linux_shared_page_obj = __elfN(linux_shared_page_init) + (&linux_shared_page_mapping); + + __elfN(linux_vdso_reloc)(&elf_linux_sysvec, LINUX32_SHAREDPAGE); + + bcopy(elf_linux_sysvec.sv_sigcode, linux_shared_page_mapping, + linux_szsigcode); + elf_linux_sysvec.sv_shared_page_obj = linux_shared_page_obj; +} +SYSINIT(elf_linux_vdso_init, SI_SUB_EXEC, SI_ORDER_ANY, + (sysinit_cfunc_t)linux_vdso_install, NULL); + +static void +linux_vdso_deinstall(void *param) +{ + + __elfN(linux_shared_page_fini)(linux_shared_page_obj); +}; +SYSUNINIT(elf_linux_vdso_uninit, SI_SUB_EXEC, SI_ORDER_FIRST, + (sysinit_cfunc_t)linux_vdso_deinstall, NULL); static char GNU_ABI_VENDOR[] = "GNU"; static int GNULINUX_ABI_DESC = 0; Added: head/sys/amd64/linux32/linux32_vdso.lds.s ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/amd64/linux32/linux32_vdso.lds.s Sun May 24 15:28:17 2015 (r283407) @@ -0,0 +1,65 @@ +/* + * Linker script for 32-bit vDSO. + * Copied from Linux kernel arch/x86/vdso/vdso-layout.lds.S + * and arch/x86/vdso/vdso32/vdso32.lds.S + * + * $FreeBSD$ + */ + +SECTIONS +{ + . = . + SIZEOF_HEADERS; + + .hash : { *(.hash) } :text + .gnu.hash : { *(.gnu.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + + .note : { *(.note.*) } :text :note + + .eh_frame_hdr : { *(.eh_frame_hdr) } :text :eh_frame_hdr + .eh_frame : { KEEP (*(.eh_frame)) } :text + + .dynamic : { *(.dynamic) } :text :dynamic + + .rodata : { *(.rodata*) } :text + .data : { + *(.data*) + *(.sdata*) + *(.got.plt) *(.got) + *(.gnu.linkonce.d.*) + *(.bss*) + *(.dynbss*) + *(.gnu.linkonce.b.*) + } + + .altinstructions : { *(.altinstructions) } + .altinstr_replacement : { *(.altinstr_replacement) } + + . = ALIGN(0x100); + .text : { *(.text*) } :text =0x90909090 +} + +PHDRS +{ + text PT_LOAD FLAGS(5) FILEHDR PHDRS; /* PF_R|PF_X */ + dynamic PT_DYNAMIC FLAGS(4); /* PF_R */ + note PT_NOTE FLAGS(4); /* PF_R */ + eh_frame_hdr PT_GNU_EH_FRAME; +} + +ENTRY(linux32_vsyscall); + +VERSION +{ + LINUX_2.5 { + global: + linux32_vsyscall; + linux32_sigcode; + linux32_rt_sigcode; + local: *; + }; +} Modified: head/sys/compat/linux/linux_misc.h ============================================================================== --- head/sys/compat/linux/linux_misc.h Sun May 24 15:27:31 2015 (r283406) +++ head/sys/compat/linux/linux_misc.h Sun May 24 15:28:17 2015 (r283407) @@ -71,6 +71,8 @@ extern const char *linux_platform; * differ from AT_PLATFORM. */ #define LINUX_AT_EXECFN 31 /* filename of program */ +#define LINUX_AT_SYSINFO 32 /* vsyscall */ +#define LINUX_AT_SYSINFO_EHDR 33 /* vdso header */ /* Linux sets the i387 to extended precision. */ #if defined(__i386__) || defined(__amd64__) Added: head/sys/compat/linux/linux_vdso.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/compat/linux/linux_vdso.c Sun May 24 15:28:17 2015 (r283407) @@ -0,0 +1,240 @@ +/*- + * Copyright (c) 2013 Dmitry Chagin + * 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 + * in this position and unchanged. + * 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 ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_compat.h" + +#define __ELF_WORD_SIZE 32 + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +SLIST_HEAD(, linux_vdso_sym) __elfN(linux_vdso_syms) = + SLIST_HEAD_INITIALIZER(__elfN(linux_vdso_syms)); + +static int __elfN(symtabindex); +static int __elfN(symstrindex); + +static void +__elfN(linux_vdso_lookup)(Elf_Ehdr *, struct linux_vdso_sym *); + + +void +__elfN(linux_vdso_sym_init)(struct linux_vdso_sym *s) +{ + + SLIST_INSERT_HEAD(&__elfN(linux_vdso_syms), s, sym); +} + +vm_object_t +__elfN(linux_shared_page_init)(char **mapping) +{ + vm_page_t m; + vm_object_t obj; + vm_offset_t addr; + + obj = vm_pager_allocate(OBJT_PHYS, 0, PAGE_SIZE, + VM_PROT_DEFAULT, 0, NULL); + VM_OBJECT_WLOCK(obj); + m = vm_page_grab(obj, 0, VM_ALLOC_NOBUSY | VM_ALLOC_ZERO); + m->valid = VM_PAGE_BITS_ALL; + VM_OBJECT_WUNLOCK(obj); + addr = kva_alloc(PAGE_SIZE); + pmap_qenter(addr, &m, 1); + *mapping = (char *)addr; + return (obj); +} + +void +__elfN(linux_shared_page_fini)(vm_object_t obj) +{ + + vm_object_deallocate(obj); +} + +void +__elfN(linux_vdso_fixup)(struct sysentvec *sv) +{ + Elf_Ehdr *ehdr; + Elf_Shdr *shdr; + int i; + + ehdr = (Elf_Ehdr *) sv->sv_sigcode; + + if (!IS_ELF(*ehdr) || + ehdr->e_ident[EI_CLASS] != ELF_TARG_CLASS || + ehdr->e_ident[EI_DATA] != ELF_TARG_DATA || + ehdr->e_ident[EI_VERSION] != EV_CURRENT || + ehdr->e_shoff == 0 || + ehdr->e_shentsize != sizeof(Elf_Shdr)) + panic("Linux invalid vdso header.\n"); + + if (ehdr->e_type != ET_DYN) + panic("Linux invalid vdso header.\n"); + + shdr = (Elf_Shdr *) ((caddr_t)ehdr + ehdr->e_shoff); + + __elfN(symtabindex) = -1; + __elfN(symstrindex) = -1; + for (i = 0; i < ehdr->e_shnum; i++) { + if (shdr[i].sh_size == 0) + continue; + if (shdr[i].sh_type == SHT_DYNSYM) { + __elfN(symtabindex) = i; + __elfN(symstrindex) = shdr[i].sh_link; + } + } + + if (__elfN(symtabindex) == -1 || __elfN(symstrindex) == -1) + panic("Linux invalid vdso header.\n"); + + ehdr->e_ident[EI_OSABI] = ELFOSABI_LINUX; +} + +void +__elfN(linux_vdso_reloc)(struct sysentvec *sv, int vdso_adjust) +{ + struct linux_vdso_sym *lsym; + Elf_Ehdr *ehdr; + Elf_Phdr *phdr; + Elf_Shdr *shdr; + Elf_Dyn *dyn; + Elf_Sym *sym; + int i, symcnt; + + ehdr = (Elf_Ehdr *) sv->sv_sigcode; + + /* Adjust our so relative to the sigcode_base */ + if (vdso_adjust != 0) { + ehdr->e_entry += vdso_adjust; + phdr = (Elf_Phdr *)((caddr_t)ehdr + ehdr->e_phoff); + + /* phdrs */ + for (i = 0; i < ehdr->e_phnum; i++) { + phdr[i].p_vaddr += vdso_adjust; + if (phdr[i].p_type != PT_DYNAMIC) + continue; + dyn = (Elf_Dyn *)((caddr_t)ehdr + phdr[i].p_offset); + for(; dyn->d_tag != DT_NULL; dyn++) { + switch (dyn->d_tag) { + case DT_PLTGOT: + case DT_HASH: + case DT_STRTAB: + case DT_SYMTAB: + case DT_RELA: + case DT_INIT: + case DT_FINI: + case DT_REL: + case DT_DEBUG: + case DT_JMPREL: + case DT_VERSYM: + case DT_VERDEF: + case DT_VERNEED: + case DT_ADDRRNGLO ... DT_ADDRRNGHI: + dyn->d_un.d_ptr += vdso_adjust; + break; + case DT_ENCODING ... DT_LOOS-1: + case DT_LOOS ... DT_HIOS: + if (dyn->d_tag >= DT_ENCODING && + (dyn->d_tag & 1) == 0) + dyn->d_un.d_ptr += vdso_adjust; + break; + default: + break; + } + } + } + + /* sections */ + shdr = (Elf_Shdr *)((caddr_t)ehdr + ehdr->e_shoff); + for(i = 0; i < ehdr->e_shnum; i++) { + if (!(shdr[i].sh_flags & SHF_ALLOC)) + continue; + shdr[i].sh_addr += vdso_adjust; + if (shdr[i].sh_type != SHT_SYMTAB && + shdr[i].sh_type != SHT_DYNSYM) + continue; + + sym = (Elf_Sym *)((caddr_t)ehdr + shdr[i].sh_offset); + symcnt = shdr[i].sh_size / sizeof(*sym); + + for(i = 0; i < symcnt; i++, sym++) { + if (sym->st_shndx == SHN_UNDEF || + sym->st_shndx == SHN_ABS) + continue; + sym->st_value += vdso_adjust; + } + } + } + + SLIST_FOREACH(lsym, &__elfN(linux_vdso_syms), sym) + __elfN(linux_vdso_lookup)(ehdr, lsym); +} + +static void +__elfN(linux_vdso_lookup)(Elf_Ehdr *ehdr, struct linux_vdso_sym *vsym) +{ + vm_offset_t strtab, symname; + uint32_t symcnt; + Elf_Shdr *shdr; + int i; + + shdr = (Elf_Shdr *) ((caddr_t)ehdr + ehdr->e_shoff); + + strtab = (vm_offset_t)((caddr_t)ehdr + + shdr[__elfN(symstrindex)].sh_offset); + Elf_Sym *sym = (Elf_Sym *)((caddr_t)ehdr + + shdr[__elfN(symtabindex)].sh_offset); + symcnt = shdr[__elfN(symtabindex)].sh_size / sizeof(*sym); + + for (i = 0; i < symcnt; ++i, ++sym) { + symname = strtab + sym->st_name; + if (strncmp(vsym->symname, (char *)symname, vsym->size) == 0) { + *vsym->ptr = (uintptr_t)sym->st_value; + break; + } + } +} Added: head/sys/compat/linux/linux_vdso.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/compat/linux/linux_vdso.h Sun May 24 15:28:17 2015 (r283407) @@ -0,0 +1,65 @@ +/*- + * Copyright (c) 2013 Dmitry Chagin + * 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 + * in this position and unchanged. + * 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 ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _LINUX_VDSO_H_ +#define _LINUX_VDSO_H_ + +#include + +struct linux_vdso_sym { + SLIST_ENTRY(linux_vdso_sym) sym; + uint32_t size; + uintptr_t * ptr; + char symname[]; +}; + +vm_object_t __elfN(linux_shared_page_init)(char **); +void __elfN(linux_shared_page_fini)(vm_object_t); +void __elfN(linux_vdso_fixup)(struct sysentvec *); +void __elfN(linux_vdso_reloc)(struct sysentvec *, int); +void __elfN(linux_vdso_sym_init)(struct linux_vdso_sym *); + +#define LINUX_VDSO_SYM_INTPTR(name) \ +uintptr_t name; \ +LINUX_VDSO_SYM_DEFINE(name) + +#define LINUX_VDSO_SYM_CHAR(name) \ +const char * name; \ +LINUX_VDSO_SYM_DEFINE(name) + +#define LINUX_VDSO_SYM_DEFINE(name) \ +static struct linux_vdso_sym name ## sym = { \ + .symname = #name, \ + .size = sizeof(#name), \ + .ptr = (uintptr_t *)&name \ +}; \ +SYSINIT(__elfN(name ## _sym_init), SI_SUB_EXEC, \ + SI_ORDER_FIRST, __elfN(linux_vdso_sym_init), &name ## sym); \ +struct __hack + +#endif /* _LINUX_VDSO_H_ */ Modified: head/sys/conf/files.amd64 ============================================================================== --- head/sys/conf/files.amd64 Sun May 24 15:27:31 2015 (r283406) +++ head/sys/conf/files.amd64 Sun May 24 15:28:17 2015 (r283407) @@ -20,6 +20,18 @@ linux32_assym.h optional compat_linux3 no-obj no-implicit-rule before-depend \ clean "linux32_assym.h" # +linux32_locore.o optional compat_linux32 \ + dependency "linux32_assym.h $S/amd64/linux32/linux32_locore.s" \ + compile-with "${CC} -x assembler-with-cpp -DLOCORE -m32 -shared -s -pipe -I. -I$S -Werror -Wall -fno-common -nostdinc -nostdlib -Wl,-T$S/amd64/linux32/linux32_vdso.lds.s -Wl,-soname=linux32_vdso.so,--eh-frame-hdr,-fPIC,-warn-common ${.IMPSRC} -o ${.TARGET}" \ + no-obj no-implicit-rule \ + clean "linux32_locore.o" +# +linux32_vdso.so optional compat_linux32 \ + dependency "linux32_locore.o" \ + compile-with "${OBJCOPY} --input binary --output elf64-x86-64-freebsd --binary-architecture i386 linux32_locore.o ${.TARGET}" \ + no-implicit-rule \ + clean "linux32_vdso.so" +# ia32_genassym.o standard \ dependency "$S/compat/ia32/ia32_genassym.c" \ compile-with "${CC} ${CFLAGS:N-fno-common} -c ${.IMPSRC}" \ @@ -473,8 +485,6 @@ compat/linsysfs/linsysfs.c optional lins # Linux/i386 binary support # amd64/linux32/linux32_dummy.c optional compat_linux32 -amd64/linux32/linux32_locore.s optional compat_linux32 \ - dependency "linux32_assym.h" amd64/linux32/linux32_machdep.c optional compat_linux32 amd64/linux32/linux32_support.s optional compat_linux32 \ dependency "linux32_assym.h" @@ -497,6 +507,7 @@ compat/linux/linux_time.c optional compa compat/linux/linux_timer.c optional compat_linux32 compat/linux/linux_uid16.c optional compat_linux32 compat/linux/linux_util.c optional compat_linux32 +compat/linux/linux_vdso.c optional compat_linux32 dev/amr/amr_linux.c optional compat_linux32 amr dev/mfi/mfi_linux.c optional compat_linux32 mfi # Modified: head/sys/conf/files.i386 ============================================================================== --- head/sys/conf/files.i386 Sun May 24 15:27:31 2015 (r283406) +++ head/sys/conf/files.i386 Sun May 24 15:28:17 2015 (r283407) @@ -19,6 +19,18 @@ linux_assym.h optional compat_linux \ no-obj no-implicit-rule before-depend \ clean "linux_assym.h" # +linux_locore.o optional compat_linux \ + dependency "linux_assym.h $S/i386/linux/linux_locore.s" \ + compile-with "${CC} -x assembler-with-cpp -DLOCORE -shared -s -pipe -I. -I$S -Werror -Wall -fno-common -nostdinc -nostdlib -Wl,-T$S/i386/linux/linux_vdso.lds.s -Wl,-soname=linux_vdso.so,--eh-frame-hdr,-fPIC,-warn-common ${.IMPSRC} -o ${.TARGET}" \ + no-obj no-implicit-rule \ + clean "linux_locore.o" +# +linux_vdso.so optional compat_linux \ + dependency "linux_locore.o" \ + compile-with "${OBJCOPY} --input binary --output elf32-i386-freebsd --binary-architecture i386 linux_locore.o ${.TARGET}" \ + no-implicit-rule \ + clean "linux_vdso.so" +# svr4_genassym.o optional compat_svr4 \ dependency "$S/i386/svr4/svr4_genassym.c" \ compile-with "${CC} ${CFLAGS:N-fno-common} -c ${.IMPSRC}" \ @@ -86,6 +98,7 @@ compat/linux/linux_time.c optional compa compat/linux/linux_timer.c optional compat_linux compat/linux/linux_uid16.c optional compat_linux compat/linux/linux_util.c optional compat_linux +compat/linux/linux_vdso.c optional compat_linux compat/ndis/kern_ndis.c optional ndisapi pci compat/ndis/kern_windrv.c optional ndisapi pci compat/ndis/subr_hal.c optional ndisapi pci @@ -490,8 +503,6 @@ i386/isa/prof_machdep.c optional profil i386/isa/spic.c optional spic i386/linux/imgact_linux.c optional compat_linux i386/linux/linux_dummy.c optional compat_linux -i386/linux/linux_locore.s optional compat_linux \ - dependency "linux_assym.h" i386/linux/linux_machdep.c optional compat_linux i386/linux/linux_ptrace.c optional compat_linux i386/linux/linux_support.s optional compat_linux \ Modified: head/sys/i386/linux/linux.h ============================================================================== --- head/sys/i386/linux/linux.h Sun May 24 15:27:31 2015 (r283406) +++ head/sys/i386/linux/linux.h Sun May 24 15:28:17 2015 (r283407) @@ -108,7 +108,7 @@ typedef struct { /* * Miscellaneous */ -#define LINUX_AT_COUNT 16 /* Count of used aux entry types. +#define LINUX_AT_COUNT 18 /* Count of used aux entry types. * Keep this synchronized with * elf_linux_fixup() code. */ Modified: head/sys/i386/linux/linux_genassym.c ============================================================================== --- head/sys/i386/linux/linux_genassym.c Sun May 24 15:27:31 2015 (r283406) +++ head/sys/i386/linux/linux_genassym.c Sun May 24 15:28:17 2015 (r283407) @@ -6,6 +6,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include ASSYM(LINUX_SIGF_HANDLER, offsetof(struct l_sigframe, sf_handler)); ASSYM(LINUX_SIGF_SC, offsetof(struct l_sigframe, sf_sc)); @@ -14,3 +15,5 @@ ASSYM(LINUX_SC_EFLAGS, offsetof(struct l ASSYM(LINUX_RT_SIGF_HANDLER, offsetof(struct l_rt_sigframe, sf_handler)); ASSYM(LINUX_RT_SIGF_UC, offsetof(struct l_rt_sigframe, sf_sc)); ASSYM(LINUX_RT_SIGF_SC, offsetof(struct l_ucontext, uc_mcontext)); +ASSYM(LINUX_SC_ESP, offsetof(struct l_sigcontext, sc_esp)); +ASSYM(LINUX_VERSION_CODE, LINUX_VERSION_CODE); Modified: head/sys/i386/linux/linux_locore.s ============================================================================== --- head/sys/i386/linux/linux_locore.s Sun May 24 15:27:31 2015 (r283406) +++ head/sys/i386/linux/linux_locore.s Sun May 24 15:28:17 2015 (r283407) @@ -5,33 +5,145 @@ #include /* system call numbers */ +#include "assym.s" + +/* + * To avoid excess stack frame the signal trampoline code emulates + * the 'call' instruction. + */ NON_GPROF_ENTRY(linux_sigcode) - call *LINUX_SIGF_HANDLER(%esp) - leal LINUX_SIGF_SC(%esp),%ebx /* linux scp */ - mov LINUX_SC_GS(%ebx),%gs - movl %esp, %ebx /* pass sigframe */ - push %eax /* fake ret addr */ + movl %esp, %ebx /* preserve sigframe */ + call .getip0 +.getip0: + popl %eax + add $.startsigcode-.getip0, %eax /* ret address */ + push %eax + jmp *LINUX_SIGF_HANDLER(%ebx) +.startsigcode: + popl %eax /* gcc unwind code need this */ movl $LINUX_SYS_linux_sigreturn,%eax /* linux_sigreturn() */ int $0x80 /* enter kernel with args */ +.endsigcode: 0: jmp 0b - ALIGN_TEXT -/* XXXXX */ -linux_rt_sigcode: - call *LINUX_RT_SIGF_HANDLER(%esp) + +NON_GPROF_ENTRY(linux_rt_sigcode) leal LINUX_RT_SIGF_UC(%esp),%ebx /* linux ucp */ leal LINUX_RT_SIGF_SC(%ebx),%ecx /* linux sigcontext */ - mov LINUX_SC_GS(%ecx),%gs - push %eax /* fake ret addr */ + movl %esp, %edi + call .getip1 +.getip1: + popl %eax + add $.startrtsigcode-.getip1, %eax /* ret address */ + push %eax + jmp *LINUX_RT_SIGF_HANDLER(%edi) +.startrtsigcode: movl $LINUX_SYS_linux_rt_sigreturn,%eax /* linux_rt_sigreturn() */ int $0x80 /* enter kernel with args */ +.endrtsigcode: 0: jmp 0b - ALIGN_TEXT -/* XXXXX */ -linux_esigcode: - - .data - .globl linux_szsigcode, linux_sznonrtsigcode -linux_szsigcode: - .long linux_esigcode-linux_sigcode -linux_sznonrtsigcode: - .long linux_rt_sigcode-linux_sigcode + +NON_GPROF_ENTRY(linux_vsyscall) +.startvsyscall: + int $0x80 + ret +.endvsyscall: + + + .section .note.Linux, "a",@note + .long 2f - 1f /* namesz */ + .balign 4 + .long 4f - 3f /* descsz */ + .long 0 +1: + .asciz "Linux" +2: + .balign 4 +3: + .long LINUX_VERSION_CODE +4: + .balign 4 + .previous + + +#define do_cfa_expr(offset) \ + .byte 0x0f; /* DW_CFA_def_cfa_expression */ \ + .uleb128 11f-10f; /* length */ \ +10: .byte 0x74; /* DW_OP_breg4 */ \ + .sleb128 offset; /* offset */ \ + .byte 0x06; /* DW_OP_deref */ \ +11: + + + /* CIE */ + .section .eh_frame,"a",@progbits +.LSTARTFRAMEDLSI1: + .long .LENDCIEDLSI1-.LSTARTCIEDLSI1 +.LSTARTCIEDLSI1: + .long 0 /* CIE ID */ + .byte 1 /* Version number */ + .string "zRS" /* NULL-terminated + * augmentation string + */ + .uleb128 1 /* Code alignment factor */ + .sleb128 -4 /* Data alignment factor */ + .byte 8 /* Return address + * register column + */ + .uleb128 1 /* Augmentation value length */ + .byte 0x1b /* DW_EH_PE_pcrel|DW_EH_PE_sdata4. */ + .byte 0 /* DW_CFA_nop */ + .align 4 +.LENDCIEDLSI1: + + /* FDE */ + .long .LENDFDEDLSI1-.LSTARTFDEDLSI1 /* Length FDE */ +.LSTARTFDEDLSI1: + .long .LSTARTFDEDLSI1-.LSTARTFRAMEDLSI1 /* CIE pointer */ + .long .startsigcode-. /* PC-relative start address */ + .long .endsigcode-.startsigcode + .uleb128 0 /* Augmentation */ + do_cfa_expr(LINUX_SIGF_SC-8) + .align 4 +.LENDFDEDLSI1: + + .long .LENDFDEDLSI2-.LSTARTFDEDLSI2 /* Length FDE */ +.LSTARTFDEDLSI2: + .long .LSTARTFDEDLSI2-.LSTARTFRAMEDLSI1 /* CIE pointer */ + .long .startrtsigcode-. /* PC-relative start address */ + .long .endrtsigcode-.startrtsigcode + .uleb128 0 /* Augmentation */ + do_cfa_expr(LINUX_RT_SIGF_SC-4+LINUX_SC_ESP) + .align 4 +.LENDFDEDLSI2: + .previous + + .section .eh_frame,"a",@progbits +.LSTARTFRAMEDLSI2: + .long .LENDCIEDLSI2-.LSTARTCIEDLSI2 +.LSTARTCIEDLSI2: + .long 0 /* CIE ID */ + .byte 1 /* Version number */ + .string "zR" /* NULL-terminated + * augmentation string + */ + .uleb128 1 /* Code alignment factor */ + .sleb128 -4 /* Data alignment factor */ + .byte 8 /* Return address register column */ + .uleb128 1 /* Augmentation value length */ + .byte 0x1b /* DW_EH_PE_pcrel|DW_EH_PE_sdata4. */ + .byte 0x0c /* DW_CFA_def_cfa */ + .uleb128 4 + .uleb128 4 + .byte 0x88 /* DW_CFA_offset, column 0x8 */ + .uleb128 1 *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:29:21 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 58D88789; Sun, 24 May 2015 15:29:21 +0000 (UTC) Received: from svn.freebsd.org (svn.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 46B1D1D0A; Sun, 24 May 2015 15:29:21 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OFTLMx051805; Sun, 24 May 2015 15:29:21 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OFTK57051803; Sun, 24 May 2015 15:29:20 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241529.t4OFTK57051803@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:29:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283408 - in head/sys: amd64/linux32 i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:29:21 -0000 Author: dchagin Date: Sun May 24 15:29:20 2015 New Revision: 283408 URL: https://svnweb.freebsd.org/changeset/base/283408 Log: Eliminate a now unused global declaration of elf_linux_sysvec. Differential Revision: https://reviews.freebsd.org/D1061 Reviewed by: trasz Modified: head/sys/amd64/linux32/linux.h head/sys/i386/linux/linux.h Modified: head/sys/amd64/linux32/linux.h ============================================================================== --- head/sys/amd64/linux32/linux.h Sun May 24 15:28:17 2015 (r283407) +++ head/sys/amd64/linux32/linux.h Sun May 24 15:29:20 2015 (r283408) @@ -523,8 +523,6 @@ struct l_rt_sigframe { l_handler_t sf_handler; } __packed; -extern struct sysentvec elf_linux_sysvec; - /* * open/fcntl flags */ Modified: head/sys/i386/linux/linux.h ============================================================================== --- head/sys/i386/linux/linux.h Sun May 24 15:28:17 2015 (r283407) +++ head/sys/i386/linux/linux.h Sun May 24 15:29:20 2015 (r283408) @@ -499,7 +499,6 @@ struct l_rt_sigframe { }; extern struct sysentvec linux_sysvec; -extern struct sysentvec elf_linux_sysvec; /* * open/fcntl flags From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:29:57 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 55D5C8D5; Sun, 24 May 2015 15:29:57 +0000 (UTC) Received: from svn.freebsd.org (svn.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 29D501D15; Sun, 24 May 2015 15:29:57 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OFTvvG051927; Sun, 24 May 2015 15:29:57 GMT (envelope-from ian@FreeBSD.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OFTuXV051925; Sun, 24 May 2015 15:29:56 GMT (envelope-from ian@FreeBSD.org) Message-Id: <201505241529.t4OFTuXV051925@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ian set sender to ian@FreeBSD.org using -f From: Ian Lepore Date: Sun, 24 May 2015 15:29: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: r283409 - in stable/10/sys/boot/uboot: fdt 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-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:29:57 -0000 Author: ian Date: Sun May 24 15:29:56 2015 New Revision: 283409 URL: https://svnweb.freebsd.org/changeset/base/283409 Log: MFC r280194: Fix fdt_platform_fixups() mem region handling. Modified: stable/10/sys/boot/uboot/fdt/uboot_fdt.c stable/10/sys/boot/uboot/lib/glue.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/boot/uboot/fdt/uboot_fdt.c ============================================================================== --- stable/10/sys/boot/uboot/fdt/uboot_fdt.c Sun May 24 15:29:20 2015 (r283408) +++ stable/10/sys/boot/uboot/fdt/uboot_fdt.c Sun May 24 15:29:56 2015 (r283409) @@ -88,7 +88,7 @@ fdt_platform_load_dtb(void) void fdt_platform_fixups(void) { - struct fdt_mem_region regions[3]; + static struct fdt_mem_region regions[UB_MAX_MR]; const char *env, *str; char *end, *ethstr; int eth_no, i, len, n; @@ -165,17 +165,15 @@ fdt_platform_fixups(void) /* Modify cpu(s) and bus clock frequenties in /cpus node [Hz] */ fdt_fixup_cpubusfreqs(si->clk_cpu, si->clk_bus); - /* Copy the data into a useful form */ - for (i = 0; i < si->mr_no; i++) { - if (i > nitems(regions)) { - i = nitems(regions); - break; + /* Extract the DRAM regions into fdt_mem_region format. */ + for (i = 0, n = 0; i < si->mr_no && n < nitems(regions); i++) { + if (si->mr[i].flags == MR_ATTR_DRAM) { + regions[n].start = si->mr[i].start; + regions[n].size = si->mr[i].size; + n++; } - - regions[i].start = si->mr[i].start; - regions[i].size = si->mr[i].size; } /* Fixup memory regions */ - fdt_fixup_memory(regions, i); + fdt_fixup_memory(regions, n); } Modified: stable/10/sys/boot/uboot/lib/glue.h ============================================================================== --- stable/10/sys/boot/uboot/lib/glue.h Sun May 24 15:29:20 2015 (r283408) +++ stable/10/sys/boot/uboot/lib/glue.h Sun May 24 15:29:56 2015 (r283409) @@ -40,7 +40,7 @@ void *syscall_ptr; int api_search_sig(struct api_signature **sig); -#define UB_MAX_MR 5 /* max mem regions number */ +#define UB_MAX_MR 16 /* max mem regions number */ #define UB_MAX_DEV 6 /* max devices number */ /* From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:30:55 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 490F7A23; Sun, 24 May 2015 15:30:55 +0000 (UTC) Received: from svn.freebsd.org (svn.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 3729C1D1F; Sun, 24 May 2015 15:30:55 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OFUtb3055175; Sun, 24 May 2015 15:30:55 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OFUrhd053702; Sun, 24 May 2015 15:30:53 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241530.t4OFUrhd053702@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:30:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283410 - in head/sys: amd64/linux32 compat/linux i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:30:55 -0000 Author: dchagin Date: Sun May 24 15:30:52 2015 New Revision: 283410 URL: https://svnweb.freebsd.org/changeset/base/283410 Log: Put linux_platform into the vdso to avoid copying it onto the stack at every exec. Differential Revision: https://reviews.freebsd.org/D1062 Reviewed by: trasz Modified: head/sys/amd64/linux32/linux32_locore.s head/sys/amd64/linux32/linux32_sysvec.c head/sys/amd64/linux32/linux32_vdso.lds.s head/sys/compat/linux/linux_misc.c head/sys/compat/linux/linux_misc.h head/sys/i386/linux/linux_sysvec.c Modified: head/sys/amd64/linux32/linux32_locore.s ============================================================================== --- head/sys/amd64/linux32/linux32_locore.s Sun May 24 15:29:56 2015 (r283409) +++ head/sys/amd64/linux32/linux32_locore.s Sun May 24 15:30:52 2015 (r283410) @@ -5,6 +5,12 @@ #include /* system call numbers */ +.data + + .globl linux_platform +linux_platform: + .asciz "i686" + .text .code32 Modified: head/sys/amd64/linux32/linux32_sysvec.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysvec.c Sun May 24 15:29:56 2015 (r283409) +++ head/sys/amd64/linux32/linux32_sysvec.c Sun May 24 15:30:52 2015 (r283410) @@ -110,8 +110,7 @@ MALLOC_DEFINE(M_LINUX, "linux", "Linux m #define LINUX_SYS_linux_rt_sendsig 0 #define LINUX_SYS_linux_sendsig 0 -const char *linux_platform = "i686"; -static int linux_szplatform; +const char *linux_kplatform; static int linux_szsigcode; static vm_object_t linux_shared_page_obj; static char *linux_shared_page_mapping; @@ -229,6 +228,7 @@ struct linux32_ps_strings { LINUX_VDSO_SYM_INTPTR(linux32_sigcode); LINUX_VDSO_SYM_INTPTR(linux32_rt_sigcode); LINUX_VDSO_SYM_INTPTR(linux32_vsyscall); +LINUX_VDSO_SYM_CHAR(linux_platform); /* * If FreeBSD & Linux have a difference of opinion about what a trap @@ -257,11 +257,10 @@ elf_linux_fixup(register_t **stack_base, { Elf32_Auxargs *args; Elf32_Addr *base; - Elf32_Addr *pos, *uplatform; + Elf32_Addr *pos; struct linux32_ps_strings *arginfo; arginfo = (struct linux32_ps_strings *)LINUX32_PS_STRINGS; - uplatform = (Elf32_Addr *)((caddr_t)arginfo - linux_szplatform); KASSERT(curthread->td_proc == imgp->proc, ("unsafe elf_linux_fixup(), should be curproc")); @@ -296,7 +295,7 @@ elf_linux_fixup(register_t **stack_base, AUXARGS_ENTRY_32(pos, AT_EUID, imgp->proc->p_ucred->cr_svuid); AUXARGS_ENTRY_32(pos, AT_GID, imgp->proc->p_ucred->cr_rgid); AUXARGS_ENTRY_32(pos, AT_EGID, imgp->proc->p_ucred->cr_svgid); - AUXARGS_ENTRY_32(pos, LINUX_AT_PLATFORM, PTROUT(uplatform)); + AUXARGS_ENTRY_32(pos, LINUX_AT_PLATFORM, PTROUT(linux_platform)); if (args->execfd != -1) AUXARGS_ENTRY_32(pos, AT_EXECFD, args->execfd); AUXARGS_ENTRY_32(pos, AT_NULL, 0); @@ -883,15 +882,8 @@ linux_copyout_strings(struct image_param * Also deal with signal trampoline code for this exec type. */ arginfo = (struct linux32_ps_strings *)LINUX32_PS_STRINGS; - destp = (caddr_t)arginfo - SPARE_USRSPACE - linux_szplatform - - roundup((ARG_MAX - imgp->args->stringspace), - sizeof(char *)); - - /* - * Install LINUX_PLATFORM - */ - copyout(linux_platform, ((caddr_t)arginfo - linux_szplatform), - linux_szplatform); + destp = (caddr_t)arginfo - SPARE_USRSPACE - + roundup((ARG_MAX - imgp->args->stringspace), sizeof(char *)); /* * If we have a valid auxargs ptr, prepare some room @@ -1075,6 +1067,9 @@ linux_vdso_install(void *param) bcopy(elf_linux_sysvec.sv_sigcode, linux_shared_page_mapping, linux_szsigcode); elf_linux_sysvec.sv_shared_page_obj = linux_shared_page_obj; + + linux_kplatform = linux_shared_page_mapping + + (linux_platform - (caddr_t)LINUX32_SHAREDPAGE); } SYSINIT(elf_linux_vdso_init, SI_SUB_EXEC, SI_ORDER_ANY, (sysinit_cfunc_t)linux_vdso_install, NULL); @@ -1181,8 +1176,6 @@ linux_elf_modevent(module_t mod, int typ linux_proc_exec, NULL, 1000); linux_thread_dtor_tag = EVENTHANDLER_REGISTER(thread_dtor, linux_thread_dtor, NULL, EVENTHANDLER_PRI_ANY); - linux_szplatform = roundup(strlen(linux_platform) + 1, - sizeof(char *)); linux_osd_jail_register(); stclohz = (stathz ? stathz : hz); if (bootverbose) Modified: head/sys/amd64/linux32/linux32_vdso.lds.s ============================================================================== --- head/sys/amd64/linux32/linux32_vdso.lds.s Sun May 24 15:29:56 2015 (r283409) +++ head/sys/amd64/linux32/linux32_vdso.lds.s Sun May 24 15:30:52 2015 (r283410) @@ -60,6 +60,7 @@ VERSION linux32_vsyscall; linux32_sigcode; linux32_rt_sigcode; + linux_platform; local: *; }; } Modified: head/sys/compat/linux/linux_misc.c ============================================================================== --- head/sys/compat/linux/linux_misc.c Sun May 24 15:29:56 2015 (r283409) +++ head/sys/compat/linux/linux_misc.c Sun May 24 15:30:52 2015 (r283410) @@ -731,7 +731,7 @@ linux_newuname(struct thread *td, struct *p = '\0'; break; } - strlcpy(utsname.machine, linux_platform, LINUX_MAX_UTSNAME); + strlcpy(utsname.machine, linux_kplatform, LINUX_MAX_UTSNAME); return (copyout(&utsname, args->buf, sizeof(utsname))); } Modified: head/sys/compat/linux/linux_misc.h ============================================================================== --- head/sys/compat/linux/linux_misc.h Sun May 24 15:29:56 2015 (r283409) +++ head/sys/compat/linux/linux_misc.h Sun May 24 15:30:52 2015 (r283410) @@ -57,7 +57,7 @@ #define LINUX_PATH_MAX 4096 -extern const char *linux_platform; +extern const char *linux_kplatform; /* * Non-standard aux entry types used in Linux ELF binaries. Modified: head/sys/i386/linux/linux_sysvec.c ============================================================================== --- head/sys/i386/linux/linux_sysvec.c Sun May 24 15:29:56 2015 (r283409) +++ head/sys/i386/linux/linux_sysvec.c Sun May 24 15:30:52 2015 (r283410) @@ -118,7 +118,7 @@ static void linux_vdso_install(void *par static void linux_vdso_deinstall(void *param); static int linux_szplatform; -const char *linux_platform; +const char *linux_kplatform; static eventhandler_tag linux_exit_tag; static eventhandler_tag linux_exec_tag; @@ -330,7 +330,7 @@ linux_copyout_strings(struct image_param /* * install LINUX_PLATFORM */ - copyout(linux_platform, ((caddr_t)arginfo - linux_szplatform), + copyout(linux_kplatform, ((caddr_t)arginfo - linux_szplatform), linux_szplatform); /* @@ -1153,8 +1153,8 @@ linux_elf_modevent(module_t mod, int typ NULL, 1000); linux_thread_dtor_tag = EVENTHANDLER_REGISTER(thread_dtor, linux_thread_dtor, NULL, EVENTHANDLER_PRI_ANY); - linux_get_machine(&linux_platform); - linux_szplatform = roundup(strlen(linux_platform) + 1, + linux_get_machine(&linux_kplatform); + linux_szplatform = roundup(strlen(linux_kplatform) + 1, sizeof(char *)); linux_osd_jail_register(); stclohz = (stathz ? stathz : hz); From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:32:53 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5E934B9A; Sun, 24 May 2015 15:32:53 +0000 (UTC) Received: from svn.freebsd.org (svn.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 4BF6D1DD9; Sun, 24 May 2015 15:32:53 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OFWr8n056101; Sun, 24 May 2015 15:32:53 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OFWq5u056099; Sun, 24 May 2015 15:32:52 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241532.t4OFWq5u056099@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:32:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283411 - in head/sys: amd64/linux32 i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:32:53 -0000 Author: dchagin Date: Sun May 24 15:32:52 2015 New Revision: 283411 URL: https://svnweb.freebsd.org/changeset/base/283411 Log: Remove stale comment about a signal trampoline which is moved to the shared page at r219609. Differential Revision: https://reviews.freebsd.org/D1063 Reviewed by: trasz Modified: head/sys/amd64/linux32/linux32_sysvec.c head/sys/i386/linux/linux_sysvec.c Modified: head/sys/amd64/linux32/linux32_sysvec.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysvec.c Sun May 24 15:30:52 2015 (r283410) +++ head/sys/amd64/linux32/linux32_sysvec.c Sun May 24 15:32:52 2015 (r283411) @@ -879,7 +879,6 @@ linux_copyout_strings(struct image_param /* * Calculate string base and vector table pointers. - * Also deal with signal trampoline code for this exec type. */ arginfo = (struct linux32_ps_strings *)LINUX32_PS_STRINGS; destp = (caddr_t)arginfo - SPARE_USRSPACE - Modified: head/sys/i386/linux/linux_sysvec.c ============================================================================== --- head/sys/i386/linux/linux_sysvec.c Sun May 24 15:30:52 2015 (r283410) +++ head/sys/i386/linux/linux_sysvec.c Sun May 24 15:32:52 2015 (r283411) @@ -320,7 +320,6 @@ linux_copyout_strings(struct image_param /* * Calculate string base and vector table pointers. - * Also deal with signal trampoline code for this exec type. */ p = imgp->proc; arginfo = (struct ps_strings *)p->p_sysent->sv_psstrings; From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:39:09 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 00691868; Sun, 24 May 2015 15:39:08 +0000 (UTC) Received: from svn.freebsd.org (svn.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 E29941E24; Sun, 24 May 2015 15:39:08 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OFd8oa058391; Sun, 24 May 2015 15:39:08 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OFd80l058390; Sun, 24 May 2015 15:39:08 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241539.t4OFd80l058390@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:39:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283412 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:39:09 -0000 Author: dchagin Date: Sun May 24 15:39:08 2015 New Revision: 283412 URL: https://svnweb.freebsd.org/changeset/base/283412 Log: Get ready to commit x86_64 Linux emulation. All fields of type l_int in struct statfs are defined as l_long on i386 and amd64. Differential Revision: https://reviews.freebsd.org/D1064 Reviewed by: trasz Modified: head/sys/compat/linux/linux_stats.c Modified: head/sys/compat/linux/linux_stats.c ============================================================================== --- head/sys/compat/linux/linux_stats.c Sun May 24 15:32:52 2015 (r283411) +++ head/sys/compat/linux/linux_stats.c Sun May 24 15:39:08 2015 (r283412) @@ -326,18 +326,17 @@ linux_lstat(struct thread *td, struct li return(stat_copyout(&buf, args->up)); } -/* XXX - All fields of type l_int are defined as l_long on i386 */ struct l_statfs { - l_int f_type; - l_int f_bsize; - l_int f_blocks; - l_int f_bfree; - l_int f_bavail; - l_int f_files; - l_int f_ffree; + l_long f_type; + l_long f_bsize; + l_long f_blocks; + l_long f_bfree; + l_long f_bavail; + l_long f_files; + l_long f_ffree; l_fsid_t f_fsid; - l_int f_namelen; - l_int f_spare[6]; + l_long f_namelen; + l_long f_spare[6]; }; #define LINUX_CODA_SUPER_MAGIC 0x73757245L From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:41:28 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3C8D1B86; Sun, 24 May 2015 15:41:28 +0000 (UTC) Received: from svn.freebsd.org (svn.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 29D751EDA; Sun, 24 May 2015 15:41:28 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OFfSlU062607; Sun, 24 May 2015 15:41:28 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OFfR4m062605; Sun, 24 May 2015 15:41:27 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241541.t4OFfR4m062605@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:41:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283413 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:41:28 -0000 Author: dchagin Date: Sun May 24 15:41:27 2015 New Revision: 283413 URL: https://svnweb.freebsd.org/changeset/base/283413 Log: 64-bit paltforms, like x86_64, do not use multiplexing on socketcall system calls. Differential Revision: https://reviews.freebsd.org/D1065 Reviewed by: trasz Modified: head/sys/compat/linux/linux_socket.c head/sys/compat/linux/linux_socket.h Modified: head/sys/compat/linux/linux_socket.c ============================================================================== --- head/sys/compat/linux/linux_socket.c Sun May 24 15:39:08 2015 (r283412) +++ head/sys/compat/linux/linux_socket.c Sun May 24 15:41:27 2015 (r283413) @@ -585,15 +585,6 @@ linux_check_hdrincl(struct thread *td, i return (optval == 0); } -struct linux_sendto_args { - int s; - l_uintptr_t msg; - int len; - int flags; - l_uintptr_t to; - int tolen; -}; - /* * Updated sendto() when IP_HDRINCL is set: * tweak endian-dependent fields in the IP packet. @@ -645,13 +636,7 @@ goout: return (error); } -struct linux_socket_args { - int domain; - int type; - int protocol; -}; - -static int +int linux_socket(struct thread *td, struct linux_socket_args *args) { struct socket_args /* { @@ -715,13 +700,7 @@ out: return (retval_socket); } -struct linux_bind_args { - int s; - l_uintptr_t name; - int namelen; -}; - -static int +int linux_bind(struct thread *td, struct linux_bind_args *args) { struct sockaddr *sa; @@ -739,13 +718,6 @@ linux_bind(struct thread *td, struct lin return (error); } -struct linux_connect_args { - int s; - l_uintptr_t name; - int namelen; -}; -int linux_connect(struct thread *, struct linux_connect_args *); - int linux_connect(struct thread *td, struct linux_connect_args *args) { @@ -790,12 +762,7 @@ linux_connect(struct thread *td, struct return (error); } -struct linux_listen_args { - int s; - int backlog; -}; - -static int +int linux_listen(struct thread *td, struct linux_listen_args *args) { struct listen_args /* { @@ -856,13 +823,7 @@ out: return (error); } -struct linux_accept_args { - int s; - l_uintptr_t addr; - l_uintptr_t namelen; -}; - -static int +int linux_accept(struct thread *td, struct linux_accept_args *args) { @@ -870,14 +831,7 @@ linux_accept(struct thread *td, struct l args->namelen, 0)); } -struct linux_accept4_args { - int s; - l_uintptr_t addr; - l_uintptr_t namelen; - int flags; -}; - -static int +int linux_accept4(struct thread *td, struct linux_accept4_args *args) { @@ -885,13 +839,7 @@ linux_accept4(struct thread *td, struct args->namelen, args->flags)); } -struct linux_getsockname_args { - int s; - l_uintptr_t addr; - l_uintptr_t namelen; -}; - -static int +int linux_getsockname(struct thread *td, struct linux_getsockname_args *args) { struct getsockname_args /* { @@ -915,13 +863,7 @@ linux_getsockname(struct thread *td, str return (0); } -struct linux_getpeername_args { - int s; - l_uintptr_t addr; - l_uintptr_t namelen; -}; - -static int +int linux_getpeername(struct thread *td, struct linux_getpeername_args *args) { struct getpeername_args /* { @@ -944,14 +886,7 @@ linux_getpeername(struct thread *td, str return (0); } -struct linux_socketpair_args { - int domain; - int type; - int protocol; - l_uintptr_t rsv; -}; - -static int +int linux_socketpair(struct thread *td, struct linux_socketpair_args *args) { struct socketpair_args /* { @@ -1007,6 +942,7 @@ out: return (error); } +#if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) struct linux_send_args { int s; l_uintptr_t msg; @@ -1062,8 +998,9 @@ linux_recv(struct thread *td, struct lin bsd_args.fromlenaddr = 0; return (sys_recvfrom(td, &bsd_args)); } +#endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */ -static int +int linux_sendto(struct thread *td, struct linux_sendto_args *args) { struct msghdr msg; @@ -1087,16 +1024,7 @@ linux_sendto(struct thread *td, struct l return (error); } -struct linux_recvfrom_args { - int s; - l_uintptr_t buf; - int len; - int flags; - l_uintptr_t from; - l_uintptr_t fromlen; -}; - -static int +int linux_recvfrom(struct thread *td, struct linux_recvfrom_args *args) { struct recvfrom_args /* { @@ -1136,13 +1064,7 @@ linux_recvfrom(struct thread *td, struct return (0); } -struct linux_sendmsg_args { - int s; - l_uintptr_t msg; - int flags; -}; - -static int +int linux_sendmsg(struct thread *td, struct linux_sendmsg_args *args) { struct cmsghdr *cmsg; @@ -1279,13 +1201,7 @@ bad: return (error); } -struct linux_recvmsg_args { - int s; - l_uintptr_t msg; - int flags; -}; - -static int +int linux_recvmsg(struct thread *td, struct linux_recvmsg_args *args) { struct cmsghdr *cm; @@ -1452,12 +1368,7 @@ bad: return (error); } -struct linux_shutdown_args { - int s; - int how; -}; - -static int +int linux_shutdown(struct thread *td, struct linux_shutdown_args *args) { struct shutdown_args /* { @@ -1470,15 +1381,7 @@ linux_shutdown(struct thread *td, struct return (sys_shutdown(td, &bsd_args)); } -struct linux_setsockopt_args { - int s; - int level; - int optname; - l_uintptr_t optval; - int optlen; -}; - -static int +int linux_setsockopt(struct thread *td, struct linux_setsockopt_args *args) { struct setsockopt_args /* { @@ -1543,15 +1446,7 @@ linux_setsockopt(struct thread *td, stru return (error); } -struct linux_getsockopt_args { - int s; - int level; - int optname; - l_uintptr_t optval; - l_uintptr_t optlen; -}; - -static int +int linux_getsockopt(struct thread *td, struct linux_getsockopt_args *args) { struct getsockopt_args /* { @@ -1654,6 +1549,7 @@ static const unsigned char lxs_args[] = #define LINUX_AL_SIZE sizeof(lxs_args) / sizeof(lxs_args[0]) - 1 +#if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) int linux_socketcall(struct thread *td, struct linux_socketcall_args *args) { @@ -1710,3 +1606,4 @@ linux_socketcall(struct thread *td, stru uprintf("LINUX: 'socket' typ=%d not implemented\n", args->what); return (ENOSYS); } +#endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */ Modified: head/sys/compat/linux/linux_socket.h ============================================================================== --- head/sys/compat/linux/linux_socket.h Sun May 24 15:39:08 2015 (r283412) +++ head/sys/compat/linux/linux_socket.h Sun May 24 15:41:27 2015 (r283413) @@ -116,6 +116,133 @@ struct l_ucred { uint32_t gid; }; +#if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) + +struct linux_sendto_args { + int s; + l_uintptr_t msg; + int len; + int flags; + l_uintptr_t to; + int tolen; +}; + +struct linux_socket_args { + int domain; + int type; + int protocol; +}; + +struct linux_bind_args { + int s; + l_uintptr_t name; + int namelen; +}; + +struct linux_connect_args { + int s; + l_uintptr_t name; + int namelen; +}; + +struct linux_listen_args { + int s; + int backlog; +}; + +struct linux_accept_args { + int s; + l_uintptr_t addr; + l_uintptr_t namelen; +}; + +struct linux_accept4_args { + int s; + l_uintptr_t addr; + l_uintptr_t namelen; + int flags; +}; + +struct linux_getsockname_args { + int s; + l_uintptr_t addr; + l_uintptr_t namelen; +}; + +struct linux_getpeername_args { + int s; + l_uintptr_t addr; + l_uintptr_t namelen; +}; + +struct linux_socketpair_args { + int domain; + int type; + int protocol; + l_uintptr_t rsv; +}; + +struct linux_recvfrom_args { + int s; + l_uintptr_t buf; + int len; + int flags; + l_uintptr_t from; + l_uintptr_t fromlen; +}; + +struct linux_sendmsg_args { + int s; + l_uintptr_t msg; + int flags; +}; + +struct linux_recvmsg_args { + int s; + l_uintptr_t msg; + int flags; +}; + +struct linux_shutdown_args { + int s; + int how; +}; + +struct linux_setsockopt_args { + int s; + int level; + int optname; + l_uintptr_t optval; + int optlen; +}; + +struct linux_getsockopt_args { + int s; + int level; + int optname; + l_uintptr_t optval; + l_uintptr_t optlen; +}; + +int linux_socket(struct thread *td, struct linux_socket_args *args); +int linux_bind(struct thread *td, struct linux_bind_args *args); +int linux_connect(struct thread *, struct linux_connect_args *); +int linux_listen(struct thread *td, struct linux_listen_args *args); +int linux_accept(struct thread *td, struct linux_accept_args *args); +int linux_accept4(struct thread *td, struct linux_accept4_args *args); +int linux_getsockname(struct thread *td, struct linux_getsockname_args *args); +int linux_getpeername(struct thread *td, struct linux_getpeername_args *args); +int linux_socketpair(struct thread *td, struct linux_socketpair_args *args); +int linux_sendto(struct thread *td, struct linux_sendto_args *args); +int linux_recvfrom(struct thread *td, struct linux_recvfrom_args *args); +int linux_sendmsg(struct thread *td, struct linux_sendmsg_args *args); +int linux_recvmsg(struct thread *td, struct linux_recvmsg_args *args); +int linux_shutdown(struct thread *td, struct linux_shutdown_args *args); +int linux_setsockopt(struct thread *td, struct linux_setsockopt_args *args); +int linux_getsockopt(struct thread *td, struct linux_getsockopt_args *args); + +#endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */ + /* Operations for socketcall */ #define LINUX_SOCKET 1 From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:42:36 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E63C5CDF; Sun, 24 May 2015 15:42:36 +0000 (UTC) Received: from svn.freebsd.org (svn.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 D49271EEE; Sun, 24 May 2015 15:42:36 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OFgagg062800; Sun, 24 May 2015 15:42:36 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OFgaAN062799; Sun, 24 May 2015 15:42:36 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241542.t4OFgaAN062799@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:42:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283414 - head/sys/compat/linprocfs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:42:37 -0000 Author: dchagin Date: Sun May 24 15:42:36 2015 New Revision: 283414 URL: https://svnweb.freebsd.org/changeset/base/283414 Log: Print out proper procmap entry for 64 bit binaries. Differential Revision: https://reviews.freebsd.org/D1066 Reviewed by: trasz Modified: head/sys/compat/linprocfs/linprocfs.c Modified: head/sys/compat/linprocfs/linprocfs.c ============================================================================== --- head/sys/compat/linprocfs/linprocfs.c Sun May 24 15:41:27 2015 (r283413) +++ head/sys/compat/linprocfs/linprocfs.c Sun May 24 15:42:36 2015 (r283414) @@ -982,6 +982,9 @@ linprocfs_doprocenviron(PFS_FILL_ARGS) return (ret); } +static char l32_map_str[] = "%08lx-%08lx %s%s%s%s %08lx %02x:%02x %lu%s%s\n"; +static char l64_map_str[] = "%016lx-%016lx %s%s%s%s %08lx %02x:%02x %lu%s%s\n"; + /* * Filler function for proc/pid/maps */ @@ -997,6 +1000,7 @@ linprocfs_doprocmaps(PFS_FILL_ARGS) vm_prot_t e_prot; unsigned int last_timestamp; char *name = "", *freename = NULL; + const char *l_map_str; ino_t ino; int ref_count, shadow_count, flags; int error; @@ -1069,8 +1073,11 @@ linprocfs_doprocmaps(PFS_FILL_ARGS) * format: * start, end, access, offset, major, minor, inode, name. */ - error = sbuf_printf(sb, - "%08lx-%08lx %s%s%s%s %08lx %02x:%02x %lu%s%s\n", + if (SV_CURPROC_FLAG(SV_LP64)) + l_map_str = l64_map_str; + else + l_map_str = l32_map_str; + error = sbuf_printf(sb, l_map_str, (u_long)e_start, (u_long)e_end, (e_prot & VM_PROT_READ)?"r":"-", (e_prot & VM_PROT_WRITE)?"w":"-", From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:43:55 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 87076E3D; Sun, 24 May 2015 15:43:55 +0000 (UTC) Received: from svn.freebsd.org (svn.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 67FF81F01; Sun, 24 May 2015 15:43:55 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OFhtM8063011; Sun, 24 May 2015 15:43:55 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OFhsOO063002; Sun, 24 May 2015 15:43:54 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241543.t4OFhsOO063002@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:43:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283415 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:43:55 -0000 Author: dchagin Date: Sun May 24 15:43:53 2015 New Revision: 283415 URL: https://svnweb.freebsd.org/changeset/base/283415 Log: Disable i386 call for x86-64 Linux. Differential Revision: https://reviews.freebsd.org/D1067 Reviewed by: trasz Modified: head/sys/compat/linux/linux_file.c head/sys/compat/linux/linux_misc.c head/sys/compat/linux/linux_signal.c head/sys/compat/linux/linux_socket.c head/sys/compat/linux/linux_stats.c Modified: head/sys/compat/linux/linux_file.c ============================================================================== --- head/sys/compat/linux/linux_file.c Sun May 24 15:42:36 2015 (r283414) +++ head/sys/compat/linux/linux_file.c Sun May 24 15:43:53 2015 (r283415) @@ -235,6 +235,7 @@ linux_lseek(struct thread *td, struct li return error; } +#if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) int linux_llseek(struct thread *td, struct linux_llseek_args *args) { @@ -273,6 +274,7 @@ linux_readdir(struct thread *td, struct lda.count = 1; return linux_getdents(td, &lda); } +#endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */ /* * Note that linux_getdents(2) and linux_getdents64(2) have the same @@ -924,6 +926,7 @@ linux_truncate(struct thread *td, struct return (error); } +#if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) int linux_truncate64(struct thread *td, struct linux_truncate64_args *args) { @@ -941,6 +944,8 @@ linux_truncate64(struct thread *td, stru LFREEPATH(path); return (error); } +#endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */ + int linux_ftruncate(struct thread *td, struct linux_ftruncate_args *args) { @@ -1129,6 +1134,7 @@ linux_mount(struct thread *td, struct li return (error); } +#if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) int linux_oldumount(struct thread *td, struct linux_oldumount_args *args) { @@ -1138,6 +1144,7 @@ linux_oldumount(struct thread *td, struc args2.flags = 0; return (linux_umount(td, &args2)); } +#endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */ int linux_umount(struct thread *td, struct linux_umount_args *args) @@ -1268,7 +1275,7 @@ bsd_to_linux_flock64(struct flock *bsd_f #endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */ static int -fcntl_common(struct thread *td, struct linux_fcntl64_args *args) +fcntl_common(struct thread *td, struct linux_fcntl_args *args) { struct l_flock linux_flock; struct flock bsd_flock; @@ -1394,17 +1401,13 @@ fcntl_common(struct thread *td, struct l int linux_fcntl(struct thread *td, struct linux_fcntl_args *args) { - struct linux_fcntl64_args args64; #ifdef DEBUG if (ldebug(fcntl)) printf(ARGS(fcntl, "%d, %08x, *"), args->fd, args->cmd); #endif - args64.fd = args->fd; - args64.cmd = args->cmd; - args64.arg = args->arg; - return (fcntl_common(td, &args64)); + return (fcntl_common(td, args)); } #if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) @@ -1413,6 +1416,7 @@ linux_fcntl64(struct thread *td, struct { struct l_flock64 linux_flock; struct flock bsd_flock; + struct linux_fcntl_args fcntl_args; int error; #ifdef DEBUG @@ -1453,7 +1457,10 @@ linux_fcntl64(struct thread *td, struct (intptr_t)&bsd_flock)); } - return (fcntl_common(td, args)); + fcntl_args.fd = args->fd; + fcntl_args.cmd = args->cmd; + fcntl_args.arg = args->arg; + return (fcntl_common(td, &fcntl_args)); } #endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */ @@ -1551,6 +1558,7 @@ linux_fadvise64(struct thread *td, struc advice)); } +#if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) int linux_fadvise64_64(struct thread *td, struct linux_fadvise64_64_args *args) { @@ -1562,6 +1570,7 @@ linux_fadvise64_64(struct thread *td, st return (kern_posix_fadvise(td, args->fd, args->offset, args->len, advice)); } +#endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */ int linux_pipe(struct thread *td, struct linux_pipe_args *args) Modified: head/sys/compat/linux/linux_misc.c ============================================================================== --- head/sys/compat/linux/linux_misc.c Sun May 24 15:42:36 2015 (r283414) +++ head/sys/compat/linux/linux_misc.c Sun May 24 15:43:53 2015 (r283415) @@ -736,7 +736,6 @@ linux_newuname(struct thread *td, struct return (copyout(&utsname, args->buf, sizeof(utsname))); } -#if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) struct l_utimbuf { l_time_t l_actime; l_time_t l_modtime; @@ -841,7 +840,6 @@ linux_futimesat(struct thread *td, struc LFREEPATH(fname); return (error); } -#endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */ int linux_common_wait(struct thread *td, int pid, int *status, @@ -867,6 +865,7 @@ linux_common_wait(struct thread *td, int return (error); } +#if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) int linux_waitpid(struct thread *td, struct linux_waitpid_args *args) { @@ -891,6 +890,7 @@ linux_waitpid(struct thread *td, struct return (linux_common_wait(td, args->pid, args->status, options, NULL)); } +#endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */ int linux_wait4(struct thread *td, struct linux_wait4_args *args) @@ -1165,6 +1165,7 @@ linux_getitimer(struct thread *td, struc return (copyout(&ls, uap->itv, sizeof(ls))); } +#if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) int linux_nice(struct thread *td, struct linux_nice_args *args) { @@ -1175,6 +1176,7 @@ linux_nice(struct thread *td, struct lin bsd_args.prio = args->inc; return (sys_setpriority(td, &bsd_args)); } +#endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */ int linux_setgroups(struct thread *td, struct linux_setgroups_args *args) @@ -1304,6 +1306,7 @@ linux_setrlimit(struct thread *td, struc return (kern_setrlimit(td, which, &bsd_rlim)); } +#if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) int linux_old_getrlimit(struct thread *td, struct linux_old_getrlimit_args *args) { @@ -1346,6 +1349,7 @@ linux_old_getrlimit(struct thread *td, s #endif return (copyout(&rlim, args->rlim, sizeof(rlim))); } +#endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */ int linux_getrlimit(struct thread *td, struct linux_getrlimit_args *args) Modified: head/sys/compat/linux/linux_signal.c ============================================================================== --- head/sys/compat/linux/linux_signal.c Sun May 24 15:42:36 2015 (r283414) +++ head/sys/compat/linux/linux_signal.c Sun May 24 15:43:53 2015 (r283415) @@ -60,6 +60,7 @@ static int linux_do_tkill(struct thread static void sicode_to_lsicode(int si_code, int *lsi_code); +#if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) void linux_to_bsd_sigset(l_sigset_t *lss, sigset_t *bss) { @@ -93,6 +94,7 @@ bsd_to_linux_sigset(sigset_t *bss, l_sig } } } +#endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */ static void linux_to_bsd_sigaction(l_sigaction_t *lsa, struct sigaction *bsa) @@ -177,7 +179,7 @@ linux_do_sigaction(struct thread *td, in return (0); } - +#if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) int linux_signal(struct thread *td, struct linux_signal_args *args) { @@ -199,6 +201,7 @@ linux_signal(struct thread *td, struct l return (error); } +#endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */ int linux_rt_sigaction(struct thread *td, struct linux_rt_sigaction_args *args) @@ -268,6 +271,7 @@ linux_do_sigprocmask(struct thread *td, return (error); } +#if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) int linux_sigprocmask(struct thread *td, struct linux_sigprocmask_args *args) { @@ -299,6 +303,7 @@ linux_sigprocmask(struct thread *td, str return (error); } +#endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */ int linux_rt_sigprocmask(struct thread *td, struct linux_rt_sigprocmask_args *args) @@ -333,6 +338,7 @@ linux_rt_sigprocmask(struct thread *td, return (error); } +#if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) int linux_sgetmask(struct thread *td, struct linux_sgetmask_args *args) { @@ -376,9 +382,6 @@ linux_ssetmask(struct thread *td, struct return (0); } -/* - * MPSAFE - */ int linux_sigpending(struct thread *td, struct linux_sigpending_args *args) { @@ -401,6 +404,7 @@ linux_sigpending(struct thread *td, stru mask = lset.__bits[0]; return (copyout(&mask, args->mask, sizeof(mask))); } +#endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */ /* * MPSAFE Modified: head/sys/compat/linux/linux_socket.c ============================================================================== --- head/sys/compat/linux/linux_socket.c Sun May 24 15:42:36 2015 (r283414) +++ head/sys/compat/linux/linux_socket.c Sun May 24 15:43:53 2015 (r283415) @@ -1530,6 +1530,8 @@ linux_getsockopt(struct thread *td, stru return (error); } +#if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) + /* Argument list sizes for linux_socketcall */ #define LINUX_AL(x) ((x) * sizeof(l_ulong)) @@ -1549,7 +1551,6 @@ static const unsigned char lxs_args[] = #define LINUX_AL_SIZE sizeof(lxs_args) / sizeof(lxs_args[0]) - 1 -#if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) int linux_socketcall(struct thread *td, struct linux_socketcall_args *args) { Modified: head/sys/compat/linux/linux_stats.c ============================================================================== --- head/sys/compat/linux/linux_stats.c Sun May 24 15:42:36 2015 (r283414) +++ head/sys/compat/linux/linux_stats.c Sun May 24 15:43:53 2015 (r283415) @@ -251,6 +251,7 @@ linux_newfstat(struct thread *td, struct return (error); } +#if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) static int stat_copyout(struct stat *buf, void *ubuf) { @@ -325,6 +326,7 @@ linux_lstat(struct thread *td, struct li LFREEPATH(path); return(stat_copyout(&buf, args->up)); } +#endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */ struct l_statfs { l_long f_type; @@ -420,6 +422,7 @@ linux_statfs(struct thread *td, struct l return copyout(&linux_statfs, args->buf, sizeof(linux_statfs)); } +#if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) static void bsd_to_linux_statfs64(struct statfs *bsd_statfs, struct l_statfs64 *linux_statfs) { @@ -460,6 +463,7 @@ linux_statfs64(struct thread *td, struct bsd_to_linux_statfs64(&bsd_statfs, &linux_statfs); return copyout(&linux_statfs, args->buf, sizeof(linux_statfs)); } +#endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */ int linux_fstatfs(struct thread *td, struct linux_fstatfs_args *args) From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:44:43 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5791FF8E; Sun, 24 May 2015 15:44:43 +0000 (UTC) Received: from svn.freebsd.org (svn.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 39B891F0E; Sun, 24 May 2015 15:44:43 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OFiht7063206; Sun, 24 May 2015 15:44:43 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OFiglZ063201; Sun, 24 May 2015 15:44:42 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241544.t4OFiglZ063201@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:44:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283416 - in head/sys: amd64/linux32 compat/linux i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:44:43 -0000 Author: dchagin Date: Sun May 24 15:44:41 2015 New Revision: 283416 URL: https://svnweb.freebsd.org/changeset/base/283416 Log: x86_64 Linux do not use multiplexing on ipc system calls. Move struct ipc_perm definition to the MD path as it differs for 64 and 32 bit platform. Differential Revision: https://reviews.freebsd.org/D1068 Reviewed by: trasz Modified: head/sys/amd64/linux32/linux.h head/sys/compat/linux/linux_ipc.c head/sys/compat/linux/linux_ipc.h head/sys/i386/linux/linux.h Modified: head/sys/amd64/linux32/linux.h ============================================================================== --- head/sys/amd64/linux32/linux.h Sun May 24 15:43:53 2015 (r283415) +++ head/sys/amd64/linux32/linux.h Sun May 24 15:44:41 2015 (r283416) @@ -573,6 +573,16 @@ union l_semun { l_uintptr_t __pad; } __packed; +struct l_ipc_perm { + l_key_t key; + l_uid16_t uid; + l_gid16_t gid; + l_uid16_t cuid; + l_gid16_t cgid; + l_ushort mode; + l_ushort seq; +}; + /* * Socket defines */ Modified: head/sys/compat/linux/linux_ipc.c ============================================================================== --- head/sys/compat/linux/linux_ipc.c Sun May 24 15:43:53 2015 (r283415) +++ head/sys/compat/linux/linux_ipc.c Sun May 24 15:44:41 2015 (r283416) @@ -117,16 +117,6 @@ bsd_to_linux_shm_info( struct shm_info * lpp->swap_successes = bpp->swap_successes ; } -struct l_ipc_perm { - l_key_t key; - l_uid16_t uid; - l_gid16_t gid; - l_uid16_t cuid; - l_gid16_t cgid; - l_ushort mode; - l_ushort seq; -}; - static void linux_to_bsd_ipc_perm(struct l_ipc_perm *lpp, struct ipc_perm *bpp) { Modified: head/sys/compat/linux/linux_ipc.h ============================================================================== --- head/sys/compat/linux/linux_ipc.h Sun May 24 15:43:53 2015 (r283415) +++ head/sys/compat/linux/linux_ipc.h Sun May 24 15:44:41 2015 (r283416) @@ -82,7 +82,7 @@ #define LINUX_IPC_64 0x0100 /* New version (support 32-bit UIDs, bigger message sizes, etc. */ -#if defined(__i386__) || defined(__amd64__) +#if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) struct linux_msgctl_args { @@ -177,6 +177,6 @@ int linux_shmctl(struct thread *, struct int linux_shmdt(struct thread *, struct linux_shmdt_args *); int linux_shmget(struct thread *, struct linux_shmget_args *); -#endif /* __i386__ || __amd64__ */ +#endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */ #endif /* _LINUX_IPC_H_ */ Modified: head/sys/i386/linux/linux.h ============================================================================== --- head/sys/i386/linux/linux.h Sun May 24 15:43:53 2015 (r283415) +++ head/sys/i386/linux/linux.h Sun May 24 15:44:41 2015 (r283416) @@ -550,6 +550,16 @@ union l_semun { void *__pad; }; +struct l_ipc_perm { + l_key_t key; + l_uid16_t uid; + l_gid16_t gid; + l_uid16_t cuid; + l_gid16_t cgid; + l_ushort mode; + l_ushort seq; +}; + /* * Socket defines */ From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:45:38 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 15945171; Sun, 24 May 2015 15:45:38 +0000 (UTC) Received: from svn.freebsd.org (svn.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 03CB21F28; Sun, 24 May 2015 15:45:38 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OFjbHi063430; Sun, 24 May 2015 15:45:37 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OFjb6N063427; Sun, 24 May 2015 15:45:37 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241545.t4OFjb6N063427@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:45:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283417 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:45:38 -0000 Author: dchagin Date: Sun May 24 15:45:36 2015 New Revision: 283417 URL: https://svnweb.freebsd.org/changeset/base/283417 Log: Add 64 bit support to the vdso. Differential Revision: https://reviews.freebsd.org/D1069 Reviewed by: trasz Modified: head/sys/compat/linux/linux_vdso.c head/sys/compat/linux/linux_vdso.h Modified: head/sys/compat/linux/linux_vdso.c ============================================================================== --- head/sys/compat/linux/linux_vdso.c Sun May 24 15:44:41 2015 (r283416) +++ head/sys/compat/linux/linux_vdso.c Sun May 24 15:45:36 2015 (r283417) @@ -29,7 +29,11 @@ __FBSDID("$FreeBSD$"); #include "opt_compat.h" +#if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) #define __ELF_WORD_SIZE 32 +#else +#define __ELF_WORD_SIZE 64 +#endif #include #include @@ -135,7 +139,7 @@ __elfN(linux_vdso_fixup)(struct sysentve } void -__elfN(linux_vdso_reloc)(struct sysentvec *sv, int vdso_adjust) +__elfN(linux_vdso_reloc)(struct sysentvec *sv, long vdso_adjust) { struct linux_vdso_sym *lsym; Elf_Ehdr *ehdr; Modified: head/sys/compat/linux/linux_vdso.h ============================================================================== --- head/sys/compat/linux/linux_vdso.h Sun May 24 15:44:41 2015 (r283416) +++ head/sys/compat/linux/linux_vdso.h Sun May 24 15:45:36 2015 (r283417) @@ -41,7 +41,7 @@ struct linux_vdso_sym { vm_object_t __elfN(linux_shared_page_init)(char **); void __elfN(linux_shared_page_fini)(vm_object_t); void __elfN(linux_vdso_fixup)(struct sysentvec *); -void __elfN(linux_vdso_reloc)(struct sysentvec *, int); +void __elfN(linux_vdso_reloc)(struct sysentvec *, long); void __elfN(linux_vdso_sym_init)(struct linux_vdso_sym *); #define LINUX_VDSO_SYM_INTPTR(name) \ From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:47:07 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 691F22E6; Sun, 24 May 2015 15:47:07 +0000 (UTC) Received: from svn.freebsd.org (svn.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 3D31D1F42; Sun, 24 May 2015 15:47:07 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OFl7v4063685; Sun, 24 May 2015 15:47:07 GMT (envelope-from tijl@FreeBSD.org) Received: (from tijl@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OFl7hL063684; Sun, 24 May 2015 15:47:07 GMT (envelope-from tijl@FreeBSD.org) Message-Id: <201505241547.t4OFl7hL063684@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tijl set sender to tijl@FreeBSD.org using -f From: Tijl Coosemans Date: Sun, 24 May 2015 15:47:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283418 - head/lib/libiconv_modules/UTF7 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:47:07 -0000 Author: tijl Date: Sun May 24 15:47:06 2015 New Revision: 283418 URL: https://svnweb.freebsd.org/changeset/base/283418 Log: When only 2 bytes can be read from a 4 byte UTF-16 character in a base64 encoded chunk of a UTF-7 string, treat that as an incomplete character and return an error instead of a shift sequence and no error. Also check that the low 2 bytes have a valid value. MFC after: 1 week Modified: head/lib/libiconv_modules/UTF7/citrus_utf7.c Modified: head/lib/libiconv_modules/UTF7/citrus_utf7.c ============================================================================== --- head/lib/libiconv_modules/UTF7/citrus_utf7.c Sun May 24 15:45:36 2015 (r283417) +++ head/lib/libiconv_modules/UTF7/citrus_utf7.c Sun May 24 15:47:06 2015 (r283418) @@ -62,8 +62,7 @@ typedef struct { unsigned int mode: 1, /* whether base64 mode */ bits: 4, /* need to hold 0 - 15 */ - cache: 22, /* 22 = BASE64_BIT + UTF16_BIT */ - surrogate: 1; /* whether surrogate pair or not */ + cache: 22; /* 22 = BASE64_BIT + UTF16_BIT */ int chlen; char ch[4]; /* BASE64_IN, 3 * 6 = 18, most closed to UTF16_BIT */ } _UTF7State; @@ -253,34 +252,31 @@ _citrus_UTF7_mbrtowc_priv(_UTF7EncodingI *nresult = (size_t)_ENCODING_IS_STATE_DEPENDENT; return (0); } - if (psenc->surrogate) { - hi = (psenc->cache >> psenc->bits) & UTF16_MAX; - if (hi < HISRG_MIN || hi > HISRG_MAX) - return (EINVAL); - siz = 0; - } else { - err = _citrus_UTF7_mbtoutf16(ei, &hi, s, n, psenc, &nr); - if (nr == (size_t)-1 || nr == (size_t)-2) { - *nresult = nr; - return (err); - } - if (err != 0) - return (err); - n -= nr; - siz = nr; - if (hi < HISRG_MIN || hi > HISRG_MAX) { - u32 = (uint32_t)hi; - goto done; - } - psenc->surrogate = 1; + err = _citrus_UTF7_mbtoutf16(ei, &hi, s, n, psenc, &nr); + if (nr == (size_t)-1 || nr == (size_t)-2) { + *nresult = nr; + return (err); + } + if (err != 0) + return (err); + n -= nr; + siz = nr; + if (hi < HISRG_MIN || hi > HISRG_MAX) { + u32 = (uint32_t)hi; + goto done; } err = _citrus_UTF7_mbtoutf16(ei, &lo, s, n, psenc, &nr); if (nr == (size_t)-1 || nr == (size_t)-2) { + psenc->chlen = 1; /* make get_state_desc return incomplete */ *nresult = nr; return (err); } if (err != 0) return (err); + if (lo < LOSRG_MIN || lo > LOSRG_MAX) { + *nresult = (size_t)-1; + return (EILSEQ); + } hi -= HISRG_MIN; lo -= LOSRG_MIN; u32 = (hi << 10 | lo) + SRG_BASE; @@ -293,7 +289,6 @@ done: _citrus_UTF7_init_state(ei, psenc); } else { *nresult = siz; - psenc->surrogate = 0; } return (err); } @@ -392,7 +387,7 @@ _citrus_UTF7_put_state_reset(_UTF7Encodi { int bits, pos; - if (psenc->chlen != 0 || psenc->bits > BASE64_BIT || psenc->surrogate) + if (psenc->chlen != 0 || psenc->bits > BASE64_BIT) return (EINVAL); if (psenc->mode) { From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:47:16 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id DD00C429; Sun, 24 May 2015 15:47:16 +0000 (UTC) Received: from svn.freebsd.org (svn.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 AFC891F44; Sun, 24 May 2015 15:47:16 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OFlG5Q063756; Sun, 24 May 2015 15:47:16 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OFlFJw063751; Sun, 24 May 2015 15:47:15 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241547.t4OFlFJw063751@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:47:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283419 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:47:17 -0000 Author: dchagin Date: Sun May 24 15:47:15 2015 New Revision: 283419 URL: https://svnweb.freebsd.org/changeset/base/283419 Log: Fix compilation with -DDEBUG option. Differential Revision: https://reviews.freebsd.org/D1070 Reviewed by: trasz Modified: head/sys/compat/linux/linux_misc.c head/sys/compat/linux/linux_signal.c head/sys/compat/linux/linux_stats.c Modified: head/sys/compat/linux/linux_misc.c ============================================================================== --- head/sys/compat/linux/linux_misc.c Sun May 24 15:47:06 2015 (r283418) +++ head/sys/compat/linux/linux_misc.c Sun May 24 15:47:15 2015 (r283419) @@ -994,7 +994,8 @@ linux_mknod(struct thread *td, struct li #ifdef DEBUG if (ldebug(mknod)) - printf(ARGS(mknod, "%s, %d, %d"), path, args->mode, args->dev); + printf(ARGS(mknod, "%s, %d, %ju"), path, args->mode, + (uintmax_t)args->dev); #endif switch (args->mode & S_IFMT) { @@ -1845,8 +1846,9 @@ linux_prctl(struct thread *td, struct li #ifdef DEBUG if (ldebug(prctl)) - printf(ARGS(prctl, "%d, %d, %d, %d, %d"), args->option, - args->arg2, args->arg3, args->arg4, args->arg5); + printf(ARGS(prctl, "%d, %ju, %ju, %ju, %ju"), args->option, + (uintmax_t)args->arg2, (uintmax_t)args->arg3, + (uintmax_t)args->arg4, (uintmax_t)args->arg5); #endif switch (args->option) { Modified: head/sys/compat/linux/linux_signal.c ============================================================================== --- head/sys/compat/linux/linux_signal.c Sun May 24 15:47:06 2015 (r283418) +++ head/sys/compat/linux/linux_signal.c Sun May 24 15:47:15 2015 (r283419) @@ -468,8 +468,8 @@ linux_rt_sigtimedwait(struct thread *td, #ifdef DEBUG if (ldebug(rt_sigtimedwait)) printf(LMSG("linux_rt_sigtimedwait: " - "incoming timeout (%d/%d)\n"), - ltv.tv_sec, ltv.tv_usec); + "incoming timeout (%jd/%jd)\n"), + (intmax_t)ltv.tv_sec, (intmax_t)ltv.tv_usec); #endif tv.tv_sec = (long)ltv.tv_sec; tv.tv_usec = (suseconds_t)ltv.tv_usec; Modified: head/sys/compat/linux/linux_stats.c ============================================================================== --- head/sys/compat/linux/linux_stats.c Sun May 24 15:47:06 2015 (r283418) +++ head/sys/compat/linux/linux_stats.c Sun May 24 15:47:15 2015 (r283419) @@ -496,7 +496,7 @@ linux_ustat(struct thread *td, struct li { #ifdef DEBUG if (ldebug(ustat)) - printf(ARGS(ustat, "%d, *"), args->dev); + printf(ARGS(ustat, "%ju, *"), (uintmax_t)args->dev); #endif return (EOPNOTSUPP); From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:48:35 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 183BD591; Sun, 24 May 2015 15:48:35 +0000 (UTC) Received: from svn.freebsd.org (svn.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 053C71F5C; Sun, 24 May 2015 15:48:35 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OFmYx5063983; Sun, 24 May 2015 15:48:34 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OFmYxf063982; Sun, 24 May 2015 15:48:34 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241548.t4OFmYxf063982@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:48:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283420 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:48:35 -0000 Author: dchagin Date: Sun May 24 15:48:34 2015 New Revision: 283420 URL: https://svnweb.freebsd.org/changeset/base/283420 Log: Add newfstatat system call for 64-bit Linuxulator. Differential Revision: https://reviews.freebsd.org/D1071 Reviewed by: trasz Modified: head/sys/compat/linux/linux_stats.c Modified: head/sys/compat/linux/linux_stats.c ============================================================================== --- head/sys/compat/linux/linux_stats.c Sun May 24 15:47:15 2015 (r283419) +++ head/sys/compat/linux/linux_stats.c Sun May 24 15:48:34 2015 (r283420) @@ -627,4 +627,34 @@ linux_fstatat64(struct thread *td, struc return (error); } +#else /* __amd64__ && !COMPAT_LINUX32 */ + +int +linux_newfstatat(struct thread *td, struct linux_newfstatat_args *args) +{ + char *path; + int error, dfd, flag; + struct stat buf; + + if (args->flag & ~LINUX_AT_SYMLINK_NOFOLLOW) + return (EINVAL); + flag = (args->flag & LINUX_AT_SYMLINK_NOFOLLOW) ? + AT_SYMLINK_NOFOLLOW : 0; + + dfd = (args->dfd == LINUX_AT_FDCWD) ? AT_FDCWD : args->dfd; + LCONVPATHEXIST_AT(td, args->pathname, &path, dfd); + +#ifdef DEBUG + if (ldebug(newfstatat)) + printf(ARGS(newfstatat, "%i, %s, %i"), args->dfd, path, args->flag); +#endif + + error = linux_kern_statat(td, flag, dfd, path, UIO_SYSSPACE, &buf); + if (error == 0) + error = newstat_copyout(&buf, args->statbuf); + LFREEPATH(path); + + return (error); +} + #endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */ From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:51:21 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 42084707; Sun, 24 May 2015 15:51:21 +0000 (UTC) Received: from svn.freebsd.org (svn.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 2DC721027; Sun, 24 May 2015 15:51:21 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OFpLLC066465; Sun, 24 May 2015 15:51:21 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OFpJEa065599; Sun, 24 May 2015 15:51:19 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241551.t4OFpJEa065599@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:51:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283421 - in head/sys: amd64/linux32 compat/linprocfs compat/linsysfs compat/linux conf i386/linux modules modules/linprocfs modules/linsysfs modules/linux modules/linux_common X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:51:21 -0000 Author: dchagin Date: Sun May 24 15:51:18 2015 New Revision: 283421 URL: https://svnweb.freebsd.org/changeset/base/283421 Log: Introduce a new module linux_common.ko which is intended for the following primary purposes: 1. Remove the dependency of linsysfs and linprocfs modules from linux.ko, which will be architecture specific on amd64. 2. Incorporate into linux_common.ko general code for platforms on which we'll support two Linuxulator modules (for both instruction set - 32 & 64 bit). 3. Move malloc(9) declaration to linux_common.ko, to enable getting memory usage statistics properly. Currently linux_common.ko incorporates a code from linux_mib.c and linux_util.c and linprocfs, linsysfs and linux kernel modules depend on linux_common.ko. Temporarily remove dtrace garbage from linux_mib.c and linux_util.c Differential Revision: https://reviews.freebsd.org/D1072 In collaboration with: Vassilis Laganakos. Reviewed by: trasz Added: head/sys/compat/linux/linux_common.c (contents, props changed) head/sys/modules/linux_common/ head/sys/modules/linux_common/Makefile (contents, props changed) Modified: head/sys/amd64/linux32/linux.h head/sys/amd64/linux32/linux32_sysvec.c head/sys/compat/linprocfs/linprocfs.c head/sys/compat/linsysfs/linsysfs.c head/sys/compat/linux/linux_ioctl.c head/sys/compat/linux/linux_ioctl.h head/sys/compat/linux/linux_mib.c head/sys/compat/linux/linux_mib.h head/sys/compat/linux/linux_misc.c head/sys/compat/linux/linux_misc.h head/sys/compat/linux/linux_util.c head/sys/compat/linux/linux_util.h head/sys/conf/files.amd64 head/sys/i386/linux/linux.h head/sys/i386/linux/linux_sysvec.c head/sys/modules/Makefile head/sys/modules/linprocfs/Makefile head/sys/modules/linsysfs/Makefile head/sys/modules/linux/Makefile Modified: head/sys/amd64/linux32/linux.h ============================================================================== --- head/sys/amd64/linux32/linux.h Sun May 24 15:48:34 2015 (r283420) +++ head/sys/amd64/linux32/linux.h Sun May 24 15:51:18 2015 (r283421) @@ -46,10 +46,6 @@ extern u_char linux_debug_map[]; (long)td->td_proc->p_pid, (long)td->td_tid #define LINUX_DTRACE linuxulator32 -#ifdef MALLOC_DECLARE -MALLOC_DECLARE(M_LINUX); -#endif - #define LINUX32_MAXUSER ((1ul << 32) - PAGE_SIZE) #define LINUX32_SHAREDPAGE (LINUX32_MAXUSER - PAGE_SIZE) #define LINUX32_USRSTACK LINUX32_SHAREDPAGE Modified: head/sys/amd64/linux32/linux32_sysvec.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysvec.c Sun May 24 15:48:34 2015 (r283420) +++ head/sys/amd64/linux32/linux32_sysvec.c Sun May 24 15:51:18 2015 (r283421) @@ -87,8 +87,6 @@ __FBSDID("$FreeBSD$"); MODULE_VERSION(linux, 1); -MALLOC_DEFINE(M_LINUX, "linux", "Linux mode structures"); - #define AUXARGS_ENTRY_32(pos, id, val) \ do { \ suword32(pos++, id); \ @@ -120,7 +118,6 @@ extern char _binary_linux32_locore_o_end extern struct sysent linux_sysent[LINUX_SYS_MAXSYSCALL]; SET_DECLARE(linux_ioctl_handler_set, struct linux_ioctl_handler); -SET_DECLARE(linux_device_handler_set, struct linux_device_handler); static int elf_linux_fixup(register_t **stack_base, struct image_params *iparams); @@ -976,6 +973,13 @@ static u_long linux32_maxvmem = LINUX32_ SYSCTL_ULONG(_compat_linux32, OID_AUTO, maxvmem, CTLFLAG_RW, &linux32_maxvmem, 0, ""); +#if defined(DEBUG) +SYSCTL_PROC(_compat_linux32, OID_AUTO, debug, + CTLTYPE_STRING | CTLFLAG_RW, + 0, 0, linux_sysctl_debug, "A", + "Linux debugging control"); +#endif + static void linux32_fixlimit(struct rlimit *rl, int which) { @@ -1152,7 +1156,6 @@ linux_elf_modevent(module_t mod, int typ Elf32_Brandinfo **brandinfo; int error; struct linux_ioctl_handler **lihp; - struct linux_device_handler **ldhp; error = 0; @@ -1165,8 +1168,6 @@ linux_elf_modevent(module_t mod, int typ if (error == 0) { SET_FOREACH(lihp, linux_ioctl_handler_set) linux_ioctl_register_handler(*lihp); - SET_FOREACH(ldhp, linux_device_handler_set) - linux_device_register_handler(*ldhp); LIST_INIT(&futex_list); mtx_init(&futex_mtx, "ftllk", NULL, MTX_DEF); linux_exit_tag = EVENTHANDLER_REGISTER(process_exit, @@ -1175,7 +1176,6 @@ linux_elf_modevent(module_t mod, int typ linux_proc_exec, NULL, 1000); linux_thread_dtor_tag = EVENTHANDLER_REGISTER(thread_dtor, linux_thread_dtor, NULL, EVENTHANDLER_PRI_ANY); - linux_osd_jail_register(); stclohz = (stathz ? stathz : hz); if (bootverbose) printf("Linux ELF exec handler installed\n"); @@ -1196,13 +1196,10 @@ linux_elf_modevent(module_t mod, int typ if (error == 0) { SET_FOREACH(lihp, linux_ioctl_handler_set) linux_ioctl_unregister_handler(*lihp); - SET_FOREACH(ldhp, linux_device_handler_set) - linux_device_unregister_handler(*ldhp); mtx_destroy(&futex_mtx); EVENTHANDLER_DEREGISTER(process_exit, linux_exit_tag); EVENTHANDLER_DEREGISTER(process_exec, linux_exec_tag); EVENTHANDLER_DEREGISTER(thread_dtor, linux_thread_dtor_tag); - linux_osd_jail_deregister(); if (bootverbose) printf("Linux ELF exec handler removed\n"); } else @@ -1221,3 +1218,4 @@ static moduledata_t linux_elf_mod = { }; DECLARE_MODULE_TIED(linuxelf, linux_elf_mod, SI_SUB_EXEC, SI_ORDER_ANY); +MODULE_DEPEND(linuxelf, linux_common, 1, 1, 1); Modified: head/sys/compat/linprocfs/linprocfs.c ============================================================================== --- head/sys/compat/linprocfs/linprocfs.c Sun May 24 15:48:34 2015 (r283420) +++ head/sys/compat/linprocfs/linprocfs.c Sun May 24 15:51:18 2015 (r283421) @@ -39,8 +39,6 @@ * @(#)procfs_status.c 8.4 (Berkeley) 6/15/94 */ -#include "opt_compat.h" - #include __FBSDID("$FreeBSD$"); @@ -69,6 +67,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -80,7 +79,7 @@ __FBSDID("$FreeBSD$"); #include #include -#include +#include #include #include @@ -100,11 +99,6 @@ __FBSDID("$FreeBSD$"); #include #endif /* __i386__ || __amd64__ */ -#ifdef COMPAT_FREEBSD32 -#include -#endif - -#include #include #include #include @@ -1114,6 +1108,35 @@ linprocfs_doprocmaps(PFS_FILL_ARGS) } /* + * Criteria for interface name translation + */ +#define IFP_IS_ETH(ifp) (ifp->if_type == IFT_ETHER) + +static int +linux_ifname(struct ifnet *ifp, char *buffer, size_t buflen) +{ + struct ifnet *ifscan; + int ethno; + + IFNET_RLOCK_ASSERT(); + + /* Short-circuit non ethernet interfaces */ + if (!IFP_IS_ETH(ifp)) + return (strlcpy(buffer, ifp->if_xname, buflen)); + + /* Determine the (relative) unit number for ethernet interfaces */ + ethno = 0; + TAILQ_FOREACH(ifscan, &V_ifnet, if_link) { + if (ifscan == ifp) + return (snprintf(buffer, buflen, "eth%d", ethno)); + if (IFP_IS_ETH(ifscan)) + ethno++; + } + + return (0); +} + +/* * Filler function for proc/net/dev */ static int @@ -1261,8 +1284,6 @@ linprocfs_doscsiscsi(PFS_FILL_ARGS) return (0); } -extern struct cdevsw *cdevsw[]; - /* * Filler function for proc/devices */ @@ -1477,7 +1498,11 @@ linprocfs_uninit(PFS_INIT_ARGS) } PSEUDOFS(linprocfs, 1, 0); +#if defined(__amd64__) +MODULE_DEPEND(linprocfs, linux_common, 1, 1, 1); +#else MODULE_DEPEND(linprocfs, linux, 1, 1, 1); +#endif MODULE_DEPEND(linprocfs, procfs, 1, 1, 1); MODULE_DEPEND(linprocfs, sysvmsg, 1, 1, 1); MODULE_DEPEND(linprocfs, sysvsem, 1, 1, 1); Modified: head/sys/compat/linsysfs/linsysfs.c ============================================================================== --- head/sys/compat/linsysfs/linsysfs.c Sun May 24 15:48:34 2015 (r283420) +++ head/sys/compat/linsysfs/linsysfs.c Sun May 24 15:51:18 2015 (r283421) @@ -62,12 +62,6 @@ __FBSDID("$FreeBSD$"); #include -#include "opt_compat.h" -#ifdef COMPAT_LINUX32 /* XXX */ -#include -#else -#include -#endif #include #include #include @@ -282,4 +276,8 @@ linsysfs_uninit(PFS_INIT_ARGS) } PSEUDOFS(linsysfs, 1, 0); +#if defined(__amd64__) +MODULE_DEPEND(linsysfs, linux_common, 1, 1, 1); +#else MODULE_DEPEND(linsysfs, linux, 1, 1, 1); +#endif Added: head/sys/compat/linux/linux_common.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/compat/linux/linux_common.c Sun May 24 15:51:18 2015 (r283421) @@ -0,0 +1,74 @@ +/*- + * Copyright (c) 2014 Vassilis Laganakos + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +MODULE_VERSION(linux_common, 1); + +SET_DECLARE(linux_device_handler_set, struct linux_device_handler); + + +static int +linux_common_modevent(module_t mod, int type, void *data) +{ + struct linux_device_handler **ldhp; + + switch(type) { + case MOD_LOAD: + linux_osd_jail_register(); + SET_FOREACH(ldhp, linux_device_handler_set) + linux_device_register_handler(*ldhp); + break; + case MOD_UNLOAD: + linux_osd_jail_deregister(); + SET_FOREACH(ldhp, linux_device_handler_set) + linux_device_unregister_handler(*ldhp); + break; + default: + return (EOPNOTSUPP); + } + return (0); +} + +static moduledata_t linux_common_mod = { + "linuxcommon", + linux_common_modevent, + 0 +}; + +DECLARE_MODULE(linuxcommon, linux_common_mod, SI_SUB_EXEC, SI_ORDER_ANY); Modified: head/sys/compat/linux/linux_ioctl.c ============================================================================== --- head/sys/compat/linux/linux_ioctl.c Sun May 24 15:48:34 2015 (r283420) +++ head/sys/compat/linux/linux_ioctl.c Sun May 24 15:51:18 2015 (r283421) @@ -69,7 +69,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include @@ -2109,34 +2108,6 @@ linux_ioctl_console(struct thread *td, s #define IFP_IS_ETH(ifp) (ifp->if_type == IFT_ETHER) /* - * Interface function used by linprocfs (at the time of writing). It's not - * used by the Linuxulator itself. - */ -int -linux_ifname(struct ifnet *ifp, char *buffer, size_t buflen) -{ - struct ifnet *ifscan; - int ethno; - - IFNET_RLOCK_ASSERT(); - - /* Short-circuit non ethernet interfaces */ - if (!IFP_IS_ETH(ifp)) - return (strlcpy(buffer, ifp->if_xname, buflen)); - - /* Determine the (relative) unit number for ethernet interfaces */ - ethno = 0; - TAILQ_FOREACH(ifscan, &V_ifnet, if_link) { - if (ifscan == ifp) - return (snprintf(buffer, buflen, "eth%d", ethno)); - if (IFP_IS_ETH(ifscan)) - ethno++; - } - - return (0); -} - -/* * Translate a Linux interface name to a FreeBSD interface name, * and return the associated ifnet structure * bsdname and lxname need to be least IFNAMSIZ bytes long, but Modified: head/sys/compat/linux/linux_ioctl.h ============================================================================== --- head/sys/compat/linux/linux_ioctl.h Sun May 24 15:48:34 2015 (r283420) +++ head/sys/compat/linux/linux_ioctl.h Sun May 24 15:51:18 2015 (r283421) @@ -581,13 +581,6 @@ #define LINUX_IOCTL_DRM_MAX 0x64ff /* - * This doesn't really belong here, but I can't think of a better - * place to put it. - */ -struct ifnet; -int linux_ifname(struct ifnet *, char *, size_t); - -/* * video */ #define LINUX_VIDIOCGCAP 0x7601 Modified: head/sys/compat/linux/linux_mib.c ============================================================================== --- head/sys/compat/linux/linux_mib.c Sun May 24 15:48:34 2015 (r283420) +++ head/sys/compat/linux/linux_mib.c Sun May 24 15:51:18 2015 (r283421) @@ -29,8 +29,6 @@ #include __FBSDID("$FreeBSD$"); -#include "opt_compat.h" - #include #include #include @@ -41,85 +39,11 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include -#ifdef COMPAT_LINUX32 -#include -#else -#include -#endif -#include #include #include -/* DTrace init */ -LIN_SDT_PROVIDER_DECLARE(LINUX_DTRACE); - -/** - * DTrace probes in this module. - */ -LIN_SDT_PROBE_DEFINE0(mib, linux_sysctl_osname, entry); -LIN_SDT_PROBE_DEFINE1(mib, linux_sysctl_osname, sysctl_string_error, "int"); -LIN_SDT_PROBE_DEFINE1(mib, linux_sysctl_osname, return, "int"); - -LIN_SDT_PROBE_DEFINE0(mib, linux_sysctl_osrelease, entry); -LIN_SDT_PROBE_DEFINE1(mib, linux_sysctl_osrelease, sysctl_string_error, "int"); -LIN_SDT_PROBE_DEFINE1(mib, linux_sysctl_osrelease, return, "int"); -LIN_SDT_PROBE_DEFINE0(mib, linux_sysctl_oss_version, entry); -LIN_SDT_PROBE_DEFINE1(mib, linux_sysctl_oss_version, sysctl_string_error, - "int"); -LIN_SDT_PROBE_DEFINE1(mib, linux_sysctl_oss_version, return, "int"); -LIN_SDT_PROBE_DEFINE2(mib, linux_map_osrel, entry, "char *", "int *"); -LIN_SDT_PROBE_DEFINE1(mib, linux_map_osrel, return, "int"); -LIN_SDT_PROBE_DEFINE2(mib, linux_get_prison, entry, "struct prison *", - "struct prison **"); -LIN_SDT_PROBE_DEFINE1(mib, linux_get_prison, return, "struct linux_prison *"); -LIN_SDT_PROBE_DEFINE2(mib, linux_alloc_prison, entry, "struct prison *", - "struct linux_prison **"); -LIN_SDT_PROBE_DEFINE1(mib, linux_alloc_prison, return, "int"); -LIN_SDT_PROBE_DEFINE2(mib, linux_prison_create, entry, "void *", "void *"); -LIN_SDT_PROBE_DEFINE1(mib, linux_prison_create, vfs_copyopt_error, "int"); -LIN_SDT_PROBE_DEFINE1(mib, linux_prison_create, return, "int"); -LIN_SDT_PROBE_DEFINE2(mib, linux_prison_check, entry, "void *", "void *"); -LIN_SDT_PROBE_DEFINE1(mib, linux_prison_check, vfs_copyopt_error, "int"); -LIN_SDT_PROBE_DEFINE1(mib, linux_prison_check, vfs_getopt_error, "int"); -LIN_SDT_PROBE_DEFINE1(mib, linux_prison_check, return, "int"); -LIN_SDT_PROBE_DEFINE2(mib, linux_prison_set, entry, "void *", "void *"); -LIN_SDT_PROBE_DEFINE1(mib, linux_prison_set, vfs_copyopt_error, "int"); -LIN_SDT_PROBE_DEFINE1(mib, linux_prison_set, vfs_getopt_error, "int"); -LIN_SDT_PROBE_DEFINE1(mib, linux_prison_set, return, "int"); -LIN_SDT_PROBE_DEFINE2(mib, linux_prison_get, entry, "void *", "void *"); -LIN_SDT_PROBE_DEFINE1(mib, linux_prison_get, vfs_setopt_error, "int"); -LIN_SDT_PROBE_DEFINE1(mib, linux_prison_get, vfs_setopts_error, "int"); -LIN_SDT_PROBE_DEFINE1(mib, linux_prison_get, return, "int"); -LIN_SDT_PROBE_DEFINE1(mib, linux_prison_destructor, entry, "void *"); -LIN_SDT_PROBE_DEFINE0(mib, linux_prison_destructor, return); -LIN_SDT_PROBE_DEFINE0(mib, linux_osd_jail_register, entry); -LIN_SDT_PROBE_DEFINE0(mib, linux_osd_jail_register, return); -LIN_SDT_PROBE_DEFINE0(mib, linux_osd_jail_deregister, entry); -LIN_SDT_PROBE_DEFINE0(mib, linux_osd_jail_deregister, return); -LIN_SDT_PROBE_DEFINE2(mib, linux_get_osname, entry, "struct thread *", - "char *"); -LIN_SDT_PROBE_DEFINE0(mib, linux_get_osname, return); -LIN_SDT_PROBE_DEFINE2(mib, linux_set_osname, entry, "struct thread *", - "char *"); -LIN_SDT_PROBE_DEFINE1(mib, linux_set_osname, return, "int"); -LIN_SDT_PROBE_DEFINE2(mib, linux_get_osrelease, entry, "struct thread *", - "char *"); -LIN_SDT_PROBE_DEFINE0(mib, linux_get_osrelease, return); -LIN_SDT_PROBE_DEFINE1(mib, linux_kernver, entry, "struct thread *"); -LIN_SDT_PROBE_DEFINE1(mib, linux_kernver, return, "int"); -LIN_SDT_PROBE_DEFINE2(mib, linux_set_osrelease, entry, "struct thread *", - "char *"); -LIN_SDT_PROBE_DEFINE1(mib, linux_set_osrelease, return, "int"); -LIN_SDT_PROBE_DEFINE1(mib, linux_get_oss_version, entry, "struct thread *"); -LIN_SDT_PROBE_DEFINE1(mib, linux_get_oss_version, return, "int"); - -LIN_SDT_PROBE_DEFINE2(mib, linux_set_oss_version, entry, "struct thread *", - "int"); -LIN_SDT_PROBE_DEFINE1(mib, linux_set_oss_version, return, "int"); - struct linux_prison { char pr_osname[LINUX_MAX_UTSNAME]; char pr_osrelease[LINUX_MAX_UTSNAME]; @@ -136,8 +60,7 @@ static struct linux_prison lprison0 = { static unsigned linux_osd_jail_slot; -static SYSCTL_NODE(_compat, OID_AUTO, linux, CTLFLAG_RW, 0, - "Linux mode"); +SYSCTL_NODE(_compat, OID_AUTO, linux, CTLFLAG_RW, 0, "Linux mode"); static int linux_set_osname(struct thread *td, char *osname); static int linux_set_osrelease(struct thread *td, char *osrelease); @@ -149,19 +72,12 @@ linux_sysctl_osname(SYSCTL_HANDLER_ARGS) char osname[LINUX_MAX_UTSNAME]; int error; - LIN_SDT_PROBE0(mib, linux_sysctl_osname, entry); - linux_get_osname(req->td, osname); error = sysctl_handle_string(oidp, osname, LINUX_MAX_UTSNAME, req); - if (error != 0 || req->newptr == NULL) { - LIN_SDT_PROBE1(mib, linux_sysctl_osname, sysctl_string_error, - error); - LIN_SDT_PROBE1(mib, linux_sysctl_osname, return, error); + if (error != 0 || req->newptr == NULL) return (error); - } error = linux_set_osname(req->td, osname); - LIN_SDT_PROBE1(mib, linux_sysctl_osname, return, error); return (error); } @@ -176,19 +92,12 @@ linux_sysctl_osrelease(SYSCTL_HANDLER_AR char osrelease[LINUX_MAX_UTSNAME]; int error; - LIN_SDT_PROBE0(mib, linux_sysctl_osrelease, entry); - linux_get_osrelease(req->td, osrelease); error = sysctl_handle_string(oidp, osrelease, LINUX_MAX_UTSNAME, req); - if (error != 0 || req->newptr == NULL) { - LIN_SDT_PROBE1(mib, linux_sysctl_osrelease, sysctl_string_error, - error); - LIN_SDT_PROBE1(mib, linux_sysctl_osrelease, return, error); + if (error != 0 || req->newptr == NULL) return (error); - } error = linux_set_osrelease(req->td, osrelease); - LIN_SDT_PROBE1(mib, linux_sysctl_osrelease, return, error); return (error); } @@ -203,19 +112,12 @@ linux_sysctl_oss_version(SYSCTL_HANDLER_ int oss_version; int error; - LIN_SDT_PROBE0(mib, linux_sysctl_oss_version, entry); - oss_version = linux_get_oss_version(req->td); error = sysctl_handle_int(oidp, &oss_version, 0, req); - if (error != 0 || req->newptr == NULL) { - LIN_SDT_PROBE1(mib, linux_sysctl_oss_version, - sysctl_string_error, error); - LIN_SDT_PROBE1(mib, linux_sysctl_oss_version, return, error); + if (error != 0 || req->newptr == NULL) return (error); - } error = linux_set_oss_version(req->td, oss_version); - LIN_SDT_PROBE1(mib, linux_sysctl_oss_version, return, error); return (error); } @@ -233,37 +135,26 @@ linux_map_osrel(char *osrelease, int *os char *sep, *eosrelease; int len, v0, v1, v2, v; - LIN_SDT_PROBE2(mib, linux_map_osrel, entry, osrelease, osrel); - len = strlen(osrelease); eosrelease = osrelease + len; v0 = strtol(osrelease, &sep, 10); - if (osrelease == sep || sep + 1 >= eosrelease || *sep != '.') { - LIN_SDT_PROBE1(mib, linux_map_osrel, return, EINVAL); + if (osrelease == sep || sep + 1 >= eosrelease || *sep != '.') return (EINVAL); - } osrelease = sep + 1; v1 = strtol(osrelease, &sep, 10); - if (osrelease == sep || sep + 1 >= eosrelease || *sep != '.') { - LIN_SDT_PROBE1(mib, linux_map_osrel, return, EINVAL); + if (osrelease == sep || sep + 1 >= eosrelease || *sep != '.') return (EINVAL); - } osrelease = sep + 1; v2 = strtol(osrelease, &sep, 10); - if (osrelease == sep || sep != eosrelease) { - LIN_SDT_PROBE1(mib, linux_map_osrel, return, EINVAL); + if (osrelease == sep || sep != eosrelease) return (EINVAL); - } v = v0 * 1000000 + v1 * 1000 + v2; - if (v < 1000000) { - LIN_SDT_PROBE1(mib, linux_map_osrel, return, EINVAL); + if (v < 1000000) return (EINVAL); - } *osrel = v; - LIN_SDT_PROBE1(mib, linux_map_osrel, return, 0); return (0); } @@ -277,8 +168,6 @@ linux_find_prison(struct prison *spr, st struct prison *pr; struct linux_prison *lpr; - LIN_SDT_PROBE2(mib, linux_get_prison, entry, spr, prp); - if (!linux_osd_jail_slot) /* In case osd_register failed. */ spr = &prison0; @@ -293,7 +182,6 @@ linux_find_prison(struct prison *spr, st } *prp = pr; - LIN_SDT_PROBE1(mib, linux_get_prison, return, lpr); return (lpr); } @@ -308,8 +196,6 @@ linux_alloc_prison(struct prison *pr, st struct linux_prison *lpr, *nlpr; int error; - LIN_SDT_PROBE2(mib, linux_alloc_prison, entry, pr, lprp); - /* If this prison already has Linux info, return that. */ error = 0; lpr = linux_find_prison(pr, &ppr); @@ -343,7 +229,6 @@ linux_alloc_prison(struct prison *pr, st else mtx_unlock(&pr->pr_mtx); - LIN_SDT_PROBE1(mib, linux_alloc_prison, return, error); return (error); } @@ -355,26 +240,16 @@ linux_prison_create(void *obj, void *dat { struct prison *pr = obj; struct vfsoptlist *opts = data; - int jsys, error; - - LIN_SDT_PROBE2(mib, linux_prison_create, entry, obj, data); + int jsys; - error = vfs_copyopt(opts, "linux", &jsys, sizeof(jsys)); - if (error != 0) { - LIN_SDT_PROBE1(mib, linux_prison_create, vfs_copyopt_error, - error); - } else if (jsys == JAIL_SYS_INHERIT) { - LIN_SDT_PROBE1(mib, linux_prison_create, return, 0); + if (vfs_copyopt(opts, "linux", &jsys, sizeof(jsys)) == 0 && + jsys == JAIL_SYS_INHERIT) return (0); - } /* * Inherit a prison's initial values from its parent * (different from JAIL_SYS_INHERIT which also inherits changes). */ - error = linux_alloc_prison(pr, NULL); - - LIN_SDT_PROBE1(mib, linux_prison_create, return, error); - return (error); + return (linux_alloc_prison(pr, NULL)); } static int @@ -384,80 +259,46 @@ linux_prison_check(void *obj __unused, v char *osname, *osrelease; int error, jsys, len, osrel, oss_version; - LIN_SDT_PROBE2(mib, linux_prison_check, entry, obj, data); - /* Check that the parameters are correct. */ error = vfs_copyopt(opts, "linux", &jsys, sizeof(jsys)); - if (error != 0) { - LIN_SDT_PROBE1(mib, linux_prison_check, vfs_copyopt_error, - error); - } if (error != ENOENT) { - if (error != 0) { - LIN_SDT_PROBE1(mib, linux_prison_check, return, error); + if (error != 0) return (error); - } - if (jsys != JAIL_SYS_NEW && jsys != JAIL_SYS_INHERIT) { - LIN_SDT_PROBE1(mib, linux_prison_check, return, EINVAL); + if (jsys != JAIL_SYS_NEW && jsys != JAIL_SYS_INHERIT) return (EINVAL); - } } error = vfs_getopt(opts, "linux.osname", (void **)&osname, &len); - if (error != 0) { - LIN_SDT_PROBE1(mib, linux_prison_check, vfs_getopt_error, - error); - } if (error != ENOENT) { - if (error != 0) { - LIN_SDT_PROBE1(mib, linux_prison_check, return, error); + if (error != 0) return (error); - } - if (len == 0 || osname[len - 1] != '\0') { - LIN_SDT_PROBE1(mib, linux_prison_check, return, EINVAL); + if (len == 0 || osname[len - 1] != '\0') return (EINVAL); - } if (len > LINUX_MAX_UTSNAME) { vfs_opterror(opts, "linux.osname too long"); - LIN_SDT_PROBE1(mib, linux_prison_check, return, - ENAMETOOLONG); return (ENAMETOOLONG); } } error = vfs_getopt(opts, "linux.osrelease", (void **)&osrelease, &len); - if (error != 0) { - LIN_SDT_PROBE1(mib, linux_prison_check, vfs_getopt_error, - error); - } if (error != ENOENT) { - if (error != 0) { - LIN_SDT_PROBE1(mib, linux_prison_check, return, error); + if (error != 0) return (error); - } - if (len == 0 || osrelease[len - 1] != '\0') { - LIN_SDT_PROBE1(mib, linux_prison_check, return, EINVAL); + if (len == 0 || osrelease[len - 1] != '\0') return (EINVAL); - } if (len > LINUX_MAX_UTSNAME) { vfs_opterror(opts, "linux.osrelease too long"); - LIN_SDT_PROBE1(mib, linux_prison_check, return, - ENAMETOOLONG); return (ENAMETOOLONG); } error = linux_map_osrel(osrelease, &osrel); if (error != 0) { vfs_opterror(opts, "linux.osrelease format error"); - LIN_SDT_PROBE1(mib, linux_prison_check, return, error); return (error); } } error = vfs_copyopt(opts, "linux.oss_version", &oss_version, sizeof(oss_version)); - if (error != 0) - LIN_SDT_PROBE1(mib, linux_prison_check, vfs_copyopt_error, error); if (error == ENOENT) error = 0; - LIN_SDT_PROBE1(mib, linux_prison_check, return, error); return (error); } @@ -470,32 +311,22 @@ linux_prison_set(void *obj, void *data) char *osname, *osrelease; int error, gotversion, jsys, len, oss_version; - LIN_SDT_PROBE2(mib, linux_prison_set, entry, obj, data); - /* Set the parameters, which should be correct. */ error = vfs_copyopt(opts, "linux", &jsys, sizeof(jsys)); - if (error != 0) - LIN_SDT_PROBE1(mib, linux_prison_set, vfs_copyopt_error, error); if (error == ENOENT) jsys = -1; error = vfs_getopt(opts, "linux.osname", (void **)&osname, &len); - if (error != 0) - LIN_SDT_PROBE1(mib, linux_prison_set, vfs_getopt_error, error); if (error == ENOENT) osname = NULL; else jsys = JAIL_SYS_NEW; error = vfs_getopt(opts, "linux.osrelease", (void **)&osrelease, &len); - if (error != 0) - LIN_SDT_PROBE1(mib, linux_prison_set, vfs_getopt_error, error); if (error == ENOENT) osrelease = NULL; else jsys = JAIL_SYS_NEW; error = vfs_copyopt(opts, "linux.oss_version", &oss_version, sizeof(oss_version)); - if (error != 0) - LIN_SDT_PROBE1(mib, linux_prison_set, vfs_copyopt_error, error); if (error == ENOENT) gotversion = 0; else { @@ -517,15 +348,12 @@ linux_prison_set(void *obj, void *data) error = linux_alloc_prison(pr, &lpr); if (error) { mtx_unlock(&pr->pr_mtx); - LIN_SDT_PROBE1(mib, linux_prison_set, return, error); return (error); } if (osrelease) { error = linux_map_osrel(osrelease, &lpr->pr_osrel); if (error) { mtx_unlock(&pr->pr_mtx); - LIN_SDT_PROBE1(mib, linux_prison_set, return, - error); return (error); } strlcpy(lpr->pr_osrelease, osrelease, @@ -538,7 +366,6 @@ linux_prison_set(void *obj, void *data) mtx_unlock(&pr->pr_mtx); } - LIN_SDT_PROBE1(mib, linux_prison_set, return, 0); return (0); } @@ -561,74 +388,44 @@ linux_prison_get(void *obj, void *data) static int version0; - LIN_SDT_PROBE2(mib, linux_prison_get, entry, obj, data); - /* See if this prison is the one with the Linux info. */ lpr = linux_find_prison(pr, &ppr); i = (ppr == pr) ? JAIL_SYS_NEW : JAIL_SYS_INHERIT; error = vfs_setopt(opts, "linux", &i, sizeof(i)); - if (error != 0) { - LIN_SDT_PROBE1(mib, linux_prison_get, vfs_setopt_error, error); - if (error != ENOENT) - goto done; - } + if (error != 0 && error != ENOENT) + goto done; if (i) { error = vfs_setopts(opts, "linux.osname", lpr->pr_osname); - if (error != 0) { - LIN_SDT_PROBE1(mib, linux_prison_get, vfs_setopts_error, - error); - if (error != ENOENT) - goto done; - } + if (error != 0 && error != ENOENT) + goto done; error = vfs_setopts(opts, "linux.osrelease", lpr->pr_osrelease); - if (error != 0) { - LIN_SDT_PROBE1(mib, linux_prison_get, vfs_setopts_error, - error); - if (error != ENOENT) - goto done; - } + if (error != 0 && error != ENOENT) + goto done; error = vfs_setopt(opts, "linux.oss_version", &lpr->pr_oss_version, sizeof(lpr->pr_oss_version)); - if (error != 0) { - LIN_SDT_PROBE1(mib, linux_prison_get, vfs_setopt_error, - error); - if(error != ENOENT) - goto done; - } + if (error != 0 && error != ENOENT) + goto done; } else { /* * If this prison is inheriting its Linux info, report * empty/zero parameters. */ error = vfs_setopts(opts, "linux.osname", ""); - if (error != 0) { - LIN_SDT_PROBE1(mib, linux_prison_get, vfs_setopts_error, - error); - if(error != ENOENT) - goto done; - } + if (error != 0 && error != ENOENT) + goto done; error = vfs_setopts(opts, "linux.osrelease", ""); - if (error != 0) { - LIN_SDT_PROBE1(mib, linux_prison_get, vfs_setopts_error, - error); - if(error != ENOENT) - goto done; - } + if (error != 0 && error != ENOENT) + goto done; error = vfs_setopt(opts, "linux.oss_version", &version0, sizeof(lpr->pr_oss_version)); - if (error != 0) { - LIN_SDT_PROBE1(mib, linux_prison_get, vfs_setopt_error, - error); - if(error != ENOENT) - goto done; - } + if (error != 0 && error != ENOENT) + goto done; } error = 0; done: mtx_unlock(&ppr->pr_mtx); - LIN_SDT_PROBE1(mib, linux_prison_get, return, error); return (error); } @@ -636,9 +433,7 @@ static void linux_prison_destructor(void *data) { - LIN_SDT_PROBE1(mib, linux_prison_destructor, entry, data); free(data, M_PRISON); - LIN_SDT_PROBE0(mib, linux_prison_destructor, return); } void @@ -652,8 +447,6 @@ linux_osd_jail_register(void) [PR_METHOD_CHECK] = linux_prison_check }; - LIN_SDT_PROBE0(mib, linux_osd_jail_register, entry); - linux_osd_jail_slot = osd_jail_register(linux_prison_destructor, methods); if (linux_osd_jail_slot > 0) { @@ -663,20 +456,14 @@ linux_osd_jail_register(void) (void)linux_alloc_prison(pr, NULL); sx_xunlock(&allprison_lock); } - - LIN_SDT_PROBE0(mib, linux_osd_jail_register, return); } void linux_osd_jail_deregister(void) { - LIN_SDT_PROBE0(mib, linux_osd_jail_register, entry); - if (linux_osd_jail_slot) osd_jail_deregister(linux_osd_jail_slot); - - LIN_SDT_PROBE0(mib, linux_osd_jail_register, return); } void @@ -685,13 +472,9 @@ linux_get_osname(struct thread *td, char struct prison *pr; struct linux_prison *lpr; - LIN_SDT_PROBE2(mib, linux_get_osname, entry, td, dst); - lpr = linux_find_prison(td->td_ucred->cr_prison, &pr); bcopy(lpr->pr_osname, dst, LINUX_MAX_UTSNAME); mtx_unlock(&pr->pr_mtx); - - LIN_SDT_PROBE0(mib, linux_get_osname, return); } static int @@ -700,13 +483,10 @@ linux_set_osname(struct thread *td, char struct prison *pr; struct linux_prison *lpr; - LIN_SDT_PROBE2(mib, linux_set_osname, entry, td, osname); - lpr = linux_find_prison(td->td_ucred->cr_prison, &pr); strlcpy(lpr->pr_osname, osname, LINUX_MAX_UTSNAME); mtx_unlock(&pr->pr_mtx); - LIN_SDT_PROBE1(mib, linux_set_osname, return, 0); return (0); } @@ -716,13 +496,9 @@ linux_get_osrelease(struct thread *td, c struct prison *pr; struct linux_prison *lpr; - LIN_SDT_PROBE2(mib, linux_get_osrelease, entry, td, dst); - lpr = linux_find_prison(td->td_ucred->cr_prison, &pr); bcopy(lpr->pr_osrelease, dst, LINUX_MAX_UTSNAME); mtx_unlock(&pr->pr_mtx); - - LIN_SDT_PROBE0(mib, linux_get_osrelease, return); } int @@ -732,13 +508,10 @@ linux_kernver(struct thread *td) struct linux_prison *lpr; int osrel; - LIN_SDT_PROBE1(mib, linux_kernver, entry, td); - lpr = linux_find_prison(td->td_ucred->cr_prison, &pr); osrel = lpr->pr_osrel; mtx_unlock(&pr->pr_mtx); - LIN_SDT_PROBE1(mib, linux_kernver, return, osrel); return (osrel); } @@ -749,15 +522,12 @@ linux_set_osrelease(struct thread *td, c struct linux_prison *lpr; int error; - LIN_SDT_PROBE2(mib, linux_set_osrelease, entry, td, osrelease); - lpr = linux_find_prison(td->td_ucred->cr_prison, &pr); error = linux_map_osrel(osrelease, &lpr->pr_osrel); if (error == 0) strlcpy(lpr->pr_osrelease, osrelease, LINUX_MAX_UTSNAME); mtx_unlock(&pr->pr_mtx); - LIN_SDT_PROBE1(mib, linux_set_osrelease, return, error); return (error); } @@ -768,13 +538,10 @@ linux_get_oss_version(struct thread *td) struct linux_prison *lpr; int version; - LIN_SDT_PROBE1(mib, linux_get_oss_version, entry, td); - lpr = linux_find_prison(td->td_ucred->cr_prison, &pr); version = lpr->pr_oss_version; mtx_unlock(&pr->pr_mtx); - LIN_SDT_PROBE1(mib, linux_get_oss_version, return, version); return (version); } @@ -784,74 +551,9 @@ linux_set_oss_version(struct thread *td, struct prison *pr; struct linux_prison *lpr; - LIN_SDT_PROBE2(mib, linux_set_oss_version, entry, td, oss_version); - lpr = linux_find_prison(td->td_ucred->cr_prison, &pr); lpr->pr_oss_version = oss_version; mtx_unlock(&pr->pr_mtx); - LIN_SDT_PROBE1(mib, linux_set_oss_version, return, 0); - return (0); -} - -#if defined(DEBUG) || defined(KTR) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sun May 24 15:55:01 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8A4328AA; Sun, 24 May 2015 15:55:01 +0000 (UTC) Received: from svn.freebsd.org (svn.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 761691043; Sun, 24 May 2015 15:55:01 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OFt13J068570; Sun, 24 May 2015 15:55:01 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OFsx89068501; Sun, 24 May 2015 15:54:59 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241554.t4OFsx89068501@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 15:54:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283422 - in head/sys: amd64/linux32 compat/linux modules/linux modules/linux_common X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 15:55:01 -0000 Author: dchagin Date: Sun May 24 15:54:58 2015 New Revision: 283422 URL: https://svnweb.freebsd.org/changeset/base/283422 Log: Refund the proc emuldata struct for future use. For now move flags from thread emuldata to proc emuldata as it was originally intended. As we can have both 64 & 32 bit Linuxulator running any eventhandler can be called twice for us. To prevent this move eventhandlers code from linux_emul.c to the linux_common.ko module. Differential Revision: https://reviews.freebsd.org/D1073 Modified: head/sys/amd64/linux32/linux32_sysvec.c head/sys/compat/linux/linux_common.c head/sys/compat/linux/linux_emul.c head/sys/compat/linux/linux_emul.h head/sys/compat/linux/linux_fork.c head/sys/compat/linux/linux_futex.c head/sys/compat/linux/linux_misc.c head/sys/modules/linux/Makefile head/sys/modules/linux_common/Makefile Modified: head/sys/amd64/linux32/linux32_sysvec.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysvec.c Sun May 24 15:51:18 2015 (r283421) +++ head/sys/amd64/linux32/linux32_sysvec.c Sun May 24 15:54:58 2015 (r283422) @@ -130,10 +130,6 @@ static boolean_t linux32_trans_osrel(con static void linux_vdso_install(void *param); static void linux_vdso_deinstall(void *param); -static eventhandler_tag linux_exit_tag; -static eventhandler_tag linux_exec_tag; -static eventhandler_tag linux_thread_dtor_tag; - /* * Linux syscalls return negative errno's, we do positive and map them * Reference: @@ -1170,12 +1166,6 @@ linux_elf_modevent(module_t mod, int typ linux_ioctl_register_handler(*lihp); LIST_INIT(&futex_list); mtx_init(&futex_mtx, "ftllk", NULL, MTX_DEF); - linux_exit_tag = EVENTHANDLER_REGISTER(process_exit, - linux_proc_exit, NULL, 1000); - linux_exec_tag = EVENTHANDLER_REGISTER(process_exec, - linux_proc_exec, NULL, 1000); - linux_thread_dtor_tag = EVENTHANDLER_REGISTER(thread_dtor, - linux_thread_dtor, NULL, EVENTHANDLER_PRI_ANY); stclohz = (stathz ? stathz : hz); if (bootverbose) printf("Linux ELF exec handler installed\n"); @@ -1197,9 +1187,6 @@ linux_elf_modevent(module_t mod, int typ SET_FOREACH(lihp, linux_ioctl_handler_set) linux_ioctl_unregister_handler(*lihp); mtx_destroy(&futex_mtx); - EVENTHANDLER_DEREGISTER(process_exit, linux_exit_tag); - EVENTHANDLER_DEREGISTER(process_exec, linux_exec_tag); - EVENTHANDLER_DEREGISTER(thread_dtor, linux_thread_dtor_tag); if (bootverbose) printf("Linux ELF exec handler removed\n"); } else Modified: head/sys/compat/linux/linux_common.c ============================================================================== --- head/sys/compat/linux/linux_common.c Sun May 24 15:51:18 2015 (r283421) +++ head/sys/compat/linux/linux_common.c Sun May 24 15:54:58 2015 (r283422) @@ -28,13 +28,15 @@ __FBSDID("$FreeBSD$"); #include -#include -#include -#include -#include +#include +#include +#include +#include #include -#include +#include +#include +#include #include #include @@ -42,6 +44,10 @@ MODULE_VERSION(linux_common, 1); SET_DECLARE(linux_device_handler_set, struct linux_device_handler); +static eventhandler_tag linux_exec_tag; +static eventhandler_tag linux_thread_dtor_tag; +static eventhandler_tag linux_exit_tag; + static int linux_common_modevent(module_t mod, int type, void *data) @@ -51,6 +57,12 @@ linux_common_modevent(module_t mod, int switch(type) { case MOD_LOAD: linux_osd_jail_register(); + linux_exit_tag = EVENTHANDLER_REGISTER(process_exit, + linux_proc_exit, NULL, 1000); + linux_exec_tag = EVENTHANDLER_REGISTER(process_exec, + linux_proc_exec, NULL, 1000); + linux_thread_dtor_tag = EVENTHANDLER_REGISTER(thread_dtor, + linux_thread_dtor, NULL, EVENTHANDLER_PRI_ANY); SET_FOREACH(ldhp, linux_device_handler_set) linux_device_register_handler(*ldhp); break; @@ -58,6 +70,9 @@ linux_common_modevent(module_t mod, int linux_osd_jail_deregister(); SET_FOREACH(ldhp, linux_device_handler_set) linux_device_unregister_handler(*ldhp); + EVENTHANDLER_DEREGISTER(process_exit, linux_exit_tag); + EVENTHANDLER_DEREGISTER(process_exec, linux_exec_tag); + EVENTHANDLER_DEREGISTER(thread_dtor, linux_thread_dtor_tag); break; default: return (EOPNOTSUPP); Modified: head/sys/compat/linux/linux_emul.c ============================================================================== --- head/sys/compat/linux/linux_emul.c Sun May 24 15:51:18 2015 (r283421) +++ head/sys/compat/linux/linux_emul.c Sun May 24 15:54:58 2015 (r283422) @@ -30,8 +30,6 @@ #include __FBSDID("$FreeBSD$"); -#include "opt_compat.h" - #include #include #include @@ -40,7 +38,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include @@ -48,60 +45,13 @@ __FBSDID("$FreeBSD$"); #include #include -#ifdef COMPAT_LINUX32 -#include -#include -#else -#include -#include -#endif - -#include #include -#include #include #include -/** - * Special DTrace provider for the linuxulator. - * - * In this file we define the provider for the entire linuxulator. All - * modules (= files of the linuxulator) use it. - * - * We define a different name depending on the emulated bitsize, see - * ../..//linux{,32}/linux.h, e.g.: - * native bitsize = linuxulator - * amd64, 32bit emulation = linuxulator32 - */ -LIN_SDT_PROVIDER_DEFINE(LINUX_DTRACE); - -/** - * DTrace probes in this module. - */ -LIN_SDT_PROBE_DEFINE1(emul, em_find, entry, "struct thread *"); -LIN_SDT_PROBE_DEFINE0(emul, em_find, return); -LIN_SDT_PROBE_DEFINE3(emul, proc_init, entry, "struct thread *", - "struct thread *", "int"); -LIN_SDT_PROBE_DEFINE0(emul, proc_init, create_thread); -LIN_SDT_PROBE_DEFINE0(emul, proc_init, fork); -LIN_SDT_PROBE_DEFINE0(emul, proc_init, exec); -LIN_SDT_PROBE_DEFINE0(emul, proc_init, return); -LIN_SDT_PROBE_DEFINE1(emul, proc_exit, entry, "struct proc *"); -LIN_SDT_PROBE_DEFINE1(emul, linux_thread_detach, entry, "struct thread *"); -LIN_SDT_PROBE_DEFINE0(emul, linux_thread_detach, futex_failed); -LIN_SDT_PROBE_DEFINE1(emul, linux_thread_detach, child_clear_tid_error, "int"); -LIN_SDT_PROBE_DEFINE0(emul, linux_thread_detach, return); -LIN_SDT_PROBE_DEFINE2(emul, proc_exec, entry, "struct proc *", - "struct image_params *"); -LIN_SDT_PROBE_DEFINE0(emul, proc_exec, return); -LIN_SDT_PROBE_DEFINE0(emul, linux_schedtail, entry); -LIN_SDT_PROBE_DEFINE1(emul, linux_schedtail, copyout_error, "int"); -LIN_SDT_PROBE_DEFINE0(emul, linux_schedtail, return); -LIN_SDT_PROBE_DEFINE1(emul, linux_set_tid_address, entry, "int *"); -LIN_SDT_PROBE_DEFINE0(emul, linux_set_tid_address, return); /* - * This returns reference to the emuldata entry (if found) + * This returns reference to the thread emuldata entry (if found) * * Hold PROC_LOCK when referencing emuldata from other threads. */ @@ -110,41 +60,51 @@ em_find(struct thread *td) { struct linux_emuldata *em; - LIN_SDT_PROBE1(emul, em_find, entry, td); - em = td->td_emuldata; - LIN_SDT_PROBE1(emul, em_find, return, em); - return (em); } +/* + * This returns reference to the proc pemuldata entry (if found) + * + * Hold PROC_LOCK when referencing proc pemuldata from other threads. + * Hold LINUX_PEM_LOCK wher referencing pemuldata members. + */ +struct linux_pemuldata * +pem_find(struct proc *p) +{ + struct linux_pemuldata *pem; + + pem = p->p_emuldata; + + return (pem); +} + void linux_proc_init(struct thread *td, struct thread *newtd, int flags) { struct linux_emuldata *em; - - LIN_SDT_PROBE3(emul, proc_init, entry, td, newtd, flags); + struct linux_pemuldata *pem; if (newtd != NULL) { /* non-exec call */ em = malloc(sizeof(*em), M_TEMP, M_WAITOK | M_ZERO); em->pdeath_signal = 0; - em->flags = 0; em->robust_futexes = NULL; if (flags & LINUX_CLONE_THREAD) { - LIN_SDT_PROBE0(emul, proc_init, create_thread); - em->em_tid = newtd->td_tid; } else { - LIN_SDT_PROBE0(emul, proc_init, fork); em->em_tid = newtd->td_proc->p_pid; + + pem = malloc(sizeof(*pem), M_TEMP, M_WAITOK | M_ZERO); + sx_init(&pem->pem_sx, "lpemlk"); + newtd->td_proc->p_emuldata = pem; } newtd->td_emuldata = em; } else { /* exec */ - LIN_SDT_PROBE0(emul, proc_init, exec); /* lookup the old one */ em = em_find(td); @@ -155,24 +115,32 @@ linux_proc_init(struct thread *td, struc em->child_clear_tid = NULL; em->child_set_tid = NULL; - - LIN_SDT_PROBE0(emul, proc_init, return); } void linux_proc_exit(void *arg __unused, struct proc *p) { + struct linux_pemuldata *pem; struct thread *td = curthread; - if (__predict_false(SV_CURPROC_ABI() != SV_ABI_LINUX)) { - LIN_SDT_PROBE1(emul, proc_exit, entry, p); - (p->p_sysent->sv_thread_detach)(td); - } + if (__predict_false(SV_CURPROC_ABI() != SV_ABI_LINUX)) + return; + + pem = pem_find(p); + if (pem == NULL) + return; + (p->p_sysent->sv_thread_detach)(td); + + p->p_emuldata = NULL; + + sx_destroy(&pem->pem_sx); + free(pem, M_TEMP); } int linux_common_execve(struct thread *td, struct image_args *eargs) { + struct linux_pemuldata *pem; struct linux_emuldata *em; struct proc *p; int error; @@ -199,16 +167,21 @@ linux_common_execve(struct thread *td, s /* * In a case of transition from Linux binary execing to - * FreeBSD binary we destroy linux emuldata thread entry. + * FreeBSD binary we destroy linux emuldata thread & proc entries. */ if (SV_CURPROC_ABI() != SV_ABI_LINUX) { PROC_LOCK(p); em = em_find(td); - KASSERT(em != NULL, ("proc_exec: emuldata not found.\n")); + KASSERT(em != NULL, ("proc_exec: thread emuldata not found.\n")); td->td_emuldata = NULL; + + pem = pem_find(p); + KASSERT(pem != NULL, ("proc_exec: proc pemuldata not found.\n")); + p->p_emuldata = NULL; PROC_UNLOCK(p); free(em, M_TEMP); + free(pem, M_TEMP); } return (0); } @@ -224,68 +197,11 @@ linux_proc_exec(void *arg __unused, stru */ if (__predict_false((imgp->sysent->sv_flags & SV_ABI_MASK) == SV_ABI_LINUX)) { - LIN_SDT_PROBE2(emul, proc_exec, entry, p, imgp); if (SV_PROC_ABI(p) == SV_ABI_LINUX) linux_proc_init(td, NULL, 0); else linux_proc_init(td, td, 0); - - LIN_SDT_PROBE0(emul, proc_exec, return); - } -} - -void -linux_thread_detach(struct thread *td) -{ - struct linux_sys_futex_args cup; - struct linux_emuldata *em; - int *child_clear_tid; - int null = 0; - int error; - - LIN_SDT_PROBE1(emul, linux_thread_detach, entry, td); - - em = em_find(td); - KASSERT(em != NULL, ("thread_detach: emuldata not found.\n")); - - LINUX_CTR1(exit, "thread detach(%d)", em->em_tid); - - release_futexes(td, em); - - child_clear_tid = em->child_clear_tid; - - if (child_clear_tid != NULL) { - - LINUX_CTR2(exit, "thread detach(%d) %p", - em->em_tid, child_clear_tid); - - error = copyout(&null, child_clear_tid, sizeof(null)); - if (error) { - LIN_SDT_PROBE1(emul, linux_thread_detach, - child_clear_tid_error, error); - - LIN_SDT_PROBE0(emul, linux_thread_detach, return); - return; - } - - cup.uaddr = child_clear_tid; - cup.op = LINUX_FUTEX_WAKE; - cup.val = 1; /* wake one */ - cup.timeout = NULL; - cup.uaddr2 = NULL; - cup.val3 = 0; - error = linux_sys_futex(td, &cup); - /* - * this cannot happen at the moment and if this happens it - * probably means there is a user space bug - */ - if (error) { - LIN_SDT_PROBE0(emul, linux_thread_detach, futex_failed); - printf(LMSG("futex stuff in thread_detach failed.\n")); - } } - - LIN_SDT_PROBE0(emul, linux_thread_detach, return); } void @@ -311,12 +227,10 @@ linux_schedtail(struct thread *td) int error = 0; int *child_set_tid; - LIN_SDT_PROBE1(emul, linux_schedtail, entry, td); - p = td->td_proc; em = em_find(td); - KASSERT(em != NULL, ("linux_schedtail: emuldata not found.\n")); + KASSERT(em != NULL, ("linux_schedtail: thread emuldata not found.\n")); child_set_tid = em->child_set_tid; if (child_set_tid != NULL) { @@ -324,34 +238,6 @@ linux_schedtail(struct thread *td) sizeof(em->em_tid)); LINUX_CTR4(clone, "schedtail(%d) %p stored %d error %d", td->td_tid, child_set_tid, em->em_tid, error); - - if (error != 0) { - LIN_SDT_PROBE1(emul, linux_schedtail, copyout_error, - error); - } } else LINUX_CTR1(clone, "schedtail(%d)", em->em_tid); - - LIN_SDT_PROBE0(emul, linux_schedtail, return); -} - -int -linux_set_tid_address(struct thread *td, struct linux_set_tid_address_args *args) -{ - struct linux_emuldata *em; - - LIN_SDT_PROBE1(emul, linux_set_tid_address, entry, args->tidptr); - - em = em_find(td); - KASSERT(em != NULL, ("set_tid_address: emuldata not found.\n")); - - em->child_clear_tid = args->tidptr; - - td->td_retval[0] = em->em_tid; - - LINUX_CTR3(set_tid_address, "tidptr(%d) %p, returns %d", - em->em_tid, args->tidptr, td->td_retval[0]); - - LIN_SDT_PROBE0(emul, linux_set_tid_address, return); - return (0); } Modified: head/sys/compat/linux/linux_emul.h ============================================================================== --- head/sys/compat/linux/linux_emul.h Sun May 24 15:51:18 2015 (r283421) +++ head/sys/compat/linux/linux_emul.h Sun May 24 15:54:58 2015 (r283422) @@ -41,7 +41,7 @@ struct linux_emuldata { int *child_clear_tid;/* in clone(): Child's TID to clear on exit */ int pdeath_signal; /* parent death signal */ - int flags; /* different emuldata flags */ + int flags; /* thread emuldata flags */ int em_tid; /* thread id */ struct linux_robust_list_head *robust_futexes; @@ -49,10 +49,6 @@ struct linux_emuldata { struct linux_emuldata *em_find(struct thread *); -/* emuldata flags */ -#define LINUX_XDEPR_REQUEUEOP 0x00000001 /* uses deprecated - futex REQUEUE op*/ - void linux_proc_init(struct thread *, struct thread *, int); void linux_proc_exit(void *, struct proc *); void linux_schedtail(struct thread *); @@ -61,4 +57,19 @@ void linux_thread_dtor(void *arg __unuse void linux_thread_detach(struct thread *); int linux_common_execve(struct thread *, struct image_args *); +/* process emuldata flags */ +#define LINUX_XDEPR_REQUEUEOP 0x00000001 /* uses deprecated + futex REQUEUE op*/ +struct linux_pemuldata { + uint32_t flags; /* process emuldata flags */ + struct sx pem_sx; /* lock for this struct */ +}; + +#define LINUX_PEM_XLOCK(p) sx_xlock(&(p)->pem_sx) +#define LINUX_PEM_XUNLOCK(p) sx_xunlock(&(p)->pem_sx) +#define LINUX_PEM_SLOCK(p) sx_slock(&(p)->pem_sx) +#define LINUX_PEM_SUNLOCK(p) sx_sunlock(&(p)->pem_sx) + +struct linux_pemuldata *pem_find(struct proc *); + #endif /* !_LINUX_EMUL_H_ */ Modified: head/sys/compat/linux/linux_fork.c ============================================================================== --- head/sys/compat/linux/linux_fork.c Sun May 24 15:51:18 2015 (r283421) +++ head/sys/compat/linux/linux_fork.c Sun May 24 15:54:58 2015 (r283422) @@ -58,6 +58,7 @@ __FBSDID("$FreeBSD$"); #endif #include #include +#include #include #include @@ -404,3 +405,63 @@ linux_exit(struct thread *td, struct lin exit1(td, W_EXITCODE(args->rval, 0)); /* NOTREACHED */ } + +int +linux_set_tid_address(struct thread *td, struct linux_set_tid_address_args *args) +{ + struct linux_emuldata *em; + + em = em_find(td); + KASSERT(em != NULL, ("set_tid_address: emuldata not found.\n")); + + em->child_clear_tid = args->tidptr; + + td->td_retval[0] = em->em_tid; + + LINUX_CTR3(set_tid_address, "tidptr(%d) %p, returns %d", + em->em_tid, args->tidptr, td->td_retval[0]); + + return (0); +} + +void +linux_thread_detach(struct thread *td) +{ + struct linux_sys_futex_args cup; + struct linux_emuldata *em; + int *child_clear_tid; + int error; + + em = em_find(td); + KASSERT(em != NULL, ("thread_detach: emuldata not found.\n")); + + LINUX_CTR1(exit, "thread detach(%d)", em->em_tid); + + release_futexes(td, em); + + child_clear_tid = em->child_clear_tid; + + if (child_clear_tid != NULL) { + + LINUX_CTR2(exit, "thread detach(%d) %p", + em->em_tid, child_clear_tid); + + error = suword32(child_clear_tid, 0); + if (error != 0) + return; + + cup.uaddr = child_clear_tid; + cup.op = LINUX_FUTEX_WAKE; + cup.val = 1; /* wake one */ + cup.timeout = NULL; + cup.uaddr2 = NULL; + cup.val3 = 0; + error = linux_sys_futex(td, &cup); + /* + * this cannot happen at the moment and if this happens it + * probably means there is a user space bug + */ + if (error != 0) + linux_msg(td, "futex stuff in thread_detach failed."); + } +} Modified: head/sys/compat/linux/linux_futex.c ============================================================================== --- head/sys/compat/linux/linux_futex.c Sun May 24 15:51:18 2015 (r283421) +++ head/sys/compat/linux/linux_futex.c Sun May 24 15:54:58 2015 (r283422) @@ -653,7 +653,7 @@ int linux_sys_futex(struct thread *td, struct linux_sys_futex_args *args) { int clockrt, nrwake, op_ret, ret; - struct linux_emuldata *em; + struct linux_pemuldata *pem; struct waiting_proc *wp; struct futex *f, *f2; struct l_timespec timeout; @@ -973,12 +973,12 @@ linux_sys_futex(struct thread *td, struc * Glibc versions prior to 2.3.3 fall back to FUTEX_WAKE when * FUTEX_REQUEUE returned EINVAL. */ - em = em_find(td); - if ((em->flags & LINUX_XDEPR_REQUEUEOP) == 0) { + pem = pem_find(td->td_proc); + if ((pem->flags & LINUX_XDEPR_REQUEUEOP) == 0) { linux_msg(td, "linux_sys_futex: " "unsupported futex_requeue op\n"); - em->flags |= LINUX_XDEPR_REQUEUEOP; + pem->flags |= LINUX_XDEPR_REQUEUEOP; LIN_SDT_PROBE0(futex, linux_sys_futex, deprecated_requeue); } Modified: head/sys/compat/linux/linux_misc.c ============================================================================== --- head/sys/compat/linux/linux_misc.c Sun May 24 15:51:18 2015 (r283421) +++ head/sys/compat/linux/linux_misc.c Sun May 24 15:54:58 2015 (r283422) @@ -53,6 +53,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -83,6 +84,7 @@ __FBSDID("$FreeBSD$"); #include #endif +#include #include #include #include @@ -91,6 +93,19 @@ __FBSDID("$FreeBSD$"); #include #include +/** + * Special DTrace provider for the linuxulator. + * + * In this file we define the provider for the entire linuxulator. All + * modules (= files of the linuxulator) use it. + * + * We define a different name depending on the emulated bitsize, see + * ../..//linux{,32}/linux.h, e.g.: + * native bitsize = linuxulator + * amd64, 32bit emulation = linuxulator32 + */ +LIN_SDT_PROVIDER_DEFINE(LINUX_DTRACE); + int stclohz; /* Statistics clock frequency */ static unsigned int linux_to_bsd_resource[LINUX_RLIM_NLIMITS] = { Modified: head/sys/modules/linux/Makefile ============================================================================== --- head/sys/modules/linux/Makefile Sun May 24 15:51:18 2015 (r283421) +++ head/sys/modules/linux/Makefile Sun May 24 15:54:58 2015 (r283422) @@ -10,7 +10,7 @@ CFLAGS+=-DCOMPAT_FREEBSD32 -DCOMPAT_LINU VDSO= linux${SFX}_vdso KMOD= linux -SRCS= linux_fork.c linux${SFX}_dummy.c linux_emul.c linux_file.c \ +SRCS= linux_fork.c linux${SFX}_dummy.c linux_file.c \ linux_futex.c linux_getcwd.c linux_ioctl.c linux_ipc.c \ linux${SFX}_machdep.c linux_misc.c linux_signal.c \ linux_socket.c linux_stats.c linux_sysctl.c linux${SFX}_sysent.c \ @@ -30,7 +30,8 @@ SRCS+= opt_apic.h OBJS= ${VDSO}.so .if ${MACHINE_CPUARCH} == "i386" -SRCS+= linux_ptrace.c imgact_linux.c linux_util.c linux_mib.c opt_cpu.h +SRCS+= linux_ptrace.c imgact_linux.c linux_util.c linux_mib.c \ + linux_emul.c opt_cpu.h .endif .if ${MACHINE_CPUARCH} == "i386" Modified: head/sys/modules/linux_common/Makefile ============================================================================== --- head/sys/modules/linux_common/Makefile Sun May 24 15:51:18 2015 (r283421) +++ head/sys/modules/linux_common/Makefile Sun May 24 15:54:58 2015 (r283422) @@ -3,7 +3,7 @@ .PATH: ${.CURDIR}/../../compat/linux KMOD= linux_common -SRCS= linux_common.c linux_mib.c linux_util.c \ +SRCS= linux_common.c linux_mib.c linux_util.c linux_emul.c \ opt_compat.h device_if.h vnode_if.h bus_if.h EXPORT_SYMS= From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:00:02 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id EFB20BE9; Sun, 24 May 2015 16:00:02 +0000 (UTC) Received: from svn.freebsd.org (svn.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 DDFF61078; Sun, 24 May 2015 16:00:02 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OG02K7069375; Sun, 24 May 2015 16:00:02 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OG02CZ069370; Sun, 24 May 2015 16:00:02 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241600.t4OG02CZ069370@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:00:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283423 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:00:03 -0000 Author: dchagin Date: Sun May 24 16:00:01 2015 New Revision: 283423 URL: https://svnweb.freebsd.org/changeset/base/283423 Log: Move FEATURE macros for v4l and v4l2 to the common module. Differential Revision: https://reviews.freebsd.org/D1075 Reviewed by: emaste Modified: head/sys/compat/linux/linux_common.c head/sys/compat/linux/linux_ioctl.c Modified: head/sys/compat/linux/linux_common.c ============================================================================== --- head/sys/compat/linux/linux_common.c Sun May 24 15:54:58 2015 (r283422) +++ head/sys/compat/linux/linux_common.c Sun May 24 16:00:01 2015 (r283423) @@ -35,11 +35,15 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include +FEATURE(linuxulator_v4l, "V4L ioctl wrapper support in the linuxulator"); +FEATURE(linuxulator_v4l2, "V4L2 ioctl wrapper support in the linuxulator"); + MODULE_VERSION(linux_common, 1); SET_DECLARE(linux_device_handler_set, struct linux_device_handler); Modified: head/sys/compat/linux/linux_ioctl.c ============================================================================== --- head/sys/compat/linux/linux_ioctl.c Sun May 24 15:54:58 2015 (r283422) +++ head/sys/compat/linux/linux_ioctl.c Sun May 24 16:00:01 2015 (r283423) @@ -95,9 +95,6 @@ __FBSDID("$FreeBSD$"); CTASSERT(LINUX_IFNAMSIZ == IFNAMSIZ); -FEATURE(linuxulator_v4l, "V4L ioctl wrapper support in the linuxulator"); -FEATURE(linuxulator_v4l2, "V4L2 ioctl wrapper support in the linuxulator"); - static linux_ioctl_function_t linux_ioctl_cdrom; static linux_ioctl_function_t linux_ioctl_vfat; static linux_ioctl_function_t linux_ioctl_console; From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:07:13 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 88754E5A; Sun, 24 May 2015 16:07:13 +0000 (UTC) Received: from svn.freebsd.org (svn.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 750B41199; Sun, 24 May 2015 16:07:13 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OG7Dno073942; Sun, 24 May 2015 16:07:13 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OG7C7b073936; Sun, 24 May 2015 16:07:12 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241607.t4OG7C7b073936@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:07:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283424 - in head/sys: amd64/linux modules/linux64 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:07:13 -0000 Author: dchagin Date: Sun May 24 16:07:11 2015 New Revision: 283424 URL: https://svnweb.freebsd.org/changeset/base/283424 Log: Add preliminary support for x86-64 Linux binaries. Differential Revision: https://reviews.freebsd.org/D1076 Added: head/sys/amd64/linux/ head/sys/amd64/linux/Makefile (contents, props changed) head/sys/amd64/linux/linux.h (contents, props changed) head/sys/amd64/linux/linux_dummy.c (contents, props changed) head/sys/amd64/linux/linux_genassym.c (contents, props changed) head/sys/amd64/linux/linux_ipc64.h (contents, props changed) head/sys/amd64/linux/linux_locore.s (contents, props changed) head/sys/amd64/linux/linux_machdep.c (contents, props changed) head/sys/amd64/linux/linux_support.s (contents, props changed) head/sys/amd64/linux/linux_sysvec.c (contents, props changed) head/sys/amd64/linux/linux_vdso.lds.s (contents, props changed) head/sys/amd64/linux/syscalls.conf (contents, props changed) head/sys/amd64/linux/syscalls.master (contents, props changed) head/sys/modules/linux64/ head/sys/modules/linux64/Makefile (contents, props changed) Added: head/sys/amd64/linux/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/amd64/linux/Makefile Sun May 24 16:07:11 2015 (r283424) @@ -0,0 +1,17 @@ +# Makefile for syscall tables +# +# $FreeBSD$ + +all: + @echo "make sysent only" + +sysent: linux_sysent.c linux_syscall.h linux_proto.h linux_syscalls.c linux_systrace_args.c + +linux_sysent.c linux_syscall.h linux_proto.h linux_syscalls.c linux_systrace_args.c: \ + ../../kern/makesyscalls.sh syscalls.master syscalls.conf + -mv -f linux_sysent.c linux_sysent.c.bak + -mv -f linux_syscall.h linux_syscall.h.bak + -mv -f linux_proto.h linux_proto.h.bak + -mv -f linux_syscalls.c linux_syscalls.c.bak + -mv -f linux_systrace_args.c linux_systrace_args.c.bak + sh ../../kern/makesyscalls.sh syscalls.master syscalls.conf Added: head/sys/amd64/linux/linux.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/amd64/linux/linux.h Sun May 24 16:07:11 2015 (r283424) @@ -0,0 +1,666 @@ +/*- + * Copyright (c) 2013 Dmitry Chagin + * Copyright (c) 1994-1996 Søren Schmidt + * 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 + * in this position and unchanged. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _AMD64_LINUX_H_ +#define _AMD64_LINUX_H_ + +#include + +/* + * debugging support + */ +extern u_char linux_debug_map[]; +#define ldebug(name) isclr(linux_debug_map, LINUX_SYS_linux_ ## name) +#define ARGS(nm, fmt) "linux(%ld/%ld): "#nm"("fmt")\n", \ + (long)td->td_proc->p_pid, (long)td->td_tid +#define LMSG(fmt) "linux(%ld/%ld): "fmt"\n", \ + (long)td->td_proc->p_pid, (long)td->td_tid +#define LINUX_DTRACE linuxulator + +#define PTRIN(v) (void *)(v) +#define PTROUT(v) (uintptr_t)(v) + +#define CP(src,dst,fld) do { (dst).fld = (src).fld; } while (0) +#define CP2(src,dst,sfld,dfld) do { (dst).dfld = (src).sfld; } while (0) +#define PTRIN_CP(src,dst,fld) \ + do { (dst).fld = PTRIN((src).fld); } while (0) + +/* + * Provide a separate set of types for the Linux types. + */ +typedef int32_t l_int; +typedef int64_t l_long; +typedef int16_t l_short; +typedef uint32_t l_uint; +typedef uint64_t l_ulong; +typedef uint16_t l_ushort; + +typedef l_ulong l_uintptr_t; +typedef l_long l_clock_t; +typedef l_int l_daddr_t; +typedef l_ulong l_dev_t; +typedef l_uint l_gid_t; +typedef l_uint l_uid_t; +typedef l_ulong l_ino_t; +typedef l_int l_key_t; +typedef l_long l_loff_t; +typedef l_uint l_mode_t; +typedef l_long l_off_t; +typedef l_int l_pid_t; +typedef l_ulong l_size_t; +typedef l_long l_ssize_t; +typedef l_long l_suseconds_t; +typedef l_long l_time_t; +typedef l_int l_timer_t; +typedef l_int l_mqd_t; +typedef l_size_t l_socklen_t; + +typedef struct { + l_int val[2]; +} l_fsid_t; + +typedef struct { + l_time_t tv_sec; + l_suseconds_t tv_usec; +} l_timeval; + +#define l_fd_set fd_set + +/* + * Miscellaneous + */ +#define LINUX_NAME_MAX 255 +#define LINUX_CTL_MAXNAME 10 + +#define LINUX_AT_COUNT 17 /* Count of used aux entry types. */ + +struct l___sysctl_args +{ + l_uintptr_t name; + l_int nlen; + l_uintptr_t oldval; + l_uintptr_t oldlenp; + l_uintptr_t newval; + l_size_t newlen; + l_ulong __spare[4]; +}; + +/* Scheduling policies */ +#define LINUX_SCHED_OTHER 0 +#define LINUX_SCHED_FIFO 1 +#define LINUX_SCHED_RR 2 + +/* Resource limits */ +#define LINUX_RLIMIT_CPU 0 +#define LINUX_RLIMIT_FSIZE 1 +#define LINUX_RLIMIT_DATA 2 +#define LINUX_RLIMIT_STACK 3 +#define LINUX_RLIMIT_CORE 4 +#define LINUX_RLIMIT_RSS 5 +#define LINUX_RLIMIT_NPROC 6 +#define LINUX_RLIMIT_NOFILE 7 +#define LINUX_RLIMIT_MEMLOCK 8 +#define LINUX_RLIMIT_AS 9 /* Address space limit */ + +#define LINUX_RLIM_NLIMITS 10 + +struct l_rlimit { + l_ulong rlim_cur; + l_ulong rlim_max; +}; + +/* mmap options */ +#define LINUX_MAP_SHARED 0x0001 +#define LINUX_MAP_PRIVATE 0x0002 +#define LINUX_MAP_FIXED 0x0010 +#define LINUX_MAP_ANON 0x0020 +#define LINUX_MAP_GROWSDOWN 0x0100 + +/* + * stat family of syscalls + */ +struct l_timespec { + l_time_t tv_sec; + l_long tv_nsec; +}; + +struct l_newstat { + l_dev_t st_dev; + l_ino_t st_ino; + l_ulong st_nlink; + l_uint st_mode; + l_uid_t st_uid; + l_gid_t st_gid; + l_uint __st_pad1; + l_dev_t st_rdev; + l_off_t st_size; + l_long st_blksize; + l_long st_blocks; + struct l_timespec st_atim; + struct l_timespec st_mtim; + struct l_timespec st_ctim; + l_long __unused1; + l_long __unused2; + l_long __unused3; +}; + +/* + * Signalling + */ +#define LINUX_SIGHUP 1 +#define LINUX_SIGINT 2 +#define LINUX_SIGQUIT 3 +#define LINUX_SIGILL 4 +#define LINUX_SIGTRAP 5 +#define LINUX_SIGABRT 6 +#define LINUX_SIGIOT LINUX_SIGABRT +#define LINUX_SIGBUS 7 +#define LINUX_SIGFPE 8 +#define LINUX_SIGKILL 9 +#define LINUX_SIGUSR1 10 +#define LINUX_SIGSEGV 11 +#define LINUX_SIGUSR2 12 +#define LINUX_SIGPIPE 13 +#define LINUX_SIGALRM 14 +#define LINUX_SIGTERM 15 +#define LINUX_SIGSTKFLT 16 +#define LINUX_SIGCHLD 17 +#define LINUX_SIGCONT 18 +#define LINUX_SIGSTOP 19 +#define LINUX_SIGTSTP 20 +#define LINUX_SIGTTIN 21 +#define LINUX_SIGTTOU 22 +#define LINUX_SIGURG 23 +#define LINUX_SIGXCPU 24 +#define LINUX_SIGXFSZ 25 +#define LINUX_SIGVTALRM 26 +#define LINUX_SIGPROF 27 +#define LINUX_SIGWINCH 28 +#define LINUX_SIGIO 29 +#define LINUX_SIGPOLL LINUX_SIGIO +#define LINUX_SIGPWR 30 +#define LINUX_SIGSYS 31 +#define LINUX_SIGRTMIN 32 + +#define LINUX_SIGTBLSZ 31 +#define LINUX_NSIG 64 +#define LINUX_NBPW 64 +#define LINUX_NSIG_WORDS (LINUX_NSIG / LINUX_NBPW) + +/* sigaction flags */ +#define LINUX_SA_NOCLDSTOP 0x00000001 +#define LINUX_SA_NOCLDWAIT 0x00000002 +#define LINUX_SA_SIGINFO 0x00000004 +#define LINUX_SA_RESTORER 0x04000000 +#define LINUX_SA_ONSTACK 0x08000000 +#define LINUX_SA_RESTART 0x10000000 +#define LINUX_SA_INTERRUPT 0x20000000 +#define LINUX_SA_NOMASK 0x40000000 +#define LINUX_SA_ONESHOT 0x80000000 + +/* sigprocmask actions */ +#define LINUX_SIG_BLOCK 0 +#define LINUX_SIG_UNBLOCK 1 +#define LINUX_SIG_SETMASK 2 + +/* primitives to manipulate sigset_t */ + +#define LINUX_SIGEMPTYSET(set) \ + do { \ + (set).__bits[0] = 0; \ + } while(0) + +#define LINUX_SIGISMEMBER(set, sig) \ + (1UL & ((set).__bits[0] >> _SIG_IDX(sig))) + +#define LINUX_SIGADDSET(set, sig) \ + (set).__bits[0] |= 1UL << _SIG_IDX(sig) + +/* sigaltstack */ +#define LINUX_MINSIGSTKSZ 2048 +#define LINUX_SS_ONSTACK 1 +#define LINUX_SS_DISABLE 2 + +int linux_to_bsd_sigaltstack(int lsa); +int bsd_to_linux_sigaltstack(int bsa); + +typedef void (*l_handler_t)(l_int); + +typedef struct { + l_ulong __bits[LINUX_NSIG_WORDS]; +} l_sigset_t; + +typedef struct { + l_handler_t lsa_handler; + l_ulong lsa_flags; + l_uintptr_t lsa_restorer; + l_sigset_t lsa_mask; +} l_sigaction_t; + +typedef struct { + l_uintptr_t ss_sp; + l_int ss_flags; + l_size_t ss_size; +} l_stack_t; + +struct l_fpstate { + u_int16_t cwd; + u_int16_t swd; + u_int16_t twd; + u_int16_t fop; + u_int64_t rip; + u_int64_t rdp; + u_int32_t mxcsr; + u_int32_t mxcsr_mask; + u_int32_t st_space[32]; + u_int32_t xmm_space[64]; + u_int32_t reserved2[24]; +}; + +struct l_sigcontext { + l_ulong sc_r8; + l_ulong sc_r9; + l_ulong sc_r10; + l_ulong sc_r11; + l_ulong sc_r12; + l_ulong sc_r13; + l_ulong sc_r14; + l_ulong sc_r15; + l_ulong sc_rdi; + l_ulong sc_rsi; + l_ulong sc_rbp; + l_ulong sc_rbx; + l_ulong sc_rdx; + l_ulong sc_rax; + l_ulong sc_rcx; + l_ulong sc_rsp; + l_ulong sc_rip; + l_ulong sc_rflags; + l_ushort sc_cs; + l_ushort sc_gs; + l_ushort sc_fs; + l_ushort sc___pad0; + l_ulong sc_err; + l_ulong sc_trapno; + l_sigset_t sc_mask; + l_ulong sc_cr2; + struct l_fpstate *sc_fpstate; + l_ulong sc_reserved1[8]; +}; + +struct l_ucontext { + l_ulong uc_flags; + l_uintptr_t uc_link; + l_stack_t uc_stack; + struct l_sigcontext uc_mcontext; + l_sigset_t uc_sigmask; +}; + +#define LINUX_SI_PREAMBLE_SIZE (4 * sizeof(int)) +#define LINUX_SI_MAX_SIZE 128 +#define LINUX_SI_PAD_SIZE ((LINUX_SI_MAX_SIZE - \ + LINUX_SI_PREAMBLE_SIZE) / sizeof(l_int)) +typedef union l_sigval { + l_int sival_int; + l_uintptr_t sival_ptr; +} l_sigval_t; + +typedef struct l_siginfo { + l_int lsi_signo; + l_int lsi_errno; + l_int lsi_code; + union { + l_int _pad[LINUX_SI_PAD_SIZE]; + + struct { + l_pid_t _pid; + l_uid_t _uid; + } _kill; + + struct { + l_timer_t _tid; + l_int _overrun; + char _pad[sizeof(l_uid_t) - sizeof(int)]; + union l_sigval _sigval; + l_uint _sys_private; + } _timer; + + struct { + l_pid_t _pid; /* sender's pid */ + l_uid_t _uid; /* sender's uid */ + union l_sigval _sigval; + } _rt; + + struct { + l_pid_t _pid; /* which child */ + l_uid_t _uid; /* sender's uid */ + l_int _status; /* exit code */ + l_clock_t _utime; + l_clock_t _stime; + } _sigchld; + + struct { + l_uintptr_t _addr; /* Faulting insn/memory ref. */ + } _sigfault; + + struct { + l_long _band; /* POLL_IN,POLL_OUT,POLL_MSG */ + l_int _fd; + } _sigpoll; + } _sifields; +} l_siginfo_t; + +#define lsi_pid _sifields._kill._pid +#define lsi_uid _sifields._kill._uid +#define lsi_tid _sifields._timer._tid +#define lsi_overrun _sifields._timer._overrun +#define lsi_sys_private _sifields._timer._sys_private +#define lsi_status _sifields._sigchld._status +#define lsi_utime _sifields._sigchld._utime +#define lsi_stime _sifields._sigchld._stime +#define lsi_value _sifields._rt._sigval +#define lsi_int _sifields._rt._sigval.sival_int +#define lsi_ptr _sifields._rt._sigval.sival_ptr +#define lsi_addr _sifields._sigfault._addr +#define lsi_band _sifields._sigpoll._band +#define lsi_fd _sifields._sigpoll._fd + +/* + * We make the stack look like Linux expects it when calling a signal + * handler, but use the BSD way of calling the handler and sigreturn(). + * This means that we need to pass the pointer to the handler too. + * It is appended to the frame to not interfere with the rest of it. + */ + +struct l_rt_sigframe { + struct l_ucontext sf_sc; + struct l_siginfo sf_si; + l_handler_t sf_handler; +}; + +/* + * open/fcntl flags + */ +#define LINUX_O_RDONLY 00000000 +#define LINUX_O_WRONLY 00000001 +#define LINUX_O_RDWR 00000002 +#define LINUX_O_ACCMODE 00000003 +#define LINUX_O_CREAT 00000100 +#define LINUX_O_EXCL 00000200 +#define LINUX_O_NOCTTY 00000400 +#define LINUX_O_TRUNC 00001000 +#define LINUX_O_APPEND 00002000 +#define LINUX_O_NONBLOCK 00004000 +#define LINUX_O_NDELAY LINUX_O_NONBLOCK +#define LINUX_O_SYNC 00010000 +#define LINUX_FASYNC 00020000 +#define LINUX_O_DIRECT 00040000 /* Direct disk access hint */ +#define LINUX_O_LARGEFILE 00100000 +#define LINUX_O_DIRECTORY 00200000 /* Must be a directory */ +#define LINUX_O_NOFOLLOW 00400000 /* Do not follow links */ +#define LINUX_O_NOATIME 01000000 +#define LINUX_O_CLOEXEC 02000000 + +#define LINUX_F_DUPFD 0 +#define LINUX_F_GETFD 1 +#define LINUX_F_SETFD 2 +#define LINUX_F_GETFL 3 +#define LINUX_F_SETFL 4 +#define LINUX_F_GETLK 5 +#define LINUX_F_SETLK 6 +#define LINUX_F_SETLKW 7 +#define LINUX_F_SETOWN 8 +#define LINUX_F_GETOWN 9 + +#define LINUX_F_RDLCK 0 +#define LINUX_F_WRLCK 1 +#define LINUX_F_UNLCK 2 + +/* + * mount flags + */ +#define LINUX_MS_RDONLY 0x0001 +#define LINUX_MS_NOSUID 0x0002 +#define LINUX_MS_NODEV 0x0004 +#define LINUX_MS_NOEXEC 0x0008 +#define LINUX_MS_REMOUNT 0x0020 + +/* + * SystemV IPC defines + */ +#define LINUX_IPC_RMID 0 +#define LINUX_IPC_SET 1 +#define LINUX_IPC_STAT 2 +#define LINUX_IPC_INFO 3 + +#define LINUX_SHM_LOCK 11 +#define LINUX_SHM_UNLOCK 12 +#define LINUX_SHM_STAT 13 +#define LINUX_SHM_INFO 14 + +#define LINUX_SHM_RDONLY 0x1000 +#define LINUX_SHM_RND 0x2000 +#define LINUX_SHM_REMAP 0x4000 + +/* semctl commands */ +#define LINUX_GETPID 11 +#define LINUX_GETVAL 12 +#define LINUX_GETALL 13 +#define LINUX_GETNCNT 14 +#define LINUX_GETZCNT 15 +#define LINUX_SETVAL 16 +#define LINUX_SETALL 17 +#define LINUX_SEM_STAT 18 +#define LINUX_SEM_INFO 19 + +union l_semun { + l_int val; + l_uintptr_t buf; + l_uintptr_t array; + l_uintptr_t __buf; + l_uintptr_t __pad; +}; + +struct l_ipc_perm { + l_key_t key; + l_uid_t uid; + l_gid_t gid; + l_uid_t cuid; + l_gid_t cgid; + l_ushort mode; + l_ushort seq; +}; + +/* + * Socket defines + */ + +#define LINUX_SOL_SOCKET 1 +#define LINUX_SOL_IP 0 +#define LINUX_SOL_IPX 256 +#define LINUX_SOL_AX25 257 +#define LINUX_SOL_TCP 6 +#define LINUX_SOL_UDP 17 + +#define LINUX_SO_DEBUG 1 +#define LINUX_SO_REUSEADDR 2 +#define LINUX_SO_TYPE 3 +#define LINUX_SO_ERROR 4 +#define LINUX_SO_DONTROUTE 5 +#define LINUX_SO_BROADCAST 6 +#define LINUX_SO_SNDBUF 7 +#define LINUX_SO_RCVBUF 8 +#define LINUX_SO_KEEPALIVE 9 +#define LINUX_SO_OOBINLINE 10 +#define LINUX_SO_NO_CHECK 11 +#define LINUX_SO_PRIORITY 12 +#define LINUX_SO_LINGER 13 +#define LINUX_SO_PASSCRED 16 +#define LINUX_SO_PEERCRED 17 +#define LINUX_SO_RCVLOWAT 18 +#define LINUX_SO_SNDLOWAT 19 +#define LINUX_SO_RCVTIMEO 20 +#define LINUX_SO_SNDTIMEO 21 +#define LINUX_SO_TIMESTAMP 29 +#define LINUX_SO_ACCEPTCONN 30 + +#define LINUX_IP_TOS 1 +#define LINUX_IP_TTL 2 +#define LINUX_IP_HDRINCL 3 +#define LINUX_IP_OPTIONS 4 + +#define LINUX_IP_MULTICAST_IF 32 +#define LINUX_IP_MULTICAST_TTL 33 +#define LINUX_IP_MULTICAST_LOOP 34 +#define LINUX_IP_ADD_MEMBERSHIP 35 +#define LINUX_IP_DROP_MEMBERSHIP 36 + +struct l_sockaddr { + l_ushort sa_family; + char sa_data[14]; +}; + +struct l_msghdr { + l_uintptr_t msg_name; + l_int msg_namelen; + l_uintptr_t msg_iov; + l_size_t msg_iovlen; + l_uintptr_t msg_control; + l_size_t msg_controllen; + l_uint msg_flags; +}; + +struct l_cmsghdr { + l_size_t cmsg_len; + l_int cmsg_level; + l_int cmsg_type; +}; + +struct l_ifmap { + l_ulong mem_start; + l_ulong mem_end; + l_ushort base_addr; + u_char irq; + u_char dma; + u_char port; +} __packed; + +#define LINUX_IFHWADDRLEN 6 +#define LINUX_IFNAMSIZ 16 + +struct l_ifreq { + union { + char ifrn_name[LINUX_IFNAMSIZ]; + } ifr_ifrn; + + union { + struct l_sockaddr ifru_addr; + struct l_sockaddr ifru_dstaddr; + struct l_sockaddr ifru_broadaddr; + struct l_sockaddr ifru_netmask; + struct l_sockaddr ifru_hwaddr; + l_short ifru_flags[1]; + l_int ifru_metric; + l_int ifru_mtu; + struct l_ifmap ifru_map; + char ifru_slave[LINUX_IFNAMSIZ]; + l_uintptr_t ifru_data; + } ifr_ifru; +} __packed; + +#define ifr_name ifr_ifrn.ifrn_name /* Interface name */ +#define ifr_hwaddr ifr_ifru.ifru_hwaddr /* MAC address */ + +struct l_ifconf { + int ifc_len; + union { + l_uintptr_t ifcu_buf; + l_uintptr_t ifcu_req; + } ifc_ifcu; +}; + +#define ifc_buf ifc_ifcu.ifcu_buf +#define ifc_req ifc_ifcu.ifcu_req + +/* + * poll() + */ +#define LINUX_POLLIN 0x0001 +#define LINUX_POLLPRI 0x0002 +#define LINUX_POLLOUT 0x0004 +#define LINUX_POLLERR 0x0008 +#define LINUX_POLLHUP 0x0010 +#define LINUX_POLLNVAL 0x0020 +#define LINUX_POLLRDNORM 0x0040 +#define LINUX_POLLRDBAND 0x0080 +#define LINUX_POLLWRNORM 0x0100 +#define LINUX_POLLWRBAND 0x0200 +#define LINUX_POLLMSG 0x0400 + +struct l_pollfd { + l_int fd; + l_short events; + l_short revents; +}; + + +#define LINUX_CLONE_VM 0x00000100 +#define LINUX_CLONE_FS 0x00000200 +#define LINUX_CLONE_FILES 0x00000400 +#define LINUX_CLONE_SIGHAND 0x00000800 +#define LINUX_CLONE_PID 0x00001000 /* No longer exist in Linux */ +#define LINUX_CLONE_VFORK 0x00004000 +#define LINUX_CLONE_PARENT 0x00008000 +#define LINUX_CLONE_THREAD 0x00010000 +#define LINUX_CLONE_SETTLS 0x00080000 +#define LINUX_CLONE_PARENT_SETTID 0x00100000 +#define LINUX_CLONE_CHILD_CLEARTID 0x00200000 +#define LINUX_CLONE_CHILD_SETTID 0x01000000 + +#define LINUX_ARCH_SET_GS 0x1001 +#define LINUX_ARCH_SET_FS 0x1002 +#define LINUX_ARCH_GET_GS 0x1003 +#define LINUX_ARCH_GET_FS 0x1004 + +#define linux_copyout_rusage(r, u) copyout(r, u, sizeof(*r)) + +/* robust futexes */ +struct linux_robust_list { + l_uintptr_t next; +}; + +struct linux_robust_list_head { + struct linux_robust_list list; + l_long futex_offset; + l_uintptr_t pending_list; +}; + +#endif /* !_AMD64_LINUX_H_ */ Added: head/sys/amd64/linux/linux_dummy.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/amd64/linux/linux_dummy.c Sun May 24 16:07:11 2015 (r283424) @@ -0,0 +1,154 @@ +/*- + * Copyright (c) 2013 Dmitry Chagin + * 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 + * in this position and unchanged. + * 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 ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_compat.h" +#include "opt_kdtrace.h" + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +/* DTrace init */ +LIN_SDT_PROVIDER_DECLARE(LINUX_DTRACE); + +DUMMY(mincore); +DUMMY(sendfile); +DUMMY(ptrace); +DUMMY(syslog); +DUMMY(setfsuid); +DUMMY(setfsgid); +DUMMY(sysfs); +DUMMY(vhangup); +DUMMY(pivot_root); +DUMMY(adjtimex); +DUMMY(swapoff); +DUMMY(create_module); +DUMMY(init_module); +DUMMY(delete_module); +DUMMY(get_kernel_syms); +DUMMY(query_module); +DUMMY(quotactl); +DUMMY(nfsservctl); +DUMMY(getpmsg); +DUMMY(putpmsg); +DUMMY(afs_syscall); +DUMMY(tuxcall); +DUMMY(security); +DUMMY(set_thread_area); +DUMMY(lookup_dcookie); +DUMMY(epoll_create); +DUMMY(epoll_ctl_old); +DUMMY(epoll_wait_old); +DUMMY(remap_file_pages); +DUMMY(semtimedop); +DUMMY(epoll_ctl); +DUMMY(epoll_wait); +DUMMY(mbind); +DUMMY(get_mempolicy); +DUMMY(set_mempolicy); +DUMMY(mq_open); +DUMMY(mq_unlink); +DUMMY(mq_timedsend); +DUMMY(mq_timedreceive); +DUMMY(mq_notify); +DUMMY(mq_getsetattr); +DUMMY(kexec_load); +DUMMY(add_key); +DUMMY(request_key); +DUMMY(keyctl); +DUMMY(ioprio_set); +DUMMY(ioprio_get); +DUMMY(inotify_init); +DUMMY(inotify_add_watch); +DUMMY(inotify_rm_watch); +DUMMY(migrate_pages); +DUMMY(ppoll); +DUMMY(unshare); +DUMMY(splice); +DUMMY(tee); +DUMMY(sync_file_range); +DUMMY(vmsplice); +DUMMY(move_pages); +DUMMY(utimensat); +DUMMY(epoll_pwait); +DUMMY(signalfd); +DUMMY(timerfd); +DUMMY(eventfd); +DUMMY(fallocate); +DUMMY(timerfd_settime); +DUMMY(timerfd_gettime); +DUMMY(signalfd4); +DUMMY(eventfd2); +DUMMY(epoll_create1); +DUMMY(inotify_init1); +DUMMY(preadv); +DUMMY(pwritev); +DUMMY(rt_tsigqueueinfo); +DUMMY(perf_event_open); +DUMMY(recvmmsg); +DUMMY(fanotify_init); +DUMMY(fanotify_mark); +DUMMY(name_to_handle_at); +DUMMY(open_by_handle_at); +DUMMY(clock_adjtime); +DUMMY(syncfs); +DUMMY(sendmmsg); +DUMMY(setns); +DUMMY(process_vm_readv); +DUMMY(process_vm_writev); +DUMMY(kcmp); +DUMMY(finit_module); + +#define DUMMY_XATTR(s) \ +int \ +linux_ ## s ## xattr( \ + struct thread *td, struct linux_ ## s ## xattr_args *arg) \ +{ \ + \ + return (ENOATTR); \ +} +DUMMY_XATTR(set); +DUMMY_XATTR(lset); +DUMMY_XATTR(fset); +DUMMY_XATTR(get); +DUMMY_XATTR(lget); +DUMMY_XATTR(fget); +DUMMY_XATTR(list); +DUMMY_XATTR(llist); +DUMMY_XATTR(flist); +DUMMY_XATTR(remove); +DUMMY_XATTR(lremove); +DUMMY_XATTR(fremove); Added: head/sys/amd64/linux/linux_genassym.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/amd64/linux/linux_genassym.c Sun May 24 16:07:11 2015 (r283424) @@ -0,0 +1,15 @@ +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include + +#include +#include + +ASSYM(LINUX_RT_SIGF_HANDLER, offsetof(struct l_rt_sigframe, sf_handler)); +ASSYM(LINUX_RT_SIGF_UC, offsetof(struct l_rt_sigframe, sf_sc)); +ASSYM(LINUX_RT_SIGF_SC, offsetof(struct l_ucontext, uc_mcontext)); +ASSYM(LINUX_VERSION_CODE, LINUX_VERSION_CODE); +ASSYM(LINUX_SC_RSP, offsetof(struct l_sigcontext, sc_rsp)); Added: head/sys/amd64/linux/linux_ipc64.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/amd64/linux/linux_ipc64.h Sun May 24 16:07:11 2015 (r283424) @@ -0,0 +1,142 @@ +/*- + * Copyright (c) 2002 Maxim Sobolev + * 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 + * in this position and unchanged. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _AMD64_LINUX_LINUX_IPC64_H_ +#define _AMD64_LINUX_LINUX_IPC64_H_ + +/* + * The ipc64_perm structure for i386 architecture. + * Note extra padding because this structure is passed back and forth + * between kernel and user space. + * + * Pad space is left for: + * - 32-bit mode_t and seq + * - 2 miscellaneous 32-bit values + */ + +struct l_ipc64_perm +{ + l_key_t key; + l_uid_t uid; + l_gid_t gid; + l_uid_t cuid; + l_gid_t cgid; + l_mode_t mode; + l_ushort __pad1; + l_ushort seq; + l_ushort __pad2; + l_ulong __unused1; + l_ulong __unused2; +}; + +/* + * The msqid64_ds structure for i386 architecture. + * Note extra padding because this structure is passed back and forth + * between kernel and user space. + * + * Pad space is left for: + * - 64-bit time_t to solve y2038 problem + * - 2 miscellaneous 32-bit values + */ + +struct l_msqid64_ds { + struct l_ipc64_perm msg_perm; + l_time_t msg_stime; /* last msgsnd time */ + l_ulong __unused1; + l_time_t msg_rtime; /* last msgrcv time */ + l_ulong __unused2; + l_time_t msg_ctime; /* last change time */ + l_ulong __unused3; + l_ulong msg_cbytes; /* current number of bytes on queue */ + l_ulong msg_qnum; /* number of messages in queue */ + l_ulong msg_qbytes; /* max number of bytes on queue */ + l_pid_t msg_lspid; /* pid of last msgsnd */ + l_pid_t msg_lrpid; /* last receive pid */ + l_ulong __unused4; + l_ulong __unused5; +}; + +/* + * The semid64_ds structure for i386 architecture. + * Note extra padding because this structure is passed back and forth + * between kernel and user space. + * + * Pad space is left for: + * - 64-bit time_t to solve y2038 problem + * - 2 miscellaneous 32-bit values + */ + +struct l_semid64_ds { + struct l_ipc64_perm sem_perm; /* permissions */ + l_time_t sem_otime; /* last semop time */ + l_ulong __unused1; + l_time_t sem_ctime; /* last change time */ + l_ulong __unused2; + l_ulong sem_nsems; /* no. of semaphores in array */ + l_ulong __unused3; + l_ulong __unused4; +}; + +/* + * The shmid64_ds structure for i386 architecture. + * Note extra padding because this structure is passed back and forth + * between kernel and user space. + * + * Pad space is left for: + * - 64-bit time_t to solve y2038 problem + * - 2 miscellaneous 32-bit values + */ + +struct l_shmid64_ds { + struct l_ipc64_perm shm_perm; /* operation perms */ + l_size_t shm_segsz; /* size of segment (bytes) */ + l_time_t shm_atime; /* last attach time */ + l_time_t shm_dtime; /* last detach time */ + l_time_t shm_ctime; /* last change time */ + l_pid_t shm_cpid; /* pid of creator */ + l_pid_t shm_lpid; /* pid of last operator */ + l_ulong shm_nattch; /* no. of current attaches */ + l_ulong __unused4; + l_ulong __unused5; +}; + +struct l_shminfo64 { + l_ulong shmmax; + l_ulong shmmin; + l_ulong shmmni; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:11:22 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0DB77A7; Sun, 24 May 2015 16:11:22 +0000 (UTC) Received: from svn.freebsd.org (svn.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 EF63111C1; Sun, 24 May 2015 16:11:21 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OGBLQI077515; Sun, 24 May 2015 16:11:21 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OGBLBd077513; Sun, 24 May 2015 16:11:21 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241611.t4OGBLBd077513@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:11:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283425 - head/sys/amd64/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:11:22 -0000 Author: dchagin Date: Sun May 24 16:11:21 2015 New Revision: 283425 URL: https://svnweb.freebsd.org/changeset/base/283425 Log: Regen for r283424. Added: head/sys/amd64/linux/linux_proto.h (contents, props changed) head/sys/amd64/linux/linux_syscall.h (contents, props changed) head/sys/amd64/linux/linux_syscalls.c (contents, props changed) head/sys/amd64/linux/linux_sysent.c (contents, props changed) head/sys/amd64/linux/linux_systrace_args.c (contents, props changed) Added: head/sys/amd64/linux/linux_proto.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/amd64/linux/linux_proto.h Sun May 24 16:11:21 2015 (r283425) @@ -0,0 +1,1636 @@ +/* + * System call prototypes. + * + * DO NOT EDIT-- this file is automatically generated. + * $FreeBSD$ + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283424 2015-05-24 16:07:11Z dchagin + */ + +#ifndef _LINUX_SYSPROTO_H_ +#define _LINUX_SYSPROTO_H_ + +#include +#include +#include +#include +#include +#include +#include + +#include + +struct proc; + +struct thread; + +#define PAD_(t) (sizeof(register_t) <= sizeof(t) ? \ + 0 : sizeof(register_t) - sizeof(t)) + +#if BYTE_ORDER == LITTLE_ENDIAN +#define PADL_(t) 0 +#define PADR_(t) PAD_(t) +#else +#define PADL_(t) PAD_(t) +#define PADR_(t) 0 +#endif + +#define nosys linux_nosys +struct linux_open_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)]; + char mode_l_[PADL_(l_int)]; l_int mode; char mode_r_[PADR_(l_int)]; +}; +struct linux_newstat_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char buf_l_[PADL_(struct l_newstat *)]; struct l_newstat * buf; char buf_r_[PADR_(struct l_newstat *)]; +}; +struct linux_newfstat_args { + char fd_l_[PADL_(l_uint)]; l_uint fd; char fd_r_[PADR_(l_uint)]; + char buf_l_[PADL_(struct l_newstat *)]; struct l_newstat * buf; char buf_r_[PADR_(struct l_newstat *)]; +}; +struct linux_newlstat_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char buf_l_[PADL_(struct l_newstat *)]; struct l_newstat * buf; char buf_r_[PADR_(struct l_newstat *)]; +}; +struct linux_lseek_args { + char fdes_l_[PADL_(l_uint)]; l_uint fdes; char fdes_r_[PADR_(l_uint)]; + char off_l_[PADL_(l_off_t)]; l_off_t off; char off_r_[PADR_(l_off_t)]; + char whence_l_[PADL_(l_int)]; l_int whence; char whence_r_[PADR_(l_int)]; +}; +struct linux_mmap2_args { + char addr_l_[PADL_(l_ulong)]; l_ulong addr; char addr_r_[PADR_(l_ulong)]; + char len_l_[PADL_(l_ulong)]; l_ulong len; char len_r_[PADR_(l_ulong)]; + char prot_l_[PADL_(l_ulong)]; l_ulong prot; char prot_r_[PADR_(l_ulong)]; + char flags_l_[PADL_(l_ulong)]; l_ulong flags; char flags_r_[PADR_(l_ulong)]; + char fd_l_[PADL_(l_ulong)]; l_ulong fd; char fd_r_[PADR_(l_ulong)]; + char pgoff_l_[PADL_(l_ulong)]; l_ulong pgoff; char pgoff_r_[PADR_(l_ulong)]; +}; +struct linux_mprotect_args { + char addr_l_[PADL_(caddr_t)]; caddr_t addr; char addr_r_[PADR_(caddr_t)]; + char len_l_[PADL_(int)]; int len; char len_r_[PADR_(int)]; + char prot_l_[PADL_(int)]; int prot; char prot_r_[PADR_(int)]; +}; +struct linux_brk_args { + char dsend_l_[PADL_(l_ulong)]; l_ulong dsend; char dsend_r_[PADR_(l_ulong)]; +}; +struct linux_rt_sigaction_args { + char sig_l_[PADL_(l_int)]; l_int sig; char sig_r_[PADR_(l_int)]; + char act_l_[PADL_(l_sigaction_t *)]; l_sigaction_t * act; char act_r_[PADR_(l_sigaction_t *)]; + char oact_l_[PADL_(l_sigaction_t *)]; l_sigaction_t * oact; char oact_r_[PADR_(l_sigaction_t *)]; + char sigsetsize_l_[PADL_(l_size_t)]; l_size_t sigsetsize; char sigsetsize_r_[PADR_(l_size_t)]; +}; +struct linux_rt_sigprocmask_args { + char how_l_[PADL_(l_int)]; l_int how; char how_r_[PADR_(l_int)]; + char mask_l_[PADL_(l_sigset_t *)]; l_sigset_t * mask; char mask_r_[PADR_(l_sigset_t *)]; + char omask_l_[PADL_(l_sigset_t *)]; l_sigset_t * omask; char omask_r_[PADR_(l_sigset_t *)]; + char sigsetsize_l_[PADL_(l_size_t)]; l_size_t sigsetsize; char sigsetsize_r_[PADR_(l_size_t)]; +}; +struct linux_rt_sigreturn_args { + char ucp_l_[PADL_(struct l_ucontext *)]; struct l_ucontext * ucp; char ucp_r_[PADR_(struct l_ucontext *)]; +}; +struct linux_ioctl_args { + char fd_l_[PADL_(l_uint)]; l_uint fd; char fd_r_[PADR_(l_uint)]; + char cmd_l_[PADL_(l_uint)]; l_uint cmd; char cmd_r_[PADR_(l_uint)]; + char arg_l_[PADL_(uintptr_t)]; uintptr_t arg; char arg_r_[PADR_(uintptr_t)]; +}; +struct linux_pread_args { + char fd_l_[PADL_(l_uint)]; l_uint fd; char fd_r_[PADR_(l_uint)]; + char buf_l_[PADL_(char *)]; char * buf; char buf_r_[PADR_(char *)]; + char nbyte_l_[PADL_(l_size_t)]; l_size_t nbyte; char nbyte_r_[PADR_(l_size_t)]; + char offset_l_[PADL_(l_loff_t)]; l_loff_t offset; char offset_r_[PADR_(l_loff_t)]; +}; +struct linux_pwrite_args { + char fd_l_[PADL_(l_uint)]; l_uint fd; char fd_r_[PADR_(l_uint)]; + char buf_l_[PADL_(char *)]; char * buf; char buf_r_[PADR_(char *)]; + char nbyte_l_[PADL_(l_size_t)]; l_size_t nbyte; char nbyte_r_[PADR_(l_size_t)]; + char offset_l_[PADL_(l_loff_t)]; l_loff_t offset; char offset_r_[PADR_(l_loff_t)]; +}; +struct linux_access_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char amode_l_[PADL_(l_int)]; l_int amode; char amode_r_[PADR_(l_int)]; +}; +struct linux_pipe_args { + char pipefds_l_[PADL_(l_ulong *)]; l_ulong * pipefds; char pipefds_r_[PADR_(l_ulong *)]; +}; +struct linux_select_args { + char nfds_l_[PADL_(l_int)]; l_int nfds; char nfds_r_[PADR_(l_int)]; + char readfds_l_[PADL_(l_fd_set *)]; l_fd_set * readfds; char readfds_r_[PADR_(l_fd_set *)]; + char writefds_l_[PADL_(l_fd_set *)]; l_fd_set * writefds; char writefds_r_[PADR_(l_fd_set *)]; + char exceptfds_l_[PADL_(l_fd_set *)]; l_fd_set * exceptfds; char exceptfds_r_[PADR_(l_fd_set *)]; + char timeout_l_[PADL_(struct l_timeval *)]; struct l_timeval * timeout; char timeout_r_[PADR_(struct l_timeval *)]; +}; +struct linux_mremap_args { + char addr_l_[PADL_(l_ulong)]; l_ulong addr; char addr_r_[PADR_(l_ulong)]; + char old_len_l_[PADL_(l_ulong)]; l_ulong old_len; char old_len_r_[PADR_(l_ulong)]; + char new_len_l_[PADL_(l_ulong)]; l_ulong new_len; char new_len_r_[PADR_(l_ulong)]; + char flags_l_[PADL_(l_ulong)]; l_ulong flags; char flags_r_[PADR_(l_ulong)]; + char new_addr_l_[PADL_(l_ulong)]; l_ulong new_addr; char new_addr_r_[PADR_(l_ulong)]; +}; +struct linux_msync_args { + char addr_l_[PADL_(l_ulong)]; l_ulong addr; char addr_r_[PADR_(l_ulong)]; + char len_l_[PADL_(l_size_t)]; l_size_t len; char len_r_[PADR_(l_size_t)]; + char fl_l_[PADL_(l_int)]; l_int fl; char fl_r_[PADR_(l_int)]; +}; +struct linux_mincore_args { + char start_l_[PADL_(l_ulong)]; l_ulong start; char start_r_[PADR_(l_ulong)]; + char len_l_[PADL_(l_size_t)]; l_size_t len; char len_r_[PADR_(l_size_t)]; + char vec_l_[PADL_(u_char *)]; u_char * vec; char vec_r_[PADR_(u_char *)]; +}; +struct linux_shmget_args { + char key_l_[PADL_(l_key_t)]; l_key_t key; char key_r_[PADR_(l_key_t)]; + char size_l_[PADL_(l_size_t)]; l_size_t size; char size_r_[PADR_(l_size_t)]; + char shmflg_l_[PADL_(l_int)]; l_int shmflg; char shmflg_r_[PADR_(l_int)]; +}; +struct linux_shmat_args { + char shmid_l_[PADL_(l_int)]; l_int shmid; char shmid_r_[PADR_(l_int)]; + char shmaddr_l_[PADL_(char *)]; char * shmaddr; char shmaddr_r_[PADR_(char *)]; + char shmflg_l_[PADL_(l_int)]; l_int shmflg; char shmflg_r_[PADR_(l_int)]; +}; +struct linux_shmctl_args { + char shmid_l_[PADL_(l_int)]; l_int shmid; char shmid_r_[PADR_(l_int)]; + char cmd_l_[PADL_(l_int)]; l_int cmd; char cmd_r_[PADR_(l_int)]; + char buf_l_[PADL_(struct l_shmid_ds *)]; struct l_shmid_ds * buf; char buf_r_[PADR_(struct l_shmid_ds *)]; +}; +struct linux_pause_args { + register_t dummy; +}; +struct linux_nanosleep_args { + char rqtp_l_[PADL_(const struct l_timespec *)]; const struct l_timespec * rqtp; char rqtp_r_[PADR_(const struct l_timespec *)]; + char rmtp_l_[PADL_(struct l_timespec *)]; struct l_timespec * rmtp; char rmtp_r_[PADR_(struct l_timespec *)]; +}; +struct linux_getitimer_args { + char which_l_[PADL_(l_int)]; l_int which; char which_r_[PADR_(l_int)]; + char itv_l_[PADL_(struct l_itimerval *)]; struct l_itimerval * itv; char itv_r_[PADR_(struct l_itimerval *)]; +}; +struct linux_alarm_args { + char secs_l_[PADL_(l_uint)]; l_uint secs; char secs_r_[PADR_(l_uint)]; +}; +struct linux_setitimer_args { + char which_l_[PADL_(l_int)]; l_int which; char which_r_[PADR_(l_int)]; + char itv_l_[PADL_(struct l_itimerval *)]; struct l_itimerval * itv; char itv_r_[PADR_(struct l_itimerval *)]; + char oitv_l_[PADL_(struct l_itimerval *)]; struct l_itimerval * oitv; char oitv_r_[PADR_(struct l_itimerval *)]; +}; +struct linux_getpid_args { + register_t dummy; +}; +struct linux_sendfile_args { + char out_l_[PADL_(int)]; int out; char out_r_[PADR_(int)]; + char in_l_[PADL_(int)]; int in; char in_r_[PADR_(int)]; + char offset_l_[PADL_(l_long *)]; l_long * offset; char offset_r_[PADR_(l_long *)]; + char count_l_[PADL_(l_size_t)]; l_size_t count; char count_r_[PADR_(l_size_t)]; +}; +struct linux_socket_args { + char domain_l_[PADL_(l_int)]; l_int domain; char domain_r_[PADR_(l_int)]; + char type_l_[PADL_(l_int)]; l_int type; char type_r_[PADR_(l_int)]; + char protocol_l_[PADL_(l_int)]; l_int protocol; char protocol_r_[PADR_(l_int)]; +}; +struct linux_connect_args { + char s_l_[PADL_(l_int)]; l_int s; char s_r_[PADR_(l_int)]; + char name_l_[PADL_(l_uintptr_t)]; l_uintptr_t name; char name_r_[PADR_(l_uintptr_t)]; + char namelen_l_[PADL_(l_int)]; l_int namelen; char namelen_r_[PADR_(l_int)]; +}; +struct linux_accept_args { + char s_l_[PADL_(l_int)]; l_int s; char s_r_[PADR_(l_int)]; + char addr_l_[PADL_(l_uintptr_t)]; l_uintptr_t addr; char addr_r_[PADR_(l_uintptr_t)]; + char namelen_l_[PADL_(l_uintptr_t)]; l_uintptr_t namelen; char namelen_r_[PADR_(l_uintptr_t)]; +}; +struct linux_sendto_args { + char s_l_[PADL_(l_int)]; l_int s; char s_r_[PADR_(l_int)]; + char msg_l_[PADL_(l_uintptr_t)]; l_uintptr_t msg; char msg_r_[PADR_(l_uintptr_t)]; + char len_l_[PADL_(l_int)]; l_int len; char len_r_[PADR_(l_int)]; + char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)]; + char to_l_[PADL_(l_uintptr_t)]; l_uintptr_t to; char to_r_[PADR_(l_uintptr_t)]; + char tolen_l_[PADL_(l_int)]; l_int tolen; char tolen_r_[PADR_(l_int)]; +}; +struct linux_recvfrom_args { + char s_l_[PADL_(l_int)]; l_int s; char s_r_[PADR_(l_int)]; + char buf_l_[PADL_(l_uintptr_t)]; l_uintptr_t buf; char buf_r_[PADR_(l_uintptr_t)]; + char len_l_[PADL_(l_size_t)]; l_size_t len; char len_r_[PADR_(l_size_t)]; + char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)]; + char from_l_[PADL_(l_uintptr_t)]; l_uintptr_t from; char from_r_[PADR_(l_uintptr_t)]; + char fromlen_l_[PADL_(l_uintptr_t)]; l_uintptr_t fromlen; char fromlen_r_[PADR_(l_uintptr_t)]; +}; +struct linux_sendmsg_args { + char s_l_[PADL_(l_int)]; l_int s; char s_r_[PADR_(l_int)]; + char msg_l_[PADL_(l_uintptr_t)]; l_uintptr_t msg; char msg_r_[PADR_(l_uintptr_t)]; + char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)]; +}; +struct linux_recvmsg_args { + char s_l_[PADL_(l_int)]; l_int s; char s_r_[PADR_(l_int)]; + char msg_l_[PADL_(l_uintptr_t)]; l_uintptr_t msg; char msg_r_[PADR_(l_uintptr_t)]; + char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)]; +}; +struct linux_shutdown_args { + char s_l_[PADL_(l_int)]; l_int s; char s_r_[PADR_(l_int)]; + char how_l_[PADL_(l_int)]; l_int how; char how_r_[PADR_(l_int)]; +}; +struct linux_bind_args { + char s_l_[PADL_(l_int)]; l_int s; char s_r_[PADR_(l_int)]; + char name_l_[PADL_(l_uintptr_t)]; l_uintptr_t name; char name_r_[PADR_(l_uintptr_t)]; + char namelen_l_[PADL_(l_int)]; l_int namelen; char namelen_r_[PADR_(l_int)]; +}; +struct linux_listen_args { + char s_l_[PADL_(l_int)]; l_int s; char s_r_[PADR_(l_int)]; + char backlog_l_[PADL_(l_int)]; l_int backlog; char backlog_r_[PADR_(l_int)]; +}; +struct linux_getsockname_args { + char s_l_[PADL_(l_int)]; l_int s; char s_r_[PADR_(l_int)]; + char addr_l_[PADL_(l_uintptr_t)]; l_uintptr_t addr; char addr_r_[PADR_(l_uintptr_t)]; + char namelen_l_[PADL_(l_uintptr_t)]; l_uintptr_t namelen; char namelen_r_[PADR_(l_uintptr_t)]; +}; +struct linux_getpeername_args { + char s_l_[PADL_(l_int)]; l_int s; char s_r_[PADR_(l_int)]; + char addr_l_[PADL_(l_uintptr_t)]; l_uintptr_t addr; char addr_r_[PADR_(l_uintptr_t)]; + char namelen_l_[PADL_(l_uintptr_t)]; l_uintptr_t namelen; char namelen_r_[PADR_(l_uintptr_t)]; +}; +struct linux_socketpair_args { + char domain_l_[PADL_(l_int)]; l_int domain; char domain_r_[PADR_(l_int)]; + char type_l_[PADL_(l_int)]; l_int type; char type_r_[PADR_(l_int)]; + char protocol_l_[PADL_(l_int)]; l_int protocol; char protocol_r_[PADR_(l_int)]; + char rsv_l_[PADL_(l_uintptr_t)]; l_uintptr_t rsv; char rsv_r_[PADR_(l_uintptr_t)]; +}; +struct linux_setsockopt_args { + char s_l_[PADL_(l_int)]; l_int s; char s_r_[PADR_(l_int)]; + char level_l_[PADL_(l_int)]; l_int level; char level_r_[PADR_(l_int)]; + char optname_l_[PADL_(l_int)]; l_int optname; char optname_r_[PADR_(l_int)]; + char optval_l_[PADL_(l_uintptr_t)]; l_uintptr_t optval; char optval_r_[PADR_(l_uintptr_t)]; + char optlen_l_[PADL_(l_int)]; l_int optlen; char optlen_r_[PADR_(l_int)]; +}; +struct linux_getsockopt_args { + char s_l_[PADL_(l_int)]; l_int s; char s_r_[PADR_(l_int)]; + char level_l_[PADL_(l_int)]; l_int level; char level_r_[PADR_(l_int)]; + char optname_l_[PADL_(l_int)]; l_int optname; char optname_r_[PADR_(l_int)]; + char optval_l_[PADL_(l_uintptr_t)]; l_uintptr_t optval; char optval_r_[PADR_(l_uintptr_t)]; + char optlen_l_[PADL_(l_uintptr_t)]; l_uintptr_t optlen; char optlen_r_[PADR_(l_uintptr_t)]; +}; +struct linux_clone_args { + char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)]; + char stack_l_[PADL_(void *)]; void * stack; char stack_r_[PADR_(void *)]; + char parent_tidptr_l_[PADL_(void *)]; void * parent_tidptr; char parent_tidptr_r_[PADR_(void *)]; + char child_tidptr_l_[PADL_(void *)]; void * child_tidptr; char child_tidptr_r_[PADR_(void *)]; + char tls_l_[PADL_(void *)]; void * tls; char tls_r_[PADR_(void *)]; +}; +struct linux_fork_args { + register_t dummy; +}; +struct linux_vfork_args { + register_t dummy; +}; +struct linux_execve_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char argp_l_[PADL_(char **)]; char ** argp; char argp_r_[PADR_(char **)]; + char envp_l_[PADL_(char **)]; char ** envp; char envp_r_[PADR_(char **)]; +}; +struct linux_exit_args { + char rval_l_[PADL_(int)]; int rval; char rval_r_[PADR_(int)]; +}; +struct linux_wait4_args { + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; + char status_l_[PADL_(l_int *)]; l_int * status; char status_r_[PADR_(l_int *)]; + char options_l_[PADL_(l_int)]; l_int options; char options_r_[PADR_(l_int)]; + char rusage_l_[PADL_(struct rusage *)]; struct rusage * rusage; char rusage_r_[PADR_(struct rusage *)]; +}; +struct linux_kill_args { + char pid_l_[PADL_(l_int)]; l_int pid; char pid_r_[PADR_(l_int)]; + char signum_l_[PADL_(l_int)]; l_int signum; char signum_r_[PADR_(l_int)]; +}; +struct linux_newuname_args { + char buf_l_[PADL_(struct l_new_utsname *)]; struct l_new_utsname * buf; char buf_r_[PADR_(struct l_new_utsname *)]; +}; +struct linux_semget_args { + char key_l_[PADL_(l_key_t)]; l_key_t key; char key_r_[PADR_(l_key_t)]; + char nsems_l_[PADL_(l_int)]; l_int nsems; char nsems_r_[PADR_(l_int)]; + char semflg_l_[PADL_(l_int)]; l_int semflg; char semflg_r_[PADR_(l_int)]; +}; +struct linux_semop_args { + char semid_l_[PADL_(l_int)]; l_int semid; char semid_r_[PADR_(l_int)]; + char tsops_l_[PADL_(struct l_sembuf *)]; struct l_sembuf * tsops; char tsops_r_[PADR_(struct l_sembuf *)]; + char nsops_l_[PADL_(l_uint)]; l_uint nsops; char nsops_r_[PADR_(l_uint)]; +}; +struct linux_semctl_args { + char semid_l_[PADL_(l_int)]; l_int semid; char semid_r_[PADR_(l_int)]; + char semnum_l_[PADL_(l_int)]; l_int semnum; char semnum_r_[PADR_(l_int)]; + char cmd_l_[PADL_(l_int)]; l_int cmd; char cmd_r_[PADR_(l_int)]; + char arg_l_[PADL_(union l_semun)]; union l_semun arg; char arg_r_[PADR_(union l_semun)]; +}; +struct linux_shmdt_args { + char shmaddr_l_[PADL_(char *)]; char * shmaddr; char shmaddr_r_[PADR_(char *)]; +}; +struct linux_msgget_args { + char key_l_[PADL_(l_key_t)]; l_key_t key; char key_r_[PADR_(l_key_t)]; + char msgflg_l_[PADL_(l_int)]; l_int msgflg; char msgflg_r_[PADR_(l_int)]; +}; +struct linux_msgsnd_args { + char msqid_l_[PADL_(l_int)]; l_int msqid; char msqid_r_[PADR_(l_int)]; + char msgp_l_[PADL_(struct l_msgbuf *)]; struct l_msgbuf * msgp; char msgp_r_[PADR_(struct l_msgbuf *)]; + char msgsz_l_[PADL_(l_size_t)]; l_size_t msgsz; char msgsz_r_[PADR_(l_size_t)]; + char msgflg_l_[PADL_(l_int)]; l_int msgflg; char msgflg_r_[PADR_(l_int)]; +}; +struct linux_msgrcv_args { + char msqid_l_[PADL_(l_int)]; l_int msqid; char msqid_r_[PADR_(l_int)]; + char msgp_l_[PADL_(struct l_msgbuf *)]; struct l_msgbuf * msgp; char msgp_r_[PADR_(struct l_msgbuf *)]; + char msgsz_l_[PADL_(l_size_t)]; l_size_t msgsz; char msgsz_r_[PADR_(l_size_t)]; + char msgtyp_l_[PADL_(l_long)]; l_long msgtyp; char msgtyp_r_[PADR_(l_long)]; + char msgflg_l_[PADL_(l_int)]; l_int msgflg; char msgflg_r_[PADR_(l_int)]; +}; +struct linux_msgctl_args { + char msqid_l_[PADL_(l_int)]; l_int msqid; char msqid_r_[PADR_(l_int)]; + char cmd_l_[PADL_(l_int)]; l_int cmd; char cmd_r_[PADR_(l_int)]; + char buf_l_[PADL_(struct l_msqid_ds *)]; struct l_msqid_ds * buf; char buf_r_[PADR_(struct l_msqid_ds *)]; +}; +struct linux_fcntl_args { + char fd_l_[PADL_(l_uint)]; l_uint fd; char fd_r_[PADR_(l_uint)]; + char cmd_l_[PADL_(l_uint)]; l_uint cmd; char cmd_r_[PADR_(l_uint)]; + char arg_l_[PADL_(l_ulong)]; l_ulong arg; char arg_r_[PADR_(l_ulong)]; +}; +struct linux_fdatasync_args { + char fd_l_[PADL_(l_uint)]; l_uint fd; char fd_r_[PADR_(l_uint)]; +}; +struct linux_truncate_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char length_l_[PADL_(l_ulong)]; l_ulong length; char length_r_[PADR_(l_ulong)]; +}; +struct linux_ftruncate_args { + char fd_l_[PADL_(l_int)]; l_int fd; char fd_r_[PADR_(l_int)]; + char length_l_[PADL_(l_long)]; l_long length; char length_r_[PADR_(l_long)]; +}; +struct linux_getdents_args { + char fd_l_[PADL_(l_uint)]; l_uint fd; char fd_r_[PADR_(l_uint)]; + char dent_l_[PADL_(void *)]; void * dent; char dent_r_[PADR_(void *)]; + char count_l_[PADL_(l_uint)]; l_uint count; char count_r_[PADR_(l_uint)]; +}; +struct linux_getcwd_args { + char buf_l_[PADL_(char *)]; char * buf; char buf_r_[PADR_(char *)]; + char bufsize_l_[PADL_(l_ulong)]; l_ulong bufsize; char bufsize_r_[PADR_(l_ulong)]; +}; +struct linux_chdir_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; +}; +struct linux_rename_args { + char from_l_[PADL_(char *)]; char * from; char from_r_[PADR_(char *)]; + char to_l_[PADL_(char *)]; char * to; char to_r_[PADR_(char *)]; +}; +struct linux_mkdir_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char mode_l_[PADL_(l_int)]; l_int mode; char mode_r_[PADR_(l_int)]; +}; +struct linux_rmdir_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; +}; +struct linux_creat_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char mode_l_[PADL_(l_int)]; l_int mode; char mode_r_[PADR_(l_int)]; +}; +struct linux_link_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char to_l_[PADL_(char *)]; char * to; char to_r_[PADR_(char *)]; +}; +struct linux_unlink_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; +}; +struct linux_symlink_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char to_l_[PADL_(char *)]; char * to; char to_r_[PADR_(char *)]; +}; +struct linux_readlink_args { + char name_l_[PADL_(char *)]; char * name; char name_r_[PADR_(char *)]; + char buf_l_[PADL_(char *)]; char * buf; char buf_r_[PADR_(char *)]; + char count_l_[PADL_(l_int)]; l_int count; char count_r_[PADR_(l_int)]; +}; +struct linux_chmod_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char mode_l_[PADL_(l_mode_t)]; l_mode_t mode; char mode_r_[PADR_(l_mode_t)]; +}; +struct linux_chown_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char uid_l_[PADL_(l_uid_t)]; l_uid_t uid; char uid_r_[PADR_(l_uid_t)]; + char gid_l_[PADL_(l_gid_t)]; l_gid_t gid; char gid_r_[PADR_(l_gid_t)]; +}; +struct linux_lchown_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char uid_l_[PADL_(l_uid_t)]; l_uid_t uid; char uid_r_[PADR_(l_uid_t)]; + char gid_l_[PADL_(l_gid_t)]; l_gid_t gid; char gid_r_[PADR_(l_gid_t)]; +}; +struct linux_getrlimit_args { + char resource_l_[PADL_(l_uint)]; l_uint resource; char resource_r_[PADR_(l_uint)]; + char rlim_l_[PADL_(struct l_rlimit *)]; struct l_rlimit * rlim; char rlim_r_[PADR_(struct l_rlimit *)]; +}; +struct linux_sysinfo_args { + char info_l_[PADL_(struct l_sysinfo *)]; struct l_sysinfo * info; char info_r_[PADR_(struct l_sysinfo *)]; +}; +struct linux_times_args { + char buf_l_[PADL_(struct l_times_argv *)]; struct l_times_argv * buf; char buf_r_[PADR_(struct l_times_argv *)]; +}; +struct linux_ptrace_args { + char req_l_[PADL_(l_long)]; l_long req; char req_r_[PADR_(l_long)]; + char pid_l_[PADL_(l_long)]; l_long pid; char pid_r_[PADR_(l_long)]; + char addr_l_[PADL_(l_long)]; l_long addr; char addr_r_[PADR_(l_long)]; + char data_l_[PADL_(l_long)]; l_long data; char data_r_[PADR_(l_long)]; +}; +struct linux_getuid_args { + register_t dummy; +}; +struct linux_syslog_args { + char type_l_[PADL_(l_int)]; l_int type; char type_r_[PADR_(l_int)]; + char buf_l_[PADL_(char *)]; char * buf; char buf_r_[PADR_(char *)]; + char len_l_[PADL_(l_int)]; l_int len; char len_r_[PADR_(l_int)]; +}; +struct linux_getgid_args { + register_t dummy; +}; +struct linux_getppid_args { + register_t dummy; +}; +struct linux_getgroups_args { + char gidsetsize_l_[PADL_(l_int)]; l_int gidsetsize; char gidsetsize_r_[PADR_(l_int)]; + char grouplist_l_[PADL_(l_gid_t *)]; l_gid_t * grouplist; char grouplist_r_[PADR_(l_gid_t *)]; +}; +struct linux_setgroups_args { + char gidsetsize_l_[PADL_(l_int)]; l_int gidsetsize; char gidsetsize_r_[PADR_(l_int)]; + char grouplist_l_[PADL_(l_gid_t *)]; l_gid_t * grouplist; char grouplist_r_[PADR_(l_gid_t *)]; +}; +struct linux_setfsuid_args { + char uid_l_[PADL_(l_uid_t)]; l_uid_t uid; char uid_r_[PADR_(l_uid_t)]; +}; +struct linux_setfsgid_args { + char gid_l_[PADL_(l_gid_t)]; l_gid_t gid; char gid_r_[PADR_(l_gid_t)]; +}; +struct linux_getsid_args { + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; +}; +struct linux_capget_args { + char hdrp_l_[PADL_(struct l_user_cap_header *)]; struct l_user_cap_header * hdrp; char hdrp_r_[PADR_(struct l_user_cap_header *)]; + char datap_l_[PADL_(struct l_user_cap_data *)]; struct l_user_cap_data * datap; char datap_r_[PADR_(struct l_user_cap_data *)]; +}; +struct linux_capset_args { + char hdrp_l_[PADL_(struct l_user_cap_header *)]; struct l_user_cap_header * hdrp; char hdrp_r_[PADR_(struct l_user_cap_header *)]; + char datap_l_[PADL_(struct l_user_cap_data *)]; struct l_user_cap_data * datap; char datap_r_[PADR_(struct l_user_cap_data *)]; +}; +struct linux_rt_sigpending_args { + char set_l_[PADL_(l_sigset_t *)]; l_sigset_t * set; char set_r_[PADR_(l_sigset_t *)]; + char sigsetsize_l_[PADL_(l_size_t)]; l_size_t sigsetsize; char sigsetsize_r_[PADR_(l_size_t)]; +}; +struct linux_rt_sigtimedwait_args { + char mask_l_[PADL_(l_sigset_t *)]; l_sigset_t * mask; char mask_r_[PADR_(l_sigset_t *)]; + char ptr_l_[PADL_(l_siginfo_t *)]; l_siginfo_t * ptr; char ptr_r_[PADR_(l_siginfo_t *)]; + char timeout_l_[PADL_(struct l_timeval *)]; struct l_timeval * timeout; char timeout_r_[PADR_(struct l_timeval *)]; + char sigsetsize_l_[PADL_(l_size_t)]; l_size_t sigsetsize; char sigsetsize_r_[PADR_(l_size_t)]; +}; +struct linux_rt_sigqueueinfo_args { + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; + char sig_l_[PADL_(l_int)]; l_int sig; char sig_r_[PADR_(l_int)]; + char info_l_[PADL_(l_siginfo_t *)]; l_siginfo_t * info; char info_r_[PADR_(l_siginfo_t *)]; +}; +struct linux_rt_sigsuspend_args { + char newset_l_[PADL_(l_sigset_t *)]; l_sigset_t * newset; char newset_r_[PADR_(l_sigset_t *)]; + char sigsetsize_l_[PADL_(l_size_t)]; l_size_t sigsetsize; char sigsetsize_r_[PADR_(l_size_t)]; +}; +struct linux_sigaltstack_args { + char uss_l_[PADL_(l_stack_t *)]; l_stack_t * uss; char uss_r_[PADR_(l_stack_t *)]; + char uoss_l_[PADL_(l_stack_t *)]; l_stack_t * uoss; char uoss_r_[PADR_(l_stack_t *)]; +}; +struct linux_utime_args { + char fname_l_[PADL_(char *)]; char * fname; char fname_r_[PADR_(char *)]; + char times_l_[PADL_(struct l_utimbuf *)]; struct l_utimbuf * times; char times_r_[PADR_(struct l_utimbuf *)]; +}; +struct linux_mknod_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char mode_l_[PADL_(l_int)]; l_int mode; char mode_r_[PADR_(l_int)]; + char dev_l_[PADL_(l_dev_t)]; l_dev_t dev; char dev_r_[PADR_(l_dev_t)]; +}; +struct linux_personality_args { + char per_l_[PADL_(l_ulong)]; l_ulong per; char per_r_[PADR_(l_ulong)]; +}; +struct linux_ustat_args { + char dev_l_[PADL_(l_dev_t)]; l_dev_t dev; char dev_r_[PADR_(l_dev_t)]; + char ubuf_l_[PADL_(struct l_ustat *)]; struct l_ustat * ubuf; char ubuf_r_[PADR_(struct l_ustat *)]; +}; +struct linux_statfs_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char buf_l_[PADL_(struct l_statfs_buf *)]; struct l_statfs_buf * buf; char buf_r_[PADR_(struct l_statfs_buf *)]; +}; +struct linux_fstatfs_args { + char fd_l_[PADL_(l_uint)]; l_uint fd; char fd_r_[PADR_(l_uint)]; + char buf_l_[PADL_(struct l_statfs_buf *)]; struct l_statfs_buf * buf; char buf_r_[PADR_(struct l_statfs_buf *)]; +}; +struct linux_sysfs_args { + char option_l_[PADL_(l_int)]; l_int option; char option_r_[PADR_(l_int)]; + char arg1_l_[PADL_(l_ulong)]; l_ulong arg1; char arg1_r_[PADR_(l_ulong)]; + char arg2_l_[PADL_(l_ulong)]; l_ulong arg2; char arg2_r_[PADR_(l_ulong)]; +}; +struct linux_getpriority_args { + char which_l_[PADL_(int)]; int which; char which_r_[PADR_(int)]; + char who_l_[PADL_(int)]; int who; char who_r_[PADR_(int)]; +}; +struct linux_sched_setparam_args { + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; + char param_l_[PADL_(struct l_sched_param *)]; struct l_sched_param * param; char param_r_[PADR_(struct l_sched_param *)]; +}; +struct linux_sched_getparam_args { + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; + char param_l_[PADL_(struct l_sched_param *)]; struct l_sched_param * param; char param_r_[PADR_(struct l_sched_param *)]; +}; +struct linux_sched_setscheduler_args { + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; + char policy_l_[PADL_(l_int)]; l_int policy; char policy_r_[PADR_(l_int)]; + char param_l_[PADL_(struct l_sched_param *)]; struct l_sched_param * param; char param_r_[PADR_(struct l_sched_param *)]; +}; +struct linux_sched_getscheduler_args { + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; +}; +struct linux_sched_get_priority_max_args { + char policy_l_[PADL_(l_int)]; l_int policy; char policy_r_[PADR_(l_int)]; +}; +struct linux_sched_get_priority_min_args { + char policy_l_[PADL_(l_int)]; l_int policy; char policy_r_[PADR_(l_int)]; +}; +struct linux_sched_rr_get_interval_args { + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; + char interval_l_[PADL_(struct l_timespec *)]; struct l_timespec * interval; char interval_r_[PADR_(struct l_timespec *)]; +}; +struct linux_vhangup_args { + register_t dummy; +}; +struct linux_pivot_root_args { + register_t dummy; +}; +struct linux_sysctl_args { + char args_l_[PADL_(struct l___sysctl_args *)]; struct l___sysctl_args * args; char args_r_[PADR_(struct l___sysctl_args *)]; +}; +struct linux_prctl_args { + char option_l_[PADL_(l_int)]; l_int option; char option_r_[PADR_(l_int)]; + char arg2_l_[PADL_(l_uintptr_t)]; l_uintptr_t arg2; char arg2_r_[PADR_(l_uintptr_t)]; + char arg3_l_[PADL_(l_uintptr_t)]; l_uintptr_t arg3; char arg3_r_[PADR_(l_uintptr_t)]; + char arg4_l_[PADL_(l_uintptr_t)]; l_uintptr_t arg4; char arg4_r_[PADR_(l_uintptr_t)]; + char arg5_l_[PADL_(l_uintptr_t)]; l_uintptr_t arg5; char arg5_r_[PADR_(l_uintptr_t)]; +}; +struct linux_arch_prctl_args { + char code_l_[PADL_(l_int)]; l_int code; char code_r_[PADR_(l_int)]; + char addr_l_[PADL_(l_ulong)]; l_ulong addr; char addr_r_[PADR_(l_ulong)]; +}; +struct linux_adjtimex_args { + register_t dummy; +}; +struct linux_setrlimit_args { + char resource_l_[PADL_(l_uint)]; l_uint resource; char resource_r_[PADR_(l_uint)]; + char rlim_l_[PADL_(struct l_rlimit *)]; struct l_rlimit * rlim; char rlim_r_[PADR_(struct l_rlimit *)]; +}; +struct linux_mount_args { + char specialfile_l_[PADL_(char *)]; char * specialfile; char specialfile_r_[PADR_(char *)]; + char dir_l_[PADL_(char *)]; char * dir; char dir_r_[PADR_(char *)]; + char filesystemtype_l_[PADL_(char *)]; char * filesystemtype; char filesystemtype_r_[PADR_(char *)]; + char rwflag_l_[PADL_(l_ulong)]; l_ulong rwflag; char rwflag_r_[PADR_(l_ulong)]; + char data_l_[PADL_(void *)]; void * data; char data_r_[PADR_(void *)]; +}; +struct linux_umount_args { + char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)]; + char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)]; +}; +struct linux_swapoff_args { + register_t dummy; +}; +struct linux_reboot_args { + char magic1_l_[PADL_(l_int)]; l_int magic1; char magic1_r_[PADR_(l_int)]; + char magic2_l_[PADL_(l_int)]; l_int magic2; char magic2_r_[PADR_(l_int)]; + char cmd_l_[PADL_(l_uint)]; l_uint cmd; char cmd_r_[PADR_(l_uint)]; + char arg_l_[PADL_(void *)]; void * arg; char arg_r_[PADR_(void *)]; +}; +struct linux_sethostname_args { + char hostname_l_[PADL_(char *)]; char * hostname; char hostname_r_[PADR_(char *)]; + char len_l_[PADL_(l_uint)]; l_uint len; char len_r_[PADR_(l_uint)]; +}; +struct linux_setdomainname_args { + char name_l_[PADL_(char *)]; char * name; char name_r_[PADR_(char *)]; + char len_l_[PADL_(l_int)]; l_int len; char len_r_[PADR_(l_int)]; +}; +struct linux_iopl_args { + char level_l_[PADL_(l_uint)]; l_uint level; char level_r_[PADR_(l_uint)]; +}; +struct linux_create_module_args { + register_t dummy; +}; +struct linux_init_module_args { + register_t dummy; +}; +struct linux_delete_module_args { + register_t dummy; +}; +struct linux_get_kernel_syms_args { + register_t dummy; +}; +struct linux_query_module_args { + register_t dummy; +}; +struct linux_quotactl_args { + register_t dummy; +}; +struct linux_nfsservctl_args { + register_t dummy; +}; +struct linux_getpmsg_args { + register_t dummy; +}; +struct linux_putpmsg_args { + register_t dummy; +}; +struct linux_afs_syscall_args { + register_t dummy; +}; +struct linux_tuxcall_args { + register_t dummy; +}; +struct linux_security_args { + register_t dummy; +}; +struct linux_gettid_args { + register_t dummy; +}; +struct linux_setxattr_args { + register_t dummy; +}; +struct linux_lsetxattr_args { + register_t dummy; +}; +struct linux_fsetxattr_args { + register_t dummy; +}; +struct linux_getxattr_args { + register_t dummy; +}; +struct linux_lgetxattr_args { + register_t dummy; +}; +struct linux_fgetxattr_args { + register_t dummy; +}; +struct linux_listxattr_args { + register_t dummy; +}; +struct linux_llistxattr_args { + register_t dummy; +}; +struct linux_flistxattr_args { + register_t dummy; +}; +struct linux_removexattr_args { + register_t dummy; +}; +struct linux_lremovexattr_args { + register_t dummy; +}; +struct linux_fremovexattr_args { + register_t dummy; +}; +struct linux_tkill_args { + char tid_l_[PADL_(int)]; int tid; char tid_r_[PADR_(int)]; + char sig_l_[PADL_(int)]; int sig; char sig_r_[PADR_(int)]; +}; +struct linux_time_args { + char tm_l_[PADL_(l_time_t *)]; l_time_t * tm; char tm_r_[PADR_(l_time_t *)]; +}; +struct linux_sys_futex_args { + char uaddr_l_[PADL_(void *)]; void * uaddr; char uaddr_r_[PADR_(void *)]; + char op_l_[PADL_(int)]; int op; char op_r_[PADR_(int)]; + char val_l_[PADL_(int)]; int val; char val_r_[PADR_(int)]; + char timeout_l_[PADL_(struct l_timespec *)]; struct l_timespec * timeout; char timeout_r_[PADR_(struct l_timespec *)]; + char uaddr2_l_[PADL_(void *)]; void * uaddr2; char uaddr2_r_[PADR_(void *)]; + char val3_l_[PADL_(int)]; int val3; char val3_r_[PADR_(int)]; +}; +struct linux_sched_setaffinity_args { + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; + char len_l_[PADL_(l_uint)]; l_uint len; char len_r_[PADR_(l_uint)]; + char user_mask_ptr_l_[PADL_(l_ulong *)]; l_ulong * user_mask_ptr; char user_mask_ptr_r_[PADR_(l_ulong *)]; +}; +struct linux_sched_getaffinity_args { + char pid_l_[PADL_(l_pid_t)]; l_pid_t pid; char pid_r_[PADR_(l_pid_t)]; + char len_l_[PADL_(l_uint)]; l_uint len; char len_r_[PADR_(l_uint)]; + char user_mask_ptr_l_[PADL_(l_ulong *)]; l_ulong * user_mask_ptr; char user_mask_ptr_r_[PADR_(l_ulong *)]; +}; +struct linux_set_thread_area_args { + register_t dummy; +}; +struct linux_lookup_dcookie_args { + register_t dummy; +}; +struct linux_epoll_create_args { + register_t dummy; +}; +struct linux_epoll_ctl_old_args { + register_t dummy; +}; +struct linux_epoll_wait_old_args { + register_t dummy; +}; +struct linux_remap_file_pages_args { + register_t dummy; +}; +struct linux_getdents64_args { + char fd_l_[PADL_(l_uint)]; l_uint fd; char fd_r_[PADR_(l_uint)]; + char dirent_l_[PADL_(void *)]; void * dirent; char dirent_r_[PADR_(void *)]; + char count_l_[PADL_(l_uint)]; l_uint count; char count_r_[PADR_(l_uint)]; +}; +struct linux_set_tid_address_args { + char tidptr_l_[PADL_(int *)]; int * tidptr; char tidptr_r_[PADR_(int *)]; +}; +struct linux_semtimedop_args { + register_t dummy; +}; +struct linux_fadvise64_args { + char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)]; + char offset_l_[PADL_(l_loff_t)]; l_loff_t offset; char offset_r_[PADR_(l_loff_t)]; + char len_l_[PADL_(l_size_t)]; l_size_t len; char len_r_[PADR_(l_size_t)]; + char advice_l_[PADL_(int)]; int advice; char advice_r_[PADR_(int)]; +}; +struct linux_timer_create_args { + char clock_id_l_[PADL_(clockid_t)]; clockid_t clock_id; char clock_id_r_[PADR_(clockid_t)]; + char evp_l_[PADL_(struct sigevent *)]; struct sigevent * evp; char evp_r_[PADR_(struct sigevent *)]; + char timerid_l_[PADL_(l_timer_t *)]; l_timer_t * timerid; char timerid_r_[PADR_(l_timer_t *)]; +}; +struct linux_timer_settime_args { + char timerid_l_[PADL_(l_timer_t)]; l_timer_t timerid; char timerid_r_[PADR_(l_timer_t)]; + char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)]; + char new_l_[PADL_(const struct itimerspec *)]; const struct itimerspec * new; char new_r_[PADR_(const struct itimerspec *)]; + char old_l_[PADL_(struct itimerspec *)]; struct itimerspec * old; char old_r_[PADR_(struct itimerspec *)]; +}; +struct linux_timer_gettime_args { + char timerid_l_[PADL_(l_timer_t)]; l_timer_t timerid; char timerid_r_[PADR_(l_timer_t)]; + char setting_l_[PADL_(struct itimerspec *)]; struct itimerspec * setting; char setting_r_[PADR_(struct itimerspec *)]; +}; +struct linux_timer_getoverrun_args { + char timerid_l_[PADL_(l_timer_t)]; l_timer_t timerid; char timerid_r_[PADR_(l_timer_t)]; +}; +struct linux_timer_delete_args { + char timerid_l_[PADL_(l_timer_t)]; l_timer_t timerid; char timerid_r_[PADR_(l_timer_t)]; +}; +struct linux_clock_settime_args { + char which_l_[PADL_(clockid_t)]; clockid_t which; char which_r_[PADR_(clockid_t)]; + char tp_l_[PADL_(struct l_timespec *)]; struct l_timespec * tp; char tp_r_[PADR_(struct l_timespec *)]; +}; +struct linux_clock_gettime_args { + char which_l_[PADL_(clockid_t)]; clockid_t which; char which_r_[PADR_(clockid_t)]; + char tp_l_[PADL_(struct l_timespec *)]; struct l_timespec * tp; char tp_r_[PADR_(struct l_timespec *)]; +}; +struct linux_clock_getres_args { + char which_l_[PADL_(clockid_t)]; clockid_t which; char which_r_[PADR_(clockid_t)]; + char tp_l_[PADL_(struct l_timespec *)]; struct l_timespec * tp; char tp_r_[PADR_(struct l_timespec *)]; +}; +struct linux_clock_nanosleep_args { + char which_l_[PADL_(clockid_t)]; clockid_t which; char which_r_[PADR_(clockid_t)]; + char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)]; + char rqtp_l_[PADL_(struct l_timespec *)]; struct l_timespec * rqtp; char rqtp_r_[PADR_(struct l_timespec *)]; + char rmtp_l_[PADL_(struct l_timespec *)]; struct l_timespec * rmtp; char rmtp_r_[PADR_(struct l_timespec *)]; +}; +struct linux_exit_group_args { + char error_code_l_[PADL_(int)]; int error_code; char error_code_r_[PADR_(int)]; +}; +struct linux_epoll_wait_args { + register_t dummy; +}; +struct linux_epoll_ctl_args { + register_t dummy; +}; +struct linux_tgkill_args { + char tgid_l_[PADL_(int)]; int tgid; char tgid_r_[PADR_(int)]; + char pid_l_[PADL_(int)]; int pid; char pid_r_[PADR_(int)]; + char sig_l_[PADL_(int)]; int sig; char sig_r_[PADR_(int)]; +}; +struct linux_utimes_args { + char fname_l_[PADL_(char *)]; char * fname; char fname_r_[PADR_(char *)]; + char tptr_l_[PADL_(struct l_timeval *)]; struct l_timeval * tptr; char tptr_r_[PADR_(struct l_timeval *)]; +}; +struct linux_mbind_args { + register_t dummy; +}; +struct linux_set_mempolicy_args { + register_t dummy; +}; +struct linux_get_mempolicy_args { + register_t dummy; +}; +struct linux_mq_open_args { + register_t dummy; +}; +struct linux_mq_unlink_args { + register_t dummy; +}; +struct linux_mq_timedsend_args { + register_t dummy; +}; +struct linux_mq_timedreceive_args { + register_t dummy; +}; +struct linux_mq_notify_args { + register_t dummy; +}; +struct linux_mq_getsetattr_args { + register_t dummy; +}; +struct linux_kexec_load_args { + register_t dummy; +}; +struct linux_waitid_args { + char idtype_l_[PADL_(int)]; int idtype; char idtype_r_[PADR_(int)]; + char id_l_[PADL_(l_pid_t)]; l_pid_t id; char id_r_[PADR_(l_pid_t)]; + char info_l_[PADL_(l_siginfo_t *)]; l_siginfo_t * info; char info_r_[PADR_(l_siginfo_t *)]; + char options_l_[PADL_(int)]; int options; char options_r_[PADR_(int)]; + char rusage_l_[PADL_(struct rusage *)]; struct rusage * rusage; char rusage_r_[PADR_(struct rusage *)]; +}; +struct linux_add_key_args { + register_t dummy; +}; +struct linux_request_key_args { + register_t dummy; +}; +struct linux_keyctl_args { + register_t dummy; +}; +struct linux_ioprio_set_args { + register_t dummy; +}; +struct linux_ioprio_get_args { + register_t dummy; +}; +struct linux_inotify_init_args { + register_t dummy; +}; +struct linux_inotify_add_watch_args { + register_t dummy; +}; +struct linux_inotify_rm_watch_args { + register_t dummy; +}; +struct linux_migrate_pages_args { + register_t dummy; +}; +struct linux_openat_args { + char dfd_l_[PADL_(l_int)]; l_int dfd; char dfd_r_[PADR_(l_int)]; + char filename_l_[PADL_(const char *)]; const char * filename; char filename_r_[PADR_(const char *)]; + char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)]; + char mode_l_[PADL_(l_int)]; l_int mode; char mode_r_[PADR_(l_int)]; +}; +struct linux_mkdirat_args { + char dfd_l_[PADL_(l_int)]; l_int dfd; char dfd_r_[PADR_(l_int)]; + char pathname_l_[PADL_(const char *)]; const char * pathname; char pathname_r_[PADR_(const char *)]; + char mode_l_[PADL_(l_int)]; l_int mode; char mode_r_[PADR_(l_int)]; +}; +struct linux_mknodat_args { + char dfd_l_[PADL_(l_int)]; l_int dfd; char dfd_r_[PADR_(l_int)]; + char filename_l_[PADL_(const char *)]; const char * filename; char filename_r_[PADR_(const char *)]; + char mode_l_[PADL_(l_int)]; l_int mode; char mode_r_[PADR_(l_int)]; + char dev_l_[PADL_(l_uint)]; l_uint dev; char dev_r_[PADR_(l_uint)]; +}; +struct linux_fchownat_args { + char dfd_l_[PADL_(l_int)]; l_int dfd; char dfd_r_[PADR_(l_int)]; + char filename_l_[PADL_(const char *)]; const char * filename; char filename_r_[PADR_(const char *)]; + char uid_l_[PADL_(l_uid_t)]; l_uid_t uid; char uid_r_[PADR_(l_uid_t)]; + char gid_l_[PADL_(l_gid_t)]; l_gid_t gid; char gid_r_[PADR_(l_gid_t)]; + char flag_l_[PADL_(l_int)]; l_int flag; char flag_r_[PADR_(l_int)]; +}; +struct linux_futimesat_args { + char dfd_l_[PADL_(l_int)]; l_int dfd; char dfd_r_[PADR_(l_int)]; + char filename_l_[PADL_(char *)]; char * filename; char filename_r_[PADR_(char *)]; + char utimes_l_[PADL_(struct l_timeval *)]; struct l_timeval * utimes; char utimes_r_[PADR_(struct l_timeval *)]; +}; +struct linux_newfstatat_args { + char dfd_l_[PADL_(l_int)]; l_int dfd; char dfd_r_[PADR_(l_int)]; + char pathname_l_[PADL_(char *)]; char * pathname; char pathname_r_[PADR_(char *)]; + char statbuf_l_[PADL_(struct l_stat64 *)]; struct l_stat64 * statbuf; char statbuf_r_[PADR_(struct l_stat64 *)]; + char flag_l_[PADL_(l_int)]; l_int flag; char flag_r_[PADR_(l_int)]; +}; +struct linux_unlinkat_args { + char dfd_l_[PADL_(l_int)]; l_int dfd; char dfd_r_[PADR_(l_int)]; + char pathname_l_[PADL_(const char *)]; const char * pathname; char pathname_r_[PADR_(const char *)]; + char flag_l_[PADL_(l_int)]; l_int flag; char flag_r_[PADR_(l_int)]; +}; +struct linux_renameat_args { + char olddfd_l_[PADL_(l_int)]; l_int olddfd; char olddfd_r_[PADR_(l_int)]; + char oldname_l_[PADL_(const char *)]; const char * oldname; char oldname_r_[PADR_(const char *)]; + char newdfd_l_[PADL_(l_int)]; l_int newdfd; char newdfd_r_[PADR_(l_int)]; + char newname_l_[PADL_(const char *)]; const char * newname; char newname_r_[PADR_(const char *)]; +}; +struct linux_linkat_args { + char olddfd_l_[PADL_(l_int)]; l_int olddfd; char olddfd_r_[PADR_(l_int)]; + char oldname_l_[PADL_(const char *)]; const char * oldname; char oldname_r_[PADR_(const char *)]; + char newdfd_l_[PADL_(l_int)]; l_int newdfd; char newdfd_r_[PADR_(l_int)]; + char newname_l_[PADL_(const char *)]; const char * newname; char newname_r_[PADR_(const char *)]; + char flag_l_[PADL_(l_int)]; l_int flag; char flag_r_[PADR_(l_int)]; +}; +struct linux_symlinkat_args { + char oldname_l_[PADL_(const char *)]; const char * oldname; char oldname_r_[PADR_(const char *)]; + char newdfd_l_[PADL_(l_int)]; l_int newdfd; char newdfd_r_[PADR_(l_int)]; + char newname_l_[PADL_(const char *)]; const char * newname; char newname_r_[PADR_(const char *)]; +}; +struct linux_readlinkat_args { + char dfd_l_[PADL_(l_int)]; l_int dfd; char dfd_r_[PADR_(l_int)]; + char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)]; + char buf_l_[PADL_(char *)]; char * buf; char buf_r_[PADR_(char *)]; + char bufsiz_l_[PADL_(l_int)]; l_int bufsiz; char bufsiz_r_[PADR_(l_int)]; +}; +struct linux_fchmodat_args { + char dfd_l_[PADL_(l_int)]; l_int dfd; char dfd_r_[PADR_(l_int)]; + char filename_l_[PADL_(const char *)]; const char * filename; char filename_r_[PADR_(const char *)]; + char mode_l_[PADL_(l_mode_t)]; l_mode_t mode; char mode_r_[PADR_(l_mode_t)]; +}; +struct linux_faccessat_args { + char dfd_l_[PADL_(l_int)]; l_int dfd; char dfd_r_[PADR_(l_int)]; + char filename_l_[PADL_(const char *)]; const char * filename; char filename_r_[PADR_(const char *)]; + char amode_l_[PADL_(l_int)]; l_int amode; char amode_r_[PADR_(l_int)]; + char flag_l_[PADL_(l_int)]; l_int flag; char flag_r_[PADR_(l_int)]; +}; +struct linux_pselect6_args { + char nfds_l_[PADL_(l_int)]; l_int nfds; char nfds_r_[PADR_(l_int)]; + char readfds_l_[PADL_(l_fd_set *)]; l_fd_set * readfds; char readfds_r_[PADR_(l_fd_set *)]; + char writefds_l_[PADL_(l_fd_set *)]; l_fd_set * writefds; char writefds_r_[PADR_(l_fd_set *)]; + char exceptfds_l_[PADL_(l_fd_set *)]; l_fd_set * exceptfds; char exceptfds_r_[PADR_(l_fd_set *)]; + char tsp_l_[PADL_(struct l_timespec *)]; struct l_timespec * tsp; char tsp_r_[PADR_(struct l_timespec *)]; + char sig_l_[PADL_(l_uintptr_t *)]; l_uintptr_t * sig; char sig_r_[PADR_(l_uintptr_t *)]; +}; +struct linux_ppoll_args { + register_t dummy; +}; +struct linux_unshare_args { + register_t dummy; +}; +struct linux_set_robust_list_args { + char head_l_[PADL_(struct linux_robust_list_head *)]; struct linux_robust_list_head * head; char head_r_[PADR_(struct linux_robust_list_head *)]; + char len_l_[PADL_(l_size_t)]; l_size_t len; char len_r_[PADR_(l_size_t)]; +}; +struct linux_get_robust_list_args { + char pid_l_[PADL_(l_int)]; l_int pid; char pid_r_[PADR_(l_int)]; + char head_l_[PADL_(struct linux_robust_list_head *)]; struct linux_robust_list_head * head; char head_r_[PADR_(struct linux_robust_list_head *)]; + char len_l_[PADL_(l_size_t *)]; l_size_t * len; char len_r_[PADR_(l_size_t *)]; +}; +struct linux_splice_args { + register_t dummy; +}; +struct linux_tee_args { + register_t dummy; +}; +struct linux_sync_file_range_args { + register_t dummy; +}; +struct linux_vmsplice_args { + register_t dummy; +}; +struct linux_move_pages_args { + register_t dummy; +}; +struct linux_utimensat_args { + register_t dummy; +}; +struct linux_epoll_pwait_args { + register_t dummy; +}; +struct linux_signalfd_args { + register_t dummy; +}; +struct linux_timerfd_args { + register_t dummy; +}; +struct linux_eventfd_args { + register_t dummy; +}; +struct linux_fallocate_args { + register_t dummy; +}; +struct linux_timerfd_settime_args { + register_t dummy; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:11:32 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 408921ED; Sun, 24 May 2015 16:11:32 +0000 (UTC) Received: from svn.freebsd.org (svn.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 210C811C3; Sun, 24 May 2015 16:11:32 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OGBW3F077594; Sun, 24 May 2015 16:11:32 GMT (envelope-from andrew@FreeBSD.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OGBVHk077590; Sun, 24 May 2015 16:11:31 GMT (envelope-from andrew@FreeBSD.org) Message-Id: <201505241611.t4OGBVHk077590@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: andrew set sender to andrew@FreeBSD.org using -f From: Andrew Turner Date: Sun, 24 May 2015 16:11:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283426 - in head/sys: arm/arm arm/conf conf X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:11:32 -0000 Author: andrew Date: Sun May 24 16:11:30 2015 New Revision: 283426 URL: https://svnweb.freebsd.org/changeset/base/283426 Log: Add support for getting the memory map from EFI if it has been pased in by loader.efi. Modified: head/sys/arm/arm/machdep.c head/sys/arm/conf/VIRT head/sys/conf/options.arm Modified: head/sys/arm/arm/machdep.c ============================================================================== --- head/sys/arm/arm/machdep.c Sun May 24 16:11:21 2015 (r283425) +++ head/sys/arm/arm/machdep.c Sun May 24 16:11:30 2015 (r283426) @@ -59,6 +59,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -71,6 +72,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -1102,6 +1104,113 @@ set_stackptrs(int cpu) } #endif +#ifdef EFI +#define efi_next_descriptor(ptr, size) \ + ((struct efi_md *)(((uint8_t *) ptr) + size)) + +static void +add_efi_map_entries(struct efi_map_header *efihdr, struct mem_region *mr, + int *mrcnt, uint32_t *memsize) +{ + struct efi_md *map, *p; + const char *type; + size_t efisz, memory_size; + int ndesc, i, j; + + static const char *types[] = { + "Reserved", + "LoaderCode", + "LoaderData", + "BootServicesCode", + "BootServicesData", + "RuntimeServicesCode", + "RuntimeServicesData", + "ConventionalMemory", + "UnusableMemory", + "ACPIReclaimMemory", + "ACPIMemoryNVS", + "MemoryMappedIO", + "MemoryMappedIOPortSpace", + "PalCode" + }; + + *mrcnt = 0; + *memsize = 0; + + /* + * Memory map data provided by UEFI via the GetMemoryMap + * Boot Services API. + */ + efisz = roundup2(sizeof(struct efi_map_header), 0x10); + map = (struct efi_md *)((uint8_t *)efihdr + efisz); + + if (efihdr->descriptor_size == 0) + return; + ndesc = efihdr->memory_size / efihdr->descriptor_size; + + if (boothowto & RB_VERBOSE) + printf("%23s %12s %12s %8s %4s\n", + "Type", "Physical", "Virtual", "#Pages", "Attr"); + + memory_size = 0; + for (i = 0, j = 0, p = map; i < ndesc; i++, + p = efi_next_descriptor(p, efihdr->descriptor_size)) { + if (boothowto & RB_VERBOSE) { + if (p->md_type <= EFI_MD_TYPE_PALCODE) + type = types[p->md_type]; + else + type = ""; + printf("%23s %012llx %12p %08llx ", type, p->md_phys, + p->md_virt, p->md_pages); + if (p->md_attr & EFI_MD_ATTR_UC) + printf("UC "); + if (p->md_attr & EFI_MD_ATTR_WC) + printf("WC "); + if (p->md_attr & EFI_MD_ATTR_WT) + printf("WT "); + if (p->md_attr & EFI_MD_ATTR_WB) + printf("WB "); + if (p->md_attr & EFI_MD_ATTR_UCE) + printf("UCE "); + if (p->md_attr & EFI_MD_ATTR_WP) + printf("WP "); + if (p->md_attr & EFI_MD_ATTR_RP) + printf("RP "); + if (p->md_attr & EFI_MD_ATTR_XP) + printf("XP "); + if (p->md_attr & EFI_MD_ATTR_RT) + printf("RUNTIME"); + printf("\n"); + } + + switch (p->md_type) { + case EFI_MD_TYPE_CODE: + case EFI_MD_TYPE_DATA: + case EFI_MD_TYPE_BS_CODE: + case EFI_MD_TYPE_BS_DATA: + case EFI_MD_TYPE_FREE: + /* + * We're allowed to use any entry with these types. + */ + break; + default: + continue; + } + + j++; + if (j >= FDT_MEM_REGIONS) + break; + + mr[j].mr_start = p->md_phys; + mr[j].mr_size = p->md_pages * PAGE_SIZE; + memory_size += mr[j].mr_size; + } + + *mrcnt = j; + *memsize = memory_size; +} +#endif /* EFI */ + #ifdef FDT static char * kenv_next(char *cp) @@ -1413,6 +1522,9 @@ initarm(struct arm_boot_params *abp) char *env; void *kmdp; int err_devmap, mem_regions_sz; +#ifdef EFI + struct efi_map_header *efihdr; +#endif /* get last allocated physical address */ arm_physmem_kernaddr = abp->abp_physaddr; @@ -1445,9 +1557,20 @@ initarm(struct arm_boot_params *abp) if (OF_init((void *)dtbp) != 0) panic("OF_init failed with the found device tree"); - /* Grab physical memory regions information from device tree. */ - if (fdt_get_mem_regions(mem_regions, &mem_regions_sz, &memsize) != 0) - panic("Cannot get physical memory regions"); +#ifdef EFI + efihdr = (struct efi_map_header *)preload_search_info(kmdp, + MODINFO_METADATA | MODINFOMD_EFI_MAP); + if (efihdr != NULL) { + add_efi_map_entries(efihdr, mem_regions, &mem_regions_sz, + &memsize); + } else +#endif + { + /* Grab physical memory regions information from device tree. */ + if (fdt_get_mem_regions(mem_regions, &mem_regions_sz, + &memsize) != 0) + panic("Cannot get physical memory regions"); + } arm_physmem_hardware_regions(mem_regions, mem_regions_sz); /* Grab reserved memory regions information from device tree. */ Modified: head/sys/arm/conf/VIRT ============================================================================== --- head/sys/arm/conf/VIRT Sun May 24 16:11:21 2015 (r283425) +++ head/sys/arm/conf/VIRT Sun May 24 16:11:30 2015 (r283426) @@ -67,3 +67,6 @@ device random # Entropy device # Flattened Device Tree options FDT # Configure using FDT/DTB data +# Extensible Firmware Interface +options EFI + Modified: head/sys/conf/options.arm ============================================================================== --- head/sys/conf/options.arm Sun May 24 16:11:21 2015 (r283425) +++ head/sys/conf/options.arm Sun May 24 16:11:30 2015 (r283426) @@ -22,6 +22,7 @@ CPU_XSCALE_IXP425 opt_global.h CPU_XSCALE_IXP435 opt_global.h CPU_XSCALE_PXA2X0 opt_global.h DEV_GIC opt_global.h +EFI opt_platform.h FLASHADDR opt_global.h GIC_DEFAULT_ICFGR_INIT opt_global.h IPI_IRQ_START opt_smp.h From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:14:45 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 607EC369; Sun, 24 May 2015 16:14:45 +0000 (UTC) Received: from svn.freebsd.org (svn.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 41681127E; Sun, 24 May 2015 16:14:45 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OGEjCj078708; Sun, 24 May 2015 16:14:45 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OGEgQC078693; Sun, 24 May 2015 16:14:42 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241614.t4OGEgQC078693@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:14:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283427 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:14:45 -0000 Author: dchagin Date: Sun May 24 16:14:41 2015 New Revision: 283427 URL: https://svnweb.freebsd.org/changeset/base/283427 Log: Where possible we will use M_LINUX malloc(9) type. Move M_FUTEX defines to the linux_common.ko. Differential Revision: https://reviews.freebsd.org/D1077 Reviewed by: emaste Modified: head/sys/compat/linux/linux_emul.c head/sys/compat/linux/linux_file.c head/sys/compat/linux/linux_futex.c head/sys/compat/linux/linux_getcwd.c head/sys/compat/linux/linux_misc.c head/sys/compat/linux/linux_socket.c head/sys/compat/linux/linux_sysctl.c head/sys/compat/linux/linux_uid16.c head/sys/compat/linux/linux_util.c head/sys/compat/linux/linux_util.h Modified: head/sys/compat/linux/linux_emul.c ============================================================================== --- head/sys/compat/linux/linux_emul.c Sun May 24 16:11:30 2015 (r283426) +++ head/sys/compat/linux/linux_emul.c Sun May 24 16:14:41 2015 (r283427) @@ -98,7 +98,7 @@ linux_proc_init(struct thread *td, struc em->em_tid = newtd->td_proc->p_pid; - pem = malloc(sizeof(*pem), M_TEMP, M_WAITOK | M_ZERO); + pem = malloc(sizeof(*pem), M_LINUX, M_WAITOK | M_ZERO); sx_init(&pem->pem_sx, "lpemlk"); newtd->td_proc->p_emuldata = pem; } @@ -134,7 +134,7 @@ linux_proc_exit(void *arg __unused, stru p->p_emuldata = NULL; sx_destroy(&pem->pem_sx); - free(pem, M_TEMP); + free(pem, M_LINUX); } int @@ -181,7 +181,7 @@ linux_common_execve(struct thread *td, s PROC_UNLOCK(p); free(em, M_TEMP); - free(pem, M_TEMP); + free(pem, M_LINUX); } return (0); } Modified: head/sys/compat/linux/linux_file.c ============================================================================== --- head/sys/compat/linux/linux_file.c Sun May 24 16:11:30 2015 (r283426) +++ head/sys/compat/linux/linux_file.c Sun May 24 16:14:41 2015 (r283427) @@ -369,8 +369,8 @@ getdents_common(struct thread *td, struc buflen = max(LINUX_DIRBLKSIZ, nbytes); buflen = min(buflen, MAXBSIZE); - buf = malloc(buflen, M_TEMP, M_WAITOK); - lbuf = malloc(LINUX_MAXRECLEN, M_TEMP, M_WAITOK | M_ZERO); + buf = malloc(buflen, M_LINUX, M_WAITOK); + lbuf = malloc(LINUX_MAXRECLEN, M_LINUX, M_WAITOK | M_ZERO); vn_lock(vp, LK_SHARED | LK_RETRY); aiov.iov_base = buf; @@ -521,8 +521,8 @@ out: VOP_UNLOCK(vp, 0); foffset_unlock(fp, off, 0); fdrop(fp, td); - free(buf, M_TEMP); - free(lbuf, M_TEMP); + free(buf, M_LINUX); + free(lbuf, M_LINUX); return (error); } Modified: head/sys/compat/linux/linux_futex.c ============================================================================== --- head/sys/compat/linux/linux_futex.c Sun May 24 16:11:30 2015 (r283426) +++ head/sys/compat/linux/linux_futex.c Sun May 24 16:14:41 2015 (r283427) @@ -184,9 +184,6 @@ LIN_SDT_PROBE_DEFINE2(futex, release_fut LIN_SDT_PROBE_DEFINE1(futex, release_futexes, copyin_error, "int"); LIN_SDT_PROBE_DEFINE0(futex, release_futexes, return); -static MALLOC_DEFINE(M_FUTEX, "futex", "Linux futexes"); -static MALLOC_DEFINE(M_FUTEX_WP, "futex wp", "Linux futexes wp"); - struct futex; struct waiting_proc { Modified: head/sys/compat/linux/linux_getcwd.c ============================================================================== --- head/sys/compat/linux/linux_getcwd.c Sun May 24 16:11:30 2015 (r283426) +++ head/sys/compat/linux/linux_getcwd.c Sun May 24 16:14:41 2015 (r283427) @@ -74,7 +74,7 @@ linux_getcwd(struct thread *td, struct l if (args->bufsize < 2) return (ERANGE); - path = malloc(LINUX_PATH_MAX, M_TEMP, M_WAITOK); + path = malloc(LINUX_PATH_MAX, M_LINUX, M_WAITOK); error = kern___getcwd(td, path, UIO_SYSSPACE, args->bufsize, LINUX_PATH_MAX); @@ -85,6 +85,6 @@ linux_getcwd(struct thread *td, struct l td->td_retval[0] = lenused; } - free(path, M_TEMP); + free(path, M_LINUX); return (error); } Modified: head/sys/compat/linux/linux_misc.c ============================================================================== --- head/sys/compat/linux/linux_misc.c Sun May 24 16:11:30 2015 (r283426) +++ head/sys/compat/linux/linux_misc.c Sun May 24 16:14:41 2015 (r283427) @@ -1206,7 +1206,7 @@ linux_setgroups(struct thread *td, struc ngrp = args->gidsetsize; if (ngrp < 0 || ngrp >= ngroups_max + 1) return (EINVAL); - linux_gidset = malloc(ngrp * sizeof(*linux_gidset), M_TEMP, M_WAITOK); + linux_gidset = malloc(ngrp * sizeof(*linux_gidset), M_LINUX, M_WAITOK); error = copyin(args->grouplist, linux_gidset, ngrp * sizeof(l_gid_t)); if (error) goto out; @@ -1245,7 +1245,7 @@ linux_setgroups(struct thread *td, struc crfree(oldcred); error = 0; out: - free(linux_gidset, M_TEMP); + free(linux_gidset, M_LINUX); return (error); } @@ -1277,14 +1277,14 @@ linux_getgroups(struct thread *td, struc ngrp = 0; linux_gidset = malloc(bsd_gidsetsz * sizeof(*linux_gidset), - M_TEMP, M_WAITOK); + M_LINUX, M_WAITOK); while (ngrp < bsd_gidsetsz) { linux_gidset[ngrp] = bsd_gidset[ngrp + 1]; ngrp++; } error = copyout(linux_gidset, args->grouplist, ngrp * sizeof(l_gid_t)); - free(linux_gidset, M_TEMP); + free(linux_gidset, M_LINUX); if (error) return (error); Modified: head/sys/compat/linux/linux_socket.c ============================================================================== --- head/sys/compat/linux/linux_socket.c Sun May 24 16:11:30 2015 (r283426) +++ head/sys/compat/linux/linux_socket.c Sun May 24 16:14:41 2015 (r283427) @@ -609,7 +609,7 @@ linux_sendto_hdrincl(struct thread *td, linux_args->len > IP_MAXPACKET) return (EINVAL); - packet = (struct ip *)malloc(linux_args->len, M_TEMP, M_WAITOK); + packet = (struct ip *)malloc(linux_args->len, M_LINUX, M_WAITOK); /* Make kernel copy of the packet to be sent */ if ((error = copyin(PTRIN(linux_args->msg), packet, @@ -632,7 +632,7 @@ linux_sendto_hdrincl(struct thread *td, error = linux_sendit(td, linux_args->s, &msg, linux_args->flags, NULL, UIO_SYSSPACE); goout: - free(packet, M_TEMP); + free(packet, M_LINUX); return (error); } @@ -1119,7 +1119,7 @@ linux_sendmsg(struct thread *td, struct free(sa, M_SONAME); error = ENOBUFS; - cmsg = malloc(CMSG_HDRSZ, M_TEMP, M_WAITOK | M_ZERO); + cmsg = malloc(CMSG_HDRSZ, M_LINUX, M_WAITOK | M_ZERO); control = m_get(M_WAITOK, MT_CONTROL); if (control == NULL) goto bad; @@ -1197,7 +1197,7 @@ linux_sendmsg(struct thread *td, struct bad: free(iov, M_IOV); if (cmsg) - free(cmsg, M_TEMP); + free(cmsg, M_LINUX); return (error); } @@ -1270,7 +1270,7 @@ linux_recvmsg(struct thread *td, struct outlen = 0; if (control) { - linux_cmsg = malloc(L_CMSG_HDRSZ, M_TEMP, M_WAITOK | M_ZERO); + linux_cmsg = malloc(L_CMSG_HDRSZ, M_LINUX, M_WAITOK | M_ZERO); msg.msg_control = mtod(control, struct cmsghdr *); msg.msg_controllen = control->m_len; @@ -1363,7 +1363,7 @@ out: bad: free(iov, M_IOV); m_freem(control); - free(linux_cmsg, M_TEMP); + free(linux_cmsg, M_LINUX); return (error); } Modified: head/sys/compat/linux/linux_sysctl.c ============================================================================== --- head/sys/compat/linux/linux_sysctl.c Sun May 24 16:11:30 2015 (r283426) +++ head/sys/compat/linux/linux_sysctl.c Sun May 24 16:14:41 2015 (r283427) @@ -140,12 +140,12 @@ linux_sysctl(struct thread *td, struct l return (ENOTDIR); } - mib = malloc(la.nlen * sizeof(l_int), M_TEMP, M_WAITOK); + mib = malloc(la.nlen * sizeof(l_int), M_LINUX, M_WAITOK); error = copyin(PTRIN(la.name), mib, la.nlen * sizeof(l_int)); if (error) { LIN_SDT_PROBE1(sysctl, linux_sysctl, copyin_error, error); LIN_SDT_PROBE1(sysctl, linux_sysctl, return, error); - free(mib, M_TEMP); + free(mib, M_LINUX); return (error); } @@ -157,7 +157,7 @@ linux_sysctl(struct thread *td, struct l switch (mib[1]) { case LINUX_KERN_VERSION: error = handle_string(&la, version); - free(mib, M_TEMP); + free(mib, M_LINUX); LIN_SDT_PROBE1(sysctl, linux_sysctl, return, error); return (error); default: @@ -186,7 +186,7 @@ linux_sysctl(struct thread *td, struct l sbuf_delete(sb); } - free(mib, M_TEMP); + free(mib, M_LINUX); LIN_SDT_PROBE1(sysctl, linux_sysctl, return, ENOTDIR); return (ENOTDIR); Modified: head/sys/compat/linux/linux_uid16.c ============================================================================== --- head/sys/compat/linux/linux_uid16.c Sun May 24 16:11:30 2015 (r283426) +++ head/sys/compat/linux/linux_uid16.c Sun May 24 16:14:41 2015 (r283427) @@ -171,12 +171,12 @@ linux_setgroups16(struct thread *td, str LIN_SDT_PROBE1(uid16, linux_setgroups16, return, EINVAL); return (EINVAL); } - linux_gidset = malloc(ngrp * sizeof(*linux_gidset), M_TEMP, M_WAITOK); + linux_gidset = malloc(ngrp * sizeof(*linux_gidset), M_LINUX, M_WAITOK); error = copyin(args->gidset, linux_gidset, ngrp * sizeof(l_gid16_t)); if (error) { LIN_SDT_PROBE1(uid16, linux_setgroups16, copyin_error, error); LIN_SDT_PROBE1(uid16, linux_setgroups16, return, error); - free(linux_gidset, M_TEMP); + free(linux_gidset, M_LINUX); return (error); } newcred = crget(); @@ -218,7 +218,7 @@ linux_setgroups16(struct thread *td, str crfree(oldcred); error = 0; out: - free(linux_gidset, M_TEMP); + free(linux_gidset, M_LINUX); LIN_SDT_PROBE1(uid16, linux_setgroups16, return, error); return (error); @@ -259,14 +259,14 @@ linux_getgroups16(struct thread *td, str ngrp = 0; linux_gidset = malloc(bsd_gidsetsz * sizeof(*linux_gidset), - M_TEMP, M_WAITOK); + M_LINUX, M_WAITOK); while (ngrp < bsd_gidsetsz) { linux_gidset[ngrp] = bsd_gidset[ngrp + 1]; ngrp++; } error = copyout(linux_gidset, args->gidset, ngrp * sizeof(l_gid16_t)); - free(linux_gidset, M_TEMP); + free(linux_gidset, M_LINUX); if (error) { LIN_SDT_PROBE1(uid16, linux_getgroups16, copyout_error, error); LIN_SDT_PROBE1(uid16, linux_getgroups16, return, error); Modified: head/sys/compat/linux/linux_util.c ============================================================================== --- head/sys/compat/linux/linux_util.c Sun May 24 16:11:30 2015 (r283426) +++ head/sys/compat/linux/linux_util.c Sun May 24 16:14:41 2015 (r283427) @@ -54,6 +54,8 @@ __FBSDID("$FreeBSD$"); #include MALLOC_DEFINE(M_LINUX, "linux", "Linux mode structures"); +MALLOC_DEFINE(M_FUTEX, "futex", "Linux futexes"); +MALLOC_DEFINE(M_FUTEX_WP, "futex wp", "Linux futex waiting proc"); const char linux_emul_path[] = "/compat/linux"; Modified: head/sys/compat/linux/linux_util.h ============================================================================== --- head/sys/compat/linux/linux_util.h Sun May 24 16:11:30 2015 (r283426) +++ head/sys/compat/linux/linux_util.h Sun May 24 16:14:41 2015 (r283427) @@ -45,6 +45,8 @@ #include MALLOC_DECLARE(M_LINUX); +MALLOC_DECLARE(M_FUTEX); +MALLOC_DECLARE(M_FUTEX_WP); extern const char linux_emul_path[]; From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:18:05 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id EB6816B7; Sun, 24 May 2015 16:18:04 +0000 (UTC) Received: from svn.freebsd.org (svn.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 D83E112B3; Sun, 24 May 2015 16:18:04 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OGI4L0079305; Sun, 24 May 2015 16:18:04 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OGI3PT079296; Sun, 24 May 2015 16:18:03 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241618.t4OGI3PT079296@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:18:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283428 - in head/sys: amd64/linux amd64/linux32 compat/linux i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:18:05 -0000 Author: dchagin Date: Sun May 24 16:18:03 2015 New Revision: 283428 URL: https://svnweb.freebsd.org/changeset/base/283428 Log: Change linux faccessat syscall definition to match actual linux one. The AT_EACCESS and AT_SYMLINK_NOFOLLOW flags are actually implemented within the glibc wrapper function for faccessat(). If either of these flags are specified, then the wrapper function employs fstatat() to determine access permissions. Differential Revision: https://reviews.freebsd.org/D1078 Reviewed by: trasz Modified: head/sys/amd64/linux/syscalls.master head/sys/amd64/linux32/syscalls.master head/sys/compat/linux/linux_file.c head/sys/i386/linux/syscalls.master Modified: head/sys/amd64/linux/syscalls.master ============================================================================== --- head/sys/amd64/linux/syscalls.master Sun May 24 16:14:41 2015 (r283427) +++ head/sys/amd64/linux/syscalls.master Sun May 24 16:18:03 2015 (r283428) @@ -450,7 +450,7 @@ 268 AUE_FCHMODAT STD { int linux_fchmodat(l_int dfd, const char *filename, \ l_mode_t mode); } 269 AUE_FACCESSAT STD { int linux_faccessat(l_int dfd, const char *filename, \ - l_int amode, l_int flag); } + l_int amode); } 270 AUE_SELECT STD { int linux_pselect6(l_int nfds, \ l_fd_set *readfds, l_fd_set *writefds, l_fd_set *exceptfds, \ struct l_timespec *tsp, l_uintptr_t *sig); } Modified: head/sys/amd64/linux32/syscalls.master ============================================================================== --- head/sys/amd64/linux32/syscalls.master Sun May 24 16:14:41 2015 (r283427) +++ head/sys/amd64/linux32/syscalls.master Sun May 24 16:18:03 2015 (r283428) @@ -507,7 +507,8 @@ char *buf, l_int bufsiz); } 306 AUE_FCHMODAT STD { int linux_fchmodat(l_int dfd, const char *filename, \ l_mode_t mode); } -307 AUE_FACCESSAT STD { int linux_faccessat(l_int dfd, const char *filename, l_int amode, int flag); } +307 AUE_FACCESSAT STD { int linux_faccessat(l_int dfd, const char *filename, \ + l_int amode); } 308 AUE_SELECT STD { int linux_pselect6(l_int nfds, l_fd_set *readfds, \ l_fd_set *writefds, l_fd_set *exceptfds, \ struct l_timespec *tsp, l_uintptr_t *sig); } Modified: head/sys/compat/linux/linux_file.c ============================================================================== --- head/sys/compat/linux/linux_file.c Sun May 24 16:14:41 2015 (r283427) +++ head/sys/compat/linux/linux_file.c Sun May 24 16:18:03 2015 (r283428) @@ -581,10 +581,8 @@ int linux_faccessat(struct thread *td, struct linux_faccessat_args *args) { char *path; - int error, dfd, flag; + int error, dfd; - if (args->flag & ~LINUX_AT_EACCESS) - return (EINVAL); /* linux convention */ if (args->amode & ~(F_OK | X_OK | W_OK | R_OK)) return (EINVAL); @@ -597,8 +595,7 @@ linux_faccessat(struct thread *td, struc printf(ARGS(access, "%s, %d"), path, args->amode); #endif - flag = (args->flag & LINUX_AT_EACCESS) == 0 ? 0 : AT_EACCESS; - error = kern_accessat(td, dfd, path, UIO_SYSSPACE, flag, args->amode); + error = kern_accessat(td, dfd, path, UIO_SYSSPACE, 0, args->amode); LFREEPATH(path); return (error); Modified: head/sys/i386/linux/syscalls.master ============================================================================== --- head/sys/i386/linux/syscalls.master Sun May 24 16:14:41 2015 (r283427) +++ head/sys/i386/linux/syscalls.master Sun May 24 16:18:03 2015 (r283428) @@ -515,7 +515,8 @@ char *buf, l_int bufsiz); } 306 AUE_FCHMODAT STD { int linux_fchmodat(l_int dfd, const char *filename, \ l_mode_t mode); } -307 AUE_FACCESSAT STD { int linux_faccessat(l_int dfd, const char *filename, l_int amode, l_int flag); } +307 AUE_FACCESSAT STD { int linux_faccessat(l_int dfd, const char *filename, \ + l_int amode); } 308 AUE_SELECT STD { int linux_pselect6(l_int nfds, l_fd_set *readfds, \ l_fd_set *writefds, l_fd_set *exceptfds, \ struct l_timespec *tsp, l_uintptr_t *sig); } From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:20:02 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id DBFC1857; Sun, 24 May 2015 16:20:01 +0000 (UTC) Received: from svn.freebsd.org (svn.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 C861F12D0; Sun, 24 May 2015 16:20:01 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OGK1cp079685; Sun, 24 May 2015 16:20:01 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OGJv5k079600; Sun, 24 May 2015 16:19:57 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241619.t4OGJv5k079600@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:19:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283429 - in head/sys: amd64/linux amd64/linux32 i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:20:02 -0000 Author: dchagin Date: Sun May 24 16:19:57 2015 New Revision: 283429 URL: https://svnweb.freebsd.org/changeset/base/283429 Log: Regen for r283428. Modified: head/sys/amd64/linux/linux_proto.h head/sys/amd64/linux/linux_syscall.h head/sys/amd64/linux/linux_syscalls.c head/sys/amd64/linux/linux_sysent.c head/sys/amd64/linux/linux_systrace_args.c head/sys/amd64/linux32/linux32_proto.h head/sys/amd64/linux32/linux32_syscall.h head/sys/amd64/linux32/linux32_syscalls.c head/sys/amd64/linux32/linux32_sysent.c head/sys/amd64/linux32/linux32_systrace_args.c head/sys/i386/linux/linux_proto.h head/sys/i386/linux/linux_syscall.h head/sys/i386/linux/linux_syscalls.c head/sys/i386/linux/linux_sysent.c head/sys/i386/linux/linux_systrace_args.c Modified: head/sys/amd64/linux/linux_proto.h ============================================================================== --- head/sys/amd64/linux/linux_proto.h Sun May 24 16:18:03 2015 (r283428) +++ head/sys/amd64/linux/linux_proto.h Sun May 24 16:19:57 2015 (r283429) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283424 2015-05-24 16:07:11Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283428 2015-05-24 16:18:03Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -935,7 +935,6 @@ struct linux_faccessat_args { char dfd_l_[PADL_(l_int)]; l_int dfd; char dfd_r_[PADR_(l_int)]; char filename_l_[PADL_(const char *)]; const char * filename; char filename_r_[PADR_(const char *)]; char amode_l_[PADL_(l_int)]; l_int amode; char amode_r_[PADR_(l_int)]; - char flag_l_[PADL_(l_int)]; l_int flag; char flag_r_[PADR_(l_int)]; }; struct linux_pselect6_args { char nfds_l_[PADL_(l_int)]; l_int nfds; char nfds_r_[PADR_(l_int)]; Modified: head/sys/amd64/linux/linux_syscall.h ============================================================================== --- head/sys/amd64/linux/linux_syscall.h Sun May 24 16:18:03 2015 (r283428) +++ head/sys/amd64/linux/linux_syscall.h Sun May 24 16:19:57 2015 (r283429) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283424 2015-05-24 16:07:11Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283428 2015-05-24 16:18:03Z dchagin */ #define LINUX_SYS_read 0 Modified: head/sys/amd64/linux/linux_syscalls.c ============================================================================== --- head/sys/amd64/linux/linux_syscalls.c Sun May 24 16:18:03 2015 (r283428) +++ head/sys/amd64/linux/linux_syscalls.c Sun May 24 16:19:57 2015 (r283429) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283424 2015-05-24 16:07:11Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283428 2015-05-24 16:18:03Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/amd64/linux/linux_sysent.c ============================================================================== --- head/sys/amd64/linux/linux_sysent.c Sun May 24 16:18:03 2015 (r283428) +++ head/sys/amd64/linux/linux_sysent.c Sun May 24 16:19:57 2015 (r283429) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283424 2015-05-24 16:07:11Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283428 2015-05-24 16:18:03Z dchagin */ #include Modified: head/sys/amd64/linux/linux_systrace_args.c ============================================================================== --- head/sys/amd64/linux/linux_systrace_args.c Sun May 24 16:18:03 2015 (r283428) +++ head/sys/amd64/linux/linux_systrace_args.c Sun May 24 16:19:57 2015 (r283429) @@ -1965,8 +1965,7 @@ systrace_args(int sysnum, void *params, iarg[0] = p->dfd; /* l_int */ uarg[1] = (intptr_t) p->filename; /* const char * */ iarg[2] = p->amode; /* l_int */ - iarg[3] = p->flag; /* l_int */ - *n_args = 4; + *n_args = 3; break; } /* linux_pselect6 */ @@ -5181,9 +5180,6 @@ systrace_entry_setargdesc(int sysnum, in case 2: p = "l_int"; break; - case 3: - p = "l_int"; - break; default: break; }; Modified: head/sys/amd64/linux32/linux32_proto.h ============================================================================== --- head/sys/amd64/linux32/linux32_proto.h Sun May 24 16:18:03 2015 (r283428) +++ head/sys/amd64/linux32/linux32_proto.h Sun May 24 16:19:57 2015 (r283429) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283403 2015-05-24 15:21:25Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283428 2015-05-24 16:18:03Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -992,7 +992,6 @@ struct linux_faccessat_args { char dfd_l_[PADL_(l_int)]; l_int dfd; char dfd_r_[PADR_(l_int)]; char filename_l_[PADL_(const char *)]; const char * filename; char filename_r_[PADR_(const char *)]; char amode_l_[PADL_(l_int)]; l_int amode; char amode_r_[PADR_(l_int)]; - char flag_l_[PADL_(int)]; int flag; char flag_r_[PADR_(int)]; }; struct linux_pselect6_args { char nfds_l_[PADL_(l_int)]; l_int nfds; char nfds_r_[PADR_(l_int)]; Modified: head/sys/amd64/linux32/linux32_syscall.h ============================================================================== --- head/sys/amd64/linux32/linux32_syscall.h Sun May 24 16:18:03 2015 (r283428) +++ head/sys/amd64/linux32/linux32_syscall.h Sun May 24 16:19:57 2015 (r283429) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283403 2015-05-24 15:21:25Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283428 2015-05-24 16:18:03Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/amd64/linux32/linux32_syscalls.c ============================================================================== --- head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 16:18:03 2015 (r283428) +++ head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 16:19:57 2015 (r283429) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283403 2015-05-24 15:21:25Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283428 2015-05-24 16:18:03Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/amd64/linux32/linux32_sysent.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysent.c Sun May 24 16:18:03 2015 (r283428) +++ head/sys/amd64/linux32/linux32_sysent.c Sun May 24 16:19:57 2015 (r283429) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283403 2015-05-24 15:21:25Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283428 2015-05-24 16:18:03Z dchagin */ #include "opt_compat.h" Modified: head/sys/amd64/linux32/linux32_systrace_args.c ============================================================================== --- head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 16:18:03 2015 (r283428) +++ head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 16:19:57 2015 (r283429) @@ -2067,8 +2067,7 @@ systrace_args(int sysnum, void *params, iarg[0] = p->dfd; /* l_int */ uarg[1] = (intptr_t) p->filename; /* const char * */ iarg[2] = p->amode; /* l_int */ - iarg[3] = p->flag; /* int */ - *n_args = 4; + *n_args = 3; break; } /* linux_pselect6 */ @@ -5385,9 +5384,6 @@ systrace_entry_setargdesc(int sysnum, in case 2: p = "l_int"; break; - case 3: - p = "int"; - break; default: break; }; Modified: head/sys/i386/linux/linux_proto.h ============================================================================== --- head/sys/i386/linux/linux_proto.h Sun May 24 16:18:03 2015 (r283428) +++ head/sys/i386/linux/linux_proto.h Sun May 24 16:19:57 2015 (r283429) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283403 2015-05-24 15:21:25Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283428 2015-05-24 16:18:03Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -1010,7 +1010,6 @@ struct linux_faccessat_args { char dfd_l_[PADL_(l_int)]; l_int dfd; char dfd_r_[PADR_(l_int)]; char filename_l_[PADL_(const char *)]; const char * filename; char filename_r_[PADR_(const char *)]; char amode_l_[PADL_(l_int)]; l_int amode; char amode_r_[PADR_(l_int)]; - char flag_l_[PADL_(l_int)]; l_int flag; char flag_r_[PADR_(l_int)]; }; struct linux_pselect6_args { char nfds_l_[PADL_(l_int)]; l_int nfds; char nfds_r_[PADR_(l_int)]; Modified: head/sys/i386/linux/linux_syscall.h ============================================================================== --- head/sys/i386/linux/linux_syscall.h Sun May 24 16:18:03 2015 (r283428) +++ head/sys/i386/linux/linux_syscall.h Sun May 24 16:19:57 2015 (r283429) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283403 2015-05-24 15:21:25Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283428 2015-05-24 16:18:03Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/i386/linux/linux_syscalls.c ============================================================================== --- head/sys/i386/linux/linux_syscalls.c Sun May 24 16:18:03 2015 (r283428) +++ head/sys/i386/linux/linux_syscalls.c Sun May 24 16:19:57 2015 (r283429) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283403 2015-05-24 15:21:25Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283428 2015-05-24 16:18:03Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/i386/linux/linux_sysent.c ============================================================================== --- head/sys/i386/linux/linux_sysent.c Sun May 24 16:18:03 2015 (r283428) +++ head/sys/i386/linux/linux_sysent.c Sun May 24 16:19:57 2015 (r283429) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283403 2015-05-24 15:21:25Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283428 2015-05-24 16:18:03Z dchagin */ #include Modified: head/sys/i386/linux/linux_systrace_args.c ============================================================================== --- head/sys/i386/linux/linux_systrace_args.c Sun May 24 16:18:03 2015 (r283428) +++ head/sys/i386/linux/linux_systrace_args.c Sun May 24 16:19:57 2015 (r283429) @@ -2143,8 +2143,7 @@ systrace_args(int sysnum, void *params, iarg[0] = p->dfd; /* l_int */ uarg[1] = (intptr_t) p->filename; /* const char * */ iarg[2] = p->amode; /* l_int */ - iarg[3] = p->flag; /* l_int */ - *n_args = 4; + *n_args = 3; break; } /* linux_pselect6 */ @@ -5616,9 +5615,6 @@ systrace_entry_setargdesc(int sysnum, in case 2: p = "l_int"; break; - case 3: - p = "l_int"; - break; default: break; }; From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:22:05 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2F45B9BF; Sun, 24 May 2015 16:22:05 +0000 (UTC) Received: from svn.freebsd.org (svn.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 1005C137F; Sun, 24 May 2015 16:22:05 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OGM4ch083581; Sun, 24 May 2015 16:22:04 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OGM4RZ083577; Sun, 24 May 2015 16:22:04 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241622.t4OGM4RZ083577@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:22:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283430 - head/usr.bin/kdump X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:22:05 -0000 Author: dchagin Date: Sun May 24 16:22:03 2015 New Revision: 283430 URL: https://svnweb.freebsd.org/changeset/base/283430 Log: Teach kdump to understand both linux emulation. Differential Revision: https://reviews.freebsd.org/D1079 Reviewed by: emaste Added: head/usr.bin/kdump/linux32_syscalls.conf (contents, props changed) Modified: head/usr.bin/kdump/Makefile head/usr.bin/kdump/kdump.c Modified: head/usr.bin/kdump/Makefile ============================================================================== --- head/usr.bin/kdump/Makefile Sun May 24 16:19:57 2015 (r283429) +++ head/usr.bin/kdump/Makefile Sun May 24 16:22:03 2015 (r283430) @@ -3,10 +3,6 @@ .include -.if (${MACHINE_ARCH} == "amd64") -SFX= 32 -.endif - .PATH: ${.CURDIR}/../ktrace PROG= kdump @@ -30,6 +26,9 @@ CLEANFILES= ioctl.c kdump_subr.c kdump_s .if (${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386") CLEANFILES+= linux_syscalls.c .endif +.if (${MACHINE_ARCH} == "amd64") +CLEANFILES+= linux32_syscalls.c +.endif ioctl.c: mkioctls env MACHINE=${MACHINE} CPP="${CPP}" \ @@ -43,7 +42,11 @@ kdump_subr.c: mksubr kdump_subr.h sh ${.CURDIR}/mksubr ${DESTDIR}/usr/include >${.TARGET} .if (${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386") sh ${.CURDIR}/../../sys/kern/makesyscalls.sh \ - ${.CURDIR}/../../sys/${MACHINE_ARCH}/linux${SFX}/syscalls.master ${.CURDIR}/linux_syscalls.conf + ${.CURDIR}/../../sys/${MACHINE_ARCH}/linux/syscalls.master ${.CURDIR}/linux_syscalls.conf +.endif +.if (${MACHINE_ARCH} == "amd64") + sh ${.CURDIR}/../../sys/kern/makesyscalls.sh \ + ${.CURDIR}/../../sys/${MACHINE_ARCH}/linux32/syscalls.master ${.CURDIR}/linux32_syscalls.conf .endif .include Modified: head/usr.bin/kdump/kdump.c ============================================================================== --- head/usr.bin/kdump/kdump.c Sun May 24 16:19:57 2015 (r283429) +++ head/usr.bin/kdump/kdump.c Sun May 24 16:22:03 2015 (r283430) @@ -146,13 +146,11 @@ static struct ktr_header ktr_header; #if defined(__amd64__) || defined(__i386__) -void linux_ktrsyscall(struct ktr_syscall *); -void linux_ktrsysret(struct ktr_sysret *); +void linux_ktrsyscall(struct ktr_syscall *, u_int); +void linux_ktrsysret(struct ktr_sysret *, u_int); extern const char *linux_syscallnames[]; #include -static int nlinux_syscalls = sizeof(linux_syscallnames) / \ - sizeof(linux_syscallnames[0]); /* * from linux.h @@ -172,6 +170,12 @@ static int bsd_to_linux_errno[ELAST + 1] }; #endif +#if defined(__amd64__) +extern const char *linux32_syscallnames[]; + +#include +#endif + struct proc_info { TAILQ_ENTRY(proc_info) info; @@ -400,7 +404,8 @@ main(int argc, char *argv[]) case KTR_SYSCALL: #if defined(__amd64__) || defined(__i386__) if ((sv_flags & SV_ABI_MASK) == SV_ABI_LINUX) - linux_ktrsyscall((struct ktr_syscall *)m); + linux_ktrsyscall((struct ktr_syscall *)m, + sv_flags); else #endif ktrsyscall((struct ktr_syscall *)m, sv_flags); @@ -408,7 +413,8 @@ main(int argc, char *argv[]) case KTR_SYSRET: #if defined(__amd64__) || defined(__i386__) if ((sv_flags & SV_ABI_MASK) == SV_ABI_LINUX) - linux_ktrsysret((struct ktr_sysret *)m); + linux_ktrsysret((struct ktr_sysret *)m, + sv_flags); else #endif ktrsysret((struct ktr_sysret *)m, sv_flags); @@ -1970,16 +1976,28 @@ ktrfaultend(struct ktr_faultend *ktr) } #if defined(__amd64__) || defined(__i386__) + +#if defined(__amd64__) +#define NLINUX_SYSCALLS(v) ((v) & SV_ILP32 ? \ + nitems(linux32_syscallnames) : nitems(linux_syscallnames)) +#define LINUX_SYSCALLNAMES(v, i) ((v) & SV_ILP32 ? \ + linux32_syscallnames[i] : linux_syscallnames[i]) +#else +#define NLINUX_SYSCALLS(v) (nitems(linux_syscallnames)) +#define LINUX_SYSCALLNAMES(v, i) (linux_syscallnames[i]) +#endif + void -linux_ktrsyscall(struct ktr_syscall *ktr) +linux_ktrsyscall(struct ktr_syscall *ktr, u_int sv_flags) { int narg = ktr->ktr_narg; + unsigned code = ktr->ktr_code; register_t *ip; - if (ktr->ktr_code >= nlinux_syscalls || ktr->ktr_code < 0) + if (ktr->ktr_code < 0 || code >= NLINUX_SYSCALLS(sv_flags)) printf("[%d]", ktr->ktr_code); else { - printf("%s", linux_syscallnames[ktr->ktr_code]); + printf("%s", LINUX_SYSCALLNAMES(sv_flags, ktr->ktr_code)); if (syscallno) printf("[%d]", ktr->ktr_code); } @@ -1994,16 +2012,16 @@ linux_ktrsyscall(struct ktr_syscall *ktr } void -linux_ktrsysret(struct ktr_sysret *ktr) +linux_ktrsysret(struct ktr_sysret *ktr, u_int sv_flags) { register_t ret = ktr->ktr_retval; + unsigned code = ktr->ktr_code; int error = ktr->ktr_error; - int code = ktr->ktr_code; - if (code >= nlinux_syscalls || code < 0) - printf("[%d] ", code); + if (ktr->ktr_code < 0 || code >= NLINUX_SYSCALLS(sv_flags)) + printf("[%d] ", ktr->ktr_code); else { - printf("%s", linux_syscallnames[code]); + printf("%s ", LINUX_SYSCALLNAMES(sv_flags, code)); if (syscallno) printf("[%d]", code); printf(" "); Added: head/usr.bin/kdump/linux32_syscalls.conf ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/usr.bin/kdump/linux32_syscalls.conf Sun May 24 16:22:03 2015 (r283430) @@ -0,0 +1,11 @@ +# $FreeBSD$ +sysnames="linux32_syscalls.c" +sysproto="/dev/null" +sysproto_h=_LINUX32_SYSPROTO_H_ +syshdr="/dev/null" +syssw="/dev/null" +sysmk="/dev/null" +syscallprefix="LINUX32_SYS_" +switchname="/dev/null" +namesname="linux32_syscallnames" +systrace="/dev/null" From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:24:26 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id AA2FAC09; Sun, 24 May 2015 16:24:26 +0000 (UTC) Received: from svn.freebsd.org (svn.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 9650D13BA; Sun, 24 May 2015 16:24:26 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OGOQMw083920; Sun, 24 May 2015 16:24:26 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OGOORC083913; Sun, 24 May 2015 16:24:24 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241624.t4OGOORC083913@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:24:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283431 - in head/sys: amd64/linux amd64/linux32 compat/linux i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:24:26 -0000 Author: dchagin Date: Sun May 24 16:24:24 2015 New Revision: 283431 URL: https://svnweb.freebsd.org/changeset/base/283431 Log: Add AT_RANDOM and AT_EXECFN auxiliary vector entries which are used by glibc. At list since glibc version 2.16 using AT_RANDOM is mandatory. Differential Revision: https://reviews.freebsd.org/D1080 Modified: head/sys/amd64/linux/linux.h head/sys/amd64/linux/linux_sysvec.c head/sys/amd64/linux32/linux.h head/sys/amd64/linux32/linux32_sysvec.c head/sys/compat/linux/linux_misc.h head/sys/i386/linux/linux.h head/sys/i386/linux/linux_sysvec.c Modified: head/sys/amd64/linux/linux.h ============================================================================== --- head/sys/amd64/linux/linux.h Sun May 24 16:22:03 2015 (r283430) +++ head/sys/amd64/linux/linux.h Sun May 24 16:24:24 2015 (r283431) @@ -100,7 +100,7 @@ typedef struct { #define LINUX_NAME_MAX 255 #define LINUX_CTL_MAXNAME 10 -#define LINUX_AT_COUNT 17 /* Count of used aux entry types. */ +#define LINUX_AT_COUNT 19 /* Count of used aux entry types. */ struct l___sysctl_args { Modified: head/sys/amd64/linux/linux_sysvec.c ============================================================================== --- head/sys/amd64/linux/linux_sysvec.c Sun May 24 16:22:03 2015 (r283430) +++ head/sys/amd64/linux/linux_sysvec.c Sun May 24 16:24:24 2015 (r283431) @@ -319,6 +319,9 @@ elf_linux_fixup(register_t **stack_base, AUXARGS_ENTRY(pos, AT_EGID, imgp->proc->p_ucred->cr_svgid); AUXARGS_ENTRY(pos, LINUX_AT_SECURE, 0); AUXARGS_ENTRY(pos, LINUX_AT_PLATFORM, PTROUT(linux_platform)); + AUXARGS_ENTRY(pos, LINUX_AT_RANDOM, imgp->canary); + if (imgp->execpathp != 0) + AUXARGS_ENTRY(pos, LINUX_AT_EXECFN, imgp->execpathp); if (args->execfd != -1) AUXARGS_ENTRY(pos, AT_EXECFD, args->execfd); AUXARGS_ENTRY(pos, AT_NULL, 0); @@ -345,16 +348,39 @@ linux_copyout_strings(struct image_param char *stringp, *destp; register_t *stack_base; struct ps_strings *arginfo; + char canary[LINUX_AT_RANDOM_LEN]; + size_t execpath_len; struct proc *p; /* * Calculate string base and vector table pointers. */ + if (imgp->execpath != NULL && imgp->auxargs != NULL) + execpath_len = strlen(imgp->execpath) + 1; + else + execpath_len = 0; + p = imgp->proc; arginfo = (struct ps_strings *)p->p_sysent->sv_psstrings; destp = (caddr_t)arginfo - SPARE_USRSPACE - + roundup(sizeof(canary), sizeof(char *)) - + roundup(execpath_len, sizeof(char *)) - roundup((ARG_MAX - imgp->args->stringspace), sizeof(char *)); + if (execpath_len != 0) { + imgp->execpathp = (uintptr_t)arginfo - execpath_len; + copyout(imgp->execpath, (void *)imgp->execpathp, execpath_len); + } + + /* + * Prepare the canary for SSP. + */ + arc4rand(canary, sizeof(canary), 0); + imgp->canary = (uintptr_t)arginfo - + roundup(execpath_len, sizeof(char *)) - + roundup(sizeof(canary), sizeof(char *)); + copyout(canary, (void *)imgp->canary, sizeof(canary)); + /* * If we have a valid auxargs ptr, prepare some room * on the stack. Modified: head/sys/amd64/linux32/linux.h ============================================================================== --- head/sys/amd64/linux32/linux.h Sun May 24 16:22:03 2015 (r283430) +++ head/sys/amd64/linux32/linux.h Sun May 24 16:24:24 2015 (r283431) @@ -110,7 +110,7 @@ typedef struct { /* * Miscellaneous */ -#define LINUX_AT_COUNT 18 /* Count of used aux entry types. +#define LINUX_AT_COUNT 20 /* Count of used aux entry types. * Keep this synchronized with * elf_linux_fixup() code. */ Modified: head/sys/amd64/linux32/linux32_sysvec.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysvec.c Sun May 24 16:22:03 2015 (r283430) +++ head/sys/amd64/linux32/linux32_sysvec.c Sun May 24 16:24:24 2015 (r283431) @@ -289,6 +289,9 @@ elf_linux_fixup(register_t **stack_base, AUXARGS_ENTRY_32(pos, AT_GID, imgp->proc->p_ucred->cr_rgid); AUXARGS_ENTRY_32(pos, AT_EGID, imgp->proc->p_ucred->cr_svgid); AUXARGS_ENTRY_32(pos, LINUX_AT_PLATFORM, PTROUT(linux_platform)); + AUXARGS_ENTRY(pos, LINUX_AT_RANDOM, PTROUT(imgp->canary)); + if (imgp->execpathp != 0) + AUXARGS_ENTRY(pos, LINUX_AT_EXECFN, PTROUT(imgp->execpathp)); if (args->execfd != -1) AUXARGS_ENTRY_32(pos, AT_EXECFD, args->execfd); AUXARGS_ENTRY_32(pos, AT_NULL, 0); @@ -869,14 +872,37 @@ linux_copyout_strings(struct image_param char *stringp, *destp; u_int32_t *stack_base; struct linux32_ps_strings *arginfo; + char canary[LINUX_AT_RANDOM_LEN]; + size_t execpath_len; /* * Calculate string base and vector table pointers. */ + if (imgp->execpath != NULL && imgp->auxargs != NULL) + execpath_len = strlen(imgp->execpath) + 1; + else + execpath_len = 0; + arginfo = (struct linux32_ps_strings *)LINUX32_PS_STRINGS; destp = (caddr_t)arginfo - SPARE_USRSPACE - + roundup(sizeof(canary), sizeof(char *)) - + roundup(execpath_len, sizeof(char *)) - roundup((ARG_MAX - imgp->args->stringspace), sizeof(char *)); + if (execpath_len != 0) { + imgp->execpathp = (uintptr_t)arginfo - execpath_len; + copyout(imgp->execpath, (void *)imgp->execpathp, execpath_len); + } + + /* + * Prepare the canary for SSP. + */ + arc4rand(canary, sizeof(canary), 0); + imgp->canary = (uintptr_t)arginfo - + roundup(execpath_len, sizeof(char *)) - + roundup(sizeof(canary), sizeof(char *)); + copyout(canary, (void *)imgp->canary, sizeof(canary)); + /* * If we have a valid auxargs ptr, prepare some room * on the stack. Modified: head/sys/compat/linux/linux_misc.h ============================================================================== --- head/sys/compat/linux/linux_misc.h Sun May 24 16:22:03 2015 (r283430) +++ head/sys/compat/linux/linux_misc.h Sun May 24 16:24:24 2015 (r283431) @@ -72,10 +72,13 @@ extern const char *linux_kplatform; #define LINUX_AT_BASE_PLATFORM 24 /* string identifying real platform, may * differ from AT_PLATFORM. */ +#define LINUX_AT_RANDOM 25 /* address of random bytes */ #define LINUX_AT_EXECFN 31 /* filename of program */ #define LINUX_AT_SYSINFO 32 /* vsyscall */ #define LINUX_AT_SYSINFO_EHDR 33 /* vdso header */ +#define LINUX_AT_RANDOM_LEN 16 /* size of random bytes */ + /* Linux sets the i387 to extended precision. */ #if defined(__i386__) || defined(__amd64__) #define __LINUX_NPXCW__ 0x37f Modified: head/sys/i386/linux/linux.h ============================================================================== --- head/sys/i386/linux/linux.h Sun May 24 16:22:03 2015 (r283430) +++ head/sys/i386/linux/linux.h Sun May 24 16:24:24 2015 (r283431) @@ -104,7 +104,7 @@ typedef struct { /* * Miscellaneous */ -#define LINUX_AT_COUNT 18 /* Count of used aux entry types. +#define LINUX_AT_COUNT 20 /* Count of used aux entry types. * Keep this synchronized with * elf_linux_fixup() code. */ Modified: head/sys/i386/linux/linux_sysvec.c ============================================================================== --- head/sys/i386/linux/linux_sysvec.c Sun May 24 16:22:03 2015 (r283430) +++ head/sys/i386/linux/linux_sysvec.c Sun May 24 16:24:24 2015 (r283431) @@ -298,6 +298,9 @@ elf_linux_fixup(register_t **stack_base, AUXARGS_ENTRY(pos, AT_GID, imgp->proc->p_ucred->cr_rgid); AUXARGS_ENTRY(pos, AT_EGID, imgp->proc->p_ucred->cr_svgid); AUXARGS_ENTRY(pos, LINUX_AT_PLATFORM, PTROUT(uplatform)); + AUXARGS_ENTRY(pos, LINUX_AT_RANDOM, imgp->canary); + if (imgp->execpathp != 0) + AUXARGS_ENTRY(pos, LINUX_AT_EXECFN, imgp->execpathp); if (args->execfd != -1) AUXARGS_ENTRY(pos, AT_EXECFD, args->execfd); AUXARGS_ENTRY(pos, AT_NULL, 0); @@ -321,14 +324,22 @@ linux_copyout_strings(struct image_param char *stringp, *destp; register_t *stack_base; struct ps_strings *arginfo; + char canary[LINUX_AT_RANDOM_LEN]; + size_t execpath_len; struct proc *p; /* * Calculate string base and vector table pointers. */ p = imgp->proc; + if (imgp->execpath != NULL && imgp->auxargs != NULL) + execpath_len = strlen(imgp->execpath) + 1; + else + execpath_len = 0; arginfo = (struct ps_strings *)p->p_sysent->sv_psstrings; destp = (caddr_t)arginfo - SPARE_USRSPACE - linux_szplatform - + roundup(sizeof(canary), sizeof(char *)) - + roundup(execpath_len, sizeof(char *)) - roundup((ARG_MAX - imgp->args->stringspace), sizeof(char *)); /* @@ -337,6 +348,21 @@ linux_copyout_strings(struct image_param copyout(linux_kplatform, ((caddr_t)arginfo - linux_szplatform), linux_szplatform); + if (execpath_len != 0) { + imgp->execpathp = (uintptr_t)arginfo - + linux_szplatform - execpath_len; + copyout(imgp->execpath, (void *)imgp->execpathp, execpath_len); + } + + /* + * Prepare the canary for SSP. + */ + arc4rand(canary, sizeof(canary), 0); + imgp->canary = (uintptr_t)arginfo - linux_szplatform - + roundup(execpath_len, sizeof(char *)) - + roundup(sizeof(canary), sizeof(char *)); + copyout(canary, (void *)imgp->canary, sizeof(canary)); + /* * If we have a valid auxargs ptr, prepare some room * on the stack. From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:25:45 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E519FD6E; Sun, 24 May 2015 16:25:45 +0000 (UTC) Received: from svn.freebsd.org (svn.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 B914113CA; Sun, 24 May 2015 16:25:45 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OGPjrS084168; Sun, 24 May 2015 16:25:45 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OGPjeE084162; Sun, 24 May 2015 16:25:45 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241625.t4OGPjeE084162@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:25:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283432 - in head/sys: amd64/linux amd64/linux32 i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:25:46 -0000 Author: dchagin Date: Sun May 24 16:25:44 2015 New Revision: 283432 URL: https://svnweb.freebsd.org/changeset/base/283432 Log: Being exported through vdso the note.Linux section used by glibc to determine the kernel version (this saves one uname call). Temporarily disable the export of a note.Linux section until I figured out how to change the kernel version in the note.Linux on the fly. Differential Revision: https://reviews.freebsd.org/D1081 Reviewed by: trasz Modified: head/sys/amd64/linux/linux_locore.s head/sys/amd64/linux32/linux32_locore.s head/sys/i386/linux/linux_locore.s Modified: head/sys/amd64/linux/linux_locore.s ============================================================================== --- head/sys/amd64/linux/linux_locore.s Sun May 24 16:24:24 2015 (r283431) +++ head/sys/amd64/linux/linux_locore.s Sun May 24 16:25:44 2015 (r283432) @@ -58,7 +58,7 @@ NON_GPROF_ENTRY(__vdso_getcpu) .weak getcpu .set getcpu, __vdso_getcpu - +#if 0 .section .note.Linux, "a",@note .long 2f - 1f /* namesz */ .balign 4 @@ -73,3 +73,4 @@ NON_GPROF_ENTRY(__vdso_getcpu) 4: .balign 4 .previous +#endif Modified: head/sys/amd64/linux32/linux32_locore.s ============================================================================== --- head/sys/amd64/linux32/linux32_locore.s Sun May 24 16:24:24 2015 (r283431) +++ head/sys/amd64/linux32/linux32_locore.s Sun May 24 16:25:44 2015 (r283432) @@ -55,7 +55,7 @@ NON_GPROF_ENTRY(linux32_vsyscall) ret .endvsyscall: - +#if 0 .section .note.Linux, "a",@note .long 2f - 1f /* namesz */ .balign 4 @@ -70,7 +70,7 @@ NON_GPROF_ENTRY(linux32_vsyscall) 4: .balign 4 .previous - +#endif #define do_cfa_expr(offset) \ .byte 0x0f; /* DW_CFA_def_cfa_expression */ \ Modified: head/sys/i386/linux/linux_locore.s ============================================================================== --- head/sys/i386/linux/linux_locore.s Sun May 24 16:24:24 2015 (r283431) +++ head/sys/i386/linux/linux_locore.s Sun May 24 16:25:44 2015 (r283432) @@ -48,7 +48,7 @@ NON_GPROF_ENTRY(linux_vsyscall) ret .endvsyscall: - +#if 0 .section .note.Linux, "a",@note .long 2f - 1f /* namesz */ .balign 4 @@ -63,7 +63,7 @@ NON_GPROF_ENTRY(linux_vsyscall) 4: .balign 4 .previous - +#endif #define do_cfa_expr(offset) \ .byte 0x0f; /* DW_CFA_def_cfa_expression */ \ From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:26:56 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 21535ED1; Sun, 24 May 2015 16:26:56 +0000 (UTC) Received: from svn.freebsd.org (svn.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 028F813DB; Sun, 24 May 2015 16:26:56 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OGQt0r084380; Sun, 24 May 2015 16:26:55 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OGQt4V084379; Sun, 24 May 2015 16:26:55 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241626.t4OGQt4V084379@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:26:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283433 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:26:56 -0000 Author: dchagin Date: Sun May 24 16:26:55 2015 New Revision: 283433 URL: https://svnweb.freebsd.org/changeset/base/283433 Log: Rewrite linux_recvfrom. To avoid double conversion of sockaddr use kern_recvit() directly. And check fromlen parameter before sockaddr copyin and conversion. Differential Revision: https://reviews.freebsd.org/D1082 Modified: head/sys/compat/linux/linux_socket.c Modified: head/sys/compat/linux/linux_socket.c ============================================================================== --- head/sys/compat/linux/linux_socket.c Sun May 24 16:25:44 2015 (r283432) +++ head/sys/compat/linux/linux_socket.c Sun May 24 16:26:55 2015 (r283433) @@ -428,7 +428,6 @@ linux_to_bsd_sockaddr(struct sockaddr *a return (error); } - static int linux_sa_put(struct osockaddr *osa) { @@ -1027,41 +1026,50 @@ linux_sendto(struct thread *td, struct l int linux_recvfrom(struct thread *td, struct linux_recvfrom_args *args) { - struct recvfrom_args /* { - int s; - caddr_t buf; - size_t len; - int flags; - struct sockaddr * __restrict from; - socklen_t * __restrict fromlenaddr; - } */ bsd_args; - size_t len; + struct msghdr msg; + struct iovec aiov; int error; - if ((error = copyin(PTRIN(args->fromlen), &len, sizeof(size_t)))) - return (error); + if (PTRIN(args->fromlen) != NULL) { + error = copyin(PTRIN(args->fromlen), &msg.msg_namelen, + sizeof(msg.msg_namelen)); + if (error != 0) + return (error); - bsd_args.s = args->s; - bsd_args.buf = PTRIN(args->buf); - bsd_args.len = args->len; - bsd_args.flags = linux_to_bsd_msg_flags(args->flags); - /* XXX: */ - bsd_args.from = (struct sockaddr * __restrict)PTRIN(args->from); - bsd_args.fromlenaddr = PTRIN(args->fromlen);/* XXX */ - - linux_to_bsd_sockaddr((struct sockaddr *)bsd_args.from, len); - error = sys_recvfrom(td, &bsd_args); - bsd_to_linux_sockaddr((struct sockaddr *)bsd_args.from); - - if (error) + error = linux_to_bsd_sockaddr((struct sockaddr *)PTRIN(args->from), + msg.msg_namelen); + if (error != 0) + return (error); + } else + msg.msg_namelen = 0; + + msg.msg_name = (struct sockaddr * __restrict)PTRIN(args->from); + msg.msg_iov = &aiov; + msg.msg_iovlen = 1; + aiov.iov_base = PTRIN(args->buf); + aiov.iov_len = args->len; + msg.msg_control = 0; + msg.msg_flags = linux_to_bsd_msg_flags(args->flags); + + error = kern_recvit(td, args->s, &msg, UIO_USERSPACE, NULL); + if (error != 0) return (error); - if (args->from) { - error = linux_sa_put((struct osockaddr *) + + if (PTRIN(args->from) != NULL) { + error = bsd_to_linux_sockaddr((struct sockaddr *) PTRIN(args->from)); - if (error) + if (error != 0) return (error); + + error = linux_sa_put((struct osockaddr *) + PTRIN(args->from)); } - return (0); + + if (PTRIN(args->fromlen) != NULL) + error = copyout(&msg.msg_namelen, PTRIN(args->fromlen), + sizeof(msg.msg_namelen)); + + return (error); } int From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:27:39 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4F919B6; Sun, 24 May 2015 16:27:39 +0000 (UTC) Received: from svn.freebsd.org (svn.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 3D744140F; Sun, 24 May 2015 16:27:39 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OGRd6c084731; Sun, 24 May 2015 16:27:39 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OGRdKl084730; Sun, 24 May 2015 16:27:39 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241627.t4OGRdKl084730@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:27:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283434 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:27:39 -0000 Author: dchagin Date: Sun May 24 16:27:38 2015 New Revision: 283434 URL: https://svnweb.freebsd.org/changeset/base/283434 Log: Set WIFCONTINUED to the wait status if needed. Differential Revision: https://reviews.freebsd.org/D1083 Reviewed by: trasz Modified: head/sys/compat/linux/linux_misc.c Modified: head/sys/compat/linux/linux_misc.c ============================================================================== --- head/sys/compat/linux/linux_misc.c Sun May 24 16:26:55 2015 (r283433) +++ head/sys/compat/linux/linux_misc.c Sun May 24 16:27:38 2015 (r283434) @@ -874,6 +874,8 @@ linux_common_wait(struct thread *td, int else if (WIFSTOPPED(tmpstat)) tmpstat = (tmpstat & 0xffff00ff) | (BSD_TO_LINUX_SIGNAL(WSTOPSIG(tmpstat)) << 8); + else if (WIFCONTINUED(tmpstat)) + tmpstat = 0xffff; error = copyout(&tmpstat, status, sizeof(int)); } From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:28:59 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5C9F632D; Sun, 24 May 2015 16:28:59 +0000 (UTC) Received: from svn.freebsd.org (svn.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 30DED143F; Sun, 24 May 2015 16:28:59 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OGSxuf084987; Sun, 24 May 2015 16:28:59 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OGSx19084986; Sun, 24 May 2015 16:28:59 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241628.t4OGSx19084986@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:28:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283435 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:28:59 -0000 Author: dchagin Date: Sun May 24 16:28:58 2015 New Revision: 283435 URL: https://svnweb.freebsd.org/changeset/base/283435 Log: Convert Linux wait options to the FreeBSD. Check wait options as a Linux do. Linux always set WEXITED option not a WUNTRACED|WNOHANG which is a strange bug. Differential Revision: https://reviews.freebsd.org/D1085 Reviewed by: trasz Modified: head/sys/compat/linux/linux_misc.c Modified: head/sys/compat/linux/linux_misc.c ============================================================================== --- head/sys/compat/linux/linux_misc.c Sun May 24 16:27:38 2015 (r283434) +++ head/sys/compat/linux/linux_misc.c Sun May 24 16:28:58 2015 (r283435) @@ -886,26 +886,20 @@ linux_common_wait(struct thread *td, int int linux_waitpid(struct thread *td, struct linux_waitpid_args *args) { - int options; - + struct linux_wait4_args wait4_args; + #ifdef DEBUG if (ldebug(waitpid)) printf(ARGS(waitpid, "%d, %p, %d"), args->pid, (void *)args->status, args->options); #endif - /* - * this is necessary because the test in kern_wait doesn't work - * because we mess with the options here - */ - if (args->options & ~(WUNTRACED | WNOHANG | WCONTINUED | __WCLONE)) - return (EINVAL); - - options = (args->options & (WNOHANG | WUNTRACED)); - /* WLINUXCLONE should be equal to __WCLONE, but we make sure */ - if (args->options & __WCLONE) - options |= WLINUXCLONE; - return (linux_common_wait(td, args->pid, args->status, options, NULL)); + wait4_args.pid = args->pid; + wait4_args.status = args->status; + wait4_args.options = args->options; + wait4_args.rusage = NULL; + + return (linux_wait4(td, &wait4_args)); } #endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */ @@ -921,11 +915,12 @@ linux_wait4(struct thread *td, struct li args->pid, (void *)args->status, args->options, (void *)args->rusage); #endif + if (args->options & ~(LINUX_WUNTRACED | LINUX_WNOHANG | + LINUX_WCONTINUED | __WCLONE | __WNOTHREAD | __WALL)) + return (EINVAL); - options = (args->options & (WNOHANG | WUNTRACED)); - /* WLINUXCLONE should be equal to __WCLONE, but we make sure */ - if (args->options & __WCLONE) - options |= WLINUXCLONE; + options = WEXITED; + linux_to_bsd_waitopts(args->options, &options); if (args->rusage != NULL) rup = &ru; From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:30:24 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A699B4A9; Sun, 24 May 2015 16:30:24 +0000 (UTC) Received: from svn.freebsd.org (svn.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 8731A1459; Sun, 24 May 2015 16:30:24 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OGUOfO085326; Sun, 24 May 2015 16:30:24 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OGUNIE085323; Sun, 24 May 2015 16:30:23 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241630.t4OGUNIE085323@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:30:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283436 - in head/sys: amd64/linux32 compat/linux i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:30:24 -0000 Author: dchagin Date: Sun May 24 16:30:23 2015 New Revision: 283436 URL: https://svnweb.freebsd.org/changeset/base/283436 Log: Use the BSD_TO_LINUX_SIGNAL() wherever there is no need to check the ABI as it is known. Differential Revision: https://reviews.freebsd.org/D1086 Modified: head/sys/amd64/linux32/linux32_sysvec.c head/sys/compat/linux/linux_signal.c head/sys/i386/linux/linux_sysvec.c Modified: head/sys/amd64/linux32/linux32_sysvec.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysvec.c Sun May 24 16:28:58 2015 (r283435) +++ head/sys/amd64/linux32/linux32_sysvec.c Sun May 24 16:30:23 2015 (r283436) @@ -344,9 +344,7 @@ linux_rt_sendsig(sig_t catcher, ksiginfo /* * Build the argument list for the signal handler. */ - if (p->p_sysent->sv_sigtbl) - if (sig <= p->p_sysent->sv_sigsize) - sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)]; + sig = BSD_TO_LINUX_SIGNAL(sig); bzero(&frame, sizeof(frame)); @@ -492,9 +490,7 @@ linux_sendsig(sig_t catcher, ksiginfo_t /* * Build the argument list for the signal handler. */ - if (p->p_sysent->sv_sigtbl) - if (sig <= p->p_sysent->sv_sigsize) - sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)]; + sig = BSD_TO_LINUX_SIGNAL(sig); bzero(&frame, sizeof(frame)); Modified: head/sys/compat/linux/linux_signal.c ============================================================================== --- head/sys/compat/linux/linux_signal.c Sun May 24 16:28:58 2015 (r283435) +++ head/sys/compat/linux/linux_signal.c Sun May 24 16:30:23 2015 (r283436) @@ -628,10 +628,8 @@ linux_tkill(struct thread *td, struct li if (!LINUX_SIG_VALID(args->sig)) return (EINVAL); - if (args->sig > 0 && args->sig <= LINUX_SIGTBLSZ) - sig = linux_to_bsd_signal[_SIG_IDX(args->sig)]; - else - sig = args->sig; + + sig = BSD_TO_LINUX_SIGNAL(args->sig); tdt = linux_tdfind(td, args->tid, -1); if (tdt == NULL) @@ -788,10 +786,7 @@ linux_rt_sigqueueinfo(struct thread *td, if (linfo.lsi_code >= 0) return (EPERM); - if (args->sig > 0 && args->sig <= LINUX_SIGTBLSZ) - sig = linux_to_bsd_signal[_SIG_IDX(args->sig)]; - else - sig = args->sig; + sig = BSD_TO_LINUX_SIGNAL(args->sig); error = ESRCH; if ((p = pfind(args->pid)) != NULL || Modified: head/sys/i386/linux/linux_sysvec.c ============================================================================== --- head/sys/i386/linux/linux_sysvec.c Sun May 24 16:28:58 2015 (r283435) +++ head/sys/i386/linux/linux_sysvec.c Sun May 24 16:30:23 2015 (r283436) @@ -480,9 +480,7 @@ linux_rt_sendsig(sig_t catcher, ksiginfo /* * Build the argument list for the signal handler. */ - if (p->p_sysent->sv_sigtbl) - if (sig <= p->p_sysent->sv_sigsize) - sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)]; + sig = BSD_TO_LINUX_SIGNAL(sig); bzero(&frame, sizeof(frame)); @@ -623,9 +621,7 @@ linux_sendsig(sig_t catcher, ksiginfo_t /* * Build the argument list for the signal handler. */ - if (p->p_sysent->sv_sigtbl) - if (sig <= p->p_sysent->sv_sigsize) - sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)]; + sig = BSD_TO_LINUX_SIGNAL(sig); bzero(&frame, sizeof(frame)); From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:31:46 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id EF44B609; Sun, 24 May 2015 16:31:46 +0000 (UTC) Received: from svn.freebsd.org (svn.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 DC84E152F; Sun, 24 May 2015 16:31:46 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OGVkSt088949; Sun, 24 May 2015 16:31:46 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OGVjgs088456; Sun, 24 May 2015 16:31:45 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241631.t4OGVjgs088456@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:31:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283437 - in head/sys: amd64/linux amd64/linux32 compat/linux i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:31:47 -0000 Author: dchagin Date: Sun May 24 16:31:44 2015 New Revision: 283437 URL: https://svnweb.freebsd.org/changeset/base/283437 Log: To avoid code duplication move open/fcntl definitions to the MI header file. Differential Revision: https://reviews.freebsd.org/D1087 Reviewed by: trasz Modified: head/sys/amd64/linux/linux.h head/sys/amd64/linux32/linux.h head/sys/compat/linux/linux_file.h head/sys/compat/linux/linux_socket.c head/sys/i386/linux/linux.h Modified: head/sys/amd64/linux/linux.h ============================================================================== --- head/sys/amd64/linux/linux.h Sun May 24 16:30:23 2015 (r283436) +++ head/sys/amd64/linux/linux.h Sun May 24 16:31:44 2015 (r283437) @@ -407,44 +407,6 @@ struct l_rt_sigframe { }; /* - * open/fcntl flags - */ -#define LINUX_O_RDONLY 00000000 -#define LINUX_O_WRONLY 00000001 -#define LINUX_O_RDWR 00000002 -#define LINUX_O_ACCMODE 00000003 -#define LINUX_O_CREAT 00000100 -#define LINUX_O_EXCL 00000200 -#define LINUX_O_NOCTTY 00000400 -#define LINUX_O_TRUNC 00001000 -#define LINUX_O_APPEND 00002000 -#define LINUX_O_NONBLOCK 00004000 -#define LINUX_O_NDELAY LINUX_O_NONBLOCK -#define LINUX_O_SYNC 00010000 -#define LINUX_FASYNC 00020000 -#define LINUX_O_DIRECT 00040000 /* Direct disk access hint */ -#define LINUX_O_LARGEFILE 00100000 -#define LINUX_O_DIRECTORY 00200000 /* Must be a directory */ -#define LINUX_O_NOFOLLOW 00400000 /* Do not follow links */ -#define LINUX_O_NOATIME 01000000 -#define LINUX_O_CLOEXEC 02000000 - -#define LINUX_F_DUPFD 0 -#define LINUX_F_GETFD 1 -#define LINUX_F_SETFD 2 -#define LINUX_F_GETFL 3 -#define LINUX_F_SETFL 4 -#define LINUX_F_GETLK 5 -#define LINUX_F_SETLK 6 -#define LINUX_F_SETLKW 7 -#define LINUX_F_SETOWN 8 -#define LINUX_F_GETOWN 9 - -#define LINUX_F_RDLCK 0 -#define LINUX_F_WRLCK 1 -#define LINUX_F_UNLCK 2 - -/* * mount flags */ #define LINUX_MS_RDONLY 0x0001 Modified: head/sys/amd64/linux32/linux.h ============================================================================== --- head/sys/amd64/linux32/linux.h Sun May 24 16:30:23 2015 (r283436) +++ head/sys/amd64/linux32/linux.h Sun May 24 16:31:44 2015 (r283437) @@ -520,47 +520,12 @@ struct l_rt_sigframe { } __packed; /* - * open/fcntl flags + * arch specific open/fcntl flags */ -#define LINUX_O_RDONLY 00000000 -#define LINUX_O_WRONLY 00000001 -#define LINUX_O_RDWR 00000002 -#define LINUX_O_ACCMODE 00000003 -#define LINUX_O_CREAT 00000100 -#define LINUX_O_EXCL 00000200 -#define LINUX_O_NOCTTY 00000400 -#define LINUX_O_TRUNC 00001000 -#define LINUX_O_APPEND 00002000 -#define LINUX_O_NONBLOCK 00004000 -#define LINUX_O_NDELAY LINUX_O_NONBLOCK -#define LINUX_O_SYNC 00010000 -#define LINUX_FASYNC 00020000 -#define LINUX_O_DIRECT 00040000 /* Direct disk access hint */ -#define LINUX_O_LARGEFILE 00100000 -#define LINUX_O_DIRECTORY 00200000 /* Must be a directory */ -#define LINUX_O_NOFOLLOW 00400000 /* Do not follow links */ -#define LINUX_O_NOATIME 01000000 -#define LINUX_O_CLOEXEC 02000000 - -#define LINUX_F_DUPFD 0 -#define LINUX_F_GETFD 1 -#define LINUX_F_SETFD 2 -#define LINUX_F_GETFL 3 -#define LINUX_F_SETFL 4 -#define LINUX_F_GETLK 5 -#define LINUX_F_SETLK 6 -#define LINUX_F_SETLKW 7 -#define LINUX_F_SETOWN 8 -#define LINUX_F_GETOWN 9 - #define LINUX_F_GETLK64 12 #define LINUX_F_SETLK64 13 #define LINUX_F_SETLKW64 14 -#define LINUX_F_RDLCK 0 -#define LINUX_F_WRLCK 1 -#define LINUX_F_UNLCK 2 - union l_semun { l_int val; l_uintptr_t buf; Modified: head/sys/compat/linux/linux_file.h ============================================================================== --- head/sys/compat/linux/linux_file.h Sun May 24 16:30:23 2015 (r283436) +++ head/sys/compat/linux/linux_file.h Sun May 24 16:31:44 2015 (r283437) @@ -54,4 +54,48 @@ #define LINUX_MS_NOEXEC 0x0008 #define LINUX_MS_REMOUNT 0x0020 +/* + * common open/fcntl flags + */ +#define LINUX_O_RDONLY 00000000 +#define LINUX_O_WRONLY 00000001 +#define LINUX_O_RDWR 00000002 +#define LINUX_O_ACCMODE 00000003 +#define LINUX_O_CREAT 00000100 +#define LINUX_O_EXCL 00000200 +#define LINUX_O_NOCTTY 00000400 +#define LINUX_O_TRUNC 00001000 +#define LINUX_O_APPEND 00002000 +#define LINUX_O_NONBLOCK 00004000 +#define LINUX_O_NDELAY LINUX_O_NONBLOCK +#define LINUX_O_SYNC 00010000 +#define LINUX_FASYNC 00020000 +#define LINUX_O_DIRECT 00040000 /* Direct disk access hint */ +#define LINUX_O_LARGEFILE 00100000 +#define LINUX_O_DIRECTORY 00200000 /* Must be a directory */ +#define LINUX_O_NOFOLLOW 00400000 /* Do not follow links */ +#define LINUX_O_NOATIME 01000000 +#define LINUX_O_CLOEXEC 02000000 + +#define LINUX_F_DUPFD 0 +#define LINUX_F_GETFD 1 +#define LINUX_F_SETFD 2 +#define LINUX_F_GETFL 3 +#define LINUX_F_SETFL 4 +#ifndef LINUX_F_GETLK +#define LINUX_F_GETLK 5 +#define LINUX_F_SETLK 6 +#define LINUX_F_SETLKW 7 +#endif +#ifndef LINUX_F_SETOWN +#define LINUX_F_SETOWN 8 +#define LINUX_F_GETOWN 9 +#endif + +#ifndef LINUX_F_RDLCK +#define LINUX_F_RDLCK 0 +#define LINUX_F_WRLCK 1 +#define LINUX_F_UNLCK 2 +#endif + #endif /* !_LINUX_FILE_H_ */ Modified: head/sys/compat/linux/linux_socket.c ============================================================================== --- head/sys/compat/linux/linux_socket.c Sun May 24 16:30:23 2015 (r283436) +++ head/sys/compat/linux/linux_socket.c Sun May 24 16:31:44 2015 (r283437) @@ -70,6 +70,7 @@ __FBSDID("$FreeBSD$"); #include #include #endif +#include #include #include Modified: head/sys/i386/linux/linux.h ============================================================================== --- head/sys/i386/linux/linux.h Sun May 24 16:30:23 2015 (r283436) +++ head/sys/i386/linux/linux.h Sun May 24 16:31:44 2015 (r283437) @@ -497,47 +497,12 @@ struct l_rt_sigframe { extern struct sysentvec linux_sysvec; /* - * open/fcntl flags + * arch specific open/fcntl flags */ -#define LINUX_O_RDONLY 00000000 -#define LINUX_O_WRONLY 00000001 -#define LINUX_O_RDWR 00000002 -#define LINUX_O_ACCMODE 00000003 -#define LINUX_O_CREAT 00000100 -#define LINUX_O_EXCL 00000200 -#define LINUX_O_NOCTTY 00000400 -#define LINUX_O_TRUNC 00001000 -#define LINUX_O_APPEND 00002000 -#define LINUX_O_NONBLOCK 00004000 -#define LINUX_O_NDELAY LINUX_O_NONBLOCK -#define LINUX_O_SYNC 00010000 -#define LINUX_FASYNC 00020000 -#define LINUX_O_DIRECT 00040000 /* Direct disk access hint */ -#define LINUX_O_LARGEFILE 00100000 -#define LINUX_O_DIRECTORY 00200000 /* Must be a directory */ -#define LINUX_O_NOFOLLOW 00400000 /* Do not follow links */ -#define LINUX_O_NOATIME 01000000 -#define LINUX_O_CLOEXEC 02000000 - -#define LINUX_F_DUPFD 0 -#define LINUX_F_GETFD 1 -#define LINUX_F_SETFD 2 -#define LINUX_F_GETFL 3 -#define LINUX_F_SETFL 4 -#define LINUX_F_GETLK 5 -#define LINUX_F_SETLK 6 -#define LINUX_F_SETLKW 7 -#define LINUX_F_SETOWN 8 -#define LINUX_F_GETOWN 9 - #define LINUX_F_GETLK64 12 #define LINUX_F_SETLK64 13 #define LINUX_F_SETLKW64 14 -#define LINUX_F_RDLCK 0 -#define LINUX_F_WRLCK 1 -#define LINUX_F_UNLCK 2 - union l_semun { l_int val; struct l_semid_ds *buf; From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:32:53 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 031B1765; Sun, 24 May 2015 16:32:53 +0000 (UTC) Received: from svn.freebsd.org (svn.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 E51571543; Sun, 24 May 2015 16:32:52 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OGWqhl089312; Sun, 24 May 2015 16:32:52 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OGWqrd089311; Sun, 24 May 2015 16:32:52 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241632.t4OGWqrd089311@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:32:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283438 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:32:53 -0000 Author: dchagin Date: Sun May 24 16:32:52 2015 New Revision: 283438 URL: https://svnweb.freebsd.org/changeset/base/283438 Log: Add several fcntl flags. Differential Revision: https://reviews.freebsd.org/D1088 Reviewed by: trasz Modified: head/sys/compat/linux/linux_file.h Modified: head/sys/compat/linux/linux_file.h ============================================================================== --- head/sys/compat/linux/linux_file.h Sun May 24 16:31:44 2015 (r283437) +++ head/sys/compat/linux/linux_file.h Sun May 24 16:32:52 2015 (r283438) @@ -91,6 +91,33 @@ #define LINUX_F_SETOWN 8 #define LINUX_F_GETOWN 9 #endif +#ifndef LINUX_F_SETSIG +#define LINUX_F_SETSIG 10 +#define LINUX_F_GETSIG 11 +#endif +#ifndef LINUX_F_SETOWN_EX +#define LINUX_F_SETOWN_EX 15 +#define LINUX_F_GETOWN_EX 16 +#define LINUX_F_GETOWNER_UIDS 17 +#endif + +#define LINUX_F_SPECIFIC_BASE 1024 + +#define LINUX_F_SETLEASE (LINUX_F_SPECIFIC_BASE + 0) +#define LINUX_F_GETLEASE (LINUX_F_SPECIFIC_BASE + 1) +#define LINUX_F_CANCELLK (LINUX_F_SPECIFIC_BASE + 5) +#define LINUX_F_DUPFD_CLOEXEC (LINUX_F_SPECIFIC_BASE + 6) +#define LINUX_F_NOTIFY (LINUX_F_SPECIFIC_BASE + 2) +#define LINUX_F_SETPIPE_SZ (LINUX_F_SPECIFIC_BASE + 7) +#define LINUX_F_GETPIPE_SZ (LINUX_F_SPECIFIC_BASE + 8) + +#define LINUX_F_GETLKP 36 +#define LINUX_F_SETLKP 37 +#define LINUX_F_SETLKPW 38 + +#define LINUX_F_OWNER_TID 0 +#define LINUX_F_OWNER_PID 1 +#define LINUX_F_OWNER_PGRP 2 #ifndef LINUX_F_RDLCK #define LINUX_F_RDLCK 0 From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:34:58 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 721BC921; Sun, 24 May 2015 16:34:58 +0000 (UTC) Received: from svn.freebsd.org (svn.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 601761576; Sun, 24 May 2015 16:34:58 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OGYwcJ089666; Sun, 24 May 2015 16:34:58 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OGYw3q089665; Sun, 24 May 2015 16:34:58 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241634.t4OGYw3q089665@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:34:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283439 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:34:58 -0000 Author: dchagin Date: Sun May 24 16:34:57 2015 New Revision: 283439 URL: https://svnweb.freebsd.org/changeset/base/283439 Log: Implement F_DUPFD_CLOEXEC fcntl flag. Differential Revision: https://reviews.freebsd.org/D1089 Reviewed by: trasz Modified: head/sys/compat/linux/linux_file.c Modified: head/sys/compat/linux/linux_file.c ============================================================================== --- head/sys/compat/linux/linux_file.c Sun May 24 16:32:52 2015 (r283438) +++ head/sys/compat/linux/linux_file.c Sun May 24 16:34:57 2015 (r283439) @@ -1390,6 +1390,9 @@ fcntl_common(struct thread *td, struct l fdrop(fp, td); return (kern_fcntl(td, args->fd, F_SETOWN, args->arg)); + + case LINUX_F_DUPFD_CLOEXEC: + return (kern_fcntl(td, args->fd, F_DUPFD_CLOEXEC, args->arg)); } return (EINVAL); From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:36:30 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C88DBA96; Sun, 24 May 2015 16:36:30 +0000 (UTC) Received: from svn.freebsd.org (svn.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 B5FF71596; Sun, 24 May 2015 16:36:30 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OGaUJV089965; Sun, 24 May 2015 16:36:30 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OGaUlf089963; Sun, 24 May 2015 16:36:30 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241636.t4OGaUlf089963@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:36:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283440 - in head/sys: kern sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:36:31 -0000 Author: dchagin Date: Sun May 24 16:36:29 2015 New Revision: 283440 URL: https://svnweb.freebsd.org/changeset/base/283440 Log: For future use in the Linuxulator: 1. Add a kern_kqueue() counterpart for kqueue() with flags parameter. 2. Be a bit secure. To avoid a double fp lookup add a kern_kevent_fp() counterpart for kern_kevent() with file pointer parameter instead of file descriptor an pass the buck to it. Suggested by: mjg [2] Differential Revision: https://reviews.freebsd.org/D1091 Reviewed by: trasz Modified: head/sys/kern/kern_event.c head/sys/sys/syscallsubr.h Modified: head/sys/kern/kern_event.c ============================================================================== --- head/sys/kern/kern_event.c Sun May 24 16:34:57 2015 (r283439) +++ head/sys/kern/kern_event.c Sun May 24 16:36:29 2015 (r283440) @@ -737,6 +737,13 @@ filt_usertouch(struct knote *kn, struct int sys_kqueue(struct thread *td, struct kqueue_args *uap) { + + return (kern_kqueue(td, 0)); +} + +int +kern_kqueue(struct thread *td, int flags) +{ struct filedesc *fdp; struct kqueue *kq; struct file *fp; @@ -757,7 +764,7 @@ sys_kqueue(struct thread *td, struct kqu PROC_UNLOCK(p); fdp = p->p_fd; - error = falloc(td, &fp, &fd, 0); + error = falloc(td, &fp, &fd, flags); if (error) goto done2; @@ -888,12 +895,9 @@ int kern_kevent(struct thread *td, int fd, int nchanges, int nevents, struct kevent_copyops *k_ops, const struct timespec *timeout) { - struct kevent keva[KQ_NEVENTS]; - struct kevent *kevp, *changes; - struct kqueue *kq; - struct file *fp; cap_rights_t rights; - int i, n, nerrors, error; + struct file *fp; + int error; cap_rights_init(&rights); if (nchanges > 0) @@ -904,9 +908,24 @@ kern_kevent(struct thread *td, int fd, i if (error != 0) return (error); + error = kern_kevent_fp(td, fp, nchanges, nevents, k_ops, timeout); + fdrop(fp, td); + + return (error); +} + +int +kern_kevent_fp(struct thread *td, struct file *fp, int nchanges, int nevents, + struct kevent_copyops *k_ops, const struct timespec *timeout) +{ + struct kevent keva[KQ_NEVENTS]; + struct kevent *kevp, *changes; + struct kqueue *kq; + int i, n, nerrors, error; + error = kqueue_acquire(fp, &kq); if (error != 0) - goto done_norel; + return (error); nerrors = 0; @@ -946,8 +965,6 @@ kern_kevent(struct thread *td, int fd, i error = kqueue_scan(kq, nevents, k_ops, timeout, keva, td); done: kqueue_release(kq, 0); -done_norel: - fdrop(fp, td); return (error); } Modified: head/sys/sys/syscallsubr.h ============================================================================== --- head/sys/sys/syscallsubr.h Sun May 24 16:34:57 2015 (r283439) +++ head/sys/sys/syscallsubr.h Sun May 24 16:36:29 2015 (r283440) @@ -121,6 +121,10 @@ int kern_jail_get(struct thread *td, str int kern_jail_set(struct thread *td, struct uio *options, int flags); int kern_kevent(struct thread *td, int fd, int nchanges, int nevents, struct kevent_copyops *k_ops, const struct timespec *timeout); +int kern_kevent_fp(struct thread *td, struct file *fp, int nchanges, + int nevents, struct kevent_copyops *k_ops, + const struct timespec *timeout); +int kern_kqueue(struct thread *td, int flags); int kern_kldload(struct thread *td, const char *file, int *fileid); int kern_kldstat(struct thread *td, int fileid, struct kld_file_stat *stat); int kern_kldunload(struct thread *td, int fileid, int flags); From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:41:45 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 00115D7A; Sun, 24 May 2015 16:41:44 +0000 (UTC) Received: from svn.freebsd.org (svn.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 DE30B167F; Sun, 24 May 2015 16:41:44 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OGfiSA094766; Sun, 24 May 2015 16:41:44 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OGfeAX094242; Sun, 24 May 2015 16:41:40 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241641.t4OGfeAX094242@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:41:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283441 - in head/sys: amd64/linux amd64/linux32 compat/linux conf i386/linux modules/linux modules/linux64 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:41:45 -0000 Author: dchagin Date: Sun May 24 16:41:39 2015 New Revision: 283441 URL: https://svnweb.freebsd.org/changeset/base/283441 Log: Implement epoll family system calls. This is a tiny wrapper around kqueue() to implement epoll subset of functionality. The kqueue user data are 32bit on i386 which is not enough for epoll user data, so we keep user data in the proc emuldata. Initial patch developed by rdivacky@ in 2007, then extended by Yuri Victorovich @ r255672 and finished by me in collaboration with mjg@ and jillies@. Differential Revision: https://reviews.freebsd.org/D1092 Added: head/sys/compat/linux/linux_event.c (contents, props changed) head/sys/compat/linux/linux_event.h (contents, props changed) Modified: head/sys/amd64/linux/linux_dummy.c head/sys/amd64/linux/syscalls.master head/sys/amd64/linux32/linux32_dummy.c head/sys/amd64/linux32/syscalls.master head/sys/compat/linux/linux_emul.c head/sys/compat/linux/linux_emul.h head/sys/compat/linux/linux_util.c head/sys/compat/linux/linux_util.h head/sys/conf/files.amd64 head/sys/conf/files.i386 head/sys/conf/files.pc98 head/sys/i386/linux/linux_dummy.c head/sys/i386/linux/syscalls.master head/sys/modules/linux/Makefile head/sys/modules/linux64/Makefile Modified: head/sys/amd64/linux/linux_dummy.c ============================================================================== --- head/sys/amd64/linux/linux_dummy.c Sun May 24 16:36:29 2015 (r283440) +++ head/sys/amd64/linux/linux_dummy.c Sun May 24 16:41:39 2015 (r283441) @@ -69,13 +69,10 @@ DUMMY(tuxcall); DUMMY(security); DUMMY(set_thread_area); DUMMY(lookup_dcookie); -DUMMY(epoll_create); DUMMY(epoll_ctl_old); DUMMY(epoll_wait_old); DUMMY(remap_file_pages); DUMMY(semtimedop); -DUMMY(epoll_ctl); -DUMMY(epoll_wait); DUMMY(mbind); DUMMY(get_mempolicy); DUMMY(set_mempolicy); @@ -112,7 +109,6 @@ DUMMY(timerfd_settime); DUMMY(timerfd_gettime); DUMMY(signalfd4); DUMMY(eventfd2); -DUMMY(epoll_create1); DUMMY(inotify_init1); DUMMY(preadv); DUMMY(pwritev); Modified: head/sys/amd64/linux/syscalls.master ============================================================================== --- head/sys/amd64/linux/syscalls.master Sun May 24 16:36:29 2015 (r283440) +++ head/sys/amd64/linux/syscalls.master Sun May 24 16:41:39 2015 (r283441) @@ -373,7 +373,7 @@ 210 AUE_NULL UNIMPL linux_io_cancel 211 AUE_NULL UNIMPL linux_get_thread_area 212 AUE_NULL STD { int linux_lookup_dcookie(void); } -213 AUE_NULL STD { int linux_epoll_create(void); } +213 AUE_NULL STD { int linux_epoll_create(l_int size); } 214 AUE_NULL STD { int linux_epoll_ctl_old(void); } 215 AUE_NULL STD { int linux_epoll_wait_old(void); } 216 AUE_NULL STD { int linux_remap_file_pages(void); } @@ -397,8 +397,10 @@ 230 AUE_NULL STD { int linux_clock_nanosleep(clockid_t which, int flags, \ struct l_timespec *rqtp, struct l_timespec *rmtp); } 231 AUE_EXIT STD { int linux_exit_group(int error_code); } -232 AUE_NULL STD { int linux_epoll_wait(void); } -233 AUE_NULL STD { int linux_epoll_ctl(void); } +232 AUE_NULL STD { int linux_epoll_wait(l_int epfd, struct epoll_event *events, \ + l_int maxevents, l_int timeout); } +233 AUE_NULL STD { int linux_epoll_ctl(l_int epfd, l_int op, l_int fd, \ + struct epoll_event *event); } 234 AUE_NULL STD { int linux_tgkill(int tgid, int pid, int sig); } 235 AUE_UTIMES STD { int linux_utimes(char *fname, \ struct l_timeval *tptr); } @@ -466,7 +468,8 @@ 278 AUE_NULL STD { int linux_vmsplice(void); } 279 AUE_NULL STD { int linux_move_pages(void); } 280 AUE_NULL STD { int linux_utimensat(void); } -281 AUE_NULL STD { int linux_epoll_pwait(void); } +281 AUE_NULL STD { int linux_epoll_pwait(l_int epfd, struct epoll_event *events, \ + l_int maxevents, l_int timeout, l_sigset_t *mask); } 282 AUE_NULL STD { int linux_signalfd(void); } 283 AUE_NULL STD { int linux_timerfd(void); } 284 AUE_NULL STD { int linux_eventfd(void); } @@ -477,7 +480,7 @@ l_uintptr_t namelen, int flags); } 289 AUE_NULL STD { int linux_signalfd4(void); } 290 AUE_NULL STD { int linux_eventfd2(void); } -291 AUE_NULL STD { int linux_epoll_create1(void); } +291 AUE_NULL STD { int linux_epoll_create1(l_int flags); } 292 AUE_NULL STD { int linux_dup3(l_int oldfd, \ l_int newfd, l_int flags); } 293 AUE_NULL STD { int linux_pipe2(l_int *pipefds, l_int flags); } Modified: head/sys/amd64/linux32/linux32_dummy.c ============================================================================== --- head/sys/amd64/linux32/linux32_dummy.c Sun May 24 16:36:29 2015 (r283440) +++ head/sys/amd64/linux32/linux32_dummy.c Sun May 24 16:41:39 2015 (r283441) @@ -68,9 +68,6 @@ DUMMY(pivot_root); DUMMY(mincore); DUMMY(ptrace); DUMMY(lookup_dcookie); -DUMMY(epoll_create); -DUMMY(epoll_ctl); -DUMMY(epoll_wait); DUMMY(remap_file_pages); DUMMY(fstatfs64); DUMMY(mbind); @@ -120,7 +117,6 @@ DUMMY(timerfd_gettime); /* linux 2.6.27: */ DUMMY(signalfd4); DUMMY(eventfd2); -DUMMY(epoll_create1); DUMMY(inotify_init1); /* linux 2.6.30: */ DUMMY(preadv); Modified: head/sys/amd64/linux32/syscalls.master ============================================================================== --- head/sys/amd64/linux32/syscalls.master Sun May 24 16:36:29 2015 (r283440) +++ head/sys/amd64/linux32/syscalls.master Sun May 24 16:41:39 2015 (r283441) @@ -430,9 +430,11 @@ 251 AUE_NULL UNIMPL 252 AUE_EXIT STD { int linux_exit_group(int error_code); } 253 AUE_NULL STD { int linux_lookup_dcookie(void); } -254 AUE_NULL STD { int linux_epoll_create(void); } -255 AUE_NULL STD { int linux_epoll_ctl(void); } -256 AUE_NULL STD { int linux_epoll_wait(void); } +254 AUE_NULL STD { int linux_epoll_create(l_int size); } +255 AUE_NULL STD { int linux_epoll_ctl(l_int epfd, l_int op, l_int fd, \ + struct epoll_event *event); } +256 AUE_NULL STD { int linux_epoll_wait(l_int epfd, struct epoll_event *events, \ + l_int maxevents, l_int timeout); } 257 AUE_NULL STD { int linux_remap_file_pages(void); } 258 AUE_NULL STD { int linux_set_tid_address(int *tidptr); } 259 AUE_NULL STD { int linux_timer_create(clockid_t clock_id, \ @@ -527,7 +529,8 @@ 317 AUE_NULL STD { int linux_move_pages(void); } ; linux 2.6.19: 318 AUE_NULL STD { int linux_getcpu(void); } -319 AUE_NULL STD { int linux_epoll_pwait(void); } +319 AUE_NULL STD { int linux_epoll_pwait(l_int epfd, struct epoll_event *events, \ + l_int maxevents, l_int timeout, l_osigset_t *mask); } ; linux 2.6.22: 320 AUE_NULL STD { int linux_utimensat(void); } 321 AUE_NULL STD { int linux_signalfd(void); } @@ -541,7 +544,7 @@ ; linux 2.6.27: 327 AUE_NULL STD { int linux_signalfd4(void); } 328 AUE_NULL STD { int linux_eventfd2(void); } -329 AUE_NULL STD { int linux_epoll_create1(void); } +329 AUE_NULL STD { int linux_epoll_create1(l_int flags); } 330 AUE_NULL STD { int linux_dup3(l_int oldfd, \ l_int newfd, l_int flags); } 331 AUE_NULL STD { int linux_pipe2(l_int *pipefds, l_int flags); } Modified: head/sys/compat/linux/linux_emul.c ============================================================================== --- head/sys/compat/linux/linux_emul.c Sun May 24 16:36:29 2015 (r283440) +++ head/sys/compat/linux/linux_emul.c Sun May 24 16:41:39 2015 (r283441) @@ -42,8 +42,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include -#include #include #include @@ -86,6 +84,7 @@ linux_proc_init(struct thread *td, struc { struct linux_emuldata *em; struct linux_pemuldata *pem; + struct epoll_emuldata *emd; if (newtd != NULL) { /* non-exec call */ @@ -93,8 +92,13 @@ linux_proc_init(struct thread *td, struc em->pdeath_signal = 0; em->robust_futexes = NULL; if (flags & LINUX_CLONE_THREAD) { + LINUX_CTR1(proc_init, "thread newtd(%d)", + newtd->td_tid); + em->em_tid = newtd->td_tid; } else { + LINUX_CTR1(proc_init, "fork newtd(%d)", + newtd->td_proc->p_pid); em->em_tid = newtd->td_proc->p_pid; @@ -105,12 +109,24 @@ linux_proc_init(struct thread *td, struc newtd->td_emuldata = em; } else { /* exec */ + LINUX_CTR1(proc_init, "exec newtd(%d)", + td->td_proc->p_pid); /* lookup the old one */ em = em_find(td); KASSERT(em != NULL, ("proc_init: emuldata not found in exec case.\n")); em->em_tid = td->td_proc->p_pid; + + /* epoll should be destroyed in a case of exec. */ + pem = pem_find(td->td_proc); + KASSERT(pem != NULL, ("proc_exit: proc emuldata not found.\n")); + + if (pem->epoll != NULL) { + emd = pem->epoll; + pem->epoll = NULL; + free(emd, M_EPOLL); + } } em->child_clear_tid = NULL; @@ -121,6 +137,7 @@ void linux_proc_exit(void *arg __unused, struct proc *p) { struct linux_pemuldata *pem; + struct epoll_emuldata *emd; struct thread *td = curthread; if (__predict_false(SV_CURPROC_ABI() != SV_ABI_LINUX)) @@ -133,6 +150,12 @@ linux_proc_exit(void *arg __unused, stru p->p_emuldata = NULL; + if (pem->epoll != NULL) { + emd = pem->epoll; + pem->epoll = NULL; + free(emd, M_EPOLL); + } + sx_destroy(&pem->pem_sx); free(pem, M_LINUX); } @@ -141,6 +164,7 @@ int linux_common_execve(struct thread *td, struct image_args *eargs) { struct linux_pemuldata *pem; + struct epoll_emuldata *emd; struct linux_emuldata *em; struct proc *p; int error; @@ -180,6 +204,12 @@ linux_common_execve(struct thread *td, s p->p_emuldata = NULL; PROC_UNLOCK(p); + if (pem->epoll != NULL) { + emd = pem->epoll; + pem->epoll = NULL; + free(emd, M_EPOLL); + } + free(em, M_TEMP); free(pem, M_LINUX); } @@ -197,6 +227,7 @@ linux_proc_exec(void *arg __unused, stru */ if (__predict_false((imgp->sysent->sv_flags & SV_ABI_MASK) == SV_ABI_LINUX)) { + if (SV_PROC_ABI(p) == SV_ABI_LINUX) linux_proc_init(td, NULL, 0); else Modified: head/sys/compat/linux/linux_emul.h ============================================================================== --- head/sys/compat/linux/linux_emul.h Sun May 24 16:36:29 2015 (r283440) +++ head/sys/compat/linux/linux_emul.h Sun May 24 16:41:39 2015 (r283441) @@ -60,9 +60,12 @@ int linux_common_execve(struct thread *, /* process emuldata flags */ #define LINUX_XDEPR_REQUEUEOP 0x00000001 /* uses deprecated futex REQUEUE op*/ +#define LINUX_XUNSUP_EPOLL 0x00000002 /* unsupported epoll events */ + struct linux_pemuldata { uint32_t flags; /* process emuldata flags */ struct sx pem_sx; /* lock for this struct */ + void *epoll; /* epoll data */ }; #define LINUX_PEM_XLOCK(p) sx_xlock(&(p)->pem_sx) Added: head/sys/compat/linux/linux_event.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/compat/linux/linux_event.c Sun May 24 16:41:39 2015 (r283441) @@ -0,0 +1,500 @@ +/*- + * Copyright (c) 2007 Roman Divacky + * Copyright (c) 2014 Dmitry Chagin + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_compat.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef COMPAT_LINUX32 +#include +#include +#else +#include +#include +#endif + +#include +#include +#include +#include + +/* + * epoll defines 'struct epoll_event' with the field 'data' as 64 bits + * on all architectures. But on 32 bit architectures BSD 'struct kevent' only + * has 32 bit opaque pointer as 'udata' field. So we can't pass epoll supplied + * data verbatuim. Therefore we allocate 64-bit memory block to pass + * user supplied data for every file descriptor. + */ + +typedef uint64_t epoll_udata_t; + +struct epoll_emuldata { + uint32_t fdc; /* epoll udata max index */ + epoll_udata_t udata[1]; /* epoll user data vector */ +}; + +#define EPOLL_DEF_SZ 16 +#define EPOLL_SIZE(fdn) \ + (sizeof(struct epoll_emuldata)+(fdn) * sizeof(epoll_udata_t)) + +struct epoll_event { + uint32_t events; + epoll_udata_t data; +} +#if defined(__amd64__) +__attribute__((packed)) +#endif +; + +#define LINUX_MAX_EVENTS (INT_MAX / sizeof(struct epoll_event)) + +static void epoll_fd_install(struct thread *td, int fd, epoll_udata_t udata); +static int epoll_to_kevent(struct thread *td, struct file *epfp, + int fd, struct epoll_event *l_event, int *kev_flags, + struct kevent *kevent, int *nkevents); +static void kevent_to_epoll(struct kevent *kevent, struct epoll_event *l_event); +static int epoll_kev_copyout(void *arg, struct kevent *kevp, int count); +static int epoll_kev_copyin(void *arg, struct kevent *kevp, int count); +static int epoll_delete_event(struct thread *td, struct file *epfp, + int fd, int filter); +static int epoll_delete_all_events(struct thread *td, struct file *epfp, + int fd); + +struct epoll_copyin_args { + struct kevent *changelist; +}; + +struct epoll_copyout_args { + struct epoll_event *leventlist; + struct proc *p; + uint32_t count; + int error; +}; + + +static void +epoll_fd_install(struct thread *td, int fd, epoll_udata_t udata) +{ + struct linux_pemuldata *pem; + struct epoll_emuldata *emd; + struct proc *p; + + p = td->td_proc; + + pem = pem_find(p); + KASSERT(pem != NULL, ("epoll proc emuldata not found.\n")); + + LINUX_PEM_XLOCK(pem); + if (pem->epoll == NULL) { + emd = malloc(EPOLL_SIZE(fd), M_EPOLL, M_WAITOK); + emd->fdc = fd; + pem->epoll = emd; + } else { + emd = pem->epoll; + if (fd > emd->fdc) { + emd = realloc(emd, EPOLL_SIZE(fd), M_EPOLL, M_WAITOK); + emd->fdc = fd; + pem->epoll = emd; + } + } + emd->udata[fd] = udata; + LINUX_PEM_XUNLOCK(pem); +} + +static int +epoll_create_common(struct thread *td, int flags) +{ + int error; + + error = kern_kqueue(td, flags); + if (error) + return (error); + + epoll_fd_install(td, EPOLL_DEF_SZ, 0); + + return (0); +} + +int +linux_epoll_create(struct thread *td, struct linux_epoll_create_args *args) +{ + + /* + * args->size is unused. Linux just tests it + * and then forgets it as well. + */ + if (args->size <= 0) + return (EINVAL); + + return (epoll_create_common(td, 0)); +} + +int +linux_epoll_create1(struct thread *td, struct linux_epoll_create1_args *args) +{ + int flags; + + if ((args->flags & ~(LINUX_O_CLOEXEC)) != 0) + return (EINVAL); + + flags = 0; + if ((args->flags & LINUX_O_CLOEXEC) != 0) + flags |= O_CLOEXEC; + + return (epoll_create_common(td, flags)); +} + +/* Structure converting function from epoll to kevent. */ +static int +epoll_to_kevent(struct thread *td, struct file *epfp, + int fd, struct epoll_event *l_event, int *kev_flags, + struct kevent *kevent, int *nkevents) +{ + uint32_t levents = l_event->events; + struct linux_pemuldata *pem; + struct proc *p; + + /* flags related to how event is registered */ + if ((levents & LINUX_EPOLLONESHOT) != 0) + *kev_flags |= EV_ONESHOT; + if ((levents & LINUX_EPOLLET) != 0) + *kev_flags |= EV_CLEAR; + + /* flags related to what event is registered */ + if ((levents & LINUX_EPOLL_EVRD) != 0) { + EV_SET(kevent++, fd, EVFILT_READ, *kev_flags, 0, 0, 0); + ++(*nkevents); + } + if ((levents & LINUX_EPOLL_EVWR) != 0) { + EV_SET(kevent++, fd, EVFILT_WRITE, *kev_flags, 0, 0, 0); + ++(*nkevents); + } + + if ((levents & ~(LINUX_EPOLL_EVSUP)) != 0) { + p = td->td_proc; + + pem = pem_find(p); + KASSERT(pem != NULL, ("epoll proc emuldata not found.\n")); + KASSERT(pem->epoll != NULL, ("epoll proc epolldata not found.\n")); + + LINUX_PEM_XLOCK(pem); + if ((pem->flags & LINUX_XUNSUP_EPOLL) == 0) { + pem->flags |= LINUX_XUNSUP_EPOLL; + LINUX_PEM_XUNLOCK(pem); + linux_msg(td, "epoll_ctl unsupported flags: 0x%x\n", + levents); + } else + LINUX_PEM_XUNLOCK(pem); + return (EINVAL); + } + + return (0); +} + +/* + * Structure converting function from kevent to epoll. In a case + * this is called on error in registration we store the error in + * event->data and pick it up later in linux_epoll_ctl(). + */ +static void +kevent_to_epoll(struct kevent *kevent, struct epoll_event *l_event) +{ + + if ((kevent->flags & EV_ERROR) != 0) + return; + + switch (kevent->filter) { + case EVFILT_READ: + l_event->events = LINUX_EPOLLIN|LINUX_EPOLLRDNORM|LINUX_EPOLLPRI; + break; + case EVFILT_WRITE: + l_event->events = LINUX_EPOLLOUT|LINUX_EPOLLWRNORM; + break; + } +} + +/* + * Copyout callback used by kevent. This converts kevent + * events to epoll events and copies them back to the + * userspace. This is also called on error on registering + * of the filter. + */ +static int +epoll_kev_copyout(void *arg, struct kevent *kevp, int count) +{ + struct epoll_copyout_args *args; + struct linux_pemuldata *pem; + struct epoll_emuldata *emd; + struct epoll_event *eep; + int error, fd, i; + + args = (struct epoll_copyout_args*) arg; + eep = malloc(sizeof(*eep) * count, M_EPOLL, M_WAITOK | M_ZERO); + + pem = pem_find(args->p); + KASSERT(pem != NULL, ("epoll proc emuldata not found.\n")); + LINUX_PEM_SLOCK(pem); + emd = pem->epoll; + KASSERT(emd != NULL, ("epoll proc epolldata not found.\n")); + + for (i = 0; i < count; i++) { + kevent_to_epoll(&kevp[i], &eep[i]); + + fd = kevp[i].ident; + KASSERT(fd <= emd->fdc, ("epoll user data vector" + " is too small.\n")); + eep[i].data = emd->udata[fd]; + } + LINUX_PEM_SUNLOCK(pem); + + error = copyout(eep, args->leventlist, count * sizeof(*eep)); + if (error == 0) { + args->leventlist += count; + args->count += count; + } else if (args->error == 0) + args->error = error; + + free(eep, M_EPOLL); + return (error); +} + +/* + * Copyin callback used by kevent. This copies already + * converted filters from kernel memory to the kevent + * internal kernel memory. Hence the memcpy instead of + * copyin. + */ +static int +epoll_kev_copyin(void *arg, struct kevent *kevp, int count) +{ + struct epoll_copyin_args *args; + + args = (struct epoll_copyin_args*) arg; + + memcpy(kevp, args->changelist, count * sizeof(*kevp)); + args->changelist += count; + + return (0); +} + +/* + * Load epoll filter, convert it to kevent filter + * and load it into kevent subsystem. + */ +int +linux_epoll_ctl(struct thread *td, struct linux_epoll_ctl_args *args) +{ + struct file *epfp, *fp; + struct epoll_copyin_args ciargs; + struct kevent kev[2]; + struct kevent_copyops k_ops = { &ciargs, + NULL, + epoll_kev_copyin}; + struct epoll_event le; + cap_rights_t rights; + int kev_flags; + int nchanges = 0; + int error; + + if (args->op != LINUX_EPOLL_CTL_DEL) { + error = copyin(args->event, &le, sizeof(le)); + if (error != 0) + return (error); + } + + error = fget(td, args->epfd, + cap_rights_init(&rights, CAP_KQUEUE_CHANGE), &epfp); + if (error != 0) + return (error); + if (epfp->f_type != DTYPE_KQUEUE) + goto leave1; + + /* Protect user data vector from incorrectly supplied fd. */ + error = fget(td, args->fd, cap_rights_init(&rights, CAP_POLL_EVENT), &fp); + if (error != 0) + goto leave1; + + /* Linux disallows spying on himself */ + if (epfp == fp) { + error = EINVAL; + goto leave0; + } + + ciargs.changelist = kev; + + switch (args->op) { + case LINUX_EPOLL_CTL_MOD: + /* + * We don't memorize which events were set for this FD + * on this level, so just delete all we could have set: + * EVFILT_READ and EVFILT_WRITE, ignoring any errors + */ + error = epoll_delete_all_events(td, epfp, args->fd); + if (error) + goto leave0; + /* FALLTHROUGH */ + + case LINUX_EPOLL_CTL_ADD: + kev_flags = EV_ADD | EV_ENABLE; + break; + + case LINUX_EPOLL_CTL_DEL: + /* CTL_DEL means unregister this fd with this epoll */ + error = epoll_delete_all_events(td, epfp, args->fd); + goto leave0; + + default: + error = EINVAL; + goto leave0; + } + + error = epoll_to_kevent(td, epfp, args->fd, &le, &kev_flags, + kev, &nchanges); + if (error) + goto leave0; + + epoll_fd_install(td, args->fd, le.data); + + error = kern_kevent_fp(td, epfp, nchanges, 0, &k_ops, NULL); + +leave0: + fdrop(fp, td); + +leave1: + fdrop(epfp, td); + return (error); +} + +/* + * Wait for a filter to be triggered on the epoll file descriptor. + */ +int +linux_epoll_wait(struct thread *td, struct linux_epoll_wait_args *args) +{ + struct file *epfp; + struct timespec ts, *tsp; + cap_rights_t rights; + struct epoll_copyout_args coargs; + struct kevent_copyops k_ops = { &coargs, + epoll_kev_copyout, + NULL}; + int error; + + if (args->maxevents <= 0 || args->maxevents > LINUX_MAX_EVENTS) + return (EINVAL); + + error = fget(td, args->epfd, + cap_rights_init(&rights, CAP_KQUEUE_EVENT), &epfp); + if (error != 0) + return (error); + + coargs.leventlist = args->events; + coargs.p = td->td_proc; + coargs.count = 0; + coargs.error = 0; + + if (args->timeout != -1) { + if (args->timeout < 0) { + error = EINVAL; + goto leave; + } + /* Convert from milliseconds to timespec. */ + ts.tv_sec = args->timeout / 1000; + ts.tv_nsec = (args->timeout % 1000) * 1000000; + tsp = &ts; + } else { + tsp = NULL; + } + + error = kern_kevent_fp(td, epfp, 0, args->maxevents, &k_ops, tsp); + if (error == 0 && coargs.error != 0) + error = coargs.error; + + /* + * kern_kevent might return ENOMEM which is not expected from epoll_wait. + * Maybe we should translate that but I don't think it matters at all. + */ + if (error == 0) + td->td_retval[0] = coargs.count; +leave: + fdrop(epfp, td); + return (error); +} + +static int +epoll_delete_event(struct thread *td, struct file *epfp, int fd, int filter) +{ + struct epoll_copyin_args ciargs; + struct kevent kev; + struct kevent_copyops k_ops = { &ciargs, + NULL, + epoll_kev_copyin}; + int error; + + ciargs.changelist = &kev; + EV_SET(&kev, fd, filter, EV_DELETE | EV_DISABLE, 0, 0, 0); + + error = kern_kevent_fp(td, epfp, 1, 0, &k_ops, NULL); + + /* + * here we ignore ENONT, because we don't keep track of events here + */ + if (error == ENOENT) + error = 0; + return (error); +} + +static int +epoll_delete_all_events(struct thread *td, struct file *epfp, int fd) +{ + int error1, error2; + + error1 = epoll_delete_event(td, epfp, fd, EVFILT_READ); + error2 = epoll_delete_event(td, epfp, fd, EVFILT_WRITE); + + /* report any errors we got */ + return (error1 == 0 ? error2 : error1); +} Added: head/sys/compat/linux/linux_event.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/compat/linux/linux_event.h Sun May 24 16:41:39 2015 (r283441) @@ -0,0 +1,58 @@ +/*- + * Copyright (c) 2007 Roman Divacky + * Copyright (c) 2014 Dmitry Chagin + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _LINUX_EVENT_H_ +#define _LINUX_EVENT_H_ + +#define LINUX_EPOLLIN 0x001 +#define LINUX_EPOLLPRI 0x002 +#define LINUX_EPOLLOUT 0x004 +#define LINUX_EPOLLRDNORM 0x040 +#define LINUX_EPOLLRDBAND 0x080 +#define LINUX_EPOLLWRNORM 0x100 +#define LINUX_EPOLLWRBAND 0x200 +#define LINUX_EPOLLMSG 0x400 +#define LINUX_EPOLLERR 0x008 +#define LINUX_EPOLLHUP 0x010 +#define LINUX_EPOLLRDHUP 0x2000 +#define LINUX_EPOLLWAKEUP 1u<<29 +#define LINUX_EPOLLONESHOT 1u<<30 +#define LINUX_EPOLLET 1u<<31 + +#define LINUX_EPOLL_EVRD (LINUX_EPOLLIN|LINUX_EPOLLRDNORM \ + |LINUX_EPOLLHUP|LINUX_EPOLLPRI) +#define LINUX_EPOLL_EVWR (LINUX_EPOLLOUT|LINUX_EPOLLWRNORM) +#define LINUX_EPOLL_EVSUP (LINUX_EPOLLET|LINUX_EPOLLONESHOT \ + |LINUX_EPOLL_EVRD|LINUX_EPOLL_EVWR) + +#define LINUX_EPOLL_CTL_ADD 1 +#define LINUX_EPOLL_CTL_DEL 2 +#define LINUX_EPOLL_CTL_MOD 3 + +#endif /* !_LINUX_EVENT_H_ */ Modified: head/sys/compat/linux/linux_util.c ============================================================================== --- head/sys/compat/linux/linux_util.c Sun May 24 16:36:29 2015 (r283440) +++ head/sys/compat/linux/linux_util.c Sun May 24 16:41:39 2015 (r283441) @@ -54,6 +54,7 @@ __FBSDID("$FreeBSD$"); #include MALLOC_DEFINE(M_LINUX, "linux", "Linux mode structures"); +MALLOC_DEFINE(M_EPOLL, "lepoll", "Linux events structures"); MALLOC_DEFINE(M_FUTEX, "futex", "Linux futexes"); MALLOC_DEFINE(M_FUTEX_WP, "futex wp", "Linux futex waiting proc"); Modified: head/sys/compat/linux/linux_util.h ============================================================================== --- head/sys/compat/linux/linux_util.h Sun May 24 16:36:29 2015 (r283440) +++ head/sys/compat/linux/linux_util.h Sun May 24 16:41:39 2015 (r283441) @@ -45,6 +45,7 @@ #include MALLOC_DECLARE(M_LINUX); +MALLOC_DECLARE(M_EPOLL); MALLOC_DECLARE(M_FUTEX); MALLOC_DECLARE(M_FUTEX_WP); Modified: head/sys/conf/files.amd64 ============================================================================== --- head/sys/conf/files.amd64 Sun May 24 16:36:29 2015 (r283440) +++ head/sys/conf/files.amd64 Sun May 24 16:41:39 2015 (r283441) @@ -509,6 +509,7 @@ compat/linux/linux_uid16.c optional comp compat/linux/linux_util.c optional compat_linux32 compat/linux/linux_vdso.c optional compat_linux32 compat/linux/linux_common.c optional compat_linux32 +compat/linux/linux_event.c optional compat_linux32 dev/amr/amr_linux.c optional compat_linux32 amr dev/mfi/mfi_linux.c optional compat_linux32 mfi # Modified: head/sys/conf/files.i386 ============================================================================== --- head/sys/conf/files.i386 Sun May 24 16:36:29 2015 (r283440) +++ head/sys/conf/files.i386 Sun May 24 16:41:39 2015 (r283441) @@ -81,6 +81,7 @@ hptrr_lib.o optional hptrr \ cddl/contrib/opensolaris/common/atomic/i386/opensolaris_atomic.S optional zfs compile-with "${ZFS_S}" compat/linprocfs/linprocfs.c optional linprocfs compat/linsysfs/linsysfs.c optional linsysfs +compat/linux/linux_event.c optional compat_linux compat/linux/linux_emul.c optional compat_linux compat/linux/linux_file.c optional compat_linux compat/linux/linux_fork.c optional compat_linux Modified: head/sys/conf/files.pc98 ============================================================================== --- head/sys/conf/files.pc98 Sun May 24 16:36:29 2015 (r283440) +++ head/sys/conf/files.pc98 Sun May 24 16:41:39 2015 (r283441) @@ -41,6 +41,7 @@ ukbdmap.h optional ukbd_dflt_keymap \ cddl/contrib/opensolaris/common/atomic/i386/opensolaris_atomic.S optional zfs compile-with "${ZFS_S}" compat/linprocfs/linprocfs.c optional linprocfs compat/linsysfs/linsysfs.c optional linsysfs +compat/linux/linux_event.c optional compat_linux compat/linux/linux_emul.c optional compat_linux compat/linux/linux_file.c optional compat_linux compat/linux/linux_fork.c optional compat_linux Modified: head/sys/i386/linux/linux_dummy.c ============================================================================== --- head/sys/i386/linux/linux_dummy.c Sun May 24 16:36:29 2015 (r283440) +++ head/sys/i386/linux/linux_dummy.c Sun May 24 16:41:39 2015 (r283441) @@ -70,9 +70,6 @@ DUMMY(setfsgid); DUMMY(pivot_root); DUMMY(mincore); DUMMY(lookup_dcookie); -DUMMY(epoll_create); -DUMMY(epoll_ctl); -DUMMY(epoll_wait); DUMMY(remap_file_pages); DUMMY(fstatfs64); DUMMY(mbind); @@ -116,7 +113,6 @@ DUMMY(timerfd_gettime); /* linux 2.6.27: */ DUMMY(signalfd4); DUMMY(eventfd2); -DUMMY(epoll_create1); DUMMY(inotify_init1); /* linux 2.6.30: */ DUMMY(preadv); Modified: head/sys/i386/linux/syscalls.master ============================================================================== --- head/sys/i386/linux/syscalls.master Sun May 24 16:36:29 2015 (r283440) +++ head/sys/i386/linux/syscalls.master Sun May 24 16:41:39 2015 (r283441) @@ -432,9 +432,11 @@ 251 AUE_NULL UNIMPL 252 AUE_EXIT STD { int linux_exit_group(int error_code); } 253 AUE_NULL STD { int linux_lookup_dcookie(void); } -254 AUE_NULL STD { int linux_epoll_create(void); } -255 AUE_NULL STD { int linux_epoll_ctl(void); } -256 AUE_NULL STD { int linux_epoll_wait(void); } +254 AUE_NULL STD { int linux_epoll_create(l_int size); } +255 AUE_NULL STD { int linux_epoll_ctl(l_int epfd, l_int op, l_int fd, \ + struct epoll_event *event); } +256 AUE_NULL STD { int linux_epoll_wait(l_int epfd, struct epoll_event *events, \ + l_int maxevents, l_int timeout); } 257 AUE_NULL STD { int linux_remap_file_pages(void); } 258 AUE_NULL STD { int linux_set_tid_address(int *tidptr); } 259 AUE_NULL STD { int linux_timer_create(clockid_t clock_id, \ @@ -535,7 +537,8 @@ 317 AUE_NULL STD { int linux_move_pages(void); } ; linux 2.6.19: 318 AUE_NULL STD { int linux_getcpu(void); } -319 AUE_NULL STD { int linux_epoll_pwait(void); } +319 AUE_NULL STD { int linux_epoll_pwait(l_int epfd, struct epoll_event *events, \ + l_int maxevents, l_int timeout, l_osigset_t *mask); } ; linux 2.6.22: 320 AUE_NULL STD { int linux_utimensat(void); } 321 AUE_NULL STD { int linux_signalfd(void); } @@ -549,7 +552,7 @@ ; linux 2.6.27: 327 AUE_NULL STD { int linux_signalfd4(void); } 328 AUE_NULL STD { int linux_eventfd2(void); } -329 AUE_NULL STD { int linux_epoll_create1(void); } +329 AUE_NULL STD { int linux_epoll_create1(l_int flags); } 330 AUE_NULL STD { int linux_dup3(l_int oldfd, \ l_int newfd, l_int flags); } 331 AUE_NULL STD { int linux_pipe2(l_int *pipefds, l_int flags); } Modified: head/sys/modules/linux/Makefile ============================================================================== --- head/sys/modules/linux/Makefile Sun May 24 16:36:29 2015 (r283440) +++ head/sys/modules/linux/Makefile Sun May 24 16:41:39 2015 (r283441) @@ -10,7 +10,7 @@ CFLAGS+=-DCOMPAT_FREEBSD32 -DCOMPAT_LINU VDSO= linux${SFX}_vdso KMOD= linux -SRCS= linux_fork.c linux${SFX}_dummy.c linux_file.c \ +SRCS= linux_fork.c linux${SFX}_dummy.c linux_file.c linux_event.c \ linux_futex.c linux_getcwd.c linux_ioctl.c linux_ipc.c \ linux${SFX}_machdep.c linux_misc.c linux_signal.c \ linux_socket.c linux_stats.c linux_sysctl.c linux${SFX}_sysent.c \ Modified: head/sys/modules/linux64/Makefile ============================================================================== --- head/sys/modules/linux64/Makefile Sun May 24 16:36:29 2015 (r283440) +++ head/sys/modules/linux64/Makefile Sun May 24 16:41:39 2015 (r283441) @@ -5,7 +5,7 @@ VDSO= linux_vdso KMOD= linux64 -SRCS= linux_fork.c linux_dummy.c linux_file.c \ +SRCS= linux_fork.c linux_dummy.c linux_file.c linux_event.c \ linux_futex.c linux_getcwd.c linux_ioctl.c linux_ipc.c \ linux_machdep.c linux_misc.c linux_signal.c \ linux_socket.c linux_stats.c linux_sysctl.c linux_sysent.c \ From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:42:54 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3BE27EE6; Sun, 24 May 2015 16:42:54 +0000 (UTC) Received: from svn.freebsd.org (svn.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 27C8D1699; Sun, 24 May 2015 16:42:54 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OGgs3d095141; Sun, 24 May 2015 16:42:54 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OGgoaQ095102; Sun, 24 May 2015 16:42:50 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241642.t4OGgoaQ095102@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:42:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283442 - in head/sys: amd64/linux amd64/linux32 i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:42:54 -0000 Author: dchagin Date: Sun May 24 16:42:49 2015 New Revision: 283442 URL: https://svnweb.freebsd.org/changeset/base/283442 Log: Regen for r283441. Modified: head/sys/amd64/linux/linux_proto.h head/sys/amd64/linux/linux_syscall.h head/sys/amd64/linux/linux_syscalls.c head/sys/amd64/linux/linux_sysent.c head/sys/amd64/linux/linux_systrace_args.c head/sys/amd64/linux32/linux32_proto.h head/sys/amd64/linux32/linux32_syscall.h head/sys/amd64/linux32/linux32_syscalls.c head/sys/amd64/linux32/linux32_sysent.c head/sys/amd64/linux32/linux32_systrace_args.c head/sys/i386/linux/linux_proto.h head/sys/i386/linux/linux_syscall.h head/sys/i386/linux/linux_syscalls.c head/sys/i386/linux/linux_sysent.c head/sys/i386/linux/linux_systrace_args.c Modified: head/sys/amd64/linux/linux_proto.h ============================================================================== --- head/sys/amd64/linux/linux_proto.h Sun May 24 16:41:39 2015 (r283441) +++ head/sys/amd64/linux/linux_proto.h Sun May 24 16:42:49 2015 (r283442) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283428 2015-05-24 16:18:03Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283441 2015-05-24 16:41:39Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -713,7 +713,7 @@ struct linux_lookup_dcookie_args { register_t dummy; }; struct linux_epoll_create_args { - register_t dummy; + char size_l_[PADL_(l_int)]; l_int size; char size_r_[PADR_(l_int)]; }; struct linux_epoll_ctl_old_args { register_t dummy; @@ -784,10 +784,16 @@ struct linux_exit_group_args { char error_code_l_[PADL_(int)]; int error_code; char error_code_r_[PADR_(int)]; }; struct linux_epoll_wait_args { - register_t dummy; + char epfd_l_[PADL_(l_int)]; l_int epfd; char epfd_r_[PADR_(l_int)]; + char events_l_[PADL_(struct epoll_event *)]; struct epoll_event * events; char events_r_[PADR_(struct epoll_event *)]; + char maxevents_l_[PADL_(l_int)]; l_int maxevents; char maxevents_r_[PADR_(l_int)]; + char timeout_l_[PADL_(l_int)]; l_int timeout; char timeout_r_[PADR_(l_int)]; }; struct linux_epoll_ctl_args { - register_t dummy; + char epfd_l_[PADL_(l_int)]; l_int epfd; char epfd_r_[PADR_(l_int)]; + char op_l_[PADL_(l_int)]; l_int op; char op_r_[PADR_(l_int)]; + char fd_l_[PADL_(l_int)]; l_int fd; char fd_r_[PADR_(l_int)]; + char event_l_[PADL_(struct epoll_event *)]; struct epoll_event * event; char event_r_[PADR_(struct epoll_event *)]; }; struct linux_tgkill_args { char tgid_l_[PADL_(int)]; int tgid; char tgid_r_[PADR_(int)]; @@ -978,7 +984,11 @@ struct linux_utimensat_args { register_t dummy; }; struct linux_epoll_pwait_args { - register_t dummy; + char epfd_l_[PADL_(l_int)]; l_int epfd; char epfd_r_[PADR_(l_int)]; + char events_l_[PADL_(struct epoll_event *)]; struct epoll_event * events; char events_r_[PADR_(struct epoll_event *)]; + char maxevents_l_[PADL_(l_int)]; l_int maxevents; char maxevents_r_[PADR_(l_int)]; + char timeout_l_[PADL_(l_int)]; l_int timeout; char timeout_r_[PADR_(l_int)]; + char mask_l_[PADL_(l_sigset_t *)]; l_sigset_t * mask; char mask_r_[PADR_(l_sigset_t *)]; }; struct linux_signalfd_args { register_t dummy; @@ -1011,7 +1021,7 @@ struct linux_eventfd2_args { register_t dummy; }; struct linux_epoll_create1_args { - register_t dummy; + char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)]; }; struct linux_dup3_args { char oldfd_l_[PADL_(l_int)]; l_int oldfd; char oldfd_r_[PADR_(l_int)]; Modified: head/sys/amd64/linux/linux_syscall.h ============================================================================== --- head/sys/amd64/linux/linux_syscall.h Sun May 24 16:41:39 2015 (r283441) +++ head/sys/amd64/linux/linux_syscall.h Sun May 24 16:42:49 2015 (r283442) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283428 2015-05-24 16:18:03Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283441 2015-05-24 16:41:39Z dchagin */ #define LINUX_SYS_read 0 Modified: head/sys/amd64/linux/linux_syscalls.c ============================================================================== --- head/sys/amd64/linux/linux_syscalls.c Sun May 24 16:41:39 2015 (r283441) +++ head/sys/amd64/linux/linux_syscalls.c Sun May 24 16:42:49 2015 (r283442) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283428 2015-05-24 16:18:03Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283441 2015-05-24 16:41:39Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/amd64/linux/linux_sysent.c ============================================================================== --- head/sys/amd64/linux/linux_sysent.c Sun May 24 16:41:39 2015 (r283441) +++ head/sys/amd64/linux/linux_sysent.c Sun May 24 16:42:49 2015 (r283442) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283428 2015-05-24 16:18:03Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283441 2015-05-24 16:41:39Z dchagin */ #include @@ -231,7 +231,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 210 = linux_io_cancel */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 211 = linux_get_thread_area */ { 0, (sy_call_t *)linux_lookup_dcookie, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 212 = linux_lookup_dcookie */ - { 0, (sy_call_t *)linux_epoll_create, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 213 = linux_epoll_create */ + { AS(linux_epoll_create_args), (sy_call_t *)linux_epoll_create, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 213 = linux_epoll_create */ { 0, (sy_call_t *)linux_epoll_ctl_old, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 214 = linux_epoll_ctl_old */ { 0, (sy_call_t *)linux_epoll_wait_old, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 215 = linux_epoll_wait_old */ { 0, (sy_call_t *)linux_remap_file_pages, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 216 = linux_remap_file_pages */ @@ -250,8 +250,8 @@ struct sysent linux_sysent[] = { { AS(linux_clock_getres_args), (sy_call_t *)linux_clock_getres, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 229 = linux_clock_getres */ { AS(linux_clock_nanosleep_args), (sy_call_t *)linux_clock_nanosleep, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 230 = linux_clock_nanosleep */ { AS(linux_exit_group_args), (sy_call_t *)linux_exit_group, AUE_EXIT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 231 = linux_exit_group */ - { 0, (sy_call_t *)linux_epoll_wait, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 232 = linux_epoll_wait */ - { 0, (sy_call_t *)linux_epoll_ctl, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 233 = linux_epoll_ctl */ + { AS(linux_epoll_wait_args), (sy_call_t *)linux_epoll_wait, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 232 = linux_epoll_wait */ + { AS(linux_epoll_ctl_args), (sy_call_t *)linux_epoll_ctl, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 233 = linux_epoll_ctl */ { AS(linux_tgkill_args), (sy_call_t *)linux_tgkill, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 234 = linux_tgkill */ { AS(linux_utimes_args), (sy_call_t *)linux_utimes, AUE_UTIMES, NULL, 0, 0, 0, SY_THR_STATIC }, /* 235 = linux_utimes */ { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 236 = vserver */ @@ -299,7 +299,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_vmsplice, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 278 = linux_vmsplice */ { 0, (sy_call_t *)linux_move_pages, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 279 = linux_move_pages */ { 0, (sy_call_t *)linux_utimensat, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 280 = linux_utimensat */ - { 0, (sy_call_t *)linux_epoll_pwait, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 281 = linux_epoll_pwait */ + { AS(linux_epoll_pwait_args), (sy_call_t *)linux_epoll_pwait, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 281 = linux_epoll_pwait */ { 0, (sy_call_t *)linux_signalfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 282 = linux_signalfd */ { 0, (sy_call_t *)linux_timerfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 283 = linux_timerfd */ { 0, (sy_call_t *)linux_eventfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 284 = linux_eventfd */ @@ -309,7 +309,7 @@ struct sysent linux_sysent[] = { { AS(linux_accept4_args), (sy_call_t *)linux_accept4, AUE_ACCEPT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 288 = linux_accept4 */ { 0, (sy_call_t *)linux_signalfd4, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 289 = linux_signalfd4 */ { 0, (sy_call_t *)linux_eventfd2, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 290 = linux_eventfd2 */ - { 0, (sy_call_t *)linux_epoll_create1, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 291 = linux_epoll_create1 */ + { AS(linux_epoll_create1_args), (sy_call_t *)linux_epoll_create1, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 291 = linux_epoll_create1 */ { AS(linux_dup3_args), (sy_call_t *)linux_dup3, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 292 = linux_dup3 */ { AS(linux_pipe2_args), (sy_call_t *)linux_pipe2, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 293 = linux_pipe2 */ { 0, (sy_call_t *)linux_inotify_init1, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 294 = linux_inotify_init1 */ Modified: head/sys/amd64/linux/linux_systrace_args.c ============================================================================== --- head/sys/amd64/linux/linux_systrace_args.c Sun May 24 16:41:39 2015 (r283441) +++ head/sys/amd64/linux/linux_systrace_args.c Sun May 24 16:42:49 2015 (r283442) @@ -1578,7 +1578,9 @@ systrace_args(int sysnum, void *params, } /* linux_epoll_create */ case 213: { - *n_args = 0; + struct linux_epoll_create_args *p = params; + iarg[0] = p->size; /* l_int */ + *n_args = 1; break; } /* linux_epoll_ctl_old */ @@ -1711,12 +1713,22 @@ systrace_args(int sysnum, void *params, } /* linux_epoll_wait */ case 232: { - *n_args = 0; + struct linux_epoll_wait_args *p = params; + iarg[0] = p->epfd; /* l_int */ + uarg[1] = (intptr_t) p->events; /* struct epoll_event * */ + iarg[2] = p->maxevents; /* l_int */ + iarg[3] = p->timeout; /* l_int */ + *n_args = 4; break; } /* linux_epoll_ctl */ case 233: { - *n_args = 0; + struct linux_epoll_ctl_args *p = params; + iarg[0] = p->epfd; /* l_int */ + iarg[1] = p->op; /* l_int */ + iarg[2] = p->fd; /* l_int */ + uarg[3] = (intptr_t) p->event; /* struct epoll_event * */ + *n_args = 4; break; } /* linux_tgkill */ @@ -2039,7 +2051,13 @@ systrace_args(int sysnum, void *params, } /* linux_epoll_pwait */ case 281: { - *n_args = 0; + struct linux_epoll_pwait_args *p = params; + iarg[0] = p->epfd; /* l_int */ + uarg[1] = (intptr_t) p->events; /* struct epoll_event * */ + iarg[2] = p->maxevents; /* l_int */ + iarg[3] = p->timeout; /* l_int */ + uarg[4] = (intptr_t) p->mask; /* l_sigset_t * */ + *n_args = 5; break; } /* linux_signalfd */ @@ -2094,7 +2112,9 @@ systrace_args(int sysnum, void *params, } /* linux_epoll_create1 */ case 291: { - *n_args = 0; + struct linux_epoll_create1_args *p = params; + iarg[0] = p->flags; /* l_int */ + *n_args = 1; break; } /* linux_dup3 */ @@ -4641,6 +4661,13 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_epoll_create */ case 213: + switch(ndx) { + case 0: + p = "l_int"; + break; + default: + break; + }; break; /* linux_epoll_ctl_old */ case 214: @@ -4837,9 +4864,41 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_epoll_wait */ case 232: + switch(ndx) { + case 0: + p = "l_int"; + break; + case 1: + p = "struct epoll_event *"; + break; + case 2: + p = "l_int"; + break; + case 3: + p = "l_int"; + break; + default: + break; + }; break; /* linux_epoll_ctl */ case 233: + switch(ndx) { + case 0: + p = "l_int"; + break; + case 1: + p = "l_int"; + break; + case 2: + p = "l_int"; + break; + case 3: + p = "struct epoll_event *"; + break; + default: + break; + }; break; /* linux_tgkill */ case 234: @@ -5264,6 +5323,25 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_epoll_pwait */ case 281: + switch(ndx) { + case 0: + p = "l_int"; + break; + case 1: + p = "struct epoll_event *"; + break; + case 2: + p = "l_int"; + break; + case 3: + p = "l_int"; + break; + case 4: + p = "l_sigset_t *"; + break; + default: + break; + }; break; /* linux_signalfd */ case 282: @@ -5310,6 +5388,13 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_epoll_create1 */ case 291: + switch(ndx) { + case 0: + p = "l_int"; + break; + default: + break; + }; break; /* linux_dup3 */ case 292: @@ -6307,6 +6392,9 @@ systrace_return_setargdesc(int sysnum, i case 212: /* linux_epoll_create */ case 213: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_epoll_ctl_old */ case 214: /* linux_epoll_wait_old */ @@ -6382,8 +6470,14 @@ systrace_return_setargdesc(int sysnum, i break; /* linux_epoll_wait */ case 232: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_epoll_ctl */ case 233: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_tgkill */ case 234: if (ndx == 0 || ndx == 1) @@ -6535,6 +6629,9 @@ systrace_return_setargdesc(int sysnum, i case 280: /* linux_epoll_pwait */ case 281: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_signalfd */ case 282: /* linux_timerfd */ @@ -6558,6 +6655,9 @@ systrace_return_setargdesc(int sysnum, i case 290: /* linux_epoll_create1 */ case 291: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_dup3 */ case 292: if (ndx == 0 || ndx == 1) Modified: head/sys/amd64/linux32/linux32_proto.h ============================================================================== --- head/sys/amd64/linux32/linux32_proto.h Sun May 24 16:41:39 2015 (r283441) +++ head/sys/amd64/linux32/linux32_proto.h Sun May 24 16:42:49 2015 (r283442) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283428 2015-05-24 16:18:03Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283441 2015-05-24 16:41:39Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -779,13 +779,19 @@ struct linux_lookup_dcookie_args { register_t dummy; }; struct linux_epoll_create_args { - register_t dummy; + char size_l_[PADL_(l_int)]; l_int size; char size_r_[PADR_(l_int)]; }; struct linux_epoll_ctl_args { - register_t dummy; + char epfd_l_[PADL_(l_int)]; l_int epfd; char epfd_r_[PADR_(l_int)]; + char op_l_[PADL_(l_int)]; l_int op; char op_r_[PADR_(l_int)]; + char fd_l_[PADL_(l_int)]; l_int fd; char fd_r_[PADR_(l_int)]; + char event_l_[PADL_(struct epoll_event *)]; struct epoll_event * event; char event_r_[PADR_(struct epoll_event *)]; }; struct linux_epoll_wait_args { - register_t dummy; + char epfd_l_[PADL_(l_int)]; l_int epfd; char epfd_r_[PADR_(l_int)]; + char events_l_[PADL_(struct epoll_event *)]; struct epoll_event * events; char events_r_[PADR_(struct epoll_event *)]; + char maxevents_l_[PADL_(l_int)]; l_int maxevents; char maxevents_r_[PADR_(l_int)]; + char timeout_l_[PADL_(l_int)]; l_int timeout; char timeout_r_[PADR_(l_int)]; }; struct linux_remap_file_pages_args { register_t dummy; @@ -1035,7 +1041,11 @@ struct linux_getcpu_args { register_t dummy; }; struct linux_epoll_pwait_args { - register_t dummy; + char epfd_l_[PADL_(l_int)]; l_int epfd; char epfd_r_[PADR_(l_int)]; + char events_l_[PADL_(struct epoll_event *)]; struct epoll_event * events; char events_r_[PADR_(struct epoll_event *)]; + char maxevents_l_[PADL_(l_int)]; l_int maxevents; char maxevents_r_[PADR_(l_int)]; + char timeout_l_[PADL_(l_int)]; l_int timeout; char timeout_r_[PADR_(l_int)]; + char mask_l_[PADL_(l_osigset_t *)]; l_osigset_t * mask; char mask_r_[PADR_(l_osigset_t *)]; }; struct linux_utimensat_args { register_t dummy; @@ -1065,7 +1075,7 @@ struct linux_eventfd2_args { register_t dummy; }; struct linux_epoll_create1_args { - register_t dummy; + char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)]; }; struct linux_dup3_args { char oldfd_l_[PADL_(l_int)]; l_int oldfd; char oldfd_r_[PADR_(l_int)]; Modified: head/sys/amd64/linux32/linux32_syscall.h ============================================================================== --- head/sys/amd64/linux32/linux32_syscall.h Sun May 24 16:41:39 2015 (r283441) +++ head/sys/amd64/linux32/linux32_syscall.h Sun May 24 16:42:49 2015 (r283442) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283428 2015-05-24 16:18:03Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283441 2015-05-24 16:41:39Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/amd64/linux32/linux32_syscalls.c ============================================================================== --- head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 16:41:39 2015 (r283441) +++ head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 16:42:49 2015 (r283442) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283428 2015-05-24 16:18:03Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283441 2015-05-24 16:41:39Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/amd64/linux32/linux32_sysent.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysent.c Sun May 24 16:41:39 2015 (r283441) +++ head/sys/amd64/linux32/linux32_sysent.c Sun May 24 16:42:49 2015 (r283442) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283428 2015-05-24 16:18:03Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283441 2015-05-24 16:41:39Z dchagin */ #include "opt_compat.h" @@ -273,9 +273,9 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 251 = */ { AS(linux_exit_group_args), (sy_call_t *)linux_exit_group, AUE_EXIT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 252 = linux_exit_group */ { 0, (sy_call_t *)linux_lookup_dcookie, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 253 = linux_lookup_dcookie */ - { 0, (sy_call_t *)linux_epoll_create, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 254 = linux_epoll_create */ - { 0, (sy_call_t *)linux_epoll_ctl, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 255 = linux_epoll_ctl */ - { 0, (sy_call_t *)linux_epoll_wait, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 256 = linux_epoll_wait */ + { AS(linux_epoll_create_args), (sy_call_t *)linux_epoll_create, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 254 = linux_epoll_create */ + { AS(linux_epoll_ctl_args), (sy_call_t *)linux_epoll_ctl, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 255 = linux_epoll_ctl */ + { AS(linux_epoll_wait_args), (sy_call_t *)linux_epoll_wait, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 256 = linux_epoll_wait */ { 0, (sy_call_t *)linux_remap_file_pages, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 257 = linux_remap_file_pages */ { AS(linux_set_tid_address_args), (sy_call_t *)linux_set_tid_address, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 258 = linux_set_tid_address */ { AS(linux_timer_create_args), (sy_call_t *)linux_timer_create, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 259 = linux_timer_create */ @@ -338,7 +338,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_vmsplice, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 316 = linux_vmsplice */ { 0, (sy_call_t *)linux_move_pages, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 317 = linux_move_pages */ { 0, (sy_call_t *)linux_getcpu, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 318 = linux_getcpu */ - { 0, (sy_call_t *)linux_epoll_pwait, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 319 = linux_epoll_pwait */ + { AS(linux_epoll_pwait_args), (sy_call_t *)linux_epoll_pwait, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 319 = linux_epoll_pwait */ { 0, (sy_call_t *)linux_utimensat, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 320 = linux_utimensat */ { 0, (sy_call_t *)linux_signalfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 321 = linux_signalfd */ { 0, (sy_call_t *)linux_timerfd_create, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 322 = linux_timerfd_create */ @@ -348,7 +348,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_timerfd_gettime, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 326 = linux_timerfd_gettime */ { 0, (sy_call_t *)linux_signalfd4, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 327 = linux_signalfd4 */ { 0, (sy_call_t *)linux_eventfd2, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 328 = linux_eventfd2 */ - { 0, (sy_call_t *)linux_epoll_create1, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 329 = linux_epoll_create1 */ + { AS(linux_epoll_create1_args), (sy_call_t *)linux_epoll_create1, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 329 = linux_epoll_create1 */ { AS(linux_dup3_args), (sy_call_t *)linux_dup3, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 330 = linux_dup3 */ { AS(linux_pipe2_args), (sy_call_t *)linux_pipe2, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 331 = linux_pipe2 */ { 0, (sy_call_t *)linux_inotify_init1, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 332 = linux_inotify_init1 */ Modified: head/sys/amd64/linux32/linux32_systrace_args.c ============================================================================== --- head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 16:41:39 2015 (r283441) +++ head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 16:42:49 2015 (r283442) @@ -1697,17 +1697,29 @@ systrace_args(int sysnum, void *params, } /* linux_epoll_create */ case 254: { - *n_args = 0; + struct linux_epoll_create_args *p = params; + iarg[0] = p->size; /* l_int */ + *n_args = 1; break; } /* linux_epoll_ctl */ case 255: { - *n_args = 0; + struct linux_epoll_ctl_args *p = params; + iarg[0] = p->epfd; /* l_int */ + iarg[1] = p->op; /* l_int */ + iarg[2] = p->fd; /* l_int */ + uarg[3] = (intptr_t) p->event; /* struct epoll_event * */ + *n_args = 4; break; } /* linux_epoll_wait */ case 256: { - *n_args = 0; + struct linux_epoll_wait_args *p = params; + iarg[0] = p->epfd; /* l_int */ + uarg[1] = (intptr_t) p->events; /* struct epoll_event * */ + iarg[2] = p->maxevents; /* l_int */ + iarg[3] = p->timeout; /* l_int */ + *n_args = 4; break; } /* linux_remap_file_pages */ @@ -2141,7 +2153,13 @@ systrace_args(int sysnum, void *params, } /* linux_epoll_pwait */ case 319: { - *n_args = 0; + struct linux_epoll_pwait_args *p = params; + iarg[0] = p->epfd; /* l_int */ + uarg[1] = (intptr_t) p->events; /* struct epoll_event * */ + iarg[2] = p->maxevents; /* l_int */ + iarg[3] = p->timeout; /* l_int */ + uarg[4] = (intptr_t) p->mask; /* l_osigset_t * */ + *n_args = 5; break; } /* linux_utimensat */ @@ -2191,7 +2209,9 @@ systrace_args(int sysnum, void *params, } /* linux_epoll_create1 */ case 329: { - *n_args = 0; + struct linux_epoll_create1_args *p = params; + iarg[0] = p->flags; /* l_int */ + *n_args = 1; break; } /* linux_dup3 */ @@ -4861,12 +4881,51 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_epoll_create */ case 254: + switch(ndx) { + case 0: + p = "l_int"; + break; + default: + break; + }; break; /* linux_epoll_ctl */ case 255: + switch(ndx) { + case 0: + p = "l_int"; + break; + case 1: + p = "l_int"; + break; + case 2: + p = "l_int"; + break; + case 3: + p = "struct epoll_event *"; + break; + default: + break; + }; break; /* linux_epoll_wait */ case 256: + switch(ndx) { + case 0: + p = "l_int"; + break; + case 1: + p = "struct epoll_event *"; + break; + case 2: + p = "l_int"; + break; + case 3: + p = "l_int"; + break; + default: + break; + }; break; /* linux_remap_file_pages */ case 257: @@ -5468,6 +5527,25 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_epoll_pwait */ case 319: + switch(ndx) { + case 0: + p = "l_int"; + break; + case 1: + p = "struct epoll_event *"; + break; + case 2: + p = "l_int"; + break; + case 3: + p = "l_int"; + break; + case 4: + p = "l_osigset_t *"; + break; + default: + break; + }; break; /* linux_utimensat */ case 320: @@ -5498,6 +5576,13 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_epoll_create1 */ case 329: + switch(ndx) { + case 0: + p = "l_int"; + break; + default: + break; + }; break; /* linux_dup3 */ case 330: @@ -6577,10 +6662,19 @@ systrace_return_setargdesc(int sysnum, i case 253: /* linux_epoll_create */ case 254: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_epoll_ctl */ case 255: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_epoll_wait */ case 256: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_remap_file_pages */ case 257: /* linux_set_tid_address */ @@ -6796,6 +6890,9 @@ systrace_return_setargdesc(int sysnum, i case 318: /* linux_epoll_pwait */ case 319: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_utimensat */ case 320: /* linux_signalfd */ @@ -6816,6 +6913,9 @@ systrace_return_setargdesc(int sysnum, i case 328: /* linux_epoll_create1 */ case 329: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_dup3 */ case 330: if (ndx == 0 || ndx == 1) Modified: head/sys/i386/linux/linux_proto.h ============================================================================== --- head/sys/i386/linux/linux_proto.h Sun May 24 16:41:39 2015 (r283441) +++ head/sys/i386/linux/linux_proto.h Sun May 24 16:42:49 2015 (r283442) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283428 2015-05-24 16:18:03Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283441 2015-05-24 16:41:39Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -783,13 +783,19 @@ struct linux_lookup_dcookie_args { register_t dummy; }; struct linux_epoll_create_args { - register_t dummy; + char size_l_[PADL_(l_int)]; l_int size; char size_r_[PADR_(l_int)]; }; struct linux_epoll_ctl_args { - register_t dummy; + char epfd_l_[PADL_(l_int)]; l_int epfd; char epfd_r_[PADR_(l_int)]; + char op_l_[PADL_(l_int)]; l_int op; char op_r_[PADR_(l_int)]; + char fd_l_[PADL_(l_int)]; l_int fd; char fd_r_[PADR_(l_int)]; + char event_l_[PADL_(struct epoll_event *)]; struct epoll_event * event; char event_r_[PADR_(struct epoll_event *)]; }; struct linux_epoll_wait_args { - register_t dummy; + char epfd_l_[PADL_(l_int)]; l_int epfd; char epfd_r_[PADR_(l_int)]; + char events_l_[PADL_(struct epoll_event *)]; struct epoll_event * events; char events_r_[PADR_(struct epoll_event *)]; + char maxevents_l_[PADL_(l_int)]; l_int maxevents; char maxevents_r_[PADR_(l_int)]; + char timeout_l_[PADL_(l_int)]; l_int timeout; char timeout_r_[PADR_(l_int)]; }; struct linux_remap_file_pages_args { register_t dummy; @@ -1053,7 +1059,11 @@ struct linux_getcpu_args { register_t dummy; }; struct linux_epoll_pwait_args { - register_t dummy; + char epfd_l_[PADL_(l_int)]; l_int epfd; char epfd_r_[PADR_(l_int)]; + char events_l_[PADL_(struct epoll_event *)]; struct epoll_event * events; char events_r_[PADR_(struct epoll_event *)]; + char maxevents_l_[PADL_(l_int)]; l_int maxevents; char maxevents_r_[PADR_(l_int)]; + char timeout_l_[PADL_(l_int)]; l_int timeout; char timeout_r_[PADR_(l_int)]; + char mask_l_[PADL_(l_osigset_t *)]; l_osigset_t * mask; char mask_r_[PADR_(l_osigset_t *)]; }; struct linux_utimensat_args { register_t dummy; @@ -1083,7 +1093,7 @@ struct linux_eventfd2_args { register_t dummy; }; struct linux_epoll_create1_args { - register_t dummy; + char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)]; }; struct linux_dup3_args { char oldfd_l_[PADL_(l_int)]; l_int oldfd; char oldfd_r_[PADR_(l_int)]; Modified: head/sys/i386/linux/linux_syscall.h ============================================================================== --- head/sys/i386/linux/linux_syscall.h Sun May 24 16:41:39 2015 (r283441) +++ head/sys/i386/linux/linux_syscall.h Sun May 24 16:42:49 2015 (r283442) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283428 2015-05-24 16:18:03Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283441 2015-05-24 16:41:39Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/i386/linux/linux_syscalls.c ============================================================================== --- head/sys/i386/linux/linux_syscalls.c Sun May 24 16:41:39 2015 (r283441) +++ head/sys/i386/linux/linux_syscalls.c Sun May 24 16:42:49 2015 (r283442) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283428 2015-05-24 16:18:03Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283441 2015-05-24 16:41:39Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/i386/linux/linux_sysent.c ============================================================================== --- head/sys/i386/linux/linux_sysent.c Sun May 24 16:41:39 2015 (r283441) +++ head/sys/i386/linux/linux_sysent.c Sun May 24 16:42:49 2015 (r283442) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283428 2015-05-24 16:18:03Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283441 2015-05-24 16:41:39Z dchagin */ #include @@ -272,9 +272,9 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 251 = */ { AS(linux_exit_group_args), (sy_call_t *)linux_exit_group, AUE_EXIT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 252 = linux_exit_group */ { 0, (sy_call_t *)linux_lookup_dcookie, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 253 = linux_lookup_dcookie */ - { 0, (sy_call_t *)linux_epoll_create, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 254 = linux_epoll_create */ - { 0, (sy_call_t *)linux_epoll_ctl, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 255 = linux_epoll_ctl */ - { 0, (sy_call_t *)linux_epoll_wait, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 256 = linux_epoll_wait */ + { AS(linux_epoll_create_args), (sy_call_t *)linux_epoll_create, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 254 = linux_epoll_create */ + { AS(linux_epoll_ctl_args), (sy_call_t *)linux_epoll_ctl, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 255 = linux_epoll_ctl */ + { AS(linux_epoll_wait_args), (sy_call_t *)linux_epoll_wait, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 256 = linux_epoll_wait */ { 0, (sy_call_t *)linux_remap_file_pages, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 257 = linux_remap_file_pages */ { AS(linux_set_tid_address_args), (sy_call_t *)linux_set_tid_address, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 258 = linux_set_tid_address */ { AS(linux_timer_create_args), (sy_call_t *)linux_timer_create, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 259 = linux_timer_create */ @@ -337,7 +337,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_vmsplice, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 316 = linux_vmsplice */ { 0, (sy_call_t *)linux_move_pages, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 317 = linux_move_pages */ { 0, (sy_call_t *)linux_getcpu, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 318 = linux_getcpu */ - { 0, (sy_call_t *)linux_epoll_pwait, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 319 = linux_epoll_pwait */ + { AS(linux_epoll_pwait_args), (sy_call_t *)linux_epoll_pwait, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 319 = linux_epoll_pwait */ { 0, (sy_call_t *)linux_utimensat, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 320 = linux_utimensat */ { 0, (sy_call_t *)linux_signalfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 321 = linux_signalfd */ { 0, (sy_call_t *)linux_timerfd_create, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 322 = linux_timerfd_create */ @@ -347,7 +347,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_timerfd_gettime, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 326 = linux_timerfd_gettime */ { 0, (sy_call_t *)linux_signalfd4, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 327 = linux_signalfd4 */ { 0, (sy_call_t *)linux_eventfd2, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 328 = linux_eventfd2 */ - { 0, (sy_call_t *)linux_epoll_create1, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 329 = linux_epoll_create1 */ + { AS(linux_epoll_create1_args), (sy_call_t *)linux_epoll_create1, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 329 = linux_epoll_create1 */ { AS(linux_dup3_args), (sy_call_t *)linux_dup3, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 330 = linux_dup3 */ { AS(linux_pipe2_args), (sy_call_t *)linux_pipe2, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 331 = linux_pipe2 */ { 0, (sy_call_t *)linux_inotify_init1, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 332 = linux_inotify_init1 */ Modified: head/sys/i386/linux/linux_systrace_args.c ============================================================================== --- head/sys/i386/linux/linux_systrace_args.c Sun May 24 16:41:39 2015 (r283441) +++ head/sys/i386/linux/linux_systrace_args.c Sun May 24 16:42:49 2015 (r283442) @@ -1747,17 +1747,29 @@ systrace_args(int sysnum, void *params, } /* linux_epoll_create */ case 254: { - *n_args = 0; + struct linux_epoll_create_args *p = params; + iarg[0] = p->size; /* l_int */ + *n_args = 1; break; } /* linux_epoll_ctl */ case 255: { - *n_args = 0; + struct linux_epoll_ctl_args *p = params; + iarg[0] = p->epfd; /* l_int */ + iarg[1] = p->op; /* l_int */ + iarg[2] = p->fd; /* l_int */ + uarg[3] = (intptr_t) p->event; /* struct epoll_event * */ + *n_args = 4; break; } /* linux_epoll_wait */ case 256: { - *n_args = 0; + struct linux_epoll_wait_args *p = params; + iarg[0] = p->epfd; /* l_int */ + uarg[1] = (intptr_t) p->events; /* struct epoll_event * */ + iarg[2] = p->maxevents; /* l_int */ + iarg[3] = p->timeout; /* l_int */ + *n_args = 4; break; } /* linux_remap_file_pages */ @@ -2217,7 +2229,13 @@ systrace_args(int sysnum, void *params, } /* linux_epoll_pwait */ case 319: { - *n_args = 0; + struct linux_epoll_pwait_args *p = params; + iarg[0] = p->epfd; /* l_int */ + uarg[1] = (intptr_t) p->events; /* struct epoll_event * */ + iarg[2] = p->maxevents; /* l_int */ + iarg[3] = p->timeout; /* l_int */ + uarg[4] = (intptr_t) p->mask; /* l_osigset_t * */ + *n_args = 5; break; } /* linux_utimensat */ @@ -2267,7 +2285,9 @@ systrace_args(int sysnum, void *params, } /* linux_epoll_create1 */ case 329: { - *n_args = 0; + struct linux_epoll_create1_args *p = params; + iarg[0] = p->flags; /* l_int */ + *n_args = 1; break; } /* linux_dup3 */ @@ -5008,12 +5028,51 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_epoll_create */ case 254: + switch(ndx) { + case 0: + p = "l_int"; + break; + default: + break; + }; break; /* linux_epoll_ctl */ case 255: + switch(ndx) { + case 0: + p = "l_int"; + break; + case 1: + p = "l_int"; + break; + case 2: + p = "l_int"; + break; + case 3: + p = "struct epoll_event *"; + break; + default: + break; + }; break; /* linux_epoll_wait */ case 256: + switch(ndx) { + case 0: + p = "l_int"; + break; + case 1: + p = "struct epoll_event *"; + break; + case 2: + p = "l_int"; + break; + case 3: + p = "l_int"; + break; + default: + break; + }; break; /* linux_remap_file_pages */ case 257: @@ -5699,6 +5758,25 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_epoll_pwait */ case 319: + switch(ndx) { + case 0: + p = "l_int"; + break; + case 1: + p = "struct epoll_event *"; + break; + case 2: + p = "l_int"; + break; + case 3: + p = "l_int"; + break; + case 4: + p = "l_osigset_t *"; + break; + default: + break; + }; break; /* linux_utimensat */ case 320: @@ -5729,6 +5807,13 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_epoll_create1 */ case 329: + switch(ndx) { + case 0: + p = "l_int"; + break; + default: + break; + }; break; /* linux_dup3 */ case 330: @@ -6837,10 +6922,19 @@ systrace_return_setargdesc(int sysnum, i case 253: /* linux_epoll_create */ case 254: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_epoll_ctl */ case 255: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_epoll_wait */ case 256: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_remap_file_pages */ case 257: /* linux_set_tid_address */ @@ -7074,6 +7168,9 @@ systrace_return_setargdesc(int sysnum, i case 318: /* linux_epoll_pwait */ case 319: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_utimensat */ case 320: /* linux_signalfd */ @@ -7094,6 +7191,9 @@ systrace_return_setargdesc(int sysnum, i case 328: /* linux_epoll_create1 */ case 329: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_dup3 */ case 330: if (ndx == 0 || ndx == 1) From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:47:15 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8D7FB274; Sun, 24 May 2015 16:47:15 +0000 (UTC) Received: from svn.freebsd.org (svn.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 6ECBC16D5; Sun, 24 May 2015 16:47:15 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OGlFjs096398; Sun, 24 May 2015 16:47:15 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OGlEPe096388; Sun, 24 May 2015 16:47:14 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241647.t4OGlEPe096388@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:47:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283443 - in head/sys: amd64/linux amd64/linux32 compat/linux i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:47:15 -0000 Author: dchagin Date: Sun May 24 16:47:13 2015 New Revision: 283443 URL: https://svnweb.freebsd.org/changeset/base/283443 Log: Put the correct value for the abi_nfdbits parameter of kern_select() for all supported Linuxulators. Differential Revision: https://reviews.freebsd.org/D1093 Reviewed by: trasz Modified: head/sys/amd64/linux/linux.h head/sys/amd64/linux32/linux.h head/sys/compat/linux/linux_misc.c head/sys/compat/linux/linux_misc.h head/sys/i386/linux/linux.h Modified: head/sys/amd64/linux/linux.h ============================================================================== --- head/sys/amd64/linux/linux.h Sun May 24 16:42:49 2015 (r283442) +++ head/sys/amd64/linux/linux.h Sun May 24 16:47:13 2015 (r283443) @@ -82,6 +82,7 @@ typedef l_long l_time_t; typedef l_int l_timer_t; typedef l_int l_mqd_t; typedef l_size_t l_socklen_t; +typedef l_ulong l_fd_mask; typedef struct { l_int val[2]; Modified: head/sys/amd64/linux32/linux.h ============================================================================== --- head/sys/amd64/linux32/linux.h Sun May 24 16:42:49 2015 (r283442) +++ head/sys/amd64/linux32/linux.h Sun May 24 16:47:13 2015 (r283443) @@ -95,6 +95,7 @@ typedef l_uint l_uid_t; typedef l_ushort l_uid16_t; typedef l_int l_timer_t; typedef l_int l_mqd_t; +typedef l_ulong l_fd_mask; typedef struct { l_int val[2]; Modified: head/sys/compat/linux/linux_misc.c ============================================================================== --- head/sys/compat/linux/linux_misc.c Sun May 24 16:42:49 2015 (r283442) +++ head/sys/compat/linux/linux_misc.c Sun May 24 16:47:13 2015 (r283443) @@ -531,7 +531,7 @@ linux_select(struct thread *td, struct l tvp = NULL; error = kern_select(td, args->nfds, args->readfds, args->writefds, - args->exceptfds, tvp, sizeof(l_int) * 8); + args->exceptfds, tvp, LINUX_NFDBITS); #ifdef DEBUG if (ldebug(select)) @@ -2181,7 +2181,7 @@ linux_pselect6(struct thread *td, struct tvp = NULL; error = kern_pselect(td, args->nfds, args->readfds, args->writefds, - args->exceptfds, tvp, ssp, sizeof(l_int) * 8); + args->exceptfds, tvp, ssp, LINUX_NFDBITS); if (error == 0 && args->tsp != NULL) { if (td->td_retval[0] != 0) { Modified: head/sys/compat/linux/linux_misc.h ============================================================================== --- head/sys/compat/linux/linux_misc.h Sun May 24 16:42:49 2015 (r283442) +++ head/sys/compat/linux/linux_misc.h Sun May 24 16:47:13 2015 (r283443) @@ -33,6 +33,9 @@ #include + /* bits per mask */ +#define LINUX_NFDBITS sizeof(l_fd_mask) * 8 + /* * Miscellaneous */ Modified: head/sys/i386/linux/linux.h ============================================================================== --- head/sys/i386/linux/linux.h Sun May 24 16:42:49 2015 (r283442) +++ head/sys/i386/linux/linux.h Sun May 24 16:47:13 2015 (r283443) @@ -89,6 +89,7 @@ typedef l_uint l_uid_t; typedef l_ushort l_uid16_t; typedef l_int l_timer_t; typedef l_int l_mqd_t; +typedef l_ulong l_fd_mask; typedef struct { l_int val[2]; From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:49:17 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3CCCF593; Sun, 24 May 2015 16:49:17 +0000 (UTC) Received: from svn.freebsd.org (svn.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 2935D16FA; Sun, 24 May 2015 16:49:17 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OGnHix097062; Sun, 24 May 2015 16:49:17 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OGnEqq097045; Sun, 24 May 2015 16:49:14 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241649.t4OGnEqq097045@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:49:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283444 - in head/sys: amd64/linux amd64/linux32 compat/linux i386/linux sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:49:17 -0000 Author: dchagin Date: Sun May 24 16:49:14 2015 New Revision: 283444 URL: https://svnweb.freebsd.org/changeset/base/283444 Log: Implement eventfd system call. Differential Revision: https://reviews.freebsd.org/D1094 In collaboration with: Jilles Tjoelker Modified: head/sys/amd64/linux/linux_dummy.c head/sys/amd64/linux/syscalls.master head/sys/amd64/linux32/linux32_dummy.c head/sys/amd64/linux32/syscalls.master head/sys/compat/linux/linux_event.c head/sys/compat/linux/linux_event.h head/sys/i386/linux/linux_dummy.c head/sys/i386/linux/syscalls.master head/sys/sys/file.h Modified: head/sys/amd64/linux/linux_dummy.c ============================================================================== --- head/sys/amd64/linux/linux_dummy.c Sun May 24 16:47:13 2015 (r283443) +++ head/sys/amd64/linux/linux_dummy.c Sun May 24 16:49:14 2015 (r283444) @@ -103,12 +103,10 @@ DUMMY(utimensat); DUMMY(epoll_pwait); DUMMY(signalfd); DUMMY(timerfd); -DUMMY(eventfd); DUMMY(fallocate); DUMMY(timerfd_settime); DUMMY(timerfd_gettime); DUMMY(signalfd4); -DUMMY(eventfd2); DUMMY(inotify_init1); DUMMY(preadv); DUMMY(pwritev); Modified: head/sys/amd64/linux/syscalls.master ============================================================================== --- head/sys/amd64/linux/syscalls.master Sun May 24 16:47:13 2015 (r283443) +++ head/sys/amd64/linux/syscalls.master Sun May 24 16:49:14 2015 (r283444) @@ -472,14 +472,14 @@ l_int maxevents, l_int timeout, l_sigset_t *mask); } 282 AUE_NULL STD { int linux_signalfd(void); } 283 AUE_NULL STD { int linux_timerfd(void); } -284 AUE_NULL STD { int linux_eventfd(void); } +284 AUE_NULL STD { int linux_eventfd(l_uint initval); } 285 AUE_NULL STD { int linux_fallocate(void); } 286 AUE_NULL STD { int linux_timerfd_settime(void); } 287 AUE_NULL STD { int linux_timerfd_gettime(void); } 288 AUE_ACCEPT STD { int linux_accept4(l_int s, l_uintptr_t addr, \ l_uintptr_t namelen, int flags); } 289 AUE_NULL STD { int linux_signalfd4(void); } -290 AUE_NULL STD { int linux_eventfd2(void); } +290 AUE_NULL STD { int linux_eventfd2(l_uint initval, l_int flags); } 291 AUE_NULL STD { int linux_epoll_create1(l_int flags); } 292 AUE_NULL STD { int linux_dup3(l_int oldfd, \ l_int newfd, l_int flags); } Modified: head/sys/amd64/linux32/linux32_dummy.c ============================================================================== --- head/sys/amd64/linux32/linux32_dummy.c Sun May 24 16:47:13 2015 (r283443) +++ head/sys/amd64/linux32/linux32_dummy.c Sun May 24 16:49:14 2015 (r283444) @@ -108,7 +108,6 @@ DUMMY(epoll_pwait); DUMMY(utimensat); DUMMY(signalfd); DUMMY(timerfd_create); -DUMMY(eventfd); /* linux 2.6.23: */ DUMMY(fallocate); /* linux 2.6.25: */ @@ -116,7 +115,6 @@ DUMMY(timerfd_settime); DUMMY(timerfd_gettime); /* linux 2.6.27: */ DUMMY(signalfd4); -DUMMY(eventfd2); DUMMY(inotify_init1); /* linux 2.6.30: */ DUMMY(preadv); Modified: head/sys/amd64/linux32/syscalls.master ============================================================================== --- head/sys/amd64/linux32/syscalls.master Sun May 24 16:47:13 2015 (r283443) +++ head/sys/amd64/linux32/syscalls.master Sun May 24 16:49:14 2015 (r283444) @@ -535,7 +535,7 @@ 320 AUE_NULL STD { int linux_utimensat(void); } 321 AUE_NULL STD { int linux_signalfd(void); } 322 AUE_NULL STD { int linux_timerfd_create(void); } -323 AUE_NULL STD { int linux_eventfd(void); } +323 AUE_NULL STD { int linux_eventfd(l_uint initval); } ; linux 2.6.23: 324 AUE_NULL STD { int linux_fallocate(void); } ; linux 2.6.25: @@ -543,7 +543,7 @@ 326 AUE_NULL STD { int linux_timerfd_gettime(void); } ; linux 2.6.27: 327 AUE_NULL STD { int linux_signalfd4(void); } -328 AUE_NULL STD { int linux_eventfd2(void); } +328 AUE_NULL STD { int linux_eventfd2(l_uint initval, l_int flags); } 329 AUE_NULL STD { int linux_epoll_create1(l_int flags); } 330 AUE_NULL STD { int linux_dup3(l_int oldfd, \ l_int newfd, l_int flags); } Modified: head/sys/compat/linux/linux_event.c ============================================================================== --- head/sys/compat/linux/linux_event.c Sun May 24 16:47:13 2015 (r283443) +++ head/sys/compat/linux/linux_event.c Sun May 24 16:49:14 2015 (r283444) @@ -43,7 +43,9 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include +#include #include #include #include @@ -114,6 +116,57 @@ struct epoll_copyout_args { int error; }; +/* eventfd */ +typedef uint64_t eventfd_t; + +static fo_rdwr_t eventfd_read; +static fo_rdwr_t eventfd_write; +static fo_truncate_t eventfd_truncate; +static fo_ioctl_t eventfd_ioctl; +static fo_poll_t eventfd_poll; +static fo_kqfilter_t eventfd_kqfilter; +static fo_stat_t eventfd_stat; +static fo_close_t eventfd_close; + +static struct fileops eventfdops = { + .fo_read = eventfd_read, + .fo_write = eventfd_write, + .fo_truncate = eventfd_truncate, + .fo_ioctl = eventfd_ioctl, + .fo_poll = eventfd_poll, + .fo_kqfilter = eventfd_kqfilter, + .fo_stat = eventfd_stat, + .fo_close = eventfd_close, + .fo_chmod = invfo_chmod, + .fo_chown = invfo_chown, + .fo_sendfile = invfo_sendfile, + .fo_flags = DFLAG_PASSABLE +}; + +static void filt_eventfddetach(struct knote *kn); +static int filt_eventfdread(struct knote *kn, long hint); +static int filt_eventfdwrite(struct knote *kn, long hint); + +static struct filterops eventfd_rfiltops = { + .f_isfd = 1, + .f_detach = filt_eventfddetach, + .f_event = filt_eventfdread +}; +static struct filterops eventfd_wfiltops = { + .f_isfd = 1, + .f_detach = filt_eventfddetach, + .f_event = filt_eventfdwrite +}; + +struct eventfd { + eventfd_t efd_count; + uint32_t efd_flags; + struct selinfo efd_sel; + struct mtx efd_lock; +}; + +static int eventfd_create(struct thread *td, uint32_t initval, int flags); + static void epoll_fd_install(struct thread *td, int fd, epoll_udata_t udata) @@ -498,3 +551,280 @@ epoll_delete_all_events(struct thread *t /* report any errors we got */ return (error1 == 0 ? error2 : error1); } + +static int +eventfd_create(struct thread *td, uint32_t initval, int flags) +{ + struct filedesc *fdp; + struct eventfd *efd; + struct file *fp; + int fflags, fd, error; + + fflags = 0; + if ((flags & LINUX_O_CLOEXEC) != 0) + fflags |= O_CLOEXEC; + + fdp = td->td_proc->p_fd; + error = falloc(td, &fp, &fd, fflags); + if (error) + return (error); + + efd = malloc(sizeof(*efd), M_EPOLL, M_WAITOK | M_ZERO); + efd->efd_flags = flags; + efd->efd_count = initval; + mtx_init(&efd->efd_lock, "eventfd", NULL, MTX_DEF); + + knlist_init_mtx(&efd->efd_sel.si_note, &efd->efd_lock); + + fflags = FREAD | FWRITE; + if ((flags & LINUX_O_NONBLOCK) != 0) + fflags |= FNONBLOCK; + + finit(fp, fflags, DTYPE_LINUXEFD, efd, &eventfdops); + fdrop(fp, td); + + td->td_retval[0] = fd; + return (error); +} + +int +linux_eventfd(struct thread *td, struct linux_eventfd_args *args) +{ + + return (eventfd_create(td, args->initval, 0)); +} + +int +linux_eventfd2(struct thread *td, struct linux_eventfd2_args *args) +{ + + if ((args->flags & ~(LINUX_O_CLOEXEC|LINUX_O_NONBLOCK|LINUX_EFD_SEMAPHORE)) != 0) + return (EINVAL); + + return (eventfd_create(td, args->initval, args->flags)); +} + +static int +eventfd_close(struct file *fp, struct thread *td) +{ + struct eventfd *efd; + + efd = fp->f_data; + if (fp->f_type != DTYPE_LINUXEFD || efd == NULL) + return (EBADF); + + seldrain(&efd->efd_sel); + knlist_destroy(&efd->efd_sel.si_note); + + fp->f_ops = &badfileops; + mtx_destroy(&efd->efd_lock); + free(efd, M_EPOLL); + + return (0); +} + +static int +eventfd_read(struct file *fp, struct uio *uio, struct ucred *active_cred, + int flags, struct thread *td) +{ + struct eventfd *efd; + eventfd_t count; + int error; + + efd = fp->f_data; + if (fp->f_type != DTYPE_LINUXEFD || efd == NULL) + return (EBADF); + + if (uio->uio_resid < sizeof(eventfd_t)) + return (EINVAL); + + error = 0; + mtx_lock(&efd->efd_lock); +retry: + if (efd->efd_count == 0) { + if ((efd->efd_flags & LINUX_O_NONBLOCK) != 0) { + mtx_unlock(&efd->efd_lock); + return (EAGAIN); + } + error = mtx_sleep(&efd->efd_count, &efd->efd_lock, PCATCH, "lefdrd", 0); + if (error == 0) + goto retry; + } + if (error == 0) { + if ((efd->efd_flags & LINUX_EFD_SEMAPHORE) != 0) { + count = 1; + --efd->efd_count; + } else { + count = efd->efd_count; + efd->efd_count = 0; + } + KNOTE_LOCKED(&efd->efd_sel.si_note, 0); + selwakeup(&efd->efd_sel); + wakeup(&efd->efd_count); + mtx_unlock(&efd->efd_lock); + error = uiomove(&count, sizeof(eventfd_t), uio); + } else + mtx_unlock(&efd->efd_lock); + + return (error); +} + +static int +eventfd_write(struct file *fp, struct uio *uio, struct ucred *active_cred, + int flags, struct thread *td) +{ + struct eventfd *efd; + eventfd_t count; + int error; + + efd = fp->f_data; + if (fp->f_type != DTYPE_LINUXEFD || efd == NULL) + return (EBADF); + + if (uio->uio_resid < sizeof(eventfd_t)) + return (EINVAL); + + error = uiomove(&count, sizeof(eventfd_t), uio); + if (error) + return (error); + if (count == UINT64_MAX) + return (EINVAL); + + mtx_lock(&efd->efd_lock); +retry: + if (UINT64_MAX - efd->efd_count <= count) { + if ((efd->efd_flags & LINUX_O_NONBLOCK) != 0) { + mtx_unlock(&efd->efd_lock); + return (EAGAIN); + } + error = mtx_sleep(&efd->efd_count, &efd->efd_lock, + PCATCH, "lefdwr", 0); + if (error == 0) + goto retry; + } + if (error == 0) { + efd->efd_count += count; + KNOTE_LOCKED(&efd->efd_sel.si_note, 0); + selwakeup(&efd->efd_sel); + wakeup(&efd->efd_count); + } + mtx_unlock(&efd->efd_lock); + + return (error); +} + +static int +eventfd_poll(struct file *fp, int events, struct ucred *active_cred, + struct thread *td) +{ + struct eventfd *efd; + int revents = 0; + + efd = fp->f_data; + if (fp->f_type != DTYPE_LINUXEFD || efd == NULL) + return (POLLERR); + + mtx_lock(&efd->efd_lock); + if ((events & (POLLIN|POLLRDNORM)) && efd->efd_count > 0) + revents |= events & (POLLIN|POLLRDNORM); + if ((events & (POLLOUT|POLLWRNORM)) && UINT64_MAX - 1 > efd->efd_count) + revents |= events & (POLLOUT|POLLWRNORM); + if (revents == 0) + selrecord(td, &efd->efd_sel); + mtx_unlock(&efd->efd_lock); + + return (revents); +} + +/*ARGSUSED*/ +static int +eventfd_kqfilter(struct file *fp, struct knote *kn) +{ + struct eventfd *efd; + + efd = fp->f_data; + if (fp->f_type != DTYPE_LINUXEFD || efd == NULL) + return (EINVAL); + + mtx_lock(&efd->efd_lock); + switch (kn->kn_filter) { + case EVFILT_READ: + kn->kn_fop = &eventfd_rfiltops; + break; + case EVFILT_WRITE: + kn->kn_fop = &eventfd_wfiltops; + break; + default: + mtx_unlock(&efd->efd_lock); + return (EINVAL); + } + + kn->kn_hook = efd; + knlist_add(&efd->efd_sel.si_note, kn, 1); + mtx_unlock(&efd->efd_lock); + + return (0); +} + +static void +filt_eventfddetach(struct knote *kn) +{ + struct eventfd *efd = kn->kn_hook; + + mtx_lock(&efd->efd_lock); + knlist_remove(&efd->efd_sel.si_note, kn, 1); + mtx_unlock(&efd->efd_lock); +} + +/*ARGSUSED*/ +static int +filt_eventfdread(struct knote *kn, long hint) +{ + struct eventfd *efd = kn->kn_hook; + int ret; + + mtx_assert(&efd->efd_lock, MA_OWNED); + ret = (efd->efd_count > 0); + + return (ret); +} + +/*ARGSUSED*/ +static int +filt_eventfdwrite(struct knote *kn, long hint) +{ + struct eventfd *efd = kn->kn_hook; + int ret; + + mtx_assert(&efd->efd_lock, MA_OWNED); + ret = (UINT64_MAX - 1 > efd->efd_count); + + return (ret); +} + +/*ARGSUSED*/ +static int +eventfd_truncate(struct file *fp, off_t length, struct ucred *active_cred, + struct thread *td) +{ + + return (ENXIO); +} + +/*ARGSUSED*/ +static int +eventfd_ioctl(struct file *fp, u_long cmd, void *data, + struct ucred *active_cred, struct thread *td) +{ + + return (ENXIO); +} + +/*ARGSUSED*/ +static int +eventfd_stat(struct file *fp, struct stat *st, struct ucred *active_cred, + struct thread *td) +{ + + return (ENXIO); +} Modified: head/sys/compat/linux/linux_event.h ============================================================================== --- head/sys/compat/linux/linux_event.h Sun May 24 16:47:13 2015 (r283443) +++ head/sys/compat/linux/linux_event.h Sun May 24 16:49:14 2015 (r283444) @@ -55,4 +55,6 @@ #define LINUX_EPOLL_CTL_DEL 2 #define LINUX_EPOLL_CTL_MOD 3 +#define LINUX_EFD_SEMAPHORE (1 << 0) + #endif /* !_LINUX_EVENT_H_ */ Modified: head/sys/i386/linux/linux_dummy.c ============================================================================== --- head/sys/i386/linux/linux_dummy.c Sun May 24 16:47:13 2015 (r283443) +++ head/sys/i386/linux/linux_dummy.c Sun May 24 16:49:14 2015 (r283444) @@ -104,7 +104,6 @@ DUMMY(epoll_pwait); DUMMY(utimensat); DUMMY(signalfd); DUMMY(timerfd_create); -DUMMY(eventfd); /* linux 2.6.23: */ DUMMY(fallocate); /* linux 2.6.25: */ @@ -112,7 +111,6 @@ DUMMY(timerfd_settime); DUMMY(timerfd_gettime); /* linux 2.6.27: */ DUMMY(signalfd4); -DUMMY(eventfd2); DUMMY(inotify_init1); /* linux 2.6.30: */ DUMMY(preadv); Modified: head/sys/i386/linux/syscalls.master ============================================================================== --- head/sys/i386/linux/syscalls.master Sun May 24 16:47:13 2015 (r283443) +++ head/sys/i386/linux/syscalls.master Sun May 24 16:49:14 2015 (r283444) @@ -543,7 +543,7 @@ 320 AUE_NULL STD { int linux_utimensat(void); } 321 AUE_NULL STD { int linux_signalfd(void); } 322 AUE_NULL STD { int linux_timerfd_create(void); } -323 AUE_NULL STD { int linux_eventfd(void); } +323 AUE_NULL STD { int linux_eventfd(l_uint initval); } ; linux 2.6.23: 324 AUE_NULL STD { int linux_fallocate(void); } ; linux 2.6.25: @@ -551,7 +551,7 @@ 326 AUE_NULL STD { int linux_timerfd_gettime(void); } ; linux 2.6.27: 327 AUE_NULL STD { int linux_signalfd4(void); } -328 AUE_NULL STD { int linux_eventfd2(void); } +328 AUE_NULL STD { int linux_eventfd2(l_uint initval, l_int flags); } 329 AUE_NULL STD { int linux_epoll_create1(l_int flags); } 330 AUE_NULL STD { int linux_dup3(l_int oldfd, \ l_int newfd, l_int flags); } Modified: head/sys/sys/file.h ============================================================================== --- head/sys/sys/file.h Sun May 24 16:47:13 2015 (r283443) +++ head/sys/sys/file.h Sun May 24 16:49:14 2015 (r283444) @@ -66,6 +66,7 @@ struct socket; #define DTYPE_PTS 10 /* pseudo teletype master device */ #define DTYPE_DEV 11 /* Device specific fd type */ #define DTYPE_PROCDESC 12 /* process descriptor */ +#define DTYPE_LINUXEFD 13 /* emulation eventfd type */ #ifdef _KERNEL From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:50:21 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D7ECD72F; Sun, 24 May 2015 16:50:21 +0000 (UTC) Received: from svn.freebsd.org (svn.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 C3CE1170E; Sun, 24 May 2015 16:50:21 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OGoLrd099836; Sun, 24 May 2015 16:50:21 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OGoHua099811; Sun, 24 May 2015 16:50:17 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241650.t4OGoHua099811@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:50:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283445 - in head/sys: amd64/linux amd64/linux32 i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:50:22 -0000 Author: dchagin Date: Sun May 24 16:50:17 2015 New Revision: 283445 URL: https://svnweb.freebsd.org/changeset/base/283445 Log: Regen for r283444. Modified: head/sys/amd64/linux/linux_proto.h head/sys/amd64/linux/linux_syscall.h head/sys/amd64/linux/linux_syscalls.c head/sys/amd64/linux/linux_sysent.c head/sys/amd64/linux/linux_systrace_args.c head/sys/amd64/linux32/linux32_proto.h head/sys/amd64/linux32/linux32_syscall.h head/sys/amd64/linux32/linux32_syscalls.c head/sys/amd64/linux32/linux32_sysent.c head/sys/amd64/linux32/linux32_systrace_args.c head/sys/i386/linux/linux_proto.h head/sys/i386/linux/linux_syscall.h head/sys/i386/linux/linux_syscalls.c head/sys/i386/linux/linux_sysent.c head/sys/i386/linux/linux_systrace_args.c Modified: head/sys/amd64/linux/linux_proto.h ============================================================================== --- head/sys/amd64/linux/linux_proto.h Sun May 24 16:49:14 2015 (r283444) +++ head/sys/amd64/linux/linux_proto.h Sun May 24 16:50:17 2015 (r283445) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283441 2015-05-24 16:41:39Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283444 2015-05-24 16:49:14Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -997,7 +997,7 @@ struct linux_timerfd_args { register_t dummy; }; struct linux_eventfd_args { - register_t dummy; + char initval_l_[PADL_(l_uint)]; l_uint initval; char initval_r_[PADR_(l_uint)]; }; struct linux_fallocate_args { register_t dummy; @@ -1018,7 +1018,8 @@ struct linux_signalfd4_args { register_t dummy; }; struct linux_eventfd2_args { - register_t dummy; + char initval_l_[PADL_(l_uint)]; l_uint initval; char initval_r_[PADR_(l_uint)]; + char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)]; }; struct linux_epoll_create1_args { char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)]; Modified: head/sys/amd64/linux/linux_syscall.h ============================================================================== --- head/sys/amd64/linux/linux_syscall.h Sun May 24 16:49:14 2015 (r283444) +++ head/sys/amd64/linux/linux_syscall.h Sun May 24 16:50:17 2015 (r283445) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283441 2015-05-24 16:41:39Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283444 2015-05-24 16:49:14Z dchagin */ #define LINUX_SYS_read 0 Modified: head/sys/amd64/linux/linux_syscalls.c ============================================================================== --- head/sys/amd64/linux/linux_syscalls.c Sun May 24 16:49:14 2015 (r283444) +++ head/sys/amd64/linux/linux_syscalls.c Sun May 24 16:50:17 2015 (r283445) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283441 2015-05-24 16:41:39Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283444 2015-05-24 16:49:14Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/amd64/linux/linux_sysent.c ============================================================================== --- head/sys/amd64/linux/linux_sysent.c Sun May 24 16:49:14 2015 (r283444) +++ head/sys/amd64/linux/linux_sysent.c Sun May 24 16:50:17 2015 (r283445) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283441 2015-05-24 16:41:39Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283444 2015-05-24 16:49:14Z dchagin */ #include @@ -302,13 +302,13 @@ struct sysent linux_sysent[] = { { AS(linux_epoll_pwait_args), (sy_call_t *)linux_epoll_pwait, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 281 = linux_epoll_pwait */ { 0, (sy_call_t *)linux_signalfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 282 = linux_signalfd */ { 0, (sy_call_t *)linux_timerfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 283 = linux_timerfd */ - { 0, (sy_call_t *)linux_eventfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 284 = linux_eventfd */ + { AS(linux_eventfd_args), (sy_call_t *)linux_eventfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 284 = linux_eventfd */ { 0, (sy_call_t *)linux_fallocate, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 285 = linux_fallocate */ { 0, (sy_call_t *)linux_timerfd_settime, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 286 = linux_timerfd_settime */ { 0, (sy_call_t *)linux_timerfd_gettime, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 287 = linux_timerfd_gettime */ { AS(linux_accept4_args), (sy_call_t *)linux_accept4, AUE_ACCEPT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 288 = linux_accept4 */ { 0, (sy_call_t *)linux_signalfd4, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 289 = linux_signalfd4 */ - { 0, (sy_call_t *)linux_eventfd2, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 290 = linux_eventfd2 */ + { AS(linux_eventfd2_args), (sy_call_t *)linux_eventfd2, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 290 = linux_eventfd2 */ { AS(linux_epoll_create1_args), (sy_call_t *)linux_epoll_create1, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 291 = linux_epoll_create1 */ { AS(linux_dup3_args), (sy_call_t *)linux_dup3, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 292 = linux_dup3 */ { AS(linux_pipe2_args), (sy_call_t *)linux_pipe2, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 293 = linux_pipe2 */ Modified: head/sys/amd64/linux/linux_systrace_args.c ============================================================================== --- head/sys/amd64/linux/linux_systrace_args.c Sun May 24 16:49:14 2015 (r283444) +++ head/sys/amd64/linux/linux_systrace_args.c Sun May 24 16:50:17 2015 (r283445) @@ -2072,7 +2072,9 @@ systrace_args(int sysnum, void *params, } /* linux_eventfd */ case 284: { - *n_args = 0; + struct linux_eventfd_args *p = params; + iarg[0] = p->initval; /* l_uint */ + *n_args = 1; break; } /* linux_fallocate */ @@ -2107,7 +2109,10 @@ systrace_args(int sysnum, void *params, } /* linux_eventfd2 */ case 290: { - *n_args = 0; + struct linux_eventfd2_args *p = params; + iarg[0] = p->initval; /* l_uint */ + iarg[1] = p->flags; /* l_int */ + *n_args = 2; break; } /* linux_epoll_create1 */ @@ -5351,6 +5356,13 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_eventfd */ case 284: + switch(ndx) { + case 0: + p = "l_uint"; + break; + default: + break; + }; break; /* linux_fallocate */ case 285: @@ -5385,6 +5397,16 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_eventfd2 */ case 290: + switch(ndx) { + case 0: + p = "l_uint"; + break; + case 1: + p = "l_int"; + break; + default: + break; + }; break; /* linux_epoll_create1 */ case 291: @@ -6638,6 +6660,9 @@ systrace_return_setargdesc(int sysnum, i case 283: /* linux_eventfd */ case 284: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_fallocate */ case 285: /* linux_timerfd_settime */ @@ -6653,6 +6678,9 @@ systrace_return_setargdesc(int sysnum, i case 289: /* linux_eventfd2 */ case 290: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_epoll_create1 */ case 291: if (ndx == 0 || ndx == 1) Modified: head/sys/amd64/linux32/linux32_proto.h ============================================================================== --- head/sys/amd64/linux32/linux32_proto.h Sun May 24 16:49:14 2015 (r283444) +++ head/sys/amd64/linux32/linux32_proto.h Sun May 24 16:50:17 2015 (r283445) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283441 2015-05-24 16:41:39Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283444 2015-05-24 16:49:14Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -1057,7 +1057,7 @@ struct linux_timerfd_create_args { register_t dummy; }; struct linux_eventfd_args { - register_t dummy; + char initval_l_[PADL_(l_uint)]; l_uint initval; char initval_r_[PADR_(l_uint)]; }; struct linux_fallocate_args { register_t dummy; @@ -1072,7 +1072,8 @@ struct linux_signalfd4_args { register_t dummy; }; struct linux_eventfd2_args { - register_t dummy; + char initval_l_[PADL_(l_uint)]; l_uint initval; char initval_r_[PADR_(l_uint)]; + char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)]; }; struct linux_epoll_create1_args { char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)]; Modified: head/sys/amd64/linux32/linux32_syscall.h ============================================================================== --- head/sys/amd64/linux32/linux32_syscall.h Sun May 24 16:49:14 2015 (r283444) +++ head/sys/amd64/linux32/linux32_syscall.h Sun May 24 16:50:17 2015 (r283445) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283441 2015-05-24 16:41:39Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283444 2015-05-24 16:49:14Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/amd64/linux32/linux32_syscalls.c ============================================================================== --- head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 16:49:14 2015 (r283444) +++ head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 16:50:17 2015 (r283445) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283441 2015-05-24 16:41:39Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283444 2015-05-24 16:49:14Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/amd64/linux32/linux32_sysent.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysent.c Sun May 24 16:49:14 2015 (r283444) +++ head/sys/amd64/linux32/linux32_sysent.c Sun May 24 16:50:17 2015 (r283445) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283441 2015-05-24 16:41:39Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283444 2015-05-24 16:49:14Z dchagin */ #include "opt_compat.h" @@ -342,12 +342,12 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_utimensat, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 320 = linux_utimensat */ { 0, (sy_call_t *)linux_signalfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 321 = linux_signalfd */ { 0, (sy_call_t *)linux_timerfd_create, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 322 = linux_timerfd_create */ - { 0, (sy_call_t *)linux_eventfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 323 = linux_eventfd */ + { AS(linux_eventfd_args), (sy_call_t *)linux_eventfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 323 = linux_eventfd */ { 0, (sy_call_t *)linux_fallocate, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 324 = linux_fallocate */ { 0, (sy_call_t *)linux_timerfd_settime, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 325 = linux_timerfd_settime */ { 0, (sy_call_t *)linux_timerfd_gettime, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 326 = linux_timerfd_gettime */ { 0, (sy_call_t *)linux_signalfd4, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 327 = linux_signalfd4 */ - { 0, (sy_call_t *)linux_eventfd2, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 328 = linux_eventfd2 */ + { AS(linux_eventfd2_args), (sy_call_t *)linux_eventfd2, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 328 = linux_eventfd2 */ { AS(linux_epoll_create1_args), (sy_call_t *)linux_epoll_create1, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 329 = linux_epoll_create1 */ { AS(linux_dup3_args), (sy_call_t *)linux_dup3, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 330 = linux_dup3 */ { AS(linux_pipe2_args), (sy_call_t *)linux_pipe2, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 331 = linux_pipe2 */ Modified: head/sys/amd64/linux32/linux32_systrace_args.c ============================================================================== --- head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 16:49:14 2015 (r283444) +++ head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 16:50:17 2015 (r283445) @@ -2179,7 +2179,9 @@ systrace_args(int sysnum, void *params, } /* linux_eventfd */ case 323: { - *n_args = 0; + struct linux_eventfd_args *p = params; + iarg[0] = p->initval; /* l_uint */ + *n_args = 1; break; } /* linux_fallocate */ @@ -2204,7 +2206,10 @@ systrace_args(int sysnum, void *params, } /* linux_eventfd2 */ case 328: { - *n_args = 0; + struct linux_eventfd2_args *p = params; + iarg[0] = p->initval; /* l_uint */ + iarg[1] = p->flags; /* l_int */ + *n_args = 2; break; } /* linux_epoll_create1 */ @@ -5558,6 +5563,13 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_eventfd */ case 323: + switch(ndx) { + case 0: + p = "l_uint"; + break; + default: + break; + }; break; /* linux_fallocate */ case 324: @@ -5573,6 +5585,16 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_eventfd2 */ case 328: + switch(ndx) { + case 0: + p = "l_uint"; + break; + case 1: + p = "l_int"; + break; + default: + break; + }; break; /* linux_epoll_create1 */ case 329: @@ -6901,6 +6923,9 @@ systrace_return_setargdesc(int sysnum, i case 322: /* linux_eventfd */ case 323: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_fallocate */ case 324: /* linux_timerfd_settime */ @@ -6911,6 +6936,9 @@ systrace_return_setargdesc(int sysnum, i case 327: /* linux_eventfd2 */ case 328: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_epoll_create1 */ case 329: if (ndx == 0 || ndx == 1) Modified: head/sys/i386/linux/linux_proto.h ============================================================================== --- head/sys/i386/linux/linux_proto.h Sun May 24 16:49:14 2015 (r283444) +++ head/sys/i386/linux/linux_proto.h Sun May 24 16:50:17 2015 (r283445) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283441 2015-05-24 16:41:39Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283444 2015-05-24 16:49:14Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -1075,7 +1075,7 @@ struct linux_timerfd_create_args { register_t dummy; }; struct linux_eventfd_args { - register_t dummy; + char initval_l_[PADL_(l_uint)]; l_uint initval; char initval_r_[PADR_(l_uint)]; }; struct linux_fallocate_args { register_t dummy; @@ -1090,7 +1090,8 @@ struct linux_signalfd4_args { register_t dummy; }; struct linux_eventfd2_args { - register_t dummy; + char initval_l_[PADL_(l_uint)]; l_uint initval; char initval_r_[PADR_(l_uint)]; + char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)]; }; struct linux_epoll_create1_args { char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)]; Modified: head/sys/i386/linux/linux_syscall.h ============================================================================== --- head/sys/i386/linux/linux_syscall.h Sun May 24 16:49:14 2015 (r283444) +++ head/sys/i386/linux/linux_syscall.h Sun May 24 16:50:17 2015 (r283445) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283441 2015-05-24 16:41:39Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283444 2015-05-24 16:49:14Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/i386/linux/linux_syscalls.c ============================================================================== --- head/sys/i386/linux/linux_syscalls.c Sun May 24 16:49:14 2015 (r283444) +++ head/sys/i386/linux/linux_syscalls.c Sun May 24 16:50:17 2015 (r283445) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283441 2015-05-24 16:41:39Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283444 2015-05-24 16:49:14Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/i386/linux/linux_sysent.c ============================================================================== --- head/sys/i386/linux/linux_sysent.c Sun May 24 16:49:14 2015 (r283444) +++ head/sys/i386/linux/linux_sysent.c Sun May 24 16:50:17 2015 (r283445) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283441 2015-05-24 16:41:39Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283444 2015-05-24 16:49:14Z dchagin */ #include @@ -341,12 +341,12 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_utimensat, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 320 = linux_utimensat */ { 0, (sy_call_t *)linux_signalfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 321 = linux_signalfd */ { 0, (sy_call_t *)linux_timerfd_create, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 322 = linux_timerfd_create */ - { 0, (sy_call_t *)linux_eventfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 323 = linux_eventfd */ + { AS(linux_eventfd_args), (sy_call_t *)linux_eventfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 323 = linux_eventfd */ { 0, (sy_call_t *)linux_fallocate, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 324 = linux_fallocate */ { 0, (sy_call_t *)linux_timerfd_settime, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 325 = linux_timerfd_settime */ { 0, (sy_call_t *)linux_timerfd_gettime, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 326 = linux_timerfd_gettime */ { 0, (sy_call_t *)linux_signalfd4, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 327 = linux_signalfd4 */ - { 0, (sy_call_t *)linux_eventfd2, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 328 = linux_eventfd2 */ + { AS(linux_eventfd2_args), (sy_call_t *)linux_eventfd2, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 328 = linux_eventfd2 */ { AS(linux_epoll_create1_args), (sy_call_t *)linux_epoll_create1, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 329 = linux_epoll_create1 */ { AS(linux_dup3_args), (sy_call_t *)linux_dup3, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 330 = linux_dup3 */ { AS(linux_pipe2_args), (sy_call_t *)linux_pipe2, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 331 = linux_pipe2 */ Modified: head/sys/i386/linux/linux_systrace_args.c ============================================================================== --- head/sys/i386/linux/linux_systrace_args.c Sun May 24 16:49:14 2015 (r283444) +++ head/sys/i386/linux/linux_systrace_args.c Sun May 24 16:50:17 2015 (r283445) @@ -2255,7 +2255,9 @@ systrace_args(int sysnum, void *params, } /* linux_eventfd */ case 323: { - *n_args = 0; + struct linux_eventfd_args *p = params; + iarg[0] = p->initval; /* l_uint */ + *n_args = 1; break; } /* linux_fallocate */ @@ -2280,7 +2282,10 @@ systrace_args(int sysnum, void *params, } /* linux_eventfd2 */ case 328: { - *n_args = 0; + struct linux_eventfd2_args *p = params; + iarg[0] = p->initval; /* l_uint */ + iarg[1] = p->flags; /* l_int */ + *n_args = 2; break; } /* linux_epoll_create1 */ @@ -5789,6 +5794,13 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_eventfd */ case 323: + switch(ndx) { + case 0: + p = "l_uint"; + break; + default: + break; + }; break; /* linux_fallocate */ case 324: @@ -5804,6 +5816,16 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_eventfd2 */ case 328: + switch(ndx) { + case 0: + p = "l_uint"; + break; + case 1: + p = "l_int"; + break; + default: + break; + }; break; /* linux_epoll_create1 */ case 329: @@ -7179,6 +7201,9 @@ systrace_return_setargdesc(int sysnum, i case 322: /* linux_eventfd */ case 323: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_fallocate */ case 324: /* linux_timerfd_settime */ @@ -7189,6 +7214,9 @@ systrace_return_setargdesc(int sysnum, i case 327: /* linux_eventfd2 */ case 328: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_epoll_create1 */ case 329: if (ndx == 0 || ndx == 1) From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:51:05 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 76FD7886; Sun, 24 May 2015 16:51:05 +0000 (UTC) Received: from svn.freebsd.org (svn.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 64BEE1717; Sun, 24 May 2015 16:51:05 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OGp5gc000673; Sun, 24 May 2015 16:51:05 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OGp5n1000672; Sun, 24 May 2015 16:51:05 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241651.t4OGp5n1000672@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:51:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283446 - head/sys/amd64/linux32 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:51:05 -0000 Author: dchagin Date: Sun May 24 16:51:04 2015 New Revision: 283446 URL: https://svnweb.freebsd.org/changeset/base/283446 Log: Include opt_compat.h, so that COMPAT_LINUX32 is defined, and we can access to the semop structs and functions. Submitted by: cognet@ Differential Revision: https://reviews.freebsd.org/D1095 Reviewed by: trasz Modified: head/sys/amd64/linux32/linux32_machdep.c Modified: head/sys/amd64/linux32/linux32_machdep.c ============================================================================== --- head/sys/amd64/linux32/linux32_machdep.c Sun May 24 16:50:17 2015 (r283445) +++ head/sys/amd64/linux32/linux32_machdep.c Sun May 24 16:51:04 2015 (r283446) @@ -31,6 +31,8 @@ #include __FBSDID("$FreeBSD$"); +#include "opt_compat.h" + #include #include #include From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:52:46 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9537B9E7; Sun, 24 May 2015 16:52:46 +0000 (UTC) Received: from svn.freebsd.org (svn.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 832A317D0; Sun, 24 May 2015 16:52:46 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OGqkow001798; Sun, 24 May 2015 16:52:46 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OGqket001797; Sun, 24 May 2015 16:52:46 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241652.t4OGqket001797@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:52:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283447 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:52:46 -0000 Author: dchagin Date: Sun May 24 16:52:45 2015 New Revision: 283447 URL: https://svnweb.freebsd.org/changeset/base/283447 Log: Fix linux_common module build with KTR option. Differential Revision: https://reviews.freebsd.org/D1096 Reviewed by: trasz Modified: head/sys/compat/linux/linux_util.h Modified: head/sys/compat/linux/linux_util.h ============================================================================== --- head/sys/compat/linux/linux_util.h Sun May 24 16:51:04 2015 (r283446) +++ head/sys/compat/linux/linux_util.h Sun May 24 16:52:45 2015 (r283447) @@ -120,7 +120,6 @@ void linux_free_get_char_devices(char *s #define LINUX_CTRFMT(nm, fmt) #nm"("fmt")" #define LINUX_CTR6(f, m, p1, p2, p3, p4, p5, p6) do { \ - if (ldebug(f)) \ CTR6(KTR_LINUX, LINUX_CTRFMT(f, m), \ p1, p2, p3, p4, p5, p6); \ } while (0) From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:53:33 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3D2C6B4C; Sun, 24 May 2015 16:53:33 +0000 (UTC) Received: from svn.freebsd.org (svn.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 2B3A817EA; Sun, 24 May 2015 16:53:33 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OGrXTM002043; Sun, 24 May 2015 16:53:33 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OGrXvR002042; Sun, 24 May 2015 16:53:33 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241653.t4OGrXvR002042@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:53:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283448 - head/sys/modules X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:53:33 -0000 Author: dchagin Date: Sun May 24 16:53:32 2015 New Revision: 283448 URL: https://svnweb.freebsd.org/changeset/base/283448 Log: Connect linux64 module to the build. Differential Revision: https://reviews.freebsd.org/D1097 Reviewed by: emaste Modified: head/sys/modules/Makefile Modified: head/sys/modules/Makefile ============================================================================== --- head/sys/modules/Makefile Sun May 24 16:52:45 2015 (r283447) +++ head/sys/modules/Makefile Sun May 24 16:53:32 2015 (r283448) @@ -197,6 +197,7 @@ SUBDIR= \ ${_linsysfs} \ ${_linux} \ ${_linux_common} \ + ${_linux64} \ ${_linuxapi} \ lmc \ lpt \ @@ -629,6 +630,7 @@ _sfxge= sfxge .if ${MK_BHYVE} != "no" || defined(ALL_MODULES) _vmm= vmm _linux_common= linux_common +_linux64= linux64 .endif .endif From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:55:33 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1EACBCFB; Sun, 24 May 2015 16:55:33 +0000 (UTC) Received: from svn.freebsd.org (svn.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 0C4951814; Sun, 24 May 2015 16:55:33 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OGtWsm002609; Sun, 24 May 2015 16:55:32 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OGtWET002608; Sun, 24 May 2015 16:55:32 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241655.t4OGtWET002608@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:55:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283449 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:55:33 -0000 Author: dchagin Date: Sun May 24 16:55:32 2015 New Revision: 283449 URL: https://svnweb.freebsd.org/changeset/base/283449 Log: Update Linux compat revision to 32. Differential Revision: https://reviews.freebsd.org/D1122 Reviewed by: emaste Modified: head/sys/compat/linux/linux_mib.h Modified: head/sys/compat/linux/linux_mib.h ============================================================================== --- head/sys/compat/linux/linux_mib.h Sun May 24 16:53:32 2015 (r283448) +++ head/sys/compat/linux/linux_mib.h Sun May 24 16:55:32 2015 (r283449) @@ -48,7 +48,7 @@ int linux_kernver(struct thread *td); #define LINUX_KVERSION 2 #define LINUX_KPATCHLEVEL 6 -#define LINUX_KSUBLEVEL 18 +#define LINUX_KSUBLEVEL 32 #define LINUX_KERNVER(a,b,c) (((a) << 16) + ((b) << 8) + (c)) #define LINUX_VERSION_CODE LINUX_KERNVER(LINUX_KVERSION, \ From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:56:33 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 42C72E4E; Sun, 24 May 2015 16:56:33 +0000 (UTC) Received: from svn.freebsd.org (svn.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 309801823; Sun, 24 May 2015 16:56:33 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OGuXe5002905; Sun, 24 May 2015 16:56:33 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OGuXpY002904; Sun, 24 May 2015 16:56:33 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241656.t4OGuXpY002904@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:56:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283450 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:56:33 -0000 Author: dchagin Date: Sun May 24 16:56:32 2015 New Revision: 283450 URL: https://svnweb.freebsd.org/changeset/base/283450 Log: td_sigmask of a newly created thread copied from td. Remove excess initialization of td_sigmask. Differential Revision: https://reviews.freebsd.org/D1128 Reviewed by: emaste Modified: head/sys/compat/linux/linux_fork.c Modified: head/sys/compat/linux/linux_fork.c ============================================================================== --- head/sys/compat/linux/linux_fork.c Sun May 24 16:55:32 2015 (r283449) +++ head/sys/compat/linux/linux_fork.c Sun May 24 16:56:32 2015 (r283450) @@ -328,7 +328,6 @@ linux_clone_thread(struct thread *td, st PROC_LOCK(p); p->p_flag |= P_HADTHREADS; - newtd->td_sigmask = td->td_sigmask; bcopy(p->p_comm, newtd->td_name, sizeof(newtd->td_name)); if (args->flags & LINUX_CLONE_PARENT) From owner-svn-src-all@FreeBSD.ORG Sun May 24 16:59:28 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A07FCFC3; Sun, 24 May 2015 16:59:28 +0000 (UTC) Received: from svn.freebsd.org (svn.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 80ACB183C; Sun, 24 May 2015 16:59:28 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OGxSRx003616; Sun, 24 May 2015 16:59:28 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OGxQoe003607; Sun, 24 May 2015 16:59:26 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241659.t4OGxQoe003607@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 16:59:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283451 - in head/sys: amd64/linux amd64/linux32 compat/linux i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 16:59:28 -0000 Author: dchagin Date: Sun May 24 16:59:25 2015 New Revision: 283451 URL: https://svnweb.freebsd.org/changeset/base/283451 Log: Implement ppoll() system call. Differential Revision: https://reviews.freebsd.org/D1105 Reviewed by: trasz Modified: head/sys/amd64/linux/linux_dummy.c head/sys/amd64/linux/syscalls.master head/sys/amd64/linux32/linux32_dummy.c head/sys/amd64/linux32/syscalls.master head/sys/compat/linux/linux_misc.c head/sys/i386/linux/linux_dummy.c head/sys/i386/linux/syscalls.master Modified: head/sys/amd64/linux/linux_dummy.c ============================================================================== --- head/sys/amd64/linux/linux_dummy.c Sun May 24 16:56:32 2015 (r283450) +++ head/sys/amd64/linux/linux_dummy.c Sun May 24 16:59:25 2015 (r283451) @@ -92,7 +92,6 @@ DUMMY(inotify_init); DUMMY(inotify_add_watch); DUMMY(inotify_rm_watch); DUMMY(migrate_pages); -DUMMY(ppoll); DUMMY(unshare); DUMMY(splice); DUMMY(tee); Modified: head/sys/amd64/linux/syscalls.master ============================================================================== --- head/sys/amd64/linux/syscalls.master Sun May 24 16:56:32 2015 (r283450) +++ head/sys/amd64/linux/syscalls.master Sun May 24 16:59:25 2015 (r283451) @@ -456,7 +456,8 @@ 270 AUE_SELECT STD { int linux_pselect6(l_int nfds, \ l_fd_set *readfds, l_fd_set *writefds, l_fd_set *exceptfds, \ struct l_timespec *tsp, l_uintptr_t *sig); } -271 AUE_NULL STD { int linux_ppoll(void); } +271 AUE_POLL STD { int linux_ppoll(struct pollfd *fds, uint32_t nfds, \ + struct l_timespec *tsp, l_sigset_t *sset, l_size_t ssize); } 272 AUE_NULL STD { int linux_unshare(void); } 273 AUE_NULL STD { int linux_set_robust_list(struct linux_robust_list_head *head, \ l_size_t len); } Modified: head/sys/amd64/linux32/linux32_dummy.c ============================================================================== --- head/sys/amd64/linux32/linux32_dummy.c Sun May 24 16:56:32 2015 (r283450) +++ head/sys/amd64/linux32/linux32_dummy.c Sun May 24 16:59:25 2015 (r283451) @@ -92,7 +92,6 @@ DUMMY(inotify_add_watch); DUMMY(inotify_rm_watch); /* linux 2.6.16: */ DUMMY(migrate_pages); -DUMMY(ppoll); DUMMY(unshare); /* linux 2.6.17: */ DUMMY(splice); Modified: head/sys/amd64/linux32/syscalls.master ============================================================================== --- head/sys/amd64/linux32/syscalls.master Sun May 24 16:56:32 2015 (r283450) +++ head/sys/amd64/linux32/syscalls.master Sun May 24 16:59:25 2015 (r283451) @@ -514,7 +514,8 @@ 308 AUE_SELECT STD { int linux_pselect6(l_int nfds, l_fd_set *readfds, \ l_fd_set *writefds, l_fd_set *exceptfds, \ struct l_timespec *tsp, l_uintptr_t *sig); } -309 AUE_NULL STD { int linux_ppoll(void); } +309 AUE_POLL STD { int linux_ppoll(struct pollfd *fds, uint32_t nfds, \ + struct l_timespec *tsp, l_sigset_t *sset, l_size_t ssize); } 310 AUE_NULL STD { int linux_unshare(void); } ; linux 2.6.17: 311 AUE_NULL STD { int linux_set_robust_list(struct linux_robust_list_head *head, \ Modified: head/sys/compat/linux/linux_misc.c ============================================================================== --- head/sys/compat/linux/linux_misc.c Sun May 24 16:56:32 2015 (r283450) +++ head/sys/compat/linux/linux_misc.c Sun May 24 16:59:25 2015 (r283451) @@ -2209,6 +2209,59 @@ linux_pselect6(struct thread *td, struct return (error); } +int +linux_ppoll(struct thread *td, struct linux_ppoll_args *args) +{ + struct timespec ts0, ts1; + struct l_timespec lts; + struct timespec uts, *tsp; + l_sigset_t l_ss; + sigset_t *ssp; + sigset_t ss; + int error; + + if (args->sset != NULL) { + if (args->ssize != sizeof(l_ss)) + return (EINVAL); + error = copyin(args->sset, &l_ss, sizeof(l_ss)); + if (error) + return (error); + linux_to_bsd_sigset(&l_ss, &ss); + ssp = &ss; + } else + ssp = NULL; + if (args->tsp != NULL) { + error = copyin(args->tsp, <s, sizeof(lts)); + if (error) + return (error); + uts.tv_sec = lts.tv_sec; + uts.tv_nsec = lts.tv_nsec; + + nanotime(&ts0); + tsp = &uts; + } else + tsp = NULL; + + error = kern_poll(td, args->fds, args->nfds, tsp, ssp); + + if (error == 0 && args->tsp != NULL) { + if (td->td_retval[0]) { + nanotime(&ts1); + timespecsub(&ts1, &ts0); + timespecsub(&uts, &ts1); + if (uts.tv_sec < 0) + timespecclear(&uts); + } else + timespecclear(&uts); + + lts.tv_sec = uts.tv_sec; + lts.tv_nsec = uts.tv_nsec; + error = copyout(<s, args->tsp, sizeof(lts)); + } + + return (error); +} + #if defined(DEBUG) || defined(KTR) /* XXX: can be removed when every ldebug(...) and KTR stuff are removed. */ Modified: head/sys/i386/linux/linux_dummy.c ============================================================================== --- head/sys/i386/linux/linux_dummy.c Sun May 24 16:56:32 2015 (r283450) +++ head/sys/i386/linux/linux_dummy.c Sun May 24 16:59:25 2015 (r283451) @@ -88,7 +88,6 @@ DUMMY(inotify_add_watch); DUMMY(inotify_rm_watch); /* linux 2.6.16: */ DUMMY(migrate_pages); -DUMMY(ppoll); DUMMY(unshare); /* linux 2.6.17: */ DUMMY(splice); Modified: head/sys/i386/linux/syscalls.master ============================================================================== --- head/sys/i386/linux/syscalls.master Sun May 24 16:56:32 2015 (r283450) +++ head/sys/i386/linux/syscalls.master Sun May 24 16:59:25 2015 (r283451) @@ -522,7 +522,8 @@ 308 AUE_SELECT STD { int linux_pselect6(l_int nfds, l_fd_set *readfds, \ l_fd_set *writefds, l_fd_set *exceptfds, \ struct l_timespec *tsp, l_uintptr_t *sig); } -309 AUE_NULL STD { int linux_ppoll(void); } +309 AUE_POLL STD { int linux_ppoll(struct pollfd *fds, uint32_t nfds, \ + struct l_timespec *tsp, l_sigset_t *sset, l_size_t ssize); } 310 AUE_NULL STD { int linux_unshare(void); } ; linux 2.6.17: 311 AUE_NULL STD { int linux_set_robust_list(struct linux_robust_list_head *head, \ From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:00:48 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id F12391AA; Sun, 24 May 2015 17:00:47 +0000 (UTC) Received: from svn.freebsd.org (svn.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 DDA1018F0; Sun, 24 May 2015 17:00:47 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OH0l1e005916; Sun, 24 May 2015 17:00:47 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OH0hnw005895; Sun, 24 May 2015 17:00:43 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241700.t4OH0hnw005895@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:00:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283452 - in head/sys: amd64/linux amd64/linux32 i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:00:48 -0000 Author: dchagin Date: Sun May 24 17:00:43 2015 New Revision: 283452 URL: https://svnweb.freebsd.org/changeset/base/283452 Log: Regen for r283451. Modified: head/sys/amd64/linux/linux_proto.h head/sys/amd64/linux/linux_syscall.h head/sys/amd64/linux/linux_syscalls.c head/sys/amd64/linux/linux_sysent.c head/sys/amd64/linux/linux_systrace_args.c head/sys/amd64/linux32/linux32_proto.h head/sys/amd64/linux32/linux32_syscall.h head/sys/amd64/linux32/linux32_syscalls.c head/sys/amd64/linux32/linux32_sysent.c head/sys/amd64/linux32/linux32_systrace_args.c head/sys/i386/linux/linux_proto.h head/sys/i386/linux/linux_syscall.h head/sys/i386/linux/linux_syscalls.c head/sys/i386/linux/linux_sysent.c head/sys/i386/linux/linux_systrace_args.c Modified: head/sys/amd64/linux/linux_proto.h ============================================================================== --- head/sys/amd64/linux/linux_proto.h Sun May 24 16:59:25 2015 (r283451) +++ head/sys/amd64/linux/linux_proto.h Sun May 24 17:00:43 2015 (r283452) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283444 2015-05-24 16:49:14Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283451 2015-05-24 16:59:25Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -951,7 +951,11 @@ struct linux_pselect6_args { char sig_l_[PADL_(l_uintptr_t *)]; l_uintptr_t * sig; char sig_r_[PADR_(l_uintptr_t *)]; }; struct linux_ppoll_args { - register_t dummy; + char fds_l_[PADL_(struct pollfd *)]; struct pollfd * fds; char fds_r_[PADR_(struct pollfd *)]; + char nfds_l_[PADL_(uint32_t)]; uint32_t nfds; char nfds_r_[PADR_(uint32_t)]; + char tsp_l_[PADL_(struct l_timespec *)]; struct l_timespec * tsp; char tsp_r_[PADR_(struct l_timespec *)]; + char sset_l_[PADL_(l_sigset_t *)]; l_sigset_t * sset; char sset_r_[PADR_(l_sigset_t *)]; + char ssize_l_[PADL_(l_size_t)]; l_size_t ssize; char ssize_r_[PADR_(l_size_t)]; }; struct linux_unshare_args { register_t dummy; @@ -1596,7 +1600,7 @@ int linux_finit_module(struct thread *, #define LINUX_SYS_AUE_linux_fchmodat AUE_FCHMODAT #define LINUX_SYS_AUE_linux_faccessat AUE_FACCESSAT #define LINUX_SYS_AUE_linux_pselect6 AUE_SELECT -#define LINUX_SYS_AUE_linux_ppoll AUE_NULL +#define LINUX_SYS_AUE_linux_ppoll AUE_POLL #define LINUX_SYS_AUE_linux_unshare AUE_NULL #define LINUX_SYS_AUE_linux_set_robust_list AUE_NULL #define LINUX_SYS_AUE_linux_get_robust_list AUE_NULL Modified: head/sys/amd64/linux/linux_syscall.h ============================================================================== --- head/sys/amd64/linux/linux_syscall.h Sun May 24 16:59:25 2015 (r283451) +++ head/sys/amd64/linux/linux_syscall.h Sun May 24 17:00:43 2015 (r283452) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283444 2015-05-24 16:49:14Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283451 2015-05-24 16:59:25Z dchagin */ #define LINUX_SYS_read 0 Modified: head/sys/amd64/linux/linux_syscalls.c ============================================================================== --- head/sys/amd64/linux/linux_syscalls.c Sun May 24 16:59:25 2015 (r283451) +++ head/sys/amd64/linux/linux_syscalls.c Sun May 24 17:00:43 2015 (r283452) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283444 2015-05-24 16:49:14Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283451 2015-05-24 16:59:25Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/amd64/linux/linux_sysent.c ============================================================================== --- head/sys/amd64/linux/linux_sysent.c Sun May 24 16:59:25 2015 (r283451) +++ head/sys/amd64/linux/linux_sysent.c Sun May 24 17:00:43 2015 (r283452) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283444 2015-05-24 16:49:14Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283451 2015-05-24 16:59:25Z dchagin */ #include @@ -289,7 +289,7 @@ struct sysent linux_sysent[] = { { AS(linux_fchmodat_args), (sy_call_t *)linux_fchmodat, AUE_FCHMODAT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 268 = linux_fchmodat */ { AS(linux_faccessat_args), (sy_call_t *)linux_faccessat, AUE_FACCESSAT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 269 = linux_faccessat */ { AS(linux_pselect6_args), (sy_call_t *)linux_pselect6, AUE_SELECT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 270 = linux_pselect6 */ - { 0, (sy_call_t *)linux_ppoll, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 271 = linux_ppoll */ + { AS(linux_ppoll_args), (sy_call_t *)linux_ppoll, AUE_POLL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 271 = linux_ppoll */ { 0, (sy_call_t *)linux_unshare, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 272 = linux_unshare */ { AS(linux_set_robust_list_args), (sy_call_t *)linux_set_robust_list, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 273 = linux_set_robust_list */ { AS(linux_get_robust_list_args), (sy_call_t *)linux_get_robust_list, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 274 = linux_get_robust_list */ Modified: head/sys/amd64/linux/linux_systrace_args.c ============================================================================== --- head/sys/amd64/linux/linux_systrace_args.c Sun May 24 16:59:25 2015 (r283451) +++ head/sys/amd64/linux/linux_systrace_args.c Sun May 24 17:00:43 2015 (r283452) @@ -1994,7 +1994,13 @@ systrace_args(int sysnum, void *params, } /* linux_ppoll */ case 271: { - *n_args = 0; + struct linux_ppoll_args *p = params; + uarg[0] = (intptr_t) p->fds; /* struct pollfd * */ + uarg[1] = p->nfds; /* uint32_t */ + uarg[2] = (intptr_t) p->tsp; /* struct l_timespec * */ + uarg[3] = (intptr_t) p->sset; /* l_sigset_t * */ + iarg[4] = p->ssize; /* l_size_t */ + *n_args = 5; break; } /* linux_unshare */ @@ -5275,6 +5281,25 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_ppoll */ case 271: + switch(ndx) { + case 0: + p = "struct pollfd *"; + break; + case 1: + p = "uint32_t"; + break; + case 2: + p = "struct l_timespec *"; + break; + case 3: + p = "l_sigset_t *"; + break; + case 4: + p = "l_size_t"; + break; + default: + break; + }; break; /* linux_unshare */ case 272: @@ -6625,6 +6650,9 @@ systrace_return_setargdesc(int sysnum, i break; /* linux_ppoll */ case 271: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_unshare */ case 272: /* linux_set_robust_list */ Modified: head/sys/amd64/linux32/linux32_proto.h ============================================================================== --- head/sys/amd64/linux32/linux32_proto.h Sun May 24 16:59:25 2015 (r283451) +++ head/sys/amd64/linux32/linux32_proto.h Sun May 24 17:00:43 2015 (r283452) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283444 2015-05-24 16:49:14Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283451 2015-05-24 16:59:25Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -1008,7 +1008,11 @@ struct linux_pselect6_args { char sig_l_[PADL_(l_uintptr_t *)]; l_uintptr_t * sig; char sig_r_[PADR_(l_uintptr_t *)]; }; struct linux_ppoll_args { - register_t dummy; + char fds_l_[PADL_(struct pollfd *)]; struct pollfd * fds; char fds_r_[PADR_(struct pollfd *)]; + char nfds_l_[PADL_(uint32_t)]; uint32_t nfds; char nfds_r_[PADR_(uint32_t)]; + char tsp_l_[PADL_(struct l_timespec *)]; struct l_timespec * tsp; char tsp_r_[PADR_(struct l_timespec *)]; + char sset_l_[PADL_(l_sigset_t *)]; l_sigset_t * sset; char sset_r_[PADR_(l_sigset_t *)]; + char ssize_l_[PADL_(l_size_t)]; l_size_t ssize; char ssize_r_[PADR_(l_size_t)]; }; struct linux_unshare_args { register_t dummy; @@ -1684,7 +1688,7 @@ int linux_process_vm_writev(struct threa #define LINUX_SYS_AUE_linux_fchmodat AUE_FCHMODAT #define LINUX_SYS_AUE_linux_faccessat AUE_FACCESSAT #define LINUX_SYS_AUE_linux_pselect6 AUE_SELECT -#define LINUX_SYS_AUE_linux_ppoll AUE_NULL +#define LINUX_SYS_AUE_linux_ppoll AUE_POLL #define LINUX_SYS_AUE_linux_unshare AUE_NULL #define LINUX_SYS_AUE_linux_set_robust_list AUE_NULL #define LINUX_SYS_AUE_linux_get_robust_list AUE_NULL Modified: head/sys/amd64/linux32/linux32_syscall.h ============================================================================== --- head/sys/amd64/linux32/linux32_syscall.h Sun May 24 16:59:25 2015 (r283451) +++ head/sys/amd64/linux32/linux32_syscall.h Sun May 24 17:00:43 2015 (r283452) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283444 2015-05-24 16:49:14Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283451 2015-05-24 16:59:25Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/amd64/linux32/linux32_syscalls.c ============================================================================== --- head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 16:59:25 2015 (r283451) +++ head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 17:00:43 2015 (r283452) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283444 2015-05-24 16:49:14Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283451 2015-05-24 16:59:25Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/amd64/linux32/linux32_sysent.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysent.c Sun May 24 16:59:25 2015 (r283451) +++ head/sys/amd64/linux32/linux32_sysent.c Sun May 24 17:00:43 2015 (r283452) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283444 2015-05-24 16:49:14Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283451 2015-05-24 16:59:25Z dchagin */ #include "opt_compat.h" @@ -328,7 +328,7 @@ struct sysent linux_sysent[] = { { AS(linux_fchmodat_args), (sy_call_t *)linux_fchmodat, AUE_FCHMODAT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 306 = linux_fchmodat */ { AS(linux_faccessat_args), (sy_call_t *)linux_faccessat, AUE_FACCESSAT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 307 = linux_faccessat */ { AS(linux_pselect6_args), (sy_call_t *)linux_pselect6, AUE_SELECT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 308 = linux_pselect6 */ - { 0, (sy_call_t *)linux_ppoll, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 309 = linux_ppoll */ + { AS(linux_ppoll_args), (sy_call_t *)linux_ppoll, AUE_POLL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 309 = linux_ppoll */ { 0, (sy_call_t *)linux_unshare, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 310 = linux_unshare */ { AS(linux_set_robust_list_args), (sy_call_t *)linux_set_robust_list, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 311 = linux_set_robust_list */ { AS(linux_get_robust_list_args), (sy_call_t *)linux_get_robust_list, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 312 = linux_get_robust_list */ Modified: head/sys/amd64/linux32/linux32_systrace_args.c ============================================================================== --- head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 16:59:25 2015 (r283451) +++ head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 17:00:43 2015 (r283452) @@ -2096,7 +2096,13 @@ systrace_args(int sysnum, void *params, } /* linux_ppoll */ case 309: { - *n_args = 0; + struct linux_ppoll_args *p = params; + uarg[0] = (intptr_t) p->fds; /* struct pollfd * */ + uarg[1] = p->nfds; /* uint32_t */ + uarg[2] = (intptr_t) p->tsp; /* struct l_timespec * */ + uarg[3] = (intptr_t) p->sset; /* l_sigset_t * */ + iarg[4] = p->ssize; /* l_size_t */ + *n_args = 5; break; } /* linux_unshare */ @@ -5479,6 +5485,25 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_ppoll */ case 309: + switch(ndx) { + case 0: + p = "struct pollfd *"; + break; + case 1: + p = "uint32_t"; + break; + case 2: + p = "struct l_timespec *"; + break; + case 3: + p = "l_sigset_t *"; + break; + case 4: + p = "l_size_t"; + break; + default: + break; + }; break; /* linux_unshare */ case 310: @@ -6886,6 +6911,9 @@ systrace_return_setargdesc(int sysnum, i break; /* linux_ppoll */ case 309: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_unshare */ case 310: /* linux_set_robust_list */ Modified: head/sys/i386/linux/linux_proto.h ============================================================================== --- head/sys/i386/linux/linux_proto.h Sun May 24 16:59:25 2015 (r283451) +++ head/sys/i386/linux/linux_proto.h Sun May 24 17:00:43 2015 (r283452) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283444 2015-05-24 16:49:14Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283451 2015-05-24 16:59:25Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -1026,7 +1026,11 @@ struct linux_pselect6_args { char sig_l_[PADL_(l_uintptr_t *)]; l_uintptr_t * sig; char sig_r_[PADR_(l_uintptr_t *)]; }; struct linux_ppoll_args { - register_t dummy; + char fds_l_[PADL_(struct pollfd *)]; struct pollfd * fds; char fds_r_[PADR_(struct pollfd *)]; + char nfds_l_[PADL_(uint32_t)]; uint32_t nfds; char nfds_r_[PADR_(uint32_t)]; + char tsp_l_[PADL_(struct l_timespec *)]; struct l_timespec * tsp; char tsp_r_[PADR_(struct l_timespec *)]; + char sset_l_[PADL_(l_sigset_t *)]; l_sigset_t * sset; char sset_r_[PADR_(l_sigset_t *)]; + char ssize_l_[PADL_(l_size_t)]; l_size_t ssize; char ssize_r_[PADR_(l_size_t)]; }; struct linux_unshare_args { register_t dummy; @@ -1706,7 +1710,7 @@ int linux_process_vm_writev(struct threa #define LINUX_SYS_AUE_linux_fchmodat AUE_FCHMODAT #define LINUX_SYS_AUE_linux_faccessat AUE_FACCESSAT #define LINUX_SYS_AUE_linux_pselect6 AUE_SELECT -#define LINUX_SYS_AUE_linux_ppoll AUE_NULL +#define LINUX_SYS_AUE_linux_ppoll AUE_POLL #define LINUX_SYS_AUE_linux_unshare AUE_NULL #define LINUX_SYS_AUE_linux_set_robust_list AUE_NULL #define LINUX_SYS_AUE_linux_get_robust_list AUE_NULL Modified: head/sys/i386/linux/linux_syscall.h ============================================================================== --- head/sys/i386/linux/linux_syscall.h Sun May 24 16:59:25 2015 (r283451) +++ head/sys/i386/linux/linux_syscall.h Sun May 24 17:00:43 2015 (r283452) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283444 2015-05-24 16:49:14Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283451 2015-05-24 16:59:25Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/i386/linux/linux_syscalls.c ============================================================================== --- head/sys/i386/linux/linux_syscalls.c Sun May 24 16:59:25 2015 (r283451) +++ head/sys/i386/linux/linux_syscalls.c Sun May 24 17:00:43 2015 (r283452) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283444 2015-05-24 16:49:14Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283451 2015-05-24 16:59:25Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/i386/linux/linux_sysent.c ============================================================================== --- head/sys/i386/linux/linux_sysent.c Sun May 24 16:59:25 2015 (r283451) +++ head/sys/i386/linux/linux_sysent.c Sun May 24 17:00:43 2015 (r283452) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283444 2015-05-24 16:49:14Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283451 2015-05-24 16:59:25Z dchagin */ #include @@ -327,7 +327,7 @@ struct sysent linux_sysent[] = { { AS(linux_fchmodat_args), (sy_call_t *)linux_fchmodat, AUE_FCHMODAT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 306 = linux_fchmodat */ { AS(linux_faccessat_args), (sy_call_t *)linux_faccessat, AUE_FACCESSAT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 307 = linux_faccessat */ { AS(linux_pselect6_args), (sy_call_t *)linux_pselect6, AUE_SELECT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 308 = linux_pselect6 */ - { 0, (sy_call_t *)linux_ppoll, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 309 = linux_ppoll */ + { AS(linux_ppoll_args), (sy_call_t *)linux_ppoll, AUE_POLL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 309 = linux_ppoll */ { 0, (sy_call_t *)linux_unshare, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 310 = linux_unshare */ { AS(linux_set_robust_list_args), (sy_call_t *)linux_set_robust_list, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 311 = linux_set_robust_list */ { AS(linux_get_robust_list_args), (sy_call_t *)linux_get_robust_list, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 312 = linux_get_robust_list */ Modified: head/sys/i386/linux/linux_systrace_args.c ============================================================================== --- head/sys/i386/linux/linux_systrace_args.c Sun May 24 16:59:25 2015 (r283451) +++ head/sys/i386/linux/linux_systrace_args.c Sun May 24 17:00:43 2015 (r283452) @@ -2172,7 +2172,13 @@ systrace_args(int sysnum, void *params, } /* linux_ppoll */ case 309: { - *n_args = 0; + struct linux_ppoll_args *p = params; + uarg[0] = (intptr_t) p->fds; /* struct pollfd * */ + uarg[1] = p->nfds; /* uint32_t */ + uarg[2] = (intptr_t) p->tsp; /* struct l_timespec * */ + uarg[3] = (intptr_t) p->sset; /* l_sigset_t * */ + iarg[4] = p->ssize; /* l_size_t */ + *n_args = 5; break; } /* linux_unshare */ @@ -5710,6 +5716,25 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_ppoll */ case 309: + switch(ndx) { + case 0: + p = "struct pollfd *"; + break; + case 1: + p = "uint32_t"; + break; + case 2: + p = "struct l_timespec *"; + break; + case 3: + p = "l_sigset_t *"; + break; + case 4: + p = "l_size_t"; + break; + default: + break; + }; break; /* linux_unshare */ case 310: @@ -7164,6 +7189,9 @@ systrace_return_setargdesc(int sysnum, i break; /* linux_ppoll */ case 309: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_unshare */ case 310: /* linux_set_robust_list */ From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:06:00 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 523604F9; Sun, 24 May 2015 17:06:00 +0000 (UTC) Received: from svn.freebsd.org (svn.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 4015B191C; Sun, 24 May 2015 17:06:00 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OH606h008387; Sun, 24 May 2015 17:06:00 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OH6075008386; Sun, 24 May 2015 17:06:00 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241706.t4OH6075008386@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:06:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283453 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:06:00 -0000 Author: dchagin Date: Sun May 24 17:05:59 2015 New Revision: 283453 URL: https://svnweb.freebsd.org/changeset/base/283453 Log: Remove the unnecessary cast. Differential Revision: https://reviews.freebsd.org/D1461 Reviewed by: emaste Modified: head/sys/compat/linux/linux_emul.c Modified: head/sys/compat/linux/linux_emul.c ============================================================================== --- head/sys/compat/linux/linux_emul.c Sun May 24 17:00:43 2015 (r283452) +++ head/sys/compat/linux/linux_emul.c Sun May 24 17:05:59 2015 (r283453) @@ -265,7 +265,7 @@ linux_schedtail(struct thread *td) child_set_tid = em->child_set_tid; if (child_set_tid != NULL) { - error = copyout(&em->em_tid, (int *)child_set_tid, + error = copyout(&em->em_tid, child_set_tid, sizeof(em->em_tid)); LINUX_CTR4(clone, "schedtail(%d) %p stored %d error %d", td->td_tid, child_set_tid, em->em_tid, error); From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:07:11 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 13B67652; Sun, 24 May 2015 17:07:11 +0000 (UTC) Received: from svn.freebsd.org (svn.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 01C6E1933; Sun, 24 May 2015 17:07:11 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OH7AOd008607; Sun, 24 May 2015 17:07:10 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OH7AUQ008606; Sun, 24 May 2015 17:07:10 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241707.t4OH7AUQ008606@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:07:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283454 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:07:11 -0000 Author: dchagin Date: Sun May 24 17:07:10 2015 New Revision: 283454 URL: https://svnweb.freebsd.org/changeset/base/283454 Log: Avoid unnecessary em zeroing in non-exec path as it already zeroed by malloc with M_ZERO flag and move zeroing to the proper place in exec path. Differential Revision: https://reviews.freebsd.org/D1462 Reviewed by: trasz Modified: head/sys/compat/linux/linux_emul.c Modified: head/sys/compat/linux/linux_emul.c ============================================================================== --- head/sys/compat/linux/linux_emul.c Sun May 24 17:05:59 2015 (r283453) +++ head/sys/compat/linux/linux_emul.c Sun May 24 17:07:10 2015 (r283454) @@ -89,8 +89,6 @@ linux_proc_init(struct thread *td, struc if (newtd != NULL) { /* non-exec call */ em = malloc(sizeof(*em), M_TEMP, M_WAITOK | M_ZERO); - em->pdeath_signal = 0; - em->robust_futexes = NULL; if (flags & LINUX_CLONE_THREAD) { LINUX_CTR1(proc_init, "thread newtd(%d)", newtd->td_tid); @@ -117,6 +115,11 @@ linux_proc_init(struct thread *td, struc KASSERT(em != NULL, ("proc_init: emuldata not found in exec case.\n")); em->em_tid = td->td_proc->p_pid; + em->flags = 0; + em->pdeath_signal = 0; + em->robust_futexes = NULL; + em->child_clear_tid = NULL; + em->child_set_tid = NULL; /* epoll should be destroyed in a case of exec. */ pem = pem_find(td->td_proc); @@ -129,8 +132,6 @@ linux_proc_init(struct thread *td, struc } } - em->child_clear_tid = NULL; - em->child_set_tid = NULL; } void From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:08:26 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C03E07BE; Sun, 24 May 2015 17:08:26 +0000 (UTC) Received: from svn.freebsd.org (svn.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 93C751948; Sun, 24 May 2015 17:08:26 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OH8QwH008826; Sun, 24 May 2015 17:08:26 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OH8QV8008825; Sun, 24 May 2015 17:08:26 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241708.t4OH8QV8008825@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:08:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283455 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:08:26 -0000 Author: dchagin Date: Sun May 24 17:08:25 2015 New Revision: 283455 URL: https://svnweb.freebsd.org/changeset/base/283455 Log: Use local struct proc * varable instead of dereferencing td->td_proc. Differential Revision: https://reviews.freebsd.org/D1463 Reviewed by: emaste Modified: head/sys/compat/linux/linux_emul.c Modified: head/sys/compat/linux/linux_emul.c ============================================================================== --- head/sys/compat/linux/linux_emul.c Sun May 24 17:07:10 2015 (r283454) +++ head/sys/compat/linux/linux_emul.c Sun May 24 17:08:25 2015 (r283455) @@ -85,8 +85,11 @@ linux_proc_init(struct thread *td, struc struct linux_emuldata *em; struct linux_pemuldata *pem; struct epoll_emuldata *emd; + struct proc *p; if (newtd != NULL) { + p = newtd->td_proc; + /* non-exec call */ em = malloc(sizeof(*em), M_TEMP, M_WAITOK | M_ZERO); if (flags & LINUX_CLONE_THREAD) { @@ -95,26 +98,26 @@ linux_proc_init(struct thread *td, struc em->em_tid = newtd->td_tid; } else { - LINUX_CTR1(proc_init, "fork newtd(%d)", - newtd->td_proc->p_pid); + LINUX_CTR1(proc_init, "fork newtd(%d)", p->p_pid); - em->em_tid = newtd->td_proc->p_pid; + em->em_tid = p->p_pid; pem = malloc(sizeof(*pem), M_LINUX, M_WAITOK | M_ZERO); sx_init(&pem->pem_sx, "lpemlk"); - newtd->td_proc->p_emuldata = pem; + p->p_emuldata = pem; } newtd->td_emuldata = em; } else { + p = td->td_proc; + /* exec */ - LINUX_CTR1(proc_init, "exec newtd(%d)", - td->td_proc->p_pid); + LINUX_CTR1(proc_init, "exec newtd(%d)", p->p_pid); /* lookup the old one */ em = em_find(td); KASSERT(em != NULL, ("proc_init: emuldata not found in exec case.\n")); - em->em_tid = td->td_proc->p_pid; + em->em_tid = p->p_pid; em->flags = 0; em->pdeath_signal = 0; em->robust_futexes = NULL; @@ -122,7 +125,7 @@ linux_proc_init(struct thread *td, struc em->child_set_tid = NULL; /* epoll should be destroyed in a case of exec. */ - pem = pem_find(td->td_proc); + pem = pem_find(p); KASSERT(pem != NULL, ("proc_exit: proc emuldata not found.\n")); if (pem->epoll != NULL) { From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:09:08 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B8577915; Sun, 24 May 2015 17:09:08 +0000 (UTC) Received: from svn.freebsd.org (svn.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 98BD61955; Sun, 24 May 2015 17:09:08 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OH987a008973; Sun, 24 May 2015 17:09:08 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OH98b0008970; Sun, 24 May 2015 17:09:08 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241709.t4OH98b0008970@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:09:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283456 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:09:08 -0000 Author: dchagin Date: Sun May 24 17:09:07 2015 New Revision: 283456 URL: https://svnweb.freebsd.org/changeset/base/283456 Log: Improve ktr(9) records in thread managment code. Differential Revision: https://reviews.freebsd.org/D1464 Reviewed by: trasz Modified: head/sys/compat/linux/linux_emul.c head/sys/compat/linux/linux_fork.c Modified: head/sys/compat/linux/linux_emul.c ============================================================================== --- head/sys/compat/linux/linux_emul.c Sun May 24 17:08:25 2015 (r283455) +++ head/sys/compat/linux/linux_emul.c Sun May 24 17:09:07 2015 (r283456) @@ -147,6 +147,9 @@ linux_proc_exit(void *arg __unused, stru if (__predict_false(SV_CURPROC_ABI() != SV_ABI_LINUX)) return; + LINUX_CTR3(proc_exit, "thread(%d) proc(%d) p %p", + td->td_tid, p->p_pid, p); + pem = pem_find(p); if (pem == NULL) return; @@ -249,7 +252,7 @@ linux_thread_dtor(void *arg __unused, st return; td->td_emuldata = NULL; - LINUX_CTR1(exit, "thread dtor(%d)", em->em_tid); + LINUX_CTR1(thread_dtor, "thread(%d)", em->em_tid); free(em, M_TEMP); } @@ -271,8 +274,8 @@ linux_schedtail(struct thread *td) if (child_set_tid != NULL) { error = copyout(&em->em_tid, child_set_tid, sizeof(em->em_tid)); - LINUX_CTR4(clone, "schedtail(%d) %p stored %d error %d", + LINUX_CTR4(schedtail, "thread(%d) %p stored %d error %d", td->td_tid, child_set_tid, em->em_tid, error); } else - LINUX_CTR1(clone, "schedtail(%d)", em->em_tid); + LINUX_CTR1(schedtail, "thread(%d)", em->em_tid); } Modified: head/sys/compat/linux/linux_fork.c ============================================================================== --- head/sys/compat/linux/linux_fork.c Sun May 24 17:08:25 2015 (r283455) +++ head/sys/compat/linux/linux_fork.c Sun May 24 17:09:07 2015 (r283456) @@ -274,7 +274,7 @@ linux_clone_thread(struct thread *td, st } #endif - LINUX_CTR4(clone, "thread(%d) flags %x ptid %p ctid %p", + LINUX_CTR4(clone_thread, "thread(%d) flags %x ptid %p ctid %p", td->td_tid, (unsigned)args->flags, args->parent_tidptr, args->child_tidptr); @@ -351,7 +351,7 @@ linux_clone_thread(struct thread *td, st (int)newtd->td_tid, args->stack); #endif - LINUX_CTR2(clone, "thread(%d) successful clone to %d", + LINUX_CTR2(clone_thread, "thread(%d) successful clone to %d", td->td_tid, newtd->td_tid); if (args->flags & LINUX_CLONE_PARENT_SETTID) { @@ -434,7 +434,7 @@ linux_thread_detach(struct thread *td) em = em_find(td); KASSERT(em != NULL, ("thread_detach: emuldata not found.\n")); - LINUX_CTR1(exit, "thread detach(%d)", em->em_tid); + LINUX_CTR1(thread_detach, "thread(%d)", em->em_tid); release_futexes(td, em); @@ -442,7 +442,7 @@ linux_thread_detach(struct thread *td) if (child_clear_tid != NULL) { - LINUX_CTR2(exit, "thread detach(%d) %p", + LINUX_CTR2(thread_detach, "thread(%d) %p", em->em_tid, child_clear_tid); error = suword32(child_clear_tid, 0); From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:16:31 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C7C25AB0; Sun, 24 May 2015 17:16:31 +0000 (UTC) Received: from svn.freebsd.org (svn.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 B4E801A62; Sun, 24 May 2015 17:16:31 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHGVH9013614; Sun, 24 May 2015 17:16:31 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHGVxv013613; Sun, 24 May 2015 17:16:31 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201505241716.t4OHGVxv013613@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Sun, 24 May 2015 17:16:31 +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: r283457 - stable/10/sys/fs/nfsclient X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:16:32 -0000 Author: mav Date: Sun May 24 17:16:30 2015 New Revision: 283457 URL: https://svnweb.freebsd.org/changeset/base/283457 Log: MFC r282881: Do not promote large async writes to sync. Present implementation of large sync writes is too strict and so can be quite slow. Instead of doing that, execute large async write in chunks, syncing each chunk separately. It would be good to fix large sync writes too, but I leave it to somebody with more skills in this area. Modified: stable/10/sys/fs/nfsclient/nfs_clbio.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/fs/nfsclient/nfs_clbio.c ============================================================================== --- stable/10/sys/fs/nfsclient/nfs_clbio.c Sun May 24 17:09:07 2015 (r283456) +++ stable/10/sys/fs/nfsclient/nfs_clbio.c Sun May 24 17:16:30 2015 (r283457) @@ -875,7 +875,7 @@ ncl_write(struct vop_write_args *ap) struct nfsmount *nmp = VFSTONFS(vp->v_mount); daddr_t lbn; int bcount, noncontig_write, obcount; - int bp_cached, n, on, error = 0, error1; + int bp_cached, n, on, error = 0, error1, wouldcommit; size_t orig_resid, local_resid; off_t orig_size, tmp_off; @@ -919,7 +919,6 @@ ncl_write(struct vop_write_args *ap) if (ioflag & IO_NDELAY) return (EAGAIN); #endif -flush_and_restart: np->n_attrstamp = 0; KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp); error = ncl_vinvalbuf(vp, V_SAVE, td, 1); @@ -976,27 +975,14 @@ flush_and_restart: * IO_UNIT -- we just make all writes atomic anyway, as there's * no point optimizing for something that really won't ever happen. */ + wouldcommit = 0; if (!(ioflag & IO_SYNC)) { int nflag; mtx_lock(&np->n_mtx); nflag = np->n_flag; mtx_unlock(&np->n_mtx); - int needrestart = 0; - if (nmp->nm_wcommitsize < uio->uio_resid) { - /* - * If this request could not possibly be completed - * without exceeding the maximum outstanding write - * commit size, see if we can convert it into a - * synchronous write operation. - */ - if (ioflag & IO_NDELAY) - return (EAGAIN); - ioflag |= IO_SYNC; - if (nflag & NMODIFIED) - needrestart = 1; - } else if (nflag & NMODIFIED) { - int wouldcommit = 0; + if (nflag & NMODIFIED) { BO_LOCK(&vp->v_bufobj); if (vp->v_bufobj.bo_dirty.bv_cnt != 0) { TAILQ_FOREACH(bp, &vp->v_bufobj.bo_dirty.bv_hd, @@ -1006,27 +992,22 @@ flush_and_restart: } } BO_UNLOCK(&vp->v_bufobj); - /* - * Since we're not operating synchronously and - * bypassing the buffer cache, we are in a commit - * and holding all of these buffers whether - * transmitted or not. If not limited, this - * will lead to the buffer cache deadlocking, - * as no one else can flush our uncommitted buffers. - */ - wouldcommit += uio->uio_resid; - /* - * If we would initially exceed the maximum - * outstanding write commit size, flush and restart. - */ - if (wouldcommit > nmp->nm_wcommitsize) - needrestart = 1; } - if (needrestart) - goto flush_and_restart; } do { + if (!(ioflag & IO_SYNC)) { + wouldcommit += biosize; + if (wouldcommit > nmp->nm_wcommitsize) { + np->n_attrstamp = 0; + KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp); + error = ncl_vinvalbuf(vp, V_SAVE, td, 1); + if (error) + return (error); + wouldcommit = biosize; + } + } + NFSINCRGLOBAL(newnfsstats.biocache_writes); lbn = uio->uio_offset / biosize; on = uio->uio_offset - (lbn * biosize); From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:16:56 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1C6E6BE6; Sun, 24 May 2015 17:16:56 +0000 (UTC) Received: from svn.freebsd.org (svn.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 098E71A67; Sun, 24 May 2015 17:16:56 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHGtsn013719; Sun, 24 May 2015 17:16:55 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHGtCh013718; Sun, 24 May 2015 17:16:55 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201505241716.t4OHGtCh013718@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Sun, 24 May 2015 17:16:55 +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: r283458 - stable/9/sys/fs/nfsclient X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:16:56 -0000 Author: mav Date: Sun May 24 17:16:55 2015 New Revision: 283458 URL: https://svnweb.freebsd.org/changeset/base/283458 Log: MFC r282881: Do not promote large async writes to sync. Present implementation of large sync writes is too strict and so can be quite slow. Instead of doing that, execute large async write in chunks, syncing each chunk separately. It would be good to fix large sync writes too, but I leave it to somebody with more skills in this area. Modified: stable/9/sys/fs/nfsclient/nfs_clbio.c Directory Properties: stable/9/ (props changed) stable/9/sys/ (props changed) stable/9/sys/fs/ (props changed) Modified: stable/9/sys/fs/nfsclient/nfs_clbio.c ============================================================================== --- stable/9/sys/fs/nfsclient/nfs_clbio.c Sun May 24 17:16:30 2015 (r283457) +++ stable/9/sys/fs/nfsclient/nfs_clbio.c Sun May 24 17:16:55 2015 (r283458) @@ -874,7 +874,7 @@ ncl_write(struct vop_write_args *ap) struct nfsmount *nmp = VFSTONFS(vp->v_mount); daddr_t lbn; int bcount, noncontig_write, obcount; - int bp_cached, n, on, error = 0, error1; + int bp_cached, n, on, error = 0, error1, wouldcommit; size_t orig_resid, local_resid; off_t orig_size, tmp_off; @@ -918,7 +918,6 @@ ncl_write(struct vop_write_args *ap) if (ioflag & IO_NDELAY) return (EAGAIN); #endif -flush_and_restart: np->n_attrstamp = 0; KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp); error = ncl_vinvalbuf(vp, V_SAVE, td, 1); @@ -975,27 +974,14 @@ flush_and_restart: * IO_UNIT -- we just make all writes atomic anyway, as there's * no point optimizing for something that really won't ever happen. */ + wouldcommit = 0; if (!(ioflag & IO_SYNC)) { int nflag; mtx_lock(&np->n_mtx); nflag = np->n_flag; mtx_unlock(&np->n_mtx); - int needrestart = 0; - if (nmp->nm_wcommitsize < uio->uio_resid) { - /* - * If this request could not possibly be completed - * without exceeding the maximum outstanding write - * commit size, see if we can convert it into a - * synchronous write operation. - */ - if (ioflag & IO_NDELAY) - return (EAGAIN); - ioflag |= IO_SYNC; - if (nflag & NMODIFIED) - needrestart = 1; - } else if (nflag & NMODIFIED) { - int wouldcommit = 0; + if (nflag & NMODIFIED) { BO_LOCK(&vp->v_bufobj); if (vp->v_bufobj.bo_dirty.bv_cnt != 0) { TAILQ_FOREACH(bp, &vp->v_bufobj.bo_dirty.bv_hd, @@ -1005,27 +991,22 @@ flush_and_restart: } } BO_UNLOCK(&vp->v_bufobj); - /* - * Since we're not operating synchronously and - * bypassing the buffer cache, we are in a commit - * and holding all of these buffers whether - * transmitted or not. If not limited, this - * will lead to the buffer cache deadlocking, - * as no one else can flush our uncommitted buffers. - */ - wouldcommit += uio->uio_resid; - /* - * If we would initially exceed the maximum - * outstanding write commit size, flush and restart. - */ - if (wouldcommit > nmp->nm_wcommitsize) - needrestart = 1; } - if (needrestart) - goto flush_and_restart; } do { + if (!(ioflag & IO_SYNC)) { + wouldcommit += biosize; + if (wouldcommit > nmp->nm_wcommitsize) { + np->n_attrstamp = 0; + KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp); + error = ncl_vinvalbuf(vp, V_SAVE, td, 1); + if (error) + return (error); + wouldcommit = biosize; + } + } + NFSINCRGLOBAL(newnfsstats.biocache_writes); lbn = uio->uio_offset / biosize; on = uio->uio_offset & (biosize-1); From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:23:09 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 61BA8D47; Sun, 24 May 2015 17:23:09 +0000 (UTC) Received: from svn.freebsd.org (svn.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 4E6341B22; Sun, 24 May 2015 17:23:09 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHN94H018748; Sun, 24 May 2015 17:23:09 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHN8BB018745; Sun, 24 May 2015 17:23:08 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241723.t4OHN8BB018745@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:23:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283459 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:23:09 -0000 Author: dchagin Date: Sun May 24 17:23:08 2015 New Revision: 283459 URL: https://svnweb.freebsd.org/changeset/base/283459 Log: Add some clock mappings used in glibc 2.20. Differential Revision: https://reviews.freebsd.org/D1465 Reviewd by: trasz Modified: head/sys/compat/linux/linux_time.c head/sys/compat/linux/linux_timer.h Modified: head/sys/compat/linux/linux_time.c ============================================================================== --- head/sys/compat/linux/linux_time.c Sun May 24 17:16:55 2015 (r283458) +++ head/sys/compat/linux/linux_time.c Sun May 24 17:23:08 2015 (r283459) @@ -39,8 +39,11 @@ __KERNEL_RCSID(0, "$NetBSD: linux_time.c #include #include +#include #include #include +#include +#include #include #include #include @@ -59,7 +62,7 @@ __KERNEL_RCSID(0, "$NetBSD: linux_time.c #endif #include -#include +#include /* DTrace init */ LIN_SDT_PROVIDER_DECLARE(LINUX_DTRACE); @@ -157,6 +160,20 @@ linux_to_native_clockid(clockid_t *n, cl LIN_SDT_PROBE2(time, linux_to_native_clockid, entry, n, l); + if (l < 0) { + /* cpu-clock */ + if ((l & LINUX_CLOCKFD_MASK) == LINUX_CLOCKFD) + return (EINVAL); + if (LINUX_CPUCLOCK_WHICH(l) >= LINUX_CPUCLOCK_MAX) + return (EINVAL); + + if (LINUX_CPUCLOCK_PERTHREAD(l)) + *n = CLOCK_THREAD_CPUTIME_ID; + else + *n = CLOCK_PROCESS_CPUTIME_ID; + return (0); + } + switch (l) { case LINUX_CLOCK_REALTIME: *n = CLOCK_REALTIME; @@ -164,21 +181,27 @@ linux_to_native_clockid(clockid_t *n, cl case LINUX_CLOCK_MONOTONIC: *n = CLOCK_MONOTONIC; break; - case LINUX_CLOCK_PROCESS_CPUTIME_ID: - case LINUX_CLOCK_THREAD_CPUTIME_ID: - case LINUX_CLOCK_REALTIME_HR: - case LINUX_CLOCK_MONOTONIC_HR: + case LINUX_CLOCK_REALTIME_COARSE: + *n = CLOCK_REALTIME_FAST; + break; + case LINUX_CLOCK_MONOTONIC_COARSE: + *n = CLOCK_MONOTONIC_FAST; + break; + case LINUX_CLOCK_MONOTONIC_RAW: + case LINUX_CLOCK_BOOTTIME: + case LINUX_CLOCK_REALTIME_ALARM: + case LINUX_CLOCK_BOOTTIME_ALARM: + case LINUX_CLOCK_SGI_CYCLE: + case LINUX_CLOCK_TAI: LIN_SDT_PROBE1(time, linux_to_native_clockid, unsupported_clockid, l); LIN_SDT_PROBE1(time, linux_to_native_clockid, return, EINVAL); return (EINVAL); - break; default: LIN_SDT_PROBE1(time, linux_to_native_clockid, unknown_clockid, l); LIN_SDT_PROBE1(time, linux_to_native_clockid, return, EINVAL); return (EINVAL); - break; } LIN_SDT_PROBE1(time, linux_to_native_clockid, return, 0); @@ -189,9 +212,14 @@ int linux_clock_gettime(struct thread *td, struct linux_clock_gettime_args *args) { struct l_timespec lts; - int error; - clockid_t nwhich = 0; /* XXX: GCC */ struct timespec tp; + struct rusage ru; + struct thread *targettd; + struct proc *p; + int error, clockwhich; + clockid_t nwhich = 0; /* XXX: GCC */ + pid_t pid; + lwpid_t tid; LIN_SDT_PROBE2(time, linux_clock_gettime, entry, args->which, args->tp); @@ -202,7 +230,100 @@ linux_clock_gettime(struct thread *td, s LIN_SDT_PROBE1(time, linux_clock_gettime, return, error); return (error); } - error = kern_clock_gettime(td, nwhich, &tp); + + switch (nwhich) { + case CLOCK_PROCESS_CPUTIME_ID: + clockwhich = LINUX_CPUCLOCK_WHICH(args->which); + pid = LINUX_CPUCLOCK_ID(args->which); + if (pid == 0) { + p = td->td_proc; + PROC_LOCK(p); + } else { + error = pget(pid, PGET_CANSEE, &p); + if (error != 0) + return (EINVAL); + } + switch (clockwhich) { + case LINUX_CPUCLOCK_PROF: + PROC_STATLOCK(p); + calcru(p, &ru.ru_utime, &ru.ru_stime); + PROC_STATUNLOCK(p); + PROC_UNLOCK(p); + timevaladd(&ru.ru_utime, &ru.ru_stime); + TIMEVAL_TO_TIMESPEC(&ru.ru_utime, &tp); + break; + case LINUX_CPUCLOCK_VIRT: + PROC_STATLOCK(p); + calcru(p, &ru.ru_utime, &ru.ru_stime); + PROC_STATUNLOCK(p); + PROC_UNLOCK(p); + TIMEVAL_TO_TIMESPEC(&ru.ru_utime, &tp); + break; + case LINUX_CPUCLOCK_SCHED: + PROC_UNLOCK(p); + error = kern_clock_getcpuclockid2(td, pid, + CPUCLOCK_WHICH_PID, &nwhich); + if (error != 0) + return (EINVAL); + error = kern_clock_gettime(td, nwhich, &tp); + break; + default: + PROC_UNLOCK(p); + return (EINVAL); + } + + break; + + case CLOCK_THREAD_CPUTIME_ID: + clockwhich = LINUX_CPUCLOCK_WHICH(args->which); + p = td->td_proc; + tid = LINUX_CPUCLOCK_ID(args->which); + if (tid == 0) { + targettd = td; + PROC_LOCK(p); + } else { + targettd = tdfind(tid, p->p_pid); + if (targettd == NULL) + return (EINVAL); + } + switch (clockwhich) { + case LINUX_CPUCLOCK_PROF: + PROC_STATLOCK(p); + thread_lock(targettd); + rufetchtd(targettd, &ru); + thread_unlock(targettd); + PROC_STATUNLOCK(p); + PROC_UNLOCK(p); + timevaladd(&ru.ru_utime, &ru.ru_stime); + TIMEVAL_TO_TIMESPEC(&ru.ru_utime, &tp); + break; + case LINUX_CPUCLOCK_VIRT: + PROC_STATLOCK(p); + thread_lock(targettd); + rufetchtd(targettd, &ru); + thread_unlock(targettd); + PROC_STATUNLOCK(p); + PROC_UNLOCK(p); + TIMEVAL_TO_TIMESPEC(&ru.ru_utime, &tp); + break; + case LINUX_CPUCLOCK_SCHED: + error = kern_clock_getcpuclockid2(td, tid, + CPUCLOCK_WHICH_TID, &nwhich); + PROC_UNLOCK(p); + if (error != 0) + return (EINVAL); + error = kern_clock_gettime(td, nwhich, &tp); + break; + default: + PROC_UNLOCK(p); + return (EINVAL); + } + break; + + default: + error = kern_clock_gettime(td, nwhich, &tp); + break; + } if (error != 0) { LIN_SDT_PROBE1(time, linux_clock_gettime, gettime_error, error); LIN_SDT_PROBE1(time, linux_clock_gettime, return, error); @@ -260,19 +381,16 @@ linux_clock_settime(struct thread *td, s int linux_clock_getres(struct thread *td, struct linux_clock_getres_args *args) { + struct proc *p; struct timespec ts; struct l_timespec lts; - int error; + int error, clockwhich; clockid_t nwhich = 0; /* XXX: GCC */ + pid_t pid; + lwpid_t tid; LIN_SDT_PROBE2(time, linux_clock_getres, entry, args->which, args->tp); - if (args->tp == NULL) { - LIN_SDT_PROBE0(time, linux_clock_getres, nullcall); - LIN_SDT_PROBE1(time, linux_clock_getres, return, 0); - return (0); - } - error = linux_to_native_clockid(&nwhich, args->which); if (error != 0) { LIN_SDT_PROBE1(time, linux_clock_getres, conversion_error, @@ -280,6 +398,59 @@ linux_clock_getres(struct thread *td, st LIN_SDT_PROBE1(time, linux_clock_getres, return, error); return (error); } + + /* + * Check user supplied clock id in case of per-process + * or thread-specific cpu-time clock. + */ + switch (nwhich) { + case CLOCK_THREAD_CPUTIME_ID: + tid = LINUX_CPUCLOCK_ID(args->which); + if (tid != 0) { + p = td->td_proc; + if (tdfind(tid, p->p_pid) == NULL) + return (ESRCH); + PROC_UNLOCK(p); + } + break; + case CLOCK_PROCESS_CPUTIME_ID: + pid = LINUX_CPUCLOCK_ID(args->which); + if (pid != 0) { + error = pget(pid, PGET_CANSEE, &p); + if (error != 0) + return (EINVAL); + PROC_UNLOCK(p); + } + break; + } + + if (args->tp == NULL) { + LIN_SDT_PROBE0(time, linux_clock_getres, nullcall); + LIN_SDT_PROBE1(time, linux_clock_getres, return, 0); + return (0); + } + + switch (nwhich) { + case CLOCK_THREAD_CPUTIME_ID: + case CLOCK_PROCESS_CPUTIME_ID: + clockwhich = LINUX_CPUCLOCK_WHICH(args->which); + switch (clockwhich) { + case LINUX_CPUCLOCK_PROF: + nwhich = CLOCK_PROF; + break; + case LINUX_CPUCLOCK_VIRT: + nwhich = CLOCK_VIRTUAL; + break; + case LINUX_CPUCLOCK_SCHED: + break; + default: + return (EINVAL); + } + break; + + default: + break; + } error = kern_clock_getres(td, nwhich, &ts); if (error != 0) { LIN_SDT_PROBE1(time, linux_clock_getres, getres_error, error); Modified: head/sys/compat/linux/linux_timer.h ============================================================================== --- head/sys/compat/linux/linux_timer.h Sun May 24 17:16:55 2015 (r283458) +++ head/sys/compat/linux/linux_timer.h Sun May 24 17:23:08 2015 (r283459) @@ -56,6 +56,23 @@ #define LINUX_CLOCK_SGI_CYCLE 10 #define LINUX_CLOCK_TAI 11 +#define LINUX_CPUCLOCK_PERTHREAD_MASK 4 +#define LINUX_CPUCLOCK_MASK 3 +#define LINUX_CPUCLOCK_WHICH(clock) \ + ((clock) & (clockid_t) LINUX_CPUCLOCK_MASK) +#define LINUX_CPUCLOCK_PROF 0 +#define LINUX_CPUCLOCK_VIRT 1 +#define LINUX_CPUCLOCK_SCHED 2 +#define LINUX_CPUCLOCK_MAX 3 +#define LINUX_CLOCKFD LINUX_CPUCLOCK_MAX +#define LINUX_CLOCKFD_MASK \ + (LINUX_CPUCLOCK_PERTHREAD_MASK|LINUX_CPUCLOCK_MASK) + +#define LINUX_CPUCLOCK_ID(clock) ((pid_t) ~((clock) >> 3)) +#define LINUX_CPUCLOCK_PERTHREAD(clock) \ + (((clock) & (clockid_t) LINUX_CPUCLOCK_PERTHREAD_MASK) != 0) + + #define L_SIGEV_SIGNAL 0 #define L_SIGEV_NONE 1 #define L_SIGEV_THREAD 2 From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:25:58 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B6969FA2; Sun, 24 May 2015 17:25:58 +0000 (UTC) Received: from svn.freebsd.org (svn.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 A40641B47; Sun, 24 May 2015 17:25:58 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHPw9a019356; Sun, 24 May 2015 17:25:58 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHPwYY019354; Sun, 24 May 2015 17:25:58 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241725.t4OHPwYY019354@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:25:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283460 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:25:58 -0000 Author: dchagin Date: Sun May 24 17:25:57 2015 New Revision: 283460 URL: https://svnweb.freebsd.org/changeset/base/283460 Log: Print out unsupported futex operation message only once for the process. Differential Revision: https://reviews.freebsd.org/D1498 Modified: head/sys/compat/linux/linux_emul.h head/sys/compat/linux/linux_futex.c Modified: head/sys/compat/linux/linux_emul.h ============================================================================== --- head/sys/compat/linux/linux_emul.h Sun May 24 17:23:08 2015 (r283459) +++ head/sys/compat/linux/linux_emul.h Sun May 24 17:25:57 2015 (r283460) @@ -61,6 +61,7 @@ int linux_common_execve(struct thread *, #define LINUX_XDEPR_REQUEUEOP 0x00000001 /* uses deprecated futex REQUEUE op*/ #define LINUX_XUNSUP_EPOLL 0x00000002 /* unsupported epoll events */ +#define LINUX_XUNSUP_FUTEXPIOP 0x00000004 /* uses unsupported pi futex */ struct linux_pemuldata { uint32_t flags; /* process emuldata flags */ Modified: head/sys/compat/linux/linux_futex.c ============================================================================== --- head/sys/compat/linux/linux_futex.c Sun May 24 17:23:08 2015 (r283459) +++ head/sys/compat/linux/linux_futex.c Sun May 24 17:25:57 2015 (r283460) @@ -936,29 +936,43 @@ linux_sys_futex(struct thread *td, struc case LINUX_FUTEX_LOCK_PI: /* not yet implemented */ - linux_msg(td, - "linux_sys_futex: " - "op LINUX_FUTEX_LOCK_PI not implemented\n"); - LIN_SDT_PROBE0(futex, linux_sys_futex, unimplemented_lock_pi); + pem = pem_find(td->td_proc); + if ((pem->flags & LINUX_XUNSUP_FUTEXPIOP) == 0) { + linux_msg(td, + "linux_sys_futex: " + "unsupported futex_pi op\n"); + pem->flags |= LINUX_XUNSUP_FUTEXPIOP; + LIN_SDT_PROBE0(futex, linux_sys_futex, + unimplemented_lock_pi); + } LIN_SDT_PROBE1(futex, linux_sys_futex, return, ENOSYS); return (ENOSYS); case LINUX_FUTEX_UNLOCK_PI: /* not yet implemented */ - linux_msg(td, - "linux_sys_futex: " - "op LINUX_FUTEX_UNLOCK_PI not implemented\n"); - LIN_SDT_PROBE0(futex, linux_sys_futex, unimplemented_unlock_pi); + pem = pem_find(td->td_proc); + if ((pem->flags & LINUX_XUNSUP_FUTEXPIOP) == 0) { + linux_msg(td, + "linux_sys_futex: " + "unsupported futex_pi op\n"); + pem->flags |= LINUX_XUNSUP_FUTEXPIOP; + LIN_SDT_PROBE0(futex, linux_sys_futex, + unimplemented_unlock_pi); + } LIN_SDT_PROBE1(futex, linux_sys_futex, return, ENOSYS); return (ENOSYS); case LINUX_FUTEX_TRYLOCK_PI: /* not yet implemented */ - linux_msg(td, - "linux_sys_futex: " - "op LINUX_FUTEX_TRYLOCK_PI not implemented\n"); - LIN_SDT_PROBE0(futex, linux_sys_futex, - unimplemented_trylock_pi); + pem = pem_find(td->td_proc); + if ((pem->flags & LINUX_XUNSUP_FUTEXPIOP) == 0) { + linux_msg(td, + "linux_sys_futex: " + "unsupported futex_pi op\n"); + pem->flags |= LINUX_XUNSUP_FUTEXPIOP; + LIN_SDT_PROBE0(futex, linux_sys_futex, + unimplemented_trylock_pi); + } LIN_SDT_PROBE1(futex, linux_sys_futex, return, ENOSYS); return (ENOSYS); @@ -985,21 +999,29 @@ linux_sys_futex(struct thread *td, struc case LINUX_FUTEX_WAIT_REQUEUE_PI: /* not yet implemented */ - linux_msg(td, - "linux_sys_futex: " - "op FUTEX_WAIT_REQUEUE_PI not implemented\n"); - LIN_SDT_PROBE0(futex, linux_sys_futex, - unimplemented_wait_requeue_pi); + pem = pem_find(td->td_proc); + if ((pem->flags & LINUX_XUNSUP_FUTEXPIOP) == 0) { + linux_msg(td, + "linux_sys_futex: " + "unsupported futex_pi op\n"); + pem->flags |= LINUX_XUNSUP_FUTEXPIOP; + LIN_SDT_PROBE0(futex, linux_sys_futex, + unimplemented_wait_requeue_pi); + } LIN_SDT_PROBE1(futex, linux_sys_futex, return, ENOSYS); return (ENOSYS); case LINUX_FUTEX_CMP_REQUEUE_PI: /* not yet implemented */ - linux_msg(td, - "linux_sys_futex: " - "op LINUX_FUTEX_CMP_REQUEUE_PI not implemented\n"); - LIN_SDT_PROBE0(futex, linux_sys_futex, - unimplemented_cmp_requeue_pi); + pem = pem_find(td->td_proc); + if ((pem->flags & LINUX_XUNSUP_FUTEXPIOP) == 0) { + linux_msg(td, + "linux_sys_futex: " + "unsupported futex_pi op\n"); + pem->flags |= LINUX_XUNSUP_FUTEXPIOP; + LIN_SDT_PROBE0(futex, linux_sys_futex, + unimplemented_cmp_requeue_pi); + } LIN_SDT_PROBE1(futex, linux_sys_futex, return, ENOSYS); return (ENOSYS); From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:26:59 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 76CB3179; Sun, 24 May 2015 17:26:59 +0000 (UTC) Received: from svn.freebsd.org (svn.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 4ACED1B60; Sun, 24 May 2015 17:26:59 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHQxXu019550; Sun, 24 May 2015 17:26:59 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHQxCa019549; Sun, 24 May 2015 17:26:59 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241726.t4OHQxCa019549@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:26:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283461 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:26:59 -0000 Author: dchagin Date: Sun May 24 17:26:58 2015 New Revision: 283461 URL: https://svnweb.freebsd.org/changeset/base/283461 Log: As for now our tmpfs is no longer being considered "highly experimental" remove /dev/shm magic commited in r218497 and convert tmpfs type to an expected magic number. Differential Revision: https://reviews.freebsd.org/D1497 Reviewed by: emaste, trasz Modified: head/sys/compat/linux/linux_stats.c Modified: head/sys/compat/linux/linux_stats.c ============================================================================== --- head/sys/compat/linux/linux_stats.c Sun May 24 17:25:57 2015 (r283460) +++ head/sys/compat/linux/linux_stats.c Sun May 24 17:26:58 2015 (r283461) @@ -58,7 +58,6 @@ __FBSDID("$FreeBSD$"); #include #include -#define LINUX_SHMFS_MAGIC 0x01021994 static void translate_vnhook_major_minor(struct vnode *vp, struct stat *sb) @@ -352,6 +351,7 @@ struct l_statfs { #define LINUX_PROC_SUPER_MAGIC 0x9fa0L #define LINUX_UFS_SUPER_MAGIC 0x00011954L /* XXX - UFS_MAGIC in Linux */ #define LINUX_DEVFS_SUPER_MAGIC 0x1373L +#define LINUX_SHMFS_MAGIC 0x01021994 static long bsd_to_linux_ftype(const char *fstypename) @@ -369,6 +369,7 @@ bsd_to_linux_ftype(const char *fstypenam {"hpfs", LINUX_HPFS_SUPER_MAGIC}, {"coda", LINUX_CODA_SUPER_MAGIC}, {"devfs", LINUX_DEVFS_SUPER_MAGIC}, + {"tmpfs", LINUX_SHMFS_MAGIC}, {NULL, 0L}}; for (i = 0; b2l_tbl[i].bsd_name != NULL; i++) @@ -400,7 +401,7 @@ linux_statfs(struct thread *td, struct l struct l_statfs linux_statfs; struct statfs bsd_statfs; char *path; - int error, dev_shm; + int error; LCONVPATHEXIST(td, args->path, &path); @@ -408,17 +409,11 @@ linux_statfs(struct thread *td, struct l if (ldebug(statfs)) printf(ARGS(statfs, "%s, *"), path); #endif - dev_shm = 0; error = kern_statfs(td, path, UIO_SYSSPACE, &bsd_statfs); - if (strncmp(path, "/dev/shm", sizeof("/dev/shm") - 1) == 0) - dev_shm = (path[8] == '\0' - || (path[8] == '/' && path[9] == '\0')); LFREEPATH(path); if (error) return (error); bsd_to_linux_statfs(&bsd_statfs, &linux_statfs); - if (dev_shm) - linux_statfs.f_type = LINUX_SHMFS_MAGIC; return copyout(&linux_statfs, args->buf, sizeof(linux_statfs)); } From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:28:00 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 66C7D2CC; Sun, 24 May 2015 17:28:00 +0000 (UTC) Received: from svn.freebsd.org (svn.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 5445F1B7C; Sun, 24 May 2015 17:28:00 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHS0Mj019736; Sun, 24 May 2015 17:28:00 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHS0cI019735; Sun, 24 May 2015 17:28:00 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241728.t4OHS0cI019735@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:28:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283462 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:28:00 -0000 Author: dchagin Date: Sun May 24 17:27:59 2015 New Revision: 283462 URL: https://svnweb.freebsd.org/changeset/base/283462 Log: Add prototypes for static futex functions. Differential Revision: https://reviews.freebsd.org/D1519 Reviewed by: trasz Modified: head/sys/compat/linux/linux_futex.c Modified: head/sys/compat/linux/linux_futex.c ============================================================================== --- head/sys/compat/linux/linux_futex.c Sun May 24 17:26:58 2015 (r283461) +++ head/sys/compat/linux/linux_futex.c Sun May 24 17:27:59 2015 (r283462) @@ -246,6 +246,21 @@ struct mtx futex_mtx; /* protects the * wp_list to prevent double wakeup. */ +static void futex_put(struct futex *, struct waiting_proc *); +static int futex_get0(uint32_t *, struct futex **f, uint32_t); +static int futex_get(uint32_t *, struct waiting_proc **, struct futex **, + uint32_t); +static int futex_sleep(struct futex *, struct waiting_proc *, int); +static int futex_wake(struct futex *, int, uint32_t); +static int futex_requeue(struct futex *, int, struct futex *, int); +static int futex_wait(struct futex *, struct waiting_proc *, int, + uint32_t); +static int futex_atomic_op(struct thread *, int, uint32_t *); +static int handle_futex_death(struct linux_emuldata *, uint32_t *, + unsigned int); +static int fetch_robust_entry(struct linux_robust_list **, + struct linux_robust_list **, unsigned int *); + /* support.s */ int futex_xchgl(int oparg, uint32_t *uaddr, int *oldval); int futex_addl(int oparg, uint32_t *uaddr, int *oldval); @@ -253,6 +268,7 @@ int futex_orl(int oparg, uint32_t *uaddr int futex_andl(int oparg, uint32_t *uaddr, int *oldval); int futex_xorl(int oparg, uint32_t *uaddr, int *oldval); + static void futex_put(struct futex *f, struct waiting_proc *wp) { From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:29:20 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1CB2B462; Sun, 24 May 2015 17:29:20 +0000 (UTC) Received: from svn.freebsd.org (svn.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 09C5F1B98; Sun, 24 May 2015 17:29:20 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHTJEx019964; Sun, 24 May 2015 17:29:19 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHTJnZ019960; Sun, 24 May 2015 17:29:19 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241729.t4OHTJnZ019960@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:29:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283463 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:29:20 -0000 Author: dchagin Date: Sun May 24 17:29:18 2015 New Revision: 283463 URL: https://svnweb.freebsd.org/changeset/base/283463 Log: Do not use struct l_timespec without conversion. While here move args->timeout handling before acquiring the futex key at FUTEX_WAIT path. Differential Revision: https://reviews.freebsd.org/D1520 Reviewed by: trasz Modified: head/sys/compat/linux/linux_futex.c head/sys/compat/linux/linux_misc.c head/sys/compat/linux/linux_time.c head/sys/compat/linux/linux_timer.h Modified: head/sys/compat/linux/linux_futex.c ============================================================================== --- head/sys/compat/linux/linux_futex.c Sun May 24 17:27:59 2015 (r283462) +++ head/sys/compat/linux/linux_futex.c Sun May 24 17:29:18 2015 (r283463) @@ -65,6 +65,7 @@ __KERNEL_RCSID(1, "$NetBSD: linux_futex. #include #include #include +#include #include /* DTrace init */ @@ -669,7 +670,8 @@ linux_sys_futex(struct thread *td, struc struct linux_pemuldata *pem; struct waiting_proc *wp; struct futex *f, *f2; - struct l_timespec timeout; + struct l_timespec ltimeout; + struct timespec timeout; struct timeval utv, ctv; int timeout_hz; int error; @@ -713,6 +715,38 @@ linux_sys_futex(struct thread *td, struc LINUX_CTR3(sys_futex, "WAIT uaddr %p val 0x%x bitset 0x%x", args->uaddr, args->val, args->val3); + if (args->timeout != NULL) { + error = copyin(args->timeout, <imeout, sizeof(ltimeout)); + if (error) { + LIN_SDT_PROBE1(futex, linux_sys_futex, copyin_error, + error); + LIN_SDT_PROBE1(futex, linux_sys_futex, return, error); + return (error); + } + error = linux_to_native_timespec(&timeout, <imeout); + if (error) + return (error); + TIMESPEC_TO_TIMEVAL(&utv, &timeout); + error = itimerfix(&utv); + if (error) { + LIN_SDT_PROBE1(futex, linux_sys_futex, itimerfix_error, + error); + LIN_SDT_PROBE1(futex, linux_sys_futex, return, error); + return (error); + } + if (clockrt) { + microtime(&ctv); + timevalsub(&utv, &ctv); + } else if (args->op == LINUX_FUTEX_WAIT_BITSET) { + microuptime(&ctv); + timevalsub(&utv, &ctv); + } + if (utv.tv_sec < 0) + timevalclear(&utv); + timeout_hz = tvtohz(&utv); + } else + timeout_hz = 0; + error = futex_get(args->uaddr, &wp, &f, flags | FUTEX_CREATE_WP); if (error) { @@ -745,37 +779,6 @@ linux_sys_futex(struct thread *td, struc return (EWOULDBLOCK); } - if (args->timeout != NULL) { - error = copyin(args->timeout, &timeout, sizeof(timeout)); - if (error) { - LIN_SDT_PROBE1(futex, linux_sys_futex, copyin_error, - error); - LIN_SDT_PROBE1(futex, linux_sys_futex, return, error); - futex_put(f, wp); - return (error); - } - TIMESPEC_TO_TIMEVAL(&utv, &timeout); - error = itimerfix(&utv); - if (error) { - LIN_SDT_PROBE1(futex, linux_sys_futex, itimerfix_error, - error); - LIN_SDT_PROBE1(futex, linux_sys_futex, return, error); - futex_put(f, wp); - return (error); - } - if (clockrt) { - microtime(&ctv); - timevalsub(&utv, &ctv); - } else if (args->op == LINUX_FUTEX_WAIT_BITSET) { - microuptime(&ctv); - timevalsub(&utv, &ctv); - } - if (utv.tv_sec < 0) - timevalclear(&utv); - timeout_hz = tvtohz(&utv); - } else - timeout_hz = 0; - error = futex_wait(f, wp, timeout_hz, args->val3); break; Modified: head/sys/compat/linux/linux_misc.c ============================================================================== --- head/sys/compat/linux/linux_misc.c Sun May 24 17:27:59 2015 (r283462) +++ head/sys/compat/linux/linux_misc.c Sun May 24 17:29:18 2015 (r283463) @@ -88,6 +88,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -2168,8 +2169,9 @@ linux_pselect6(struct thread *td, struct error = copyin(args->tsp, <s, sizeof(lts)); if (error != 0) return (error); - uts.tv_sec = lts.tv_sec; - uts.tv_nsec = lts.tv_nsec; + error = linux_to_native_timespec(&uts, <s); + if (error != 0) + return (error); TIMESPEC_TO_TIMEVAL(&utv, &uts); if (itimerfix(&utv)) @@ -2201,8 +2203,8 @@ linux_pselect6(struct thread *td, struct timevalclear(&utv); TIMEVAL_TO_TIMESPEC(&utv, &uts); - lts.tv_sec = uts.tv_sec; - lts.tv_nsec = uts.tv_nsec; + + native_to_linux_timespec(<s, &uts); error = copyout(<s, args->tsp, sizeof(lts)); } @@ -2234,8 +2236,9 @@ linux_ppoll(struct thread *td, struct li error = copyin(args->tsp, <s, sizeof(lts)); if (error) return (error); - uts.tv_sec = lts.tv_sec; - uts.tv_nsec = lts.tv_nsec; + error = linux_to_native_timespec(&uts, <s); + if (error != 0) + return (error); nanotime(&ts0); tsp = &uts; @@ -2254,8 +2257,7 @@ linux_ppoll(struct thread *td, struct li } else timespecclear(&uts); - lts.tv_sec = uts.tv_sec; - lts.tv_nsec = uts.tv_nsec; + native_to_linux_timespec(<s, &uts); error = copyout(<s, args->tsp, sizeof(lts)); } @@ -2343,8 +2345,7 @@ linux_sched_rr_get_interval(struct threa PROC_UNLOCK(tdt->td_proc); if (error != 0) return (error); - lts.tv_sec = ts.tv_sec; - lts.tv_nsec = ts.tv_nsec; + native_to_linux_timespec(<s, &ts); return (copyout(<s, uap->interval, sizeof(lts))); } Modified: head/sys/compat/linux/linux_time.c ============================================================================== --- head/sys/compat/linux/linux_time.c Sun May 24 17:27:59 2015 (r283462) +++ head/sys/compat/linux/linux_time.c Sun May 24 17:29:18 2015 (r283463) @@ -119,13 +119,10 @@ LIN_SDT_PROBE_DEFINE1(time, linux_clock_ LIN_SDT_PROBE_DEFINE1(time, linux_clock_nanosleep, unsupported_clockid, "int"); LIN_SDT_PROBE_DEFINE1(time, linux_clock_nanosleep, return, "int"); -static void native_to_linux_timespec(struct l_timespec *, - struct timespec *); -static int linux_to_native_timespec(struct timespec *, - struct l_timespec *); static int linux_to_native_clockid(clockid_t *, clockid_t); -static void + +void native_to_linux_timespec(struct l_timespec *ltp, struct timespec *ntp) { @@ -137,7 +134,7 @@ native_to_linux_timespec(struct l_timesp LIN_SDT_PROBE0(time, native_to_linux_timespec, return); } -static int +int linux_to_native_timespec(struct timespec *ntp, struct l_timespec *ltp) { Modified: head/sys/compat/linux/linux_timer.h ============================================================================== --- head/sys/compat/linux/linux_timer.h Sun May 24 17:27:59 2015 (r283462) +++ head/sys/compat/linux/linux_timer.h Sun May 24 17:29:18 2015 (r283463) @@ -111,4 +111,9 @@ struct l_itimerspec { struct l_timespec it_value; }; +void native_to_linux_timespec(struct l_timespec *, + struct timespec *); +int linux_to_native_timespec(struct timespec *, + struct l_timespec *); + #endif /* _LINUX_TIMER_H */ From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:30:33 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 157C8710; Sun, 24 May 2015 17:30:33 +0000 (UTC) Received: from svn.freebsd.org (svn.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 EB71E1BB6; Sun, 24 May 2015 17:30:32 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHUWJO021406; Sun, 24 May 2015 17:30:32 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHUWRQ021402; Sun, 24 May 2015 17:30:32 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241730.t4OHUWRQ021402@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:30:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283464 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:30:33 -0000 Author: dchagin Date: Sun May 24 17:30:31 2015 New Revision: 283464 URL: https://svnweb.freebsd.org/changeset/base/283464 Log: Delete the duplicate of linux_to_native_clockid() function. Differential Revision: https://reviews.freebsd.org/D1521 Reviewed by: trasz Modified: head/sys/compat/linux/linux_time.c head/sys/compat/linux/linux_timer.c head/sys/compat/linux/linux_timer.h Modified: head/sys/compat/linux/linux_time.c ============================================================================== --- head/sys/compat/linux/linux_time.c Sun May 24 17:29:18 2015 (r283463) +++ head/sys/compat/linux/linux_time.c Sun May 24 17:30:31 2015 (r283464) @@ -119,8 +119,6 @@ LIN_SDT_PROBE_DEFINE1(time, linux_clock_ LIN_SDT_PROBE_DEFINE1(time, linux_clock_nanosleep, unsupported_clockid, "int"); LIN_SDT_PROBE_DEFINE1(time, linux_clock_nanosleep, return, "int"); -static int linux_to_native_clockid(clockid_t *, clockid_t); - void native_to_linux_timespec(struct l_timespec *ltp, struct timespec *ntp) @@ -151,7 +149,7 @@ linux_to_native_timespec(struct timespec return (0); } -static int +int linux_to_native_clockid(clockid_t *n, clockid_t l) { Modified: head/sys/compat/linux/linux_timer.c ============================================================================== --- head/sys/compat/linux/linux_timer.c Sun May 24 17:29:18 2015 (r283463) +++ head/sys/compat/linux/linux_timer.c Sun May 24 17:30:31 2015 (r283464) @@ -49,23 +49,6 @@ __FBSDID("$FreeBSD$"); #endif #include -static int -linux_convert_l_clockid(clockid_t *clock_id) -{ - - switch (*clock_id) { - case LINUX_CLOCK_REALTIME: - *clock_id = CLOCK_REALTIME; - break; - case LINUX_CLOCK_MONOTONIC: - *clock_id = CLOCK_MONOTONIC; - break; - default: - return (EINVAL); - } - - return (0); -} static int linux_convert_l_sigevent(struct l_sigevent *l_sig, struct sigevent *sig) @@ -106,6 +89,7 @@ linux_timer_create(struct thread *td, st { struct l_sigevent l_ev; struct sigevent ev, *evp; + clockid_t nwhich; int error, id; if (uap->evp == NULL) { @@ -119,10 +103,10 @@ linux_timer_create(struct thread *td, st return (error); evp = &ev; } - error = linux_convert_l_clockid(&uap->clock_id); + error = linux_to_native_clockid(&nwhich, uap->clock_id); if (error != 0) return (error); - error = kern_ktimer_create(td, uap->clock_id, evp, &id, -1); + error = kern_ktimer_create(td, nwhich, evp, &id, -1); if (error == 0) { error = copyout(&id, uap->timerid, sizeof(int)); if (error != 0) @@ -179,4 +163,3 @@ linux_timer_delete(struct thread *td, st return (kern_ktimer_delete(td, uap->timerid)); } - Modified: head/sys/compat/linux/linux_timer.h ============================================================================== --- head/sys/compat/linux/linux_timer.h Sun May 24 17:29:18 2015 (r283463) +++ head/sys/compat/linux/linux_timer.h Sun May 24 17:30:31 2015 (r283464) @@ -115,5 +115,6 @@ void native_to_linux_timespec(struct l_t struct timespec *); int linux_to_native_timespec(struct timespec *, struct l_timespec *); +int linux_to_native_clockid(clockid_t *, clockid_t); #endif /* _LINUX_TIMER_H */ From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:33:24 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9E2B897A; Sun, 24 May 2015 17:33:24 +0000 (UTC) Received: from svn.freebsd.org (svn.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 7F4E11C88; Sun, 24 May 2015 17:33:24 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHXO7q024371; Sun, 24 May 2015 17:33:24 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHXMsW024357; Sun, 24 May 2015 17:33:22 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241733.t4OHXMsW024357@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:33:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283465 - in head/sys: amd64/linux amd64/linux32 compat/linux i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:33:24 -0000 Author: dchagin Date: Sun May 24 17:33:21 2015 New Revision: 283465 URL: https://svnweb.freebsd.org/changeset/base/283465 Log: Add preliminary fallocate system call implementation to emulate posix_fallocate() function. Differential Revision: https://reviews.freebsd.org/D1523 Reviewed by: emaste Modified: head/sys/amd64/linux/linux_dummy.c head/sys/amd64/linux/syscalls.master head/sys/amd64/linux32/linux32_dummy.c head/sys/amd64/linux32/syscalls.master head/sys/compat/linux/linux_file.c head/sys/i386/linux/linux_dummy.c head/sys/i386/linux/syscalls.master Modified: head/sys/amd64/linux/linux_dummy.c ============================================================================== --- head/sys/amd64/linux/linux_dummy.c Sun May 24 17:30:31 2015 (r283464) +++ head/sys/amd64/linux/linux_dummy.c Sun May 24 17:33:21 2015 (r283465) @@ -102,7 +102,6 @@ DUMMY(utimensat); DUMMY(epoll_pwait); DUMMY(signalfd); DUMMY(timerfd); -DUMMY(fallocate); DUMMY(timerfd_settime); DUMMY(timerfd_gettime); DUMMY(signalfd4); Modified: head/sys/amd64/linux/syscalls.master ============================================================================== --- head/sys/amd64/linux/syscalls.master Sun May 24 17:30:31 2015 (r283464) +++ head/sys/amd64/linux/syscalls.master Sun May 24 17:33:21 2015 (r283465) @@ -474,7 +474,8 @@ 282 AUE_NULL STD { int linux_signalfd(void); } 283 AUE_NULL STD { int linux_timerfd(void); } 284 AUE_NULL STD { int linux_eventfd(l_uint initval); } -285 AUE_NULL STD { int linux_fallocate(void); } +285 AUE_NULL STD { int linux_fallocate(l_int fd, l_int mode, \ + l_loff_t offset, l_loff_t len); } 286 AUE_NULL STD { int linux_timerfd_settime(void); } 287 AUE_NULL STD { int linux_timerfd_gettime(void); } 288 AUE_ACCEPT STD { int linux_accept4(l_int s, l_uintptr_t addr, \ Modified: head/sys/amd64/linux32/linux32_dummy.c ============================================================================== --- head/sys/amd64/linux32/linux32_dummy.c Sun May 24 17:30:31 2015 (r283464) +++ head/sys/amd64/linux32/linux32_dummy.c Sun May 24 17:33:21 2015 (r283465) @@ -107,8 +107,6 @@ DUMMY(epoll_pwait); DUMMY(utimensat); DUMMY(signalfd); DUMMY(timerfd_create); -/* linux 2.6.23: */ -DUMMY(fallocate); /* linux 2.6.25: */ DUMMY(timerfd_settime); DUMMY(timerfd_gettime); Modified: head/sys/amd64/linux32/syscalls.master ============================================================================== --- head/sys/amd64/linux32/syscalls.master Sun May 24 17:30:31 2015 (r283464) +++ head/sys/amd64/linux32/syscalls.master Sun May 24 17:33:21 2015 (r283465) @@ -538,7 +538,8 @@ 322 AUE_NULL STD { int linux_timerfd_create(void); } 323 AUE_NULL STD { int linux_eventfd(l_uint initval); } ; linux 2.6.23: -324 AUE_NULL STD { int linux_fallocate(void); } +324 AUE_NULL STD { int linux_fallocate(l_int fd, l_int mode, \ + l_loff_t offset, l_loff_t len); } ; linux 2.6.25: 325 AUE_NULL STD { int linux_timerfd_settime(void); } 326 AUE_NULL STD { int linux_timerfd_gettime(void); } Modified: head/sys/compat/linux/linux_file.c ============================================================================== --- head/sys/compat/linux/linux_file.c Sun May 24 17:30:31 2015 (r283464) +++ head/sys/compat/linux/linux_file.c Sun May 24 17:33:21 2015 (r283465) @@ -1636,3 +1636,18 @@ linux_dup3(struct thread *td, struct lin newfd = args->newfd; return (kern_fcntl(td, args->oldfd, cmd, newfd)); } + +int +linux_fallocate(struct thread *td, struct linux_fallocate_args *args) +{ + + /* + * We emulate only posix_fallocate system call for which + * mode should be 0. + */ + if (args->mode != 0) + return (ENOSYS); + + return (kern_posix_fallocate(td, args->fd, args->offset, + args->len)); +} Modified: head/sys/i386/linux/linux_dummy.c ============================================================================== --- head/sys/i386/linux/linux_dummy.c Sun May 24 17:30:31 2015 (r283464) +++ head/sys/i386/linux/linux_dummy.c Sun May 24 17:33:21 2015 (r283465) @@ -103,8 +103,6 @@ DUMMY(epoll_pwait); DUMMY(utimensat); DUMMY(signalfd); DUMMY(timerfd_create); -/* linux 2.6.23: */ -DUMMY(fallocate); /* linux 2.6.25: */ DUMMY(timerfd_settime); DUMMY(timerfd_gettime); Modified: head/sys/i386/linux/syscalls.master ============================================================================== --- head/sys/i386/linux/syscalls.master Sun May 24 17:30:31 2015 (r283464) +++ head/sys/i386/linux/syscalls.master Sun May 24 17:33:21 2015 (r283465) @@ -546,7 +546,8 @@ 322 AUE_NULL STD { int linux_timerfd_create(void); } 323 AUE_NULL STD { int linux_eventfd(l_uint initval); } ; linux 2.6.23: -324 AUE_NULL STD { int linux_fallocate(void); } +324 AUE_NULL STD { int linux_fallocate(l_int fd, l_int mode, \ + l_loff_t offset, l_loff_t len); } ; linux 2.6.25: 325 AUE_NULL STD { int linux_timerfd_settime(void); } 326 AUE_NULL STD { int linux_timerfd_gettime(void); } From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:35:47 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2CB16AFC; Sun, 24 May 2015 17:35:47 +0000 (UTC) Received: from svn.freebsd.org (svn.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 185A61CA3; Sun, 24 May 2015 17:35:47 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHZllY024761; Sun, 24 May 2015 17:35:47 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHZg06024743; Sun, 24 May 2015 17:35:42 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241735.t4OHZg06024743@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:35:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283466 - in head/sys: amd64/linux amd64/linux32 i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:35:47 -0000 Author: dchagin Date: Sun May 24 17:35:42 2015 New Revision: 283466 URL: https://svnweb.freebsd.org/changeset/base/283466 Log: Regen for r283465. Modified: head/sys/amd64/linux/linux_proto.h head/sys/amd64/linux/linux_syscall.h head/sys/amd64/linux/linux_syscalls.c head/sys/amd64/linux/linux_sysent.c head/sys/amd64/linux/linux_systrace_args.c head/sys/amd64/linux32/linux32_proto.h head/sys/amd64/linux32/linux32_syscall.h head/sys/amd64/linux32/linux32_syscalls.c head/sys/amd64/linux32/linux32_sysent.c head/sys/amd64/linux32/linux32_systrace_args.c head/sys/i386/linux/linux_proto.h head/sys/i386/linux/linux_syscall.h head/sys/i386/linux/linux_syscalls.c head/sys/i386/linux/linux_sysent.c head/sys/i386/linux/linux_systrace_args.c Modified: head/sys/amd64/linux/linux_proto.h ============================================================================== --- head/sys/amd64/linux/linux_proto.h Sun May 24 17:33:21 2015 (r283465) +++ head/sys/amd64/linux/linux_proto.h Sun May 24 17:35:42 2015 (r283466) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283451 2015-05-24 16:59:25Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283465 2015-05-24 17:33:21Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -1004,7 +1004,10 @@ struct linux_eventfd_args { char initval_l_[PADL_(l_uint)]; l_uint initval; char initval_r_[PADR_(l_uint)]; }; struct linux_fallocate_args { - register_t dummy; + char fd_l_[PADL_(l_int)]; l_int fd; char fd_r_[PADR_(l_int)]; + char mode_l_[PADL_(l_int)]; l_int mode; char mode_r_[PADR_(l_int)]; + char offset_l_[PADL_(l_loff_t)]; l_loff_t offset; char offset_r_[PADR_(l_loff_t)]; + char len_l_[PADL_(l_loff_t)]; l_loff_t len; char len_r_[PADR_(l_loff_t)]; }; struct linux_timerfd_settime_args { register_t dummy; Modified: head/sys/amd64/linux/linux_syscall.h ============================================================================== --- head/sys/amd64/linux/linux_syscall.h Sun May 24 17:33:21 2015 (r283465) +++ head/sys/amd64/linux/linux_syscall.h Sun May 24 17:35:42 2015 (r283466) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283451 2015-05-24 16:59:25Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283465 2015-05-24 17:33:21Z dchagin */ #define LINUX_SYS_read 0 Modified: head/sys/amd64/linux/linux_syscalls.c ============================================================================== --- head/sys/amd64/linux/linux_syscalls.c Sun May 24 17:33:21 2015 (r283465) +++ head/sys/amd64/linux/linux_syscalls.c Sun May 24 17:35:42 2015 (r283466) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283451 2015-05-24 16:59:25Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283465 2015-05-24 17:33:21Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/amd64/linux/linux_sysent.c ============================================================================== --- head/sys/amd64/linux/linux_sysent.c Sun May 24 17:33:21 2015 (r283465) +++ head/sys/amd64/linux/linux_sysent.c Sun May 24 17:35:42 2015 (r283466) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283451 2015-05-24 16:59:25Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283465 2015-05-24 17:33:21Z dchagin */ #include @@ -303,7 +303,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_signalfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 282 = linux_signalfd */ { 0, (sy_call_t *)linux_timerfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 283 = linux_timerfd */ { AS(linux_eventfd_args), (sy_call_t *)linux_eventfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 284 = linux_eventfd */ - { 0, (sy_call_t *)linux_fallocate, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 285 = linux_fallocate */ + { AS(linux_fallocate_args), (sy_call_t *)linux_fallocate, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 285 = linux_fallocate */ { 0, (sy_call_t *)linux_timerfd_settime, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 286 = linux_timerfd_settime */ { 0, (sy_call_t *)linux_timerfd_gettime, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 287 = linux_timerfd_gettime */ { AS(linux_accept4_args), (sy_call_t *)linux_accept4, AUE_ACCEPT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 288 = linux_accept4 */ Modified: head/sys/amd64/linux/linux_systrace_args.c ============================================================================== --- head/sys/amd64/linux/linux_systrace_args.c Sun May 24 17:33:21 2015 (r283465) +++ head/sys/amd64/linux/linux_systrace_args.c Sun May 24 17:35:42 2015 (r283466) @@ -2085,7 +2085,12 @@ systrace_args(int sysnum, void *params, } /* linux_fallocate */ case 285: { - *n_args = 0; + struct linux_fallocate_args *p = params; + iarg[0] = p->fd; /* l_int */ + iarg[1] = p->mode; /* l_int */ + iarg[2] = p->offset; /* l_loff_t */ + iarg[3] = p->len; /* l_loff_t */ + *n_args = 4; break; } /* linux_timerfd_settime */ @@ -5391,6 +5396,22 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_fallocate */ case 285: + switch(ndx) { + case 0: + p = "l_int"; + break; + case 1: + p = "l_int"; + break; + case 2: + p = "l_loff_t"; + break; + case 3: + p = "l_loff_t"; + break; + default: + break; + }; break; /* linux_timerfd_settime */ case 286: @@ -6693,6 +6714,9 @@ systrace_return_setargdesc(int sysnum, i break; /* linux_fallocate */ case 285: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_timerfd_settime */ case 286: /* linux_timerfd_gettime */ Modified: head/sys/amd64/linux32/linux32_proto.h ============================================================================== --- head/sys/amd64/linux32/linux32_proto.h Sun May 24 17:33:21 2015 (r283465) +++ head/sys/amd64/linux32/linux32_proto.h Sun May 24 17:35:42 2015 (r283466) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283451 2015-05-24 16:59:25Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283465 2015-05-24 17:33:21Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -1064,7 +1064,10 @@ struct linux_eventfd_args { char initval_l_[PADL_(l_uint)]; l_uint initval; char initval_r_[PADR_(l_uint)]; }; struct linux_fallocate_args { - register_t dummy; + char fd_l_[PADL_(l_int)]; l_int fd; char fd_r_[PADR_(l_int)]; + char mode_l_[PADL_(l_int)]; l_int mode; char mode_r_[PADR_(l_int)]; + char offset_l_[PADL_(l_loff_t)]; l_loff_t offset; char offset_r_[PADR_(l_loff_t)]; + char len_l_[PADL_(l_loff_t)]; l_loff_t len; char len_r_[PADR_(l_loff_t)]; }; struct linux_timerfd_settime_args { register_t dummy; Modified: head/sys/amd64/linux32/linux32_syscall.h ============================================================================== --- head/sys/amd64/linux32/linux32_syscall.h Sun May 24 17:33:21 2015 (r283465) +++ head/sys/amd64/linux32/linux32_syscall.h Sun May 24 17:35:42 2015 (r283466) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283451 2015-05-24 16:59:25Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283465 2015-05-24 17:33:21Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/amd64/linux32/linux32_syscalls.c ============================================================================== --- head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 17:33:21 2015 (r283465) +++ head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 17:35:42 2015 (r283466) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283451 2015-05-24 16:59:25Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283465 2015-05-24 17:33:21Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/amd64/linux32/linux32_sysent.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysent.c Sun May 24 17:33:21 2015 (r283465) +++ head/sys/amd64/linux32/linux32_sysent.c Sun May 24 17:35:42 2015 (r283466) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283451 2015-05-24 16:59:25Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283465 2015-05-24 17:33:21Z dchagin */ #include "opt_compat.h" @@ -343,7 +343,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_signalfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 321 = linux_signalfd */ { 0, (sy_call_t *)linux_timerfd_create, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 322 = linux_timerfd_create */ { AS(linux_eventfd_args), (sy_call_t *)linux_eventfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 323 = linux_eventfd */ - { 0, (sy_call_t *)linux_fallocate, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 324 = linux_fallocate */ + { AS(linux_fallocate_args), (sy_call_t *)linux_fallocate, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 324 = linux_fallocate */ { 0, (sy_call_t *)linux_timerfd_settime, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 325 = linux_timerfd_settime */ { 0, (sy_call_t *)linux_timerfd_gettime, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 326 = linux_timerfd_gettime */ { 0, (sy_call_t *)linux_signalfd4, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 327 = linux_signalfd4 */ Modified: head/sys/amd64/linux32/linux32_systrace_args.c ============================================================================== --- head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 17:33:21 2015 (r283465) +++ head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 17:35:42 2015 (r283466) @@ -2192,7 +2192,12 @@ systrace_args(int sysnum, void *params, } /* linux_fallocate */ case 324: { - *n_args = 0; + struct linux_fallocate_args *p = params; + iarg[0] = p->fd; /* l_int */ + iarg[1] = p->mode; /* l_int */ + iarg[2] = p->offset; /* l_loff_t */ + iarg[3] = p->len; /* l_loff_t */ + *n_args = 4; break; } /* linux_timerfd_settime */ @@ -5598,6 +5603,22 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_fallocate */ case 324: + switch(ndx) { + case 0: + p = "l_int"; + break; + case 1: + p = "l_int"; + break; + case 2: + p = "l_loff_t"; + break; + case 3: + p = "l_loff_t"; + break; + default: + break; + }; break; /* linux_timerfd_settime */ case 325: @@ -6956,6 +6977,9 @@ systrace_return_setargdesc(int sysnum, i break; /* linux_fallocate */ case 324: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_timerfd_settime */ case 325: /* linux_timerfd_gettime */ Modified: head/sys/i386/linux/linux_proto.h ============================================================================== --- head/sys/i386/linux/linux_proto.h Sun May 24 17:33:21 2015 (r283465) +++ head/sys/i386/linux/linux_proto.h Sun May 24 17:35:42 2015 (r283466) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283451 2015-05-24 16:59:25Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283465 2015-05-24 17:33:21Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -1082,7 +1082,10 @@ struct linux_eventfd_args { char initval_l_[PADL_(l_uint)]; l_uint initval; char initval_r_[PADR_(l_uint)]; }; struct linux_fallocate_args { - register_t dummy; + char fd_l_[PADL_(l_int)]; l_int fd; char fd_r_[PADR_(l_int)]; + char mode_l_[PADL_(l_int)]; l_int mode; char mode_r_[PADR_(l_int)]; + char offset_l_[PADL_(l_loff_t)]; l_loff_t offset; char offset_r_[PADR_(l_loff_t)]; + char len_l_[PADL_(l_loff_t)]; l_loff_t len; char len_r_[PADR_(l_loff_t)]; }; struct linux_timerfd_settime_args { register_t dummy; Modified: head/sys/i386/linux/linux_syscall.h ============================================================================== --- head/sys/i386/linux/linux_syscall.h Sun May 24 17:33:21 2015 (r283465) +++ head/sys/i386/linux/linux_syscall.h Sun May 24 17:35:42 2015 (r283466) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283451 2015-05-24 16:59:25Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283465 2015-05-24 17:33:21Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/i386/linux/linux_syscalls.c ============================================================================== --- head/sys/i386/linux/linux_syscalls.c Sun May 24 17:33:21 2015 (r283465) +++ head/sys/i386/linux/linux_syscalls.c Sun May 24 17:35:42 2015 (r283466) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283451 2015-05-24 16:59:25Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283465 2015-05-24 17:33:21Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/i386/linux/linux_sysent.c ============================================================================== --- head/sys/i386/linux/linux_sysent.c Sun May 24 17:33:21 2015 (r283465) +++ head/sys/i386/linux/linux_sysent.c Sun May 24 17:35:42 2015 (r283466) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283451 2015-05-24 16:59:25Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283465 2015-05-24 17:33:21Z dchagin */ #include @@ -342,7 +342,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_signalfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 321 = linux_signalfd */ { 0, (sy_call_t *)linux_timerfd_create, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 322 = linux_timerfd_create */ { AS(linux_eventfd_args), (sy_call_t *)linux_eventfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 323 = linux_eventfd */ - { 0, (sy_call_t *)linux_fallocate, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 324 = linux_fallocate */ + { AS(linux_fallocate_args), (sy_call_t *)linux_fallocate, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 324 = linux_fallocate */ { 0, (sy_call_t *)linux_timerfd_settime, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 325 = linux_timerfd_settime */ { 0, (sy_call_t *)linux_timerfd_gettime, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 326 = linux_timerfd_gettime */ { 0, (sy_call_t *)linux_signalfd4, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 327 = linux_signalfd4 */ Modified: head/sys/i386/linux/linux_systrace_args.c ============================================================================== --- head/sys/i386/linux/linux_systrace_args.c Sun May 24 17:33:21 2015 (r283465) +++ head/sys/i386/linux/linux_systrace_args.c Sun May 24 17:35:42 2015 (r283466) @@ -2268,7 +2268,12 @@ systrace_args(int sysnum, void *params, } /* linux_fallocate */ case 324: { - *n_args = 0; + struct linux_fallocate_args *p = params; + iarg[0] = p->fd; /* l_int */ + iarg[1] = p->mode; /* l_int */ + iarg[2] = p->offset; /* l_loff_t */ + iarg[3] = p->len; /* l_loff_t */ + *n_args = 4; break; } /* linux_timerfd_settime */ @@ -5829,6 +5834,22 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_fallocate */ case 324: + switch(ndx) { + case 0: + p = "l_int"; + break; + case 1: + p = "l_int"; + break; + case 2: + p = "l_loff_t"; + break; + case 3: + p = "l_loff_t"; + break; + default: + break; + }; break; /* linux_timerfd_settime */ case 325: @@ -7234,6 +7255,9 @@ systrace_return_setargdesc(int sysnum, i break; /* linux_fallocate */ case 324: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_timerfd_settime */ case 325: /* linux_timerfd_gettime */ From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:38:05 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2ED83C74; Sun, 24 May 2015 17:38:05 +0000 (UTC) Received: from svn.freebsd.org (svn.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 1BFE81CBF; Sun, 24 May 2015 17:38:05 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHc4rl025112; Sun, 24 May 2015 17:38:04 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHc3UK025106; Sun, 24 May 2015 17:38:03 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241738.t4OHc3UK025106@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:38:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283467 - in head/sys: amd64/linux amd64/linux32 i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:38:05 -0000 Author: dchagin Date: Sun May 24 17:38:02 2015 New Revision: 283467 URL: https://svnweb.freebsd.org/changeset/base/283467 Log: Call nosys in case when the incorrect syscall number is specified. Reported by: trinity Modified: head/sys/amd64/linux/linux_sysvec.c head/sys/amd64/linux/syscalls.master head/sys/amd64/linux32/linux32_sysvec.c head/sys/amd64/linux32/syscalls.master head/sys/i386/linux/linux_sysvec.c head/sys/i386/linux/syscalls.master Modified: head/sys/amd64/linux/linux_sysvec.c ============================================================================== --- head/sys/amd64/linux/linux_sysvec.c Sun May 24 17:35:42 2015 (r283466) +++ head/sys/amd64/linux/linux_sysvec.c Sun May 24 17:38:02 2015 (r283467) @@ -254,10 +254,10 @@ linux_fetch_syscall_args(struct thread * sa->args[5] = frame->tf_r9; sa->code = frame->tf_rax; - if (sa->code >= p->p_sysent->sv_size) { - PROC_LOCK(p); - sigexit(td, SIGILL); - } else + if (sa->code >= p->p_sysent->sv_size) + /* nosys */ + sa->callp = &p->p_sysent->sv_table[LINUX_SYS_MAXSYSCALL]; + else sa->callp = &p->p_sysent->sv_table[sa->code]; sa->narg = sa->callp->sy_narg; Modified: head/sys/amd64/linux/syscalls.master ============================================================================== --- head/sys/amd64/linux/syscalls.master Sun May 24 17:35:42 2015 (r283466) +++ head/sys/amd64/linux/syscalls.master Sun May 24 17:38:02 2015 (r283467) @@ -506,3 +506,5 @@ 310 AUE_NULL STD { int linux_process_vm_writev(void); } 311 AUE_NULL STD { int linux_kcmp(void); } 312 AUE_NULL STD { int linux_finit_module(void); } +; please, keep this line at the end. +313 AUE_NULL UNIMPL nosys Modified: head/sys/amd64/linux32/linux32_sysvec.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysvec.c Sun May 24 17:35:42 2015 (r283466) +++ head/sys/amd64/linux32/linux32_sysvec.c Sun May 24 17:38:02 2015 (r283467) @@ -764,7 +764,8 @@ linux32_fetch_syscall_args(struct thread sa->code = frame->tf_rax; if (sa->code >= p->p_sysent->sv_size) - sa->callp = &p->p_sysent->sv_table[0]; + /* nosys */ + sa->callp = &p->p_sysent->sv_table[LINUX_SYS_MAXSYSCALL]; else sa->callp = &p->p_sysent->sv_table[sa->code]; sa->narg = sa->callp->sy_narg; Modified: head/sys/amd64/linux32/syscalls.master ============================================================================== --- head/sys/amd64/linux32/syscalls.master Sun May 24 17:35:42 2015 (r283466) +++ head/sys/amd64/linux32/syscalls.master Sun May 24 17:38:02 2015 (r283467) @@ -575,3 +575,5 @@ 346 AUE_NULL STD { int linux_setns(void); } 347 AUE_NULL STD { int linux_process_vm_readv(void); } 348 AUE_NULL STD { int linux_process_vm_writev(void); } +; please, keep this line at the end. +349 AUE_NULL UNIMPL nosys Modified: head/sys/i386/linux/linux_sysvec.c ============================================================================== --- head/sys/i386/linux/linux_sysvec.c Sun May 24 17:35:42 2015 (r283466) +++ head/sys/i386/linux/linux_sysvec.c Sun May 24 17:38:02 2015 (r283467) @@ -890,7 +890,8 @@ linux_fetch_syscall_args(struct thread * sa->args[5] = frame->tf_ebp; /* Unconfirmed */ if (sa->code >= p->p_sysent->sv_size) - sa->callp = &p->p_sysent->sv_table[0]; + /* nosys */ + sa->callp = &p->p_sysent->sv_table[LINUX_SYS_MAXSYSCALL]; else sa->callp = &p->p_sysent->sv_table[sa->code]; sa->narg = sa->callp->sy_narg; Modified: head/sys/i386/linux/syscalls.master ============================================================================== --- head/sys/i386/linux/syscalls.master Sun May 24 17:35:42 2015 (r283466) +++ head/sys/i386/linux/syscalls.master Sun May 24 17:38:02 2015 (r283467) @@ -583,3 +583,5 @@ 346 AUE_NULL STD { int linux_setns(void); } 347 AUE_NULL STD { int linux_process_vm_readv(void); } 348 AUE_NULL STD { int linux_process_vm_writev(void); } +; please, keep this line at the end. +349 AUE_NULL UNIMPL nosys From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:39:22 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 997A0DBA; Sun, 24 May 2015 17:39:22 +0000 (UTC) Received: from svn.freebsd.org (svn.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 7A3241CC6; Sun, 24 May 2015 17:39:22 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHdMfj025333; Sun, 24 May 2015 17:39:22 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHdJmi025315; Sun, 24 May 2015 17:39:19 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241739.t4OHdJmi025315@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:39:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283468 - in head/sys: amd64/linux amd64/linux32 i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:39:22 -0000 Author: dchagin Date: Sun May 24 17:39:18 2015 New Revision: 283468 URL: https://svnweb.freebsd.org/changeset/base/283468 Log: Regen for r283467. Modified: head/sys/amd64/linux/linux_proto.h head/sys/amd64/linux/linux_syscall.h head/sys/amd64/linux/linux_syscalls.c head/sys/amd64/linux/linux_sysent.c head/sys/amd64/linux32/linux32_proto.h head/sys/amd64/linux32/linux32_syscall.h head/sys/amd64/linux32/linux32_syscalls.c head/sys/amd64/linux32/linux32_sysent.c head/sys/i386/linux/linux_proto.h head/sys/i386/linux/linux_syscall.h head/sys/i386/linux/linux_syscalls.c head/sys/i386/linux/linux_sysent.c Modified: head/sys/amd64/linux/linux_proto.h ============================================================================== --- head/sys/amd64/linux/linux_proto.h Sun May 24 17:38:02 2015 (r283467) +++ head/sys/amd64/linux/linux_proto.h Sun May 24 17:39:18 2015 (r283468) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283465 2015-05-24 17:33:21Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283467 2015-05-24 17:38:02Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ Modified: head/sys/amd64/linux/linux_syscall.h ============================================================================== --- head/sys/amd64/linux/linux_syscall.h Sun May 24 17:38:02 2015 (r283467) +++ head/sys/amd64/linux/linux_syscall.h Sun May 24 17:39:18 2015 (r283468) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283465 2015-05-24 17:33:21Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283467 2015-05-24 17:38:02Z dchagin */ #define LINUX_SYS_read 0 @@ -307,4 +307,4 @@ #define LINUX_SYS_linux_process_vm_writev 310 #define LINUX_SYS_linux_kcmp 311 #define LINUX_SYS_linux_finit_module 312 -#define LINUX_SYS_MAXSYSCALL 313 +#define LINUX_SYS_MAXSYSCALL 314 Modified: head/sys/amd64/linux/linux_syscalls.c ============================================================================== --- head/sys/amd64/linux/linux_syscalls.c Sun May 24 17:38:02 2015 (r283467) +++ head/sys/amd64/linux/linux_syscalls.c Sun May 24 17:39:18 2015 (r283468) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283465 2015-05-24 17:33:21Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283467 2015-05-24 17:38:02Z dchagin */ const char *linux_syscallnames[] = { @@ -321,4 +321,5 @@ const char *linux_syscallnames[] = { "linux_process_vm_writev", /* 310 = linux_process_vm_writev */ "linux_kcmp", /* 311 = linux_kcmp */ "linux_finit_module", /* 312 = linux_finit_module */ + "#313", /* 313 = nosys */ }; Modified: head/sys/amd64/linux/linux_sysent.c ============================================================================== --- head/sys/amd64/linux/linux_sysent.c Sun May 24 17:38:02 2015 (r283467) +++ head/sys/amd64/linux/linux_sysent.c Sun May 24 17:39:18 2015 (r283468) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283465 2015-05-24 17:33:21Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283467 2015-05-24 17:38:02Z dchagin */ #include @@ -331,4 +331,5 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_process_vm_writev, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 310 = linux_process_vm_writev */ { 0, (sy_call_t *)linux_kcmp, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 311 = linux_kcmp */ { 0, (sy_call_t *)linux_finit_module, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 312 = linux_finit_module */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 313 = nosys */ }; Modified: head/sys/amd64/linux32/linux32_proto.h ============================================================================== --- head/sys/amd64/linux32/linux32_proto.h Sun May 24 17:38:02 2015 (r283467) +++ head/sys/amd64/linux32/linux32_proto.h Sun May 24 17:39:18 2015 (r283468) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283465 2015-05-24 17:33:21Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283467 2015-05-24 17:38:02Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ Modified: head/sys/amd64/linux32/linux32_syscall.h ============================================================================== --- head/sys/amd64/linux32/linux32_syscall.h Sun May 24 17:38:02 2015 (r283467) +++ head/sys/amd64/linux32/linux32_syscall.h Sun May 24 17:39:18 2015 (r283468) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283465 2015-05-24 17:33:21Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283467 2015-05-24 17:38:02Z dchagin */ #define LINUX_SYS_linux_exit 1 @@ -321,4 +321,4 @@ #define LINUX_SYS_linux_setns 346 #define LINUX_SYS_linux_process_vm_readv 347 #define LINUX_SYS_linux_process_vm_writev 348 -#define LINUX_SYS_MAXSYSCALL 349 +#define LINUX_SYS_MAXSYSCALL 350 Modified: head/sys/amd64/linux32/linux32_syscalls.c ============================================================================== --- head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 17:38:02 2015 (r283467) +++ head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 17:39:18 2015 (r283468) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283465 2015-05-24 17:33:21Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283467 2015-05-24 17:38:02Z dchagin */ const char *linux_syscallnames[] = { @@ -357,4 +357,5 @@ const char *linux_syscallnames[] = { "linux_setns", /* 346 = linux_setns */ "linux_process_vm_readv", /* 347 = linux_process_vm_readv */ "linux_process_vm_writev", /* 348 = linux_process_vm_writev */ + "#349", /* 349 = nosys */ }; Modified: head/sys/amd64/linux32/linux32_sysent.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysent.c Sun May 24 17:38:02 2015 (r283467) +++ head/sys/amd64/linux32/linux32_sysent.c Sun May 24 17:39:18 2015 (r283468) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283465 2015-05-24 17:33:21Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283467 2015-05-24 17:38:02Z dchagin */ #include "opt_compat.h" @@ -368,4 +368,5 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_setns, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 346 = linux_setns */ { 0, (sy_call_t *)linux_process_vm_readv, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 347 = linux_process_vm_readv */ { 0, (sy_call_t *)linux_process_vm_writev, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 348 = linux_process_vm_writev */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 349 = nosys */ }; Modified: head/sys/i386/linux/linux_proto.h ============================================================================== --- head/sys/i386/linux/linux_proto.h Sun May 24 17:38:02 2015 (r283467) +++ head/sys/i386/linux/linux_proto.h Sun May 24 17:39:18 2015 (r283468) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283465 2015-05-24 17:33:21Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283467 2015-05-24 17:38:02Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ Modified: head/sys/i386/linux/linux_syscall.h ============================================================================== --- head/sys/i386/linux/linux_syscall.h Sun May 24 17:38:02 2015 (r283467) +++ head/sys/i386/linux/linux_syscall.h Sun May 24 17:39:18 2015 (r283468) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283465 2015-05-24 17:33:21Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283467 2015-05-24 17:38:02Z dchagin */ #define LINUX_SYS_linux_exit 1 @@ -328,4 +328,4 @@ #define LINUX_SYS_linux_setns 346 #define LINUX_SYS_linux_process_vm_readv 347 #define LINUX_SYS_linux_process_vm_writev 348 -#define LINUX_SYS_MAXSYSCALL 349 +#define LINUX_SYS_MAXSYSCALL 350 Modified: head/sys/i386/linux/linux_syscalls.c ============================================================================== --- head/sys/i386/linux/linux_syscalls.c Sun May 24 17:38:02 2015 (r283467) +++ head/sys/i386/linux/linux_syscalls.c Sun May 24 17:39:18 2015 (r283468) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283465 2015-05-24 17:33:21Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283467 2015-05-24 17:38:02Z dchagin */ const char *linux_syscallnames[] = { @@ -357,4 +357,5 @@ const char *linux_syscallnames[] = { "linux_setns", /* 346 = linux_setns */ "linux_process_vm_readv", /* 347 = linux_process_vm_readv */ "linux_process_vm_writev", /* 348 = linux_process_vm_writev */ + "#349", /* 349 = nosys */ }; Modified: head/sys/i386/linux/linux_sysent.c ============================================================================== --- head/sys/i386/linux/linux_sysent.c Sun May 24 17:38:02 2015 (r283467) +++ head/sys/i386/linux/linux_sysent.c Sun May 24 17:39:18 2015 (r283468) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283465 2015-05-24 17:33:21Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283467 2015-05-24 17:38:02Z dchagin */ #include @@ -367,4 +367,5 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_setns, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 346 = linux_setns */ { 0, (sy_call_t *)linux_process_vm_readv, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 347 = linux_process_vm_readv */ { 0, (sy_call_t *)linux_process_vm_writev, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 348 = linux_process_vm_writev */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 349 = nosys */ }; From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:40:15 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 11174F03; Sun, 24 May 2015 17:40:15 +0000 (UTC) Received: from svn.freebsd.org (svn.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 F32581CCE; Sun, 24 May 2015 17:40:14 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHeEXT025574; Sun, 24 May 2015 17:40:14 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHeEF3025573; Sun, 24 May 2015 17:40:14 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241740.t4OHeEF3025573@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:40:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283469 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:40:15 -0000 Author: dchagin Date: Sun May 24 17:40:14 2015 New Revision: 283469 URL: https://svnweb.freebsd.org/changeset/base/283469 Log: As fo_fill_kinfo() does not check fo_fill_kinfo to NULL add a fo_fill_kinfo op to eventfdops. Reported by: trinity Modified: head/sys/compat/linux/linux_event.c Modified: head/sys/compat/linux/linux_event.c ============================================================================== --- head/sys/compat/linux/linux_event.c Sun May 24 17:39:18 2015 (r283468) +++ head/sys/compat/linux/linux_event.c Sun May 24 17:40:14 2015 (r283469) @@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -127,6 +128,7 @@ static fo_poll_t eventfd_poll; static fo_kqfilter_t eventfd_kqfilter; static fo_stat_t eventfd_stat; static fo_close_t eventfd_close; +static fo_fill_kinfo_t eventfd_fill_kinfo; static struct fileops eventfdops = { .fo_read = eventfd_read, @@ -140,6 +142,7 @@ static struct fileops eventfdops = { .fo_chmod = invfo_chmod, .fo_chown = invfo_chown, .fo_sendfile = invfo_sendfile, + .fo_fill_kinfo = eventfd_fill_kinfo, .fo_flags = DFLAG_PASSABLE }; @@ -828,3 +831,12 @@ eventfd_stat(struct file *fp, struct sta return (ENXIO); } + +/*ARGSUSED*/ +static int +eventfd_fill_kinfo(struct file *fp, struct kinfo_file *kif, struct filedesc *fdp) +{ + + kif->kf_type = KF_TYPE_UNKNOWN; + return (0); +} From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:42:47 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id F1FB1F6; Sun, 24 May 2015 17:42:46 +0000 (UTC) Received: from svn.freebsd.org (svn.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 DFAFD1D80; Sun, 24 May 2015 17:42:46 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHgkQF029481; Sun, 24 May 2015 17:42:46 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHgk59029479; Sun, 24 May 2015 17:42:46 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241742.t4OHgk59029479@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:42:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283470 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:42:47 -0000 Author: dchagin Date: Sun May 24 17:42:45 2015 New Revision: 283470 URL: https://svnweb.freebsd.org/changeset/base/283470 Log: Add EPOLLERR flag handling to epoll. Tested by: abi at abinet dot ru Modified: head/sys/compat/linux/linux_event.c head/sys/compat/linux/linux_event.h Modified: head/sys/compat/linux/linux_event.c ============================================================================== --- head/sys/compat/linux/linux_event.c Sun May 24 17:40:14 2015 (r283469) +++ head/sys/compat/linux/linux_event.c Sun May 24 17:42:45 2015 (r283470) @@ -258,6 +258,8 @@ epoll_to_kevent(struct thread *td, struc *kev_flags |= EV_ONESHOT; if ((levents & LINUX_EPOLLET) != 0) *kev_flags |= EV_CLEAR; + if ((levents & LINUX_EPOLLERR) != 0) + *kev_flags |= EV_ERROR; /* flags related to what event is registered */ if ((levents & LINUX_EPOLL_EVRD) != 0) { @@ -299,8 +301,10 @@ static void kevent_to_epoll(struct kevent *kevent, struct epoll_event *l_event) { - if ((kevent->flags & EV_ERROR) != 0) + if ((kevent->flags & EV_ERROR) != 0) { + l_event->events = LINUX_EPOLLERR; return; + } switch (kevent->filter) { case EVFILT_READ: Modified: head/sys/compat/linux/linux_event.h ============================================================================== --- head/sys/compat/linux/linux_event.h Sun May 24 17:40:14 2015 (r283469) +++ head/sys/compat/linux/linux_event.h Sun May 24 17:42:45 2015 (r283470) @@ -46,7 +46,7 @@ #define LINUX_EPOLLET 1u<<31 #define LINUX_EPOLL_EVRD (LINUX_EPOLLIN|LINUX_EPOLLRDNORM \ - |LINUX_EPOLLHUP|LINUX_EPOLLPRI) + |LINUX_EPOLLHUP|LINUX_EPOLLERR|LINUX_EPOLLPRI) #define LINUX_EPOLL_EVWR (LINUX_EPOLLOUT|LINUX_EPOLLWRNORM) #define LINUX_EPOLL_EVSUP (LINUX_EPOLLET|LINUX_EPOLLONESHOT \ |LINUX_EPOLL_EVRD|LINUX_EPOLL_EVWR) From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:44:11 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8C66C24C; Sun, 24 May 2015 17:44:11 +0000 (UTC) Received: from svn.freebsd.org (svn.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 797011D88; Sun, 24 May 2015 17:44:11 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHiBL4029748; Sun, 24 May 2015 17:44:11 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHi9jN029735; Sun, 24 May 2015 17:44:09 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241744.t4OHi9jN029735@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:44:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283471 - in head/sys: amd64/linux amd64/linux32 compat/linux i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:44:11 -0000 Author: dchagin Date: Sun May 24 17:44:08 2015 New Revision: 283471 URL: https://svnweb.freebsd.org/changeset/base/283471 Log: According to Linux man sigaltstack(3) shall return EINVAL if the ss argument is not a null pointer, and the ss_flags member pointed to by ss contains flags other than SS_DISABLE. However, in fact, Linux also allows SS_ONSTACK flag which is simply ignored. For buggy apps (at least mono) ignore other than SS_DISABLE flags as a Linux do. While here move MI part of sigaltstack code to the appropriate place. Reported by: abi at abinet dot ru Modified: head/sys/amd64/linux/linux.h head/sys/amd64/linux/linux_machdep.c head/sys/amd64/linux32/linux.h head/sys/amd64/linux32/linux32_machdep.c head/sys/compat/linux/linux_signal.c head/sys/compat/linux/linux_signal.h head/sys/i386/linux/linux.h head/sys/i386/linux/linux_machdep.c Modified: head/sys/amd64/linux/linux.h ============================================================================== --- head/sys/amd64/linux/linux.h Sun May 24 17:42:45 2015 (r283470) +++ head/sys/amd64/linux/linux.h Sun May 24 17:44:08 2015 (r283471) @@ -250,9 +250,6 @@ struct l_newstat { #define LINUX_SS_ONSTACK 1 #define LINUX_SS_DISABLE 2 -int linux_to_bsd_sigaltstack(int lsa); -int bsd_to_linux_sigaltstack(int bsa); - typedef void (*l_handler_t)(l_int); typedef struct { Modified: head/sys/amd64/linux/linux_machdep.c ============================================================================== --- head/sys/amd64/linux/linux_machdep.c Sun May 24 17:42:45 2015 (r283470) +++ head/sys/amd64/linux/linux_machdep.c Sun May 24 17:44:08 2015 (r283471) @@ -87,29 +87,6 @@ __FBSDID("$FreeBSD$"); #include #include -int -linux_to_bsd_sigaltstack(int lsa) -{ - int bsa = 0; - - if (lsa & LINUX_SS_DISABLE) - bsa |= SS_DISABLE; - if (lsa & LINUX_SS_ONSTACK) - bsa |= SS_ONSTACK; - return (bsa); -} - -int -bsd_to_linux_sigaltstack(int bsa) -{ - int lsa = 0; - - if (bsa & SS_DISABLE) - lsa |= LINUX_SS_DISABLE; - if (bsa & SS_ONSTACK) - lsa |= LINUX_SS_ONSTACK; - return (lsa); -} int linux_execve(struct thread *td, struct linux_execve_args *args) Modified: head/sys/amd64/linux32/linux.h ============================================================================== --- head/sys/amd64/linux32/linux.h Sun May 24 17:42:45 2015 (r283470) +++ head/sys/amd64/linux32/linux.h Sun May 24 17:44:08 2015 (r283471) @@ -328,9 +328,6 @@ struct l_statfs64 { #define LINUX_SS_ONSTACK 1 #define LINUX_SS_DISABLE 2 -int linux_to_bsd_sigaltstack(int lsa); -int bsd_to_linux_sigaltstack(int bsa); - typedef l_uintptr_t l_handler_t; typedef l_ulong l_osigset_t; Modified: head/sys/amd64/linux32/linux32_machdep.c ============================================================================== --- head/sys/amd64/linux32/linux32_machdep.c Sun May 24 17:42:45 2015 (r283470) +++ head/sys/amd64/linux32/linux32_machdep.c Sun May 24 17:44:08 2015 (r283471) @@ -84,34 +84,10 @@ struct l_old_select_argv { l_uintptr_t timeout; } __packed; -int -linux_to_bsd_sigaltstack(int lsa) -{ - int bsa = 0; - - if (lsa & LINUX_SS_DISABLE) - bsa |= SS_DISABLE; - if (lsa & LINUX_SS_ONSTACK) - bsa |= SS_ONSTACK; - return (bsa); -} - static int linux_mmap_common(struct thread *td, l_uintptr_t addr, l_size_t len, l_int prot, l_int flags, l_int fd, l_loff_t pos); -int -bsd_to_linux_sigaltstack(int bsa) -{ - int lsa = 0; - - if (bsa & SS_DISABLE) - lsa |= LINUX_SS_DISABLE; - if (bsa & SS_ONSTACK) - lsa |= LINUX_SS_ONSTACK; - return (lsa); -} - static void bsd_to_linux_rusage(struct rusage *ru, struct l_rusage *lru) { Modified: head/sys/compat/linux/linux_signal.c ============================================================================== --- head/sys/compat/linux/linux_signal.c Sun May 24 17:42:45 2015 (r283470) +++ head/sys/compat/linux/linux_signal.c Sun May 24 17:44:08 2015 (r283471) @@ -754,6 +754,32 @@ siginfo_to_lsiginfo(const siginfo_t *si, } } +int +linux_to_bsd_sigaltstack(int lsa) +{ + int bsa = 0; + + if (lsa & LINUX_SS_DISABLE) + bsa |= SS_DISABLE; + /* + * Linux ignores SS_ONSTACK flag for ss + * parameter while FreeBSD prohibits it. + */ + return (bsa); +} + +int +bsd_to_linux_sigaltstack(int bsa) +{ + int lsa = 0; + + if (bsa & SS_DISABLE) + lsa |= LINUX_SS_DISABLE; + if (bsa & SS_ONSTACK) + lsa |= LINUX_SS_ONSTACK; + return (lsa); +} + void lsiginfo_to_ksiginfo(const l_siginfo_t *lsi, ksiginfo_t *ksi, int sig) { Modified: head/sys/compat/linux/linux_signal.h ============================================================================== --- head/sys/compat/linux/linux_signal.h Sun May 24 17:42:45 2015 (r283470) +++ head/sys/compat/linux/linux_signal.h Sun May 24 17:44:08 2015 (r283471) @@ -46,6 +46,8 @@ extern int bsd_to_linux_signal[]; extern int linux_to_bsd_signal[]; +int linux_to_bsd_sigaltstack(int lsa); +int bsd_to_linux_sigaltstack(int bsa); void linux_to_bsd_sigset(l_sigset_t *, sigset_t *); void bsd_to_linux_sigset(sigset_t *, l_sigset_t *); int linux_do_sigaction(struct thread *, int, l_sigaction_t *, l_sigaction_t *); Modified: head/sys/i386/linux/linux.h ============================================================================== --- head/sys/i386/linux/linux.h Sun May 24 17:42:45 2015 (r283470) +++ head/sys/i386/linux/linux.h Sun May 24 17:44:08 2015 (r283471) @@ -303,9 +303,6 @@ struct l_statfs64 { #define LINUX_SS_ONSTACK 1 #define LINUX_SS_DISABLE 2 -int linux_to_bsd_sigaltstack(int lsa); -int bsd_to_linux_sigaltstack(int bsa); - typedef void (*l_handler_t)(l_int); typedef l_ulong l_osigset_t; Modified: head/sys/i386/linux/linux_machdep.c ============================================================================== --- head/sys/i386/linux/linux_machdep.c Sun May 24 17:42:45 2015 (r283470) +++ head/sys/i386/linux/linux_machdep.c Sun May 24 17:44:08 2015 (r283471) @@ -99,29 +99,6 @@ static int linux_mmap_common(struct thre l_size_t len, l_int prot, l_int flags, l_int fd, l_loff_t pos); -int -linux_to_bsd_sigaltstack(int lsa) -{ - int bsa = 0; - - if (lsa & LINUX_SS_DISABLE) - bsa |= SS_DISABLE; - if (lsa & LINUX_SS_ONSTACK) - bsa |= SS_ONSTACK; - return (bsa); -} - -int -bsd_to_linux_sigaltstack(int bsa) -{ - int lsa = 0; - - if (bsa & SS_DISABLE) - lsa |= LINUX_SS_DISABLE; - if (bsa & SS_ONSTACK) - lsa |= LINUX_SS_ONSTACK; - return (lsa); -} int linux_execve(struct thread *td, struct linux_execve_args *args) From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:44:43 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 38C1B3F3; Sun, 24 May 2015 17:44:43 +0000 (UTC) Received: from svn.freebsd.org (svn.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 0DEE01D90; Sun, 24 May 2015 17:44:43 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHig4K029868; Sun, 24 May 2015 17:44:42 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHigr1029866; Sun, 24 May 2015 17:44:42 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241744.t4OHigr1029866@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:44:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283472 - head/sys/compat/linprocfs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:44:43 -0000 Author: dchagin Date: Sun May 24 17:44:42 2015 New Revision: 283472 URL: https://svnweb.freebsd.org/changeset/base/283472 Log: Add vdso and stack names to the /proc/self/maps. Modified: head/sys/compat/linprocfs/linprocfs.c Modified: head/sys/compat/linprocfs/linprocfs.c ============================================================================== --- head/sys/compat/linprocfs/linprocfs.c Sun May 24 17:44:08 2015 (r283471) +++ head/sys/compat/linprocfs/linprocfs.c Sun May 24 17:44:42 2015 (r283472) @@ -978,6 +978,8 @@ linprocfs_doprocenviron(PFS_FILL_ARGS) static char l32_map_str[] = "%08lx-%08lx %s%s%s%s %08lx %02x:%02x %lu%s%s\n"; static char l64_map_str[] = "%016lx-%016lx %s%s%s%s %08lx %02x:%02x %lu%s%s\n"; +static char vdso_str[] = " [vdso]"; +static char stack_str[] = " [stack]"; /* * Filler function for proc/pid/maps @@ -1014,6 +1016,11 @@ linprocfs_doprocmaps(PFS_FILL_ARGS) vm = vmspace_acquire_ref(p); if (vm == NULL) return (ESRCH); + + if (SV_CURPROC_FLAG(SV_LP64)) + l_map_str = l64_map_str; + else + l_map_str = l32_map_str; map = &vm->vm_map; vm_map_lock_read(map); for (entry = map->header.next; entry != &map->header; @@ -1056,6 +1063,11 @@ linprocfs_doprocmaps(PFS_FILL_ARGS) VOP_GETATTR(vp, &vat, td->td_ucred); ino = vat.va_fileid; vput(vp); + } else if (SV_PROC_ABI(p) == SV_ABI_LINUX) { + if (e_start == p->p_sysent->sv_shared_page_base) + name = vdso_str; + if (e_end == p->p_sysent->sv_usrstack) + name = stack_str; } } else { flags = 0; @@ -1067,10 +1079,6 @@ linprocfs_doprocmaps(PFS_FILL_ARGS) * format: * start, end, access, offset, major, minor, inode, name. */ - if (SV_CURPROC_FLAG(SV_LP64)) - l_map_str = l64_map_str; - else - l_map_str = l32_map_str; error = sbuf_printf(sb, l_map_str, (u_long)e_start, (u_long)e_end, (e_prot & VM_PROT_READ)?"r":"-", From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:46:05 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 948656AF; Sun, 24 May 2015 17:46:05 +0000 (UTC) Received: from svn.freebsd.org (svn.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 69C771DAE; Sun, 24 May 2015 17:46:05 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHk5nY030319; Sun, 24 May 2015 17:46:05 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHk56v030318; Sun, 24 May 2015 17:46:05 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241746.t4OHk56v030318@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:46:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283473 - head/sys/compat/linprocfs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:46:05 -0000 Author: dchagin Date: Sun May 24 17:46:04 2015 New Revision: 283473 URL: https://svnweb.freebsd.org/changeset/base/283473 Log: Add support for /proc//auxv. Modified: head/sys/compat/linprocfs/linprocfs.c Modified: head/sys/compat/linprocfs/linprocfs.c ============================================================================== --- head/sys/compat/linprocfs/linprocfs.c Sun May 24 17:44:42 2015 (r283472) +++ head/sys/compat/linprocfs/linprocfs.c Sun May 24 17:46:04 2015 (r283473) @@ -1386,6 +1386,52 @@ linprocfs_douuid(PFS_FILL_ARGS) return(0); } +/* + * Filler function for proc/pid/auxv + */ +static int +linprocfs_doauxv(PFS_FILL_ARGS) +{ + struct sbuf *asb; + off_t buflen, resid; + int error; + + /* + * Mimic linux behavior and pass only processes with usermode + * address space as valid. Return zero silently otherwise. + */ + if (p->p_vmspace == &vmspace0) + return (0); + + if (uio->uio_resid == 0) + return (0); + if (uio->uio_offset < 0 || uio->uio_resid < 0) + return (EINVAL); + + asb = sbuf_new_auto(); + if (asb == NULL) + return (ENOMEM); + error = proc_getauxv(td, p, asb); + if (error == 0) + error = sbuf_finish(asb); + + resid = sbuf_len(asb) - uio->uio_offset; + if (resid > uio->uio_resid) + buflen = uio->uio_resid; + else + buflen = resid; + if (buflen > IOSIZE_MAX) + return (EINVAL); + if (buflen > MAXPHYS) + buflen = MAXPHYS; + if (resid <= 0) + return (0); + + if (error == 0) + error = uiomove(sbuf_data(asb) + uio->uio_offset, buflen, uio); + sbuf_delete(asb); + return (error); +} /* * Constructor @@ -1461,6 +1507,8 @@ linprocfs_init(PFS_INIT_ARGS) NULL, NULL, NULL, PFS_RD); pfs_create_link(dir, "fd", &linprocfs_dofdescfs, NULL, NULL, NULL, 0); + pfs_create_file(dir, "auxv", &linprocfs_doauxv, + NULL, &procfs_candebug, NULL, PFS_RD|PFS_RAWRD); /* /proc/scsi/... */ dir = pfs_create_dir(root, "scsi", NULL, NULL, NULL, 0); From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:47:24 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3C211823; Sun, 24 May 2015 17:47:24 +0000 (UTC) Received: from svn.freebsd.org (svn.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 27F311DC3; Sun, 24 May 2015 17:47:24 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHlOtJ030562; Sun, 24 May 2015 17:47:24 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHlKlq030537; Sun, 24 May 2015 17:47:20 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241747.t4OHlKlq030537@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:47:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283474 - in head/sys: amd64/linux amd64/linux32 compat/linux conf i386/linux modules/linux modules/linux_common X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:47:24 -0000 Author: dchagin Date: Sun May 24 17:47:20 2015 New Revision: 283474 URL: https://svnweb.freebsd.org/changeset/base/283474 Log: Rework signal code to allow using it by other modules, like linprocfs: 1. Linux sigset always 64 bit on all platforms. In order to move Linux sigset code to the linux_common module define it as 64 bit int. Move Linux sigset manipulation routines to the MI path. 2. Move Linux signal number definitions to the MI path. In general, they are the same on all platforms except for a few signals. 3. Map Linux RT signals to the FreeBSD RT signals and hide signal conversion tables to avoid conversion errors. 4. Emulate Linux SIGPWR signal via FreeBSD SIGRTMIN signal which is outside of allowed on Linux signal numbers. PR: 197216 Added: head/sys/compat/linux/linux.c (contents, props changed) head/sys/compat/linux/linux.h (contents, props changed) Modified: head/sys/amd64/linux/linux.h head/sys/amd64/linux/linux_machdep.c head/sys/amd64/linux/linux_sysvec.c head/sys/amd64/linux32/linux.h head/sys/amd64/linux32/linux32_machdep.c head/sys/amd64/linux32/linux32_sysvec.c head/sys/compat/linux/linux_fork.c head/sys/compat/linux/linux_misc.c head/sys/compat/linux/linux_signal.c head/sys/compat/linux/linux_signal.h head/sys/conf/files.amd64 head/sys/conf/files.i386 head/sys/i386/linux/linux.h head/sys/i386/linux/linux_machdep.c head/sys/i386/linux/linux_ptrace.c head/sys/i386/linux/linux_sysvec.c head/sys/modules/linux/Makefile head/sys/modules/linux_common/Makefile Modified: head/sys/amd64/linux/linux.h ============================================================================== --- head/sys/amd64/linux/linux.h Sun May 24 17:46:04 2015 (r283473) +++ head/sys/amd64/linux/linux.h Sun May 24 17:47:20 2015 (r283474) @@ -32,6 +32,7 @@ #ifndef _AMD64_LINUX_H_ #define _AMD64_LINUX_H_ +#include #include /* @@ -173,49 +174,6 @@ struct l_newstat { l_long __unused3; }; -/* - * Signalling - */ -#define LINUX_SIGHUP 1 -#define LINUX_SIGINT 2 -#define LINUX_SIGQUIT 3 -#define LINUX_SIGILL 4 -#define LINUX_SIGTRAP 5 -#define LINUX_SIGABRT 6 -#define LINUX_SIGIOT LINUX_SIGABRT -#define LINUX_SIGBUS 7 -#define LINUX_SIGFPE 8 -#define LINUX_SIGKILL 9 -#define LINUX_SIGUSR1 10 -#define LINUX_SIGSEGV 11 -#define LINUX_SIGUSR2 12 -#define LINUX_SIGPIPE 13 -#define LINUX_SIGALRM 14 -#define LINUX_SIGTERM 15 -#define LINUX_SIGSTKFLT 16 -#define LINUX_SIGCHLD 17 -#define LINUX_SIGCONT 18 -#define LINUX_SIGSTOP 19 -#define LINUX_SIGTSTP 20 -#define LINUX_SIGTTIN 21 -#define LINUX_SIGTTOU 22 -#define LINUX_SIGURG 23 -#define LINUX_SIGXCPU 24 -#define LINUX_SIGXFSZ 25 -#define LINUX_SIGVTALRM 26 -#define LINUX_SIGPROF 27 -#define LINUX_SIGWINCH 28 -#define LINUX_SIGIO 29 -#define LINUX_SIGPOLL LINUX_SIGIO -#define LINUX_SIGPWR 30 -#define LINUX_SIGSYS 31 -#define LINUX_SIGRTMIN 32 - -#define LINUX_SIGTBLSZ 31 -#define LINUX_NSIG 64 -#define LINUX_NBPW 64 -#define LINUX_NSIG_WORDS (LINUX_NSIG / LINUX_NBPW) - /* sigaction flags */ #define LINUX_SA_NOCLDSTOP 0x00000001 #define LINUX_SA_NOCLDWAIT 0x00000002 @@ -232,31 +190,12 @@ struct l_newstat { #define LINUX_SIG_UNBLOCK 1 #define LINUX_SIG_SETMASK 2 -/* primitives to manipulate sigset_t */ - -#define LINUX_SIGEMPTYSET(set) \ - do { \ - (set).__bits[0] = 0; \ - } while(0) - -#define LINUX_SIGISMEMBER(set, sig) \ - (1UL & ((set).__bits[0] >> _SIG_IDX(sig))) - -#define LINUX_SIGADDSET(set, sig) \ - (set).__bits[0] |= 1UL << _SIG_IDX(sig) - /* sigaltstack */ #define LINUX_MINSIGSTKSZ 2048 -#define LINUX_SS_ONSTACK 1 -#define LINUX_SS_DISABLE 2 typedef void (*l_handler_t)(l_int); typedef struct { - l_ulong __bits[LINUX_NSIG_WORDS]; -} l_sigset_t; - -typedef struct { l_handler_t lsa_handler; l_ulong lsa_flags; l_uintptr_t lsa_restorer; Modified: head/sys/amd64/linux/linux_machdep.c ============================================================================== --- head/sys/amd64/linux/linux_machdep.c Sun May 24 17:46:04 2015 (r283473) +++ head/sys/amd64/linux/linux_machdep.c Sun May 24 17:47:20 2015 (r283474) @@ -431,39 +431,3 @@ linux_set_cloned_tls(struct thread *td, return (0); } - -void -linux_to_bsd_sigset(l_sigset_t *lss, sigset_t *bss) -{ - int b, l; - - SIGEMPTYSET(*bss); - for (l = 1; l <= LINUX_NSIG; l++) { - if (LINUX_SIGISMEMBER(*lss, l)) { - if (l <= LINUX_SIGTBLSZ) - b = linux_to_bsd_signal[_SIG_IDX(l)]; - else - b = l; - if (b) - SIGADDSET(*bss, b); - } - } -} - -void -bsd_to_linux_sigset(sigset_t *bss, l_sigset_t *lss) -{ - int b, l; - - LINUX_SIGEMPTYSET(*lss); - for (b = 1; b <= LINUX_NSIG; b++) { - if (SIGISMEMBER(*bss, b)) { - if (b <= LINUX_SIGTBLSZ) - l = bsd_to_linux_signal[_SIG_IDX(b)]; - else - l = b; - if (l) - LINUX_SIGADDSET(*lss, l); - } - } -} Modified: head/sys/amd64/linux/linux_sysvec.c ============================================================================== --- head/sys/amd64/linux/linux_sysvec.c Sun May 24 17:46:04 2015 (r283473) +++ head/sys/amd64/linux/linux_sysvec.c Sun May 24 17:47:20 2015 (r283474) @@ -150,28 +150,6 @@ static int bsd_to_linux_errno[ELAST + 1] -72, -67, -71 }; -int bsd_to_linux_signal[LINUX_SIGTBLSZ] = { - LINUX_SIGHUP, LINUX_SIGINT, LINUX_SIGQUIT, LINUX_SIGILL, - LINUX_SIGTRAP, LINUX_SIGABRT, 0, LINUX_SIGFPE, - LINUX_SIGKILL, LINUX_SIGBUS, LINUX_SIGSEGV, LINUX_SIGSYS, - LINUX_SIGPIPE, LINUX_SIGALRM, LINUX_SIGTERM, LINUX_SIGURG, - LINUX_SIGSTOP, LINUX_SIGTSTP, LINUX_SIGCONT, LINUX_SIGCHLD, - LINUX_SIGTTIN, LINUX_SIGTTOU, LINUX_SIGIO, LINUX_SIGXCPU, - LINUX_SIGXFSZ, LINUX_SIGVTALRM, LINUX_SIGPROF, LINUX_SIGWINCH, - 0, LINUX_SIGUSR1, LINUX_SIGUSR2 -}; - -int linux_to_bsd_signal[LINUX_SIGTBLSZ] = { - SIGHUP, SIGINT, SIGQUIT, SIGILL, - SIGTRAP, SIGABRT, SIGBUS, SIGFPE, - SIGKILL, SIGUSR1, SIGSEGV, SIGUSR2, - SIGPIPE, SIGALRM, SIGTERM, SIGBUS, - SIGCHLD, SIGCONT, SIGSTOP, SIGTSTP, - SIGTTIN, SIGTTOU, SIGURG, SIGXCPU, - SIGXFSZ, SIGVTALRM, SIGPROF, SIGWINCH, - SIGIO, SIGURG, SIGSYS -}; - #define LINUX_T_UNKNOWN 255 static int _bsd_to_linux_trapcode[] = { LINUX_T_UNKNOWN, /* 0 */ @@ -657,8 +635,8 @@ linux_rt_sendsig(sig_t catcher, ksiginfo sfp = (struct l_rt_sigframe *)((unsigned long)sp & ~0xFul); mtx_unlock(&psp->ps_mtx); - /* Translate the signal if appropriate. */ - sig = BSD_TO_LINUX_SIGNAL(sig); + /* Translate the signal. */ + sig = bsd_to_linux_signal(sig); /* Save user context. */ bzero(&sf, sizeof(sf)); @@ -772,8 +750,8 @@ struct sysentvec elf_linux_sysvec = { .sv_size = LINUX_SYS_MAXSYSCALL, .sv_table = linux_sysent, .sv_mask = 0, - .sv_sigsize = LINUX_SIGTBLSZ, - .sv_sigtbl = bsd_to_linux_signal, + .sv_sigsize = 0, + .sv_sigtbl = NULL, .sv_errsize = ELAST + 1, .sv_errtbl = bsd_to_linux_errno, .sv_transtrap = translate_traps, Modified: head/sys/amd64/linux32/linux.h ============================================================================== --- head/sys/amd64/linux32/linux.h Sun May 24 17:46:04 2015 (r283473) +++ head/sys/amd64/linux32/linux.h Sun May 24 17:47:20 2015 (r283474) @@ -33,6 +33,7 @@ #ifndef _AMD64_LINUX_H_ #define _AMD64_LINUX_H_ +#include #include /* @@ -259,49 +260,6 @@ struct l_statfs64 { l_int f_spare[6]; } __packed; -/* - * Signalling - */ -#define LINUX_SIGHUP 1 -#define LINUX_SIGINT 2 -#define LINUX_SIGQUIT 3 -#define LINUX_SIGILL 4 -#define LINUX_SIGTRAP 5 -#define LINUX_SIGABRT 6 -#define LINUX_SIGIOT LINUX_SIGABRT -#define LINUX_SIGBUS 7 -#define LINUX_SIGFPE 8 -#define LINUX_SIGKILL 9 -#define LINUX_SIGUSR1 10 -#define LINUX_SIGSEGV 11 -#define LINUX_SIGUSR2 12 -#define LINUX_SIGPIPE 13 -#define LINUX_SIGALRM 14 -#define LINUX_SIGTERM 15 -#define LINUX_SIGSTKFLT 16 -#define LINUX_SIGCHLD 17 -#define LINUX_SIGCONT 18 -#define LINUX_SIGSTOP 19 -#define LINUX_SIGTSTP 20 -#define LINUX_SIGTTIN 21 -#define LINUX_SIGTTOU 22 -#define LINUX_SIGURG 23 -#define LINUX_SIGXCPU 24 -#define LINUX_SIGXFSZ 25 -#define LINUX_SIGVTALRM 26 -#define LINUX_SIGPROF 27 -#define LINUX_SIGWINCH 28 -#define LINUX_SIGIO 29 -#define LINUX_SIGPOLL LINUX_SIGIO -#define LINUX_SIGPWR 30 -#define LINUX_SIGSYS 31 -#define LINUX_SIGRTMIN 32 - -#define LINUX_SIGTBLSZ 31 -#define LINUX_NSIG_WORDS 2 -#define LINUX_NBPW 32 -#define LINUX_NSIG (LINUX_NBPW * LINUX_NSIG_WORDS) - /* sigaction flags */ #define LINUX_SA_NOCLDSTOP 0x00000001 #define LINUX_SA_NOCLDWAIT 0x00000002 @@ -318,24 +276,13 @@ struct l_statfs64 { #define LINUX_SIG_UNBLOCK 1 #define LINUX_SIG_SETMASK 2 -/* sigset_t macros */ -#define LINUX_SIGEMPTYSET(set) (set).__bits[0] = (set).__bits[1] = 0 -#define LINUX_SIGISMEMBER(set, sig) SIGISMEMBER(set, sig) -#define LINUX_SIGADDSET(set, sig) SIGADDSET(set, sig) - /* sigaltstack */ #define LINUX_MINSIGSTKSZ 2048 -#define LINUX_SS_ONSTACK 1 -#define LINUX_SS_DISABLE 2 typedef l_uintptr_t l_handler_t; typedef l_ulong l_osigset_t; typedef struct { - l_uint __bits[LINUX_NSIG_WORDS]; -} __packed l_sigset_t; - -typedef struct { l_handler_t lsa_handler; l_osigset_t lsa_mask; l_ulong lsa_flags; @@ -504,7 +451,7 @@ struct l_sigframe { l_int sf_sig; struct l_sigcontext sf_sc; struct l_fpstate sf_fpstate; - l_uint sf_extramask[LINUX_NSIG_WORDS-1]; + l_uint sf_extramask[1]; l_handler_t sf_handler; } __packed; Modified: head/sys/amd64/linux32/linux32_machdep.c ============================================================================== --- head/sys/amd64/linux32/linux32_machdep.c Sun May 24 17:46:04 2015 (r283473) +++ head/sys/amd64/linux32/linux32_machdep.c Sun May 24 17:47:20 2015 (r283474) @@ -717,7 +717,7 @@ linux_sigaction(struct thread *td, struc act.lsa_flags = osa.lsa_flags; act.lsa_restorer = osa.lsa_restorer; LINUX_SIGEMPTYSET(act.lsa_mask); - act.lsa_mask.__bits[0] = osa.lsa_mask; + act.lsa_mask.__mask = osa.lsa_mask; } error = linux_do_sigaction(td, args->sig, args->nsa ? &act : NULL, @@ -727,7 +727,7 @@ linux_sigaction(struct thread *td, struc osa.lsa_handler = oact.lsa_handler; osa.lsa_flags = oact.lsa_flags; osa.lsa_restorer = oact.lsa_restorer; - osa.lsa_mask = oact.lsa_mask.__bits[0]; + osa.lsa_mask = oact.lsa_mask.__mask; error = copyout(&osa, args->osa, sizeof(l_osigaction_t)); } @@ -751,7 +751,7 @@ linux_sigsuspend(struct thread *td, stru #endif LINUX_SIGEMPTYSET(mask); - mask.__bits[0] = args->mask; + mask.__mask = args->mask; linux_to_bsd_sigset(&mask, &sigmask); return (kern_sigsuspend(td, sigmask)); } Modified: head/sys/amd64/linux32/linux32_sysvec.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysvec.c Sun May 24 17:46:04 2015 (r283473) +++ head/sys/amd64/linux32/linux32_sysvec.c Sun May 24 17:47:20 2015 (r283474) @@ -150,28 +150,6 @@ static int bsd_to_linux_errno[ELAST + 1] -72, -67, -71 }; -int bsd_to_linux_signal[LINUX_SIGTBLSZ] = { - LINUX_SIGHUP, LINUX_SIGINT, LINUX_SIGQUIT, LINUX_SIGILL, - LINUX_SIGTRAP, LINUX_SIGABRT, 0, LINUX_SIGFPE, - LINUX_SIGKILL, LINUX_SIGBUS, LINUX_SIGSEGV, LINUX_SIGSYS, - LINUX_SIGPIPE, LINUX_SIGALRM, LINUX_SIGTERM, LINUX_SIGURG, - LINUX_SIGSTOP, LINUX_SIGTSTP, LINUX_SIGCONT, LINUX_SIGCHLD, - LINUX_SIGTTIN, LINUX_SIGTTOU, LINUX_SIGIO, LINUX_SIGXCPU, - LINUX_SIGXFSZ, LINUX_SIGVTALRM, LINUX_SIGPROF, LINUX_SIGWINCH, - 0, LINUX_SIGUSR1, LINUX_SIGUSR2 -}; - -int linux_to_bsd_signal[LINUX_SIGTBLSZ] = { - SIGHUP, SIGINT, SIGQUIT, SIGILL, - SIGTRAP, SIGABRT, SIGBUS, SIGFPE, - SIGKILL, SIGUSR1, SIGSEGV, SIGUSR2, - SIGPIPE, SIGALRM, SIGTERM, SIGBUS, - SIGCHLD, SIGCONT, SIGSTOP, SIGTSTP, - SIGTTIN, SIGTTOU, SIGURG, SIGXCPU, - SIGXFSZ, SIGVTALRM, SIGPROF, SIGWINCH, - SIGIO, SIGURG, SIGSYS -}; - #define LINUX_T_UNKNOWN 255 static int _bsd_to_linux_trapcode[] = { LINUX_T_UNKNOWN, /* 0 */ @@ -344,7 +322,7 @@ linux_rt_sendsig(sig_t catcher, ksiginfo /* * Build the argument list for the signal handler. */ - sig = BSD_TO_LINUX_SIGNAL(sig); + sig = bsd_to_linux_signal(sig); bzero(&frame, sizeof(frame)); @@ -371,7 +349,7 @@ linux_rt_sendsig(sig_t catcher, ksiginfo bsd_to_linux_sigset(mask, &frame.sf_sc.uc_sigmask); - frame.sf_sc.uc_mcontext.sc_mask = frame.sf_sc.uc_sigmask.__bits[0]; + frame.sf_sc.uc_mcontext.sc_mask = frame.sf_sc.uc_sigmask.__mask; frame.sf_sc.uc_mcontext.sc_edi = regs->tf_rdi; frame.sf_sc.uc_mcontext.sc_esi = regs->tf_rsi; frame.sf_sc.uc_mcontext.sc_ebp = regs->tf_rbp; @@ -452,7 +430,7 @@ linux_sendsig(sig_t catcher, ksiginfo_t struct trapframe *regs; struct l_sigframe *fp, frame; l_sigset_t lmask; - int oonstack, i; + int oonstack; int sig, code; sig = ksi->ksi_signo; @@ -490,7 +468,7 @@ linux_sendsig(sig_t catcher, ksiginfo_t /* * Build the argument list for the signal handler. */ - sig = BSD_TO_LINUX_SIGNAL(sig); + sig = bsd_to_linux_signal(sig); bzero(&frame, sizeof(frame)); @@ -502,7 +480,7 @@ linux_sendsig(sig_t catcher, ksiginfo_t /* * Build the signal context to be used by sigreturn. */ - frame.sf_sc.sc_mask = lmask.__bits[0]; + frame.sf_sc.sc_mask = lmask.__mask; frame.sf_sc.sc_gs = regs->tf_gs; frame.sf_sc.sc_fs = regs->tf_fs; frame.sf_sc.sc_es = regs->tf_es; @@ -524,8 +502,7 @@ linux_sendsig(sig_t catcher, ksiginfo_t frame.sf_sc.sc_cr2 = (u_int32_t)(uintptr_t)ksi->ksi_addr; frame.sf_sc.sc_trapno = bsd_to_linux_trapcode(code); - for (i = 0; i < (LINUX_NSIG_WORDS-1); i++) - frame.sf_extramask[i] = lmask.__bits[i+1]; + frame.sf_extramask[0] = lmask.__mask; if (copyout(&frame, fp, sizeof(frame)) != 0) { /* @@ -571,7 +548,7 @@ linux_sigreturn(struct thread *td, struc struct trapframe *regs; sigset_t bmask; l_sigset_t lmask; - int eflags, i; + int eflags; ksiginfo_t ksi; regs = td->td_frame; @@ -612,9 +589,8 @@ linux_sigreturn(struct thread *td, struc return(EINVAL); } - lmask.__bits[0] = frame.sf_sc.sc_mask; - for (i = 0; i < (LINUX_NSIG_WORDS-1); i++) - lmask.__bits[i+1] = frame.sf_extramask[i]; + lmask.__mask = frame.sf_sc.sc_mask; + lmask.__mask = frame.sf_extramask[0]; linux_to_bsd_sigset(&lmask, &bmask); kern_sigprocmask(td, SIG_SETMASK, &bmask, NULL, 0); @@ -1035,8 +1011,8 @@ struct sysentvec elf_linux_sysvec = { .sv_size = LINUX_SYS_MAXSYSCALL, .sv_table = linux_sysent, .sv_mask = 0, - .sv_sigsize = LINUX_SIGTBLSZ, - .sv_sigtbl = bsd_to_linux_signal, + .sv_sigsize = 0, + .sv_sigtbl = NULL, .sv_errsize = ELAST + 1, .sv_errtbl = bsd_to_linux_errno, .sv_transtrap = translate_traps, Added: head/sys/compat/linux/linux.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/compat/linux/linux.c Sun May 24 17:47:20 2015 (r283474) @@ -0,0 +1,205 @@ +/*- + * Copyright (c) 2015 Dmitry Chagin + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include + +#include + + +static int bsd_to_linux_sigtbl[LINUX_SIGTBLSZ] = { + LINUX_SIGHUP, /* SIGHUP */ + LINUX_SIGINT, /* SIGINT */ + LINUX_SIGQUIT, /* SIGQUIT */ + LINUX_SIGILL, /* SIGILL */ + LINUX_SIGTRAP, /* SIGTRAP */ + LINUX_SIGABRT, /* SIGABRT */ + 0, /* SIGEMT */ + LINUX_SIGFPE, /* SIGFPE */ + LINUX_SIGKILL, /* SIGKILL */ + LINUX_SIGBUS, /* SIGBUS */ + LINUX_SIGSEGV, /* SIGSEGV */ + LINUX_SIGSYS, /* SIGSYS */ + LINUX_SIGPIPE, /* SIGPIPE */ + LINUX_SIGALRM, /* SIGALRM */ + LINUX_SIGTERM, /* SIGTERM */ + LINUX_SIGURG, /* SIGURG */ + LINUX_SIGSTOP, /* SIGSTOP */ + LINUX_SIGTSTP, /* SIGTSTP */ + LINUX_SIGCONT, /* SIGCONT */ + LINUX_SIGCHLD, /* SIGCHLD */ + LINUX_SIGTTIN, /* SIGTTIN */ + LINUX_SIGTTOU, /* SIGTTOU */ + LINUX_SIGIO, /* SIGIO */ + LINUX_SIGXCPU, /* SIGXCPU */ + LINUX_SIGXFSZ, /* SIGXFSZ */ + LINUX_SIGVTALRM,/* SIGVTALRM */ + LINUX_SIGPROF, /* SIGPROF */ + LINUX_SIGWINCH, /* SIGWINCH */ + 0, /* SIGINFO */ + LINUX_SIGUSR1, /* SIGUSR1 */ + LINUX_SIGUSR2 /* SIGUSR2 */ +}; + +static int linux_to_bsd_sigtbl[LINUX_SIGTBLSZ] = { + SIGHUP, /* LINUX_SIGHUP */ + SIGINT, /* LINUX_SIGINT */ + SIGQUIT, /* LINUX_SIGQUIT */ + SIGILL, /* LINUX_SIGILL */ + SIGTRAP, /* LINUX_SIGTRAP */ + SIGABRT, /* LINUX_SIGABRT */ + SIGBUS, /* LINUX_SIGBUS */ + SIGFPE, /* LINUX_SIGFPE */ + SIGKILL, /* LINUX_SIGKILL */ + SIGUSR1, /* LINUX_SIGUSR1 */ + SIGSEGV, /* LINUX_SIGSEGV */ + SIGUSR2, /* LINUX_SIGUSR2 */ + SIGPIPE, /* LINUX_SIGPIPE */ + SIGALRM, /* LINUX_SIGALRM */ + SIGTERM, /* LINUX_SIGTERM */ + SIGBUS, /* LINUX_SIGSTKFLT */ + SIGCHLD, /* LINUX_SIGCHLD */ + SIGCONT, /* LINUX_SIGCONT */ + SIGSTOP, /* LINUX_SIGSTOP */ + SIGTSTP, /* LINUX_SIGTSTP */ + SIGTTIN, /* LINUX_SIGTTIN */ + SIGTTOU, /* LINUX_SIGTTOU */ + SIGURG, /* LINUX_SIGURG */ + SIGXCPU, /* LINUX_SIGXCPU */ + SIGXFSZ, /* LINUX_SIGXFSZ */ + SIGVTALRM, /* LINUX_SIGVTALARM */ + SIGPROF, /* LINUX_SIGPROF */ + SIGWINCH, /* LINUX_SIGWINCH */ + SIGIO, /* LINUX_SIGIO */ + /* + * FreeBSD does not have SIGPWR signal, map Linux SIGPWR signal + * to the first unused FreeBSD signal number. Since Linux supports + * signals from 1 to 64 we are ok here as our SIGRTMIN = 65. + */ + SIGRTMIN, /* LINUX_SIGPWR */ + SIGSYS /* LINUX_SIGSYS */ +}; + +/* + * Map Linux RT signals to the FreeBSD RT signals. + */ +static inline int +linux_to_bsd_rt_signal(int sig) +{ + + return (SIGRTMIN + 1 + sig - LINUX_SIGRTMIN); +} + +static inline int +bsd_to_linux_rt_signal(int sig) +{ + + return (sig - SIGRTMIN - 1 + LINUX_SIGRTMIN); +} + +int +linux_to_bsd_signal(int sig) +{ + + KASSERT(sig > 0 && sig <= LINUX_SIGRTMAX, ("Invalid Linux signal\n")); + + if (sig < LINUX_SIGRTMIN) + return (linux_to_bsd_sigtbl[_SIG_IDX(sig)]); + + return (linux_to_bsd_rt_signal(sig)); +} + +int +bsd_to_linux_signal(int sig) +{ + + if (sig <= LINUX_SIGTBLSZ) + return (bsd_to_linux_sigtbl[_SIG_IDX(sig)]); + if (sig == SIGRTMIN) + return (LINUX_SIGPWR); + + return (bsd_to_linux_rt_signal(sig)); +} + +int +linux_to_bsd_sigaltstack(int lsa) +{ + int bsa = 0; + + if (lsa & LINUX_SS_DISABLE) + bsa |= SS_DISABLE; + /* + * Linux ignores SS_ONSTACK flag for ss + * parameter while FreeBSD prohibits it. + */ + return (bsa); +} + +int +bsd_to_linux_sigaltstack(int bsa) +{ + int lsa = 0; + + if (bsa & SS_DISABLE) + lsa |= LINUX_SS_DISABLE; + if (bsa & SS_ONSTACK) + lsa |= LINUX_SS_ONSTACK; + return (lsa); +} + +void +linux_to_bsd_sigset(l_sigset_t *lss, sigset_t *bss) +{ + int b, l; + + SIGEMPTYSET(*bss); + for (l = 1; l <= LINUX_SIGRTMAX; l++) { + if (LINUX_SIGISMEMBER(*lss, l)) { + b = linux_to_bsd_signal(l); + if (b) + SIGADDSET(*bss, b); + } + } +} + +void +bsd_to_linux_sigset(sigset_t *bss, l_sigset_t *lss) +{ + int b, l; + + LINUX_SIGEMPTYSET(*lss); + for (b = 1; b <= SIGRTMAX; b++) { + if (SIGISMEMBER(*bss, b)) { + l = bsd_to_linux_signal(b); + if (l) + LINUX_SIGADDSET(*lss, l); + } + } +} Added: head/sys/compat/linux/linux.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/compat/linux/linux.h Sun May 24 17:47:20 2015 (r283474) @@ -0,0 +1,95 @@ +/*- + * Copyright (c) 2015 Dmitry Chagin + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _LINUX_MI_H_ +#define _LINUX_MI_H_ + +/* sigaltstack */ +#define LINUX_SS_ONSTACK 1 +#define LINUX_SS_DISABLE 2 + +int linux_to_bsd_sigaltstack(int lsa); +int bsd_to_linux_sigaltstack(int bsa); + +/* sigset */ +typedef struct { + uint64_t __mask; +} l_sigset_t; + +/* primitives to manipulate sigset_t */ +#define LINUX_SIGEMPTYSET(set) (set).__mask = 0 +#define LINUX_SIGISMEMBER(set, sig) (1UL & ((set).__mask >> _SIG_IDX(sig))) +#define LINUX_SIGADDSET(set, sig) (set).__mask |= 1UL << _SIG_IDX(sig) + +void linux_to_bsd_sigset(l_sigset_t *, sigset_t *); +void bsd_to_linux_sigset(sigset_t *, l_sigset_t *); + +/* signaling */ +#define LINUX_SIGHUP 1 +#define LINUX_SIGINT 2 +#define LINUX_SIGQUIT 3 +#define LINUX_SIGILL 4 +#define LINUX_SIGTRAP 5 +#define LINUX_SIGABRT 6 +#define LINUX_SIGIOT LINUX_SIGABRT +#define LINUX_SIGBUS 7 +#define LINUX_SIGFPE 8 +#define LINUX_SIGKILL 9 +#define LINUX_SIGUSR1 10 +#define LINUX_SIGSEGV 11 +#define LINUX_SIGUSR2 12 +#define LINUX_SIGPIPE 13 +#define LINUX_SIGALRM 14 +#define LINUX_SIGTERM 15 +#define LINUX_SIGSTKFLT 16 +#define LINUX_SIGCHLD 17 +#define LINUX_SIGCONT 18 +#define LINUX_SIGSTOP 19 +#define LINUX_SIGTSTP 20 +#define LINUX_SIGTTIN 21 +#define LINUX_SIGTTOU 22 +#define LINUX_SIGURG 23 +#define LINUX_SIGXCPU 24 +#define LINUX_SIGXFSZ 25 +#define LINUX_SIGVTALRM 26 +#define LINUX_SIGPROF 27 +#define LINUX_SIGWINCH 28 +#define LINUX_SIGIO 29 +#define LINUX_SIGPOLL LINUX_SIGIO +#define LINUX_SIGPWR 30 +#define LINUX_SIGSYS 31 +#define LINUX_SIGTBLSZ 31 +#define LINUX_SIGRTMIN 32 +#define LINUX_SIGRTMAX 64 + +#define LINUX_SIG_VALID(sig) ((sig) <= LINUX_SIGRTMAX && (sig) > 0) + +int linux_to_bsd_signal(int sig); +int bsd_to_linux_signal(int sig); + +#endif /* _LINUX_MI_H_ */ Modified: head/sys/compat/linux/linux_fork.c ============================================================================== --- head/sys/compat/linux/linux_fork.c Sun May 24 17:46:04 2015 (r283473) +++ head/sys/compat/linux/linux_fork.c Sun May 24 17:47:20 2015 (r283474) @@ -56,7 +56,6 @@ __FBSDID("$FreeBSD$"); #include #include #endif -#include #include #include #include @@ -159,9 +158,7 @@ linux_clone_proc(struct thread *td, stru exit_signal = args->flags & 0x000000ff; if (LINUX_SIG_VALID(exit_signal)) { - if (exit_signal <= LINUX_SIGTBLSZ) - exit_signal = - linux_to_bsd_signal[_SIG_IDX(exit_signal)]; + exit_signal = linux_to_bsd_signal(exit_signal); } else if (exit_signal != 0) return (EINVAL); Modified: head/sys/compat/linux/linux_misc.c ============================================================================== --- head/sys/compat/linux/linux_misc.c Sun May 24 17:46:04 2015 (r283473) +++ head/sys/compat/linux/linux_misc.c Sun May 24 17:47:20 2015 (r283474) @@ -871,10 +871,10 @@ linux_common_wait(struct thread *td, int tmpstat &= 0xffff; if (WIFSIGNALED(tmpstat)) tmpstat = (tmpstat & 0xffffff80) | - BSD_TO_LINUX_SIGNAL(WTERMSIG(tmpstat)); + bsd_to_linux_signal(WTERMSIG(tmpstat)); else if (WIFSTOPPED(tmpstat)) tmpstat = (tmpstat & 0xffff00ff) | - (BSD_TO_LINUX_SIGNAL(WSTOPSIG(tmpstat)) << 8); + (bsd_to_linux_signal(WSTOPSIG(tmpstat)) << 8); else if (WIFCONTINUED(tmpstat)) tmpstat = 0xffff; error = copyout(&tmpstat, status, sizeof(int)); @@ -987,7 +987,7 @@ linux_waitid(struct thread *td, struct l if (td->td_retval[0] == 0) bzero(&lsi, sizeof(lsi)); else { - sig = BSD_TO_LINUX_SIGNAL(siginfo.si_signo); + sig = bsd_to_linux_signal(siginfo.si_signo); siginfo_to_lsiginfo(&siginfo, &lsi, sig); } error = copyout(&lsi, args->info, sizeof(lsi)); Modified: head/sys/compat/linux/linux_signal.c ============================================================================== --- head/sys/compat/linux/linux_signal.c Sun May 24 17:46:04 2015 (r283473) +++ head/sys/compat/linux/linux_signal.c Sun May 24 17:47:20 2015 (r283474) @@ -60,42 +60,6 @@ static int linux_do_tkill(struct thread static void sicode_to_lsicode(int si_code, int *lsi_code); -#if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) -void -linux_to_bsd_sigset(l_sigset_t *lss, sigset_t *bss) -{ - int b, l; - - SIGEMPTYSET(*bss); - bss->__bits[0] = lss->__bits[0] & ~((1U << LINUX_SIGTBLSZ) - 1); - bss->__bits[1] = lss->__bits[1]; - for (l = 1; l <= LINUX_SIGTBLSZ; l++) { - if (LINUX_SIGISMEMBER(*lss, l)) { - b = linux_to_bsd_signal[_SIG_IDX(l)]; - if (b) - SIGADDSET(*bss, b); - } - } -} - -void -bsd_to_linux_sigset(sigset_t *bss, l_sigset_t *lss) -{ - int b, l; - - LINUX_SIGEMPTYSET(*lss); - lss->__bits[0] = bss->__bits[0] & ~((1U << LINUX_SIGTBLSZ) - 1); - lss->__bits[1] = bss->__bits[1]; - for (b = 1; b <= LINUX_SIGTBLSZ; b++) { - if (SIGISMEMBER(*bss, b)) { - l = bsd_to_linux_signal[_SIG_IDX(b)]; - if (l) - LINUX_SIGADDSET(*lss, l); - } - } -} -#endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */ - static void linux_to_bsd_sigaction(l_sigaction_t *lsa, struct sigaction *bsa) { @@ -163,11 +127,7 @@ linux_do_sigaction(struct thread *td, in linux_to_bsd_sigaction(linux_nsa, nsa); } else nsa = NULL; - - if (linux_sig <= LINUX_SIGTBLSZ) - sig = linux_to_bsd_signal[_SIG_IDX(linux_sig)]; - else - sig = linux_sig; + sig = linux_to_bsd_signal(linux_sig); error = kern_sigaction(td, sig, nsa, osa, 0); if (error) @@ -289,7 +249,7 @@ linux_sigprocmask(struct thread *td, str if (error) return (error); LINUX_SIGEMPTYSET(set); - set.__bits[0] = mask; + set.__mask = mask; } error = linux_do_sigprocmask(td, args->how, @@ -297,7 +257,7 @@ linux_sigprocmask(struct thread *td, str args->omask ? &oset : NULL); if (args->omask != NULL && !error) { - mask = oset.__bits[0]; + mask = oset.__mask; error = copyout(&mask, args->omask, sizeof(l_osigset_t)); } @@ -353,7 +313,7 @@ linux_sgetmask(struct thread *td, struct PROC_LOCK(p); bsd_to_linux_sigset(&td->td_sigmask, &mask); PROC_UNLOCK(p); - td->td_retval[0] = mask.__bits[0]; + td->td_retval[0] = mask.__mask; return (0); } @@ -371,9 +331,9 @@ linux_ssetmask(struct thread *td, struct PROC_LOCK(p); bsd_to_linux_sigset(&td->td_sigmask, &lset); - td->td_retval[0] = lset.__bits[0]; + td->td_retval[0] = lset.__mask; LINUX_SIGEMPTYSET(lset); - lset.__bits[0] = args->mask; + lset.__mask = args->mask; linux_to_bsd_sigset(&lset, &bset); td->td_sigmask = bset; SIG_CANTMASK(td->td_sigmask); @@ -401,7 +361,7 @@ linux_sigpending(struct thread *td, stru SIGSETAND(bset, td->td_sigmask); PROC_UNLOCK(p); bsd_to_linux_sigset(&bset, &lset); - mask = lset.__bits[0]; + mask = lset.__mask; return (copyout(&mask, args->mask, sizeof(mask))); } #endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */ @@ -505,7 +465,7 @@ linux_rt_sigtimedwait(struct thread *td, if (error) return (error); - sig = BSD_TO_LINUX_SIGNAL(info.ksi_signo); + sig = bsd_to_linux_signal(info.ksi_signo); if (args->ptr) { memset(&linfo, 0, sizeof(linfo)); @@ -537,10 +497,10 @@ linux_kill(struct thread *td, struct lin if (!LINUX_SIG_VALID(args->signum) && args->signum != 0) return (EINVAL); - if (args->signum > 0 && args->signum <= LINUX_SIGTBLSZ) - tmp.signum = linux_to_bsd_signal[_SIG_IDX(args->signum)]; + if (args->signum > 0) + tmp.signum = linux_to_bsd_signal(args->signum); else - tmp.signum = args->signum; + tmp.signum = 0; tmp.pid = args->pid; return (sys_kill(td, &tmp)); @@ -590,10 +550,10 @@ linux_tgkill(struct thread *td, struct l if (!LINUX_SIG_VALID(args->sig) && args->sig != 0) return (EINVAL); - if (args->sig > 0 && args->sig <= LINUX_SIGTBLSZ) - sig = linux_to_bsd_signal[_SIG_IDX(args->sig)]; + if (args->sig > 0) + sig = linux_to_bsd_signal(args->sig); else - sig = args->sig; + sig = 0; tdt = linux_tdfind(td, args->pid, args->tgid); if (tdt == NULL) @@ -628,8 +588,7 @@ linux_tkill(struct thread *td, struct li if (!LINUX_SIG_VALID(args->sig)) return (EINVAL); - - sig = BSD_TO_LINUX_SIGNAL(args->sig); + sig = linux_to_bsd_signal(args->sig); tdt = linux_tdfind(td, args->tid, -1); if (tdt == NULL) @@ -727,9 +686,9 @@ siginfo_to_lsiginfo(const siginfo_t *si, lsi->lsi_uid = si->si_uid; if (si->si_code == CLD_STOPPED) - lsi->lsi_status = BSD_TO_LINUX_SIGNAL(si->si_status); + lsi->lsi_status = bsd_to_linux_signal(si->si_status); else if (si->si_code == CLD_CONTINUED) - lsi->lsi_status = BSD_TO_LINUX_SIGNAL(SIGCONT); + lsi->lsi_status = bsd_to_linux_signal(SIGCONT); else lsi->lsi_status = si->si_status; break; @@ -754,32 +713,6 @@ siginfo_to_lsiginfo(const siginfo_t *si, } } -int -linux_to_bsd_sigaltstack(int lsa) -{ - int bsa = 0; - - if (lsa & LINUX_SS_DISABLE) - bsa |= SS_DISABLE; - /* - * Linux ignores SS_ONSTACK flag for ss - * parameter while FreeBSD prohibits it. - */ - return (bsa); -} - -int -bsd_to_linux_sigaltstack(int bsa) -{ - int lsa = 0; - - if (bsa & SS_DISABLE) - lsa |= LINUX_SS_DISABLE; - if (bsa & SS_ONSTACK) - lsa |= LINUX_SS_ONSTACK; - return (lsa); -} - void lsiginfo_to_ksiginfo(const l_siginfo_t *lsi, ksiginfo_t *ksi, int sig) { @@ -812,7 +745,7 @@ linux_rt_sigqueueinfo(struct thread *td, if (linfo.lsi_code >= 0) return (EPERM); - sig = BSD_TO_LINUX_SIGNAL(args->sig); + sig = linux_to_bsd_signal(args->sig); error = ESRCH; if ((p = pfind(args->pid)) != NULL || Modified: head/sys/compat/linux/linux_signal.h ============================================================================== --- head/sys/compat/linux/linux_signal.h Sun May 24 17:46:04 2015 (r283473) +++ head/sys/compat/linux/linux_signal.h Sun May 24 17:47:20 2015 (r283474) @@ -43,21 +43,9 @@ #define LINUX_SI_SIGIO -5 /* sent by queued SIGIO */ #define LINUX_SI_TKILL -6 /* sent by tkill system call */ -extern int bsd_to_linux_signal[]; -extern int linux_to_bsd_signal[]; - -int linux_to_bsd_sigaltstack(int lsa); -int bsd_to_linux_sigaltstack(int bsa); -void linux_to_bsd_sigset(l_sigset_t *, sigset_t *); -void bsd_to_linux_sigset(sigset_t *, l_sigset_t *); int linux_do_sigaction(struct thread *, int, l_sigaction_t *, l_sigaction_t *); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:48:34 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C8DAD98D; Sun, 24 May 2015 17:48:34 +0000 (UTC) Received: from svn.freebsd.org (svn.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 9C83C1DD6; Sun, 24 May 2015 17:48:34 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHmYUF030788; Sun, 24 May 2015 17:48:34 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHmY21030787; Sun, 24 May 2015 17:48:34 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241748.t4OHmY21030787@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:48:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283475 - head/sys/compat/linprocfs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:48:34 -0000 Author: dchagin Date: Sun May 24 17:48:34 2015 New Revision: 283475 URL: https://svnweb.freebsd.org/changeset/base/283475 Log: Convert Linux sigsets before showing. Linux kernel displays sigset always as 16x4 bit mask. Modified: head/sys/compat/linprocfs/linprocfs.c Modified: head/sys/compat/linprocfs/linprocfs.c ============================================================================== --- head/sys/compat/linprocfs/linprocfs.c Sun May 24 17:47:20 2015 (r283474) +++ head/sys/compat/linprocfs/linprocfs.c Sun May 24 17:48:34 2015 (r283475) @@ -99,6 +99,7 @@ __FBSDID("$FreeBSD$"); #include #endif /* __i386__ || __amd64__ */ +#include #include #include #include @@ -742,6 +743,7 @@ linprocfs_doprocstatus(PFS_FILL_ARGS) segsz_t lsize; struct thread *td2; struct sigacts *ps; + l_sigset_t siglist, sigignore, sigcatch; int i; sx_slock(&proctree_lock); @@ -833,29 +835,25 @@ linprocfs_doprocstatus(PFS_FILL_ARGS) /* * Signal masks - * - * We support up to 128 signals, while Linux supports 32, - * but we only define 32 (the same 32 as Linux, to boot), so - * just show the lower 32 bits of each mask. XXX hack. - * - * NB: on certain platforms (Sparc at least) Linux actually - * supports 64 signals, but this code is a long way from - * running on anything but i386, so ignore that for now. */ PROC_LOCK(p); - sbuf_printf(sb, "SigPnd:\t%08x\n", p->p_siglist.__bits[0]); - /* - * I can't seem to find out where the signal mask is in - * relation to struct proc, so SigBlk is left unimplemented. - */ - sbuf_printf(sb, "SigBlk:\t%08x\n", 0); /* XXX */ + bsd_to_linux_sigset(&p->p_siglist, &siglist); ps = p->p_sigacts; mtx_lock(&ps->ps_mtx); - sbuf_printf(sb, "SigIgn:\t%08x\n", ps->ps_sigignore.__bits[0]); - sbuf_printf(sb, "SigCgt:\t%08x\n", ps->ps_sigcatch.__bits[0]); + bsd_to_linux_sigset(&ps->ps_sigignore, &sigignore); + bsd_to_linux_sigset(&ps->ps_sigcatch, &sigcatch); mtx_unlock(&ps->ps_mtx); PROC_UNLOCK(p); + sbuf_printf(sb, "SigPnd:\t%016jx\n", siglist.__mask); + /* + * XXX. SigBlk - target thread's signal mask, td_sigmask. + * To implement SigBlk pseudofs should support proc/tid dir entries. + */ + sbuf_printf(sb, "SigBlk:\t%016x\n", 0); + sbuf_printf(sb, "SigIgn:\t%016jx\n", sigignore.__mask); + sbuf_printf(sb, "SigCgt:\t%016jx\n", sigcatch.__mask); + /* * Linux also prints the capability masks, but we don't have * capabilities yet, and when we do get them they're likely to From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:49:09 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id EB5EFAD8; Sun, 24 May 2015 17:49:09 +0000 (UTC) Received: from svn.freebsd.org (svn.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 D8FB31DE0; Sun, 24 May 2015 17:49:09 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHn9ZO030918; Sun, 24 May 2015 17:49:09 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHn9uF030917; Sun, 24 May 2015 17:49:09 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241749.t4OHn9uF030917@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:49:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283476 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:49:10 -0000 Author: dchagin Date: Sun May 24 17:49:09 2015 New Revision: 283476 URL: https://svnweb.freebsd.org/changeset/base/283476 Log: Convert Linux signal number to the FreeBSD. Modified: head/sys/compat/linux/linux_timer.c Modified: head/sys/compat/linux/linux_timer.c ============================================================================== --- head/sys/compat/linux/linux_timer.c Sun May 24 17:48:34 2015 (r283475) +++ head/sys/compat/linux/linux_timer.c Sun May 24 17:49:09 2015 (r283476) @@ -58,7 +58,7 @@ linux_convert_l_sigevent(struct l_sigeve switch (l_sig->sigev_notify) { case L_SIGEV_SIGNAL: sig->sigev_notify = SIGEV_SIGNAL; - CP(*l_sig, *sig, sigev_signo); + sig->sigev_signo = linux_to_bsd_signal(l_sig->sigev_signo); PTRIN_CP(*l_sig, *sig, sigev_value.sival_ptr); break; case L_SIGEV_NONE: @@ -75,7 +75,7 @@ linux_convert_l_sigevent(struct l_sigeve case L_SIGEV_THREAD_ID: sig->sigev_notify = SIGEV_THREAD_ID; CP2(*l_sig, *sig, _l_sigev_un._tid, sigev_notify_thread_id); - CP(*l_sig, *sig, sigev_signo); + sig->sigev_signo = linux_to_bsd_signal(l_sig->sigev_signo); PTRIN_CP(*l_sig, *sig, sigev_value.sival_ptr); break; default: From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:51:59 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 73174C50; Sun, 24 May 2015 17:51:59 +0000 (UTC) Received: from svn.freebsd.org (svn.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 5F33A1E95; Sun, 24 May 2015 17:51:59 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHpx38034894; Sun, 24 May 2015 17:51:59 GMT (envelope-from ian@FreeBSD.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHpwq8034885; Sun, 24 May 2015 17:51:58 GMT (envelope-from ian@FreeBSD.org) Message-Id: <201505241751.t4OHpwq8034885@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ian set sender to ian@FreeBSD.org using -f From: Ian Lepore Date: Sun, 24 May 2015 17:51:58 +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: r283477 - in stable/10/sys: conf dev/fdt dev/ofw X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:51:59 -0000 Author: ian Date: Sun May 24 17:51:57 2015 New Revision: 283477 URL: https://svnweb.freebsd.org/changeset/base/283477 Log: MFC r279368, r280772, r280848: Allow creating subclass of FDT simplebus Make simplebus a base class of ofwbus. Fix bug in xrefinfo_find() for 64-bit platforms Added: stable/10/sys/dev/fdt/simplebus.h - copied, changed from r279368, head/sys/dev/fdt/simplebus.h Modified: stable/10/sys/conf/files.powerpc stable/10/sys/dev/fdt/simplebus.c stable/10/sys/dev/ofw/ofwbus.c stable/10/sys/dev/ofw/openfirm.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/conf/files.powerpc ============================================================================== --- stable/10/sys/conf/files.powerpc Sun May 24 17:49:09 2015 (r283476) +++ stable/10/sys/conf/files.powerpc Sun May 24 17:51:57 2015 (r283477) @@ -29,6 +29,8 @@ dev/adb/adb_buttons.c optional adb dev/agp/agp_apple.c optional agp powermac dev/fb/fb.c optional sc dev/fdt/fdt_powerpc.c optional fdt +# ofwbus depends on simplebus. +dev/fdt/simplebus.c optional aim | fdt dev/hwpmc/hwpmc_powerpc.c optional hwpmc dev/hwpmc/hwpmc_mpc7xxx.c optional hwpmc dev/hwpmc/hwpmc_ppc970.c optional hwpmc Modified: stable/10/sys/dev/fdt/simplebus.c ============================================================================== --- stable/10/sys/dev/fdt/simplebus.c Sun May 24 17:49:09 2015 (r283476) +++ stable/10/sys/dev/fdt/simplebus.c Sun May 24 17:51:57 2015 (r283477) @@ -38,26 +38,7 @@ __FBSDID("$FreeBSD$"); #include #include -struct simplebus_range { - uint64_t bus; - uint64_t host; - uint64_t size; -}; - -struct simplebus_softc { - device_t dev; - phandle_t node; - - struct simplebus_range *ranges; - int nranges; - - pcell_t acells, scells; -}; - -struct simplebus_devinfo { - struct ofw_bus_devinfo obdinfo; - struct resource_list rl; -}; +#include /* * Bus interface. @@ -68,7 +49,10 @@ static struct resource *simplebus_alloc_ int *, u_long, u_long, u_long, u_int); static void simplebus_probe_nomatch(device_t bus, device_t child); static int simplebus_print_child(device_t bus, device_t child); - +static device_t simplebus_add_child(device_t dev, u_int order, + const char *name, int unit); +static struct resource_list *simplebus_get_resource_list(device_t bus, + device_t child); /* * ofw_bus interface */ @@ -81,8 +65,6 @@ static const struct ofw_bus_devinfo *sim static int simplebus_fill_ranges(phandle_t node, struct simplebus_softc *sc); -static struct simplebus_devinfo *simplebus_setup_dinfo(device_t dev, - phandle_t node); /* * Driver methods. @@ -91,10 +73,17 @@ static device_method_t simplebus_methods /* Device interface */ DEVMETHOD(device_probe, simplebus_probe), DEVMETHOD(device_attach, simplebus_attach), + DEVMETHOD(device_detach, bus_generic_detach), + DEVMETHOD(device_shutdown, bus_generic_shutdown), + DEVMETHOD(device_suspend, bus_generic_suspend), + DEVMETHOD(device_resume, bus_generic_resume), /* Bus interface */ + DEVMETHOD(bus_add_child, simplebus_add_child), DEVMETHOD(bus_print_child, simplebus_print_child), DEVMETHOD(bus_probe_nomatch, simplebus_probe_nomatch), + DEVMETHOD(bus_read_ivar, bus_generic_read_ivar), + DEVMETHOD(bus_write_ivar, bus_generic_write_ivar), DEVMETHOD(bus_setup_intr, bus_generic_setup_intr), DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr), DEVMETHOD(bus_alloc_resource, simplebus_alloc_resource), @@ -102,7 +91,10 @@ static device_method_t simplebus_methods DEVMETHOD(bus_activate_resource, bus_generic_activate_resource), DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource), DEVMETHOD(bus_adjust_resource, bus_generic_adjust_resource), + DEVMETHOD(bus_set_resource, bus_generic_rl_set_resource), + DEVMETHOD(bus_get_resource, bus_generic_rl_get_resource), DEVMETHOD(bus_child_pnpinfo_str, ofw_bus_gen_child_pnpinfo_str), + DEVMETHOD(bus_get_resource_list, simplebus_get_resource_list), /* ofw_bus interface */ DEVMETHOD(ofw_bus_get_devinfo, simplebus_get_devinfo), @@ -115,11 +107,9 @@ static device_method_t simplebus_methods DEVMETHOD_END }; -static driver_t simplebus_driver = { - "simplebus", - simplebus_methods, - sizeof(struct simplebus_softc) -}; +DEFINE_CLASS_0(simplebus, simplebus_driver, simplebus_methods, + sizeof(struct simplebus_softc)); + static devclass_t simplebus_devclass; EARLY_DRIVER_MODULE(simplebus, ofwbus, simplebus_driver, simplebus_devclass, 0, 0, BUS_PASS_BUS); @@ -153,13 +143,33 @@ static int simplebus_attach(device_t dev) { struct simplebus_softc *sc; - struct simplebus_devinfo *di; phandle_t node; - device_t cdev; - node = ofw_bus_get_node(dev); sc = device_get_softc(dev); + simplebus_init(dev, 0); + if (simplebus_fill_ranges(sc->node, sc) < 0) { + device_printf(dev, "could not get ranges\n"); + return (ENXIO); + } + /* + * In principle, simplebus could have an interrupt map, but ignore that + * for now + */ + + for (node = OF_child(sc->node); node > 0; node = OF_peer(node)) + simplebus_add_device(dev, node, 0, NULL, -1, NULL); + return (bus_generic_attach(dev)); +} + +void +simplebus_init(device_t dev, phandle_t node) +{ + struct simplebus_softc *sc; + + sc = device_get_softc(dev); + if (node == 0) + node = ofw_bus_get_node(dev); sc->dev = dev; sc->node = node; @@ -170,33 +180,6 @@ simplebus_attach(device_t dev) OF_getencprop(node, "#address-cells", &sc->acells, sizeof(sc->acells)); sc->scells = 1; OF_getencprop(node, "#size-cells", &sc->scells, sizeof(sc->scells)); - - if (simplebus_fill_ranges(node, sc) < 0) { - device_printf(dev, "could not get ranges\n"); - return (ENXIO); - } - - /* - * In principle, simplebus could have an interrupt map, but ignore that - * for now - */ - - for (node = OF_child(node); node > 0; node = OF_peer(node)) { - if ((di = simplebus_setup_dinfo(dev, node)) == NULL) - continue; - cdev = device_add_child(dev, NULL, -1); - if (cdev == NULL) { - device_printf(dev, "<%s>: device_add_child failed\n", - di->obdinfo.obd_name); - resource_list_free(&di->rl); - ofw_bus_gen_destroy_devinfo(&di->obdinfo); - free(di, M_DEVBUF); - continue; - } - device_set_ivars(cdev, di); - } - - return (bus_generic_attach(dev)); } static int @@ -248,17 +231,21 @@ simplebus_fill_ranges(phandle_t node, st return (sc->nranges); } -static struct simplebus_devinfo * -simplebus_setup_dinfo(device_t dev, phandle_t node) +struct simplebus_devinfo * +simplebus_setup_dinfo(device_t dev, phandle_t node, + struct simplebus_devinfo *di) { struct simplebus_softc *sc; struct simplebus_devinfo *ndi; sc = device_get_softc(dev); - - ndi = malloc(sizeof(*ndi), M_DEVBUF, M_WAITOK | M_ZERO); + if (di == NULL) + ndi = malloc(sizeof(*ndi), M_DEVBUF, M_WAITOK | M_ZERO); + else + ndi = di; if (ofw_bus_gen_setup_devinfo(&ndi->obdinfo, node) != 0) { - free(ndi, M_DEVBUF); + if (di == NULL) + free(ndi, M_DEVBUF); return (NULL); } @@ -269,6 +256,48 @@ simplebus_setup_dinfo(device_t dev, phan return (ndi); } +device_t +simplebus_add_device(device_t dev, phandle_t node, u_int order, + const char *name, int unit, struct simplebus_devinfo *di) +{ + struct simplebus_devinfo *ndi; + device_t cdev; + + if ((ndi = simplebus_setup_dinfo(dev, node, di)) == NULL) + return (NULL); + cdev = device_add_child_ordered(dev, order, name, unit); + if (cdev == NULL) { + device_printf(dev, "<%s>: device_add_child failed\n", + ndi->obdinfo.obd_name); + resource_list_free(&ndi->rl); + ofw_bus_gen_destroy_devinfo(&ndi->obdinfo); + if (di == NULL) + free(ndi, M_DEVBUF); + return (NULL); + } + device_set_ivars(cdev, ndi); + + return(cdev); +} + +static device_t +simplebus_add_child(device_t dev, u_int order, const char *name, int unit) +{ + device_t cdev; + struct simplebus_devinfo *ndi; + + cdev = device_add_child_ordered(dev, order, name, unit); + if (cdev == NULL) + return (NULL); + + ndi = malloc(sizeof(*ndi), M_DEVBUF, M_WAITOK | M_ZERO); + ndi->obdinfo.obd_node = -1; + resource_list_init(&ndi->rl); + device_set_ivars(cdev, ndi); + + return (cdev); +} + static const struct ofw_bus_devinfo * simplebus_get_devinfo(device_t bus __unused, device_t child) { @@ -278,6 +307,15 @@ simplebus_get_devinfo(device_t bus __unu return (&ndi->obdinfo); } +static struct resource_list * +simplebus_get_resource_list(device_t bus __unused, device_t child) +{ + struct simplebus_devinfo *ndi; + + ndi = device_get_ivars(child); + return (&ndi->rl); +} + static struct resource * simplebus_alloc_resource(device_t bus, device_t child, int type, int *rid, u_long start, u_long end, u_long count, u_int flags) @@ -356,9 +394,11 @@ simplebus_probe_nomatch(device_t bus, de if (!bootverbose) return; + compat = ofw_bus_get_compat(child); + if (compat == NULL) + return; name = ofw_bus_get_name(child); type = ofw_bus_get_type(child); - compat = ofw_bus_get_compat(child); device_printf(bus, "<%s>", name != NULL ? name : "unknown"); simplebus_print_res(device_get_ivars(child)); @@ -366,9 +406,7 @@ simplebus_probe_nomatch(device_t bus, de printf(" disabled"); if (type) printf(" type %s", type); - if (compat) - printf(" compat %s", compat); - printf(" (no driver attached)\n"); + printf(" compat %s (no driver attached)\n", compat); } static int Copied and modified: stable/10/sys/dev/fdt/simplebus.h (from r279368, head/sys/dev/fdt/simplebus.h) ============================================================================== --- head/sys/dev/fdt/simplebus.h Fri Feb 27 20:11:02 2015 (r279368, copy source) +++ stable/10/sys/dev/fdt/simplebus.h Sun May 24 17:51:57 2015 (r283477) @@ -26,8 +26,10 @@ * $FreeBSD$ */ -#ifndef _FDT_SIMPLEBUS_PRIVATE_H -#define _FDT_SIMPLEBUS_PRIVATE_H +#ifndef _FDT_SIMPLEBUS_H +#define _FDT_SIMPLEBUS_H + +#include /* FDT simplebus */ DECLARE_CLASS(simplebus_driver); @@ -53,4 +55,10 @@ struct simplebus_devinfo { struct ofw_bus_devinfo obdinfo; struct resource_list rl; }; -#endif /* _FDT_SIMPLEBUS_PRIVATE_H */ + +void simplebus_init(device_t dev, phandle_t node); +device_t simplebus_add_device(device_t dev, phandle_t node, u_int order, + const char *name, int unit, struct simplebus_devinfo *di); +struct simplebus_devinfo *simplebus_setup_dinfo(device_t dev, phandle_t node, + struct simplebus_devinfo *di); +#endif /* _FDT_SIMPLEBUS_H */ Modified: stable/10/sys/dev/ofw/ofwbus.c ============================================================================== --- stable/10/sys/dev/ofw/ofwbus.c Sun May 24 17:49:09 2015 (r283476) +++ stable/10/sys/dev/ofw/ofwbus.c Sun May 24 17:51:57 2015 (r283477) @@ -50,6 +50,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -62,13 +63,8 @@ __FBSDID("$FreeBSD$"); * */ -struct ofwbus_devinfo { - struct ofw_bus_devinfo ndi_obdinfo; - struct resource_list ndi_rl; -}; - struct ofwbus_softc { - uint32_t acells, scells; + struct simplebus_softc simplebus_sc; struct rman sc_intr_rman; struct rman sc_mem_rman; }; @@ -76,113 +72,31 @@ struct ofwbus_softc { static device_identify_t ofwbus_identify; static device_probe_t ofwbus_probe; static device_attach_t ofwbus_attach; -static bus_print_child_t ofwbus_print_child; -static bus_add_child_t ofwbus_add_child; -static bus_probe_nomatch_t ofwbus_probe_nomatch; static bus_alloc_resource_t ofwbus_alloc_resource; static bus_adjust_resource_t ofwbus_adjust_resource; static bus_release_resource_t ofwbus_release_resource; -static bus_get_resource_list_t ofwbus_get_resource_list; -static ofw_bus_get_devinfo_t ofwbus_get_devinfo; - -static int ofwbus_inlist(const char *, const char *const *); -static struct ofwbus_devinfo * ofwbus_setup_dinfo(device_t, phandle_t); -static void ofwbus_destroy_dinfo(struct ofwbus_devinfo *); -static int ofwbus_print_res(struct ofwbus_devinfo *); static device_method_t ofwbus_methods[] = { /* Device interface */ DEVMETHOD(device_identify, ofwbus_identify), DEVMETHOD(device_probe, ofwbus_probe), DEVMETHOD(device_attach, ofwbus_attach), - DEVMETHOD(device_detach, bus_generic_detach), - DEVMETHOD(device_shutdown, bus_generic_shutdown), - DEVMETHOD(device_suspend, bus_generic_suspend), - DEVMETHOD(device_resume, bus_generic_resume), /* Bus interface */ - DEVMETHOD(bus_print_child, ofwbus_print_child), - DEVMETHOD(bus_probe_nomatch, ofwbus_probe_nomatch), - DEVMETHOD(bus_read_ivar, bus_generic_read_ivar), - DEVMETHOD(bus_write_ivar, bus_generic_write_ivar), - DEVMETHOD(bus_add_child, ofwbus_add_child), - DEVMETHOD(bus_child_pnpinfo_str, ofw_bus_gen_child_pnpinfo_str), DEVMETHOD(bus_alloc_resource, ofwbus_alloc_resource), DEVMETHOD(bus_adjust_resource, ofwbus_adjust_resource), DEVMETHOD(bus_release_resource, ofwbus_release_resource), - DEVMETHOD(bus_set_resource, bus_generic_rl_set_resource), - DEVMETHOD(bus_get_resource, bus_generic_rl_get_resource), - DEVMETHOD(bus_get_resource_list, ofwbus_get_resource_list), - DEVMETHOD(bus_activate_resource, bus_generic_activate_resource), - DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource), - DEVMETHOD(bus_config_intr, bus_generic_config_intr), - DEVMETHOD(bus_setup_intr, bus_generic_setup_intr), - DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr), - - /* ofw_bus interface */ - DEVMETHOD(ofw_bus_get_devinfo, ofwbus_get_devinfo), - DEVMETHOD(ofw_bus_get_compat, ofw_bus_gen_get_compat), - DEVMETHOD(ofw_bus_get_model, ofw_bus_gen_get_model), - DEVMETHOD(ofw_bus_get_name, ofw_bus_gen_get_name), - DEVMETHOD(ofw_bus_get_node, ofw_bus_gen_get_node), - DEVMETHOD(ofw_bus_get_type, ofw_bus_gen_get_type), DEVMETHOD_END }; -static driver_t ofwbus_driver = { - "ofwbus", - ofwbus_methods, - sizeof(struct ofwbus_softc) -}; +DEFINE_CLASS_1(ofwbus, ofwbus_driver, ofwbus_methods, + sizeof(struct ofwbus_softc), simplebus_driver); static devclass_t ofwbus_devclass; EARLY_DRIVER_MODULE(ofwbus, nexus, ofwbus_driver, ofwbus_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); MODULE_VERSION(ofwbus, 1); -static const char *const ofwbus_excl_name[] = { - "FJSV,system", - "aliases", - "associations", - "chosen", - "cmp", - "counter-timer", /* No separate device; handled by psycho/sbus */ - "failsafe", - "memory", - "openprom", - "options", - "packages", - "physical-memory", - "rsc", - "sgcn", - "todsg", - "virtual-memory", - NULL -}; - -static const char *const ofwbus_excl_type[] = { - "core", - "cpu", - NULL -}; - -static int -ofwbus_inlist(const char *name, const char *const *list) -{ - int i; - - if (name == NULL) - return (0); - for (i = 0; list[i] != NULL; i++) - if (strcmp(name, list[i]) == 0) - return (1); - return (0); -} - -#define OFWBUS_EXCLUDED(name, type) \ - (ofwbus_inlist((name), ofwbus_excl_name) || \ - ((type) != NULL && ofwbus_inlist((type), ofwbus_excl_type))) - static void ofwbus_identify(driver_t *driver, device_t parent) { @@ -190,7 +104,7 @@ ofwbus_identify(driver_t *driver, device /* Check if Open Firmware has been instantiated */ if (OF_peer(0) == -1) return; - + if (device_find_child(parent, "ofwbus", -1) == NULL) BUS_ADD_CHILD(parent, 0, "ofwbus", -1); } @@ -206,10 +120,9 @@ ofwbus_probe(device_t dev) static int ofwbus_attach(device_t dev) { - struct ofwbus_devinfo *ndi; struct ofwbus_softc *sc; - device_t cdev; phandle_t node; + struct ofw_bus_devinfo obd; sc = device_get_softc(dev); @@ -221,6 +134,11 @@ ofwbus_attach(device_t dev) if (node == -1) return (ENXIO); + /* + * ofwbus bus starts on unamed node in FDT, so we cannot make + * ofw_bus_devinfo from it. Pass node to simplebus_init directly. + */ + simplebus_init(dev, node); sc->sc_intr_rman.rm_type = RMAN_ARRAY; sc->sc_intr_rman.rm_descr = "Interrupts"; sc->sc_mem_rman.rm_type = RMAN_ARRAY; @@ -237,78 +155,16 @@ ofwbus_attach(device_t dev) bus_generic_probe(dev); /* - * Some important numbers - */ - sc->acells = 2; - OF_getencprop(node, "#address-cells", &sc->acells, sizeof(sc->acells)); - sc->scells = 1; - OF_getencprop(node, "#size-cells", &sc->scells, sizeof(sc->scells)); - - /* * Now walk the OFW tree and attach top-level devices. */ for (node = OF_child(node); node > 0; node = OF_peer(node)) { - if ((ndi = ofwbus_setup_dinfo(dev, node)) == NULL) + if (ofw_bus_gen_setup_devinfo(&obd, node) != 0) continue; - cdev = device_add_child(dev, NULL, -1); - if (cdev == NULL) { - device_printf(dev, "<%s>: device_add_child failed\n", - ndi->ndi_obdinfo.obd_name); - ofwbus_destroy_dinfo(ndi); - continue; - } - device_set_ivars(cdev, ndi); + simplebus_add_device(dev, node, 0, NULL, -1, NULL); } return (bus_generic_attach(dev)); } -static device_t -ofwbus_add_child(device_t dev, u_int order, const char *name, int unit) -{ - device_t cdev; - struct ofwbus_devinfo *ndi; - - cdev = device_add_child_ordered(dev, order, name, unit); - if (cdev == NULL) - return (NULL); - - ndi = malloc(sizeof(*ndi), M_DEVBUF, M_WAITOK | M_ZERO); - ndi->ndi_obdinfo.obd_node = -1; - resource_list_init(&ndi->ndi_rl); - device_set_ivars(cdev, ndi); - - return (cdev); -} - -static int -ofwbus_print_child(device_t bus, device_t child) -{ - int rv; - - rv = bus_print_child_header(bus, child); - rv += ofwbus_print_res(device_get_ivars(child)); - rv += bus_print_child_footer(bus, child); - return (rv); -} - -static void -ofwbus_probe_nomatch(device_t bus, device_t child) -{ - const char *name, *type; - - if (!bootverbose) - return; - - name = ofw_bus_get_name(child); - type = ofw_bus_get_type(child); - - device_printf(bus, "<%s>", - name != NULL ? name : "unknown"); - ofwbus_print_res(device_get_ivars(child)); - printf(" type %s (no driver attached)\n", - type != NULL ? type : "unknown"); -} - static struct resource * ofwbus_alloc_resource(device_t bus, device_t child, int type, int *rid, u_long start, u_long end, u_long count, u_int flags) @@ -323,14 +179,15 @@ ofwbus_alloc_resource(device_t bus, devi passthrough = (device_get_parent(child) != bus); sc = device_get_softc(bus); rle = NULL; - if (!passthrough && isdefault) { rle = resource_list_find(BUS_GET_RESOURCE_LIST(bus, child), type, *rid); - if (rle == NULL) + if (rle == NULL) { + if (bootverbose) + device_printf(bus, "no default resources for " + "rid = %d, type = %d\n", *rid, type); return (NULL); - if (rle->res != NULL) - panic("%s: resource entry is busy", __func__); + } start = rle->start; count = ulmax(count, rle->count); end = ulmax(rle->end, start + count - 1); @@ -417,72 +274,3 @@ ofwbus_release_resource(device_t bus, de } return (rman_release_resource(r)); } - -static struct resource_list * -ofwbus_get_resource_list(device_t bus __unused, device_t child) -{ - struct ofwbus_devinfo *ndi; - - ndi = device_get_ivars(child); - return (&ndi->ndi_rl); -} - -static const struct ofw_bus_devinfo * -ofwbus_get_devinfo(device_t bus __unused, device_t child) -{ - struct ofwbus_devinfo *ndi; - - ndi = device_get_ivars(child); - return (&ndi->ndi_obdinfo); -} - -static struct ofwbus_devinfo * -ofwbus_setup_dinfo(device_t dev, phandle_t node) -{ - struct ofwbus_softc *sc; - struct ofwbus_devinfo *ndi; - const char *nodename; - - sc = device_get_softc(dev); - - ndi = malloc(sizeof(*ndi), M_DEVBUF, M_WAITOK | M_ZERO); - if (ofw_bus_gen_setup_devinfo(&ndi->ndi_obdinfo, node) != 0) { - free(ndi, M_DEVBUF); - return (NULL); - } - nodename = ndi->ndi_obdinfo.obd_name; - if (OFWBUS_EXCLUDED(nodename, ndi->ndi_obdinfo.obd_type)) { - ofw_bus_gen_destroy_devinfo(&ndi->ndi_obdinfo); - free(ndi, M_DEVBUF); - return (NULL); - } - - resource_list_init(&ndi->ndi_rl); - ofw_bus_reg_to_rl(dev, node, sc->acells, sc->scells, &ndi->ndi_rl); - ofw_bus_intr_to_rl(dev, node, &ndi->ndi_rl); - - return (ndi); -} - -static void -ofwbus_destroy_dinfo(struct ofwbus_devinfo *ndi) -{ - - resource_list_free(&ndi->ndi_rl); - ofw_bus_gen_destroy_devinfo(&ndi->ndi_obdinfo); - free(ndi, M_DEVBUF); -} - -static int -ofwbus_print_res(struct ofwbus_devinfo *ndi) -{ - int rv; - - rv = 0; - rv += resource_list_print_type(&ndi->ndi_rl, "mem", SYS_RES_MEMORY, - "%#lx"); - rv += resource_list_print_type(&ndi->ndi_rl, "irq", SYS_RES_IRQ, - "%ld"); - return (rv); -} - Modified: stable/10/sys/dev/ofw/openfirm.c ============================================================================== --- stable/10/sys/dev/ofw/openfirm.c Sun May 24 17:49:09 2015 (r283476) +++ stable/10/sys/dev/ofw/openfirm.c Sun May 24 17:51:57 2015 (r283477) @@ -154,16 +154,16 @@ xrefinfo_init(void *unsed) SYSINIT(xrefinfo, SI_SUB_KMEM, SI_ORDER_ANY, xrefinfo_init, NULL); static struct xrefinfo * -xrefinfo_find(phandle_t phandle, int find_by) +xrefinfo_find(uintptr_t key, int find_by) { struct xrefinfo *rv, *xi; rv = NULL; mtx_lock(&xreflist_lock); SLIST_FOREACH(xi, &xreflist, next_entry) { - if ((find_by == FIND_BY_XREF && phandle == xi->xref) || - (find_by == FIND_BY_NODE && phandle == xi->node) || - (find_by == FIND_BY_DEV && phandle == (uintptr_t)xi->dev)) { + if ((find_by == FIND_BY_XREF && (phandle_t)key == xi->xref) || + (find_by == FIND_BY_NODE && (phandle_t)key == xi->node) || + (find_by == FIND_BY_DEV && key == (uintptr_t)xi->dev)) { rv = xi; break; } From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:53:49 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9BB3AE96; Sun, 24 May 2015 17:53:49 +0000 (UTC) Received: from svn.freebsd.org (svn.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 892B81EA4; Sun, 24 May 2015 17:53:49 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHrnVt035224; Sun, 24 May 2015 17:53:49 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHrnh8035223; Sun, 24 May 2015 17:53:49 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241753.t4OHrnh8035223@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:53:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283478 - head/sys/compat/linprocfs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:53:49 -0000 Author: dchagin Date: Sun May 24 17:53:48 2015 New Revision: 283478 URL: https://svnweb.freebsd.org/changeset/base/283478 Log: Simplify linprocfs_doprocenviron(). Remove extra proc visibility checks and initialize pn_vis by well known procfs_candebug(). Modified: head/sys/compat/linprocfs/linprocfs.c Modified: head/sys/compat/linprocfs/linprocfs.c ============================================================================== --- head/sys/compat/linprocfs/linprocfs.c Sun May 24 17:51:57 2015 (r283477) +++ head/sys/compat/linprocfs/linprocfs.c Sun May 24 17:53:48 2015 (r283478) @@ -946,32 +946,15 @@ linprocfs_doproccmdline(PFS_FILL_ARGS) static int linprocfs_doprocenviron(PFS_FILL_ARGS) { - int ret; - - PROC_LOCK(p); - if ((ret = p_candebug(td, p)) != 0) { - PROC_UNLOCK(p); - return (ret); - } /* * Mimic linux behavior and pass only processes with usermode * address space as valid. Return zero silently otherwize. */ - if (p->p_vmspace == &vmspace0) { - PROC_UNLOCK(p); - return (0); - } - - if ((p->p_flag & P_SYSTEM) != 0) { - PROC_UNLOCK(p); + if (p->p_vmspace == &vmspace0) return (0); - } - PROC_UNLOCK(p); - - ret = proc_getenvv(td, p, sb); - return (ret); + return (proc_getenvv(td, p, sb)); } static char l32_map_str[] = "%08lx-%08lx %s%s%s%s %08lx %02x:%02x %lu%s%s\n"; @@ -1488,7 +1471,7 @@ linprocfs_init(PFS_INIT_ARGS) pfs_create_link(dir, "cwd", &linprocfs_doproccwd, NULL, NULL, NULL, 0); pfs_create_file(dir, "environ", &linprocfs_doprocenviron, - NULL, NULL, NULL, PFS_RD); + NULL, &procfs_candebug, NULL, PFS_RD); pfs_create_link(dir, "exe", &procfs_doprocfile, NULL, &procfs_notsystem, NULL, 0); pfs_create_file(dir, "maps", &linprocfs_doprocmaps, From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:56:05 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B354591; Sun, 24 May 2015 17:56:05 +0000 (UTC) Received: from svn.freebsd.org (svn.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 939DA1EBB; Sun, 24 May 2015 17:56:05 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHu5eD035627; Sun, 24 May 2015 17:56:05 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHu3ot035613; Sun, 24 May 2015 17:56:03 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241756.t4OHu3ot035613@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:56:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283479 - in head/sys: amd64/amd64 amd64/ia32 arm/arm i386/i386 mips/mips powerpc/powerpc sparc64/sparc64 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:56:05 -0000 Author: dchagin Date: Sun May 24 17:56:02 2015 New Revision: 283479 URL: https://svnweb.freebsd.org/changeset/base/283479 Log: The kernel sends signals to the processes via ABI specific sv_sendsig method. Native ABI do not need signal conversion, only emulators may want this. Usually emulators implements its own sv_sendsig method. For now only ibcs2 emulator does not have own sv_sendsig implementation and depends on native sendsig() method. So, remove any extra attempts to convert signal numbers from native sendsig() methods except from i386 where ibsc2 is living. Modified: head/sys/amd64/amd64/machdep.c head/sys/amd64/ia32/ia32_signal.c head/sys/arm/arm/machdep.c head/sys/i386/i386/machdep.c head/sys/mips/mips/freebsd32_machdep.c head/sys/mips/mips/pm_machdep.c head/sys/powerpc/powerpc/exec_machdep.c head/sys/sparc64/sparc64/machdep.c Modified: head/sys/amd64/amd64/machdep.c ============================================================================== --- head/sys/amd64/amd64/machdep.c Sun May 24 17:53:48 2015 (r283478) +++ head/sys/amd64/amd64/machdep.c Sun May 24 17:56:02 2015 (r283479) @@ -398,10 +398,6 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, /* Align to 16 bytes. */ sfp = (struct sigframe *)((unsigned long)sp & ~0xFul); - /* Translate the signal if appropriate. */ - if (p->p_sysent->sv_sigtbl && sig <= p->p_sysent->sv_sigsize) - sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)]; - /* Build the argument list for the signal handler. */ regs->tf_rdi = sig; /* arg 1 in %rdi */ regs->tf_rdx = (register_t)&sfp->sf_uc; /* arg 3 in %rdx */ Modified: head/sys/amd64/ia32/ia32_signal.c ============================================================================== --- head/sys/amd64/ia32/ia32_signal.c Sun May 24 17:53:48 2015 (r283478) +++ head/sys/amd64/ia32/ia32_signal.c Sun May 24 17:56:02 2015 (r283479) @@ -360,10 +360,6 @@ ia32_osendsig(sig_t catcher, ksiginfo_t } else fp = (struct ia32_sigframe3 *)regs->tf_rsp - 1; - /* Translate the signal if appropriate. */ - if (p->p_sysent->sv_sigtbl && sig <= p->p_sysent->sv_sigsize) - sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)]; - /* Build the argument list for the signal handler. */ sf.sf_signum = sig; sf.sf_scp = (register_t)&fp->sf_siginfo.si_sc; @@ -498,10 +494,6 @@ freebsd4_ia32_sendsig(sig_t catcher, ksi sfp = (struct ia32_sigframe4 *)regs->tf_rsp - 1; PROC_UNLOCK(p); - /* Translate the signal if appropriate. */ - if (p->p_sysent->sv_sigtbl && sig <= p->p_sysent->sv_sigsize) - sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)]; - /* Build the argument list for the signal handler. */ sf.sf_signum = sig; sf.sf_ucontext = (register_t)&sfp->sf_uc; @@ -643,10 +635,6 @@ ia32_sendsig(sig_t catcher, ksiginfo_t * sfp = (struct ia32_sigframe *)((uintptr_t)sp & ~0xF); PROC_UNLOCK(p); - /* Translate the signal if appropriate. */ - if (p->p_sysent->sv_sigtbl && sig <= p->p_sysent->sv_sigsize) - sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)]; - /* Build the argument list for the signal handler. */ sf.sf_signum = sig; sf.sf_ucontext = (register_t)&sfp->sf_uc; Modified: head/sys/arm/arm/machdep.c ============================================================================== --- head/sys/arm/arm/machdep.c Sun May 24 17:53:48 2015 (r283478) +++ head/sys/arm/arm/machdep.c Sun May 24 17:56:02 2015 (r283479) @@ -320,10 +320,6 @@ sendsig(catcher, ksi, mask) sigexit(td, SIGILL); } - /* Translate the signal if appropriate. */ - if (p->p_sysent->sv_sigtbl && sig <= p->p_sysent->sv_sigsize) - sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)]; - /* * Build context to run handler in. We invoke the handler * directly, only returning via the trampoline. Note the Modified: head/sys/i386/i386/machdep.c ============================================================================== --- head/sys/i386/i386/machdep.c Sun May 24 17:53:48 2015 (r283478) +++ head/sys/i386/i386/machdep.c Sun May 24 17:56:02 2015 (r283479) @@ -383,10 +383,6 @@ osendsig(sig_t catcher, ksiginfo_t *ksi, } else fp = (struct osigframe *)regs->tf_esp - 1; - /* Translate the signal if appropriate. */ - if (p->p_sysent->sv_sigtbl && sig <= p->p_sysent->sv_sigsize) - sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)]; - /* Build the argument list for the signal handler. */ sf.sf_signum = sig; sf.sf_scp = (register_t)&fp->sf_siginfo.si_sc; @@ -534,10 +530,6 @@ freebsd4_sendsig(sig_t catcher, ksiginfo } else sfp = (struct sigframe4 *)regs->tf_esp - 1; - /* Translate the signal if appropriate. */ - if (p->p_sysent->sv_sigtbl && sig <= p->p_sysent->sv_sigsize) - sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)]; - /* Build the argument list for the signal handler. */ sf.sf_signum = sig; sf.sf_ucontext = (register_t)&sfp->sf_uc; Modified: head/sys/mips/mips/freebsd32_machdep.c ============================================================================== --- head/sys/mips/mips/freebsd32_machdep.c Sun May 24 17:53:48 2015 (r283478) +++ head/sys/mips/mips/freebsd32_machdep.c Sun May 24 17:56:02 2015 (r283479) @@ -419,12 +419,6 @@ freebsd32_sendsig(sig_t catcher, ksiginf sfp = (struct sigframe32 *)((vm_offset_t)(td->td_frame->sp - sizeof(struct sigframe32)) & ~(sizeof(__int64_t) - 1)); - /* Translate the signal if appropriate */ - if (p->p_sysent->sv_sigtbl) { - if (sig <= p->p_sysent->sv_sigsize) - sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)]; - } - /* Build the argument list for the signal handler. */ td->td_frame->a0 = sig; td->td_frame->a2 = (register_t)(intptr_t)&sfp->sf_uc; Modified: head/sys/mips/mips/pm_machdep.c ============================================================================== --- head/sys/mips/mips/pm_machdep.c Sun May 24 17:53:48 2015 (r283478) +++ head/sys/mips/mips/pm_machdep.c Sun May 24 17:56:02 2015 (r283479) @@ -133,12 +133,6 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, sfp = (struct sigframe *)((vm_offset_t)(regs->sp - sizeof(struct sigframe)) & ~(sizeof(__int64_t) - 1)); - /* Translate the signal if appropriate */ - if (p->p_sysent->sv_sigtbl) { - if (sig <= p->p_sysent->sv_sigsize) - sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)]; - } - /* Build the argument list for the signal handler. */ regs->a0 = sig; regs->a2 = (register_t)(intptr_t)&sfp->sf_uc; Modified: head/sys/powerpc/powerpc/exec_machdep.c ============================================================================== --- head/sys/powerpc/powerpc/exec_machdep.c Sun May 24 17:53:48 2015 (r283478) +++ head/sys/powerpc/powerpc/exec_machdep.c Sun May 24 17:56:02 2015 (r283479) @@ -226,12 +226,6 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, } /* - * Translate the signal if appropriate (Linux emu ?) - */ - if (p->p_sysent->sv_sigtbl && sig <= p->p_sysent->sv_sigsize) - sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)]; - - /* * Save the floating-point state, if necessary, then copy it. */ /* XXX */ Modified: head/sys/sparc64/sparc64/machdep.c ============================================================================== --- head/sys/sparc64/sparc64/machdep.c Sun May 24 17:53:48 2015 (r283478) +++ head/sys/sparc64/sparc64/machdep.c Sun May 24 17:56:02 2015 (r283479) @@ -654,10 +654,6 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, fp = (struct frame *)sfp - 1; - /* Translate the signal if appropriate. */ - if (p->p_sysent->sv_sigtbl && sig <= p->p_sysent->sv_sigsize) - sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)]; - /* Build the argument list for the signal handler. */ tf->tf_out[0] = sig; tf->tf_out[2] = (register_t)&sfp->sf_uc; From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:57:10 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 651911DC; Sun, 24 May 2015 17:57:10 +0000 (UTC) Received: from svn.freebsd.org (svn.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 5200C1EC8; Sun, 24 May 2015 17:57:10 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHvA9p035831; Sun, 24 May 2015 17:57:10 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHv8Iv035816; Sun, 24 May 2015 17:57:08 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241757.t4OHv8Iv035816@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:57:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283480 - in head/sys: amd64/linux amd64/linux32 compat/linux i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:57:10 -0000 Author: dchagin Date: Sun May 24 17:57:07 2015 New Revision: 283480 URL: https://svnweb.freebsd.org/changeset/base/283480 Log: Add utimensat() system call. The patch developed by Jilles Tjoelker and Andrew Wilcox and adopted for lemul branch by me. Modified: head/sys/amd64/linux/linux_dummy.c head/sys/amd64/linux/syscalls.master head/sys/amd64/linux32/linux32_dummy.c head/sys/amd64/linux32/syscalls.master head/sys/compat/linux/linux_misc.c head/sys/compat/linux/linux_misc.h head/sys/i386/linux/linux_dummy.c head/sys/i386/linux/syscalls.master Modified: head/sys/amd64/linux/linux_dummy.c ============================================================================== --- head/sys/amd64/linux/linux_dummy.c Sun May 24 17:56:02 2015 (r283479) +++ head/sys/amd64/linux/linux_dummy.c Sun May 24 17:57:07 2015 (r283480) @@ -98,7 +98,6 @@ DUMMY(tee); DUMMY(sync_file_range); DUMMY(vmsplice); DUMMY(move_pages); -DUMMY(utimensat); DUMMY(epoll_pwait); DUMMY(signalfd); DUMMY(timerfd); Modified: head/sys/amd64/linux/syscalls.master ============================================================================== --- head/sys/amd64/linux/syscalls.master Sun May 24 17:56:02 2015 (r283479) +++ head/sys/amd64/linux/syscalls.master Sun May 24 17:57:07 2015 (r283480) @@ -468,7 +468,8 @@ 277 AUE_NULL STD { int linux_sync_file_range(void); } 278 AUE_NULL STD { int linux_vmsplice(void); } 279 AUE_NULL STD { int linux_move_pages(void); } -280 AUE_NULL STD { int linux_utimensat(void); } +280 AUE_FUTIMESAT STD { int linux_utimensat(l_int dfd, const char *pathname, \ + const struct l_timespec *times, l_int flags); } 281 AUE_NULL STD { int linux_epoll_pwait(l_int epfd, struct epoll_event *events, \ l_int maxevents, l_int timeout, l_sigset_t *mask); } 282 AUE_NULL STD { int linux_signalfd(void); } Modified: head/sys/amd64/linux32/linux32_dummy.c ============================================================================== --- head/sys/amd64/linux32/linux32_dummy.c Sun May 24 17:56:02 2015 (r283479) +++ head/sys/amd64/linux32/linux32_dummy.c Sun May 24 17:57:07 2015 (r283480) @@ -104,7 +104,6 @@ DUMMY(move_pages); DUMMY(getcpu); DUMMY(epoll_pwait); /* linux 2.6.22: */ -DUMMY(utimensat); DUMMY(signalfd); DUMMY(timerfd_create); /* linux 2.6.25: */ Modified: head/sys/amd64/linux32/syscalls.master ============================================================================== --- head/sys/amd64/linux32/syscalls.master Sun May 24 17:56:02 2015 (r283479) +++ head/sys/amd64/linux32/syscalls.master Sun May 24 17:57:07 2015 (r283480) @@ -533,7 +533,8 @@ 319 AUE_NULL STD { int linux_epoll_pwait(l_int epfd, struct epoll_event *events, \ l_int maxevents, l_int timeout, l_osigset_t *mask); } ; linux 2.6.22: -320 AUE_NULL STD { int linux_utimensat(void); } +320 AUE_FUTIMESAT STD { int linux_utimensat(l_int dfd, const char *pathname, \ + const struct l_timespec *times, l_int flags); } 321 AUE_NULL STD { int linux_signalfd(void); } 322 AUE_NULL STD { int linux_timerfd_create(void); } 323 AUE_NULL STD { int linux_eventfd(l_uint initval); } Modified: head/sys/compat/linux/linux_misc.c ============================================================================== --- head/sys/compat/linux/linux_misc.c Sun May 24 17:56:02 2015 (r283479) +++ head/sys/compat/linux/linux_misc.c Sun May 24 17:57:07 2015 (r283480) @@ -824,6 +824,87 @@ linux_utimes(struct thread *td, struct l return (error); } +int +linux_utimensat(struct thread *td, struct linux_utimensat_args *args) +{ + struct l_timespec l_times[2]; + struct timespec times[2], *timesp = NULL; + char *path = NULL; + int error, dfd, flags = 0; + + dfd = (args->dfd == LINUX_AT_FDCWD) ? AT_FDCWD : args->dfd; + +#ifdef DEBUG + if (ldebug(utimensat)) + printf(ARGS(utimensat, "%d, *"), dfd); +#endif + + if (args->flags & ~LINUX_AT_SYMLINK_NOFOLLOW) + return (EINVAL); + + if (args->times != NULL) { + error = copyin(args->times, l_times, sizeof(l_times)); + if (error != 0) + return (error); + + if (l_times[0].tv_nsec > 999999999 || + l_times[1].tv_nsec > 999999999) + return (EINVAL); + + times[0].tv_sec = l_times[0].tv_sec; + switch (l_times[0].tv_nsec) + { + case LINUX_UTIME_OMIT: + times[0].tv_nsec = UTIME_OMIT; + break; + case LINUX_UTIME_NOW: + times[0].tv_nsec = UTIME_NOW; + break; + default: + times[0].tv_nsec = l_times[0].tv_nsec; + } + + times[1].tv_sec = l_times[1].tv_sec; + switch (l_times[1].tv_nsec) + { + case LINUX_UTIME_OMIT: + times[1].tv_nsec = UTIME_OMIT; + break; + case LINUX_UTIME_NOW: + times[1].tv_nsec = UTIME_NOW; + break; + default: + times[1].tv_nsec = l_times[1].tv_nsec; + break; + } + timesp = times; + } + + if (times[0].tv_nsec == UTIME_OMIT && times[1].tv_nsec == UTIME_OMIT) + /* This breaks POSIX, but is what the Linux kernel does + * _on purpose_ (documented in the man page for utimensat(2)), + * so we must follow that behaviour. */ + return (0); + + if (args->pathname != NULL) + LCONVPATHEXIST_AT(td, args->pathname, &path, dfd); + else if (args->flags != 0) + return (EINVAL); + + if (args->flags & LINUX_AT_SYMLINK_NOFOLLOW) + flags |= AT_SYMLINK_NOFOLLOW; + + if (path == NULL) + error = kern_futimens(td, dfd, timesp, UIO_SYSSPACE); + else { + error = kern_utimensat(td, dfd, path, UIO_SYSSPACE, timesp, + UIO_SYSSPACE, flags); + LFREEPATH(path); + } + + return (error); +} + int linux_futimesat(struct thread *td, struct linux_futimesat_args *args) { Modified: head/sys/compat/linux/linux_misc.h ============================================================================== --- head/sys/compat/linux/linux_misc.h Sun May 24 17:56:02 2015 (r283479) +++ head/sys/compat/linux/linux_misc.h Sun May 24 17:57:07 2015 (r283480) @@ -121,6 +121,9 @@ struct l_new_utsname { #define LINUX_CLOCK_REALTIME_HR 4 #define LINUX_CLOCK_MONOTONIC_HR 5 +#define LINUX_UTIME_NOW 0x3FFFFFFF +#define LINUX_UTIME_OMIT 0x3FFFFFFE + extern int stclohz; #define LINUX_WNOHANG 0x00000001 Modified: head/sys/i386/linux/linux_dummy.c ============================================================================== --- head/sys/i386/linux/linux_dummy.c Sun May 24 17:56:02 2015 (r283479) +++ head/sys/i386/linux/linux_dummy.c Sun May 24 17:57:07 2015 (r283480) @@ -100,7 +100,6 @@ DUMMY(move_pages); DUMMY(getcpu); DUMMY(epoll_pwait); /* linux 2.6.22: */ -DUMMY(utimensat); DUMMY(signalfd); DUMMY(timerfd_create); /* linux 2.6.25: */ Modified: head/sys/i386/linux/syscalls.master ============================================================================== --- head/sys/i386/linux/syscalls.master Sun May 24 17:56:02 2015 (r283479) +++ head/sys/i386/linux/syscalls.master Sun May 24 17:57:07 2015 (r283480) @@ -541,7 +541,8 @@ 319 AUE_NULL STD { int linux_epoll_pwait(l_int epfd, struct epoll_event *events, \ l_int maxevents, l_int timeout, l_osigset_t *mask); } ; linux 2.6.22: -320 AUE_NULL STD { int linux_utimensat(void); } +320 AUE_FUTIMESAT STD { int linux_utimensat(l_int dfd, const char *pathname, \ + const struct l_timespec *times, l_int flags); } 321 AUE_NULL STD { int linux_signalfd(void); } 322 AUE_NULL STD { int linux_timerfd_create(void); } 323 AUE_NULL STD { int linux_eventfd(l_uint initval); } From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:57:31 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E69DF330; Sun, 24 May 2015 17:57:30 +0000 (UTC) Received: from svn.freebsd.org (svn.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 D3C1C1ED5; Sun, 24 May 2015 17:57:30 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHvUgQ035936; Sun, 24 May 2015 17:57:30 GMT (envelope-from ian@FreeBSD.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHvUqj035933; Sun, 24 May 2015 17:57:30 GMT (envelope-from ian@FreeBSD.org) Message-Id: <201505241757.t4OHvUqj035933@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ian set sender to ian@FreeBSD.org using -f From: Ian Lepore Date: Sun, 24 May 2015 17:57:30 +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: r283481 - stable/10/sys/dev/uart X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:57:31 -0000 Author: ian Date: Sun May 24 17:57:29 2015 New Revision: 283481 URL: https://svnweb.freebsd.org/changeset/base/283481 Log: MFC r281073, r281074, r281077, r281200: Use OF_getencprop over OF_getprop and fdt32_to_cpu. The latter may give us the wrong data in the failure case if shift was not zero. Remove the extra copy of uart_fdt_get_clock and uart_fdt_get_shift. While here also use OF_getencprop in uart_fdt_get_clock. Move uart_fdt_get_clock and uart_fdt_get_shift to uart_bus_fdt.c, we may not build uart_cpu_fdt.c in all configs. Fix uart_fdt_get_clock. It should have been using the cell variable passed in, not value on the stack. Modified: stable/10/sys/dev/uart/uart_bus_fdt.c stable/10/sys/dev/uart/uart_cpu_fdt.c stable/10/sys/dev/uart/uart_cpu_fdt.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/uart/uart_bus_fdt.c ============================================================================== --- stable/10/sys/dev/uart/uart_bus_fdt.c Sun May 24 17:57:07 2015 (r283480) +++ stable/10/sys/dev/uart/uart_bus_fdt.c Sun May 24 17:57:29 2015 (r283481) @@ -63,37 +63,29 @@ static driver_t uart_fdt_driver = { sizeof(struct uart_softc), }; -static int +int uart_fdt_get_clock(phandle_t node, pcell_t *cell) { - pcell_t clock; - - /* - * clock-frequency is a FreeBSD-specific hack. Make its presence optional. - */ - if ((OF_getprop(node, "clock-frequency", &clock, - sizeof(clock))) <= 0) - clock = 0; - if (clock == 0) + /* clock-frequency is a FreeBSD-only extention. */ + if ((OF_getencprop(node, "clock-frequency", cell, + sizeof(*cell))) <= 0) { /* Try to retrieve parent 'bus-frequency' */ /* XXX this should go to simple-bus fixup or so */ - if ((OF_getprop(OF_parent(node), "bus-frequency", &clock, - sizeof(clock))) <= 0) - clock = 0; + if ((OF_getencprop(OF_parent(node), "bus-frequency", cell, + sizeof(*cell))) <= 0) + *cell = 0; + } - *cell = fdt32_to_cpu(clock); return (0); } -static int +int uart_fdt_get_shift(phandle_t node, pcell_t *cell) { - pcell_t shift; - if ((OF_getprop(node, "reg-shift", &shift, sizeof(shift))) <= 0) - shift = 0; - *cell = fdt32_to_cpu(shift); + if ((OF_getencprop(node, "reg-shift", cell, sizeof(*cell))) <= 0) + *cell = 0; return (0); } Modified: stable/10/sys/dev/uart/uart_cpu_fdt.c ============================================================================== --- stable/10/sys/dev/uart/uart_cpu_fdt.c Sun May 24 17:57:07 2015 (r283480) +++ stable/10/sys/dev/uart/uart_cpu_fdt.c Sun May 24 17:57:29 2015 (r283481) @@ -58,38 +58,6 @@ __FBSDID("$FreeBSD$"); bus_space_tag_t uart_bus_space_io; bus_space_tag_t uart_bus_space_mem; -static int -uart_fdt_get_clock(phandle_t node, pcell_t *cell) -{ - pcell_t clock; - - /* clock-frequency is a FreeBSD-only extention. */ - if ((OF_getprop(node, "clock-frequency", &clock, - sizeof(clock))) <= 0) - clock = 0; - - if (clock == 0) - /* Try to retrieve parent 'bus-frequency' */ - /* XXX this should go to simple-bus fixup or so */ - if ((OF_getprop(OF_parent(node), "bus-frequency", &clock, - sizeof(clock))) <= 0) - clock = 0; - - *cell = fdt32_to_cpu(clock); - return (0); -} - -static int -uart_fdt_get_shift(phandle_t node, pcell_t *cell) -{ - pcell_t shift; - - if ((OF_getprop(node, "reg-shift", &shift, sizeof(shift))) <= 0) - shift = 0; - *cell = fdt32_to_cpu(shift); - return (0); -} - int uart_cpu_eqres(struct uart_bas *b1, struct uart_bas *b2) { Modified: stable/10/sys/dev/uart/uart_cpu_fdt.h ============================================================================== --- stable/10/sys/dev/uart/uart_cpu_fdt.h Sun May 24 17:57:07 2015 (r283480) +++ stable/10/sys/dev/uart/uart_cpu_fdt.h Sun May 24 17:57:29 2015 (r283481) @@ -50,5 +50,7 @@ SET_DECLARE(uart_fdt_class_set, struct o #define UART_FDT_CLASS(data) \ DATA_SET(uart_fdt_class_set, data) +int uart_fdt_get_clock(phandle_t node, pcell_t *cell); +int uart_fdt_get_shift(phandle_t node, pcell_t *cell); #endif /* _DEV_UART_CPU_FDT_H_ */ From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:58:29 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A101F485; Sun, 24 May 2015 17:58:29 +0000 (UTC) Received: from svn.freebsd.org (svn.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 8D2E41EE4; Sun, 24 May 2015 17:58:29 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHwTcV036141; Sun, 24 May 2015 17:58:29 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHwPKJ036121; Sun, 24 May 2015 17:58:25 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241758.t4OHwPKJ036121@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:58:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283482 - in head/sys: amd64/linux amd64/linux32 i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:58:29 -0000 Author: dchagin Date: Sun May 24 17:58:24 2015 New Revision: 283482 URL: https://svnweb.freebsd.org/changeset/base/283482 Log: Regen for r283480. Modified: head/sys/amd64/linux/linux_proto.h head/sys/amd64/linux/linux_syscall.h head/sys/amd64/linux/linux_syscalls.c head/sys/amd64/linux/linux_sysent.c head/sys/amd64/linux/linux_systrace_args.c head/sys/amd64/linux32/linux32_proto.h head/sys/amd64/linux32/linux32_syscall.h head/sys/amd64/linux32/linux32_syscalls.c head/sys/amd64/linux32/linux32_sysent.c head/sys/amd64/linux32/linux32_systrace_args.c head/sys/i386/linux/linux_proto.h head/sys/i386/linux/linux_syscall.h head/sys/i386/linux/linux_syscalls.c head/sys/i386/linux/linux_sysent.c head/sys/i386/linux/linux_systrace_args.c Modified: head/sys/amd64/linux/linux_proto.h ============================================================================== --- head/sys/amd64/linux/linux_proto.h Sun May 24 17:57:29 2015 (r283481) +++ head/sys/amd64/linux/linux_proto.h Sun May 24 17:58:24 2015 (r283482) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283467 2015-05-24 17:38:02Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283480 2015-05-24 17:57:07Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -985,7 +985,10 @@ struct linux_move_pages_args { register_t dummy; }; struct linux_utimensat_args { - register_t dummy; + char dfd_l_[PADL_(l_int)]; l_int dfd; char dfd_r_[PADR_(l_int)]; + char pathname_l_[PADL_(const char *)]; const char * pathname; char pathname_r_[PADR_(const char *)]; + char times_l_[PADL_(const struct l_timespec *)]; const struct l_timespec * times; char times_r_[PADR_(const struct l_timespec *)]; + char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)]; }; struct linux_epoll_pwait_args { char epfd_l_[PADL_(l_int)]; l_int epfd; char epfd_r_[PADR_(l_int)]; @@ -1612,7 +1615,7 @@ int linux_finit_module(struct thread *, #define LINUX_SYS_AUE_linux_sync_file_range AUE_NULL #define LINUX_SYS_AUE_linux_vmsplice AUE_NULL #define LINUX_SYS_AUE_linux_move_pages AUE_NULL -#define LINUX_SYS_AUE_linux_utimensat AUE_NULL +#define LINUX_SYS_AUE_linux_utimensat AUE_FUTIMESAT #define LINUX_SYS_AUE_linux_epoll_pwait AUE_NULL #define LINUX_SYS_AUE_linux_signalfd AUE_NULL #define LINUX_SYS_AUE_linux_timerfd AUE_NULL Modified: head/sys/amd64/linux/linux_syscall.h ============================================================================== --- head/sys/amd64/linux/linux_syscall.h Sun May 24 17:57:29 2015 (r283481) +++ head/sys/amd64/linux/linux_syscall.h Sun May 24 17:58:24 2015 (r283482) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283467 2015-05-24 17:38:02Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283480 2015-05-24 17:57:07Z dchagin */ #define LINUX_SYS_read 0 Modified: head/sys/amd64/linux/linux_syscalls.c ============================================================================== --- head/sys/amd64/linux/linux_syscalls.c Sun May 24 17:57:29 2015 (r283481) +++ head/sys/amd64/linux/linux_syscalls.c Sun May 24 17:58:24 2015 (r283482) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283467 2015-05-24 17:38:02Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283480 2015-05-24 17:57:07Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/amd64/linux/linux_sysent.c ============================================================================== --- head/sys/amd64/linux/linux_sysent.c Sun May 24 17:57:29 2015 (r283481) +++ head/sys/amd64/linux/linux_sysent.c Sun May 24 17:58:24 2015 (r283482) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283467 2015-05-24 17:38:02Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283480 2015-05-24 17:57:07Z dchagin */ #include @@ -298,7 +298,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_sync_file_range, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 277 = linux_sync_file_range */ { 0, (sy_call_t *)linux_vmsplice, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 278 = linux_vmsplice */ { 0, (sy_call_t *)linux_move_pages, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 279 = linux_move_pages */ - { 0, (sy_call_t *)linux_utimensat, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 280 = linux_utimensat */ + { AS(linux_utimensat_args), (sy_call_t *)linux_utimensat, AUE_FUTIMESAT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 280 = linux_utimensat */ { AS(linux_epoll_pwait_args), (sy_call_t *)linux_epoll_pwait, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 281 = linux_epoll_pwait */ { 0, (sy_call_t *)linux_signalfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 282 = linux_signalfd */ { 0, (sy_call_t *)linux_timerfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 283 = linux_timerfd */ Modified: head/sys/amd64/linux/linux_systrace_args.c ============================================================================== --- head/sys/amd64/linux/linux_systrace_args.c Sun May 24 17:57:29 2015 (r283481) +++ head/sys/amd64/linux/linux_systrace_args.c Sun May 24 17:58:24 2015 (r283482) @@ -2052,7 +2052,12 @@ systrace_args(int sysnum, void *params, } /* linux_utimensat */ case 280: { - *n_args = 0; + struct linux_utimensat_args *p = params; + iarg[0] = p->dfd; /* l_int */ + uarg[1] = (intptr_t) p->pathname; /* const char * */ + uarg[2] = (intptr_t) p->times; /* const struct l_timespec * */ + iarg[3] = p->flags; /* l_int */ + *n_args = 4; break; } /* linux_epoll_pwait */ @@ -5355,6 +5360,22 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_utimensat */ case 280: + switch(ndx) { + case 0: + p = "l_int"; + break; + case 1: + p = "const char *"; + break; + case 2: + p = "const struct l_timespec *"; + break; + case 3: + p = "l_int"; + break; + default: + break; + }; break; /* linux_epoll_pwait */ case 281: @@ -6698,6 +6719,9 @@ systrace_return_setargdesc(int sysnum, i case 279: /* linux_utimensat */ case 280: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_epoll_pwait */ case 281: if (ndx == 0 || ndx == 1) Modified: head/sys/amd64/linux32/linux32_proto.h ============================================================================== --- head/sys/amd64/linux32/linux32_proto.h Sun May 24 17:57:29 2015 (r283481) +++ head/sys/amd64/linux32/linux32_proto.h Sun May 24 17:58:24 2015 (r283482) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283467 2015-05-24 17:38:02Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283480 2015-05-24 17:57:07Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -1052,7 +1052,10 @@ struct linux_epoll_pwait_args { char mask_l_[PADL_(l_osigset_t *)]; l_osigset_t * mask; char mask_r_[PADR_(l_osigset_t *)]; }; struct linux_utimensat_args { - register_t dummy; + char dfd_l_[PADL_(l_int)]; l_int dfd; char dfd_r_[PADR_(l_int)]; + char pathname_l_[PADL_(const char *)]; const char * pathname; char pathname_r_[PADR_(const char *)]; + char times_l_[PADL_(const struct l_timespec *)]; const struct l_timespec * times; char times_r_[PADR_(const struct l_timespec *)]; + char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)]; }; struct linux_signalfd_args { register_t dummy; @@ -1702,7 +1705,7 @@ int linux_process_vm_writev(struct threa #define LINUX_SYS_AUE_linux_move_pages AUE_NULL #define LINUX_SYS_AUE_linux_getcpu AUE_NULL #define LINUX_SYS_AUE_linux_epoll_pwait AUE_NULL -#define LINUX_SYS_AUE_linux_utimensat AUE_NULL +#define LINUX_SYS_AUE_linux_utimensat AUE_FUTIMESAT #define LINUX_SYS_AUE_linux_signalfd AUE_NULL #define LINUX_SYS_AUE_linux_timerfd_create AUE_NULL #define LINUX_SYS_AUE_linux_eventfd AUE_NULL Modified: head/sys/amd64/linux32/linux32_syscall.h ============================================================================== --- head/sys/amd64/linux32/linux32_syscall.h Sun May 24 17:57:29 2015 (r283481) +++ head/sys/amd64/linux32/linux32_syscall.h Sun May 24 17:58:24 2015 (r283482) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283467 2015-05-24 17:38:02Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283480 2015-05-24 17:57:07Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/amd64/linux32/linux32_syscalls.c ============================================================================== --- head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 17:57:29 2015 (r283481) +++ head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 17:58:24 2015 (r283482) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283467 2015-05-24 17:38:02Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283480 2015-05-24 17:57:07Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/amd64/linux32/linux32_sysent.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysent.c Sun May 24 17:57:29 2015 (r283481) +++ head/sys/amd64/linux32/linux32_sysent.c Sun May 24 17:58:24 2015 (r283482) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283467 2015-05-24 17:38:02Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283480 2015-05-24 17:57:07Z dchagin */ #include "opt_compat.h" @@ -339,7 +339,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_move_pages, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 317 = linux_move_pages */ { 0, (sy_call_t *)linux_getcpu, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 318 = linux_getcpu */ { AS(linux_epoll_pwait_args), (sy_call_t *)linux_epoll_pwait, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 319 = linux_epoll_pwait */ - { 0, (sy_call_t *)linux_utimensat, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 320 = linux_utimensat */ + { AS(linux_utimensat_args), (sy_call_t *)linux_utimensat, AUE_FUTIMESAT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 320 = linux_utimensat */ { 0, (sy_call_t *)linux_signalfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 321 = linux_signalfd */ { 0, (sy_call_t *)linux_timerfd_create, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 322 = linux_timerfd_create */ { AS(linux_eventfd_args), (sy_call_t *)linux_eventfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 323 = linux_eventfd */ Modified: head/sys/amd64/linux32/linux32_systrace_args.c ============================================================================== --- head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 17:57:29 2015 (r283481) +++ head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 17:58:24 2015 (r283482) @@ -2170,7 +2170,12 @@ systrace_args(int sysnum, void *params, } /* linux_utimensat */ case 320: { - *n_args = 0; + struct linux_utimensat_args *p = params; + iarg[0] = p->dfd; /* l_int */ + uarg[1] = (intptr_t) p->pathname; /* const char * */ + uarg[2] = (intptr_t) p->times; /* const struct l_timespec * */ + iarg[3] = p->flags; /* l_int */ + *n_args = 4; break; } /* linux_signalfd */ @@ -5584,6 +5589,22 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_utimensat */ case 320: + switch(ndx) { + case 0: + p = "l_int"; + break; + case 1: + p = "const char *"; + break; + case 2: + p = "const struct l_timespec *"; + break; + case 3: + p = "l_int"; + break; + default: + break; + }; break; /* linux_signalfd */ case 321: @@ -6966,6 +6987,9 @@ systrace_return_setargdesc(int sysnum, i break; /* linux_utimensat */ case 320: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_signalfd */ case 321: /* linux_timerfd_create */ Modified: head/sys/i386/linux/linux_proto.h ============================================================================== --- head/sys/i386/linux/linux_proto.h Sun May 24 17:57:29 2015 (r283481) +++ head/sys/i386/linux/linux_proto.h Sun May 24 17:58:24 2015 (r283482) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283467 2015-05-24 17:38:02Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283480 2015-05-24 17:57:07Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -1070,7 +1070,10 @@ struct linux_epoll_pwait_args { char mask_l_[PADL_(l_osigset_t *)]; l_osigset_t * mask; char mask_r_[PADR_(l_osigset_t *)]; }; struct linux_utimensat_args { - register_t dummy; + char dfd_l_[PADL_(l_int)]; l_int dfd; char dfd_r_[PADR_(l_int)]; + char pathname_l_[PADL_(const char *)]; const char * pathname; char pathname_r_[PADR_(const char *)]; + char times_l_[PADL_(const struct l_timespec *)]; const struct l_timespec * times; char times_r_[PADR_(const struct l_timespec *)]; + char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)]; }; struct linux_signalfd_args { register_t dummy; @@ -1724,7 +1727,7 @@ int linux_process_vm_writev(struct threa #define LINUX_SYS_AUE_linux_move_pages AUE_NULL #define LINUX_SYS_AUE_linux_getcpu AUE_NULL #define LINUX_SYS_AUE_linux_epoll_pwait AUE_NULL -#define LINUX_SYS_AUE_linux_utimensat AUE_NULL +#define LINUX_SYS_AUE_linux_utimensat AUE_FUTIMESAT #define LINUX_SYS_AUE_linux_signalfd AUE_NULL #define LINUX_SYS_AUE_linux_timerfd_create AUE_NULL #define LINUX_SYS_AUE_linux_eventfd AUE_NULL Modified: head/sys/i386/linux/linux_syscall.h ============================================================================== --- head/sys/i386/linux/linux_syscall.h Sun May 24 17:57:29 2015 (r283481) +++ head/sys/i386/linux/linux_syscall.h Sun May 24 17:58:24 2015 (r283482) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283467 2015-05-24 17:38:02Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283480 2015-05-24 17:57:07Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/i386/linux/linux_syscalls.c ============================================================================== --- head/sys/i386/linux/linux_syscalls.c Sun May 24 17:57:29 2015 (r283481) +++ head/sys/i386/linux/linux_syscalls.c Sun May 24 17:58:24 2015 (r283482) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283467 2015-05-24 17:38:02Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283480 2015-05-24 17:57:07Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/i386/linux/linux_sysent.c ============================================================================== --- head/sys/i386/linux/linux_sysent.c Sun May 24 17:57:29 2015 (r283481) +++ head/sys/i386/linux/linux_sysent.c Sun May 24 17:58:24 2015 (r283482) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283467 2015-05-24 17:38:02Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283480 2015-05-24 17:57:07Z dchagin */ #include @@ -338,7 +338,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_move_pages, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 317 = linux_move_pages */ { 0, (sy_call_t *)linux_getcpu, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 318 = linux_getcpu */ { AS(linux_epoll_pwait_args), (sy_call_t *)linux_epoll_pwait, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 319 = linux_epoll_pwait */ - { 0, (sy_call_t *)linux_utimensat, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 320 = linux_utimensat */ + { AS(linux_utimensat_args), (sy_call_t *)linux_utimensat, AUE_FUTIMESAT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 320 = linux_utimensat */ { 0, (sy_call_t *)linux_signalfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 321 = linux_signalfd */ { 0, (sy_call_t *)linux_timerfd_create, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 322 = linux_timerfd_create */ { AS(linux_eventfd_args), (sy_call_t *)linux_eventfd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 323 = linux_eventfd */ Modified: head/sys/i386/linux/linux_systrace_args.c ============================================================================== --- head/sys/i386/linux/linux_systrace_args.c Sun May 24 17:57:29 2015 (r283481) +++ head/sys/i386/linux/linux_systrace_args.c Sun May 24 17:58:24 2015 (r283482) @@ -2246,7 +2246,12 @@ systrace_args(int sysnum, void *params, } /* linux_utimensat */ case 320: { - *n_args = 0; + struct linux_utimensat_args *p = params; + iarg[0] = p->dfd; /* l_int */ + uarg[1] = (intptr_t) p->pathname; /* const char * */ + uarg[2] = (intptr_t) p->times; /* const struct l_timespec * */ + iarg[3] = p->flags; /* l_int */ + *n_args = 4; break; } /* linux_signalfd */ @@ -5815,6 +5820,22 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_utimensat */ case 320: + switch(ndx) { + case 0: + p = "l_int"; + break; + case 1: + p = "const char *"; + break; + case 2: + p = "const struct l_timespec *"; + break; + case 3: + p = "l_int"; + break; + default: + break; + }; break; /* linux_signalfd */ case 321: @@ -7244,6 +7265,9 @@ systrace_return_setargdesc(int sysnum, i break; /* linux_utimensat */ case 320: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_signalfd */ case 321: /* linux_timerfd_create */ From owner-svn-src-all@FreeBSD.ORG Sun May 24 17:59:18 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4E9AF5F8; Sun, 24 May 2015 17:59:18 +0000 (UTC) Received: from svn.freebsd.org (svn.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 3C2B31EFB; Sun, 24 May 2015 17:59:18 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OHxI3J036301; Sun, 24 May 2015 17:59:18 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OHxIqQ036300; Sun, 24 May 2015 17:59:18 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241759.t4OHxIqQ036300@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 17:59:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283483 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 17:59:18 -0000 Author: dchagin Date: Sun May 24 17:59:17 2015 New Revision: 283483 URL: https://svnweb.freebsd.org/changeset/base/283483 Log: Convert signal number to native for VT_SETMODE ioctl and remove strange and invalid ISSIGVALID macro. The code has not been tested right way but it was originally broken. Modified: head/sys/compat/linux/linux_ioctl.c Modified: head/sys/compat/linux/linux_ioctl.c ============================================================================== --- head/sys/compat/linux/linux_ioctl.c Sun May 24 17:58:24 2015 (r283482) +++ head/sys/compat/linux/linux_ioctl.c Sun May 24 17:59:17 2015 (r283483) @@ -1977,8 +1977,6 @@ linux_ioctl_sound(struct thread *td, str * Console related ioctls */ -#define ISSIGVALID(sig) ((sig) > 0 && (sig) < NSIG) - static int linux_ioctl_console(struct thread *td, struct linux_ioctl_args *args) { @@ -2061,8 +2059,16 @@ linux_ioctl_console(struct thread *td, s struct vt_mode mode; if ((error = copyin((void *)args->arg, &mode, sizeof(mode)))) break; - if (!ISSIGVALID(mode.frsig) && ISSIGVALID(mode.acqsig)) - mode.frsig = mode.acqsig; + if (LINUX_SIG_VALID(mode.relsig)) + mode.relsig = linux_to_bsd_signal(mode.relsig); + else + mode.relsig = 0; + if (LINUX_SIG_VALID(mode.acqsig)) + mode.acqsig = linux_to_bsd_signal(mode.acqsig); + else + mode.acqsig = 0; + /* XXX. Linux ignores frsig and set it to 0. */ + mode.frsig = 0; if ((error = copyout(&mode, (void *)args->arg, sizeof(mode)))) break; args->cmd = VT_SETMODE; From owner-svn-src-all@FreeBSD.ORG Sun May 24 18:00:16 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id CFD05752; Sun, 24 May 2015 18:00:16 +0000 (UTC) Received: from svn.freebsd.org (svn.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 BCDF31FB7; Sun, 24 May 2015 18:00:16 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OI0Gxa036676; Sun, 24 May 2015 18:00:16 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OI0FZh036653; Sun, 24 May 2015 18:00:15 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241800.t4OI0FZh036653@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 18:00:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283484 - in head/sys: amd64/linux amd64/linux32 compat/linux i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 18:00:17 -0000 Author: dchagin Date: Sun May 24 18:00:14 2015 New Revision: 283484 URL: https://svnweb.freebsd.org/changeset/base/283484 Log: Implement epoll_pwait() system call. Modified: head/sys/amd64/linux/linux_dummy.c head/sys/amd64/linux32/linux32_dummy.c head/sys/amd64/linux32/syscalls.master head/sys/compat/linux/linux_event.c head/sys/i386/linux/linux_dummy.c head/sys/i386/linux/syscalls.master Modified: head/sys/amd64/linux/linux_dummy.c ============================================================================== --- head/sys/amd64/linux/linux_dummy.c Sun May 24 17:59:17 2015 (r283483) +++ head/sys/amd64/linux/linux_dummy.c Sun May 24 18:00:14 2015 (r283484) @@ -98,7 +98,6 @@ DUMMY(tee); DUMMY(sync_file_range); DUMMY(vmsplice); DUMMY(move_pages); -DUMMY(epoll_pwait); DUMMY(signalfd); DUMMY(timerfd); DUMMY(timerfd_settime); Modified: head/sys/amd64/linux32/linux32_dummy.c ============================================================================== --- head/sys/amd64/linux32/linux32_dummy.c Sun May 24 17:59:17 2015 (r283483) +++ head/sys/amd64/linux32/linux32_dummy.c Sun May 24 18:00:14 2015 (r283484) @@ -102,7 +102,6 @@ DUMMY(vmsplice); DUMMY(move_pages); /* linux 2.6.19: */ DUMMY(getcpu); -DUMMY(epoll_pwait); /* linux 2.6.22: */ DUMMY(signalfd); DUMMY(timerfd_create); Modified: head/sys/amd64/linux32/syscalls.master ============================================================================== --- head/sys/amd64/linux32/syscalls.master Sun May 24 17:59:17 2015 (r283483) +++ head/sys/amd64/linux32/syscalls.master Sun May 24 18:00:14 2015 (r283484) @@ -531,7 +531,7 @@ ; linux 2.6.19: 318 AUE_NULL STD { int linux_getcpu(void); } 319 AUE_NULL STD { int linux_epoll_pwait(l_int epfd, struct epoll_event *events, \ - l_int maxevents, l_int timeout, l_osigset_t *mask); } + l_int maxevents, l_int timeout, l_sigset_t *mask); } ; linux 2.6.22: 320 AUE_FUTIMESAT STD { int linux_utimensat(l_int dfd, const char *pathname, \ const struct l_timespec *times, l_int flags); } Modified: head/sys/compat/linux/linux_event.c ============================================================================== --- head/sys/compat/linux/linux_event.c Sun May 24 17:59:17 2015 (r283483) +++ head/sys/compat/linux/linux_event.c Sun May 24 18:00:14 2015 (r283484) @@ -471,8 +471,9 @@ leave1: /* * Wait for a filter to be triggered on the epoll file descriptor. */ -int -linux_epoll_wait(struct thread *td, struct linux_epoll_wait_args *args) +static int +linux_epoll_wait_common(struct thread *td, int epfd, struct epoll_event *events, + int maxevents, int timeout, sigset_t *uset) { struct file *epfp; struct timespec ts, *tsp; @@ -483,33 +484,49 @@ linux_epoll_wait(struct thread *td, stru NULL}; int error; - if (args->maxevents <= 0 || args->maxevents > LINUX_MAX_EVENTS) + if (maxevents <= 0 || maxevents > LINUX_MAX_EVENTS) return (EINVAL); - error = fget(td, args->epfd, + if (uset != NULL) { + error = kern_sigprocmask(td, SIG_SETMASK, uset, + &td->td_oldsigmask, 0); + if (error != 0) + return (error); + td->td_pflags |= TDP_OLDMASK; + /* + * Make sure that ast() is called on return to + * usermode and TDP_OLDMASK is cleared, restoring old + * sigmask. + */ + thread_lock(td); + td->td_flags |= TDF_ASTPENDING; + thread_unlock(td); + } + + error = fget(td, epfd, cap_rights_init(&rights, CAP_KQUEUE_EVENT), &epfp); if (error != 0) return (error); - coargs.leventlist = args->events; + coargs.leventlist = events; coargs.p = td->td_proc; coargs.count = 0; coargs.error = 0; - if (args->timeout != -1) { - if (args->timeout < 0) { + if (timeout != -1) { + if (timeout < 0) { error = EINVAL; goto leave; } /* Convert from milliseconds to timespec. */ - ts.tv_sec = args->timeout / 1000; - ts.tv_nsec = (args->timeout % 1000) * 1000000; + ts.tv_sec = timeout / 1000; + ts.tv_nsec = (timeout % 1000) * 1000000; tsp = &ts; } else { tsp = NULL; } - error = kern_kevent_fp(td, epfp, 0, args->maxevents, &k_ops, tsp); + error = kern_kevent_fp(td, epfp, 0, maxevents, &k_ops, tsp); if (error == 0 && coargs.error != 0) error = coargs.error; @@ -524,6 +541,33 @@ leave: return (error); } +int +linux_epoll_wait(struct thread *td, struct linux_epoll_wait_args *args) +{ + + return (linux_epoll_wait_common(td, args->epfd, args->events, + args->maxevents, args->timeout, NULL)); +} + +int +linux_epoll_pwait(struct thread *td, struct linux_epoll_pwait_args *args) +{ + sigset_t mask, *pmask; + l_sigset_t lmask; + int error; + + if (args->mask != NULL) { + error = copyin(args->mask, &lmask, sizeof(l_sigset_t)); + if (error != 0) + return (error); + linux_to_bsd_sigset(&lmask, &mask); + pmask = &mask; + } else + pmask = NULL; + return (linux_epoll_wait_common(td, args->epfd, args->events, + args->maxevents, args->timeout, pmask)); +} + static int epoll_delete_event(struct thread *td, struct file *epfp, int fd, int filter) { Modified: head/sys/i386/linux/linux_dummy.c ============================================================================== --- head/sys/i386/linux/linux_dummy.c Sun May 24 17:59:17 2015 (r283483) +++ head/sys/i386/linux/linux_dummy.c Sun May 24 18:00:14 2015 (r283484) @@ -98,7 +98,6 @@ DUMMY(vmsplice); DUMMY(move_pages); /* linux 2.6.19: */ DUMMY(getcpu); -DUMMY(epoll_pwait); /* linux 2.6.22: */ DUMMY(signalfd); DUMMY(timerfd_create); Modified: head/sys/i386/linux/syscalls.master ============================================================================== --- head/sys/i386/linux/syscalls.master Sun May 24 17:59:17 2015 (r283483) +++ head/sys/i386/linux/syscalls.master Sun May 24 18:00:14 2015 (r283484) @@ -539,7 +539,7 @@ ; linux 2.6.19: 318 AUE_NULL STD { int linux_getcpu(void); } 319 AUE_NULL STD { int linux_epoll_pwait(l_int epfd, struct epoll_event *events, \ - l_int maxevents, l_int timeout, l_osigset_t *mask); } + l_int maxevents, l_int timeout, l_sigset_t *mask); } ; linux 2.6.22: 320 AUE_FUTIMESAT STD { int linux_utimensat(l_int dfd, const char *pathname, \ const struct l_timespec *times, l_int flags); } From owner-svn-src-all@FreeBSD.ORG Sun May 24 18:00:30 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5F83A896; Sun, 24 May 2015 18:00:30 +0000 (UTC) Received: from svn.freebsd.org (svn.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 3CC641FB9; Sun, 24 May 2015 18:00:30 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OI0UJC036757; Sun, 24 May 2015 18:00:30 GMT (envelope-from ian@FreeBSD.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OI0U5D036756; Sun, 24 May 2015 18:00:30 GMT (envelope-from ian@FreeBSD.org) Message-Id: <201505241800.t4OI0U5D036756@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ian set sender to ian@FreeBSD.org using -f From: Ian Lepore Date: Sun, 24 May 2015 18:00:30 +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: r283485 - stable/10/sys/dev/fdt X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 18:00:30 -0000 Author: ian Date: Sun May 24 18:00:29 2015 New Revision: 283485 URL: https://svnweb.freebsd.org/changeset/base/283485 Log: MFC r281371: Use OF_getencpropalloc() to handle endianess of the properties. Modified: stable/10/sys/dev/fdt/fdt_pinctrl.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/fdt/fdt_pinctrl.c ============================================================================== --- stable/10/sys/dev/fdt/fdt_pinctrl.c Sun May 24 18:00:14 2015 (r283484) +++ stable/10/sys/dev/fdt/fdt_pinctrl.c Sun May 24 18:00:29 2015 (r283485) @@ -46,7 +46,7 @@ fdt_pinctrl_configure(device_t client, u char name[16]; snprintf(name, sizeof(name), "pinctrl-%u", index); - nconfigs = OF_getprop_alloc(ofw_bus_get_node(client), name, + nconfigs = OF_getencprop_alloc(ofw_bus_get_node(client), name, sizeof(*configs), (void **)&configs); if (nconfigs < 0) return (ENOENT); @@ -122,12 +122,12 @@ pinctrl_configure_children(device_t pinc if (!fdt_is_enabled(node)) continue; pinctrl_configure_children(pinctrl, node); - nconfigs = OF_getencprop_alloc(node, "pinctrl-0", + nconfigs = OF_getencprop_alloc(node, "pinctrl-0", sizeof(*configs), (void **)&configs); if (nconfigs <= 0) continue; if (bootverbose) { - char name[32]; + char name[32]; OF_getprop(node, "name", &name, sizeof(name)); printf("Processing %d pin-config node(s) in pinctrl-0 for %s\n", nconfigs, name); From owner-svn-src-all@FreeBSD.ORG Sun May 24 18:02:20 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 89B7FADA; Sun, 24 May 2015 18:02:20 +0000 (UTC) Received: from svn.freebsd.org (svn.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 6A2E41FD5; Sun, 24 May 2015 18:02:20 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OI2KSm040861; Sun, 24 May 2015 18:02:20 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OI2HxO040845; Sun, 24 May 2015 18:02:17 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241802.t4OI2HxO040845@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 18:02:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283486 - in head/sys: amd64/linux32 i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 18:02:20 -0000 Author: dchagin Date: Sun May 24 18:02:17 2015 New Revision: 283486 URL: https://svnweb.freebsd.org/changeset/base/283486 Log: Regen for r283484. Modified: head/sys/amd64/linux32/linux32_proto.h head/sys/amd64/linux32/linux32_syscall.h head/sys/amd64/linux32/linux32_syscalls.c head/sys/amd64/linux32/linux32_sysent.c head/sys/amd64/linux32/linux32_systrace_args.c head/sys/i386/linux/linux_proto.h head/sys/i386/linux/linux_syscall.h head/sys/i386/linux/linux_syscalls.c head/sys/i386/linux/linux_sysent.c head/sys/i386/linux/linux_systrace_args.c Modified: head/sys/amd64/linux32/linux32_proto.h ============================================================================== --- head/sys/amd64/linux32/linux32_proto.h Sun May 24 18:00:29 2015 (r283485) +++ head/sys/amd64/linux32/linux32_proto.h Sun May 24 18:02:17 2015 (r283486) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283480 2015-05-24 17:57:07Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283484 2015-05-24 18:00:14Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -1049,7 +1049,7 @@ struct linux_epoll_pwait_args { char events_l_[PADL_(struct epoll_event *)]; struct epoll_event * events; char events_r_[PADR_(struct epoll_event *)]; char maxevents_l_[PADL_(l_int)]; l_int maxevents; char maxevents_r_[PADR_(l_int)]; char timeout_l_[PADL_(l_int)]; l_int timeout; char timeout_r_[PADR_(l_int)]; - char mask_l_[PADL_(l_osigset_t *)]; l_osigset_t * mask; char mask_r_[PADR_(l_osigset_t *)]; + char mask_l_[PADL_(l_sigset_t *)]; l_sigset_t * mask; char mask_r_[PADR_(l_sigset_t *)]; }; struct linux_utimensat_args { char dfd_l_[PADL_(l_int)]; l_int dfd; char dfd_r_[PADR_(l_int)]; Modified: head/sys/amd64/linux32/linux32_syscall.h ============================================================================== --- head/sys/amd64/linux32/linux32_syscall.h Sun May 24 18:00:29 2015 (r283485) +++ head/sys/amd64/linux32/linux32_syscall.h Sun May 24 18:02:17 2015 (r283486) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283480 2015-05-24 17:57:07Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283484 2015-05-24 18:00:14Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/amd64/linux32/linux32_syscalls.c ============================================================================== --- head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 18:00:29 2015 (r283485) +++ head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 18:02:17 2015 (r283486) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283480 2015-05-24 17:57:07Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283484 2015-05-24 18:00:14Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/amd64/linux32/linux32_sysent.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysent.c Sun May 24 18:00:29 2015 (r283485) +++ head/sys/amd64/linux32/linux32_sysent.c Sun May 24 18:02:17 2015 (r283486) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283480 2015-05-24 17:57:07Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283484 2015-05-24 18:00:14Z dchagin */ #include "opt_compat.h" Modified: head/sys/amd64/linux32/linux32_systrace_args.c ============================================================================== --- head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 18:00:29 2015 (r283485) +++ head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 18:02:17 2015 (r283486) @@ -2164,7 +2164,7 @@ systrace_args(int sysnum, void *params, uarg[1] = (intptr_t) p->events; /* struct epoll_event * */ iarg[2] = p->maxevents; /* l_int */ iarg[3] = p->timeout; /* l_int */ - uarg[4] = (intptr_t) p->mask; /* l_osigset_t * */ + uarg[4] = (intptr_t) p->mask; /* l_sigset_t * */ *n_args = 5; break; } @@ -5581,7 +5581,7 @@ systrace_entry_setargdesc(int sysnum, in p = "l_int"; break; case 4: - p = "l_osigset_t *"; + p = "l_sigset_t *"; break; default: break; Modified: head/sys/i386/linux/linux_proto.h ============================================================================== --- head/sys/i386/linux/linux_proto.h Sun May 24 18:00:29 2015 (r283485) +++ head/sys/i386/linux/linux_proto.h Sun May 24 18:02:17 2015 (r283486) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283480 2015-05-24 17:57:07Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283484 2015-05-24 18:00:14Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -1067,7 +1067,7 @@ struct linux_epoll_pwait_args { char events_l_[PADL_(struct epoll_event *)]; struct epoll_event * events; char events_r_[PADR_(struct epoll_event *)]; char maxevents_l_[PADL_(l_int)]; l_int maxevents; char maxevents_r_[PADR_(l_int)]; char timeout_l_[PADL_(l_int)]; l_int timeout; char timeout_r_[PADR_(l_int)]; - char mask_l_[PADL_(l_osigset_t *)]; l_osigset_t * mask; char mask_r_[PADR_(l_osigset_t *)]; + char mask_l_[PADL_(l_sigset_t *)]; l_sigset_t * mask; char mask_r_[PADR_(l_sigset_t *)]; }; struct linux_utimensat_args { char dfd_l_[PADL_(l_int)]; l_int dfd; char dfd_r_[PADR_(l_int)]; Modified: head/sys/i386/linux/linux_syscall.h ============================================================================== --- head/sys/i386/linux/linux_syscall.h Sun May 24 18:00:29 2015 (r283485) +++ head/sys/i386/linux/linux_syscall.h Sun May 24 18:02:17 2015 (r283486) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283480 2015-05-24 17:57:07Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283484 2015-05-24 18:00:14Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/i386/linux/linux_syscalls.c ============================================================================== --- head/sys/i386/linux/linux_syscalls.c Sun May 24 18:00:29 2015 (r283485) +++ head/sys/i386/linux/linux_syscalls.c Sun May 24 18:02:17 2015 (r283486) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283480 2015-05-24 17:57:07Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283484 2015-05-24 18:00:14Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/i386/linux/linux_sysent.c ============================================================================== --- head/sys/i386/linux/linux_sysent.c Sun May 24 18:00:29 2015 (r283485) +++ head/sys/i386/linux/linux_sysent.c Sun May 24 18:02:17 2015 (r283486) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283480 2015-05-24 17:57:07Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283484 2015-05-24 18:00:14Z dchagin */ #include Modified: head/sys/i386/linux/linux_systrace_args.c ============================================================================== --- head/sys/i386/linux/linux_systrace_args.c Sun May 24 18:00:29 2015 (r283485) +++ head/sys/i386/linux/linux_systrace_args.c Sun May 24 18:02:17 2015 (r283486) @@ -2240,7 +2240,7 @@ systrace_args(int sysnum, void *params, uarg[1] = (intptr_t) p->events; /* struct epoll_event * */ iarg[2] = p->maxevents; /* l_int */ iarg[3] = p->timeout; /* l_int */ - uarg[4] = (intptr_t) p->mask; /* l_osigset_t * */ + uarg[4] = (intptr_t) p->mask; /* l_sigset_t * */ *n_args = 5; break; } @@ -5812,7 +5812,7 @@ systrace_entry_setargdesc(int sysnum, in p = "l_int"; break; case 4: - p = "l_osigset_t *"; + p = "l_sigset_t *"; break; default: break; From owner-svn-src-all@FreeBSD.ORG Sun May 24 18:03:16 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 49718C41; Sun, 24 May 2015 18:03:16 +0000 (UTC) Received: from svn.freebsd.org (svn.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 2A93A1FE3; Sun, 24 May 2015 18:03:16 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OI3GDH041037; Sun, 24 May 2015 18:03:16 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OI3FOY041033; Sun, 24 May 2015 18:03:15 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241803.t4OI3FOY041033@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 18:03:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283487 - in head/sys: amd64/linux amd64/linux32 compat/linux i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 18:03:16 -0000 Author: dchagin Date: Sun May 24 18:03:14 2015 New Revision: 283487 URL: https://svnweb.freebsd.org/changeset/base/283487 Log: Reduce duplication between MD Linux code by moving msg related struct definitions out into the compat/linux/linux_socket.h Modified: head/sys/amd64/linux/linux.h head/sys/amd64/linux32/linux.h head/sys/compat/linux/linux_socket.h head/sys/i386/linux/linux.h Modified: head/sys/amd64/linux/linux.h ============================================================================== --- head/sys/amd64/linux/linux.h Sun May 24 18:02:17 2015 (r283486) +++ head/sys/amd64/linux/linux.h Sun May 24 18:03:14 2015 (r283487) @@ -447,22 +447,6 @@ struct l_sockaddr { char sa_data[14]; }; -struct l_msghdr { - l_uintptr_t msg_name; - l_int msg_namelen; - l_uintptr_t msg_iov; - l_size_t msg_iovlen; - l_uintptr_t msg_control; - l_size_t msg_controllen; - l_uint msg_flags; -}; - -struct l_cmsghdr { - l_size_t cmsg_len; - l_int cmsg_level; - l_int cmsg_type; -}; - struct l_ifmap { l_ulong mem_start; l_ulong mem_end; Modified: head/sys/amd64/linux32/linux.h ============================================================================== --- head/sys/amd64/linux32/linux.h Sun May 24 18:02:17 2015 (r283486) +++ head/sys/amd64/linux32/linux.h Sun May 24 18:03:14 2015 (r283487) @@ -525,22 +525,6 @@ struct l_sockaddr { char sa_data[14]; } __packed; -struct l_msghdr { - l_uintptr_t msg_name; - l_int msg_namelen; - l_uintptr_t msg_iov; - l_size_t msg_iovlen; - l_uintptr_t msg_control; - l_size_t msg_controllen; - l_uint msg_flags; -}; - -struct l_cmsghdr { - l_size_t cmsg_len; - l_int cmsg_level; - l_int cmsg_type; -}; - struct l_ifmap { l_ulong mem_start; l_ulong mem_end; Modified: head/sys/compat/linux/linux_socket.h ============================================================================== --- head/sys/compat/linux/linux_socket.h Sun May 24 18:02:17 2015 (r283486) +++ head/sys/compat/linux/linux_socket.h Sun May 24 18:03:14 2015 (r283487) @@ -55,6 +55,22 @@ #define LINUX_SCM_RIGHTS 0x01 #define LINUX_SCM_CREDENTIALS 0x02 +struct l_msghdr { + l_uintptr_t msg_name; + l_int msg_namelen; + l_uintptr_t msg_iov; + l_size_t msg_iovlen; + l_uintptr_t msg_control; + l_size_t msg_controllen; + l_uint msg_flags; +}; + +struct l_cmsghdr { + l_size_t cmsg_len; + l_int cmsg_level; + l_int cmsg_type; +}; + /* Ancilliary data object information macros */ #define LINUX_CMSG_ALIGN(len) roundup2(len, sizeof(l_ulong)) Modified: head/sys/i386/linux/linux.h ============================================================================== --- head/sys/i386/linux/linux.h Sun May 24 18:02:17 2015 (r283486) +++ head/sys/i386/linux/linux.h Sun May 24 18:03:14 2015 (r283487) @@ -504,22 +504,6 @@ struct l_sockaddr { char sa_data[14]; }; -struct l_msghdr { - l_uintptr_t msg_name; - l_int msg_namelen; - l_uintptr_t msg_iov; - l_size_t msg_iovlen; - l_uintptr_t msg_control; - l_size_t msg_controllen; - l_uint msg_flags; -}; - -struct l_cmsghdr { - l_size_t cmsg_len; - l_int cmsg_level; - l_int cmsg_type; -}; - struct l_ifmap { l_ulong mem_start; l_ulong mem_end; From owner-svn-src-all@FreeBSD.ORG Sun May 24 18:04:07 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 6C87EE6D; Sun, 24 May 2015 18:04:07 +0000 (UTC) Received: from svn.freebsd.org (svn.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 574EC1FEE; Sun, 24 May 2015 18:04:07 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OI47hl041338; Sun, 24 May 2015 18:04:07 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OI45hp041326; Sun, 24 May 2015 18:04:05 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241804.t4OI45hp041326@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 18:04:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283488 - in head/sys: amd64/linux amd64/linux32 compat/linux i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 18:04:07 -0000 Author: dchagin Date: Sun May 24 18:04:04 2015 New Revision: 283488 URL: https://svnweb.freebsd.org/changeset/base/283488 Log: Implement recvmmsg() and sendmmsg() system calls. Modified: head/sys/amd64/linux/linux_dummy.c head/sys/amd64/linux/syscalls.master head/sys/amd64/linux32/linux32_dummy.c head/sys/amd64/linux32/syscalls.master head/sys/compat/linux/linux_socket.c head/sys/compat/linux/linux_socket.h head/sys/i386/linux/linux_dummy.c head/sys/i386/linux/syscalls.master Modified: head/sys/amd64/linux/linux_dummy.c ============================================================================== --- head/sys/amd64/linux/linux_dummy.c Sun May 24 18:03:14 2015 (r283487) +++ head/sys/amd64/linux/linux_dummy.c Sun May 24 18:04:04 2015 (r283488) @@ -108,14 +108,12 @@ DUMMY(preadv); DUMMY(pwritev); DUMMY(rt_tsigqueueinfo); DUMMY(perf_event_open); -DUMMY(recvmmsg); DUMMY(fanotify_init); DUMMY(fanotify_mark); DUMMY(name_to_handle_at); DUMMY(open_by_handle_at); DUMMY(clock_adjtime); DUMMY(syncfs); -DUMMY(sendmmsg); DUMMY(setns); DUMMY(process_vm_readv); DUMMY(process_vm_writev); Modified: head/sys/amd64/linux/syscalls.master ============================================================================== --- head/sys/amd64/linux/syscalls.master Sun May 24 18:03:14 2015 (r283487) +++ head/sys/amd64/linux/syscalls.master Sun May 24 18:04:04 2015 (r283488) @@ -492,7 +492,9 @@ 296 AUE_NULL STD { int linux_pwritev(void); } 297 AUE_NULL STD { int linux_rt_tsigqueueinfo(void); } 298 AUE_NULL STD { int linux_perf_event_open(void); } -299 AUE_NULL STD { int linux_recvmmsg(void); } +299 AUE_NULL STD { int linux_recvmmsg(l_int s, \ + struct l_mmsghdr *msg, l_uint vlen, \ + l_uint flags, struct l_timespec *timeout); } 300 AUE_NULL STD { int linux_fanotify_init(void); } 301 AUE_NULL STD { int linux_fanotify_mark(void); } 302 AUE_NULL STD { int linux_prlimit64(l_pid_t pid, l_uint resource, \ @@ -501,7 +503,9 @@ 304 AUE_NULL STD { int linux_open_by_handle_at(void); } 305 AUE_NULL STD { int linux_clock_adjtime(void); } 306 AUE_NULL STD { int linux_syncfs(void); } -307 AUE_NULL STD { int linux_sendmmsg(void); } +307 AUE_NULL STD { int linux_sendmmsg(l_int s, \ + struct l_mmsghdr *msg, l_uint vlen, \ + l_uint flags); } 308 AUE_NULL STD { int linux_setns(void); } 309 AUE_NULL STD { int linux_process_vm_readv(void); } 310 AUE_NULL STD { int linux_process_vm_writev(void); } Modified: head/sys/amd64/linux32/linux32_dummy.c ============================================================================== --- head/sys/amd64/linux32/linux32_dummy.c Sun May 24 18:03:14 2015 (r283487) +++ head/sys/amd64/linux32/linux32_dummy.c Sun May 24 18:04:04 2015 (r283488) @@ -118,7 +118,6 @@ DUMMY(pwritev); DUMMY(rt_tsigqueueinfo); DUMMY(perf_event_open); /* linux 2.6.33: */ -DUMMY(recvmmsg); DUMMY(fanotify_init); DUMMY(fanotify_mark); /* later: */ @@ -126,7 +125,6 @@ DUMMY(name_to_handle_at); DUMMY(open_by_handle_at); DUMMY(clock_adjtime); DUMMY(syncfs); -DUMMY(sendmmsg); DUMMY(setns); DUMMY(process_vm_readv); DUMMY(process_vm_writev); Modified: head/sys/amd64/linux32/syscalls.master ============================================================================== --- head/sys/amd64/linux32/syscalls.master Sun May 24 18:03:14 2015 (r283487) +++ head/sys/amd64/linux32/syscalls.master Sun May 24 18:04:04 2015 (r283488) @@ -559,7 +559,9 @@ 335 AUE_NULL STD { int linux_rt_tsigqueueinfo(void); } 336 AUE_NULL STD { int linux_perf_event_open(void); } ; linux 2.6.33: -337 AUE_NULL STD { int linux_recvmmsg(void); } +337 AUE_NULL STD { int linux_recvmmsg(l_int s, \ + struct l_mmsghdr *msg, l_uint vlen, \ + l_uint flags, struct l_timespec *timeout); } 338 AUE_NULL STD { int linux_fanotify_init(void); } 339 AUE_NULL STD { int linux_fanotify_mark(void); } ; linux 2.6.36: @@ -572,7 +574,9 @@ 342 AUE_NULL STD { int linux_open_by_handle_at(void); } 343 AUE_NULL STD { int linux_clock_adjtime(void); } 344 AUE_NULL STD { int linux_syncfs(void); } -345 AUE_NULL STD { int linux_sendmmsg(void); } +345 AUE_NULL STD { int linux_sendmmsg(l_int s, \ + struct l_mmsghdr *msg, l_uint vlen, \ + l_uint flags); } 346 AUE_NULL STD { int linux_setns(void); } 347 AUE_NULL STD { int linux_process_vm_readv(void); } 348 AUE_NULL STD { int linux_process_vm_writev(void); } Modified: head/sys/compat/linux/linux_socket.c ============================================================================== --- head/sys/compat/linux/linux_socket.c Sun May 24 18:03:14 2015 (r283487) +++ head/sys/compat/linux/linux_socket.c Sun May 24 18:04:04 2015 (r283488) @@ -72,9 +72,14 @@ __FBSDID("$FreeBSD$"); #endif #include #include +#include #include static int linux_to_bsd_domain(int); +static int linux_sendmsg_common(struct thread *, l_int, struct l_msghdr *, + l_uint); +static int linux_recvmsg_common(struct thread *, l_int, struct l_msghdr *, + l_uint, struct msghdr *); /* * Reads a linux sockaddr and does any necessary translation. @@ -1073,8 +1078,9 @@ linux_recvfrom(struct thread *td, struct return (error); } -int -linux_sendmsg(struct thread *td, struct linux_sendmsg_args *args) +static int +linux_sendmsg_common(struct thread *td, l_int s, struct l_msghdr *msghdr, + l_uint flags) { struct cmsghdr *cmsg; struct cmsgcred cmcred; @@ -1090,8 +1096,8 @@ linux_sendmsg(struct thread *td, struct void *data; int error; - error = copyin(PTRIN(args->msg), &linux_msg, sizeof(linux_msg)); - if (error) + error = copyin(msghdr, &linux_msg, sizeof(linux_msg)); + if (error != 0) return (error); /* @@ -1105,7 +1111,7 @@ linux_sendmsg(struct thread *td, struct linux_msg.msg_control = PTROUT(NULL); error = linux_to_bsd_msghdr(&msg, &linux_msg); - if (error) + if (error != 0) return (error); #ifdef COMPAT_LINUX32 @@ -1114,21 +1120,21 @@ linux_sendmsg(struct thread *td, struct #else error = copyiniov(msg.msg_iov, msg.msg_iovlen, &iov, EMSGSIZE); #endif - if (error) + if (error != 0) return (error); control = NULL; cmsg = NULL; if ((ptr_cmsg = LINUX_CMSG_FIRSTHDR(&linux_msg)) != NULL) { - error = kern_getsockname(td, args->s, &sa, &datalen); - if (error) + error = kern_getsockname(td, s, &sa, &datalen); + if (error != 0) goto bad; sa_family = sa->sa_family; free(sa, M_SONAME); error = ENOBUFS; - cmsg = malloc(CMSG_HDRSZ, M_LINUX, M_WAITOK | M_ZERO); + cmsg = malloc(CMSG_HDRSZ, M_LINUX, M_WAITOK|M_ZERO); control = m_get(M_WAITOK, MT_CONTROL); if (control == NULL) goto bad; @@ -1136,7 +1142,7 @@ linux_sendmsg(struct thread *td, struct do { error = copyin(ptr_cmsg, &linux_cmsg, sizeof(struct l_cmsghdr)); - if (error) + if (error != 0) goto bad; error = EINVAL; @@ -1200,8 +1206,7 @@ linux_sendmsg(struct thread *td, struct msg.msg_iov = iov; msg.msg_flags = 0; - error = linux_sendit(td, args->s, &msg, args->flags, control, - UIO_USERSPACE); + error = linux_sendit(td, s, &msg, flags, control, UIO_USERSPACE); bad: free(iov, M_IOV); @@ -1211,11 +1216,49 @@ bad: } int -linux_recvmsg(struct thread *td, struct linux_recvmsg_args *args) +linux_sendmsg(struct thread *td, struct linux_sendmsg_args *args) +{ + + return (linux_sendmsg_common(td, args->s, PTRIN(args->msg), + args->flags)); +} + +int +linux_sendmmsg(struct thread *td, struct linux_sendmmsg_args *args) +{ + struct l_mmsghdr *msg; + l_uint retval; + int error, datagrams; + + if (args->vlen > UIO_MAXIOV) + args->vlen = UIO_MAXIOV; + + msg = PTRIN(args->msg); + datagrams = 0; + while (datagrams < args->vlen) { + error = linux_sendmsg_common(td, args->s, &msg->msg_hdr, + args->flags); + if (error != 0) + break; + + retval = td->td_retval[0]; + error = copyout(&retval, &msg->msg_len, sizeof(msg->msg_len)); + if (error != 0) + break; + ++msg; + ++datagrams; + } + if (error == 0) + td->td_retval[0] = datagrams; + return (error); +} + +static int +linux_recvmsg_common(struct thread *td, l_int s, struct l_msghdr *msghdr, + l_uint flags, struct msghdr *msg) { struct cmsghdr *cm; struct cmsgcred *cmcred; - struct msghdr msg; struct l_cmsghdr *linux_cmsg = NULL; struct l_ucred linux_ucred; socklen_t datalen, outlen; @@ -1227,51 +1270,51 @@ linux_recvmsg(struct thread *td, struct void *data; int error, i, fd, fds, *fdp; - error = copyin(PTRIN(args->msg), &linux_msg, sizeof(linux_msg)); - if (error) + error = copyin(msghdr, &linux_msg, sizeof(linux_msg)); + if (error != 0) return (error); - error = linux_to_bsd_msghdr(&msg, &linux_msg); - if (error) + error = linux_to_bsd_msghdr(msg, &linux_msg); + if (error != 0) return (error); #ifdef COMPAT_LINUX32 - error = linux32_copyiniov(PTRIN(msg.msg_iov), msg.msg_iovlen, + error = linux32_copyiniov(PTRIN(msg->msg_iov), msg->msg_iovlen, &iov, EMSGSIZE); #else - error = copyiniov(msg.msg_iov, msg.msg_iovlen, &iov, EMSGSIZE); + error = copyiniov(msg->msg_iov, msg->msg_iovlen, &iov, EMSGSIZE); #endif - if (error) + if (error != 0) return (error); - if (msg.msg_name) { - error = linux_to_bsd_sockaddr((struct sockaddr *)msg.msg_name, - msg.msg_namelen); - if (error) + if (msg->msg_name) { + error = linux_to_bsd_sockaddr((struct sockaddr *)msg->msg_name, + msg->msg_namelen); + if (error != 0) goto bad; } - uiov = msg.msg_iov; - msg.msg_iov = iov; - controlp = (msg.msg_control != NULL) ? &control : NULL; - error = kern_recvit(td, args->s, &msg, UIO_USERSPACE, controlp); - msg.msg_iov = uiov; - if (error) + uiov = msg->msg_iov; + msg->msg_iov = iov; + controlp = (msg->msg_control != NULL) ? &control : NULL; + error = kern_recvit(td, s, msg, UIO_USERSPACE, controlp); + msg->msg_iov = uiov; + if (error != 0) goto bad; - error = bsd_to_linux_msghdr(&msg, &linux_msg); - if (error) + error = bsd_to_linux_msghdr(msg, &linux_msg); + if (error != 0) goto bad; if (linux_msg.msg_name) { error = bsd_to_linux_sockaddr((struct sockaddr *) PTRIN(linux_msg.msg_name)); - if (error) + if (error != 0) goto bad; } if (linux_msg.msg_name && linux_msg.msg_namelen > 2) { error = linux_sa_put(PTRIN(linux_msg.msg_name)); - if (error) + if (error != 0) goto bad; } @@ -1281,10 +1324,10 @@ linux_recvmsg(struct thread *td, struct if (control) { linux_cmsg = malloc(L_CMSG_HDRSZ, M_LINUX, M_WAITOK | M_ZERO); - msg.msg_control = mtod(control, struct cmsghdr *); - msg.msg_controllen = control->m_len; + msg->msg_control = mtod(control, struct cmsghdr *); + msg->msg_controllen = control->m_len; - cm = CMSG_FIRSTHDR(&msg); + cm = CMSG_FIRSTHDR(msg); while (cm != NULL) { linux_cmsg->cmsg_type = @@ -1304,7 +1347,7 @@ linux_recvmsg(struct thread *td, struct switch (cm->cmsg_type) { case SCM_RIGHTS: - if (args->flags & LINUX_MSG_CMSG_CLOEXEC) { + if (flags & LINUX_MSG_CMSG_CLOEXEC) { fds = datalen / sizeof(int); fdp = data; for (i = 0; i < fds; i++) { @@ -1361,13 +1404,13 @@ linux_recvmsg(struct thread *td, struct outbuf += LINUX_CMSG_ALIGN(datalen); outlen += LINUX_CMSG_LEN(datalen); - cm = CMSG_NXTHDR(&msg, cm); + cm = CMSG_NXTHDR(msg, cm); } } out: linux_msg.msg_controllen = outlen; - error = copyout(&linux_msg, PTRIN(args->msg), sizeof(linux_msg)); + error = copyout(&linux_msg, msghdr, sizeof(linux_msg)); bad: free(iov, M_IOV); @@ -1378,6 +1421,75 @@ bad: } int +linux_recvmsg(struct thread *td, struct linux_recvmsg_args *args) +{ + struct msghdr bsd_msg; + + return (linux_recvmsg_common(td, args->s, PTRIN(args->msg), + args->flags, &bsd_msg)); +} + +int +linux_recvmmsg(struct thread *td, struct linux_recvmmsg_args *args) +{ + struct l_mmsghdr *msg; + struct msghdr bsd_msg; + struct l_timespec lts; + struct timespec ts, tts; + l_uint retval; + int error, datagrams; + + if (args->timeout) { + error = copyin(args->timeout, <s, sizeof(struct l_timespec)); + if (error != 0) + return (error); + error = linux_to_native_timespec(&ts, <s); + if (error != 0) + return (error); + getnanotime(&tts); + timespecadd(&tts, &ts); + } + + msg = PTRIN(args->msg); + datagrams = 0; + while (datagrams < args->vlen) { + error = linux_recvmsg_common(td, args->s, &msg->msg_hdr, + args->flags & ~LINUX_MSG_WAITFORONE, &bsd_msg); + if (error != 0) + break; + + retval = td->td_retval[0]; + error = copyout(&retval, &msg->msg_len, sizeof(msg->msg_len)); + if (error != 0) + break; + ++msg; + ++datagrams; + + /* + * MSG_WAITFORONE turns on MSG_DONTWAIT after one packet. + */ + if (args->flags & LINUX_MSG_WAITFORONE) + args->flags |= LINUX_MSG_DONTWAIT; + + /* + * See BUGS section of recvmmsg(2). + */ + if (args->timeout) { + getnanotime(&ts); + timespecsub(&ts, &tts); + if (!timespecisset(&ts) || ts.tv_sec > 0) + break; + } + /* Out of band data, return right away. */ + if (bsd_msg.msg_flags & MSG_OOB) + break; + } + if (error == 0) + td->td_retval[0] = datagrams; + return (error); +} + +int linux_shutdown(struct thread *td, struct linux_shutdown_args *args) { struct shutdown_args /* { @@ -1555,7 +1667,8 @@ static const unsigned char lxs_args[] = LINUX_AL(6) /* recvfrom */, LINUX_AL(2) /* shutdown */, LINUX_AL(5) /* setsockopt */, LINUX_AL(5) /* getsockopt */, LINUX_AL(3) /* sendmsg */, LINUX_AL(3) /* recvmsg */, - LINUX_AL(4) /* accept4 */ + LINUX_AL(4) /* accept4 */, LINUX_AL(5) /* recvmmsg */, + LINUX_AL(4) /* sendmmsg */ }; #define LINUX_AL_SIZE sizeof(lxs_args) / sizeof(lxs_args[0]) - 1 @@ -1611,6 +1724,10 @@ linux_socketcall(struct thread *td, stru return (linux_recvmsg(td, arg)); case LINUX_ACCEPT4: return (linux_accept4(td, arg)); + case LINUX_RECVMMSG: + return (linux_recvmmsg(td, arg)); + case LINUX_SENDMMSG: + return (linux_sendmmsg(td, arg)); } uprintf("LINUX: 'socket' typ=%d not implemented\n", args->what); Modified: head/sys/compat/linux/linux_socket.h ============================================================================== --- head/sys/compat/linux/linux_socket.h Sun May 24 18:03:14 2015 (r283487) +++ head/sys/compat/linux/linux_socket.h Sun May 24 18:04:04 2015 (r283488) @@ -48,6 +48,7 @@ #define LINUX_MSG_RST 0x1000 #define LINUX_MSG_ERRQUEUE 0x2000 #define LINUX_MSG_NOSIGNAL 0x4000 +#define LINUX_MSG_WAITFORONE 0x10000 #define LINUX_MSG_CMSG_CLOEXEC 0x40000000 /* Socket-level control message types */ @@ -65,6 +66,12 @@ struct l_msghdr { l_uint msg_flags; }; +struct l_mmsghdr { + struct l_msghdr msg_hdr; + l_uint msg_len; + +}; + struct l_cmsghdr { l_size_t cmsg_len; l_int cmsg_level; @@ -279,6 +286,8 @@ int linux_getsockopt(struct thread *td, #define LINUX_SENDMSG 16 #define LINUX_RECVMSG 17 #define LINUX_ACCEPT4 18 +#define LINUX_RECVMMSG 19 +#define LINUX_SENDMMSG 20 /* Socket options */ #define LINUX_IP_TOS 1 Modified: head/sys/i386/linux/linux_dummy.c ============================================================================== --- head/sys/i386/linux/linux_dummy.c Sun May 24 18:03:14 2015 (r283487) +++ head/sys/i386/linux/linux_dummy.c Sun May 24 18:04:04 2015 (r283488) @@ -114,7 +114,6 @@ DUMMY(pwritev); DUMMY(rt_tsigqueueinfo); DUMMY(perf_event_open); /* linux 2.6.33: */ -DUMMY(recvmmsg); DUMMY(fanotify_init); DUMMY(fanotify_mark); /* later: */ @@ -122,7 +121,6 @@ DUMMY(name_to_handle_at); DUMMY(open_by_handle_at); DUMMY(clock_adjtime); DUMMY(syncfs); -DUMMY(sendmmsg); DUMMY(setns); DUMMY(process_vm_readv); DUMMY(process_vm_writev); Modified: head/sys/i386/linux/syscalls.master ============================================================================== --- head/sys/i386/linux/syscalls.master Sun May 24 18:03:14 2015 (r283487) +++ head/sys/i386/linux/syscalls.master Sun May 24 18:04:04 2015 (r283488) @@ -567,7 +567,9 @@ 335 AUE_NULL STD { int linux_rt_tsigqueueinfo(void); } 336 AUE_NULL STD { int linux_perf_event_open(void); } ; linux 2.6.33: -337 AUE_NULL STD { int linux_recvmmsg(void); } +337 AUE_NULL STD { int linux_recvmmsg(l_int s, \ + struct l_mmsghdr *msg, l_uint vlen, \ + l_uint flags, struct l_timespec *timeout); } 338 AUE_NULL STD { int linux_fanotify_init(void); } 339 AUE_NULL STD { int linux_fanotify_mark(void); } ; linux 2.6.36: @@ -580,7 +582,9 @@ 342 AUE_NULL STD { int linux_open_by_handle_at(void); } 343 AUE_NULL STD { int linux_clock_adjtime(void); } 344 AUE_NULL STD { int linux_syncfs(void); } -345 AUE_NULL STD { int linux_sendmmsg(void); } +345 AUE_NULL STD { int linux_sendmmsg(l_int s, \ + struct l_mmsghdr *msg, l_uint vlen, \ + l_uint flags); } 346 AUE_NULL STD { int linux_setns(void); } 347 AUE_NULL STD { int linux_process_vm_readv(void); } 348 AUE_NULL STD { int linux_process_vm_writev(void); } From owner-svn-src-all@FreeBSD.ORG Sun May 24 18:05:26 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 25F42FCC; Sun, 24 May 2015 18:05:26 +0000 (UTC) Received: from svn.freebsd.org (svn.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 126D41FFF; Sun, 24 May 2015 18:05:26 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OI5QWf041647; Sun, 24 May 2015 18:05:26 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OI5LD7041619; Sun, 24 May 2015 18:05:21 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241805.t4OI5LD7041619@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 18:05:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283489 - in head/sys: amd64/linux amd64/linux32 i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 18:05:26 -0000 Author: dchagin Date: Sun May 24 18:05:21 2015 New Revision: 283489 URL: https://svnweb.freebsd.org/changeset/base/283489 Log: Regen for r283488. Modified: head/sys/amd64/linux/linux_proto.h head/sys/amd64/linux/linux_syscall.h head/sys/amd64/linux/linux_syscalls.c head/sys/amd64/linux/linux_sysent.c head/sys/amd64/linux/linux_systrace_args.c head/sys/amd64/linux32/linux32_proto.h head/sys/amd64/linux32/linux32_syscall.h head/sys/amd64/linux32/linux32_syscalls.c head/sys/amd64/linux32/linux32_sysent.c head/sys/amd64/linux32/linux32_systrace_args.c head/sys/i386/linux/linux_proto.h head/sys/i386/linux/linux_syscall.h head/sys/i386/linux/linux_syscalls.c head/sys/i386/linux/linux_sysent.c head/sys/i386/linux/linux_systrace_args.c Modified: head/sys/amd64/linux/linux_proto.h ============================================================================== --- head/sys/amd64/linux/linux_proto.h Sun May 24 18:04:04 2015 (r283488) +++ head/sys/amd64/linux/linux_proto.h Sun May 24 18:05:21 2015 (r283489) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283480 2015-05-24 17:57:07Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283488 2015-05-24 18:04:04Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -1059,7 +1059,11 @@ struct linux_perf_event_open_args { register_t dummy; }; struct linux_recvmmsg_args { - register_t dummy; + char s_l_[PADL_(l_int)]; l_int s; char s_r_[PADR_(l_int)]; + char msg_l_[PADL_(struct l_mmsghdr *)]; struct l_mmsghdr * msg; char msg_r_[PADR_(struct l_mmsghdr *)]; + char vlen_l_[PADL_(l_uint)]; l_uint vlen; char vlen_r_[PADR_(l_uint)]; + char flags_l_[PADL_(l_uint)]; l_uint flags; char flags_r_[PADR_(l_uint)]; + char timeout_l_[PADL_(struct l_timespec *)]; struct l_timespec * timeout; char timeout_r_[PADR_(struct l_timespec *)]; }; struct linux_fanotify_init_args { register_t dummy; @@ -1086,7 +1090,10 @@ struct linux_syncfs_args { register_t dummy; }; struct linux_sendmmsg_args { - register_t dummy; + char s_l_[PADL_(l_int)]; l_int s; char s_r_[PADR_(l_int)]; + char msg_l_[PADL_(struct l_mmsghdr *)]; struct l_mmsghdr * msg; char msg_r_[PADR_(struct l_mmsghdr *)]; + char vlen_l_[PADL_(l_uint)]; l_uint vlen; char vlen_r_[PADR_(l_uint)]; + char flags_l_[PADL_(l_uint)]; l_uint flags; char flags_r_[PADR_(l_uint)]; }; struct linux_setns_args { register_t dummy; Modified: head/sys/amd64/linux/linux_syscall.h ============================================================================== --- head/sys/amd64/linux/linux_syscall.h Sun May 24 18:04:04 2015 (r283488) +++ head/sys/amd64/linux/linux_syscall.h Sun May 24 18:05:21 2015 (r283489) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283480 2015-05-24 17:57:07Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283488 2015-05-24 18:04:04Z dchagin */ #define LINUX_SYS_read 0 Modified: head/sys/amd64/linux/linux_syscalls.c ============================================================================== --- head/sys/amd64/linux/linux_syscalls.c Sun May 24 18:04:04 2015 (r283488) +++ head/sys/amd64/linux/linux_syscalls.c Sun May 24 18:05:21 2015 (r283489) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283480 2015-05-24 17:57:07Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283488 2015-05-24 18:04:04Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/amd64/linux/linux_sysent.c ============================================================================== --- head/sys/amd64/linux/linux_sysent.c Sun May 24 18:04:04 2015 (r283488) +++ head/sys/amd64/linux/linux_sysent.c Sun May 24 18:05:21 2015 (r283489) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283480 2015-05-24 17:57:07Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283488 2015-05-24 18:04:04Z dchagin */ #include @@ -317,7 +317,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_pwritev, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 296 = linux_pwritev */ { 0, (sy_call_t *)linux_rt_tsigqueueinfo, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 297 = linux_rt_tsigqueueinfo */ { 0, (sy_call_t *)linux_perf_event_open, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 298 = linux_perf_event_open */ - { 0, (sy_call_t *)linux_recvmmsg, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 299 = linux_recvmmsg */ + { AS(linux_recvmmsg_args), (sy_call_t *)linux_recvmmsg, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 299 = linux_recvmmsg */ { 0, (sy_call_t *)linux_fanotify_init, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 300 = linux_fanotify_init */ { 0, (sy_call_t *)linux_fanotify_mark, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 301 = linux_fanotify_mark */ { AS(linux_prlimit64_args), (sy_call_t *)linux_prlimit64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 302 = linux_prlimit64 */ @@ -325,7 +325,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_open_by_handle_at, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 304 = linux_open_by_handle_at */ { 0, (sy_call_t *)linux_clock_adjtime, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 305 = linux_clock_adjtime */ { 0, (sy_call_t *)linux_syncfs, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 306 = linux_syncfs */ - { 0, (sy_call_t *)linux_sendmmsg, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 307 = linux_sendmmsg */ + { AS(linux_sendmmsg_args), (sy_call_t *)linux_sendmmsg, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 307 = linux_sendmmsg */ { 0, (sy_call_t *)linux_setns, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 308 = linux_setns */ { 0, (sy_call_t *)linux_process_vm_readv, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 309 = linux_process_vm_readv */ { 0, (sy_call_t *)linux_process_vm_writev, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 310 = linux_process_vm_writev */ Modified: head/sys/amd64/linux/linux_systrace_args.c ============================================================================== --- head/sys/amd64/linux/linux_systrace_args.c Sun May 24 18:04:04 2015 (r283488) +++ head/sys/amd64/linux/linux_systrace_args.c Sun May 24 18:05:21 2015 (r283489) @@ -2182,7 +2182,13 @@ systrace_args(int sysnum, void *params, } /* linux_recvmmsg */ case 299: { - *n_args = 0; + struct linux_recvmmsg_args *p = params; + iarg[0] = p->s; /* l_int */ + uarg[1] = (intptr_t) p->msg; /* struct l_mmsghdr * */ + iarg[2] = p->vlen; /* l_uint */ + iarg[3] = p->flags; /* l_uint */ + uarg[4] = (intptr_t) p->timeout; /* struct l_timespec * */ + *n_args = 5; break; } /* linux_fanotify_init */ @@ -2227,7 +2233,12 @@ systrace_args(int sysnum, void *params, } /* linux_sendmmsg */ case 307: { - *n_args = 0; + struct linux_sendmmsg_args *p = params; + iarg[0] = p->s; /* l_int */ + uarg[1] = (intptr_t) p->msg; /* struct l_mmsghdr * */ + iarg[2] = p->vlen; /* l_uint */ + iarg[3] = p->flags; /* l_uint */ + *n_args = 4; break; } /* linux_setns */ @@ -5531,6 +5542,25 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_recvmmsg */ case 299: + switch(ndx) { + case 0: + p = "l_int"; + break; + case 1: + p = "struct l_mmsghdr *"; + break; + case 2: + p = "l_uint"; + break; + case 3: + p = "l_uint"; + break; + case 4: + p = "struct l_timespec *"; + break; + default: + break; + }; break; /* linux_fanotify_init */ case 300: @@ -5571,6 +5601,22 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_sendmmsg */ case 307: + switch(ndx) { + case 0: + p = "l_int"; + break; + case 1: + p = "struct l_mmsghdr *"; + break; + case 2: + p = "l_uint"; + break; + case 3: + p = "l_uint"; + break; + default: + break; + }; break; /* linux_setns */ case 308: @@ -6784,6 +6830,9 @@ systrace_return_setargdesc(int sysnum, i case 298: /* linux_recvmmsg */ case 299: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_fanotify_init */ case 300: /* linux_fanotify_mark */ @@ -6803,6 +6852,9 @@ systrace_return_setargdesc(int sysnum, i case 306: /* linux_sendmmsg */ case 307: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_setns */ case 308: /* linux_process_vm_readv */ Modified: head/sys/amd64/linux32/linux32_proto.h ============================================================================== --- head/sys/amd64/linux32/linux32_proto.h Sun May 24 18:04:04 2015 (r283488) +++ head/sys/amd64/linux32/linux32_proto.h Sun May 24 18:05:21 2015 (r283489) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283484 2015-05-24 18:00:14Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283488 2015-05-24 18:04:04Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -1113,7 +1113,11 @@ struct linux_perf_event_open_args { register_t dummy; }; struct linux_recvmmsg_args { - register_t dummy; + char s_l_[PADL_(l_int)]; l_int s; char s_r_[PADR_(l_int)]; + char msg_l_[PADL_(struct l_mmsghdr *)]; struct l_mmsghdr * msg; char msg_r_[PADR_(struct l_mmsghdr *)]; + char vlen_l_[PADL_(l_uint)]; l_uint vlen; char vlen_r_[PADR_(l_uint)]; + char flags_l_[PADL_(l_uint)]; l_uint flags; char flags_r_[PADR_(l_uint)]; + char timeout_l_[PADL_(struct l_timespec *)]; struct l_timespec * timeout; char timeout_r_[PADR_(struct l_timespec *)]; }; struct linux_fanotify_init_args { register_t dummy; @@ -1140,7 +1144,10 @@ struct linux_syncfs_args { register_t dummy; }; struct linux_sendmmsg_args { - register_t dummy; + char s_l_[PADL_(l_int)]; l_int s; char s_r_[PADR_(l_int)]; + char msg_l_[PADL_(struct l_mmsghdr *)]; struct l_mmsghdr * msg; char msg_r_[PADR_(struct l_mmsghdr *)]; + char vlen_l_[PADL_(l_uint)]; l_uint vlen; char vlen_r_[PADR_(l_uint)]; + char flags_l_[PADL_(l_uint)]; l_uint flags; char flags_r_[PADR_(l_uint)]; }; struct linux_setns_args { register_t dummy; Modified: head/sys/amd64/linux32/linux32_syscall.h ============================================================================== --- head/sys/amd64/linux32/linux32_syscall.h Sun May 24 18:04:04 2015 (r283488) +++ head/sys/amd64/linux32/linux32_syscall.h Sun May 24 18:05:21 2015 (r283489) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283484 2015-05-24 18:00:14Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283488 2015-05-24 18:04:04Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/amd64/linux32/linux32_syscalls.c ============================================================================== --- head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 18:04:04 2015 (r283488) +++ head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 18:05:21 2015 (r283489) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283484 2015-05-24 18:00:14Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283488 2015-05-24 18:04:04Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/amd64/linux32/linux32_sysent.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysent.c Sun May 24 18:04:04 2015 (r283488) +++ head/sys/amd64/linux32/linux32_sysent.c Sun May 24 18:05:21 2015 (r283489) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283484 2015-05-24 18:00:14Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283488 2015-05-24 18:04:04Z dchagin */ #include "opt_compat.h" @@ -356,7 +356,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_pwritev, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 334 = linux_pwritev */ { 0, (sy_call_t *)linux_rt_tsigqueueinfo, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 335 = linux_rt_tsigqueueinfo */ { 0, (sy_call_t *)linux_perf_event_open, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 336 = linux_perf_event_open */ - { 0, (sy_call_t *)linux_recvmmsg, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 337 = linux_recvmmsg */ + { AS(linux_recvmmsg_args), (sy_call_t *)linux_recvmmsg, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 337 = linux_recvmmsg */ { 0, (sy_call_t *)linux_fanotify_init, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 338 = linux_fanotify_init */ { 0, (sy_call_t *)linux_fanotify_mark, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 339 = linux_fanotify_mark */ { AS(linux_prlimit64_args), (sy_call_t *)linux_prlimit64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 340 = linux_prlimit64 */ @@ -364,7 +364,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_open_by_handle_at, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 342 = linux_open_by_handle_at */ { 0, (sy_call_t *)linux_clock_adjtime, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 343 = linux_clock_adjtime */ { 0, (sy_call_t *)linux_syncfs, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 344 = linux_syncfs */ - { 0, (sy_call_t *)linux_sendmmsg, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 345 = linux_sendmmsg */ + { AS(linux_sendmmsg_args), (sy_call_t *)linux_sendmmsg, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 345 = linux_sendmmsg */ { 0, (sy_call_t *)linux_setns, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 346 = linux_setns */ { 0, (sy_call_t *)linux_process_vm_readv, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 347 = linux_process_vm_readv */ { 0, (sy_call_t *)linux_process_vm_writev, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 348 = linux_process_vm_writev */ Modified: head/sys/amd64/linux32/linux32_systrace_args.c ============================================================================== --- head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 18:04:04 2015 (r283488) +++ head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 18:05:21 2015 (r283489) @@ -2279,7 +2279,13 @@ systrace_args(int sysnum, void *params, } /* linux_recvmmsg */ case 337: { - *n_args = 0; + struct linux_recvmmsg_args *p = params; + iarg[0] = p->s; /* l_int */ + uarg[1] = (intptr_t) p->msg; /* struct l_mmsghdr * */ + iarg[2] = p->vlen; /* l_uint */ + iarg[3] = p->flags; /* l_uint */ + uarg[4] = (intptr_t) p->timeout; /* struct l_timespec * */ + *n_args = 5; break; } /* linux_fanotify_init */ @@ -2324,7 +2330,12 @@ systrace_args(int sysnum, void *params, } /* linux_sendmmsg */ case 345: { - *n_args = 0; + struct linux_sendmmsg_args *p = params; + iarg[0] = p->s; /* l_int */ + uarg[1] = (intptr_t) p->msg; /* struct l_mmsghdr * */ + iarg[2] = p->vlen; /* l_uint */ + iarg[3] = p->flags; /* l_uint */ + *n_args = 4; break; } /* linux_setns */ @@ -5719,6 +5730,25 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_recvmmsg */ case 337: + switch(ndx) { + case 0: + p = "l_int"; + break; + case 1: + p = "struct l_mmsghdr *"; + break; + case 2: + p = "l_uint"; + break; + case 3: + p = "l_uint"; + break; + case 4: + p = "struct l_timespec *"; + break; + default: + break; + }; break; /* linux_fanotify_init */ case 338: @@ -5759,6 +5789,22 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_sendmmsg */ case 345: + switch(ndx) { + case 0: + p = "l_int"; + break; + case 1: + p = "struct l_mmsghdr *"; + break; + case 2: + p = "l_uint"; + break; + case 3: + p = "l_uint"; + break; + default: + break; + }; break; /* linux_setns */ case 346: @@ -7042,6 +7088,9 @@ systrace_return_setargdesc(int sysnum, i case 336: /* linux_recvmmsg */ case 337: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_fanotify_init */ case 338: /* linux_fanotify_mark */ @@ -7061,6 +7110,9 @@ systrace_return_setargdesc(int sysnum, i case 344: /* linux_sendmmsg */ case 345: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_setns */ case 346: /* linux_process_vm_readv */ Modified: head/sys/i386/linux/linux_proto.h ============================================================================== --- head/sys/i386/linux/linux_proto.h Sun May 24 18:04:04 2015 (r283488) +++ head/sys/i386/linux/linux_proto.h Sun May 24 18:05:21 2015 (r283489) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283484 2015-05-24 18:00:14Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283488 2015-05-24 18:04:04Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -1131,7 +1131,11 @@ struct linux_perf_event_open_args { register_t dummy; }; struct linux_recvmmsg_args { - register_t dummy; + char s_l_[PADL_(l_int)]; l_int s; char s_r_[PADR_(l_int)]; + char msg_l_[PADL_(struct l_mmsghdr *)]; struct l_mmsghdr * msg; char msg_r_[PADR_(struct l_mmsghdr *)]; + char vlen_l_[PADL_(l_uint)]; l_uint vlen; char vlen_r_[PADR_(l_uint)]; + char flags_l_[PADL_(l_uint)]; l_uint flags; char flags_r_[PADR_(l_uint)]; + char timeout_l_[PADL_(struct l_timespec *)]; struct l_timespec * timeout; char timeout_r_[PADR_(struct l_timespec *)]; }; struct linux_fanotify_init_args { register_t dummy; @@ -1158,7 +1162,10 @@ struct linux_syncfs_args { register_t dummy; }; struct linux_sendmmsg_args { - register_t dummy; + char s_l_[PADL_(l_int)]; l_int s; char s_r_[PADR_(l_int)]; + char msg_l_[PADL_(struct l_mmsghdr *)]; struct l_mmsghdr * msg; char msg_r_[PADR_(struct l_mmsghdr *)]; + char vlen_l_[PADL_(l_uint)]; l_uint vlen; char vlen_r_[PADR_(l_uint)]; + char flags_l_[PADL_(l_uint)]; l_uint flags; char flags_r_[PADR_(l_uint)]; }; struct linux_setns_args { register_t dummy; Modified: head/sys/i386/linux/linux_syscall.h ============================================================================== --- head/sys/i386/linux/linux_syscall.h Sun May 24 18:04:04 2015 (r283488) +++ head/sys/i386/linux/linux_syscall.h Sun May 24 18:05:21 2015 (r283489) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283484 2015-05-24 18:00:14Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283488 2015-05-24 18:04:04Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/i386/linux/linux_syscalls.c ============================================================================== --- head/sys/i386/linux/linux_syscalls.c Sun May 24 18:04:04 2015 (r283488) +++ head/sys/i386/linux/linux_syscalls.c Sun May 24 18:05:21 2015 (r283489) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283484 2015-05-24 18:00:14Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283488 2015-05-24 18:04:04Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/i386/linux/linux_sysent.c ============================================================================== --- head/sys/i386/linux/linux_sysent.c Sun May 24 18:04:04 2015 (r283488) +++ head/sys/i386/linux/linux_sysent.c Sun May 24 18:05:21 2015 (r283489) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283484 2015-05-24 18:00:14Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283488 2015-05-24 18:04:04Z dchagin */ #include @@ -355,7 +355,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_pwritev, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 334 = linux_pwritev */ { 0, (sy_call_t *)linux_rt_tsigqueueinfo, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 335 = linux_rt_tsigqueueinfo */ { 0, (sy_call_t *)linux_perf_event_open, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 336 = linux_perf_event_open */ - { 0, (sy_call_t *)linux_recvmmsg, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 337 = linux_recvmmsg */ + { AS(linux_recvmmsg_args), (sy_call_t *)linux_recvmmsg, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 337 = linux_recvmmsg */ { 0, (sy_call_t *)linux_fanotify_init, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 338 = linux_fanotify_init */ { 0, (sy_call_t *)linux_fanotify_mark, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 339 = linux_fanotify_mark */ { AS(linux_prlimit64_args), (sy_call_t *)linux_prlimit64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 340 = linux_prlimit64 */ @@ -363,7 +363,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_open_by_handle_at, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 342 = linux_open_by_handle_at */ { 0, (sy_call_t *)linux_clock_adjtime, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 343 = linux_clock_adjtime */ { 0, (sy_call_t *)linux_syncfs, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 344 = linux_syncfs */ - { 0, (sy_call_t *)linux_sendmmsg, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 345 = linux_sendmmsg */ + { AS(linux_sendmmsg_args), (sy_call_t *)linux_sendmmsg, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 345 = linux_sendmmsg */ { 0, (sy_call_t *)linux_setns, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 346 = linux_setns */ { 0, (sy_call_t *)linux_process_vm_readv, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 347 = linux_process_vm_readv */ { 0, (sy_call_t *)linux_process_vm_writev, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 348 = linux_process_vm_writev */ Modified: head/sys/i386/linux/linux_systrace_args.c ============================================================================== --- head/sys/i386/linux/linux_systrace_args.c Sun May 24 18:04:04 2015 (r283488) +++ head/sys/i386/linux/linux_systrace_args.c Sun May 24 18:05:21 2015 (r283489) @@ -2355,7 +2355,13 @@ systrace_args(int sysnum, void *params, } /* linux_recvmmsg */ case 337: { - *n_args = 0; + struct linux_recvmmsg_args *p = params; + iarg[0] = p->s; /* l_int */ + uarg[1] = (intptr_t) p->msg; /* struct l_mmsghdr * */ + iarg[2] = p->vlen; /* l_uint */ + iarg[3] = p->flags; /* l_uint */ + uarg[4] = (intptr_t) p->timeout; /* struct l_timespec * */ + *n_args = 5; break; } /* linux_fanotify_init */ @@ -2400,7 +2406,12 @@ systrace_args(int sysnum, void *params, } /* linux_sendmmsg */ case 345: { - *n_args = 0; + struct linux_sendmmsg_args *p = params; + iarg[0] = p->s; /* l_int */ + uarg[1] = (intptr_t) p->msg; /* struct l_mmsghdr * */ + iarg[2] = p->vlen; /* l_uint */ + iarg[3] = p->flags; /* l_uint */ + *n_args = 4; break; } /* linux_setns */ @@ -5950,6 +5961,25 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_recvmmsg */ case 337: + switch(ndx) { + case 0: + p = "l_int"; + break; + case 1: + p = "struct l_mmsghdr *"; + break; + case 2: + p = "l_uint"; + break; + case 3: + p = "l_uint"; + break; + case 4: + p = "struct l_timespec *"; + break; + default: + break; + }; break; /* linux_fanotify_init */ case 338: @@ -5990,6 +6020,22 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_sendmmsg */ case 345: + switch(ndx) { + case 0: + p = "l_int"; + break; + case 1: + p = "struct l_mmsghdr *"; + break; + case 2: + p = "l_uint"; + break; + case 3: + p = "l_uint"; + break; + default: + break; + }; break; /* linux_setns */ case 346: @@ -7320,6 +7366,9 @@ systrace_return_setargdesc(int sysnum, i case 336: /* linux_recvmmsg */ case 337: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_fanotify_init */ case 338: /* linux_fanotify_mark */ @@ -7339,6 +7388,9 @@ systrace_return_setargdesc(int sysnum, i case 344: /* linux_sendmmsg */ case 345: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_setns */ case 346: /* linux_process_vm_readv */ From owner-svn-src-all@FreeBSD.ORG Sun May 24 18:06:13 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 944B31B2; Sun, 24 May 2015 18:06:13 +0000 (UTC) Received: from svn.freebsd.org (svn.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 7533B100E; Sun, 24 May 2015 18:06:13 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OI6Duu041817; Sun, 24 May 2015 18:06:13 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OI6Da0041816; Sun, 24 May 2015 18:06:13 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241806.t4OI6Da0041816@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 18:06:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283490 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 18:06:13 -0000 Author: dchagin Date: Sun May 24 18:06:12 2015 New Revision: 283490 URL: https://svnweb.freebsd.org/changeset/base/283490 Log: Since FreeBSD supports SOCK_CLOEXEC & SOCK_NONBLOCK options remove its emulation via fcntl call from Linuxulator. Modified: head/sys/compat/linux/linux_socket.c Modified: head/sys/compat/linux/linux_socket.c ============================================================================== --- head/sys/compat/linux/linux_socket.c Sun May 24 18:05:21 2015 (r283489) +++ head/sys/compat/linux/linux_socket.c Sun May 24 18:06:12 2015 (r283490) @@ -80,6 +80,7 @@ static int linux_sendmsg_common(struct t l_uint); static int linux_recvmsg_common(struct thread *, l_int, struct l_msghdr *, l_uint, struct msghdr *); +static int linux_set_socket_flags(int, int *); /* * Reads a linux sockaddr and does any necessary translation. @@ -534,20 +535,15 @@ bsd_to_linux_msghdr(const struct msghdr } static int -linux_set_socket_flags(struct thread *td, int s, int flags) +linux_set_socket_flags(int lflags, int *flags) { - int error; - if (flags & LINUX_SOCK_NONBLOCK) { - error = kern_fcntl(td, s, F_SETFL, O_NONBLOCK); - if (error) - return (error); - } - if (flags & LINUX_SOCK_CLOEXEC) { - error = kern_fcntl(td, s, F_SETFD, FD_CLOEXEC); - if (error) - return (error); - } + if (lflags & ~(LINUX_SOCK_CLOEXEC | LINUX_SOCK_NONBLOCK)) + return (EINVAL); + if (lflags & LINUX_SOCK_NONBLOCK) + *flags |= SOCK_NONBLOCK; + if (lflags & LINUX_SOCK_CLOEXEC) + *flags |= SOCK_CLOEXEC; return (0); } @@ -649,15 +645,16 @@ linux_socket(struct thread *td, struct l int type; int protocol; } */ bsd_args; - int retval_socket, socket_flags; + int retval_socket; bsd_args.protocol = args->protocol; - socket_flags = args->type & ~LINUX_SOCK_TYPE_MASK; - if (socket_flags & ~(LINUX_SOCK_CLOEXEC | LINUX_SOCK_NONBLOCK)) - return (EINVAL); bsd_args.type = args->type & LINUX_SOCK_TYPE_MASK; if (bsd_args.type < 0 || bsd_args.type > LINUX_SOCK_MAX) return (EINVAL); + retval_socket = linux_set_socket_flags(args->type & ~LINUX_SOCK_TYPE_MASK, + &bsd_args.type); + if (retval_socket != 0) + return (retval_socket); bsd_args.domain = linux_to_bsd_domain(args->domain); if (bsd_args.domain == -1) return (EAFNOSUPPORT); @@ -666,13 +663,6 @@ linux_socket(struct thread *td, struct l if (retval_socket) return (retval_socket); - retval_socket = linux_set_socket_flags(td, td->td_retval[0], - socket_flags); - if (retval_socket) { - (void)kern_close(td, td->td_retval[0]); - goto out; - } - if (bsd_args.type == SOCK_RAW && (bsd_args.protocol == IPPROTO_RAW || bsd_args.protocol == 0) && bsd_args.domain == PF_INET) { @@ -701,7 +691,6 @@ linux_socket(struct thread *td, struct l } #endif -out: return (retval_socket); } @@ -784,43 +773,30 @@ static int linux_accept_common(struct thread *td, int s, l_uintptr_t addr, l_uintptr_t namelen, int flags) { - struct accept_args /* { + struct accept4_args /* { int s; struct sockaddr * __restrict name; socklen_t * __restrict anamelen; + int flags; } */ bsd_args; int error; - if (flags & ~(LINUX_SOCK_CLOEXEC | LINUX_SOCK_NONBLOCK)) - return (EINVAL); - bsd_args.s = s; /* XXX: */ bsd_args.name = (struct sockaddr * __restrict)PTRIN(addr); bsd_args.anamelen = PTRIN(namelen);/* XXX */ - error = sys_accept(td, &bsd_args); + error = linux_set_socket_flags(flags, &bsd_args.flags); + if (error != 0) + return (error); + error = sys_accept4(td, &bsd_args); bsd_to_linux_sockaddr((struct sockaddr *)bsd_args.name); if (error) { if (error == EFAULT && namelen != sizeof(struct sockaddr_in)) return (EINVAL); return (error); } - - /* - * linux appears not to copy flags from the parent socket to the - * accepted one, so we must clear the flags in the new descriptor - * and apply the requested flags. - */ - error = kern_fcntl(td, td->td_retval[0], F_SETFL, 0); - if (error) - goto out; - error = linux_set_socket_flags(td, td->td_retval[0], flags); - if (error) - goto out; if (addr) error = linux_sa_put(PTRIN(addr)); - -out: if (error) { (void)kern_close(td, td->td_retval[0]); td->td_retval[0] = 0; @@ -900,20 +876,18 @@ linux_socketpair(struct thread *td, stru int protocol; int *rsv; } */ bsd_args; - int error, socket_flags; - int sv[2]; + int error; bsd_args.domain = linux_to_bsd_domain(args->domain); if (bsd_args.domain != PF_LOCAL) return (EAFNOSUPPORT); - - socket_flags = args->type & ~LINUX_SOCK_TYPE_MASK; - if (socket_flags & ~(LINUX_SOCK_CLOEXEC | LINUX_SOCK_NONBLOCK)) - return (EINVAL); bsd_args.type = args->type & LINUX_SOCK_TYPE_MASK; if (bsd_args.type < 0 || bsd_args.type > LINUX_SOCK_MAX) return (EINVAL); - + error = linux_set_socket_flags(args->type & ~LINUX_SOCK_TYPE_MASK, + &bsd_args.type); + if (error != 0) + return (error); if (args->protocol != 0 && args->protocol != PF_UNIX) /* @@ -926,25 +900,7 @@ linux_socketpair(struct thread *td, stru else bsd_args.protocol = 0; bsd_args.rsv = (int *)PTRIN(args->rsv); - error = kern_socketpair(td, bsd_args.domain, bsd_args.type, - bsd_args.protocol, sv); - if (error) - return (error); - error = linux_set_socket_flags(td, sv[0], socket_flags); - if (error) - goto out; - error = linux_set_socket_flags(td, sv[1], socket_flags); - if (error) - goto out; - - error = copyout(sv, bsd_args.rsv, 2 * sizeof(int)); - -out: - if (error) { - (void)kern_close(td, sv[0]); - (void)kern_close(td, sv[1]); - } - return (error); + return (sys_socketpair(td, &bsd_args)); } #if defined(__i386__) || (defined(__amd64__) && defined(COMPAT_LINUX32)) From owner-svn-src-all@FreeBSD.ORG Sun May 24 18:06:47 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A82CC304; Sun, 24 May 2015 18:06:47 +0000 (UTC) Received: from svn.freebsd.org (svn.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 964C4101A; Sun, 24 May 2015 18:06:47 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OI6lbV041930; Sun, 24 May 2015 18:06:47 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OI6lpP041929; Sun, 24 May 2015 18:06:47 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241806.t4OI6lpP041929@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 18:06:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283491 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 18:06:47 -0000 Author: dchagin Date: Sun May 24 18:06:46 2015 New Revision: 283491 URL: https://svnweb.freebsd.org/changeset/base/283491 Log: Properly check tv_nsec value. The tv_nsec field can also be one of the special value UTIME_NOW or UTIME_OMIT. Modified: head/sys/compat/linux/linux_misc.c Modified: head/sys/compat/linux/linux_misc.c ============================================================================== --- head/sys/compat/linux/linux_misc.c Sun May 24 18:06:12 2015 (r283490) +++ head/sys/compat/linux/linux_misc.c Sun May 24 18:06:46 2015 (r283491) @@ -138,6 +138,9 @@ struct l_pselect6arg { l_size_t ss_len; }; +static int linux_utimensat_nsec_valid(l_long); + + int linux_sysinfo(struct thread *td, struct linux_sysinfo_args *args) { @@ -824,6 +827,17 @@ linux_utimes(struct thread *td, struct l return (error); } +static int +linux_utimensat_nsec_valid(l_long nsec) +{ + + if (nsec == LINUX_UTIME_OMIT || nsec == LINUX_UTIME_NOW) + return (0); + if (nsec >= 0 && nsec <= 999999999) + return (0); + return (1); +} + int linux_utimensat(struct thread *td, struct linux_utimensat_args *args) { @@ -847,8 +861,8 @@ linux_utimensat(struct thread *td, struc if (error != 0) return (error); - if (l_times[0].tv_nsec > 999999999 || - l_times[1].tv_nsec > 999999999) + if (linux_utimensat_nsec_valid(l_times[0].tv_nsec) != 0 || + linux_utimensat_nsec_valid(l_times[1].tv_nsec) != 0) return (EINVAL); times[0].tv_sec = l_times[0].tv_sec; From owner-svn-src-all@FreeBSD.ORG Sun May 24 18:08:04 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7E6DC473; Sun, 24 May 2015 18:08:04 +0000 (UTC) Received: from svn.freebsd.org (svn.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 5F616102E; Sun, 24 May 2015 18:08:04 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OI8468042172; Sun, 24 May 2015 18:08:04 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OI82Sv042163; Sun, 24 May 2015 18:08:02 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241808.t4OI82Sv042163@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 18:08:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283492 - in head/sys: amd64/linux amd64/linux32 compat/linux i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 18:08:04 -0000 Author: dchagin Date: Sun May 24 18:08:01 2015 New Revision: 283492 URL: https://svnweb.freebsd.org/changeset/base/283492 Log: Implement Linux specific syncfs() system call. Modified: head/sys/amd64/linux/linux_dummy.c head/sys/amd64/linux/syscalls.master head/sys/amd64/linux32/linux32_dummy.c head/sys/amd64/linux32/syscalls.master head/sys/compat/linux/linux_stats.c head/sys/i386/linux/linux_dummy.c head/sys/i386/linux/syscalls.master Modified: head/sys/amd64/linux/linux_dummy.c ============================================================================== --- head/sys/amd64/linux/linux_dummy.c Sun May 24 18:06:46 2015 (r283491) +++ head/sys/amd64/linux/linux_dummy.c Sun May 24 18:08:01 2015 (r283492) @@ -113,7 +113,6 @@ DUMMY(fanotify_mark); DUMMY(name_to_handle_at); DUMMY(open_by_handle_at); DUMMY(clock_adjtime); -DUMMY(syncfs); DUMMY(setns); DUMMY(process_vm_readv); DUMMY(process_vm_writev); Modified: head/sys/amd64/linux/syscalls.master ============================================================================== --- head/sys/amd64/linux/syscalls.master Sun May 24 18:06:46 2015 (r283491) +++ head/sys/amd64/linux/syscalls.master Sun May 24 18:08:01 2015 (r283492) @@ -502,7 +502,7 @@ 303 AUE_NULL STD { int linux_name_to_handle_at(void); } 304 AUE_NULL STD { int linux_open_by_handle_at(void); } 305 AUE_NULL STD { int linux_clock_adjtime(void); } -306 AUE_NULL STD { int linux_syncfs(void); } +306 AUE_SYNC STD { int linux_syncfs(l_int fd); } 307 AUE_NULL STD { int linux_sendmmsg(l_int s, \ struct l_mmsghdr *msg, l_uint vlen, \ l_uint flags); } Modified: head/sys/amd64/linux32/linux32_dummy.c ============================================================================== --- head/sys/amd64/linux32/linux32_dummy.c Sun May 24 18:06:46 2015 (r283491) +++ head/sys/amd64/linux32/linux32_dummy.c Sun May 24 18:08:01 2015 (r283492) @@ -124,7 +124,6 @@ DUMMY(fanotify_mark); DUMMY(name_to_handle_at); DUMMY(open_by_handle_at); DUMMY(clock_adjtime); -DUMMY(syncfs); DUMMY(setns); DUMMY(process_vm_readv); DUMMY(process_vm_writev); Modified: head/sys/amd64/linux32/syscalls.master ============================================================================== --- head/sys/amd64/linux32/syscalls.master Sun May 24 18:06:46 2015 (r283491) +++ head/sys/amd64/linux32/syscalls.master Sun May 24 18:08:01 2015 (r283492) @@ -573,7 +573,7 @@ 341 AUE_NULL STD { int linux_name_to_handle_at(void); } 342 AUE_NULL STD { int linux_open_by_handle_at(void); } 343 AUE_NULL STD { int linux_clock_adjtime(void); } -344 AUE_NULL STD { int linux_syncfs(void); } +344 AUE_SYNC STD { int linux_syncfs(l_int fd); } 345 AUE_NULL STD { int linux_sendmmsg(l_int s, \ struct l_mmsghdr *msg, l_uint vlen, \ l_uint flags); } Modified: head/sys/compat/linux/linux_stats.c ============================================================================== --- head/sys/compat/linux/linux_stats.c Sun May 24 18:06:46 2015 (r283491) +++ head/sys/compat/linux/linux_stats.c Sun May 24 18:08:01 2015 (r283492) @@ -32,6 +32,7 @@ __FBSDID("$FreeBSD$"); #include "opt_compat.h" #include +#include #include #include #include @@ -653,3 +654,43 @@ linux_newfstatat(struct thread *td, stru } #endif /* __i386__ || (__amd64__ && COMPAT_LINUX32) */ + +int +linux_syncfs(struct thread *td, struct linux_syncfs_args *args) +{ + cap_rights_t rights; + struct mount *mp; + struct vnode *vp; + int error, save; + + error = fgetvp(td, args->fd, cap_rights_init(&rights, CAP_FSYNC), &vp); + if (error != 0) + /* + * Linux syncfs() returns only EBADF, however fgetvp() + * can return EINVAL in case of file descriptor does + * not represent a vnode. XXX. + */ + return (error); + + mp = vp->v_mount; + mtx_lock(&mountlist_mtx); + error = vfs_busy(mp, MBF_MNTLSTLOCK); + if (error != 0) { + /* See comment above. */ + mtx_unlock(&mountlist_mtx); + goto out; + } + if ((mp->mnt_flag & MNT_RDONLY) == 0 && + vn_start_write(NULL, &mp, V_NOWAIT) == 0) { + save = curthread_pflags_set(TDP_SYNCIO); + vfs_msync(mp, MNT_NOWAIT); + VFS_SYNC(mp, MNT_NOWAIT); + curthread_pflags_restore(save); + vn_finished_write(mp); + } + vfs_unbusy(mp); + + out: + vrele(vp); + return (error); +} Modified: head/sys/i386/linux/linux_dummy.c ============================================================================== --- head/sys/i386/linux/linux_dummy.c Sun May 24 18:06:46 2015 (r283491) +++ head/sys/i386/linux/linux_dummy.c Sun May 24 18:08:01 2015 (r283492) @@ -120,7 +120,6 @@ DUMMY(fanotify_mark); DUMMY(name_to_handle_at); DUMMY(open_by_handle_at); DUMMY(clock_adjtime); -DUMMY(syncfs); DUMMY(setns); DUMMY(process_vm_readv); DUMMY(process_vm_writev); Modified: head/sys/i386/linux/syscalls.master ============================================================================== --- head/sys/i386/linux/syscalls.master Sun May 24 18:06:46 2015 (r283491) +++ head/sys/i386/linux/syscalls.master Sun May 24 18:08:01 2015 (r283492) @@ -581,7 +581,7 @@ 341 AUE_NULL STD { int linux_name_to_handle_at(void); } 342 AUE_NULL STD { int linux_open_by_handle_at(void); } 343 AUE_NULL STD { int linux_clock_adjtime(void); } -344 AUE_NULL STD { int linux_syncfs(void); } +344 AUE_SYNC STD { int linux_syncfs(l_int fd); } 345 AUE_NULL STD { int linux_sendmmsg(l_int s, \ struct l_mmsghdr *msg, l_uint vlen, \ l_uint flags); } From owner-svn-src-all@FreeBSD.ORG Sun May 24 18:09:06 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0EFED5D0; Sun, 24 May 2015 18:09:06 +0000 (UTC) Received: from svn.freebsd.org (svn.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 EF4891040; Sun, 24 May 2015 18:09:05 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OI95oh042373; Sun, 24 May 2015 18:09:05 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OI911U042353; Sun, 24 May 2015 18:09:01 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241809.t4OI911U042353@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 18:09:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283493 - in head/sys: amd64/linux amd64/linux32 i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 18:09:06 -0000 Author: dchagin Date: Sun May 24 18:09:01 2015 New Revision: 283493 URL: https://svnweb.freebsd.org/changeset/base/283493 Log: Regen for r283492. Modified: head/sys/amd64/linux/linux_proto.h head/sys/amd64/linux/linux_syscall.h head/sys/amd64/linux/linux_syscalls.c head/sys/amd64/linux/linux_sysent.c head/sys/amd64/linux/linux_systrace_args.c head/sys/amd64/linux32/linux32_proto.h head/sys/amd64/linux32/linux32_syscall.h head/sys/amd64/linux32/linux32_syscalls.c head/sys/amd64/linux32/linux32_sysent.c head/sys/amd64/linux32/linux32_systrace_args.c head/sys/i386/linux/linux_proto.h head/sys/i386/linux/linux_syscall.h head/sys/i386/linux/linux_syscalls.c head/sys/i386/linux/linux_sysent.c head/sys/i386/linux/linux_systrace_args.c Modified: head/sys/amd64/linux/linux_proto.h ============================================================================== --- head/sys/amd64/linux/linux_proto.h Sun May 24 18:08:01 2015 (r283492) +++ head/sys/amd64/linux/linux_proto.h Sun May 24 18:09:01 2015 (r283493) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283488 2015-05-24 18:04:04Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283492 2015-05-24 18:08:01Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -1087,7 +1087,7 @@ struct linux_clock_adjtime_args { register_t dummy; }; struct linux_syncfs_args { - register_t dummy; + char fd_l_[PADL_(l_int)]; l_int fd; char fd_r_[PADR_(l_int)]; }; struct linux_sendmmsg_args { char s_l_[PADL_(l_int)]; l_int s; char s_r_[PADR_(l_int)]; @@ -1648,7 +1648,7 @@ int linux_finit_module(struct thread *, #define LINUX_SYS_AUE_linux_name_to_handle_at AUE_NULL #define LINUX_SYS_AUE_linux_open_by_handle_at AUE_NULL #define LINUX_SYS_AUE_linux_clock_adjtime AUE_NULL -#define LINUX_SYS_AUE_linux_syncfs AUE_NULL +#define LINUX_SYS_AUE_linux_syncfs AUE_SYNC #define LINUX_SYS_AUE_linux_sendmmsg AUE_NULL #define LINUX_SYS_AUE_linux_setns AUE_NULL #define LINUX_SYS_AUE_linux_process_vm_readv AUE_NULL Modified: head/sys/amd64/linux/linux_syscall.h ============================================================================== --- head/sys/amd64/linux/linux_syscall.h Sun May 24 18:08:01 2015 (r283492) +++ head/sys/amd64/linux/linux_syscall.h Sun May 24 18:09:01 2015 (r283493) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283488 2015-05-24 18:04:04Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283492 2015-05-24 18:08:01Z dchagin */ #define LINUX_SYS_read 0 Modified: head/sys/amd64/linux/linux_syscalls.c ============================================================================== --- head/sys/amd64/linux/linux_syscalls.c Sun May 24 18:08:01 2015 (r283492) +++ head/sys/amd64/linux/linux_syscalls.c Sun May 24 18:09:01 2015 (r283493) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283488 2015-05-24 18:04:04Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283492 2015-05-24 18:08:01Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/amd64/linux/linux_sysent.c ============================================================================== --- head/sys/amd64/linux/linux_sysent.c Sun May 24 18:08:01 2015 (r283492) +++ head/sys/amd64/linux/linux_sysent.c Sun May 24 18:09:01 2015 (r283493) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283488 2015-05-24 18:04:04Z dchagin + * created from FreeBSD: head/sys/amd64/linux/syscalls.master 283492 2015-05-24 18:08:01Z dchagin */ #include @@ -324,7 +324,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_name_to_handle_at, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 303 = linux_name_to_handle_at */ { 0, (sy_call_t *)linux_open_by_handle_at, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 304 = linux_open_by_handle_at */ { 0, (sy_call_t *)linux_clock_adjtime, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 305 = linux_clock_adjtime */ - { 0, (sy_call_t *)linux_syncfs, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 306 = linux_syncfs */ + { AS(linux_syncfs_args), (sy_call_t *)linux_syncfs, AUE_SYNC, NULL, 0, 0, 0, SY_THR_STATIC }, /* 306 = linux_syncfs */ { AS(linux_sendmmsg_args), (sy_call_t *)linux_sendmmsg, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 307 = linux_sendmmsg */ { 0, (sy_call_t *)linux_setns, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 308 = linux_setns */ { 0, (sy_call_t *)linux_process_vm_readv, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 309 = linux_process_vm_readv */ Modified: head/sys/amd64/linux/linux_systrace_args.c ============================================================================== --- head/sys/amd64/linux/linux_systrace_args.c Sun May 24 18:08:01 2015 (r283492) +++ head/sys/amd64/linux/linux_systrace_args.c Sun May 24 18:09:01 2015 (r283493) @@ -2228,7 +2228,9 @@ systrace_args(int sysnum, void *params, } /* linux_syncfs */ case 306: { - *n_args = 0; + struct linux_syncfs_args *p = params; + iarg[0] = p->fd; /* l_int */ + *n_args = 1; break; } /* linux_sendmmsg */ @@ -5598,6 +5600,13 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_syncfs */ case 306: + switch(ndx) { + case 0: + p = "l_int"; + break; + default: + break; + }; break; /* linux_sendmmsg */ case 307: @@ -6850,6 +6859,9 @@ systrace_return_setargdesc(int sysnum, i case 305: /* linux_syncfs */ case 306: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_sendmmsg */ case 307: if (ndx == 0 || ndx == 1) Modified: head/sys/amd64/linux32/linux32_proto.h ============================================================================== --- head/sys/amd64/linux32/linux32_proto.h Sun May 24 18:08:01 2015 (r283492) +++ head/sys/amd64/linux32/linux32_proto.h Sun May 24 18:09:01 2015 (r283493) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283488 2015-05-24 18:04:04Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283492 2015-05-24 18:08:01Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -1141,7 +1141,7 @@ struct linux_clock_adjtime_args { register_t dummy; }; struct linux_syncfs_args { - register_t dummy; + char fd_l_[PADL_(l_int)]; l_int fd; char fd_r_[PADR_(l_int)]; }; struct linux_sendmmsg_args { char s_l_[PADL_(l_int)]; l_int s; char s_r_[PADR_(l_int)]; @@ -1736,7 +1736,7 @@ int linux_process_vm_writev(struct threa #define LINUX_SYS_AUE_linux_name_to_handle_at AUE_NULL #define LINUX_SYS_AUE_linux_open_by_handle_at AUE_NULL #define LINUX_SYS_AUE_linux_clock_adjtime AUE_NULL -#define LINUX_SYS_AUE_linux_syncfs AUE_NULL +#define LINUX_SYS_AUE_linux_syncfs AUE_SYNC #define LINUX_SYS_AUE_linux_sendmmsg AUE_NULL #define LINUX_SYS_AUE_linux_setns AUE_NULL #define LINUX_SYS_AUE_linux_process_vm_readv AUE_NULL Modified: head/sys/amd64/linux32/linux32_syscall.h ============================================================================== --- head/sys/amd64/linux32/linux32_syscall.h Sun May 24 18:08:01 2015 (r283492) +++ head/sys/amd64/linux32/linux32_syscall.h Sun May 24 18:09:01 2015 (r283493) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283488 2015-05-24 18:04:04Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283492 2015-05-24 18:08:01Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/amd64/linux32/linux32_syscalls.c ============================================================================== --- head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 18:08:01 2015 (r283492) +++ head/sys/amd64/linux32/linux32_syscalls.c Sun May 24 18:09:01 2015 (r283493) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283488 2015-05-24 18:04:04Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283492 2015-05-24 18:08:01Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/amd64/linux32/linux32_sysent.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysent.c Sun May 24 18:08:01 2015 (r283492) +++ head/sys/amd64/linux32/linux32_sysent.c Sun May 24 18:09:01 2015 (r283493) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283488 2015-05-24 18:04:04Z dchagin + * created from FreeBSD: head/sys/amd64/linux32/syscalls.master 283492 2015-05-24 18:08:01Z dchagin */ #include "opt_compat.h" @@ -363,7 +363,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_name_to_handle_at, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 341 = linux_name_to_handle_at */ { 0, (sy_call_t *)linux_open_by_handle_at, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 342 = linux_open_by_handle_at */ { 0, (sy_call_t *)linux_clock_adjtime, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 343 = linux_clock_adjtime */ - { 0, (sy_call_t *)linux_syncfs, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 344 = linux_syncfs */ + { AS(linux_syncfs_args), (sy_call_t *)linux_syncfs, AUE_SYNC, NULL, 0, 0, 0, SY_THR_STATIC }, /* 344 = linux_syncfs */ { AS(linux_sendmmsg_args), (sy_call_t *)linux_sendmmsg, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 345 = linux_sendmmsg */ { 0, (sy_call_t *)linux_setns, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 346 = linux_setns */ { 0, (sy_call_t *)linux_process_vm_readv, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 347 = linux_process_vm_readv */ Modified: head/sys/amd64/linux32/linux32_systrace_args.c ============================================================================== --- head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 18:08:01 2015 (r283492) +++ head/sys/amd64/linux32/linux32_systrace_args.c Sun May 24 18:09:01 2015 (r283493) @@ -2325,7 +2325,9 @@ systrace_args(int sysnum, void *params, } /* linux_syncfs */ case 344: { - *n_args = 0; + struct linux_syncfs_args *p = params; + iarg[0] = p->fd; /* l_int */ + *n_args = 1; break; } /* linux_sendmmsg */ @@ -5786,6 +5788,13 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_syncfs */ case 344: + switch(ndx) { + case 0: + p = "l_int"; + break; + default: + break; + }; break; /* linux_sendmmsg */ case 345: @@ -7108,6 +7117,9 @@ systrace_return_setargdesc(int sysnum, i case 343: /* linux_syncfs */ case 344: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_sendmmsg */ case 345: if (ndx == 0 || ndx == 1) Modified: head/sys/i386/linux/linux_proto.h ============================================================================== --- head/sys/i386/linux/linux_proto.h Sun May 24 18:08:01 2015 (r283492) +++ head/sys/i386/linux/linux_proto.h Sun May 24 18:09:01 2015 (r283493) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283488 2015-05-24 18:04:04Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283492 2015-05-24 18:08:01Z dchagin */ #ifndef _LINUX_SYSPROTO_H_ @@ -1159,7 +1159,7 @@ struct linux_clock_adjtime_args { register_t dummy; }; struct linux_syncfs_args { - register_t dummy; + char fd_l_[PADL_(l_int)]; l_int fd; char fd_r_[PADR_(l_int)]; }; struct linux_sendmmsg_args { char s_l_[PADL_(l_int)]; l_int s; char s_r_[PADR_(l_int)]; @@ -1758,7 +1758,7 @@ int linux_process_vm_writev(struct threa #define LINUX_SYS_AUE_linux_name_to_handle_at AUE_NULL #define LINUX_SYS_AUE_linux_open_by_handle_at AUE_NULL #define LINUX_SYS_AUE_linux_clock_adjtime AUE_NULL -#define LINUX_SYS_AUE_linux_syncfs AUE_NULL +#define LINUX_SYS_AUE_linux_syncfs AUE_SYNC #define LINUX_SYS_AUE_linux_sendmmsg AUE_NULL #define LINUX_SYS_AUE_linux_setns AUE_NULL #define LINUX_SYS_AUE_linux_process_vm_readv AUE_NULL Modified: head/sys/i386/linux/linux_syscall.h ============================================================================== --- head/sys/i386/linux/linux_syscall.h Sun May 24 18:08:01 2015 (r283492) +++ head/sys/i386/linux/linux_syscall.h Sun May 24 18:09:01 2015 (r283493) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283488 2015-05-24 18:04:04Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283492 2015-05-24 18:08:01Z dchagin */ #define LINUX_SYS_linux_exit 1 Modified: head/sys/i386/linux/linux_syscalls.c ============================================================================== --- head/sys/i386/linux/linux_syscalls.c Sun May 24 18:08:01 2015 (r283492) +++ head/sys/i386/linux/linux_syscalls.c Sun May 24 18:09:01 2015 (r283493) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283488 2015-05-24 18:04:04Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283492 2015-05-24 18:08:01Z dchagin */ const char *linux_syscallnames[] = { Modified: head/sys/i386/linux/linux_sysent.c ============================================================================== --- head/sys/i386/linux/linux_sysent.c Sun May 24 18:08:01 2015 (r283492) +++ head/sys/i386/linux/linux_sysent.c Sun May 24 18:09:01 2015 (r283493) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/i386/linux/syscalls.master 283488 2015-05-24 18:04:04Z dchagin + * created from FreeBSD: head/sys/i386/linux/syscalls.master 283492 2015-05-24 18:08:01Z dchagin */ #include @@ -362,7 +362,7 @@ struct sysent linux_sysent[] = { { 0, (sy_call_t *)linux_name_to_handle_at, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 341 = linux_name_to_handle_at */ { 0, (sy_call_t *)linux_open_by_handle_at, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 342 = linux_open_by_handle_at */ { 0, (sy_call_t *)linux_clock_adjtime, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 343 = linux_clock_adjtime */ - { 0, (sy_call_t *)linux_syncfs, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 344 = linux_syncfs */ + { AS(linux_syncfs_args), (sy_call_t *)linux_syncfs, AUE_SYNC, NULL, 0, 0, 0, SY_THR_STATIC }, /* 344 = linux_syncfs */ { AS(linux_sendmmsg_args), (sy_call_t *)linux_sendmmsg, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 345 = linux_sendmmsg */ { 0, (sy_call_t *)linux_setns, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 346 = linux_setns */ { 0, (sy_call_t *)linux_process_vm_readv, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 347 = linux_process_vm_readv */ Modified: head/sys/i386/linux/linux_systrace_args.c ============================================================================== --- head/sys/i386/linux/linux_systrace_args.c Sun May 24 18:08:01 2015 (r283492) +++ head/sys/i386/linux/linux_systrace_args.c Sun May 24 18:09:01 2015 (r283493) @@ -2401,7 +2401,9 @@ systrace_args(int sysnum, void *params, } /* linux_syncfs */ case 344: { - *n_args = 0; + struct linux_syncfs_args *p = params; + iarg[0] = p->fd; /* l_int */ + *n_args = 1; break; } /* linux_sendmmsg */ @@ -6017,6 +6019,13 @@ systrace_entry_setargdesc(int sysnum, in break; /* linux_syncfs */ case 344: + switch(ndx) { + case 0: + p = "l_int"; + break; + default: + break; + }; break; /* linux_sendmmsg */ case 345: @@ -7386,6 +7395,9 @@ systrace_return_setargdesc(int sysnum, i case 343: /* linux_syncfs */ case 344: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_sendmmsg */ case 345: if (ndx == 0 || ndx == 1) From owner-svn-src-all@FreeBSD.ORG Sun May 24 18:10:08 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 755BE72B; Sun, 24 May 2015 18:10:08 +0000 (UTC) Received: from svn.freebsd.org (svn.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 63E541049; Sun, 24 May 2015 18:10:08 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OIA8JH042637; Sun, 24 May 2015 18:10:08 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OIA8hm042636; Sun, 24 May 2015 18:10:08 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241810.t4OIA8hm042636@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 18:10:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283494 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 18:10:08 -0000 Author: dchagin Date: Sun May 24 18:10:07 2015 New Revision: 283494 URL: https://svnweb.freebsd.org/changeset/base/283494 Log: Fix an mbuf(9) leak in sendmsg() under failure condition and remove unneeded check for failed M_WAITOK allocation. Found by: Brainy Code Scanner Reported by: Maxime Villard Modified: head/sys/compat/linux/linux_socket.c Modified: head/sys/compat/linux/linux_socket.c ============================================================================== --- head/sys/compat/linux/linux_socket.c Sun May 24 18:09:01 2015 (r283493) +++ head/sys/compat/linux/linux_socket.c Sun May 24 18:10:07 2015 (r283494) @@ -1092,8 +1092,6 @@ linux_sendmsg_common(struct thread *td, error = ENOBUFS; cmsg = malloc(CMSG_HDRSZ, M_LINUX, M_WAITOK|M_ZERO); control = m_get(M_WAITOK, MT_CONTROL); - if (control == NULL) - goto bad; do { error = copyin(ptr_cmsg, &linux_cmsg, @@ -1165,6 +1163,7 @@ linux_sendmsg_common(struct thread *td, error = linux_sendit(td, s, &msg, flags, control, UIO_USERSPACE); bad: + m_freem(control); free(iov, M_IOV); if (cmsg) free(cmsg, M_LINUX); From owner-svn-src-all@FreeBSD.ORG Sun May 24 18:11:23 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5B7708B2; Sun, 24 May 2015 18:11:23 +0000 (UTC) Received: from svn.freebsd.org (svn.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 49811106B; Sun, 24 May 2015 18:11:23 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OIBNPT044032; Sun, 24 May 2015 18:11:23 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OIBMIZ044027; Sun, 24 May 2015 18:11:22 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241811.t4OIBMIZ044027@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 18:11:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283495 - in head/sys: fs/pseudofs modules/pseudofs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 18:11:23 -0000 Author: dchagin Date: Sun May 24 18:11:22 2015 New Revision: 283495 URL: https://svnweb.freebsd.org/changeset/base/283495 Log: Hide vfs.pfs.trace variable if it is not used. Modified: head/sys/fs/pseudofs/pseudofs.c head/sys/modules/pseudofs/Makefile Modified: head/sys/fs/pseudofs/pseudofs.c ============================================================================== --- head/sys/fs/pseudofs/pseudofs.c Sun May 24 18:10:07 2015 (r283494) +++ head/sys/fs/pseudofs/pseudofs.c Sun May 24 18:11:22 2015 (r283495) @@ -52,9 +52,11 @@ static MALLOC_DEFINE(M_PFSNODES, "pfs_no SYSCTL_NODE(_vfs, OID_AUTO, pfs, CTLFLAG_RW, 0, "pseudofs"); +#ifdef PSEUDOFS_TRACE int pfs_trace; SYSCTL_INT(_vfs_pfs, OID_AUTO, trace, CTLFLAG_RW, &pfs_trace, 0, "enable tracing of pseudofs vnode operations"); +#endif #if PFS_FSNAMELEN != MFSNAMELEN #error "PFS_FSNAMELEN is not equal to MFSNAMELEN" Modified: head/sys/modules/pseudofs/Makefile ============================================================================== --- head/sys/modules/pseudofs/Makefile Sun May 24 18:10:07 2015 (r283494) +++ head/sys/modules/pseudofs/Makefile Sun May 24 18:11:22 2015 (r283495) @@ -23,4 +23,10 @@ EXPORT_SYMS= pfs_mount \ pfs_enable \ pfs_destroy +.if !defined(KERNBUILDDIR) +.if defined(PSEUDOFS_TRACE) +CFLAGS+=-DPSEUDOFS_TRACE +.endif +.endif + .include From owner-svn-src-all@FreeBSD.ORG Sun May 24 18:12:05 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 87B3BA35; Sun, 24 May 2015 18:12:05 +0000 (UTC) Received: from svn.freebsd.org (svn.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 75B4B114F; Sun, 24 May 2015 18:12:05 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OIC5Gw046587; Sun, 24 May 2015 18:12:05 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OIC5so046585; Sun, 24 May 2015 18:12:05 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241812.t4OIC5so046585@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 18:12:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283496 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 18:12:05 -0000 Author: dchagin Date: Sun May 24 18:12:04 2015 New Revision: 283496 URL: https://svnweb.freebsd.org/changeset/base/283496 Log: The latest cp tool is trying to use the btrfs clone operation that is implemented via ioctl interface. First of all return ENOTSUP for this operation as a cp fallback to usual method in that case. Secondly, do not print out the message about unimplemented operation. Modified: head/sys/compat/linux/linux_ioctl.c head/sys/compat/linux/linux_ioctl.h Modified: head/sys/compat/linux/linux_ioctl.c ============================================================================== --- head/sys/compat/linux/linux_ioctl.c Sun May 24 18:11:22 2015 (r283495) +++ head/sys/compat/linux/linux_ioctl.c Sun May 24 18:12:04 2015 (r283496) @@ -3596,9 +3596,16 @@ linux_ioctl(struct thread *td, struct li sx_sunlock(&linux_ioctl_sx); fdrop(fp, td); - linux_msg(td, "ioctl fd=%d, cmd=0x%x ('%c',%d) is not implemented", - args->fd, (int)(args->cmd & 0xffff), - (int)(args->cmd & 0xff00) >> 8, (int)(args->cmd & 0xff)); + switch (args->cmd & 0xffff) { + case LINUX_BTRFS_IOC_CLONE: + return (ENOTSUP); + + default: + linux_msg(td, "ioctl fd=%d, cmd=0x%x ('%c',%d) is not implemented", + args->fd, (int)(args->cmd & 0xffff), + (int)(args->cmd & 0xff00) >> 8, (int)(args->cmd & 0xff)); + break; + } return (EINVAL); } Modified: head/sys/compat/linux/linux_ioctl.h ============================================================================== --- head/sys/compat/linux/linux_ioctl.h Sun May 24 18:11:22 2015 (r283495) +++ head/sys/compat/linux/linux_ioctl.h Sun May 24 18:12:04 2015 (r283496) @@ -745,6 +745,12 @@ #define FBSD_LUSB_MIN 0xffdd /* + * Linux btrfs clone operation + */ +#define LINUX_BTRFS_IOC_CLONE 0x9409 /* 0x40049409 */ + + +/* * Pluggable ioctl handlers */ struct linux_ioctl_args; From owner-svn-src-all@FreeBSD.ORG Sun May 24 18:13:22 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3BB81B7A; Sun, 24 May 2015 18:13:22 +0000 (UTC) Received: from svn.freebsd.org (svn.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 0F50D1155; Sun, 24 May 2015 18:13:22 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OIDLQD046803; Sun, 24 May 2015 18:13:21 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OIDL3M046800; Sun, 24 May 2015 18:13:21 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241813.t4OIDL3M046800@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 18:13:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283497 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 18:13:22 -0000 Author: dchagin Date: Sun May 24 18:13:21 2015 New Revision: 283497 URL: https://svnweb.freebsd.org/changeset/base/283497 Log: Convert SCM_TIMESTAMP in recvmsg(). Modified: head/sys/compat/linux/linux_socket.c head/sys/compat/linux/linux_socket.h Modified: head/sys/compat/linux/linux_socket.c ============================================================================== --- head/sys/compat/linux/linux_socket.c Sun May 24 18:12:04 2015 (r283496) +++ head/sys/compat/linux/linux_socket.c Sun May 24 18:13:21 2015 (r283497) @@ -483,6 +483,8 @@ bsd_to_linux_cmsg_type(int cmsg_type) return (LINUX_SCM_RIGHTS); case SCM_CREDS: return (LINUX_SCM_CREDENTIALS); + case SCM_TIMESTAMP: + return (LINUX_SCM_TIMESTAMP); } return (-1); } @@ -1221,6 +1223,8 @@ linux_recvmsg_common(struct thread *td, struct iovec *iov, *uiov; struct mbuf *control = NULL; struct mbuf **controlp; + struct timeval *ftmvl; + l_timeval ltmvl; caddr_t outbuf; void *data; int error, i, fd, fds, *fdp; @@ -1331,6 +1335,18 @@ linux_recvmsg_common(struct thread *td, data = &linux_ucred; datalen = sizeof(linux_ucred); break; + + case SCM_TIMESTAMP: + if (datalen != sizeof(struct timeval)) { + error = EMSGSIZE; + goto bad; + } + ftmvl = (struct timeval *)data; + ltmvl.tv_sec = ftmvl->tv_sec; + ltmvl.tv_usec = ftmvl->tv_usec; + data = <mvl; + datalen = sizeof(ltmvl); + break; } if (outlen + LINUX_CMSG_LEN(datalen) > Modified: head/sys/compat/linux/linux_socket.h ============================================================================== --- head/sys/compat/linux/linux_socket.h Sun May 24 18:12:04 2015 (r283496) +++ head/sys/compat/linux/linux_socket.h Sun May 24 18:13:21 2015 (r283497) @@ -54,7 +54,8 @@ /* Socket-level control message types */ #define LINUX_SCM_RIGHTS 0x01 -#define LINUX_SCM_CREDENTIALS 0x02 +#define LINUX_SCM_CREDENTIALS 0x02 +#define LINUX_SCM_TIMESTAMP 0x1D struct l_msghdr { l_uintptr_t msg_name; From owner-svn-src-all@FreeBSD.ORG Sun May 24 18:14:39 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id DED1BD5C; Sun, 24 May 2015 18:14:39 +0000 (UTC) Received: from svn.freebsd.org (svn.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 BF8D11163; Sun, 24 May 2015 18:14:39 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OIEdTn047046; Sun, 24 May 2015 18:14:39 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OIEdDm047045; Sun, 24 May 2015 18:14:39 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505241814.t4OIEdDm047045@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Sun, 24 May 2015 18:14:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283498 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 18:14:40 -0000 Author: dchagin Date: Sun May 24 18:14:38 2015 New Revision: 283498 URL: https://svnweb.freebsd.org/changeset/base/283498 Log: Linux nanosleep() and clock_nanosleep() system calls always writes the remaining time into the structure pointed to by rmtp unless rmtp is NULL. The value of *rmtp can then be used to call nanosleep() again and complete the specified pause if the previous call was interrupted. Note. clock_nanosleep() with an absolute time value does not write the remaining time. While here fix whitespaces and typo in SDT_PROBE. Modified: head/sys/compat/linux/linux_time.c Modified: head/sys/compat/linux/linux_time.c ============================================================================== --- head/sys/compat/linux/linux_time.c Sun May 24 18:13:21 2015 (r283497) +++ head/sys/compat/linux/linux_time.c Sun May 24 18:14:38 2015 (r283498) @@ -105,14 +105,12 @@ LIN_SDT_PROBE_DEFINE1(time, linux_clock_ LIN_SDT_PROBE_DEFINE2(time, linux_nanosleep, entry, "const struct l_timespec *", "struct l_timespec *"); LIN_SDT_PROBE_DEFINE1(time, linux_nanosleep, conversion_error, "int"); -LIN_SDT_PROBE_DEFINE1(time, linux_nanosleep, nanosleep_error, "int"); LIN_SDT_PROBE_DEFINE1(time, linux_nanosleep, copyout_error, "int"); LIN_SDT_PROBE_DEFINE1(time, linux_nanosleep, copyin_error, "int"); LIN_SDT_PROBE_DEFINE1(time, linux_nanosleep, return, "int"); LIN_SDT_PROBE_DEFINE4(time, linux_clock_nanosleep, entry, "clockid_t", "int", "struct l_timespec *", "struct l_timespec *"); LIN_SDT_PROBE_DEFINE1(time, linux_clock_nanosleep, conversion_error, "int"); -LIN_SDT_PROBE_DEFINE1(time, linux_clock_nanosleep, nanosleep_error, "int"); LIN_SDT_PROBE_DEFINE1(time, linux_clock_nanosleep, copyout_error, "int"); LIN_SDT_PROBE_DEFINE1(time, linux_clock_nanosleep, copyin_error, "int"); LIN_SDT_PROBE_DEFINE1(time, linux_clock_nanosleep, unsupported_flags, "int"); @@ -468,7 +466,7 @@ linux_nanosleep(struct thread *td, struc struct timespec *rmtp; struct l_timespec lrqts, lrmts; struct timespec rqts, rmts; - int error; + int error, error2; LIN_SDT_PROBE2(time, linux_nanosleep, entry, args->rqtp, args->rmtp); @@ -480,9 +478,9 @@ linux_nanosleep(struct thread *td, struc } if (args->rmtp != NULL) - rmtp = &rmts; + rmtp = &rmts; else - rmtp = NULL; + rmtp = NULL; error = linux_to_native_timespec(&rqts, &lrqts); if (error != 0) { @@ -491,25 +489,19 @@ linux_nanosleep(struct thread *td, struc return (error); } error = kern_nanosleep(td, &rqts, rmtp); - if (error != 0) { - LIN_SDT_PROBE1(time, linux_nanosleep, nanosleep_error, error); - LIN_SDT_PROBE1(time, linux_nanosleep, return, error); - return (error); - } - if (args->rmtp != NULL) { - native_to_linux_timespec(&lrmts, rmtp); - error = copyout(&lrmts, args->rmtp, sizeof(lrmts)); - if (error != 0) { + native_to_linux_timespec(&lrmts, rmtp); + error2 = copyout(&lrmts, args->rmtp, sizeof(lrmts)); + if (error2 != 0) { LIN_SDT_PROBE1(time, linux_nanosleep, copyout_error, - error); - LIN_SDT_PROBE1(time, linux_nanosleep, return, error); - return (error); + error2); + LIN_SDT_PROBE1(time, linux_nanosleep, return, error2); + return (error2); } } - LIN_SDT_PROBE1(time, linux_nanosleep, return, 0); - return (0); + LIN_SDT_PROBE1(time, linux_nanosleep, return, error); + return (error); } int @@ -518,7 +510,7 @@ linux_clock_nanosleep(struct thread *td, struct timespec *rmtp; struct l_timespec lrqts, lrmts; struct timespec rqts, rmts; - int error; + int error, error2; LIN_SDT_PROBE4(time, linux_clock_nanosleep, entry, args->which, args->flags, args->rqtp, args->rmtp); @@ -538,7 +530,7 @@ linux_clock_nanosleep(struct thread *td, return (EINVAL); } - error = copyin(args->rqtp, &lrqts, sizeof lrqts); + error = copyin(args->rqtp, &lrqts, sizeof(lrqts)); if (error != 0) { LIN_SDT_PROBE1(time, linux_clock_nanosleep, copyin_error, error); @@ -547,9 +539,9 @@ linux_clock_nanosleep(struct thread *td, } if (args->rmtp != NULL) - rmtp = &rmts; + rmtp = &rmts; else - rmtp = NULL; + rmtp = NULL; error = linux_to_native_timespec(&rqts, &lrqts); if (error != 0) { @@ -559,24 +551,19 @@ linux_clock_nanosleep(struct thread *td, return (error); } error = kern_nanosleep(td, &rqts, rmtp); - if (error != 0) { - LIN_SDT_PROBE1(time, linux_clock_nanosleep, nanosleep_error, - error); - LIN_SDT_PROBE1(time, linux_clock_nanosleep, return, error); - return (error); - } - if (args->rmtp != NULL) { + /* XXX. Not for TIMER_ABSTIME */ native_to_linux_timespec(&lrmts, rmtp); - error = copyout(&lrmts, args->rmtp, sizeof lrmts ); - if (error != 0) { + error2 = copyout(&lrmts, args->rmtp, sizeof(lrmts)); + if (error2 != 0) { + LIN_SDT_PROBE1(time, linux_clock_nanosleep, + copyout_error, error2); LIN_SDT_PROBE1(time, linux_clock_nanosleep, - copyout_error, error); - LIN_SDT_PROBE1(time, linux_nanosleep, return, error); - return (error); + return, error2); + return (error2); } } - LIN_SDT_PROBE1(time, linux_clock_nanosleep, return, 0); - return (0); + LIN_SDT_PROBE1(time, linux_clock_nanosleep, return, error); + return (error); } From owner-svn-src-all@FreeBSD.ORG Sun May 24 18:22:16 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id BCC48FDC; Sun, 24 May 2015 18:22:16 +0000 (UTC) Received: from mail.strugglingcoder.info (strugglingcoder.info [65.19.130.35]) (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 A70F21238; Sun, 24 May 2015 18:22:16 +0000 (UTC) Received: from localhost (unknown [10.1.1.3]) (Authenticated sender: hiren@strugglingcoder.info) by mail.strugglingcoder.info (Postfix) with ESMTPSA id 72948104616; Sun, 24 May 2015 11:22:10 -0700 (PDT) Date: Sun, 24 May 2015 11:22:10 -0700 From: hiren panchasara To: George Neville-Neil Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r282240 - in head: cddl/lib/libdtrace sys/netinet Message-ID: <20150524182210.GN95600@strugglingcoder.info> References: <201504291719.t3THJtIM020724@svn.freebsd.org> <20150523215927.GM95600@strugglingcoder.info> <820BB330-CCB9-46DE-86CF-3D233B84F69B@freebsd.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="aSnC4ZPPfhCvD8sN" Content-Disposition: inline In-Reply-To: <820BB330-CCB9-46DE-86CF-3D233B84F69B@freebsd.org> User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 18:22:16 -0000 --aSnC4ZPPfhCvD8sN Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On 05/24/15 at 09:24P, George Neville-Neil wrote: >=20 >=20 > On 23 May 2015, at 17:59, hiren panchasara wrote: >=20 > > On 04/29/15 at 05:19P, George V. Neville-Neil wrote: > >> Author: gnn > >> Date: Wed Apr 29 17:19:55 2015 > >> New Revision: 282240 > >> URL: https://svnweb.freebsd.org/changeset/base/282240 > >> > >> Log: > >> Brief demo script showing the various values that can be read via > >> the new SIFTR statically defined tracepoint (SDT). > >> > >> Differential Revision: https://reviews.freebsd.org/D2387 > >> Reviewed by: bz, markj > >> > >> Modified: > >> head/cddl/lib/libdtrace/tcp.d > >> head/sys/netinet/in_kdtrace.c > >> head/sys/netinet/in_kdtrace.h > >> head/sys/netinet/siftr.c > > > > George, > > > > This seems useful. Can this be MFC'd to 10? > > >=20 > I think it can be. I'll mark this and do it when I'm back from holiday. = Nag me if I forget :-) Perfect!=20 Thanks, Hiren --aSnC4ZPPfhCvD8sN Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (FreeBSD) iQF8BAEBCgBmBQJVYhbRXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXRBNEUyMEZBMUQ4Nzg4RjNGMTdFNjZGMDI4 QjkyNTBFMTU2M0VERkU1AAoJEIuSUOFWPt/lLJcH/1LRFc0gmtpMaq007Rb3Xq9d SKfsO5ETPNRdhxpM842WAOuVpHVbrZILrRrucQDzFgAHVPCEC1s4tArUv1lDDLrG XCDjybIgEzUUsab6hIhqzd8+x2HE/Lma9nwXDMe8AKNylg2juK05rhofwBD6BXnT iA/qizm8wJ9pDAsNaCYFxriZHSnj/fMcJClcZCjXvuAoX3zdeRc7/jJZDT6I6G+r VbsKKpgqtZogkLDa2mWgy2muc5KhrFXo1+hUimhflncP5IyMbuegP9Wrq/QUfa8c DWB5UMVdvTPw6nX1DMcC1KU4y3Ka9G21Zr6l7dUB0lY39w18T6VbqnA+9kTTA2A= =Unfe -----END PGP SIGNATURE----- --aSnC4ZPPfhCvD8sN-- From owner-svn-src-all@FreeBSD.ORG Sun May 24 18:23:58 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4CA8028B; Sun, 24 May 2015 18:23:58 +0000 (UTC) Received: from svn.freebsd.org (svn.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 3AA061243; Sun, 24 May 2015 18:23:58 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OINw1e051991; Sun, 24 May 2015 18:23:58 GMT (envelope-from ian@FreeBSD.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OINwl3051989; Sun, 24 May 2015 18:23:58 GMT (envelope-from ian@FreeBSD.org) Message-Id: <201505241823.t4OINwl3051989@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ian set sender to ian@FreeBSD.org using -f From: Ian Lepore Date: Sun, 24 May 2015 18:23:58 +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: r283499 - stable/10/sys/arm/arm X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 18:23:58 -0000 Author: ian Date: Sun May 24 18:23:57 2015 New Revision: 283499 URL: https://svnweb.freebsd.org/changeset/base/283499 Log: MFC r282418: On an icache sync by address/len, round the length up if the operation spans a cacheline boundary. Modified: stable/10/sys/arm/arm/cpufunc_asm_armv7.S Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/arm/arm/cpufunc_asm_armv7.S ============================================================================== --- stable/10/sys/arm/arm/cpufunc_asm_armv7.S Sun May 24 18:14:38 2015 (r283498) +++ stable/10/sys/arm/arm/cpufunc_asm_armv7.S Sun May 24 18:23:57 2015 (r283499) @@ -266,6 +266,9 @@ END(armv7_icache_sync_all) ENTRY_NP(armv7_icache_sync_range) ldr ip, .Larmv7_icache_line_size ldr ip, [ip] + sub r3, ip, #1 /* Address need not be aligned, but */ + and r2, r0, r3 /* round length up if op spans line */ + add r1, r1, r2 /* boundary: len += addr & linemask; */ .Larmv7_sync_next: mcr CP15_DCCMVAC(r0) mcr CP15_ICIMVAU(r0) From owner-svn-src-all@FreeBSD.ORG Sun May 24 18:25:22 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0804B3D6; Sun, 24 May 2015 18:25:22 +0000 (UTC) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 742011252; Sun, 24 May 2015 18:25:21 +0000 (UTC) Received: from tom.home (kostik@localhost [127.0.0.1]) by kib.kiev.ua (8.14.9/8.14.9) with ESMTP id t4OIPF4S041839 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Sun, 24 May 2015 21:25:15 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.9.2 kib.kiev.ua t4OIPF4S041839 Received: (from kostik@localhost) by tom.home (8.14.9/8.14.9/Submit) id t4OIPFgk041836; Sun, 24 May 2015 21:25:15 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Sun, 24 May 2015 21:25:15 +0300 From: Konstantin Belousov To: Dmitry Chagin Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283479 - in head/sys: amd64/amd64 amd64/ia32 arm/arm i386/i386 mips/mips powerpc/powerpc sparc64/sparc64 Message-ID: <20150524182515.GF2499@kib.kiev.ua> References: <201505241756.t4OHu3ot035613@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201505241756.t4OHu3ot035613@svn.freebsd.org> User-Agent: Mutt/1.5.23 (2014-03-12) X-Spam-Status: No, score=-2.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=3.4.1 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on tom.home X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 18:25:22 -0000 On Sun, May 24, 2015 at 05:56:03PM +0000, Dmitry Chagin wrote: > Author: dchagin > Date: Sun May 24 17:56:02 2015 > New Revision: 283479 > URL: https://svnweb.freebsd.org/changeset/base/283479 > > Log: > The kernel sends signals to the processes via ABI specific sv_sendsig method. > Native ABI do not need signal conversion, only emulators may want this. Usually > emulators implements its own sv_sendsig method. For now only ibcs2 emulator does > not have own sv_sendsig implementation and depends on native sendsig() method. > So, remove any extra attempts to convert signal numbers from native sendsig() > methods except from i386 where ibsc2 is living. > > Modified: > head/sys/amd64/amd64/machdep.c > head/sys/amd64/ia32/ia32_signal.c > head/sys/arm/arm/machdep.c > head/sys/i386/i386/machdep.c > head/sys/mips/mips/freebsd32_machdep.c > head/sys/mips/mips/pm_machdep.c > head/sys/powerpc/powerpc/exec_machdep.c > head/sys/sparc64/sparc64/machdep.c > > Modified: head/sys/amd64/amd64/machdep.c > ============================================================================== > --- head/sys/amd64/amd64/machdep.c Sun May 24 17:53:48 2015 (r283478) > +++ head/sys/amd64/amd64/machdep.c Sun May 24 17:56:02 2015 (r283479) > @@ -398,10 +398,6 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, > /* Align to 16 bytes. */ > sfp = (struct sigframe *)((unsigned long)sp & ~0xFul); > > - /* Translate the signal if appropriate. */ > - if (p->p_sysent->sv_sigtbl && sig <= p->p_sysent->sv_sigsize) > - sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)]; > - Does struct sysent still need sv_sigtbl and sv_sigsize members then ? From owner-svn-src-all@FreeBSD.ORG Sun May 24 18:59:48 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8128C74A; Sun, 24 May 2015 18:59:48 +0000 (UTC) Received: from svn.freebsd.org (svn.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 6D9B315E9; Sun, 24 May 2015 18:59:48 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OIxmcC071797; Sun, 24 May 2015 18:59:48 GMT (envelope-from ian@FreeBSD.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OIxjIQ071786; Sun, 24 May 2015 18:59:45 GMT (envelope-from ian@FreeBSD.org) Message-Id: <201505241859.t4OIxjIQ071786@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ian set sender to ian@FreeBSD.org using -f From: Ian Lepore Date: Sun, 24 May 2015 18:59:45 +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: r283500 - in stable/10/sys: arm/conf arm/freescale/imx boot/fdt/dts/arm X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 18:59:48 -0000 Author: ian Date: Sun May 24 18:59:45 2015 New Revision: 283500 URL: https://svnweb.freebsd.org/changeset/base/283500 Log: MFC r268838, r277644: Add support for Toradex Apalis i.MX6 development board. Add support for imx6 audio transmitting, include drivers for: o Digital Audio Multiplexer (AUDMUX) o Smart Direct Memory Access Controller (SDMA) o Synchronous Serial Interface (SSI) Added: stable/10/sys/arm/conf/APALIS-IMX6 - copied, changed from r268838, head/sys/arm/conf/APALIS-IMX6 stable/10/sys/arm/freescale/imx/imx6_audmux.c - copied unchanged from r277644, head/sys/arm/freescale/imx/imx6_audmux.c stable/10/sys/arm/freescale/imx/imx6_sdma.c - copied unchanged from r277644, head/sys/arm/freescale/imx/imx6_sdma.c stable/10/sys/arm/freescale/imx/imx6_sdma.h - copied unchanged from r277644, head/sys/arm/freescale/imx/imx6_sdma.h stable/10/sys/arm/freescale/imx/imx6_ssi.c - copied unchanged from r277644, head/sys/arm/freescale/imx/imx6_ssi.c stable/10/sys/boot/fdt/dts/arm/apalis-imx6.dts - copied, changed from r268838, head/sys/boot/fdt/dts/arm/apalis-imx6.dts Modified: stable/10/sys/arm/freescale/imx/files.imx6 stable/10/sys/arm/freescale/imx/imx6_anatop.c stable/10/sys/arm/freescale/imx/imx6_anatopreg.h stable/10/sys/arm/freescale/imx/imx6_anatopvar.h stable/10/sys/arm/freescale/imx/imx6_ccm.c stable/10/sys/arm/freescale/imx/imx6_ccmreg.h stable/10/sys/arm/freescale/imx/imx_ccmvar.h stable/10/sys/boot/fdt/dts/arm/imx6.dtsi Directory Properties: stable/10/ (props changed) Copied and modified: stable/10/sys/arm/conf/APALIS-IMX6 (from r268838, head/sys/arm/conf/APALIS-IMX6) ============================================================================== --- head/sys/arm/conf/APALIS-IMX6 Fri Jul 18 08:23:53 2014 (r268838, copy source) +++ stable/10/sys/arm/conf/APALIS-IMX6 Sun May 24 18:59:45 2015 (r283500) @@ -19,13 +19,13 @@ #NO_UNIVERSE -include "IMX6" +include "IMX6" ident APALIS-IMX6 makeoptions MODULES_OVERRIDE="" makeoptions WITHOUT_MODULES="ahc" # Flattened Device Tree -options FDT -options FDT_DTB_STATIC -makeoptions FDT_DTS_FILE=apalis-imx6.dts +options FDT +options FDT_DTB_STATIC +makeoptions FDT_DTS_FILE=apalis-imx6.dts Modified: stable/10/sys/arm/freescale/imx/files.imx6 ============================================================================== --- stable/10/sys/arm/freescale/imx/files.imx6 Sun May 24 18:23:57 2015 (r283499) +++ stable/10/sys/arm/freescale/imx/files.imx6 Sun May 24 18:59:45 2015 (r283500) @@ -28,6 +28,9 @@ arm/freescale/imx/imx_machdep.c standar arm/freescale/imx/imx_gpt.c standard arm/freescale/imx/imx_gpio.c optional gpio arm/freescale/imx/imx_i2c.c optional fsliic +arm/freescale/imx/imx6_sdma.c optional sdma +arm/freescale/imx/imx6_audmux.c optional sound +arm/freescale/imx/imx6_ssi.c optional sound # # Optional devices. @@ -52,3 +55,19 @@ arm/freescale/imx/imx6_usbphy.c optiona # Not ready yet... # #arm/freescale/imx/imx51_ipuv3.c optional sc + +# SDMA firmware +sdma_fw.c optional sdma_fw \ + compile-with "${AWK} -f $S/tools/fw_stub.awk sdma-imx6q-to1.bin:sdma_fw -msdma -c${.TARGET}" \ + no-implicit-rule before-depend local \ + clean "sdma_fw.c" +sdma-imx6q-to1.fwo optional sdma_fw \ + dependency "sdma-imx6q-to1.bin" \ + compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} sdma-imx6q-to1.bin" \ + no-implicit-rule \ + clean "sdma-imx6q-to1.fwo" +sdma-imx6q-to1.bin optional sdma_fw \ + dependency "$S/contrib/dev/imx/sdma-imx6q-to1.bin.uu" \ + compile-with "uudecode < $S/contrib/dev/imx/sdma-imx6q-to1.bin.uu" \ + no-obj no-implicit-rule \ + clean "sdma-imx6q-to1.bin" Modified: stable/10/sys/arm/freescale/imx/imx6_anatop.c ============================================================================== --- stable/10/sys/arm/freescale/imx/imx6_anatop.c Sun May 24 18:23:57 2015 (r283499) +++ stable/10/sys/arm/freescale/imx/imx6_anatop.c Sun May 24 18:59:45 2015 (r283500) @@ -713,6 +713,27 @@ out: return (err); } +uint32_t +pll4_configure_output(uint32_t mfi, uint32_t mfn, uint32_t mfd) +{ + int reg; + + /* + * Audio PLL (PLL4). + * PLL output frequency = Fref * (DIV_SELECT + NUM/DENOM) + */ + + reg = (IMX6_ANALOG_CCM_PLL_AUDIO_ENABLE); + reg &= ~(IMX6_ANALOG_CCM_PLL_AUDIO_DIV_SELECT_MASK << \ + IMX6_ANALOG_CCM_PLL_AUDIO_DIV_SELECT_SHIFT); + reg |= (mfi << IMX6_ANALOG_CCM_PLL_AUDIO_DIV_SELECT_SHIFT); + imx6_anatop_write_4(IMX6_ANALOG_CCM_PLL_AUDIO, reg); + imx6_anatop_write_4(IMX6_ANALOG_CCM_PLL_AUDIO_NUM, mfn); + imx6_anatop_write_4(IMX6_ANALOG_CCM_PLL_AUDIO_DENOM, mfd); + + return (0); +} + static int imx6_anatop_probe(device_t dev) { Modified: stable/10/sys/arm/freescale/imx/imx6_anatopreg.h ============================================================================== --- stable/10/sys/arm/freescale/imx/imx6_anatopreg.h Sun May 24 18:23:57 2015 (r283499) +++ stable/10/sys/arm/freescale/imx/imx6_anatopreg.h Sun May 24 18:59:45 2015 (r283500) @@ -58,6 +58,9 @@ #define IMX6_ANALOG_CCM_PLL_SYS_NUM 0x050 #define IMX6_ANALOG_CCM_PLL_SYS_DENOM 0x060 #define IMX6_ANALOG_CCM_PLL_AUDIO 0x070 +#define IMX6_ANALOG_CCM_PLL_AUDIO_ENABLE (1 << 13) +#define IMX6_ANALOG_CCM_PLL_AUDIO_DIV_SELECT_SHIFT 0 +#define IMX6_ANALOG_CCM_PLL_AUDIO_DIV_SELECT_MASK 0x7f #define IMX6_ANALOG_CCM_PLL_AUDIO_SET 0x074 #define IMX6_ANALOG_CCM_PLL_AUDIO_CLR 0x078 #define IMX6_ANALOG_CCM_PLL_AUDIO_TOG 0x07C Modified: stable/10/sys/arm/freescale/imx/imx6_anatopvar.h ============================================================================== --- stable/10/sys/arm/freescale/imx/imx6_anatopvar.h Sun May 24 18:23:57 2015 (r283499) +++ stable/10/sys/arm/freescale/imx/imx6_anatopvar.h Sun May 24 18:59:45 2015 (r283500) @@ -42,4 +42,6 @@ void imx6_anatop_write_4(bus_size_t _off uint32_t imx6_get_cpu_clock(void); +uint32_t pll4_configure_output(uint32_t mfi, uint32_t mfn, uint32_t mfd); + #endif Copied: stable/10/sys/arm/freescale/imx/imx6_audmux.c (from r277644, head/sys/arm/freescale/imx/imx6_audmux.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/10/sys/arm/freescale/imx/imx6_audmux.c Sun May 24 18:59:45 2015 (r283500, copy of r277644, head/sys/arm/freescale/imx/imx6_audmux.c) @@ -0,0 +1,159 @@ +/*- + * Copyright (c) 2015 Ruslan Bukin + * 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. + */ + +/* + * i.MX6 Digital Audio Multiplexer (AUDMUX) + * Chapter 16, i.MX 6Dual/6Quad Applications Processor Reference Manual, + * Rev. 1, 04/2013 + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include + +#define READ4(_sc, _reg) \ + bus_space_read_4(_sc->bst, _sc->bsh, _reg) +#define WRITE4(_sc, _reg, _val) \ + bus_space_write_4(_sc->bst, _sc->bsh, _reg, _val) + +#define AUDMUX_PTCR(n) (0x8 * (n - 1)) /* Port Timing Control Register */ +#define PTCR_TFS_DIR (1 << 31) /* Transmit Frame Sync Direction Control */ +#define PTCR_TFSEL_S 27 /* Transmit Frame Sync Select */ +#define PTCR_TFSEL_M 0xf +#define PTCR_TCLKDIR (1 << 26) /* Transmit Clock Direction Control */ +#define PTCR_TCSEL_S 22 /* Transmit Clock Select. */ +#define PTCR_TCSEL_M 0xf +#define PTCR_RFS_DIR (1 << 21) /* Receive Frame Sync Direction Control */ +#define PTCR_SYN (1 << 11) +#define AUDMUX_PDCR(n) (0x8 * (n - 1) + 0x4) /* Port Data Control Reg */ +#define PDCR_RXDSEL_S 13 /* Receive Data Select */ +#define PDCR_RXDSEL_M 0x3 +#define PDCR_RXDSEL_PORT(n) (n - 1) + +struct audmux_softc { + struct resource *res[1]; + bus_space_tag_t bst; + bus_space_handle_t bsh; + void *ih; +}; + +static struct resource_spec audmux_spec[] = { + { SYS_RES_MEMORY, 0, RF_ACTIVE }, + { -1, 0 } +}; + +static int +audmux_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (!ofw_bus_is_compatible(dev, "fsl,imx6q-audmux")) + return (ENXIO); + + device_set_desc(dev, "i.MX6 Digital Audio Multiplexer"); + return (BUS_PROBE_DEFAULT); +} + +static int +audmux_configure(struct audmux_softc *sc, + int ssi_port, int audmux_port) +{ + uint32_t reg; + + /* Direction: output */ + reg = (PTCR_TFS_DIR | PTCR_TCLKDIR | PTCR_SYN); + WRITE4(sc, AUDMUX_PTCR(audmux_port), reg); + + /* Select source */ + reg = (PDCR_RXDSEL_PORT(ssi_port) << PDCR_RXDSEL_S); + WRITE4(sc, AUDMUX_PDCR(audmux_port), reg); + + return (0); +} + +static int +audmux_attach(device_t dev) +{ + struct audmux_softc *sc; + + sc = device_get_softc(dev); + + if (bus_alloc_resources(dev, audmux_spec, sc->res)) { + device_printf(dev, "could not allocate resources\n"); + return (ENXIO); + } + + /* Memory interface */ + sc->bst = rman_get_bustag(sc->res[0]); + sc->bsh = rman_get_bushandle(sc->res[0]); + + /* + * Direct SSI1 output to AUDMUX5 pins. + * TODO: dehardcore this. + */ + audmux_configure(sc, 1, 5); + + return (0); +}; + +static device_method_t audmux_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, audmux_probe), + DEVMETHOD(device_attach, audmux_attach), + { 0, 0 } +}; + +static driver_t audmux_driver = { + "audmux", + audmux_methods, + sizeof(struct audmux_softc), +}; + +static devclass_t audmux_devclass; + +DRIVER_MODULE(audmux, simplebus, audmux_driver, audmux_devclass, 0, 0); Modified: stable/10/sys/arm/freescale/imx/imx6_ccm.c ============================================================================== --- stable/10/sys/arm/freescale/imx/imx6_ccm.c Sun May 24 18:23:57 2015 (r283499) +++ stable/10/sys/arm/freescale/imx/imx6_ccm.c Sun May 24 18:59:45 2015 (r283500) @@ -94,7 +94,7 @@ ccm_init_gates(struct ccm_softc *sc) WR4(sc, CCM_CCGR2, 0x0fffffc0); /* ipmux & ipsync (bridges), iomux, i2c */ WR4(sc, CCM_CCGR3, 0x3ff00000); /* DDR memory controller */ WR4(sc, CCM_CCGR4, 0x0000f300); /* pl301 bus crossbar */ - WR4(sc, CCM_CCGR5, 0x0f000000); /* uarts */ + WR4(sc, CCM_CCGR5, 0x0ffc00c0); /* uarts, ssi, sdma */ WR4(sc, CCM_CCGR6, 0x000000ff); /* usdhc 1-4 */ } @@ -180,6 +180,58 @@ ccm_probe(device_t dev) } void +imx_ccm_ssi_configure(device_t _ssidev) +{ + struct ccm_softc *sc; + uint32_t reg; + + sc = ccm_sc; + + /* + * Select PLL4 (Audio PLL) clock multiplexer as source. + * PLL output frequency = Fref * (DIV_SELECT + NUM/DENOM). + */ + + reg = RD4(sc, CCM_CSCMR1); + reg &= ~(SSI_CLK_SEL_M << SSI1_CLK_SEL_S); + reg |= (SSI_CLK_SEL_PLL4 << SSI1_CLK_SEL_S); + reg &= ~(SSI_CLK_SEL_M << SSI2_CLK_SEL_S); + reg |= (SSI_CLK_SEL_PLL4 << SSI2_CLK_SEL_S); + reg &= ~(SSI_CLK_SEL_M << SSI3_CLK_SEL_S); + reg |= (SSI_CLK_SEL_PLL4 << SSI3_CLK_SEL_S); + WR4(sc, CCM_CSCMR1, reg); + + /* + * Ensure we have set hardware-default values + * for pre and post dividers. + */ + + /* SSI1 and SSI3 */ + reg = RD4(sc, CCM_CS1CDR); + /* Divide by 2 */ + reg &= ~(SSI_CLK_PODF_MASK << SSI1_CLK_PODF_SHIFT); + reg &= ~(SSI_CLK_PODF_MASK << SSI3_CLK_PODF_SHIFT); + reg |= (0x1 << SSI1_CLK_PODF_SHIFT); + reg |= (0x1 << SSI3_CLK_PODF_SHIFT); + /* Divide by 4 */ + reg &= ~(SSI_CLK_PRED_MASK << SSI1_CLK_PRED_SHIFT); + reg &= ~(SSI_CLK_PRED_MASK << SSI3_CLK_PRED_SHIFT); + reg |= (0x3 << SSI1_CLK_PRED_SHIFT); + reg |= (0x3 << SSI3_CLK_PRED_SHIFT); + WR4(sc, CCM_CS1CDR, reg); + + /* SSI2 */ + reg = RD4(sc, CCM_CS2CDR); + /* Divide by 2 */ + reg &= ~(SSI_CLK_PODF_MASK << SSI2_CLK_PODF_SHIFT); + reg |= (0x1 << SSI2_CLK_PODF_SHIFT); + /* Divide by 4 */ + reg &= ~(SSI_CLK_PRED_MASK << SSI2_CLK_PRED_SHIFT); + reg |= (0x3 << SSI2_CLK_PRED_SHIFT); + WR4(sc, CCM_CS2CDR, reg); +} + +void imx_ccm_usb_enable(device_t _usbdev) { Modified: stable/10/sys/arm/freescale/imx/imx6_ccmreg.h ============================================================================== --- stable/10/sys/arm/freescale/imx/imx6_ccmreg.h Sun May 24 18:23:57 2015 (r283499) +++ stable/10/sys/arm/freescale/imx/imx6_ccmreg.h Sun May 24 18:59:45 2015 (r283500) @@ -29,6 +29,26 @@ #ifndef IMX6_CCMREG_H #define IMX6_CCMREG_H +#define CCM_CSCMR1 0x01C +#define SSI1_CLK_SEL_S 10 +#define SSI2_CLK_SEL_S 12 +#define SSI3_CLK_SEL_S 14 +#define SSI_CLK_SEL_M 0x3 +#define SSI_CLK_SEL_508_PFD 0 +#define SSI_CLK_SEL_454_PFD 1 +#define SSI_CLK_SEL_PLL4 2 +#define CCM_CSCMR2 0x020 +#define CCM_CS1CDR 0x028 +#define SSI1_CLK_PODF_SHIFT 0 +#define SSI1_CLK_PRED_SHIFT 6 +#define SSI3_CLK_PODF_SHIFT 16 +#define SSI3_CLK_PRED_SHIFT 22 +#define SSI_CLK_PODF_MASK 0x3f +#define SSI_CLK_PRED_MASK 0x7 +#define CCM_CS2CDR 0x02C +#define SSI2_CLK_PODF_SHIFT 0 +#define SSI2_CLK_PRED_SHIFT 6 +#define CCM_CSCDR2 0x038 #define CCM_CLPCR 0x054 #define CCM_CLPCR_LPM_MASK 0x03 #define CCM_CLPCR_LPM_RUN 0x00 Copied: stable/10/sys/arm/freescale/imx/imx6_sdma.c (from r277644, head/sys/arm/freescale/imx/imx6_sdma.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/10/sys/arm/freescale/imx/imx6_sdma.c Sun May 24 18:59:45 2015 (r283500, copy of r277644, head/sys/arm/freescale/imx/imx6_sdma.c) @@ -0,0 +1,518 @@ +/*- + * Copyright (c) 2015 Ruslan Bukin + * 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. + */ + +/* + * i.MX6 Smart Direct Memory Access Controller (sDMA) + * Chapter 41, i.MX 6Dual/6Quad Applications Processor Reference Manual, + * Rev. 1, 04/2013 + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + +#define MAX_BD (PAGE_SIZE / sizeof(struct sdma_buffer_descriptor)) + +#define READ4(_sc, _reg) \ + bus_space_read_4(_sc->bst, _sc->bsh, _reg) +#define WRITE4(_sc, _reg, _val) \ + bus_space_write_4(_sc->bst, _sc->bsh, _reg, _val) + +struct sdma_softc *sdma_sc; + +static struct resource_spec sdma_spec[] = { + { SYS_RES_MEMORY, 0, RF_ACTIVE }, + { SYS_RES_IRQ, 0, RF_ACTIVE }, + { -1, 0 } +}; + +static void +sdma_intr(void *arg) +{ + struct sdma_buffer_descriptor *bd; + struct sdma_channel *channel; + struct sdma_conf *conf; + struct sdma_softc *sc; + int pending; + int i; + int j; + + sc = arg; + + pending = READ4(sc, SDMAARM_INTR); + + /* Ack intr */ + WRITE4(sc, SDMAARM_INTR, pending); + + for (i = 0; i < SDMA_N_CHANNELS; i++) { + if ((pending & (1 << i)) == 0) + continue; + channel = &sc->channel[i]; + conf = channel->conf; + if (!conf) + continue; + for (j = 0; j < conf->num_bd; j++) { + bd = &channel->bd[j]; + bd->mode.status |= BD_DONE; + if (bd->mode.status & BD_RROR) + printf("sDMA error\n"); + } + + conf->ih(conf->ih_user, 1); + + WRITE4(sc, SDMAARM_HSTART, (1 << i)); + } +} + +static int +sdma_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (!ofw_bus_is_compatible(dev, "fsl,imx6q-sdma")) + return (ENXIO); + + device_set_desc(dev, "i.MX6 Smart Direct Memory Access Controller"); + return (BUS_PROBE_DEFAULT); +} + +int +sdma_start(int chn) +{ + struct sdma_softc *sc; + + sc = sdma_sc; + + WRITE4(sc, SDMAARM_HSTART, (1 << chn)); + + return (0); +} + +int +sdma_stop(int chn) +{ + struct sdma_softc *sc; + + sc = sdma_sc; + + WRITE4(sc, SDMAARM_STOP_STAT, (1 << chn)); + + return (0); +} + +int +sdma_alloc(void) +{ + struct sdma_channel *channel; + struct sdma_softc *sc; + int found; + int chn; + int i; + + sc = sdma_sc; + found = 0; + + /* Channel 0 can't be used */ + for (i = 1; i < SDMA_N_CHANNELS; i++) { + channel = &sc->channel[i]; + if (channel->in_use == 0) { + channel->in_use = 1; + found = 1; + break; + } + } + + if (!found) + return (-1); + + chn = i; + + /* Allocate area for buffer descriptors */ + channel->bd = (void *)kmem_alloc_contig(kernel_arena, + PAGE_SIZE, M_ZERO, 0, ~0, PAGE_SIZE, 0, + VM_MEMATTR_UNCACHEABLE); + + return (chn); +} + +int +sdma_free(int chn) +{ + struct sdma_channel *channel; + struct sdma_softc *sc; + + sc = sdma_sc; + + channel = &sc->channel[chn]; + channel->in_use = 0; + + kmem_free(kernel_arena, (vm_offset_t)channel->bd, + PAGE_SIZE); + + return (0); +} + +static int +sdma_overrides(struct sdma_softc *sc, int chn, + int evt, int host, int dsp) +{ + int reg; + + /* Ignore sDMA requests */ + reg = READ4(sc, SDMAARM_EVTOVR); + if (evt) + reg |= (1 << chn); + else + reg &= ~(1 << chn); + WRITE4(sc, SDMAARM_EVTOVR, reg); + + /* Ignore enable bit (HE) */ + reg = READ4(sc, SDMAARM_HOSTOVR); + if (host) + reg |= (1 << chn); + else + reg &= ~(1 << chn); + WRITE4(sc, SDMAARM_HOSTOVR, reg); + + /* Prevent sDMA channel from starting */ + reg = READ4(sc, SDMAARM_DSPOVR); + if (!dsp) + reg |= (1 << chn); + else + reg &= ~(1 << chn); + WRITE4(sc, SDMAARM_DSPOVR, reg); + + return (0); +} + +int +sdma_configure(int chn, struct sdma_conf *conf) +{ + struct sdma_buffer_descriptor *bd0; + struct sdma_buffer_descriptor *bd; + struct sdma_context_data *context; + struct sdma_channel *channel; + struct sdma_softc *sc; +#if 0 + int timeout; + int ret; +#endif + int i; + + sc = sdma_sc; + + channel = &sc->channel[chn]; + channel->conf = conf; + + /* Ensure operation has stopped */ + sdma_stop(chn); + + /* Set priority and enable the channel */ + WRITE4(sc, SDMAARM_SDMA_CHNPRI(chn), 1); + WRITE4(sc, SDMAARM_CHNENBL(conf->event), (1 << chn)); + + sdma_overrides(sc, chn, 0, 0, 0); + + if (conf->num_bd > MAX_BD) { + device_printf(sc->dev, "Error: too much buffer" + " descriptors requested\n"); + return (-1); + } + + for (i = 0; i < conf->num_bd; i++) { + bd = &channel->bd[i]; + bd->mode.command = conf->command; + bd->mode.status = BD_DONE | BD_EXTD | BD_CONT | BD_INTR; + if (i == (conf->num_bd - 1)) + bd->mode.status |= BD_WRAP; + bd->mode.count = conf->period; + bd->buffer_addr = conf->saddr + (conf->period * i); + bd->ext_buffer_addr = 0; + } + + sc->ccb[chn].base_bd_ptr = vtophys(channel->bd); + sc->ccb[chn].current_bd_ptr = vtophys(channel->bd); + + /* + * Load context. + * + * i.MX6 Reference Manual: Appendix A SDMA Scripts + * A.3.1.7.1 (mcu_2_app) + */ + + /* + * TODO: allow using other scripts + */ + context = sc->context; + memset(context, 0, sizeof(*context)); + context->channel_state.pc = sc->fw_scripts->mcu_2_app_addr; + + /* + * Tx FIFO 0 address (r6) + * Event_mask (r1) + * Event2_mask (r0) + * Watermark level (r7) + */ + + if (conf->event > 32) { + context->gReg[0] = (1 << (conf->event % 32)); + context->gReg[1] = 0; + } else { + context->gReg[0] = 0; + context->gReg[1] = (1 << conf->event); + } + + context->gReg[6] = conf->daddr; + context->gReg[7] = conf->word_length; + + bd0 = sc->bd0; + bd0->mode.command = C0_SETDM; + bd0->mode.status = BD_DONE | BD_INTR | BD_WRAP | BD_EXTD; + bd0->mode.count = sizeof(*context) / 4; + bd0->buffer_addr = sc->context_phys; + bd0->ext_buffer_addr = 2048 + (sizeof(*context) / 4) * chn; + + WRITE4(sc, SDMAARM_HSTART, 1); + +#if 0 + /* Debug purposes */ + + timeout = 1000; + while (!(ret = READ4(sc, SDMAARM_INTR) & 1)) { + if (timeout-- <= 0) + break; + DELAY(10); + }; + + if (!ret) { + device_printf(sc->dev, "Failed to load context.\n"); + return (-1); + } + + WRITE4(sc, SDMAARM_INTR, ret); + + device_printf(sc->dev, "Context loaded successfully.\n"); +#endif + + return (0); +} + +static int +load_firmware(struct sdma_softc *sc) +{ + struct sdma_firmware_header *header; + const struct firmware *fp; + + fp = firmware_get("sdma_fw"); + if (fp == NULL) { + device_printf(sc->dev, "Can't get firmware.\n"); + return (-1); + } + + header = (struct sdma_firmware_header *)fp->data; + if (header->magic != FW_HEADER_MAGIC) { + device_printf(sc->dev, "Can't use firmware.\n"); + return (-1); + } + + sc->fw_header = header; + sc->fw_scripts = (void *)((char *)header + + header->script_addrs_start); + + return (0); +} + +static int +boot_firmware(struct sdma_softc *sc) +{ + struct sdma_buffer_descriptor *bd0; + uint32_t *ram_code; + int timeout; + int ret; + int chn; + int sz; + int i; + + ram_code = (void *)((char *)sc->fw_header + + sc->fw_header->ram_code_start); + + /* Make sure SDMA has not started yet */ + WRITE4(sc, SDMAARM_MC0PTR, 0); + + sz = SDMA_N_CHANNELS * sizeof(struct sdma_channel_control) + \ + sizeof(struct sdma_context_data); + sc->ccb = (void *)kmem_alloc_contig(kernel_arena, + sz, M_ZERO, 0, ~0, PAGE_SIZE, 0, VM_MEMATTR_UNCACHEABLE); + sc->ccb_phys = vtophys(sc->ccb); + + sc->context = (void *)((char *)sc->ccb + \ + SDMA_N_CHANNELS * sizeof(struct sdma_channel_control)); + sc->context_phys = vtophys(sc->context); + + /* Disable all the channels */ + for (i = 0; i < SDMA_N_EVENTS; i++) + WRITE4(sc, SDMAARM_CHNENBL(i), 0); + + /* All channels have priority 0 */ + for (i = 0; i < SDMA_N_CHANNELS; i++) + WRITE4(sc, SDMAARM_SDMA_CHNPRI(i), 0); + + /* Channel 0 is used for booting firmware */ + chn = 0; + + sc->bd0 = (void *)kmem_alloc_contig(kernel_arena, + PAGE_SIZE, M_ZERO, 0, ~0, PAGE_SIZE, 0, + VM_MEMATTR_UNCACHEABLE); + bd0 = sc->bd0; + sc->ccb[chn].base_bd_ptr = vtophys(bd0); + sc->ccb[chn].current_bd_ptr = vtophys(bd0); + + WRITE4(sc, SDMAARM_SDMA_CHNPRI(chn), 1); + + sdma_overrides(sc, chn, 1, 0, 0); + + /* XXX: not sure what is that */ + WRITE4(sc, SDMAARM_CHN0ADDR, 0x4050); + + WRITE4(sc, SDMAARM_CONFIG, 0); + WRITE4(sc, SDMAARM_MC0PTR, sc->ccb_phys); + WRITE4(sc, SDMAARM_CONFIG, CONFIG_CSM); + WRITE4(sc, SDMAARM_SDMA_CHNPRI(chn), 1); + + bd0->mode.command = C0_SETPM; + bd0->mode.status = BD_DONE | BD_INTR | BD_WRAP | BD_EXTD; + bd0->mode.count = sc->fw_header->ram_code_size / 2; + bd0->buffer_addr = vtophys(ram_code); + bd0->ext_buffer_addr = sc->fw_scripts->ram_code_start_addr; + + WRITE4(sc, SDMAARM_HSTART, 1); + + timeout = 100; + while (!(ret = READ4(sc, SDMAARM_INTR) & 1)) { + if (timeout-- <= 0) + break; + DELAY(10); + }; + + if (ret == 0) { + device_printf(sc->dev, "SDMA failed to boot\n"); + return (-1); + } + + WRITE4(sc, SDMAARM_INTR, ret); + +#if 0 + device_printf(sc->dev, "SDMA booted successfully.\n"); +#endif + + /* Debug is disabled */ + WRITE4(sc, SDMAARM_ONCE_ENB, 0); + + return (0); +} + +static int +sdma_attach(device_t dev) +{ + struct sdma_softc *sc; + int err; + + sc = device_get_softc(dev); + sc->dev = dev; + + if (bus_alloc_resources(dev, sdma_spec, sc->res)) { + device_printf(dev, "could not allocate resources\n"); + return (ENXIO); + } + + /* Memory interface */ + sc->bst = rman_get_bustag(sc->res[0]); + sc->bsh = rman_get_bushandle(sc->res[0]); + + sdma_sc = sc; + + /* Setup interrupt handler */ + err = bus_setup_intr(dev, sc->res[1], INTR_TYPE_MISC | INTR_MPSAFE, + NULL, sdma_intr, sc, &sc->ih); + if (err) { + device_printf(dev, "Unable to alloc interrupt resource.\n"); + return (ENXIO); + } + + if (load_firmware(sc) == -1) + return (ENXIO); + + if (boot_firmware(sc) == -1) + return (ENXIO); + + return (0); +}; + +static device_method_t sdma_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, sdma_probe), + DEVMETHOD(device_attach, sdma_attach), + { 0, 0 } +}; + +static driver_t sdma_driver = { + "sdma", + sdma_methods, + sizeof(struct sdma_softc), +}; + +static devclass_t sdma_devclass; + +DRIVER_MODULE(sdma, simplebus, sdma_driver, sdma_devclass, 0, 0); Copied: stable/10/sys/arm/freescale/imx/imx6_sdma.h (from r277644, head/sys/arm/freescale/imx/imx6_sdma.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/10/sys/arm/freescale/imx/imx6_sdma.h Sun May 24 18:59:45 2015 (r283500, copy of r277644, head/sys/arm/freescale/imx/imx6_sdma.h) @@ -0,0 +1,245 @@ +/*- + * Copyright (c) 2015 Ruslan Bukin + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#define SDMAARM_MC0PTR 0x00 /* ARM platform Channel 0 Pointer */ +#define SDMAARM_INTR 0x04 /* Channel Interrupts */ +#define SDMAARM_STOP_STAT 0x08 /* Channel Stop/Channel Status */ +#define SDMAARM_HSTART 0x0C /* Channel Start */ +#define SDMAARM_EVTOVR 0x10 /* Channel Event Override */ +#define SDMAARM_DSPOVR 0x14 /* Channel BP Override */ +#define SDMAARM_HOSTOVR 0x18 /* Channel ARM platform Override */ +#define SDMAARM_EVTPEND 0x1C /* Channel Event Pending */ +#define SDMAARM_RESET 0x24 /* Reset Register */ +#define SDMAARM_EVTERR 0x28 /* DMA Request Error Register */ +#define SDMAARM_INTRMASK 0x2C /* Channel ARM platform Interrupt Mask */ +#define SDMAARM_PSW 0x30 /* Schedule Status */ +#define SDMAARM_EVTERRDBG 0x34 /* DMA Request Error Register */ +#define SDMAARM_CONFIG 0x38 /* Configuration Register */ +#define CONFIG_CSM 0x3 +#define SDMAARM_SDMA_LOCK 0x3C /* SDMA LOCK */ +#define SDMAARM_ONCE_ENB 0x40 /* OnCE Enable */ +#define SDMAARM_ONCE_DATA 0x44 /* OnCE Data Register */ +#define SDMAARM_ONCE_INSTR 0x48 /* OnCE Instruction Register */ +#define SDMAARM_ONCE_STAT 0x4C /* OnCE Status Register */ +#define SDMAARM_ONCE_CMD 0x50 /* OnCE Command Register */ +#define SDMAARM_ILLINSTADDR 0x58 /* Illegal Instruction Trap Address */ +#define SDMAARM_CHN0ADDR 0x5C /* Channel 0 Boot Address */ +#define SDMAARM_EVT_MIRROR 0x60 /* DMA Requests */ +#define SDMAARM_EVT_MIRROR2 0x64 /* DMA Requests 2 */ +#define SDMAARM_XTRIG_CONF1 0x70 /* Cross-Trigger Events Configuration Register 1 */ +#define SDMAARM_XTRIG_CONF2 0x74 /* Cross-Trigger Events Configuration Register 2 */ +#define SDMAARM_SDMA_CHNPRI(n) (0x100 + 0x4 * n) /* Channel Priority Registers */ +#define SDMAARM_CHNENBL(n) (0x200 + 0x4 * n) /* Channel Enable RAM */ + +/* SDMA Event Mappings */ +#define SSI1_RX_1 35 +#define SSI1_TX_1 36 +#define SSI1_RX_0 37 +#define SSI1_TX_0 38 +#define SSI2_RX_1 39 +#define SSI2_TX_1 40 +#define SSI2_RX_0 41 +#define SSI2_TX_0 42 +#define SSI3_RX_1 43 +#define SSI3_TX_1 44 +#define SSI3_RX_0 45 +#define SSI3_TX_0 46 + +#define C0_ADDR 0x01 +#define C0_LOAD 0x02 +#define C0_DUMP 0x03 +#define C0_SETCTX 0x07 +#define C0_GETCTX 0x03 +#define C0_SETDM 0x01 +#define C0_SETPM 0x04 +#define C0_GETDM 0x02 +#define C0_GETPM 0x08 + +#define BD_DONE 0x01 +#define BD_WRAP 0x02 +#define BD_CONT 0x04 +#define BD_INTR 0x08 +#define BD_RROR 0x10 +#define BD_LAST 0x20 +#define BD_EXTD 0x80 + +/* sDMA data transfer length */ +#define CMD_4BYTES 0 +#define CMD_3BYTES 3 +#define CMD_2BYTES 2 +#define CMD_1BYTES 1 + +struct sdma_firmware_header { + uint32_t magic; + uint32_t version_major; + uint32_t version_minor; + uint32_t script_addrs_start; + uint32_t num_script_addrs; + uint32_t ram_code_start; + uint32_t ram_code_size; +}; + +struct sdma_mode_count { + uint16_t count; + uint8_t status; + uint8_t command; +}; + *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sun May 24 19:00:47 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id BAB888A9; Sun, 24 May 2015 19:00:47 +0000 (UTC) Received: from svn.freebsd.org (svn.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 A7FF515F9; Sun, 24 May 2015 19:00:47 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4OJ0lwS073296; Sun, 24 May 2015 19:00:47 GMT (envelope-from ian@FreeBSD.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4OJ0kJw073292; Sun, 24 May 2015 19:00:46 GMT (envelope-from ian@FreeBSD.org) Message-Id: <201505241900.t4OJ0kJw073292@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ian set sender to ian@FreeBSD.org using -f From: Ian Lepore Date: Sun, 24 May 2015 19:00: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: r283501 - stable/10/sys/arm/freescale/imx X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 19:00:47 -0000 Author: ian Date: Sun May 24 19:00:46 2015 New Revision: 283501 URL: https://svnweb.freebsd.org/changeset/base/283501 Log: MFC r282516: Add the code necessary to run the imx6 chip at its lowest clock/power operating point (396MHz/950mV). Modified: stable/10/sys/arm/freescale/imx/imx6_anatop.c stable/10/sys/arm/freescale/imx/imx6_ccm.c stable/10/sys/arm/freescale/imx/imx6_ccmreg.h stable/10/sys/arm/freescale/imx/imx_ccmvar.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/arm/freescale/imx/imx6_anatop.c ============================================================================== --- stable/10/sys/arm/freescale/imx/imx6_anatop.c Sun May 24 18:59:45 2015 (r283500) +++ stable/10/sys/arm/freescale/imx/imx6_anatop.c Sun May 24 19:00:46 2015 (r283501) @@ -72,6 +72,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -117,12 +118,16 @@ static struct imx6_anatop_softc *imx6_an /* * Table of "operating points". * These are combinations of frequency and voltage blessed by Freescale. + * While the datasheet says the ARM voltage can be as low as 925mV at + * 396MHz, it also says that the ARM and SOC voltages can't differ by + * more than 200mV, and the minimum SOC voltage is 1150mV, so that + * dictates the 950mV entry in this table. */ static struct oppt { uint32_t mhz; uint32_t mv; } imx6_oppt_table[] = { -/* { 396, 925}, XXX: need functional ccm code for this speed */ + { 396, 950}, { 792, 1150}, { 852, 1225}, { 996, 1225}, @@ -159,14 +164,15 @@ imx6_anatop_write_4(bus_size_t offset, u static void vdd_set(struct imx6_anatop_softc *sc, int mv) { - int newtarg, oldtarg; + int newtarg, newtargSoc, oldtarg; uint32_t delay, pmureg; static boolean_t init_done = false; /* * The datasheet says VDD_PU and VDD_SOC must be equal, and VDD_ARM - * can't be more than 50mV above or 200mV below them. For now to keep - * things simple we set all three to the same value. + * can't be more than 50mV above or 200mV below them. We keep them the + * same except in the case of the lowest operating point, which is + * handled as a special case below. */ pmureg = imx6_anatop_read_4(IMX6_ANALOG_PMU_REG_CORE); @@ -181,19 +187,29 @@ vdd_set(struct imx6_anatop_softc *sc, in newtarg = (mv - 700) / 25; /* + * The SOC voltage can't go below 1150mV, and thus because of the 200mV + * rule, the ARM voltage can't go below 950mV. The 950 is encoded in + * our oppt table, here we handle the SOC 1150 rule as a special case. + * (1150-700/25=18). + */ + newtargSoc = (newtarg < 18) ? 18 : newtarg; + + /* * The first time through the 3 voltages might not be equal so use a * long conservative delay. After that we need to delay 3uS for every - * 25mV step upward. No need to delay at all when lowering. + * 25mV step upward; we actually delay 6uS because empirically, it works + * and the 3uS per step recommended by the docs doesn't (3uS fails when + * going from 400->1200, but works for smaller changes). */ if (init_done) { if (newtarg == oldtarg) return; else if (newtarg > oldtarg) - delay = (newtarg - oldtarg) * 3; + delay = (newtarg - oldtarg) * 6; else delay = 0; } else { - delay = 700 / 25 * 3; + delay = (700 / 25) * 6; init_done = true; } @@ -206,7 +222,7 @@ vdd_set(struct imx6_anatop_softc *sc, in pmureg |= newtarg << IMX6_ANALOG_PMU_REG0_TARG_SHIFT; pmureg |= newtarg << IMX6_ANALOG_PMU_REG1_TARG_SHIFT; - pmureg |= newtarg << IMX6_ANALOG_PMU_REG2_TARG_SHIFT; + pmureg |= newtargSoc << IMX6_ANALOG_PMU_REG2_TARG_SHIFT; imx6_anatop_write_4(IMX6_ANALOG_PMU_REG_CORE, pmureg); DELAY(delay); @@ -214,24 +230,29 @@ vdd_set(struct imx6_anatop_softc *sc, in } static inline uint32_t -cpufreq_mhz_from_div(struct imx6_anatop_softc *sc, uint32_t div) +cpufreq_mhz_from_div(struct imx6_anatop_softc *sc, uint32_t corediv, + uint32_t plldiv) { - return (sc->refosc_mhz * (div / 2)); + return ((sc->refosc_mhz * (plldiv / 2)) / (corediv + 1)); } -static inline uint32_t -cpufreq_mhz_to_div(struct imx6_anatop_softc *sc, uint32_t cpu_mhz) +static inline void +cpufreq_mhz_to_div(struct imx6_anatop_softc *sc, uint32_t cpu_mhz, + uint32_t *corediv, uint32_t *plldiv) { - return (cpu_mhz / (sc->refosc_mhz / 2)); + *corediv = (cpu_mhz < 650) ? 1 : 0; + *plldiv = ((*corediv + 1) * cpu_mhz) / (sc->refosc_mhz / 2); } static inline uint32_t cpufreq_actual_mhz(struct imx6_anatop_softc *sc, uint32_t cpu_mhz) { + uint32_t corediv, plldiv; - return (cpufreq_mhz_from_div(sc, cpufreq_mhz_to_div(sc, cpu_mhz))); + cpufreq_mhz_to_div(sc, cpu_mhz, &corediv, &plldiv); + return (cpufreq_mhz_from_div(sc, corediv, plldiv)); } static struct oppt * @@ -257,7 +278,7 @@ cpufreq_nearest_oppt(struct imx6_anatop_ static void cpufreq_set_clock(struct imx6_anatop_softc * sc, struct oppt *op) { - uint32_t timeout, wrk32; + uint32_t corediv, plldiv, timeout, wrk32; /* If increasing the frequency, we must first increase the voltage. */ if (op->mhz > sc->cpu_curmhz) { @@ -273,6 +294,7 @@ cpufreq_set_clock(struct imx6_anatop_sof * - Wait for the LOCK bit to come on; it takes ~50 loop iterations. * - Turn off bypass mode; cpu should now be running at the new speed. */ + cpufreq_mhz_to_div(sc, op->mhz, &corediv, &plldiv); imx6_anatop_write_4(IMX6_ANALOG_CCM_PLL_ARM_CLR, IMX6_ANALOG_CCM_PLL_ARM_CLK_SRC_MASK); imx6_anatop_write_4(IMX6_ANALOG_CCM_PLL_ARM_SET, @@ -280,7 +302,7 @@ cpufreq_set_clock(struct imx6_anatop_sof wrk32 = imx6_anatop_read_4(IMX6_ANALOG_CCM_PLL_ARM); wrk32 &= ~IMX6_ANALOG_CCM_PLL_ARM_DIV_MASK; - wrk32 |= cpufreq_mhz_to_div(sc, op->mhz); + wrk32 |= plldiv; imx6_anatop_write_4(IMX6_ANALOG_CCM_PLL_ARM, wrk32); timeout = 10000; @@ -291,6 +313,7 @@ cpufreq_set_clock(struct imx6_anatop_sof imx6_anatop_write_4(IMX6_ANALOG_CCM_PLL_ARM_CLR, IMX6_ANALOG_CCM_PLL_ARM_BYPASS); + imx_ccm_set_cacrr(corediv); /* If lowering the frequency, it is now safe to lower the voltage. */ if (op->mhz < sc->cpu_curmhz) @@ -298,7 +321,7 @@ cpufreq_set_clock(struct imx6_anatop_sof sc->cpu_curmhz = op->mhz; /* Tell the mpcore timer that its frequency has changed. */ - arm_tmr_change_frequency( + arm_tmr_change_frequency( cpufreq_actual_mhz(sc, sc->cpu_curmhz) * 1000000 / 2); } @@ -752,11 +775,12 @@ imx6_anatop_probe(device_t dev) uint32_t imx6_get_cpu_clock() { - uint32_t div; + uint32_t corediv, plldiv; - div = imx6_anatop_read_4(IMX6_ANALOG_CCM_PLL_ARM) & + corediv = imx_ccm_get_cacrr(); + plldiv = imx6_anatop_read_4(IMX6_ANALOG_CCM_PLL_ARM) & IMX6_ANALOG_CCM_PLL_ARM_DIV_MASK; - return (cpufreq_mhz_from_div(imx6_anatop_sc, div)); + return (cpufreq_mhz_from_div(imx6_anatop_sc, corediv, plldiv)); } static device_method_t imx6_anatop_methods[] = { Modified: stable/10/sys/arm/freescale/imx/imx6_ccm.c ============================================================================== --- stable/10/sys/arm/freescale/imx/imx6_ccm.c Sun May 24 18:59:45 2015 (r283500) +++ stable/10/sys/arm/freescale/imx/imx6_ccm.c Sun May 24 19:00:46 2015 (r283501) @@ -320,6 +320,20 @@ imx_ccm_ahb_hz(void) return (132000000); } +uint32_t +imx_ccm_get_cacrr(void) +{ + + return (RD4(ccm_sc, CCM_CACCR)); +} + +void +imx_ccm_set_cacrr(uint32_t divisor) +{ + + WR4(ccm_sc, CCM_CACCR, divisor); +} + static device_method_t ccm_methods[] = { /* Device interface */ DEVMETHOD(device_probe, ccm_probe), Modified: stable/10/sys/arm/freescale/imx/imx6_ccmreg.h ============================================================================== --- stable/10/sys/arm/freescale/imx/imx6_ccmreg.h Sun May 24 18:59:45 2015 (r283500) +++ stable/10/sys/arm/freescale/imx/imx6_ccmreg.h Sun May 24 19:00:46 2015 (r283501) @@ -29,6 +29,7 @@ #ifndef IMX6_CCMREG_H #define IMX6_CCMREG_H +#define CCM_CACCR 0x010 #define CCM_CSCMR1 0x01C #define SSI1_CLK_SEL_S 10 #define SSI2_CLK_SEL_S 12 @@ -64,6 +65,5 @@ #define CCM_CCGR5 0x07C #define CCM_CCGR6 0x080 #define CCM_CMEOR 0x088 - #endif Modified: stable/10/sys/arm/freescale/imx/imx_ccmvar.h ============================================================================== --- stable/10/sys/arm/freescale/imx/imx_ccmvar.h Sun May 24 18:59:45 2015 (r283500) +++ stable/10/sys/arm/freescale/imx/imx_ccmvar.h Sun May 24 19:00:46 2015 (r283501) @@ -53,4 +53,8 @@ void imx_ccm_usb_enable(device_t _usbdev void imx_ccm_usbphy_enable(device_t _phydev); void imx_ccm_ssi_configure(device_t _ssidev); +/* Routines to get and set the arm clock root divisor register. */ +uint32_t imx_ccm_get_cacrr(void); +void imx_ccm_set_cacrr(uint32_t _divisor); + #endif From owner-svn-src-all@FreeBSD.ORG Sun May 24 19:35:00 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 949A7C47; Sun, 24 May 2015 19:35:00 +0000 (UTC) Received: from heemeyer.club (heemeyer.club [IPv6:2001:19f0:6400:80a1::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "heemeyer.club", Issuer "heemeyer.club" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4C9A51964; Sun, 24 May 2015 19:34:59 +0000 (UTC) Received: from dchagin.static.corbina.net (dchagin.static.corbina.ru [78.107.232.239]) by heemeyer.club (8.15.1/8.15.1) with ESMTPS id t4OJYs9f002903 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sun, 24 May 2015 19:34:56 GMT (envelope-from dchagin@dchagin.static.corbina.net) X-Authentication-Warning: heemeyer.club: Host dchagin.static.corbina.ru [78.107.232.239] claimed to be dchagin.static.corbina.net Received: from dchagin.static.corbina.net (localhost [127.0.0.1]) by dchagin.static.corbina.net (8.15.1/8.15.1) with ESMTPS id t4OJYsVa002739 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Sun, 24 May 2015 22:34:54 +0300 (MSK) (envelope-from dchagin@dchagin.static.corbina.net) Received: (from dchagin@localhost) by dchagin.static.corbina.net (8.15.1/8.15.1/Submit) id t4OJYrCQ002738; Sun, 24 May 2015 22:34:53 +0300 (MSK) (envelope-from dchagin) Date: Sun, 24 May 2015 22:34:48 +0300 From: Chagin Dmitry To: Konstantin Belousov Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283479 - in head/sys: amd64/amd64 amd64/ia32 arm/arm i386/i386 mips/mips powerpc/powerpc sparc64/sparc64 Message-ID: <20150524193448.GA2729@dchagin.static.corbina.net> References: <201505241756.t4OHu3ot035613@svn.freebsd.org> <20150524182515.GF2499@kib.kiev.ua> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20150524182515.GF2499@kib.kiev.ua> User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 19:35:00 -0000 On Sun, May 24, 2015 at 09:25:15PM +0300, Konstantin Belousov wrote: > On Sun, May 24, 2015 at 05:56:03PM +0000, Dmitry Chagin wrote: > > Author: dchagin > > Date: Sun May 24 17:56:02 2015 > > New Revision: 283479 > > URL: https://svnweb.freebsd.org/changeset/base/283479 > > > > Log: > > The kernel sends signals to the processes via ABI specific sv_sendsig method. > > Native ABI do not need signal conversion, only emulators may want this. Usually > > emulators implements its own sv_sendsig method. For now only ibcs2 emulator does > > not have own sv_sendsig implementation and depends on native sendsig() method. > > So, remove any extra attempts to convert signal numbers from native sendsig() > > methods except from i386 where ibsc2 is living. > > > > Modified: > > head/sys/amd64/amd64/machdep.c > > head/sys/amd64/ia32/ia32_signal.c > > head/sys/arm/arm/machdep.c > > head/sys/i386/i386/machdep.c > > head/sys/mips/mips/freebsd32_machdep.c > > head/sys/mips/mips/pm_machdep.c > > head/sys/powerpc/powerpc/exec_machdep.c > > head/sys/sparc64/sparc64/machdep.c > > > > Modified: head/sys/amd64/amd64/machdep.c > > ============================================================================== > > --- head/sys/amd64/amd64/machdep.c Sun May 24 17:53:48 2015 (r283478) > > +++ head/sys/amd64/amd64/machdep.c Sun May 24 17:56:02 2015 (r283479) > > @@ -398,10 +398,6 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, > > /* Align to 16 bytes. */ > > sfp = (struct sigframe *)((unsigned long)sp & ~0xFul); > > > > - /* Translate the signal if appropriate. */ > > - if (p->p_sysent->sv_sigtbl && sig <= p->p_sysent->sv_sigsize) > > - sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)]; > > - > Does struct sysent still need sv_sigtbl and sv_sigsize members then ? ubsc2 share sendsig with i386, so this members still used -- Have fun! chd From owner-svn-src-all@FreeBSD.ORG Sun May 24 23:19:48 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 91E2DDF2; Sun, 24 May 2015 23:19:48 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from svn.freebsd.org (svn.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 7FD6676C; Sun, 24 May 2015 23:19:48 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4ONJmgF007057; Sun, 24 May 2015 23:19:48 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4ONJmOu007055; Sun, 24 May 2015 23:19:48 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201505242319.t4ONJmOu007055@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Garrett Cooper Date: Sun, 24 May 2015 23:19:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283502 - head/lib X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 23:19:48 -0000 Author: ngie Date: Sun May 24 23:19:47 2015 New Revision: 283502 URL: https://svnweb.freebsd.org/changeset/base/283502 Log: Remove SUBDIR_DEPEND for non-existent libreadline directory libreadline lives under gnu/lib MFC after: 1 week Modified: head/lib/Makefile Modified: head/lib/Makefile ============================================================================== --- head/lib/Makefile Sun May 24 19:00:46 2015 (r283501) +++ head/lib/Makefile Sun May 24 23:19:47 2015 (r283502) @@ -147,7 +147,6 @@ SUBDIR_DEPEND_libpam= libcrypt libopie $ SUBDIR_DEPEND_libpjdlog= libutil SUBDIR_DEPEND_libprocstat= libkvm libutil SUBDIR_DEPEND_libradius= libmd -SUBDIR_DEPEND_libreadline= ncurses SUBDIR_DEPEND_libsmb= libkiconv SUBDIR_DEPEND_libstdc++= msun SUBDIR_DEPEND_libtacplus= libmd From owner-svn-src-all@FreeBSD.ORG Sun May 24 23:53:12 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D85D54C1; Sun, 24 May 2015 23:53:12 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (svn.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 C5071B54; Sun, 24 May 2015 23:53:12 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4ONrCGu025854; Sun, 24 May 2015 23:53:12 GMT (envelope-from gonzo@FreeBSD.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4ONrB5A025847; Sun, 24 May 2015 23:53:11 GMT (envelope-from gonzo@FreeBSD.org) Message-Id: <201505242353.t4ONrB5A025847@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: gonzo set sender to gonzo@FreeBSD.org using -f From: Oleksandr Tymoshenko Date: Sun, 24 May 2015 23:53:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283503 - in head/sys: arm/ti/am335x dev/fdt dev/ofw X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2015 23:53:13 -0000 Author: gonzo Date: Sun May 24 23:53:10 2015 New Revision: 283503 URL: https://svnweb.freebsd.org/changeset/base/283503 Log: Rename fdt_find_child to ofw_bus_find_child. There is nothing FDT-specific in this function. Suggested by: andrew@ Modified: head/sys/arm/ti/am335x/am335x_lcd.c head/sys/dev/fdt/fdt_common.c head/sys/dev/fdt/fdt_common.h head/sys/dev/ofw/ofw_bus_subr.c head/sys/dev/ofw/ofw_bus_subr.h Modified: head/sys/arm/ti/am335x/am335x_lcd.c ============================================================================== --- head/sys/arm/ti/am335x/am335x_lcd.c Sun May 24 23:19:47 2015 (r283502) +++ head/sys/arm/ti/am335x/am335x_lcd.c Sun May 24 23:53:10 2015 (r283503) @@ -273,7 +273,7 @@ am335x_read_timing(device_t dev, phandle int error; phandle_t timings_node, timing_node, native; - timings_node = fdt_find_child(node, "display-timings"); + timings_node = ofw_bus_find_child(node, "display-timings"); if (timings_node == 0) { device_printf(dev, "no \"display-timings\" node\n"); return (-1); @@ -346,7 +346,7 @@ am335x_read_panel_info(device_t dev, pha int error; phandle_t panel_info_node; - panel_info_node = fdt_find_child(node, "panel-info"); + panel_info_node = ofw_bus_find_child(node, "panel-info"); if (panel_info_node == 0) return (-1); Modified: head/sys/dev/fdt/fdt_common.c ============================================================================== --- head/sys/dev/fdt/fdt_common.c Sun May 24 23:19:47 2015 (r283502) +++ head/sys/dev/fdt/fdt_common.c Sun May 24 23:53:10 2015 (r283503) @@ -57,7 +57,6 @@ __FBSDID("$FreeBSD$"); #define FDT_COMPAT_LEN 255 #define FDT_TYPE_LEN 64 -#define FDT_NAME_LEN 32 #define FDT_REG_CELLS 4 @@ -311,22 +310,6 @@ fdt_find_compatible(phandle_t start, con } phandle_t -fdt_find_child(phandle_t start, const char *child_name) -{ - char name[FDT_NAME_LEN]; - phandle_t child; - - for (child = OF_child(start); child != 0; child = OF_peer(child)) { - if (OF_getprop(child, "name", name, sizeof(name)) <= 0) - continue; - if (strcmp(name, child_name) == 0) - return (child); - } - - return (0); -} - -phandle_t fdt_depth_search_compatible(phandle_t start, const char *compat, int strict) { phandle_t child, node; Modified: head/sys/dev/fdt/fdt_common.h ============================================================================== --- head/sys/dev/fdt/fdt_common.h Sun May 24 23:19:47 2015 (r283502) +++ head/sys/dev/fdt/fdt_common.h Sun May 24 23:53:10 2015 (r283503) @@ -81,7 +81,6 @@ u_long fdt_data_get(void *, int); int fdt_data_to_res(pcell_t *, int, int, u_long *, u_long *); phandle_t fdt_find_compatible(phandle_t, const char *, int); phandle_t fdt_depth_search_compatible(phandle_t, const char *, int); -phandle_t fdt_find_child(phandle_t, const char *); int fdt_get_mem_regions(struct mem_region *, int *, uint32_t *); int fdt_get_reserved_regions(struct mem_region *, int *); int fdt_get_phyaddr(phandle_t, device_t, int *, void **); Modified: head/sys/dev/ofw/ofw_bus_subr.c ============================================================================== --- head/sys/dev/ofw/ofw_bus_subr.c Sun May 24 23:19:47 2015 (r283502) +++ head/sys/dev/ofw/ofw_bus_subr.c Sun May 24 23:53:10 2015 (r283503) @@ -503,6 +503,28 @@ ofw_bus_intr_to_rl(device_t dev, phandle } phandle_t +ofw_bus_find_child(phandle_t start, const char *child_name) +{ + char *name; + int ret; + phandle_t child; + + for (child = OF_child(start); child != 0; child = OF_peer(child)) { + ret = OF_getencprop_alloc(child, "name", sizeof(*name), (void **)&name); + if (ret == -1) + continue; + if (strcmp(name, child_name) == 0) { + free(name, M_OFWPROP); + return (child); + } + + free(name, M_OFWPROP); + } + + return (0); +} + +phandle_t ofw_bus_find_compatible(phandle_t node, const char *onecompat) { phandle_t child, ret; Modified: head/sys/dev/ofw/ofw_bus_subr.h ============================================================================== --- head/sys/dev/ofw/ofw_bus_subr.h Sun May 24 23:19:47 2015 (r283502) +++ head/sys/dev/ofw/ofw_bus_subr.h Sun May 24 23:53:10 2015 (r283503) @@ -104,4 +104,7 @@ int ofw_bus_has_prop(device_t, const cha /* Helper to search for a child with a given compat prop */ phandle_t ofw_bus_find_compatible(phandle_t, const char *); +/* Helper to search for a child with a given name */ +phandle_t ofw_bus_find_child(phandle_t, const char *); + #endif /* !_DEV_OFW_OFW_BUS_SUBR_H_ */ From owner-svn-src-all@FreeBSD.ORG Mon May 25 00:30:27 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2DF7CB4F; Mon, 25 May 2015 00:30:27 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from svn.freebsd.org (svn.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 1B243EDE; Mon, 25 May 2015 00:30:27 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4P0UQRg045392; Mon, 25 May 2015 00:30:26 GMT (envelope-from sbruno@FreeBSD.org) Received: (from sbruno@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4P0UQnx045391; Mon, 25 May 2015 00:30:26 GMT (envelope-from sbruno@FreeBSD.org) Message-Id: <201505250030.t4P0UQnx045391@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: sbruno set sender to sbruno@FreeBSD.org using -f From: Sean Bruno Date: Mon, 25 May 2015 00:30:26 +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: r283504 - stable/10/sys/dev/e1000 X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 00:30:27 -0000 Author: sbruno Date: Mon May 25 00:30:26 2015 New Revision: 283504 URL: https://svnweb.freebsd.org/changeset/base/283504 Log: MFC r283290 Bump rx_overruns when indicated by the ICR mask. PR: 199716 Sponsored by: Limelight Networks Modified: stable/10/sys/dev/e1000/if_em.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/e1000/if_em.c ============================================================================== --- stable/10/sys/dev/e1000/if_em.c Sun May 24 23:53:10 2015 (r283503) +++ stable/10/sys/dev/e1000/if_em.c Mon May 25 00:30:26 2015 (r283504) @@ -1620,6 +1620,9 @@ em_msix_link(void *arg) ++adapter->link_irq; reg_icr = E1000_READ_REG(&adapter->hw, E1000_ICR); + if (reg_icr & E1000_ICR_RXO) + adapter->rx_overruns++; + if (reg_icr & (E1000_ICR_RXSEQ | E1000_ICR_LSC)) { adapter->hw.mac.get_link_status = 1; em_handle_link(adapter, 0); From owner-svn-src-all@FreeBSD.ORG Mon May 25 01:06:58 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 576B440B; Mon, 25 May 2015 01:06:58 +0000 (UTC) (envelope-from ian@FreeBSD.org) Received: from svn.freebsd.org (svn.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 42A1C261; Mon, 25 May 2015 01:06:58 +0000 (UTC) (envelope-from ian@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4P16wj6061401; Mon, 25 May 2015 01:06:58 GMT (envelope-from ian@FreeBSD.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4P16tCn061384; Mon, 25 May 2015 01:06:55 GMT (envelope-from ian@FreeBSD.org) Message-Id: <201505250106.t4P16tCn061384@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ian set sender to ian@FreeBSD.org using -f From: Ian Lepore Date: Mon, 25 May 2015 01:06: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: r283505 - in stable/10/sys/boot: arm/uboot common uboot/common uboot/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-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 01:06:58 -0000 Author: ian Date: Mon May 25 01:06:55 2015 New Revision: 283505 URL: https://svnweb.freebsd.org/changeset/base/283505 Log: MFC r277962, r277988, r282661, r282727, r282731, r283013, r283035: Add support for booting relocatable kernels on PowerPC. Add code to support loading relocatable kernels at offsets that are not zero. Move ubldr text section to the start of the output file, so that when you create a stripped .bin file from it the entry point is the first byte of the file. (Will allow "load $addr $file ; go $addr" in u-boot.) Create a relocatable instance of ubldr for ARM (ubldr.bin). Re-link ubldr when any of its libraries change. An ARM kernel can be loaded at any 2MB boundary, make ubldr aware of that. Added: stable/10/sys/boot/common/self_reloc.c - copied unchanged from r282727, head/sys/boot/common/self_reloc.c Modified: stable/10/sys/boot/arm/uboot/Makefile stable/10/sys/boot/arm/uboot/ldscript.arm stable/10/sys/boot/arm/uboot/start.S stable/10/sys/boot/common/load_elf.c stable/10/sys/boot/uboot/common/main.c stable/10/sys/boot/uboot/lib/copy.c stable/10/sys/boot/uboot/lib/elf_freebsd.c stable/10/sys/boot/uboot/lib/libuboot.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/boot/arm/uboot/Makefile ============================================================================== --- stable/10/sys/boot/arm/uboot/Makefile Mon May 25 00:30:26 2015 (r283504) +++ stable/10/sys/boot/arm/uboot/Makefile Mon May 25 01:06:55 2015 (r283505) @@ -2,7 +2,8 @@ .include -PROG= ubldr +FILES= ubldr ubldr.bin + NEWVERSWHAT= "U-Boot loader" ${MACHINE_ARCH} BINDIR?= /boot INSTALLFLAGS= -b @@ -12,7 +13,7 @@ WARNS?= 1 UBLDR_LOADADDR?= 0x1000000 # Architecture-specific loader code -SRCS= start.S conf.c vers.c +SRCS= start.S conf.c self_reloc.c vers.c .if !defined(LOADER_NO_DISK_SUPPORT) LOADER_DISK_SUPPORT?= yes @@ -93,9 +94,7 @@ CLEANFILES+= vers.c loader.help CFLAGS+= -ffreestanding -msoft-float -LDFLAGS= -nostdlib -static -LDFLAGS+= -T ldscript.generated -LDFLAGS+= -T ${.CURDIR}/ldscript.${MACHINE_CPUARCH} +LDFLAGS= -nostdlib -static -T ${.CURDIR}/ldscript.${MACHINE_CPUARCH} # Pull in common loader code .PATH: ${.CURDIR}/../../uboot/common @@ -116,6 +115,8 @@ NO_WERROR.clang= DPADD= ${LIBFICL} ${LIBUBOOT} ${LIBFDT} ${LIBUBOOT_FDT} ${LIBSTAND} LDADD= ${LIBFICL} ${LIBUBOOT} ${LIBFDT} ${LIBUBOOT_FDT} -lstand +OBJS+= ${SRCS:N*.h:R:S/$/.o/g} + vers.c: ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version sh ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version ${NEWVERSWHAT} @@ -123,17 +124,24 @@ loader.help: help.common help.uboot ${.C cat ${.ALLSRC} | \ awk -f ${.CURDIR}/../../common/merge_help.awk > ${.TARGET} -${PROG}: ldscript.generated ${.CURDIR}/ldscript.${MACHINE_CPUARCH} +ldscript.abs: + echo "UBLDR_LOADADDR = ${UBLDR_LOADADDR};" >${.TARGET} + +ldscript.pie: + echo "UBLDR_LOADADDR = 0;" >${.TARGET} + +ubldr: ${OBJS} ldscript.abs ${.CURDIR}/ldscript.${MACHINE_CPUARCH} ${DPADD} + ${CC} ${CFLAGS} -T ldscript.abs ${LDFLAGS} \ + -o ${.TARGET} ${OBJS} ${LDADD} + +ubldr.pie: ${OBJS} ldscript.pie ${.CURDIR}/ldscript.${MACHINE_CPUARCH} ${DPADD} + ${CC} ${CFLAGS} -T ldscript.pie ${LDFLAGS} -pie -Wl,-Bsymbolic \ + -o ${.TARGET} ${OBJS} ${LDADD} + +ubldr.bin: ubldr.pie + ${OBJCOPY} -S -O binary ubldr.pie ${.TARGET} -ldscript.generated:: - rm -f ldscript.generated.tmp - echo "UBLDR_LOADADDR = ${UBLDR_LOADADDR};" >ldscript.generated.tmp - if diff ldscript.generated ldscript.generated.tmp > /dev/null; then \ - true; \ - else \ - rm -f ldscript.generated; \ - mv ldscript.generated.tmp ldscript.generated; \ - fi +CLEANFILES+= ldscript.abs ldscript.pie ubldr ubldr.pie ubldr.bin .if !defined(LOADER_ONLY) .PATH: ${.CURDIR}/../../forth Modified: stable/10/sys/boot/arm/uboot/ldscript.arm ============================================================================== --- stable/10/sys/boot/arm/uboot/ldscript.arm Mon May 25 00:30:26 2015 (r283504) +++ stable/10/sys/boot/arm/uboot/ldscript.arm Mon May 25 01:06:55 2015 (r283505) @@ -6,6 +6,15 @@ SECTIONS { /* Read-only sections, merged into text segment: */ . = UBLDR_LOADADDR + SIZEOF_HEADERS; + .text : + { + *(.text) + /* .gnu.warning sections are handled specially by elf32.em. */ + *(.gnu.warning) + *(.gnu.linkonce.t*) + } =0 + _etext = .; + PROVIDE (etext = .); .interp : { *(.interp) } .hash : { *(.hash) } .dynsym : { *(.dynsym) } @@ -32,15 +41,6 @@ SECTIONS .rela.sbss : { *(.rela.sbss) } .rela.sdata2 : { *(.rela.sdata2) } .rela.sbss2 : { *(.rela.sbss2) } - .text : - { - *(.text) - /* .gnu.warning sections are handled specially by elf32.em. */ - *(.gnu.warning) - *(.gnu.linkonce.t*) - } =0 - _etext = .; - PROVIDE (etext = .); .init : { *(.init) } =0 .fini : { *(.fini) } =0 .rodata : { *(.rodata) *(.gnu.linkonce.r*) } Modified: stable/10/sys/boot/arm/uboot/start.S ============================================================================== --- stable/10/sys/boot/arm/uboot/start.S Mon May 25 00:30:26 2015 (r283504) +++ stable/10/sys/boot/arm/uboot/start.S Mon May 25 01:06:55 2015 (r283505) @@ -29,12 +29,38 @@ #include #include + .text + .extern _C_LABEL(self_reloc), _C_LABEL(main) + .weak _DYNAMIC + /* * Entry point to the loader that U-Boot passes control to. */ - .text .globl _start _start: + +#ifdef _ARM_ARCH_6 + mrc p15, 0, ip, c1, c0, 0 + orr ip, ip, #(CPU_CONTROL_UNAL_ENABLE) + orr ip, ip, #(CPU_CONTROL_AFLT_ENABLE) + mcr p15, 0, ip, c1, c0, 0 +#endif + /* + * Do self-relocation when the weak external symbol _DYNAMIC is non-NULL. + * When linked as a dynamic relocatable file, the linker automatically + * defines _DYNAMIC with a value that is the offset of the dynamic + * relocation info section. + * Note that we're still on u-boot's stack here, but the self_reloc + * code uses only a couple dozen bytes of stack space. + */ + adr ip, .here_off /* .here_off is a symbol whose value */ + ldr r0, [ip] /* is its own offset in the text seg. */ + sub r0, ip, r0 /* Get its pc-relative address and */ + ldr r1, .dynamic_off /* subtract its value and we get */ + teq r1, #0 /* r0 = physaddr we were loaded at. */ + addne r1, r1, r0 /* r1 = dynamic section physaddr. */ + blne _C_LABEL(self_reloc) /* Do reloc if _DYNAMIC is non-NULL. */ + /* Hint where to look for the API signature */ ldr ip, =uboot_address str sp, [ip] @@ -44,16 +70,20 @@ _start: str r8, [ip, #0] str r9, [ip, #4] -#ifdef _ARM_ARCH_6 - mrc p15, 0, r2, c1, c0, 0 - orr r2, r2, #(CPU_CONTROL_UNAL_ENABLE) - orr r2, r2, #(CPU_CONTROL_AFLT_ENABLE) - mcr p15, 0, r2, c1, c0, 0 -#endif - - /* Start loader */ + /* + * Start loader. This is basically a tail-recursion call; if main() + * returns, it returns to u-boot (which reports the value returned r0). + */ b main + /* + * Data for self-relocation, in the text segment for pc-rel access. + */ +.here_off: + .word . +.dynamic_off: + .word _DYNAMIC + /* * syscall() */ Modified: stable/10/sys/boot/common/load_elf.c ============================================================================== --- stable/10/sys/boot/common/load_elf.c Mon May 25 00:30:26 2015 (r283504) +++ stable/10/sys/boot/common/load_elf.c Mon May 25 01:06:55 2015 (r283505) @@ -141,22 +141,15 @@ __elfN(loadfile)(char *filename, u_int64 * Check to see what sort of module we are. */ kfp = file_findfile(NULL, NULL); - if (ehdr->e_type == ET_DYN) { - /* Looks like a kld module */ - if (kfp == NULL) { - printf("elf" __XSTRING(__ELF_WORD_SIZE) "_loadfile: can't load module before kernel\n"); - err = EPERM; - goto oerr; - } - if (strcmp(__elfN(kerneltype), kfp->f_type)) { - printf("elf" __XSTRING(__ELF_WORD_SIZE) "_loadfile: can't load module with kernel type '%s'\n", kfp->f_type); - err = EPERM; - goto oerr; - } - /* Looks OK, got ahead */ - ef.kernel = 0; - - } else if (ehdr->e_type == ET_EXEC) { +#ifdef __powerpc__ + /* + * Kernels can be ET_DYN, so just assume the first loaded object is the + * kernel. This assumption will be checked later. + */ + if (kfp == NULL) + ef.kernel = 1; +#endif + if (ef.kernel || ehdr->e_type == ET_EXEC) { /* Looks like a kernel */ if (kfp != NULL) { printf("elf" __XSTRING(__ELF_WORD_SIZE) "_loadfile: kernel already loaded\n"); @@ -164,16 +157,39 @@ __elfN(loadfile)(char *filename, u_int64 goto oerr; } /* - * Calculate destination address based on kernel entrypoint + * Calculate destination address based on kernel entrypoint. + * + * For ARM, the destination address is independent of any values in the + * elf header (an ARM kernel can be loaded at any 2MB boundary), so we + * leave dest set to the value calculated by archsw.arch_loadaddr() and + * passed in to this function. */ - dest = (ehdr->e_entry & ~PAGE_MASK); - if (dest == 0) { +#ifndef __arm__ + if (ehdr->e_type == ET_EXEC) + dest = (ehdr->e_entry & ~PAGE_MASK); +#endif + if ((ehdr->e_entry & ~PAGE_MASK) == 0) { printf("elf" __XSTRING(__ELF_WORD_SIZE) "_loadfile: not a kernel (maybe static binary?)\n"); err = EPERM; goto oerr; } ef.kernel = 1; + } else if (ehdr->e_type == ET_DYN) { + /* Looks like a kld module */ + if (kfp == NULL) { + printf("elf" __XSTRING(__ELF_WORD_SIZE) "_loadfile: can't load module before kernel\n"); + err = EPERM; + goto oerr; + } + if (strcmp(__elfN(kerneltype), kfp->f_type)) { + printf("elf" __XSTRING(__ELF_WORD_SIZE) "_loadfile: can't load module with kernel type '%s'\n", kfp->f_type); + err = EPERM; + goto oerr; + } + /* Looks OK, got ahead */ + ef.kernel = 0; + } else { err = EFTYPE; goto oerr; @@ -259,7 +275,7 @@ __elfN(loadimage)(struct preloaded_file ret = 0; firstaddr = lastaddr = 0; ehdr = ef->ehdr; - if (ef->kernel) { + if (ehdr->e_type == ET_EXEC) { #if defined(__i386__) || defined(__amd64__) #if __ELF_WORD_SIZE == 64 off = - (off & 0xffffffffff000000ull);/* x86_64 relocates after locore */ @@ -291,32 +307,30 @@ __elfN(loadimage)(struct preloaded_file off = 0; #elif defined(__arm__) /* - * The elf headers in some kernels specify virtual addresses in all - * header fields. More recently, the e_entry and p_paddr fields are the - * proper physical addresses. Even when the p_paddr fields are correct, - * the MI code below uses the p_vaddr fields with an offset added for - * loading (doing so is arguably wrong). To make loading work, we need - * an offset that represents the difference between physical and virtual - * addressing. ARM kernels are always linked at 0xCnnnnnnn. Depending - * on the headers, the offset value passed in may be physical or virtual - * (because it typically comes from e_entry), but we always replace - * whatever is passed in with the va<->pa offset. On the other hand, we - * always remove the high-order part of the entry address whether it's - * physical or virtual, because it will be adjusted later for the actual - * physical entry point based on where the image gets loaded. + * The elf headers in arm kernels specify virtual addresses in all + * header fields, even the ones that should be physical addresses. + * We assume the entry point is in the first page, and masking the page + * offset will leave us with the virtual address the kernel was linked + * at. We subtract that from the load offset, making 'off' into the + * value which, when added to a virtual address in an elf header, + * translates it to a physical address. We do the va->pa conversion on + * the entry point address in the header now, so that later we can + * launch the kernel by just jumping to that address. */ - off = -0xc0000000; - ehdr->e_entry &= ~0xf0000000; + off -= ehdr->e_entry & ~PAGE_MASK; + ehdr->e_entry += off; #ifdef ELF_VERBOSE printf("ehdr->e_entry 0x%08x, va<->pa off %llx\n", ehdr->e_entry, off); #endif #else off = 0; /* other archs use direct mapped kernels */ #endif - __elfN(relocation_offset) = off; } ef->off = off; + if (ef->kernel) + __elfN(relocation_offset) = off; + if ((ehdr->e_phoff + ehdr->e_phnum * sizeof(*phdr)) > ef->firstlen) { printf("elf" __XSTRING(__ELF_WORD_SIZE) "_loadimage: program header not within first page\n"); goto out; Copied: stable/10/sys/boot/common/self_reloc.c (from r282727, head/sys/boot/common/self_reloc.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/10/sys/boot/common/self_reloc.c Mon May 25 01:06:55 2015 (r283505, copy of r282727, head/sys/boot/common/self_reloc.c) @@ -0,0 +1,123 @@ +/*- + * Copyright (c) 2008-2010 Rui Paulo + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include + +#if defined(__aarch64__) +#define ElfW_Rel Elf64_Rela +#define ElfW_Dyn Elf64_Dyn +#define ELFW_R_TYPE ELF64_R_TYPE +#define ELF_RELA +#elif defined(__arm__) || defined(__i386__) +#define ElfW_Rel Elf32_Rel +#define ElfW_Dyn Elf32_Dyn +#define ELFW_R_TYPE ELF32_R_TYPE +#elif defined(__amd64__) +#define ElfW_Rel Elf64_Rel +#define ElfW_Dyn Elf64_Dyn +#define ELFW_R_TYPE ELF64_R_TYPE +#else +#error architecture not supported +#endif +#if defined(__aarch64__) +#define RELOC_TYPE_NONE R_AARCH64_NONE +#define RELOC_TYPE_RELATIVE R_AARCH64_RELATIVE +#elif defined(__amd64__) +#define RELOC_TYPE_NONE R_X86_64_NONE +#define RELOC_TYPE_RELATIVE R_X86_64_RELATIVE +#elif defined(__arm__) +#define RELOC_TYPE_NONE R_ARM_NONE +#define RELOC_TYPE_RELATIVE R_ARM_RELATIVE +#elif defined(__i386__) +#define RELOC_TYPE_NONE R_386_NONE +#define RELOC_TYPE_RELATIVE R_386_RELATIVE +#endif + +/* + * A simple elf relocator. + */ +void +self_reloc(Elf_Addr baseaddr, ElfW_Dyn *dynamic) +{ + Elf_Word relsz, relent; + Elf_Addr *newaddr; + ElfW_Rel *rel; + ElfW_Dyn *dynp; + + /* + * Find the relocation address, its size and the relocation entry. + */ + relsz = 0; + relent = 0; + for (dynp = dynamic; dynp->d_tag != DT_NULL; dynp++) { + switch (dynp->d_tag) { + case DT_REL: + case DT_RELA: + rel = (ElfW_Rel *)(dynp->d_un.d_ptr + baseaddr); + break; + case DT_RELSZ: + case DT_RELASZ: + relsz = dynp->d_un.d_val; + break; + case DT_RELENT: + case DT_RELAENT: + relent = dynp->d_un.d_val; + break; + default: + break; + } + } + + /* + * Perform the actual relocation. + */ + for (; relsz > 0; relsz -= relent) { + switch (ELFW_R_TYPE(rel->r_info)) { + case RELOC_TYPE_NONE: + /* No relocation needs be performed. */ + break; + + case RELOC_TYPE_RELATIVE: + /* Address relative to the base address. */ + newaddr = (Elf_Addr *)(rel->r_offset + baseaddr); + *newaddr += baseaddr; + /* Add the addend when the ABI uses them */ +#ifdef ELF_RELA + *newaddr += rel->r_addend; +#endif + break; + default: + /* XXX: do we need other relocations ? */ + break; + } + rel = (ElfW_Rel *) ((caddr_t) rel + relent); + } +} Modified: stable/10/sys/boot/uboot/common/main.c ============================================================================== --- stable/10/sys/boot/uboot/common/main.c Mon May 25 00:30:26 2015 (r283504) +++ stable/10/sys/boot/uboot/common/main.c Mon May 25 01:06:55 2015 (r283505) @@ -28,6 +28,7 @@ #include __FBSDID("$FreeBSD$"); +#include #include @@ -44,6 +45,9 @@ struct uboot_devdesc currdev; struct arch_switch archsw; /* MI/MD interface boundary */ int devs_no; +uintptr_t uboot_heap_start; +uintptr_t uboot_heap_end; + struct device_type { const char *name; int type; @@ -414,7 +418,9 @@ main(void) * Initialise the heap as early as possible. Once this is done, * alloc() is usable. The stack is buried inside us, so this is safe. */ - setheap((void *)end, (void *)(end + 512 * 1024)); + uboot_heap_start = round_page((uintptr_t)end); + uboot_heap_end = uboot_heap_start + 512 * 1024; + setheap((void *)uboot_heap_start, (void *)uboot_heap_end); /* * Set up console. @@ -487,6 +493,7 @@ main(void) setenv("LINES", "24", 1); /* optional */ setenv("prompt", "loader>", 1); + archsw.arch_loadaddr = uboot_loadaddr; archsw.arch_getdev = uboot_getdev; archsw.arch_copyin = uboot_copyin; archsw.arch_copyout = uboot_copyout; Modified: stable/10/sys/boot/uboot/lib/copy.c ============================================================================== --- stable/10/sys/boot/uboot/lib/copy.c Mon May 25 00:30:26 2015 (r283504) +++ stable/10/sys/boot/uboot/lib/copy.c Mon May 25 01:06:55 2015 (r283505) @@ -27,66 +27,131 @@ #include __FBSDID("$FreeBSD$"); +#include #include #include #include "api_public.h" #include "glue.h" +#include "libuboot.h" /* * MD primitives supporting placement of module data */ -void * -uboot_vm_translate(vm_offset_t o) { +#ifdef __arm__ +#define KERN_ALIGN (2 * 1024 * 1024) +#else +#define KERN_ALIGN PAGE_SIZE +#endif + +/* + * Avoid low memory, u-boot puts things like args and dtb blobs there. + */ +#define KERN_MINADDR max(KERN_ALIGN, (1024 * 1024)) + +extern void _start(void); /* ubldr entry point address. */ + +/* + * This is called for every object loaded (kernel, module, dtb file, etc). The + * expected return value is the next address at or after the given addr which is + * appropriate for loading the given object described by type and data. On each + * call the addr is the next address following the previously loaded object. + * + * The first call is for loading the kernel, and the addr argument will be zero, + * and we search for a big block of ram to load the kernel and modules. + * + * On subsequent calls the addr will be non-zero, and we just round it up so + * that each object begins on a page boundary. + */ +uint64_t +uboot_loadaddr(u_int type, void *data, uint64_t addr) +{ struct sys_info *si; - static uintptr_t start = 0; - static size_t size = 0; + uintptr_t sblock, eblock, subldr, eubldr; + uintptr_t biggest_block, this_block; + size_t biggest_size, this_size; int i; + char * envstr; + + if (addr == 0) { + /* + * If the loader_kernaddr environment variable is set, blindly + * honor it. It had better be right. We force interpretation + * of the value in base-16 regardless of any leading 0x prefix, + * because that's the U-Boot convention. + */ + envstr = ub_env_get("loader_kernaddr"); + if (envstr != NULL) + return (strtoul(envstr, NULL, 16)); - if (size == 0) { + /* + * Find addr/size of largest DRAM block. Carve our own address + * range out of the block, because loading the kernel over the + * top ourself is a poor memory-conservation strategy. Avoid + * memory at beginning of the first block of physical ram, + * since u-boot likes to pass args and data there. Assume that + * u-boot has moved itself to the very top of ram and + * optimistically assume that we won't run into it up there. + */ if ((si = ub_get_sys_info()) == NULL) panic("could not retrieve system info"); - /* Find start/size of largest DRAM block. */ + biggest_block = 0; + biggest_size = 0; + subldr = rounddown2((uintptr_t)_start, KERN_ALIGN); + eubldr = roundup2(uboot_heap_end, KERN_ALIGN); for (i = 0; i < si->mr_no; i++) { - if (si->mr[i].flags == MR_ATTR_DRAM - && si->mr[i].size > size) { - start = si->mr[i].start; - size = si->mr[i].size; + if (si->mr[i].flags != MR_ATTR_DRAM) + continue; + sblock = roundup2(si->mr[i].start, KERN_ALIGN); + eblock = rounddown2(si->mr[i].start + si->mr[i].size, + KERN_ALIGN); + if (biggest_size == 0) + sblock += KERN_MINADDR; + if (subldr >= sblock && subldr < eblock) { + if (subldr - sblock > eblock - eubldr) { + this_block = sblock; + this_size = subldr - sblock; + } else { + this_block = eubldr; + this_size = eblock - eubldr; + } + } + if (biggest_size < this_size) { + biggest_block = this_block; + biggest_size = this_size; } } - - if (size <= 0) - panic("No suitable DRAM?\n"); - /* - printf("Loading into memory region 0x%08X-0x%08X (%d MiB)\n", - start, start + size, size / 1024 / 1024); - */ + if (biggest_size == 0) + panic("Not enough DRAM to load kernel\n"); +#if 0 + printf("Loading kernel into region 0x%08x-0x%08x (%u MiB)\n", + biggest_block, biggest_block + biggest_size - 1, + biggest_size / 1024 / 1024); +#endif + return (biggest_block); } - if (o > size) - panic("Address offset 0x%08jX bigger than size 0x%08X\n", - (intmax_t)o, size); - return (void *)(start + o); + return roundup2(addr, PAGE_SIZE); } ssize_t uboot_copyin(const void *src, vm_offset_t dest, const size_t len) { - bcopy(src, uboot_vm_translate(dest), len); + bcopy(src, (void *)dest, len); return (len); } ssize_t uboot_copyout(const vm_offset_t src, void *dest, const size_t len) { - bcopy(uboot_vm_translate(src), dest, len); + bcopy((void *)src, dest, len); return (len); } ssize_t uboot_readin(const int fd, vm_offset_t dest, const size_t len) { - return (read(fd, uboot_vm_translate(dest), len)); + return (read(fd, (void *)dest, len)); } Modified: stable/10/sys/boot/uboot/lib/elf_freebsd.c ============================================================================== --- stable/10/sys/boot/uboot/lib/elf_freebsd.c Mon May 25 00:30:26 2015 (r283504) +++ stable/10/sys/boot/uboot/lib/elf_freebsd.c Mon May 25 01:06:55 2015 (r283505) @@ -80,7 +80,7 @@ __elfN(uboot_exec)(struct preloaded_file if ((error = md_load(fp->f_args, &mdp)) != 0) return (error); - entry = uboot_vm_translate(e->e_entry); + entry = (void *)e->e_entry; printf("Kernel entry at 0x%x...\n", (unsigned)entry); dev_cleanup(); Modified: stable/10/sys/boot/uboot/lib/libuboot.h ============================================================================== --- stable/10/sys/boot/uboot/lib/libuboot.h Mon May 25 00:30:26 2015 (r283504) +++ stable/10/sys/boot/uboot/lib/libuboot.h Mon May 25 01:06:55 2015 (r283505) @@ -57,7 +57,10 @@ extern int devs_no; extern struct netif_driver uboot_net; extern struct devsw uboot_storage; -void *uboot_vm_translate(vm_offset_t); +extern uintptr_t uboot_heap_start; +extern uintptr_t uboot_heap_end; + +uint64_t uboot_loadaddr(u_int type, void *data, uint64_t addr); ssize_t uboot_copyin(const void *src, vm_offset_t dest, const size_t len); ssize_t uboot_copyout(const vm_offset_t src, void *dest, const size_t len); ssize_t uboot_readin(const int fd, vm_offset_t dest, const size_t len); From owner-svn-src-all@FreeBSD.ORG Mon May 25 01:07:57 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7848053C; Mon, 25 May 2015 01:07:57 +0000 (UTC) (envelope-from rodrigc@FreeBSD.org) Received: from svn.freebsd.org (svn.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 6597E269; Mon, 25 May 2015 01:07:57 +0000 (UTC) (envelope-from rodrigc@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4P17vkb061680; Mon, 25 May 2015 01:07:57 GMT (envelope-from rodrigc@FreeBSD.org) Received: (from rodrigc@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4P17uNs061671; Mon, 25 May 2015 01:07:56 GMT (envelope-from rodrigc@FreeBSD.org) Message-Id: <201505250107.t4P17uNs061671@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: rodrigc set sender to rodrigc@FreeBSD.org using -f From: Craig Rodrigues Date: Mon, 25 May 2015 01:07:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283506 - in head/sys: conf modules/linux modules/linux64 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 01:07:57 -0000 Author: rodrigc Date: Mon May 25 01:07:55 2015 New Revision: 283506 URL: https://svnweb.freebsd.org/changeset/base/283506 Log: For objcopy, use --input-target and --output-target When building with gcc 4.9 and binutils 2.25, using '--input' and '--output' returns an error message: objcopy: option `--input' is ambiguous Reported by: Jenkins Modified: head/sys/conf/files.amd64 head/sys/conf/files.i386 head/sys/modules/linux/Makefile head/sys/modules/linux64/Makefile Modified: head/sys/conf/files.amd64 ============================================================================== --- head/sys/conf/files.amd64 Mon May 25 01:06:55 2015 (r283505) +++ head/sys/conf/files.amd64 Mon May 25 01:07:55 2015 (r283506) @@ -28,7 +28,7 @@ linux32_locore.o optional compat_linux32 # linux32_vdso.so optional compat_linux32 \ dependency "linux32_locore.o" \ - compile-with "${OBJCOPY} --input binary --output elf64-x86-64-freebsd --binary-architecture i386 linux32_locore.o ${.TARGET}" \ + compile-with "${OBJCOPY} --input-target binary --output-target elf64-x86-64-freebsd --binary-architecture i386 linux32_locore.o ${.TARGET}" \ no-implicit-rule \ clean "linux32_vdso.so" # Modified: head/sys/conf/files.i386 ============================================================================== --- head/sys/conf/files.i386 Mon May 25 01:06:55 2015 (r283505) +++ head/sys/conf/files.i386 Mon May 25 01:07:55 2015 (r283506) @@ -27,7 +27,7 @@ linux_locore.o optional compat_linux # linux_vdso.so optional compat_linux \ dependency "linux_locore.o" \ - compile-with "${OBJCOPY} --input binary --output elf32-i386-freebsd --binary-architecture i386 linux_locore.o ${.TARGET}" \ + compile-with "${OBJCOPY} --input-target binary --output-target elf32-i386-freebsd --binary-architecture i386 linux_locore.o ${.TARGET}" \ no-implicit-rule \ clean "linux_vdso.so" # Modified: head/sys/modules/linux/Makefile ============================================================================== --- head/sys/modules/linux/Makefile Mon May 25 01:06:55 2015 (r283505) +++ head/sys/modules/linux/Makefile Mon May 25 01:07:55 2015 (r283506) @@ -62,11 +62,11 @@ linux${SFX}_support.o: linux${SFX}_assym .if ${MACHINE_CPUARCH} == "amd64" ${VDSO}.so: linux${SFX}_locore.o - ${OBJCOPY} --input binary --output elf64-x86-64-freebsd \ + ${OBJCOPY} --input-target binary --output-target elf64-x86-64-freebsd \ --binary-architecture i386 linux${SFX}_locore.o ${.TARGET} .else ${VDSO}.so: linux${SFX}_locore.o - ${OBJCOPY} --input binary --output elf32-i386-freebsd \ + ${OBJCOPY} --input-target binary --output-target elf32-i386-freebsd \ --binary-architecture i386 linux${SFX}_locore.o ${.TARGET} .endif Modified: head/sys/modules/linux64/Makefile ============================================================================== --- head/sys/modules/linux64/Makefile Mon May 25 01:06:55 2015 (r283505) +++ head/sys/modules/linux64/Makefile Mon May 25 01:07:55 2015 (r283506) @@ -33,7 +33,7 @@ linux_locore.o: linux_locore.s linux_ass ${.IMPSRC} -o ${.TARGET} ${VDSO}.so: linux_locore.o - ${OBJCOPY} --input binary --output elf64-x86-64-freebsd \ + ${OBJCOPY} --input-target binary --output-target elf64-x86-64-freebsd \ -S -g --binary-architecture i386:x86-64 linux_locore.o ${.TARGET} linux_support.o: assym.s linux_assym.h From owner-svn-src-all@FreeBSD.ORG Mon May 25 01:08:59 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4CEC9689; Mon, 25 May 2015 01:08:59 +0000 (UTC) (envelope-from bjkfbsd@gmail.com) Received: from mail-wi0-x233.google.com (mail-wi0-x233.google.com [IPv6:2a00:1450:400c:c05::233]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id EA6A6273; Mon, 25 May 2015 01:08:58 +0000 (UTC) (envelope-from bjkfbsd@gmail.com) Received: by wicmc15 with SMTP id mc15so29056917wic.1; Sun, 24 May 2015 18:08:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=kLJzSI3eZrA6wh622ZAOI5sABN9PjarPzBJAogMtRYc=; b=FhPzw7WTf0AZlFfXJSM5LwRoy66b0ueJ4l0dt6Ipsz7Pha4id9paQNkVyT+YACJd5g fweIx7f9woCuKZL4ZEDfEjqnqA98ngVH2Xr16BcdGAJGFI3+GdJChuUGrsjSQ1iFi9Ip RIRyOYavJv4gNcenPjHgG28TyFJUtznq8wtHBQCNqt2Idr02xte9iQhnB7lecTCf/Fkx gwj9PLha5HWJfiVw6p2Z97rE14hcVbZCxXAlx33eoIdB0WtWKz+xY71bWxh9GsVn2E1M dUWzmmgUgmb9rpMtdtqqsBN1dgSlcWZGGygdbceHEz/jmStQmd53DWLMXCIRs4k9NZKD K2mQ== MIME-Version: 1.0 X-Received: by 10.180.104.197 with SMTP id gg5mr27045187wib.27.1432516136282; Sun, 24 May 2015 18:08:56 -0700 (PDT) Received: by 10.27.77.201 with HTTP; Sun, 24 May 2015 18:08:56 -0700 (PDT) In-Reply-To: <201505241738.t4OHc3UK025106@svn.freebsd.org> References: <201505241738.t4OHc3UK025106@svn.freebsd.org> Date: Sun, 24 May 2015 21:08:56 -0400 Message-ID: Subject: Re: svn commit: r283467 - in head/sys: amd64/linux amd64/linux32 i386/linux From: Benjamin Kaduk To: Dmitry Chagin Cc: "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" Content-Type: text/plain; charset=UTF-8 X-Content-Filtered-By: Mailman/MimeDel 2.1.20 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 01:08:59 -0000 On Sun, May 24, 2015 at 1:38 PM, Dmitry Chagin wrote: > Author: dchagin > Date: Sun May 24 17:38:02 2015 > New Revision: 283467 > URL: https://svnweb.freebsd.org/changeset/base/283467 > > Log: > Call nosys in case when the incorrect syscall number is specified. > > Reported by: trinity > > Modified: head/sys/amd64/linux/syscalls.master > > ============================================================================== > --- head/sys/amd64/linux/syscalls.master Sun May 24 17:35:42 2015 > (r283466) > +++ head/sys/amd64/linux/syscalls.master Sun May 24 17:38:02 2015 > (r283467) > @@ -506,3 +506,5 @@ > 310 AUE_NULL STD { int linux_process_vm_writev(void); } > 311 AUE_NULL STD { int linux_kcmp(void); } > 312 AUE_NULL STD { int linux_finit_module(void); } > +; please, keep this line at the end. > +313 AUE_NULL UNIMPL nosys > Seems like this would be a great thing to have some tests for. -Ben From owner-svn-src-all@FreeBSD.ORG Mon May 25 01:09:19 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 24CA97D4; Mon, 25 May 2015 01:09:19 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org (svn.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 1290127A; Mon, 25 May 2015 01:09:19 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4P19IkI062073; Mon, 25 May 2015 01:09:18 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4P19IUU062072; Mon, 25 May 2015 01:09:18 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201505250109.t4P19IUU062072@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Mon, 25 May 2015 01:09:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283507 - head/share/man/man9 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 01:09:19 -0000 Author: markj Date: Mon May 25 01:09:18 2015 New Revision: 283507 URL: https://svnweb.freebsd.org/changeset/base/283507 Log: Remove a reference to the PBDRY flag, which itself was removed in r248470. MFC after: 3 days Modified: head/share/man/man9/sleep.9 Modified: head/share/man/man9/sleep.9 ============================================================================== --- head/share/man/man9/sleep.9 Mon May 25 01:07:55 2015 (r283506) +++ head/share/man/man9/sleep.9 Mon May 25 01:09:18 2015 (r283507) @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd February 19, 2013 +.Dd May 24, 2015 .Dt SLEEP 9 .Os .Sh NAME @@ -130,19 +130,6 @@ possible, and is returned if the system call should be interrupted by the signal (return .Er EINTR ) . -If the -.Dv PBDRY -flag is specified in addition to -.Dv PCATCH , -then the sleeping thread is not stopped when -.Dv SIGSTOP -becomes pending -or some other stop action occurs while it is sleeping. -Instead, it is woken up, with the assumption -that the stop will occur on reaching a stop -point when returning to usermode. -The flag should be used when the sleeping thread owns resources, for instance -vnode locks, that should be released in a timely fashion. .Pp The parameter .Fa wmesg From owner-svn-src-all@FreeBSD.ORG Mon May 25 01:18:47 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 950F5B11; Mon, 25 May 2015 01:18:47 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org (svn.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 68979386; Mon, 25 May 2015 01:18:47 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4P1IlQx067894; Mon, 25 May 2015 01:18:47 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4P1Il7Z067891; Mon, 25 May 2015 01:18:47 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201505250118.t4P1Il7Z067891@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Mon, 25 May 2015 01:18:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283508 - head/cddl/contrib/opensolaris/cmd/lockstat X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 01:18:47 -0000 Author: markj Date: Mon May 25 01:18:46 2015 New Revision: 283508 URL: https://svnweb.freebsd.org/changeset/base/283508 Log: lockstat(1): document the -V option. MFC after: 3 days Modified: head/cddl/contrib/opensolaris/cmd/lockstat/lockstat.1 head/cddl/contrib/opensolaris/cmd/lockstat/lockstat.c Modified: head/cddl/contrib/opensolaris/cmd/lockstat/lockstat.1 ============================================================================== --- head/cddl/contrib/opensolaris/cmd/lockstat/lockstat.1 Mon May 25 01:09:18 2015 (r283507) +++ head/cddl/contrib/opensolaris/cmd/lockstat/lockstat.1 Mon May 25 01:18:46 2015 (r283508) @@ -21,7 +21,7 @@ .\" .\" $FreeBSD$ .\" -.Dd October 8, 2014 +.Dd May 24, 2015 .Dt LOCKSTAT 1 .Os .Sh NAME @@ -29,7 +29,7 @@ .Nd report kernel lock and profiling statistics .Sh SYNOPSIS .Nm -.Op Fl ACEHI +.Op Fl ACEHIV .Op Fl e Ar event-list .Op Fl i Ar rate .Op Fl b | t | h | s Ar depth @@ -90,6 +90,10 @@ to is restricted to super-user by default. .Sh OPTIONS The following options are supported: +.Bl -tag -width indent +.It Fl V +Print the D program used to gather the requested data. +.El .Ss Event Selection If no event selection options are specified, the default is .Fl C . Modified: head/cddl/contrib/opensolaris/cmd/lockstat/lockstat.c ============================================================================== --- head/cddl/contrib/opensolaris/cmd/lockstat/lockstat.c Mon May 25 01:09:18 2015 (r283507) +++ head/cddl/contrib/opensolaris/cmd/lockstat/lockstat.c Mon May 25 01:18:46 2015 (r283508) @@ -299,6 +299,8 @@ usage(void) { (void) fprintf(stderr, "Usage: lockstat [options] command [args]\n" + "\nGeneral options:\n\n" + " -V print the corresponding D program\n" "\nEvent selection options:\n\n" " -C watch contention events [on by default]\n" " -E watch error events [off by default]\n" From owner-svn-src-all@FreeBSD.ORG Mon May 25 01:22:57 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 32604CD0; Mon, 25 May 2015 01:22:57 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org (svn.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 1F96563B; Mon, 25 May 2015 01:22:57 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4P1MvZN072470; Mon, 25 May 2015 01:22:57 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4P1Mup4072468; Mon, 25 May 2015 01:22:56 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201505250122.t4P1Mup4072468@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Mon, 25 May 2015 01:22:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283509 - in head/sys/cddl/dev/dtrace: amd64 i386 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 01:22:57 -0000 Author: markj Date: Mon May 25 01:22:56 2015 New Revision: 283509 URL: https://svnweb.freebsd.org/changeset/base/283509 Log: Remove unused references to calltrap. MFC after: 3 days Modified: head/sys/cddl/dev/dtrace/amd64/dtrace_asm.S head/sys/cddl/dev/dtrace/i386/dtrace_asm.S Modified: head/sys/cddl/dev/dtrace/amd64/dtrace_asm.S ============================================================================== --- head/sys/cddl/dev/dtrace/amd64/dtrace_asm.S Mon May 25 01:18:46 2015 (r283508) +++ head/sys/cddl/dev/dtrace/amd64/dtrace_asm.S Mon May 25 01:22:56 2015 (r283509) @@ -60,8 +60,6 @@ 1: addq $TF_RIP,%rsp; - .globl calltrap - .type calltrap,@function ENTRY(dtrace_invop_start) /* Modified: head/sys/cddl/dev/dtrace/i386/dtrace_asm.S ============================================================================== --- head/sys/cddl/dev/dtrace/i386/dtrace_asm.S Mon May 25 01:18:46 2015 (r283508) +++ head/sys/cddl/dev/dtrace/i386/dtrace_asm.S Mon May 25 01:22:56 2015 (r283509) @@ -34,8 +34,6 @@ #include "assym.s" - .globl calltrap - .type calltrap,@function ENTRY(dtrace_invop_start) pushl %eax /* push %eax -- may be return value */ From owner-svn-src-all@FreeBSD.ORG Mon May 25 01:29:47 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8A5B2E4F; Mon, 25 May 2015 01:29:47 +0000 (UTC) (envelope-from ian@FreeBSD.org) Received: from svn.freebsd.org (svn.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 6B3A065E; Mon, 25 May 2015 01:29:47 +0000 (UTC) (envelope-from ian@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4P1TlCK073596; Mon, 25 May 2015 01:29:47 GMT (envelope-from ian@FreeBSD.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4P1TkvP073591; Mon, 25 May 2015 01:29:46 GMT (envelope-from ian@FreeBSD.org) Message-Id: <201505250129.t4P1TkvP073591@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ian set sender to ian@FreeBSD.org using -f From: Ian Lepore Date: Mon, 25 May 2015 01:29: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: r283510 - in stable/10/sys: arm/arm boot/arm/uboot boot/common boot/uboot/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-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 01:29:47 -0000 Author: ian Date: Mon May 25 01:29:45 2015 New Revision: 283510 URL: https://svnweb.freebsd.org/changeset/base/283510 Log: MFC r283033, r283062, r283066, r283069: Do not set preload_addr_relocate for ARM. Refactor net_getparams() to make it easier to get params from sources other than bootp and rarp. Add a routine to obtain netboot parameters from the U-Boot env vars Enable the NETIF_OPEN_CLOSE_ONCE option for ubldr. Modified: stable/10/sys/arm/arm/machdep.c stable/10/sys/boot/arm/uboot/Makefile stable/10/sys/boot/common/dev_net.c stable/10/sys/boot/common/dev_net.h stable/10/sys/boot/uboot/lib/net.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/arm/arm/machdep.c ============================================================================== --- stable/10/sys/arm/arm/machdep.c Mon May 25 01:22:56 2015 (r283509) +++ stable/10/sys/arm/arm/machdep.c Mon May 25 01:29:45 2015 (r283510) @@ -939,7 +939,6 @@ freebsd_parse_boot_param(struct arm_boot ksym_start = MD_FETCH(kmdp, MODINFOMD_SSYM, uintptr_t); ksym_end = MD_FETCH(kmdp, MODINFOMD_ESYM, uintptr_t); #endif - preload_addr_relocate = KERNVIRTADDR - abp->abp_physaddr; return lastaddr; } #endif Modified: stable/10/sys/boot/arm/uboot/Makefile ============================================================================== --- stable/10/sys/boot/arm/uboot/Makefile Mon May 25 01:22:56 2015 (r283509) +++ stable/10/sys/boot/arm/uboot/Makefile Mon May 25 01:29:45 2015 (r283510) @@ -77,6 +77,8 @@ LIBUBOOT_FDT= ${.OBJDIR}/../../uboot/fdt LIBFDT= ${.OBJDIR}/../../fdt/libfdt.a .endif +CFLAGS+= -DNETIF_OPEN_CLOSE_ONCE + .if ${MK_FORTH} != "no" # Enable BootForth BOOT_FORTH= yes Modified: stable/10/sys/boot/common/dev_net.c ============================================================================== --- stable/10/sys/boot/common/dev_net.c Mon May 25 01:22:56 2015 (r283509) +++ stable/10/sys/boot/common/dev_net.c Mon May 25 01:29:45 2015 (r283510) @@ -111,6 +111,8 @@ net_init(void) static int net_open(struct open_file *f, ...) { + char temp[FNAME_SIZE]; + struct iodesc *d; va_list args; char *devname; /* Device part of file name (or NULL). */ int error = 0; @@ -140,6 +142,10 @@ net_open(struct open_file *f, ...) printf("net_open: netif_open() succeeded\n"); #endif } + /* + * If network params were not set by netif_open(), try to get + * them via bootp, rarp, etc. + */ if (rootip.s_addr == 0) { /* Get root IP address, and path, etc. */ error = net_getparams(netdev_sock); @@ -151,6 +157,20 @@ net_open(struct open_file *f, ...) return (error); } } + /* + * Set the variables required by the kernel's nfs_diskless + * mechanism. This is the minimum set of variables required to + * mount a root filesystem without needing to obtain additional + * info from bootp or other sources. + */ + d = socktodesc(netdev_sock); + sprintf(temp, "%6D", d->myea, ":"); + setenv("boot.netif.hwaddr", temp, 1); + setenv("boot.netif.ip", inet_ntoa(myip), 1); + setenv("boot.netif.netmask", intoa(netmask), 1); + setenv("boot.netif.gateway", inet_ntoa(gateip), 1); + setenv("boot.nfsroot.server", inet_ntoa(rootip), 1); + setenv("boot.nfsroot.path", rootpath, 1); } netdev_opens++; f->f_devdata = &netdev_sock; @@ -232,10 +252,7 @@ static int net_getparams(int sock) { char buf[MAXHOSTNAMELEN]; - char temp[FNAME_SIZE]; - struct iodesc *d; - int i; - n_long smask; + n_long rootaddr, smask; #ifdef SUPPORT_BOOTP /* @@ -302,21 +319,9 @@ net_getparams(int sock) return (EIO); } exit: - /* - * If present, strip the server's address off of the rootpath - * before passing it along. This allows us to be compatible with - * the kernel's diskless (BOOTP_NFSROOT) booting conventions - */ - for (i = 0; rootpath[i] != '\0' && i < FNAME_SIZE; i++) - if (rootpath[i] == ':') - break; - if (i && i != FNAME_SIZE && rootpath[i] == ':') { - rootpath[i++] = '\0'; - if (inet_addr(&rootpath[0]) != INADDR_NONE) - rootip.s_addr = inet_addr(&rootpath[0]); - bcopy(&rootpath[i], &temp[0], strlen(&rootpath[i])+1); - bcopy(&temp[0], &rootpath[0], strlen(&rootpath[i])+1); - } + if ((rootaddr = net_parse_rootpath()) != INADDR_NONE) + rootip.s_addr = rootaddr; + #ifdef NETIF_DEBUG if (debug) { printf("net_open: server addr: %s\n", inet_ntoa(rootip)); @@ -324,15 +329,6 @@ exit: } #endif - d = socktodesc(sock); - sprintf(temp, "%6D", d->myea, ":"); - setenv("boot.netif.ip", inet_ntoa(myip), 1); - setenv("boot.netif.netmask", intoa(netmask), 1); - setenv("boot.netif.gateway", inet_ntoa(gateip), 1); - setenv("boot.netif.hwaddr", temp, 1); - setenv("boot.nfsroot.server", inet_ntoa(rootip), 1); - setenv("boot.nfsroot.path", rootpath, 1); - return (0); } @@ -354,3 +350,24 @@ net_print(int verbose) } printf("\n"); } + +/* + * Strip the server's address off of the rootpath if present and return it in + * network byte order, leaving just the pathname part in the global rootpath. + */ +uint32_t +net_parse_rootpath() +{ + int i; + n_long addr = INADDR_NONE; + + for (i = 0; rootpath[i] != '\0' && i < FNAME_SIZE; i++) + if (rootpath[i] == ':') + break; + if (i && i != FNAME_SIZE && rootpath[i] == ':') { + rootpath[i++] = '\0'; + addr = inet_addr(&rootpath[0]); + bcopy(&rootpath[i], rootpath, strlen(&rootpath[i])+1); + } + return (addr); +} Modified: stable/10/sys/boot/common/dev_net.h ============================================================================== --- stable/10/sys/boot/common/dev_net.h Mon May 25 01:22:56 2015 (r283509) +++ stable/10/sys/boot/common/dev_net.h Mon May 25 01:29:45 2015 (r283510) @@ -26,5 +26,11 @@ * $FreeBSD$ */ +#ifndef _BOOT_DEV_NET_H_ +#define _BOOT_DEV_NET_H_ + extern struct devsw netdev; +uint32_t net_parse_rootpath(void); + +#endif Modified: stable/10/sys/boot/uboot/lib/net.c ============================================================================== --- stable/10/sys/boot/uboot/lib/net.c Mon May 25 01:22:56 2015 (r283509) +++ stable/10/sys/boot/uboot/lib/net.c Mon May 25 01:29:45 2015 (r283510) @@ -45,6 +45,7 @@ __FBSDID("$FreeBSD$"); #include "api_public.h" #include "glue.h" #include "libuboot.h" +#include "dev_net.h" static int net_probe(struct netif *, void *); static int net_match(struct netif *, void *); @@ -84,6 +85,109 @@ struct uboot_softc { static struct uboot_softc uboot_softc; +/* + * get_env_net_params() + * + * Attempt to obtain all the parms we need for netbooting from the U-Boot + * environment. If we fail to obtain the values it may still be possible to + * netboot; the net_dev code will attempt to get the values from bootp, rarp, + * and other such sources. + * + * If rootip.s_addr is non-zero net_dev assumes the required global variables + * are set and skips the bootp inquiry. For that reason, we don't set rootip + * until we've verified that we have at least the minimum required info. + * + * This is called from netif_init() which can result in it getting called + * multiple times, by design. The network code at higher layers zeroes out + * rootip when it closes a network interface, so if it gets opened again we have + * to obtain all this info again. + */ +static void +get_env_net_params() +{ + char *envstr; + in_addr_t rootaddr, serveraddr; + + /* Silently get out right away if we don't have rootpath. */ + if (ub_env_get("rootpath") == NULL) + return; + + /* + * Our own IP address must be valid. Silently get out if it's not set, + * but whine if it's there and we can't parse it. + */ + if ((envstr = ub_env_get("ipaddr")) == NULL) + return; + if ((myip.s_addr = inet_addr(envstr)) == INADDR_NONE) { + printf("Could not parse ipaddr '%s'\n", envstr); + return; + } + + /* + * Netmask is optional, default to the "natural" netmask for our IP, but + * whine if it was provided and we couldn't parse it. + */ + if ((envstr = ub_env_get("netmask")) != NULL && + (netmask = inet_addr(envstr)) == INADDR_NONE) { + printf("Could not parse netmask '%s'\n", envstr); + } + if (netmask == INADDR_NONE) { + if (IN_CLASSA(myip.s_addr)) + netmask = IN_CLASSA_NET; + else if (IN_CLASSB(myip.s_addr)) + netmask = IN_CLASSB_NET; + else + netmask = IN_CLASSC_NET; + } + + /* + * Get optional serverip before rootpath; the latter can override it. + * Whine only if it's present but can't be parsed. + */ + serveraddr = INADDR_NONE; + if ((envstr = ub_env_get("serverip")) != NULL) { + if ((serveraddr = inet_addr(envstr)) == INADDR_NONE) + printf("Could not parse serverip '%s'\n", envstr); + } + + /* + * There must be a rootpath. It may be ip:/path or it may be just the + * path in which case the ip needs to be in serverip. + */ + if ((envstr = ub_env_get("rootpath")) == NULL) + return; + strncpy(rootpath, envstr, sizeof(rootpath) - 1); + rootaddr = net_parse_rootpath(); + if (rootaddr == INADDR_NONE) + rootaddr = serveraddr; + if (rootaddr == INADDR_NONE) { + printf("No server address for rootpath '%s'\n", envstr); + return; + } + rootip.s_addr = rootaddr; + + /* + * Gateway IP is optional unless rootip is on a different net in which + * case whine if it's missing or we can't parse it, and set rootip addr + * to zero, which signals to other network code that network params + * aren't set (so it will try dhcp, bootp, etc). + */ + envstr = ub_env_get("gatewayip"); + if (!SAMENET(myip, rootip, netmask)) { + if (envstr == NULL) { + printf("Need gatewayip for a root server on a " + "different network.\n"); + rootip.s_addr = 0; + return; + } + if ((gateip.s_addr = inet_addr(envstr) == INADDR_NONE)) { + printf("Could not parse gatewayip '%s'\n", envstr); + rootip.s_addr = 0; + return; + } + } +} + static int net_match(struct netif *nif, void *machdep_hint) { @@ -222,6 +326,11 @@ net_init(struct iodesc *desc, void *mach nif->nif_driver->netif_bname, nif->nif_unit); } + /* Attempt to get netboot params from the u-boot env. */ + get_env_net_params(); + if (myip.s_addr != 0) + desc->myip = myip; + #if defined(NETIF_DEBUG) printf("network: %s%d attached to %s\n", nif->nif_driver->netif_bname, nif->nif_unit, ether_sprintf(desc->myea)); From owner-svn-src-all@FreeBSD.ORG Mon May 25 01:31:40 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 05100FB8; Mon, 25 May 2015 01:31:40 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org (svn.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 CBEC1767; Mon, 25 May 2015 01:31:39 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4P1Vd4w076858; Mon, 25 May 2015 01:31:39 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4P1VdnG076857; Mon, 25 May 2015 01:31:39 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201505250131.t4P1VdnG076857@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Mon, 25 May 2015 01:31:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283511 - head/sys/opencrypto X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 01:31:40 -0000 Author: markj Date: Mon May 25 01:31:39 2015 New Revision: 283511 URL: https://svnweb.freebsd.org/changeset/base/283511 Log: Use the correct number of arguments for the opencrypto:deflate:deflate_global:bad DTrace probe, which is defined to have MFC after: 1 week Modified: head/sys/opencrypto/cryptodeflate.c Modified: head/sys/opencrypto/cryptodeflate.c ============================================================================== --- head/sys/opencrypto/cryptodeflate.c Mon May 25 01:29:45 2015 (r283510) +++ head/sys/opencrypto/cryptodeflate.c Mon May 25 01:31:39 2015 (r283511) @@ -105,8 +105,8 @@ deflate_global(data, size, decomp, out) bufh = bufp = malloc(sizeof(*bufp) + (size_t)(size * i), M_CRYPTO_DATA, M_NOWAIT); if (bufp == NULL) { - SDT_PROBE3(opencrypto, deflate, deflate_global, bad, - decomp, 0, __LINE__); + SDT_PROBE5(opencrypto, deflate, deflate_global, bad, + decomp, 0, __LINE__, 0, 0); goto bad2; } bufp->next = NULL; @@ -125,8 +125,8 @@ deflate_global(data, size, decomp, out) deflateInit2(&zbuf, Z_DEFAULT_COMPRESSION, Z_METHOD, window_deflate, Z_MEMLEVEL, Z_DEFAULT_STRATEGY); if (error != Z_OK) { - SDT_PROBE3(opencrypto, deflate, deflate_global, bad, - decomp, error, __LINE__); + SDT_PROBE5(opencrypto, deflate, deflate_global, bad, + decomp, error, __LINE__, 0, 0); goto bad; } @@ -165,8 +165,8 @@ deflate_global(data, size, decomp, out) p = malloc(sizeof(*p) + (size_t)(size * i), M_CRYPTO_DATA, M_NOWAIT); if (p == NULL) { - SDT_PROBE3(opencrypto, deflate, deflate_global, - bad, decomp, 0, __LINE__); + SDT_PROBE5(opencrypto, deflate, deflate_global, + bad, decomp, 0, __LINE__, 0, 0); goto bad; } p->next = NULL; @@ -195,8 +195,8 @@ deflate_global(data, size, decomp, out) *out = malloc(result, M_CRYPTO_DATA, M_NOWAIT); if (*out == NULL) { - SDT_PROBE3(opencrypto, deflate, deflate_global, bad, - decomp, 0, __LINE__); + SDT_PROBE5(opencrypto, deflate, deflate_global, bad, + decomp, 0, __LINE__, 0, 0); goto bad; } if (decomp) From owner-svn-src-all@FreeBSD.ORG Mon May 25 01:35:11 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0F40D1A8; Mon, 25 May 2015 01:35:11 +0000 (UTC) (envelope-from markjdb@gmail.com) Received: from mail-pd0-x230.google.com (mail-pd0-x230.google.com [IPv6:2607:f8b0:400e:c02::230]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id D3A96780; Mon, 25 May 2015 01:35:10 +0000 (UTC) (envelope-from markjdb@gmail.com) Received: by pdfh10 with SMTP id h10so58950867pdf.3; Sun, 24 May 2015 18:35:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:date:from:to:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=EoSzslbo5maYhIAjn2uLPq3TABYI1qSEwz7fZxNmeJ4=; b=L4Wk5C/Mk1EBnuLSbIlURaLkWMezAZNIfgvhEXXrd7b2dcSHx5QWKK4ouvXnwbB7n2 6mviDwsUYifvBDkoQCFTzFWio6sVPIRVxU8NJh2znmwoGP+O/ujA2cudAnbFiek2y4vB RFmnUIG8q7ZyvjiBhiMDETbv/6nnrVl29ADQvqKgsNW3vo7E7GIA/GeX+ZgO7FTqYGx/ jRx+oJlb41EtF7jp9+LCzOiGIg/ct2u7X1+hg/FOxNrby1Tnczdq/SSLSCKGkEpb7zl+ CUuP1FQZVJIgAy2QL+ubjgu0LPpv2VOXpyWGGG+sDrEM+xM7mwTI6aRohlm+Cc2a+eTt JfFQ== X-Received: by 10.70.37.207 with SMTP id a15mr35168798pdk.4.1432517710454; Sun, 24 May 2015 18:35:10 -0700 (PDT) Received: from raichu ([104.232.114.184]) by mx.google.com with ESMTPSA id xs10sm8259284pab.35.2015.05.24.18.35.08 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 24 May 2015 18:35:09 -0700 (PDT) Sender: Mark Johnston Date: Sun, 24 May 2015 18:35:03 -0700 From: Mark Johnston To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283511 - head/sys/opencrypto Message-ID: <20150525013503.GA16902@raichu> References: <201505250131.t4P1VdnG076857@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201505250131.t4P1VdnG076857@svn.freebsd.org> User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 01:35:11 -0000 On Mon, May 25, 2015 at 01:31:39AM +0000, Mark Johnston wrote: > Author: markj > Date: Mon May 25 01:31:39 2015 > New Revision: 283511 > URL: https://svnweb.freebsd.org/changeset/base/283511 > > Log: > Use the correct number of arguments for the > opencrypto:deflate:deflate_global:bad DTrace probe, which is defined to > have > > MFC after: 1 week > Sorry about that - I entered :wq into the wrong terminal. :( I just meant to say that the probe is defined to have five arguments rather than three. -Mark From owner-svn-src-all@FreeBSD.ORG Mon May 25 02:30:54 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id DCBEAAB2; Mon, 25 May 2015 02:30:54 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org (svn.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 CA012D20; Mon, 25 May 2015 02:30:54 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4P2UsYq006174; Mon, 25 May 2015 02:30:54 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4P2Usn2006127; Mon, 25 May 2015 02:30:54 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201505250230.t4P2Usn2006127@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Mon, 25 May 2015 02:30:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r283512 - vendor-sys/illumos/dist/uts/common/dtrace X-SVN-Group: vendor-sys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 02:30:55 -0000 Author: markj Date: Mon May 25 02:30:54 2015 New Revision: 283512 URL: https://svnweb.freebsd.org/changeset/base/283512 Log: 3599 dtrace_dynvar tail calls can blow stack Reviewed by: Adam Leventhal Reviewed by: Gordon Ross Approved by: Richard Lowe Author: Bryan Cantrill illumos/illumos-gate@d47448f09aae3aa1a87fc450a0c44638e7ce7b51 Modified: vendor-sys/illumos/dist/uts/common/dtrace/dtrace.c Modified: vendor-sys/illumos/dist/uts/common/dtrace/dtrace.c ============================================================================== --- vendor-sys/illumos/dist/uts/common/dtrace/dtrace.c Mon May 25 01:31:39 2015 (r283511) +++ vendor-sys/illumos/dist/uts/common/dtrace/dtrace.c Mon May 25 02:30:54 2015 (r283512) @@ -21,7 +21,7 @@ /* * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright (c) 2013, Joyent, Inc. All rights reserved. + * Copyright (c) 2015, Joyent, Inc. All rights reserved. * Copyright (c) 2012, 2014 by Delphix. All rights reserved. */ @@ -2037,7 +2037,7 @@ retry: * this hash chain, or another CPU is deleting an element from this * hash chain. The simplest way to deal with both of these cases * (though not necessarily the most efficient) is to free our - * allocated block and tail-call ourselves. Note that the free is + * allocated block and re-attempt it all. Note that the free is * to the dirty list and _not_ to the free list. This is to prevent * races with allocators, above. */ @@ -2050,7 +2050,7 @@ retry: dvar->dtdv_next = free; } while (dtrace_casptr(&dcpu->dtdsc_dirty, free, dvar) != free); - return (dtrace_dynvar(dstate, nkeys, key, dsize, op, mstate, vstate)); + goto top; } /*ARGSUSED*/ From owner-svn-src-all@FreeBSD.ORG Mon May 25 02:32:30 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B7541DB2; Mon, 25 May 2015 02:32:30 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org (svn.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 A49B7D51; Mon, 25 May 2015 02:32:30 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4P2WU3U006956; Mon, 25 May 2015 02:32:30 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4P2WUPO006955; Mon, 25 May 2015 02:32:30 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201505250232.t4P2WUPO006955@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Mon, 25 May 2015 02:32:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r283513 - vendor-sys/illumos/dist/uts/common/dtrace X-SVN-Group: vendor-sys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 02:32:30 -0000 Author: markj Date: Mon May 25 02:32:30 2015 New Revision: 283513 URL: https://svnweb.freebsd.org/changeset/base/283513 Log: 5930 fasttrap_pid_enable() panics when prfind() fails in forking process Reviewed by: Adam Leventhal Reviewed by: Gordon Ross Approved by: Richard Lowe Author: Bryan Cantrill illumos/illumos-gate@9df7e4e12eb093557252d3bec029b5c382613e36 Modified: vendor-sys/illumos/dist/uts/common/dtrace/fasttrap.c Modified: vendor-sys/illumos/dist/uts/common/dtrace/fasttrap.c ============================================================================== --- vendor-sys/illumos/dist/uts/common/dtrace/fasttrap.c Mon May 25 02:30:54 2015 (r283512) +++ vendor-sys/illumos/dist/uts/common/dtrace/fasttrap.c Mon May 25 02:32:30 2015 (r283513) @@ -25,7 +25,7 @@ */ /* - * Copyright (c) 2013, Joyent, Inc. All rights reserved. + * Copyright (c) 2015, Joyent, Inc. All rights reserved. */ #include @@ -928,11 +928,21 @@ fasttrap_pid_enable(void *arg, dtrace_id mutex_enter(&pidlock); p = prfind(probe->ftp_pid); + if (p == NULL) { + /* + * So it's not that the target process is being born, + * it's that it isn't there at all (and we simply + * happen to be forking). Anyway, we know that the + * target is definitely gone, so bail out. + */ + mutex_exit(&pidlock); + return (0); + } + /* * Confirm that curproc is indeed forking the process in which * we're trying to enable probes. */ - ASSERT(p != NULL); ASSERT(p->p_parent == curproc); ASSERT(p->p_stat == SIDL); From owner-svn-src-all@FreeBSD.ORG Mon May 25 02:42:18 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9EA61F71; Mon, 25 May 2015 02:42:18 +0000 (UTC) (envelope-from julian@freebsd.org) Received: from vps1.elischer.org (vps1.elischer.org [204.109.63.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "vps1.elischer.org", Issuer "CA Cert Signing Authority" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 7377DF50; Mon, 25 May 2015 02:42:18 +0000 (UTC) (envelope-from julian@freebsd.org) Received: from jre-mbp.elischer.org (ppp121-45-225-35.lns20.per1.internode.on.net [121.45.225.35]) (authenticated bits=0) by vps1.elischer.org (8.14.9/8.14.9) with ESMTP id t4P2gC7H059269 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Sun, 24 May 2015 19:42:15 -0700 (PDT) (envelope-from julian@freebsd.org) Message-ID: <55628BFE.5070306@freebsd.org> Date: Mon, 25 May 2015 10:42:06 +0800 From: Julian Elischer User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Dmitry Chagin , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283441 - in head/sys: amd64/linux amd64/linux32 compat/linux conf i386/linux modules/linux modules/linux64 References: <201505241641.t4OGfeAX094242@svn.freebsd.org> In-Reply-To: <201505241641.t4OGfeAX094242@svn.freebsd.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 02:42:18 -0000 On 5/25/15 12:41 AM, Dmitry Chagin wrote: > Author: dchagin > Date: Sun May 24 16:41:39 2015 > New Revision: 283441 > URL: https://svnweb.freebsd.org/changeset/base/283441 > > Log: > Implement epoll family system calls. This is a tiny wrapper > around kqueue() to implement epoll subset of functionality. > The kqueue user data are 32bit on i386 which is not enough for > epoll user data, so we keep user data in the proc emuldata. Have you considered making the in-kernel representation just have more room? > > Initial patch developed by rdivacky@ in 2007, then extended > by Yuri Victorovich @ r255672 and finished by me > in collaboration with mjg@ and jillies@. > > Differential Revision: https://reviews.freebsd.org/D1092 > > Added: > head/sys/compat/linux/linux_event.c (contents, props changed) > head/sys/compat/linux/linux_event.h (contents, props changed) > Modified: > head/sys/amd64/linux/linux_dummy.c > head/sys/amd64/linux/syscalls.master > head/sys/amd64/linux32/linux32_dummy.c > head/sys/amd64/linux32/syscalls.master > head/sys/compat/linux/linux_emul.c > head/sys/compat/linux/linux_emul.h > head/sys/compat/linux/linux_util.c > head/sys/compat/linux/linux_util.h > head/sys/conf/files.amd64 > head/sys/conf/files.i386 > head/sys/conf/files.pc98 > head/sys/i386/linux/linux_dummy.c > head/sys/i386/linux/syscalls.master > head/sys/modules/linux/Makefile > head/sys/modules/linux64/Makefile > > Modified: head/sys/amd64/linux/linux_dummy.c > ============================================================================== > --- head/sys/amd64/linux/linux_dummy.c Sun May 24 16:36:29 2015 (r283440) > +++ head/sys/amd64/linux/linux_dummy.c Sun May 24 16:41:39 2015 (r283441) > @@ -69,13 +69,10 @@ DUMMY(tuxcall); > DUMMY(security); > DUMMY(set_thread_area); > DUMMY(lookup_dcookie); > -DUMMY(epoll_create); > DUMMY(epoll_ctl_old); > DUMMY(epoll_wait_old); > DUMMY(remap_file_pages); > DUMMY(semtimedop); > -DUMMY(epoll_ctl); > -DUMMY(epoll_wait); > DUMMY(mbind); > DUMMY(get_mempolicy); > DUMMY(set_mempolicy); > @@ -112,7 +109,6 @@ DUMMY(timerfd_settime); > DUMMY(timerfd_gettime); > DUMMY(signalfd4); > DUMMY(eventfd2); > -DUMMY(epoll_create1); > DUMMY(inotify_init1); > DUMMY(preadv); > DUMMY(pwritev); > > Modified: head/sys/amd64/linux/syscalls.master > ============================================================================== > --- head/sys/amd64/linux/syscalls.master Sun May 24 16:36:29 2015 (r283440) > +++ head/sys/amd64/linux/syscalls.master Sun May 24 16:41:39 2015 (r283441) > @@ -373,7 +373,7 @@ > 210 AUE_NULL UNIMPL linux_io_cancel > 211 AUE_NULL UNIMPL linux_get_thread_area > 212 AUE_NULL STD { int linux_lookup_dcookie(void); } > -213 AUE_NULL STD { int linux_epoll_create(void); } > +213 AUE_NULL STD { int linux_epoll_create(l_int size); } > 214 AUE_NULL STD { int linux_epoll_ctl_old(void); } > 215 AUE_NULL STD { int linux_epoll_wait_old(void); } > 216 AUE_NULL STD { int linux_remap_file_pages(void); } > @@ -397,8 +397,10 @@ > 230 AUE_NULL STD { int linux_clock_nanosleep(clockid_t which, int flags, \ > struct l_timespec *rqtp, struct l_timespec *rmtp); } > 231 AUE_EXIT STD { int linux_exit_group(int error_code); } > -232 AUE_NULL STD { int linux_epoll_wait(void); } > -233 AUE_NULL STD { int linux_epoll_ctl(void); } > +232 AUE_NULL STD { int linux_epoll_wait(l_int epfd, struct epoll_event *events, \ > + l_int maxevents, l_int timeout); } > +233 AUE_NULL STD { int linux_epoll_ctl(l_int epfd, l_int op, l_int fd, \ > + struct epoll_event *event); } > 234 AUE_NULL STD { int linux_tgkill(int tgid, int pid, int sig); } > 235 AUE_UTIMES STD { int linux_utimes(char *fname, \ > struct l_timeval *tptr); } > @@ -466,7 +468,8 @@ > 278 AUE_NULL STD { int linux_vmsplice(void); } > 279 AUE_NULL STD { int linux_move_pages(void); } > 280 AUE_NULL STD { int linux_utimensat(void); } > -281 AUE_NULL STD { int linux_epoll_pwait(void); } > +281 AUE_NULL STD { int linux_epoll_pwait(l_int epfd, struct epoll_event *events, \ > + l_int maxevents, l_int timeout, l_sigset_t *mask); } > 282 AUE_NULL STD { int linux_signalfd(void); } > 283 AUE_NULL STD { int linux_timerfd(void); } > 284 AUE_NULL STD { int linux_eventfd(void); } > @@ -477,7 +480,7 @@ > l_uintptr_t namelen, int flags); } > 289 AUE_NULL STD { int linux_signalfd4(void); } > 290 AUE_NULL STD { int linux_eventfd2(void); } > -291 AUE_NULL STD { int linux_epoll_create1(void); } > +291 AUE_NULL STD { int linux_epoll_create1(l_int flags); } > 292 AUE_NULL STD { int linux_dup3(l_int oldfd, \ > l_int newfd, l_int flags); } > 293 AUE_NULL STD { int linux_pipe2(l_int *pipefds, l_int flags); } > > Modified: head/sys/amd64/linux32/linux32_dummy.c > ============================================================================== > --- head/sys/amd64/linux32/linux32_dummy.c Sun May 24 16:36:29 2015 (r283440) > +++ head/sys/amd64/linux32/linux32_dummy.c Sun May 24 16:41:39 2015 (r283441) > @@ -68,9 +68,6 @@ DUMMY(pivot_root); > DUMMY(mincore); > DUMMY(ptrace); > DUMMY(lookup_dcookie); > -DUMMY(epoll_create); > -DUMMY(epoll_ctl); > -DUMMY(epoll_wait); > DUMMY(remap_file_pages); > DUMMY(fstatfs64); > DUMMY(mbind); > @@ -120,7 +117,6 @@ DUMMY(timerfd_gettime); > /* linux 2.6.27: */ > DUMMY(signalfd4); > DUMMY(eventfd2); > -DUMMY(epoll_create1); > DUMMY(inotify_init1); > /* linux 2.6.30: */ > DUMMY(preadv); > > Modified: head/sys/amd64/linux32/syscalls.master > ============================================================================== > --- head/sys/amd64/linux32/syscalls.master Sun May 24 16:36:29 2015 (r283440) > +++ head/sys/amd64/linux32/syscalls.master Sun May 24 16:41:39 2015 (r283441) > @@ -430,9 +430,11 @@ > 251 AUE_NULL UNIMPL > 252 AUE_EXIT STD { int linux_exit_group(int error_code); } > 253 AUE_NULL STD { int linux_lookup_dcookie(void); } > -254 AUE_NULL STD { int linux_epoll_create(void); } > -255 AUE_NULL STD { int linux_epoll_ctl(void); } > -256 AUE_NULL STD { int linux_epoll_wait(void); } > +254 AUE_NULL STD { int linux_epoll_create(l_int size); } > +255 AUE_NULL STD { int linux_epoll_ctl(l_int epfd, l_int op, l_int fd, \ > + struct epoll_event *event); } > +256 AUE_NULL STD { int linux_epoll_wait(l_int epfd, struct epoll_event *events, \ > + l_int maxevents, l_int timeout); } > 257 AUE_NULL STD { int linux_remap_file_pages(void); } > 258 AUE_NULL STD { int linux_set_tid_address(int *tidptr); } > 259 AUE_NULL STD { int linux_timer_create(clockid_t clock_id, \ > @@ -527,7 +529,8 @@ > 317 AUE_NULL STD { int linux_move_pages(void); } > ; linux 2.6.19: > 318 AUE_NULL STD { int linux_getcpu(void); } > -319 AUE_NULL STD { int linux_epoll_pwait(void); } > +319 AUE_NULL STD { int linux_epoll_pwait(l_int epfd, struct epoll_event *events, \ > + l_int maxevents, l_int timeout, l_osigset_t *mask); } > ; linux 2.6.22: > 320 AUE_NULL STD { int linux_utimensat(void); } > 321 AUE_NULL STD { int linux_signalfd(void); } > @@ -541,7 +544,7 @@ > ; linux 2.6.27: > 327 AUE_NULL STD { int linux_signalfd4(void); } > 328 AUE_NULL STD { int linux_eventfd2(void); } > -329 AUE_NULL STD { int linux_epoll_create1(void); } > +329 AUE_NULL STD { int linux_epoll_create1(l_int flags); } > 330 AUE_NULL STD { int linux_dup3(l_int oldfd, \ > l_int newfd, l_int flags); } > 331 AUE_NULL STD { int linux_pipe2(l_int *pipefds, l_int flags); } > > Modified: head/sys/compat/linux/linux_emul.c > ============================================================================== > --- head/sys/compat/linux/linux_emul.c Sun May 24 16:36:29 2015 (r283440) > +++ head/sys/compat/linux/linux_emul.c Sun May 24 16:41:39 2015 (r283441) > @@ -42,8 +42,6 @@ __FBSDID("$FreeBSD$"); > #include > #include > #include > -#include > -#include > > #include > #include > @@ -86,6 +84,7 @@ linux_proc_init(struct thread *td, struc > { > struct linux_emuldata *em; > struct linux_pemuldata *pem; > + struct epoll_emuldata *emd; > > if (newtd != NULL) { > /* non-exec call */ > @@ -93,8 +92,13 @@ linux_proc_init(struct thread *td, struc > em->pdeath_signal = 0; > em->robust_futexes = NULL; > if (flags & LINUX_CLONE_THREAD) { > + LINUX_CTR1(proc_init, "thread newtd(%d)", > + newtd->td_tid); > + > em->em_tid = newtd->td_tid; > } else { > + LINUX_CTR1(proc_init, "fork newtd(%d)", > + newtd->td_proc->p_pid); > > em->em_tid = newtd->td_proc->p_pid; > > @@ -105,12 +109,24 @@ linux_proc_init(struct thread *td, struc > newtd->td_emuldata = em; > } else { > /* exec */ > + LINUX_CTR1(proc_init, "exec newtd(%d)", > + td->td_proc->p_pid); > > /* lookup the old one */ > em = em_find(td); > KASSERT(em != NULL, ("proc_init: emuldata not found in exec case.\n")); > > em->em_tid = td->td_proc->p_pid; > + > + /* epoll should be destroyed in a case of exec. */ > + pem = pem_find(td->td_proc); > + KASSERT(pem != NULL, ("proc_exit: proc emuldata not found.\n")); > + > + if (pem->epoll != NULL) { > + emd = pem->epoll; > + pem->epoll = NULL; > + free(emd, M_EPOLL); > + } > } > > em->child_clear_tid = NULL; > @@ -121,6 +137,7 @@ void > linux_proc_exit(void *arg __unused, struct proc *p) > { > struct linux_pemuldata *pem; > + struct epoll_emuldata *emd; > struct thread *td = curthread; > > if (__predict_false(SV_CURPROC_ABI() != SV_ABI_LINUX)) > @@ -133,6 +150,12 @@ linux_proc_exit(void *arg __unused, stru > > p->p_emuldata = NULL; > > + if (pem->epoll != NULL) { > + emd = pem->epoll; > + pem->epoll = NULL; > + free(emd, M_EPOLL); > + } > + > sx_destroy(&pem->pem_sx); > free(pem, M_LINUX); > } > @@ -141,6 +164,7 @@ int > linux_common_execve(struct thread *td, struct image_args *eargs) > { > struct linux_pemuldata *pem; > + struct epoll_emuldata *emd; > struct linux_emuldata *em; > struct proc *p; > int error; > @@ -180,6 +204,12 @@ linux_common_execve(struct thread *td, s > p->p_emuldata = NULL; > PROC_UNLOCK(p); > > + if (pem->epoll != NULL) { > + emd = pem->epoll; > + pem->epoll = NULL; > + free(emd, M_EPOLL); > + } > + > free(em, M_TEMP); > free(pem, M_LINUX); > } > @@ -197,6 +227,7 @@ linux_proc_exec(void *arg __unused, stru > */ > if (__predict_false((imgp->sysent->sv_flags & SV_ABI_MASK) == > SV_ABI_LINUX)) { > + > if (SV_PROC_ABI(p) == SV_ABI_LINUX) > linux_proc_init(td, NULL, 0); > else > > Modified: head/sys/compat/linux/linux_emul.h > ============================================================================== > --- head/sys/compat/linux/linux_emul.h Sun May 24 16:36:29 2015 (r283440) > +++ head/sys/compat/linux/linux_emul.h Sun May 24 16:41:39 2015 (r283441) > @@ -60,9 +60,12 @@ int linux_common_execve(struct thread *, > /* process emuldata flags */ > #define LINUX_XDEPR_REQUEUEOP 0x00000001 /* uses deprecated > futex REQUEUE op*/ > +#define LINUX_XUNSUP_EPOLL 0x00000002 /* unsupported epoll events */ > + > struct linux_pemuldata { > uint32_t flags; /* process emuldata flags */ > struct sx pem_sx; /* lock for this struct */ > + void *epoll; /* epoll data */ > }; > > #define LINUX_PEM_XLOCK(p) sx_xlock(&(p)->pem_sx) > > Added: head/sys/compat/linux/linux_event.c > ============================================================================== > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > +++ head/sys/compat/linux/linux_event.c Sun May 24 16:41:39 2015 (r283441) > @@ -0,0 +1,500 @@ > +/*- > + * Copyright (c) 2007 Roman Divacky > + * Copyright (c) 2014 Dmitry Chagin > + * All rights reserved. > + * > + * Redistribution and use in source and binary forms, with or without > + * modification, are permitted provided that the following conditions > + * are met: > + * 1. Redistributions of source code must retain the above copyright > + * notice, this list of conditions and the following disclaimer. > + * 2. Redistributions in binary form must reproduce the above copyright > + * notice, this list of conditions and the following disclaimer in the > + * documentation and/or other materials provided with the distribution. > + * > + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND > + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE > + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE > + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL > + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS > + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) > + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT > + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY > + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF > + * SUCH DAMAGE. > + */ > + > +#include > +__FBSDID("$FreeBSD$"); > + > +#include "opt_compat.h" > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +#ifdef COMPAT_LINUX32 > +#include > +#include > +#else > +#include > +#include > +#endif > + > +#include > +#include > +#include > +#include > + > +/* > + * epoll defines 'struct epoll_event' with the field 'data' as 64 bits > + * on all architectures. But on 32 bit architectures BSD 'struct kevent' only > + * has 32 bit opaque pointer as 'udata' field. So we can't pass epoll supplied > + * data verbatuim. Therefore we allocate 64-bit memory block to pass > + * user supplied data for every file descriptor. > + */ > + > +typedef uint64_t epoll_udata_t; > + > +struct epoll_emuldata { > + uint32_t fdc; /* epoll udata max index */ > + epoll_udata_t udata[1]; /* epoll user data vector */ > +}; > + > +#define EPOLL_DEF_SZ 16 > +#define EPOLL_SIZE(fdn) \ > + (sizeof(struct epoll_emuldata)+(fdn) * sizeof(epoll_udata_t)) > + > +struct epoll_event { > + uint32_t events; > + epoll_udata_t data; > +} > +#if defined(__amd64__) > +__attribute__((packed)) > +#endif > +; > + > +#define LINUX_MAX_EVENTS (INT_MAX / sizeof(struct epoll_event)) > + > +static void epoll_fd_install(struct thread *td, int fd, epoll_udata_t udata); > +static int epoll_to_kevent(struct thread *td, struct file *epfp, > + int fd, struct epoll_event *l_event, int *kev_flags, > + struct kevent *kevent, int *nkevents); > +static void kevent_to_epoll(struct kevent *kevent, struct epoll_event *l_event); > +static int epoll_kev_copyout(void *arg, struct kevent *kevp, int count); > +static int epoll_kev_copyin(void *arg, struct kevent *kevp, int count); > +static int epoll_delete_event(struct thread *td, struct file *epfp, > + int fd, int filter); > +static int epoll_delete_all_events(struct thread *td, struct file *epfp, > + int fd); > + > +struct epoll_copyin_args { > + struct kevent *changelist; > +}; > + > +struct epoll_copyout_args { > + struct epoll_event *leventlist; > + struct proc *p; > + uint32_t count; > + int error; > +}; > + > + > +static void > +epoll_fd_install(struct thread *td, int fd, epoll_udata_t udata) > +{ > + struct linux_pemuldata *pem; > + struct epoll_emuldata *emd; > + struct proc *p; > + > + p = td->td_proc; > + > + pem = pem_find(p); > + KASSERT(pem != NULL, ("epoll proc emuldata not found.\n")); > + > + LINUX_PEM_XLOCK(pem); > + if (pem->epoll == NULL) { > + emd = malloc(EPOLL_SIZE(fd), M_EPOLL, M_WAITOK); > + emd->fdc = fd; > + pem->epoll = emd; > + } else { > + emd = pem->epoll; > + if (fd > emd->fdc) { > + emd = realloc(emd, EPOLL_SIZE(fd), M_EPOLL, M_WAITOK); > + emd->fdc = fd; > + pem->epoll = emd; > + } > + } > + emd->udata[fd] = udata; > + LINUX_PEM_XUNLOCK(pem); > +} > + > +static int > +epoll_create_common(struct thread *td, int flags) > +{ > + int error; > + > + error = kern_kqueue(td, flags); > + if (error) > + return (error); > + > + epoll_fd_install(td, EPOLL_DEF_SZ, 0); > + > + return (0); > +} > + > +int > +linux_epoll_create(struct thread *td, struct linux_epoll_create_args *args) > +{ > + > + /* > + * args->size is unused. Linux just tests it > + * and then forgets it as well. > + */ > + if (args->size <= 0) > + return (EINVAL); > + > + return (epoll_create_common(td, 0)); > +} > + > +int > +linux_epoll_create1(struct thread *td, struct linux_epoll_create1_args *args) > +{ > + int flags; > + > + if ((args->flags & ~(LINUX_O_CLOEXEC)) != 0) > + return (EINVAL); > + > + flags = 0; > + if ((args->flags & LINUX_O_CLOEXEC) != 0) > + flags |= O_CLOEXEC; > + > + return (epoll_create_common(td, flags)); > +} > + > +/* Structure converting function from epoll to kevent. */ > +static int > +epoll_to_kevent(struct thread *td, struct file *epfp, > + int fd, struct epoll_event *l_event, int *kev_flags, > + struct kevent *kevent, int *nkevents) > +{ > + uint32_t levents = l_event->events; > + struct linux_pemuldata *pem; > + struct proc *p; > + > + /* flags related to how event is registered */ > + if ((levents & LINUX_EPOLLONESHOT) != 0) > + *kev_flags |= EV_ONESHOT; > + if ((levents & LINUX_EPOLLET) != 0) > + *kev_flags |= EV_CLEAR; > + > + /* flags related to what event is registered */ > + if ((levents & LINUX_EPOLL_EVRD) != 0) { > + EV_SET(kevent++, fd, EVFILT_READ, *kev_flags, 0, 0, 0); > + ++(*nkevents); > + } > + if ((levents & LINUX_EPOLL_EVWR) != 0) { > + EV_SET(kevent++, fd, EVFILT_WRITE, *kev_flags, 0, 0, 0); > + ++(*nkevents); > + } > + > + if ((levents & ~(LINUX_EPOLL_EVSUP)) != 0) { > + p = td->td_proc; > + > + pem = pem_find(p); > + KASSERT(pem != NULL, ("epoll proc emuldata not found.\n")); > + KASSERT(pem->epoll != NULL, ("epoll proc epolldata not found.\n")); > + > + LINUX_PEM_XLOCK(pem); > + if ((pem->flags & LINUX_XUNSUP_EPOLL) == 0) { > + pem->flags |= LINUX_XUNSUP_EPOLL; > + LINUX_PEM_XUNLOCK(pem); > + linux_msg(td, "epoll_ctl unsupported flags: 0x%x\n", > + levents); > + } else > + LINUX_PEM_XUNLOCK(pem); > + return (EINVAL); > + } > + > + return (0); > +} > + > +/* > + * Structure converting function from kevent to epoll. In a case > + * this is called on error in registration we store the error in > + * event->data and pick it up later in linux_epoll_ctl(). > + */ > +static void > +kevent_to_epoll(struct kevent *kevent, struct epoll_event *l_event) > +{ > + > + if ((kevent->flags & EV_ERROR) != 0) > + return; > + > + switch (kevent->filter) { > + case EVFILT_READ: > + l_event->events = LINUX_EPOLLIN|LINUX_EPOLLRDNORM|LINUX_EPOLLPRI; > + break; > + case EVFILT_WRITE: > + l_event->events = LINUX_EPOLLOUT|LINUX_EPOLLWRNORM; > + break; > + } > +} > + > +/* > + * Copyout callback used by kevent. This converts kevent > + * events to epoll events and copies them back to the > + * userspace. This is also called on error on registering > + * of the filter. > + */ > +static int > +epoll_kev_copyout(void *arg, struct kevent *kevp, int count) > +{ > + struct epoll_copyout_args *args; > + struct linux_pemuldata *pem; > + struct epoll_emuldata *emd; > + struct epoll_event *eep; > + int error, fd, i; > + > + args = (struct epoll_copyout_args*) arg; > + eep = malloc(sizeof(*eep) * count, M_EPOLL, M_WAITOK | M_ZERO); > + > + pem = pem_find(args->p); > + KASSERT(pem != NULL, ("epoll proc emuldata not found.\n")); > + LINUX_PEM_SLOCK(pem); > + emd = pem->epoll; > + KASSERT(emd != NULL, ("epoll proc epolldata not found.\n")); > + > + for (i = 0; i < count; i++) { > + kevent_to_epoll(&kevp[i], &eep[i]); > + > + fd = kevp[i].ident; > + KASSERT(fd <= emd->fdc, ("epoll user data vector" > + " is too small.\n")); > + eep[i].data = emd->udata[fd]; > + } > + LINUX_PEM_SUNLOCK(pem); > + > + error = copyout(eep, args->leventlist, count * sizeof(*eep)); > + if (error == 0) { > + args->leventlist += count; > + args->count += count; > + } else if (args->error == 0) > + args->error = error; > + > + free(eep, M_EPOLL); > + return (error); > +} > + > +/* > + * Copyin callback used by kevent. This copies already > + * converted filters from kernel memory to the kevent > + * internal kernel memory. Hence the memcpy instead of > + * copyin. > + */ > +static int > +epoll_kev_copyin(void *arg, struct kevent *kevp, int count) > +{ > + struct epoll_copyin_args *args; > + > + args = (struct epoll_copyin_args*) arg; > + > + memcpy(kevp, args->changelist, count * sizeof(*kevp)); > + args->changelist += count; > + > + return (0); > +} > + > +/* > + * Load epoll filter, convert it to kevent filter > + * and load it into kevent subsystem. > + */ > +int > +linux_epoll_ctl(struct thread *td, struct linux_epoll_ctl_args *args) > +{ > + struct file *epfp, *fp; > + struct epoll_copyin_args ciargs; > + struct kevent kev[2]; > + struct kevent_copyops k_ops = { &ciargs, > + NULL, > + epoll_kev_copyin}; > + struct epoll_event le; > + cap_rights_t rights; > + int kev_flags; > + int nchanges = 0; > + int error; > + > + if (args->op != LINUX_EPOLL_CTL_DEL) { > + error = copyin(args->event, &le, sizeof(le)); > + if (error != 0) > + return (error); > + } > + > + error = fget(td, args->epfd, > + cap_rights_init(&rights, CAP_KQUEUE_CHANGE), &epfp); > + if (error != 0) > + return (error); > + if (epfp->f_type != DTYPE_KQUEUE) > + goto leave1; > + > + /* Protect user data vector from incorrectly supplied fd. */ > + error = fget(td, args->fd, cap_rights_init(&rights, CAP_POLL_EVENT), &fp); > + if (error != 0) > + goto leave1; > + > + /* Linux disallows spying on himself */ > + if (epfp == fp) { > + error = EINVAL; > + goto leave0; > + } > + > + ciargs.changelist = kev; > + > + switch (args->op) { > + case LINUX_EPOLL_CTL_MOD: > + /* > + * We don't memorize which events were set for this FD > + * on this level, so just delete all we could have set: > + * EVFILT_READ and EVFILT_WRITE, ignoring any errors > + */ > + error = epoll_delete_all_events(td, epfp, args->fd); > + if (error) > + goto leave0; > + /* FALLTHROUGH */ > + > + case LINUX_EPOLL_CTL_ADD: > + kev_flags = EV_ADD | EV_ENABLE; > + break; > + > + case LINUX_EPOLL_CTL_DEL: > + /* CTL_DEL means unregister this fd with this epoll */ > + error = epoll_delete_all_events(td, epfp, args->fd); > + goto leave0; > + > + default: > + error = EINVAL; > + goto leave0; > + } > + > + error = epoll_to_kevent(td, epfp, args->fd, &le, &kev_flags, > + kev, &nchanges); > + if (error) > + goto leave0; > + > + epoll_fd_install(td, args->fd, le.data); > + > + error = kern_kevent_fp(td, epfp, nchanges, 0, &k_ops, NULL); > + > +leave0: > + fdrop(fp, td); > + > +leave1: > + fdrop(epfp, td); > + return (error); > +} > + > +/* > + * Wait for a filter to be triggered on the epoll file descriptor. > + */ > +int > +linux_epoll_wait(struct thread *td, struct linux_epoll_wait_args *args) > +{ > + struct file *epfp; > + struct timespec ts, *tsp; > + cap_rights_t rights; > + struct epoll_copyout_args coargs; > + struct kevent_copyops k_ops = { &coargs, > + epoll_kev_copyout, > + NULL}; > + int error; > + > + if (args->maxevents <= 0 || args->maxevents > LINUX_MAX_EVENTS) > + return (EINVAL); > + > + error = fget(td, args->epfd, > + cap_rights_init(&rights, CAP_KQUEUE_EVENT), &epfp); > + if (error != 0) > + return (error); > + > + coargs.leventlist = args->events; > + coargs.p = td->td_proc; > + coargs.count = 0; > + coargs.error = 0; > + > + if (args->timeout != -1) { > + if (args->timeout < 0) { > + error = EINVAL; > + goto leave; > + } > + /* Convert from milliseconds to timespec. */ > + ts.tv_sec = args->timeout / 1000; > + ts.tv_nsec = (args->timeout % 1000) * 1000000; > + tsp = &ts; > + } else { > + tsp = NULL; > + } > + > + error = kern_kevent_fp(td, epfp, 0, args->maxevents, &k_ops, tsp); > + if (error == 0 && coargs.error != 0) > + error = coargs.error; > + > + /* > + * kern_kevent might return ENOMEM which is not expected from epoll_wait. > + * Maybe we should translate that but I don't think it matters at all. > + */ > + if (error == 0) > + td->td_retval[0] = coargs.count; > +leave: > + fdrop(epfp, td); > + return (error); > +} > + > +static int > +epoll_delete_event(struct thread *td, struct file *epfp, int fd, int filter) > +{ > + struct epoll_copyin_args ciargs; > + struct kevent kev; > + struct kevent_copyops k_ops = { &ciargs, > + NULL, > + epoll_kev_copyin}; > + int error; > + > + ciargs.changelist = &kev; > + EV_SET(&kev, fd, filter, EV_DELETE | EV_DISABLE, 0, 0, 0); > + > + error = kern_kevent_fp(td, epfp, 1, 0, &k_ops, NULL); > + > + /* > + * here we ignore ENONT, because we don't keep track of events here > + */ > + if (error == ENOENT) > + error = 0; > + return (error); > +} > + > +static int > +epoll_delete_all_events(struct thread *td, struct file *epfp, int fd) > +{ > + int error1, error2; > + > + error1 = epoll_delete_event(td, epfp, fd, EVFILT_READ); > + error2 = epoll_delete_event(td, epfp, fd, EVFILT_WRITE); > + > + /* report any errors we got */ > + return (error1 == 0 ? error2 : error1); > +} > > Added: head/sys/compat/linux/linux_event.h > ============================================================================== > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > +++ head/sys/compat/linux/linux_event.h Sun May 24 16:41:39 2015 (r283441) > @@ -0,0 +1,58 @@ > +/*- > + * Copyright (c) 2007 Roman Divacky > + * Copyright (c) 2014 Dmitry Chagin > + * All rights reserved. > + * > + * Redistribution and use in source and binary forms, with or without > + * modification, are permitted provided that the following conditions > + * are met: > + * 1. Redistributions of source code must retain the above copyright > + * notice, this list of conditions and the following disclaimer. > + * 2. Redistributions in binary form must reproduce the above copyright > + * notice, this list of conditions and the following disclaimer in the > + * documentation and/or other materials provided with the distribution. > + * > + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND > + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE > + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE > + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL > + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS > + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) > + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT > + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY > + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF > + * SUCH DAMAGE. > + * > + * $FreeBSD$ > + */ > + > +#ifndef _LINUX_EVENT_H_ > +#define _LINUX_EVENT_H_ > + > +#define LINUX_EPOLLIN 0x001 > +#define LINUX_EPOLLPRI 0x002 > +#define LINUX_EPOLLOUT 0x004 > +#define LINUX_EPOLLRDNORM 0x040 > +#define LINUX_EPOLLRDBAND 0x080 > +#define LINUX_EPOLLWRNORM 0x100 > +#define LINUX_EPOLLWRBAND 0x200 > +#define LINUX_EPOLLMSG 0x400 > +#define LINUX_EPOLLERR 0x008 > +#define LINUX_EPOLLHUP 0x010 > +#define LINUX_EPOLLRDHUP 0x2000 > +#define LINUX_EPOLLWAKEUP 1u<<29 > +#define LINUX_EPOLLONESHOT 1u<<30 > +#define LINUX_EPOLLET 1u<<31 > + > +#define LINUX_EPOLL_EVRD (LINUX_EPOLLIN|LINUX_EPOLLRDNORM \ > + |LINUX_EPOLLHUP|LINUX_EPOLLPRI) > +#define LINUX_EPOLL_EVWR (LINUX_EPOLLOUT|LINUX_EPOLLWRNORM) > +#define LINUX_EPOLL_EVSUP (LINUX_EPOLLET|LINUX_EPOLLONESHOT \ > + |LINUX_EPOLL_EVRD|LINUX_EPOLL_EVWR) > + > +#define LINUX_EPOLL_CTL_ADD 1 > +#define LINUX_EPOLL_CTL_DEL 2 > +#define LINUX_EPOLL_CTL_MOD 3 > + > +#endif /* !_LINUX_EVENT_H_ */ > > Modified: head/sys/compat/linux/linux_util.c > ============================================================================== > --- head/sys/compat/linux/linux_util.c Sun May 24 16:36:29 2015 (r283440) > +++ head/sys/compat/linux/linux_util.c Sun May 24 16:41:39 2015 (r283441) > @@ -54,6 +54,7 @@ __FBSDID("$FreeBSD$"); > #include > > MALLOC_DEFINE(M_LINUX, "linux", "Linux mode structures"); > +MALLOC_DEFINE(M_EPOLL, "lepoll", "Linux events structures"); > MALLOC_DEFINE(M_FUTEX, "futex", "Linux futexes"); > MALLOC_DEFINE(M_FUTEX_WP, "futex wp", "Linux futex waiting proc"); > > > Modified: head/sys/compat/linux/linux_util.h > ============================================================================== > --- head/sys/compat/linux/linux_util.h Sun May 24 16:36:29 2015 (r283440) > +++ head/sys/compat/linux/linux_util.h Sun May 24 16:41:39 2015 (r283441) > @@ -45,6 +45,7 @@ > #include > > MALLOC_DECLARE(M_LINUX); > +MALLOC_DECLARE(M_EPOLL); > MALLOC_DECLARE(M_FUTEX); > MALLOC_DECLARE(M_FUTEX_WP); > > > Modified: head/sys/conf/files.amd64 > ============================================================================== > --- head/sys/conf/files.amd64 Sun May 24 16:36:29 2015 (r283440) > +++ head/sys/conf/files.amd64 Sun May 24 16:41:39 2015 (r283441) > @@ -509,6 +509,7 @@ compat/linux/linux_uid16.c optional comp > compat/linux/linux_util.c optional compat_linux32 > compat/linux/linux_vdso.c optional compat_linux32 > compat/linux/linux_common.c optional compat_linux32 > +compat/linux/linux_event.c optional compat_linux32 > dev/amr/amr_linux.c optional compat_linux32 amr > dev/mfi/mfi_linux.c optional compat_linux32 mfi > # > > Modified: head/sys/conf/files.i386 > ============================================================================== > --- head/sys/conf/files.i386 Sun May 24 16:36:29 2015 (r283440) > +++ head/sys/conf/files.i386 Sun May 24 16:41:39 2015 (r283441) > @@ -81,6 +81,7 @@ hptrr_lib.o optional hptrr \ > cddl/contrib/opensolaris/common/atomic/i386/opensolaris_atomic.S optional zfs compile-with "${ZFS_S}" > compat/linprocfs/linprocfs.c optional linprocfs > compat/linsysfs/linsysfs.c optional linsysfs > +compat/linux/linux_event.c optional compat_linux > compat/linux/linux_emul.c optional compat_linux > compat/linux/linux_file.c optional compat_linux > compat/linux/linux_fork.c optional compat_linux > > Modified: head/sys/conf/files.pc98 > ============================================================================== > --- head/sys/conf/files.pc98 Sun May 24 16:36:29 2015 (r283440) > +++ head/sys/conf/files.pc98 Sun May 24 16:41:39 2015 (r283441) > @@ -41,6 +41,7 @@ ukbdmap.h optional ukbd_dflt_keymap \ > cddl/contrib/opensolaris/common/atomic/i386/opensolaris_atomic.S optional zfs compile-with "${ZFS_S}" > compat/linprocfs/linprocfs.c optional linprocfs > compat/linsysfs/linsysfs.c optional linsysfs > +compat/linux/linux_event.c optional compat_linux > compat/linux/linux_emul.c optional compat_linux > compat/linux/linux_file.c optional compat_linux > compat/linux/linux_fork.c optional compat_linux > > Modified: head/sys/i386/linux/linux_dummy.c > ============================================================================== > --- head/sys/i386/linux/linux_dummy.c Sun May 24 16:36:29 2015 (r283440) > +++ head/sys/i386/linux/linux_dummy.c Sun May 24 16:41:39 2015 (r283441) > @@ -70,9 +70,6 @@ DUMMY(setfsgid); > DUMMY(pivot_root); > DUMMY(mincore); > DUMMY(lookup_dcookie); > -DUMMY(epoll_create); > -DUMMY(epoll_ctl); > -DUMMY(epoll_wait); > DUMMY(remap_file_pages); > DUMMY(fstatfs64); > DUMMY(mbind); > @@ -116,7 +113,6 @@ DUMMY(timerfd_gettime); > /* linux 2.6.27: */ > DUMMY(signalfd4); > DUMMY(eventfd2); > -DUMMY(epoll_create1); > DUMMY(inotify_init1); > /* linux 2.6.30: */ > DUMMY(preadv); > > Modified: head/sys/i386/linux/syscalls.master > ============================================================================== > --- head/sys/i386/linux/syscalls.master Sun May 24 16:36:29 2015 (r283440) > +++ head/sys/i386/linux/syscalls.master Sun May 24 16:41:39 2015 (r283441) > @@ -432,9 +432,11 @@ > 251 AUE_NULL UNIMPL > 252 AUE_EXIT STD { int linux_exit_group(int error_code); } > 253 AUE_NULL STD { int linux_lookup_dcookie(void); } > -254 AUE_NULL STD { int linux_epoll_create(void); } > -255 AUE_NULL STD { int linux_epoll_ctl(void); } > -256 AUE_NULL STD { int linux_epoll_wait(void); } > +254 AUE_NULL STD { int linux_epoll_create(l_int size); } > +255 AUE_NULL STD { int linux_epoll_ctl(l_int epfd, l_int op, l_int fd, \ > + struct epoll_event *event); } > +256 AUE_NULL STD { int linux_epoll_wait(l_int epfd, struct epoll_event *events, \ > + l_int maxevents, l_int timeout); } > 257 AUE_NULL STD { int linux_remap_file_pages(void); } > 258 AUE_NULL STD { int linux_set_tid_address(int *tidptr); } > 259 AUE_NULL STD { int linux_timer_create(clockid_t clock_id, \ > @@ -535,7 +537,8 @@ > 317 AUE_NULL STD { int linux_move_pages(void); } > ; linux 2.6.19: > 318 AUE_NULL STD { int linux_getcpu(void); } > -319 AUE_NULL STD { int linux_epoll_pwait(void); } > +319 AUE_NULL STD { int linux_epoll_pwait(l_int epfd, struct epoll_event *events, \ > + l_int maxevents, l_int timeout, l_osigset_t *mask); } > ; linux 2.6.22: > 320 AUE_NULL STD { int linux_utimensat(void); } > 321 AUE_NULL STD { int linux_signalfd(void); } > @@ -549,7 +552,7 @@ > ; linux 2.6.27: > 327 AUE_NULL STD { int linux_signalfd4(void); } > 328 AUE_NULL STD { int linux_eventfd2(void); } > -329 AUE_NULL STD { int linux_epoll_create1(void); } > +329 AUE_NULL STD { int linux_epoll_create1(l_int flags); } > 330 AUE_NULL STD { int linux_dup3(l_int oldfd, \ > l_int newfd, l_int flags); } > 331 AUE_NULL STD { int linux_pipe2(l_int *pipefds, l_int flags); } > > Modified: head/sys/modules/linux/Makefile > ============================================================================== > --- head/sys/modules/linux/Makefile Sun May 24 16:36:29 2015 (r283440) > +++ head/sys/modules/linux/Makefile Sun May 24 16:41:39 2015 (r283441) > @@ -10,7 +10,7 @@ CFLAGS+=-DCOMPAT_FREEBSD32 -DCOMPAT_LINU > VDSO= linux${SFX}_vdso > > KMOD= linux > -SRCS= linux_fork.c linux${SFX}_dummy.c linux_file.c \ > +SRCS= linux_fork.c linux${SFX}_dummy.c linux_file.c linux_event.c \ > linux_futex.c linux_getcwd.c linux_ioctl.c linux_ipc.c \ > linux${SFX}_machdep.c linux_misc.c linux_signal.c \ > linux_socket.c linux_stats.c linux_sysctl.c linux${SFX}_sysent.c \ > > Modified: head/sys/modules/linux64/Makefile > ============================================================================== > --- head/sys/modules/linux64/Makefile Sun May 24 16:36:29 2015 (r283440) > +++ head/sys/modules/linux64/Makefile Sun May 24 16:41:39 2015 (r283441) > @@ -5,7 +5,7 @@ > VDSO= linux_vdso > > KMOD= linux64 > -SRCS= linux_fork.c linux_dummy.c linux_file.c \ > +SRCS= linux_fork.c linux_dummy.c linux_file.c linux_event.c \ > linux_futex.c linux_getcwd.c linux_ioctl.c linux_ipc.c \ > linux_machdep.c linux_misc.c linux_signal.c \ > linux_socket.c linux_stats.c linux_sysctl.c linux_sysent.c \ > > From owner-svn-src-all@FreeBSD.ORG Mon May 25 02:50:17 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 57A4119F; Mon, 25 May 2015 02:50:17 +0000 (UTC) (envelope-from julian@freebsd.org) Received: from vps1.elischer.org (vps1.elischer.org [204.109.63.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "vps1.elischer.org", Issuer "CA Cert Signing Authority" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 2BD89FA3; Mon, 25 May 2015 02:50:16 +0000 (UTC) (envelope-from julian@freebsd.org) Received: from jre-mbp.elischer.org (ppp121-45-225-35.lns20.per1.internode.on.net [121.45.225.35]) (authenticated bits=0) by vps1.elischer.org (8.14.9/8.14.9) with ESMTP id t4P2oArc059309 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Sun, 24 May 2015 19:50:13 -0700 (PDT) (envelope-from julian@freebsd.org) Message-ID: <55628DDC.4030506@freebsd.org> Date: Mon, 25 May 2015 10:50:04 +0800 From: Julian Elischer User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: George Neville-Neil , hiren panchasara CC: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r282240 - in head: cddl/lib/libdtrace sys/netinet References: <201504291719.t3THJtIM020724@svn.freebsd.org> <20150523215927.GM95600@strugglingcoder.info> <820BB330-CCB9-46DE-86CF-3D233B84F69B@freebsd.org> In-Reply-To: <820BB330-CCB9-46DE-86CF-3D233B84F69B@freebsd.org> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 02:50:17 -0000 On 5/24/15 9:24 PM, George Neville-Neil wrote: > > On 23 May 2015, at 17:59, hiren panchasara wrote: > >> On 04/29/15 at 05:19P, George V. Neville-Neil wrote: >>> Author: gnn >>> Date: Wed Apr 29 17:19:55 2015 >>> New Revision: 282240 >>> URL: https://svnweb.freebsd.org/changeset/base/282240 >>> >>> Log: >>> Brief demo script showing the various values that can be read via >>> the new SIFTR statically defined tracepoint (SDT). >>> >>> Differential Revision: https://reviews.freebsd.org/D2387 >>> Reviewed by: bz, markj >>> >>> Modified: >>> head/cddl/lib/libdtrace/tcp.d >>> head/sys/netinet/in_kdtrace.c >>> head/sys/netinet/in_kdtrace.h >>> head/sys/netinet/siftr.c >> George, >> >> This seems useful. Can this be MFC'd to 10? >> > I think it can be. I'll mark this and do it when I'm back from holiday. Nag me if I forget :-) > > Best, > George George.. check out this script to make MFCs to 10 an absolute snap.. instead of being a worrying operation, it's a few keystrokes... http://www.freebsd.org/~julian/MFC-10.sh credits to Bapt for the original (ports) idea. From owner-svn-src-all@FreeBSD.ORG Mon May 25 05:16:11 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id AF5497BA; Mon, 25 May 2015 05:16:11 +0000 (UTC) (envelope-from dchagin@dchagin.static.corbina.net) Received: from heemeyer.club (heemeyer.club [IPv6:2001:19f0:6400:80a1::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "heemeyer.club", Issuer "heemeyer.club" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 80E728E1; Mon, 25 May 2015 05:16:10 +0000 (UTC) (envelope-from dchagin@dchagin.static.corbina.net) Received: from dchagin.static.corbina.net (dchagin.static.corbina.ru [78.107.232.239]) by heemeyer.club (8.15.1/8.15.1) with ESMTPS id t4P5G7Fd005512 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 25 May 2015 05:16:08 GMT (envelope-from dchagin@dchagin.static.corbina.net) X-Authentication-Warning: heemeyer.club: Host dchagin.static.corbina.ru [78.107.232.239] claimed to be dchagin.static.corbina.net Received: from dchagin.static.corbina.net (localhost [127.0.0.1]) by dchagin.static.corbina.net (8.15.1/8.15.1) with ESMTPS id t4P5G6u9012167 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Mon, 25 May 2015 08:16:06 +0300 (MSK) (envelope-from dchagin@dchagin.static.corbina.net) Received: (from dchagin@localhost) by dchagin.static.corbina.net (8.15.1/8.15.1/Submit) id t4P5G6ue012166; Mon, 25 May 2015 08:16:06 +0300 (MSK) (envelope-from dchagin) Date: Mon, 25 May 2015 08:16:06 +0300 From: Chagin Dmitry To: Craig Rodrigues Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283506 - in head/sys: conf modules/linux modules/linux64 Message-ID: <20150525051606.GA12155@dchagin.static.corbina.net> References: <201505250107.t4P17uNs061671@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201505250107.t4P17uNs061671@svn.freebsd.org> User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 05:16:11 -0000 On Mon, May 25, 2015 at 01:07:56AM +0000, Craig Rodrigues wrote: > Author: rodrigc > Date: Mon May 25 01:07:55 2015 > New Revision: 283506 > URL: https://svnweb.freebsd.org/changeset/base/283506 > > Log: > For objcopy, use --input-target and --output-target > > When building with gcc 4.9 and binutils 2.25, > using '--input' and '--output' returns an error > message: > objcopy: option `--input' is ambiguous thank you > > Reported by: Jenkins > -- Have fun! chd From owner-svn-src-all@FreeBSD.ORG Mon May 25 08:23:08 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 945F211C; Mon, 25 May 2015 08:23:08 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 370D9A9C; Mon, 25 May 2015 08:23:08 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from tom.home (kostik@localhost [127.0.0.1]) by kib.kiev.ua (8.14.9/8.14.9) with ESMTP id t4P8N20G083739 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Mon, 25 May 2015 11:23:03 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.9.2 kib.kiev.ua t4P8N20G083739 Received: (from kostik@localhost) by tom.home (8.14.9/8.14.9/Submit) id t4P8N2Ws083738; Mon, 25 May 2015 11:23:02 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Mon, 25 May 2015 11:23:02 +0300 From: Konstantin Belousov To: Chagin Dmitry Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283479 - in head/sys: amd64/amd64 amd64/ia32 arm/arm i386/i386 mips/mips powerpc/powerpc sparc64/sparc64 Message-ID: <20150525082302.GJ2499@kib.kiev.ua> References: <201505241756.t4OHu3ot035613@svn.freebsd.org> <20150524182515.GF2499@kib.kiev.ua> <20150524193448.GA2729@dchagin.static.corbina.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20150524193448.GA2729@dchagin.static.corbina.net> User-Agent: Mutt/1.5.23 (2014-03-12) X-Spam-Status: No, score=-2.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=3.4.1 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on tom.home X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 08:23:08 -0000 On Sun, May 24, 2015 at 10:34:48PM +0300, Chagin Dmitry wrote: > On Sun, May 24, 2015 at 09:25:15PM +0300, Konstantin Belousov wrote: > > On Sun, May 24, 2015 at 05:56:03PM +0000, Dmitry Chagin wrote: > > > Author: dchagin > > > Date: Sun May 24 17:56:02 2015 > > > New Revision: 283479 > > > URL: https://svnweb.freebsd.org/changeset/base/283479 > > > > > > Log: > > > The kernel sends signals to the processes via ABI specific sv_sendsig method. > > > Native ABI do not need signal conversion, only emulators may want this. Usually > > > emulators implements its own sv_sendsig method. For now only ibcs2 emulator does > > > not have own sv_sendsig implementation and depends on native sendsig() method. > > > So, remove any extra attempts to convert signal numbers from native sendsig() > > > methods except from i386 where ibsc2 is living. > > > > > > Modified: > > > head/sys/amd64/amd64/machdep.c > > > head/sys/amd64/ia32/ia32_signal.c > > > head/sys/arm/arm/machdep.c > > > head/sys/i386/i386/machdep.c > > > head/sys/mips/mips/freebsd32_machdep.c > > > head/sys/mips/mips/pm_machdep.c > > > head/sys/powerpc/powerpc/exec_machdep.c > > > head/sys/sparc64/sparc64/machdep.c > > > > > > Modified: head/sys/amd64/amd64/machdep.c > > > ============================================================================== > > > --- head/sys/amd64/amd64/machdep.c Sun May 24 17:53:48 2015 (r283478) > > > +++ head/sys/amd64/amd64/machdep.c Sun May 24 17:56:02 2015 (r283479) > > > @@ -398,10 +398,6 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, > > > /* Align to 16 bytes. */ > > > sfp = (struct sigframe *)((unsigned long)sp & ~0xFul); > > > > > > - /* Translate the signal if appropriate. */ > > > - if (p->p_sysent->sv_sigtbl && sig <= p->p_sysent->sv_sigsize) > > > - sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)]; > > > - > > Does struct sysent still need sv_sigtbl and sv_sigsize members then ? > ubsc2 share sendsig with i386, so this members still used You mean, iBCS2 uses current FreeBSD signal frame layout ? Indeed, and I do not see how this is not broken. The SysV R3 definitely did not knew about things like SSE or AVX, and I am sure that the layout of the signal frame for i386 even in its non-extended part on FreeBSD mutated without looking back to the iBCS2 requirements. But this is a different issue. That said, could iBCS2 use a wrapper around some internal variant of the sendsig() which would take both ksi and translated signal number ? The signal number would be used to set sf_signum. From owner-svn-src-all@FreeBSD.ORG Mon May 25 08:34:57 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 88A0854A; Mon, 25 May 2015 08:34:57 +0000 (UTC) (envelope-from arybchik@FreeBSD.org) Received: from svn.freebsd.org (svn.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 72784D04; Mon, 25 May 2015 08:34:57 +0000 (UTC) (envelope-from arybchik@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4P8YvF8082922; Mon, 25 May 2015 08:34:57 GMT (envelope-from arybchik@FreeBSD.org) Received: (from arybchik@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4P8Yu8X082915; Mon, 25 May 2015 08:34:56 GMT (envelope-from arybchik@FreeBSD.org) Message-Id: <201505250834.t4P8Yu8X082915@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: arybchik set sender to arybchik@FreeBSD.org using -f From: Andrew Rybchenko Date: Mon, 25 May 2015 08:34:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283514 - in head: share/man/man4 sys/conf sys/dev/sfxge sys/dev/sfxge/common sys/modules/sfxge X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 08:34:57 -0000 Author: arybchik Date: Mon May 25 08:34:55 2015 New Revision: 283514 URL: https://svnweb.freebsd.org/changeset/base/283514 Log: sfxge: add 7xxx NICs family support Support 7xxx adapters including firmware-assisted TSO and VLAN tagging: - Solarflare Flareon Ultra 7000 series 10/40G adapters: - Solarflare SFN7042Q QSFP+ Server Adapter - Solarflare SFN7142Q QSFP+ Server Adapter - Solarflare Flareon Ultra 7000 series 10G adapters: - Solarflare SFN7022F SFP+ Server Adapter - Solarflare SFN7122F SFP+ Server Adapter - Solarflare SFN7322F Precision Time Synchronization Server Adapter - Solarflare Flareon 7000 series 10G adapters: - Solarflare SFN7002F SFP+ Server Adapter Support utilities to configure adapters and update firmware. The work is done by Solarflare developers (Andy Moreton, Andrew Lee and many others), Artem V. Andreev and me. Sponsored by: Solarflare Communications, Inc. MFC after: 2 weeks Causually read by: gnn Differential Revision: https://reviews.freebsd.org/D2618 Added: head/sys/dev/sfxge/common/ef10_tlv_layout.h (contents, props changed) head/sys/dev/sfxge/common/efx_check.h (contents, props changed) head/sys/dev/sfxge/common/efx_crc32.c (contents, props changed) head/sys/dev/sfxge/common/efx_hash.c (contents, props changed) head/sys/dev/sfxge/common/efx_phy_ids.h (contents, props changed) head/sys/dev/sfxge/common/hunt_ev.c (contents, props changed) head/sys/dev/sfxge/common/hunt_filter.c (contents, props changed) head/sys/dev/sfxge/common/hunt_impl.h (contents, props changed) head/sys/dev/sfxge/common/hunt_intr.c (contents, props changed) head/sys/dev/sfxge/common/hunt_mac.c (contents, props changed) head/sys/dev/sfxge/common/hunt_mcdi.c (contents, props changed) head/sys/dev/sfxge/common/hunt_nic.c (contents, props changed) head/sys/dev/sfxge/common/hunt_nvram.c (contents, props changed) head/sys/dev/sfxge/common/hunt_phy.c (contents, props changed) head/sys/dev/sfxge/common/hunt_rx.c (contents, props changed) head/sys/dev/sfxge/common/hunt_sram.c (contents, props changed) head/sys/dev/sfxge/common/hunt_tx.c (contents, props changed) head/sys/dev/sfxge/common/hunt_vpd.c (contents, props changed) head/sys/dev/sfxge/common/mcdi_mon.c (contents, props changed) head/sys/dev/sfxge/common/mcdi_mon.h (contents, props changed) head/sys/dev/sfxge/common/siena_mcdi.c (contents, props changed) head/sys/dev/sfxge/sfxge_ioc.h (contents, props changed) head/sys/dev/sfxge/sfxge_nvram.c (contents, props changed) Deleted: head/sys/dev/sfxge/common/siena_mon.c Modified: head/share/man/man4/sfxge.4 (contents, props changed) head/sys/conf/files head/sys/conf/files.amd64 head/sys/dev/sfxge/common/efsys.h (contents, props changed) head/sys/dev/sfxge/common/efx.h (contents, props changed) head/sys/dev/sfxge/common/efx_bootcfg.c (contents, props changed) head/sys/dev/sfxge/common/efx_ev.c (contents, props changed) head/sys/dev/sfxge/common/efx_filter.c (contents, props changed) head/sys/dev/sfxge/common/efx_impl.h (contents, props changed) head/sys/dev/sfxge/common/efx_intr.c (contents, props changed) head/sys/dev/sfxge/common/efx_mac.c (contents, props changed) head/sys/dev/sfxge/common/efx_mcdi.c (contents, props changed) head/sys/dev/sfxge/common/efx_mcdi.h (contents, props changed) head/sys/dev/sfxge/common/efx_mon.c (contents, props changed) head/sys/dev/sfxge/common/efx_nic.c (contents, props changed) head/sys/dev/sfxge/common/efx_nvram.c (contents, props changed) head/sys/dev/sfxge/common/efx_phy.c (contents, props changed) head/sys/dev/sfxge/common/efx_port.c (contents, props changed) head/sys/dev/sfxge/common/efx_regs.h (contents, props changed) head/sys/dev/sfxge/common/efx_regs_ef10.h (contents, props changed) head/sys/dev/sfxge/common/efx_regs_mcdi.h (contents, props changed) head/sys/dev/sfxge/common/efx_regs_pci.h (contents, props changed) head/sys/dev/sfxge/common/efx_rx.c (contents, props changed) head/sys/dev/sfxge/common/efx_sram.c (contents, props changed) head/sys/dev/sfxge/common/efx_tx.c (contents, props changed) head/sys/dev/sfxge/common/efx_types.h (contents, props changed) head/sys/dev/sfxge/common/efx_vpd.c (contents, props changed) head/sys/dev/sfxge/common/efx_wol.c (contents, props changed) head/sys/dev/sfxge/common/siena_flash.h (contents, props changed) head/sys/dev/sfxge/common/siena_impl.h (contents, props changed) head/sys/dev/sfxge/common/siena_mac.c (contents, props changed) head/sys/dev/sfxge/common/siena_nic.c (contents, props changed) head/sys/dev/sfxge/common/siena_nvram.c (contents, props changed) head/sys/dev/sfxge/common/siena_phy.c (contents, props changed) head/sys/dev/sfxge/common/siena_sram.c (contents, props changed) head/sys/dev/sfxge/common/siena_vpd.c (contents, props changed) head/sys/dev/sfxge/sfxge.c (contents, props changed) head/sys/dev/sfxge/sfxge.h (contents, props changed) head/sys/dev/sfxge/sfxge_dma.c (contents, props changed) head/sys/dev/sfxge/sfxge_ev.c (contents, props changed) head/sys/dev/sfxge/sfxge_intr.c (contents, props changed) head/sys/dev/sfxge/sfxge_mcdi.c (contents, props changed) head/sys/dev/sfxge/sfxge_port.c (contents, props changed) head/sys/dev/sfxge/sfxge_rx.c (contents, props changed) head/sys/dev/sfxge/sfxge_rx.h (contents, props changed) head/sys/dev/sfxge/sfxge_tx.c (contents, props changed) head/sys/dev/sfxge/sfxge_tx.h (contents, props changed) head/sys/dev/sfxge/sfxge_version.h head/sys/modules/sfxge/Makefile (contents, props changed) Modified: head/share/man/man4/sfxge.4 ============================================================================== --- head/share/man/man4/sfxge.4 Mon May 25 02:32:30 2015 (r283513) +++ head/share/man/man4/sfxge.4 Mon May 25 08:34:55 2015 (r283514) @@ -1,26 +1,30 @@ -.\" Copyright (c) 2011 Solarflare Communications, Inc. +.\" Copyright (c) 2011-2015 Solarflare 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. +.\" 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 COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +.\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +.\" THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +.\" CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +.\" EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +.\" PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +.\" OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +.\" WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +.\" EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +.\" +.\" The views and conclusions contained in the software and documentation are +.\" those of the authors and should not be interpreted as representing official +.\" policies, either expressed or implied, of the FreeBSD Project. .\" .\" $FreeBSD$ .\" @@ -116,6 +120,9 @@ If a packet is dropped, the .Va tx_put_overflow counter is incremented and the local sender receives ENOBUFS. The value must be greater than or equal to 0. +.It Va hw.sfxge.tso_fw_assisted +Enable/disable usage of FW-assisted TSO if supported by NIC firmware. +Enabled by default. .It Va hw.sfxge.N.max_rss_channels The maximum number of allocated RSS channels for the Nth adapter. If set to 0 or unset, the number of channels is determined by the number Modified: head/sys/conf/files ============================================================================== --- head/sys/conf/files Mon May 25 02:32:30 2015 (r283513) +++ head/sys/conf/files Mon May 25 08:34:55 2015 (r283514) @@ -2156,37 +2156,6 @@ dev/sdhci/sdhci.c optional sdhci dev/sdhci/sdhci_if.m optional sdhci dev/sdhci/sdhci_pci.c optional sdhci pci dev/sf/if_sf.c optional sf pci -dev/sfxge/common/efx_bootcfg.c optional sfxge pci -dev/sfxge/common/efx_ev.c optional sfxge pci -dev/sfxge/common/efx_filter.c optional sfxge pci -dev/sfxge/common/efx_intr.c optional sfxge pci -dev/sfxge/common/efx_mac.c optional sfxge pci -dev/sfxge/common/efx_mcdi.c optional sfxge pci -dev/sfxge/common/efx_mon.c optional sfxge pci -dev/sfxge/common/efx_nic.c optional sfxge pci -dev/sfxge/common/efx_nvram.c optional sfxge pci -dev/sfxge/common/efx_phy.c optional sfxge pci -dev/sfxge/common/efx_port.c optional sfxge pci -dev/sfxge/common/efx_rx.c optional sfxge pci -dev/sfxge/common/efx_sram.c optional sfxge pci -dev/sfxge/common/efx_tx.c optional sfxge pci -dev/sfxge/common/efx_vpd.c optional sfxge pci -dev/sfxge/common/efx_wol.c optional sfxge pci -dev/sfxge/common/siena_mac.c optional sfxge pci -dev/sfxge/common/siena_mon.c optional sfxge pci -dev/sfxge/common/siena_nic.c optional sfxge pci -dev/sfxge/common/siena_nvram.c optional sfxge pci -dev/sfxge/common/siena_phy.c optional sfxge pci -dev/sfxge/common/siena_sram.c optional sfxge pci -dev/sfxge/common/siena_vpd.c optional sfxge pci -dev/sfxge/sfxge.c optional sfxge pci -dev/sfxge/sfxge_dma.c optional sfxge pci -dev/sfxge/sfxge_ev.c optional sfxge pci -dev/sfxge/sfxge_intr.c optional sfxge pci -dev/sfxge/sfxge_mcdi.c optional sfxge pci -dev/sfxge/sfxge_port.c optional sfxge pci -dev/sfxge/sfxge_rx.c optional sfxge pci -dev/sfxge/sfxge_tx.c optional sfxge pci dev/sge/if_sge.c optional sge pci dev/si/si.c optional si dev/si/si2_z280.c optional si Modified: head/sys/conf/files.amd64 ============================================================================== --- head/sys/conf/files.amd64 Mon May 25 02:32:30 2015 (r283513) +++ head/sys/conf/files.amd64 Mon May 25 08:34:55 2015 (r283514) @@ -304,37 +304,52 @@ dev/qlxgbe/ql_isr.c optional qlxgbe pci dev/qlxgbe/ql_misc.c optional qlxgbe pci dev/qlxgbe/ql_os.c optional qlxgbe pci dev/qlxgbe/ql_reset.c optional qlxgbe pci -dev/sfxge/common/efx_bootcfg.c optional sfxge inet pci -dev/sfxge/common/efx_ev.c optional sfxge inet pci -dev/sfxge/common/efx_filter.c optional sfxge inet pci -dev/sfxge/common/efx_intr.c optional sfxge inet pci -dev/sfxge/common/efx_mac.c optional sfxge inet pci -dev/sfxge/common/efx_mcdi.c optional sfxge inet pci -dev/sfxge/common/efx_mon.c optional sfxge inet pci -dev/sfxge/common/efx_nic.c optional sfxge inet pci -dev/sfxge/common/efx_nvram.c optional sfxge inet pci -dev/sfxge/common/efx_phy.c optional sfxge inet pci -dev/sfxge/common/efx_port.c optional sfxge inet pci -dev/sfxge/common/efx_rx.c optional sfxge inet pci -dev/sfxge/common/efx_sram.c optional sfxge inet pci -dev/sfxge/common/efx_tx.c optional sfxge inet pci -dev/sfxge/common/efx_vpd.c optional sfxge inet pci -dev/sfxge/common/efx_wol.c optional sfxge inet pci -dev/sfxge/common/siena_mac.c optional sfxge inet pci -dev/sfxge/common/siena_mon.c optional sfxge inet pci -dev/sfxge/common/siena_nic.c optional sfxge inet pci -dev/sfxge/common/siena_nvram.c optional sfxge inet pci -dev/sfxge/common/siena_phy.c optional sfxge inet pci -dev/sfxge/common/siena_sram.c optional sfxge inet pci -dev/sfxge/common/siena_vpd.c optional sfxge inet pci -dev/sfxge/sfxge.c optional sfxge inet pci -dev/sfxge/sfxge_dma.c optional sfxge inet pci -dev/sfxge/sfxge_ev.c optional sfxge inet pci -dev/sfxge/sfxge_intr.c optional sfxge inet pci -dev/sfxge/sfxge_mcdi.c optional sfxge inet pci -dev/sfxge/sfxge_port.c optional sfxge inet pci -dev/sfxge/sfxge_rx.c optional sfxge inet pci -dev/sfxge/sfxge_tx.c optional sfxge inet pci +dev/sfxge/common/efx_bootcfg.c optional sfxge pci +dev/sfxge/common/efx_crc32.c optional sfxge pci +dev/sfxge/common/efx_ev.c optional sfxge pci +dev/sfxge/common/efx_filter.c optional sfxge pci +dev/sfxge/common/efx_hash.c optional sfxge pci +dev/sfxge/common/efx_intr.c optional sfxge pci +dev/sfxge/common/efx_mac.c optional sfxge pci +dev/sfxge/common/efx_mcdi.c optional sfxge pci +dev/sfxge/common/efx_mon.c optional sfxge pci +dev/sfxge/common/efx_nic.c optional sfxge pci +dev/sfxge/common/efx_nvram.c optional sfxge pci +dev/sfxge/common/efx_phy.c optional sfxge pci +dev/sfxge/common/efx_port.c optional sfxge pci +dev/sfxge/common/efx_rx.c optional sfxge pci +dev/sfxge/common/efx_sram.c optional sfxge pci +dev/sfxge/common/efx_tx.c optional sfxge pci +dev/sfxge/common/efx_vpd.c optional sfxge pci +dev/sfxge/common/efx_wol.c optional sfxge pci +dev/sfxge/common/hunt_ev.c optional sfxge pci +dev/sfxge/common/hunt_filter.c optional sfxge pci +dev/sfxge/common/hunt_intr.c optional sfxge pci +dev/sfxge/common/hunt_mac.c optional sfxge pci +dev/sfxge/common/hunt_mcdi.c optional sfxge pci +dev/sfxge/common/hunt_nic.c optional sfxge pci +dev/sfxge/common/hunt_nvram.c optional sfxge pci +dev/sfxge/common/hunt_phy.c optional sfxge pci +dev/sfxge/common/hunt_rx.c optional sfxge pci +dev/sfxge/common/hunt_sram.c optional sfxge pci +dev/sfxge/common/hunt_tx.c optional sfxge pci +dev/sfxge/common/hunt_vpd.c optional sfxge pci +dev/sfxge/common/siena_mac.c optional sfxge pci +dev/sfxge/common/siena_mcdi.c optional sfxge pci +dev/sfxge/common/siena_nic.c optional sfxge pci +dev/sfxge/common/siena_nvram.c optional sfxge pci +dev/sfxge/common/siena_phy.c optional sfxge pci +dev/sfxge/common/siena_sram.c optional sfxge pci +dev/sfxge/common/siena_vpd.c optional sfxge pci +dev/sfxge/sfxge.c optional sfxge pci +dev/sfxge/sfxge_dma.c optional sfxge pci +dev/sfxge/sfxge_ev.c optional sfxge pci +dev/sfxge/sfxge_intr.c optional sfxge pci +dev/sfxge/sfxge_mcdi.c optional sfxge pci +dev/sfxge/sfxge_nvram.c optional sfxge pci +dev/sfxge/sfxge_port.c optional sfxge pci +dev/sfxge/sfxge_rx.c optional sfxge pci +dev/sfxge/sfxge_tx.c optional sfxge pci dev/sio/sio.c optional sio dev/sio/sio_isa.c optional sio isa dev/sio/sio_pccard.c optional sio pccard Added: head/sys/dev/sfxge/common/ef10_tlv_layout.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/dev/sfxge/common/ef10_tlv_layout.h Mon May 25 08:34:55 2015 (r283514) @@ -0,0 +1,691 @@ +/*- + * Copyright (c) 2012-2015 Solarflare 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 COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are + * those of the authors and should not be interpreted as representing official + * policies, either expressed or implied, of the FreeBSD Project. + * + * $FreeBSD$ + */ + +/* These structures define the layouts for the TLV items stored in static and + * dynamic configuration partitions in NVRAM for EF10 (Huntington etc.). + * + * They contain the same sort of information that was kept in the + * siena_mc_static_config_hdr_t and siena_mc_dynamic_config_hdr_t structures + * (defined in and ) for + * Siena. + * + * These are used directly by the MC and should also be usable directly on host + * systems which are little-endian and do not do strange things with structure + * padding. (Big-endian host systems will require some byte-swapping.) + * + * ----- + * + * Please refer to SF-108797-SW for a general overview of the TLV partition + * format. + * + * ----- + * + * The current tag IDs have a general structure: with the exception of the + * special values defined in the document, they are of the form 0xLTTTNNNN, + * where: + * + * - L is a location, indicating where this tag is expected to be found: + * 0 for static configuration, or 1 for dynamic configuration. Other + * values are reserved. + * + * - TTT is a type, which is just a unique value. The same type value + * might appear in both locations, indicating a relationship between + * the items (e.g. static and dynamic VPD below). + * + * - NNNN is an index of some form. Some item types are per-port, some + * are per-PF, some are per-partition-type. + * + * ----- + * + * As with the previous Siena structures, each structure here is laid out + * carefully: values are aligned to their natural boundary, with explicit + * padding fields added where necessary. (No, technically this does not + * absolutely guarantee portability. But, in practice, compilers are generally + * sensible enough not to introduce completely pointless padding, and it works + * well enough.) + */ + + +#ifndef CI_MGMT_TLV_LAYOUT_H +#define CI_MGMT_TLV_LAYOUT_H + + +/* ---------------------------------------------------------------------------- + * General structure (defined by SF-108797-SW) + * ---------------------------------------------------------------------------- + */ + + +/* The "end" tag. + * + * (Note that this is *not* followed by length or value fields: anything after + * the tag itself is irrelevant.) + */ + +#define TLV_TAG_END (0xEEEEEEEE) + + +/* Other special reserved tag values. + */ + +#define TLV_TAG_SKIP (0x00000000) +#define TLV_TAG_INVALID (0xFFFFFFFF) + + +/* TLV partition header. + * + * In a TLV partition, this must be the first item in the sequence, at offset + * 0. + */ + +#define TLV_TAG_PARTITION_HEADER (0xEF10DA7A) + +struct tlv_partition_header { + uint32_t tag; + uint32_t length; + uint16_t type_id; + uint16_t reserved; + uint32_t generation; + uint32_t total_length; +}; + + +/* TLV partition trailer. + * + * In a TLV partition, this must be the last item in the sequence, immediately + * preceding the TLV_TAG_END word. + */ + +#define TLV_TAG_PARTITION_TRAILER (0xEF101A57) + +struct tlv_partition_trailer { + uint32_t tag; + uint32_t length; + uint32_t generation; + uint32_t checksum; +}; + + +/* Appendable TLV partition header. + * + * In an appendable TLV partition, this must be the first item in the sequence, + * at offset 0. (Note that, unlike the configuration partitions, there is no + * trailer before the TLV_TAG_END word.) + */ + +#define TLV_TAG_APPENDABLE_PARTITION_HEADER (0xEF10ADA7) + +struct tlv_appendable_partition_header { + uint32_t tag; + uint32_t length; + uint16_t type_id; + uint16_t reserved; +}; + + +/* ---------------------------------------------------------------------------- + * Configuration items + * ---------------------------------------------------------------------------- + */ + + +/* NIC global capabilities. + */ + +#define TLV_TAG_GLOBAL_CAPABILITIES (0x00010000) + +struct tlv_global_capabilities { + uint32_t tag; + uint32_t length; + uint32_t flags; +}; + + +/* Siena-style per-port MAC address allocation. + * + * There are addresses, starting at and incrementing + * by adding to the low-order byte(s). + * + * (See also TLV_TAG_GLOBAL_MAC for an alternative, specifying a global pool + * of contiguous MAC addresses for the firmware to allocate as it sees fit.) + */ + +#define TLV_TAG_PORT_MAC(port) (0x00020000 + (port)) + +struct tlv_port_mac { + uint32_t tag; + uint32_t length; + uint8_t base_address[6]; + uint16_t reserved; + uint16_t count; + uint16_t stride; +}; + + +/* Static VPD. + * + * This is the portion of VPD which is set at manufacturing time and not + * expected to change. It is formatted as a standard PCI VPD block. + */ + +#define TLV_TAG_PF_STATIC_VPD(pf) (0x00030000 + (pf)) + +struct tlv_pf_static_vpd { + uint32_t tag; + uint32_t length; + uint8_t bytes[]; +}; + + +/* Dynamic VPD. + * + * This is the portion of VPD which may be changed (e.g. by firmware updates). + * It is formatted as a standard PCI VPD block. + */ + +#define TLV_TAG_PF_DYNAMIC_VPD(pf) (0x10030000 + (pf)) + +struct tlv_pf_dynamic_vpd { + uint32_t tag; + uint32_t length; + uint8_t bytes[]; +}; + + +/* "DBI" PCI config space changes. + * + * This is a set of edits made to the default PCI config space values before + * the device is allowed to enumerate. + */ + +#define TLV_TAG_PF_DBI(pf) (0x00040000 + (pf)) + +struct tlv_pf_dbi { + uint32_t tag; + uint32_t length; + struct { + uint16_t addr; + uint16_t byte_enables; + uint32_t value; + } items[]; +}; + + +/* Partition subtype codes. + * + * A subtype may optionally be stored for each type of partition present in + * the NVRAM. For example, this may be used to allow a generic firmware update + * utility to select a specific variant of firmware for a specific variant of + * board. + * + * The description[] field is an optional string which is returned in the + * MC_CMD_NVRAM_METADATA response if present. + */ + +#define TLV_TAG_PARTITION_SUBTYPE(type) (0x00050000 + (type)) + +struct tlv_partition_subtype { + uint32_t tag; + uint32_t length; + uint32_t subtype; + uint8_t description[]; +}; + + +/* Partition version codes. + * + * A version may optionally be stored for each type of partition present in + * the NVRAM. This provides a standard way of tracking the currently stored + * version of each of the various component images. + */ + +#define TLV_TAG_PARTITION_VERSION(type) (0x10060000 + (type)) + +struct tlv_partition_version { + uint32_t tag; + uint32_t length; + uint16_t version_w; + uint16_t version_x; + uint16_t version_y; + uint16_t version_z; +}; + +/* Global PCIe configuration */ + +#define TLV_TAG_GLOBAL_PCIE_CONFIG (0x10070000) + +struct tlv_pcie_config { + uint32_t tag; + uint32_t length; + int16_t max_pf_number; /**< Largest PF RID (lower PFs may be hidden) */ + uint16_t pf_aper; /**< BIU aperture for PF BAR2 */ + uint16_t vf_aper; /**< BIU aperture for VF BAR0 */ + uint16_t int_aper; /**< BIU aperture for PF BAR4 and VF BAR2 */ +#define TLV_MAX_PF_DEFAULT (-1) /* Use FW default for largest PF RID */ +#define TLV_APER_DEFAULT (0xFFFF) /* Use FW default for a given aperture */ +}; + +/* Per-PF configuration. Note that not all these fields are necessarily useful + * as the apertures are constrained by the BIU settings (the one case we do + * use is to make BAR2 bigger than the BIU thinks to reserve space), but we can + * tidy things up later */ + +#define TLV_TAG_PF_PCIE_CONFIG(pf) (0x10080000 + (pf)) + +struct tlv_per_pf_pcie_config { + uint32_t tag; + uint32_t length; + uint8_t vfs_total; + uint8_t port_allocation; + uint16_t vectors_per_pf; + uint16_t vectors_per_vf; + uint8_t pf_bar0_aperture; + uint8_t pf_bar2_aperture; + uint8_t vf_bar0_aperture; + uint8_t vf_base; + uint16_t supp_pagesz; + uint16_t msix_vec_base; +}; + + +/* Development ONLY. This is a single TLV tag for all the gubbins + * that can be set through the MC command-line other than the PCIe + * settings. This is a temporary measure. */ +#define TLV_TAG_TMP_GUBBINS (0x10090000) + +struct tlv_tmp_gubbins { + uint32_t tag; + uint32_t length; + /* Consumed by dpcpu.c */ + uint64_t tx0_tags; /* Bitmap */ + uint64_t tx1_tags; /* Bitmap */ + uint64_t dl_tags; /* Bitmap */ + uint32_t flags; +#define TLV_DPCPU_TX_STRIPE (1) /* TX striping is on */ +#define TLV_DPCPU_BIU_TAGS (2) /* Use BIU tag manager */ +#define TLV_DPCPU_TX0_TAGS (4) /* tx0_tags is valid */ +#define TLV_DPCPU_TX1_TAGS (8) /* tx1_tags is valid */ +#define TLV_DPCPU_DL_TAGS (16) /* dl_tags is valid */ + /* Consumed by features.c */ + uint32_t dut_features; /* All 1s -> leave alone */ + int8_t with_rmon; /* 0 -> off, 1 -> on, -1 -> leave alone */ + /* Consumed by clocks_hunt.c */ + int8_t clk_mode; /* 0 -> off, 1 -> on, -1 -> leave alone */ + /* Consumed by sram.c */ + int8_t rx_dc_size; /* -1 -> leave alone */ + int8_t tx_dc_size; + int16_t num_q_allocs; +}; + +/* Global port configuration + * + * This is now deprecated in favour of a platform-provided default + * and dynamic config override via tlv_global_port_options. + */ +#define TLV_TAG_GLOBAL_PORT_CONFIG (0x000a0000) + +struct tlv_global_port_config { + uint32_t tag; + uint32_t length; + uint32_t ports_per_core; + uint32_t max_port_speed; +}; + + +/* Firmware options. + * + * This is intended for user-configurable selection of optional firmware + * features and variants. + * + * Initially, this consists only of the satellite CPU firmware variant + * selection, but this tag could be extended in the future (using the + * tag length to determine whether additional fields are present). + */ + +#define TLV_TAG_FIRMWARE_OPTIONS (0x100b0000) + +struct tlv_firmware_options { + uint32_t tag; + uint32_t length; + uint32_t firmware_variant; +#define TLV_FIRMWARE_VARIANT_DRIVER_SELECTED (0xffffffff) + +/* These are the values for overriding the driver's choice; the definitions + * are taken from MCDI so that they don't get out of step. Include + * or the equivalent from your driver's tree if + * you need to use these constants. + */ +#define TLV_FIRMWARE_VARIANT_FULL_FEATURED MC_CMD_FW_FULL_FEATURED +#define TLV_FIRMWARE_VARIANT_LOW_LATENCY MC_CMD_FW_LOW_LATENCY +#define TLV_FIRMWARE_VARIANT_PACKED_STREAM MC_CMD_FW_PACKED_STREAM +#define TLV_FIRMWARE_VARIANT_HIGH_TX_RATE MC_CMD_FW_HIGH_TX_RATE +#define TLV_FIRMWARE_VARIANT_PACKED_STREAM_HASH_MODE_1 \ + MC_CMD_FW_PACKED_STREAM_HASH_MODE_1 +}; + +/* Voltage settings + * + * Intended for boards with A0 silicon where the core voltage may + * need tweaking. Most likely set once when the pass voltage is + * determined. */ + +#define TLV_TAG_0V9_SETTINGS (0x000c0000) + +struct tlv_0v9_settings { + uint32_t tag; + uint32_t length; + uint16_t flags; /* Boards with high 0v9 settings may need active cooling */ +#define TLV_TAG_0V9_REQUIRES_FAN (1) + uint16_t target_voltage; /* In millivolts */ + /* Since the limits are meant to be centred to the target (and must at least + * contain it) they need setting as well. */ + uint16_t warn_low; /* In millivolts */ + uint16_t warn_high; /* In millivolts */ + uint16_t panic_low; /* In millivolts */ + uint16_t panic_high; /* In millivolts */ +}; + + +/* Clock configuration */ + +#define TLV_TAG_CLOCK_CONFIG (0x000d0000) + +struct tlv_clock_config { + uint32_t tag; + uint32_t length; + uint16_t clk_sys; /* MHz */ + uint16_t clk_dpcpu; /* MHz */ + uint16_t clk_icore; /* MHz */ + uint16_t clk_pcs; /* MHz */ +}; + +#define TLV_TAG_CLOCK_CONFIG_MEDFORD (0x00100000) + +struct tlv_clock_config_medford { + uint32_t tag; + uint32_t length; + uint16_t clk_sys; /* MHz */ + uint16_t clk_mc; /* MHz */ + uint16_t clk_rmon; /* MHz */ + uint16_t clk_vswitch; /* MHz */ + uint16_t clk_dpcpu; /* MHz */ + uint16_t clk_pcs; /* MHz */ +}; + + +/* EF10-style global pool of MAC addresses. + * + * There are addresses, starting at , which are + * contiguous. Firmware is responsible for allocating addresses from this + * pool to ports / PFs as appropriate. + */ + +#define TLV_TAG_GLOBAL_MAC (0x000e0000) + +struct tlv_global_mac { + uint32_t tag; + uint32_t length; + uint8_t base_address[6]; + uint16_t reserved1; + uint16_t count; + uint16_t reserved2; +}; + +#define TLV_TAG_ATB_0V9_TARGET (0x000f0000) + +/* The target value for the 0v9 power rail measured on-chip at the + * analogue test bus */ +struct tlv_0v9_atb_target { + uint32_t tag; + uint32_t length; + uint16_t millivolts; + uint16_t reserved; +}; + +/* Global PCIe configuration, second revision. This represents the visible PFs + * by a bitmap rather than having the number of the highest visible one. As such + * it can (for a 16-PF chip) represent a superset of what TLV_TAG_GLOBAL_PCIE_CONFIG + * can and it should be used in place of that tag in future (but compatibility with + * the old tag will be left in the firmware indefinitely). */ + +#define TLV_TAG_GLOBAL_PCIE_CONFIG_R2 (0x10100000) + +struct tlv_pcie_config_r2 { + uint32_t tag; + uint32_t length; + uint16_t visible_pfs; /**< Bitmap of visible PFs */ + uint16_t pf_aper; /**< BIU aperture for PF BAR2 */ + uint16_t vf_aper; /**< BIU aperture for VF BAR0 */ + uint16_t int_aper; /**< BIU aperture for PF BAR4 and VF BAR2 */ +}; + +/* Dynamic port mode. + * + * Allows selecting alternate port configuration for platforms that support it + * (e.g. 1x40G vs 2x10G on Milano, 1x40G vs 4x10G on Medford). This affects the + * number of externally visible ports (and, hence, PF to port mapping), so must + * be done at boot time. + * + * This tag supercedes tlv_global_port_config. + */ + +#define TLV_TAG_GLOBAL_PORT_MODE (0x10110000) + +struct tlv_global_port_mode { + uint32_t tag; + uint32_t length; + uint32_t port_mode; +#define TLV_PORT_MODE_DEFAULT (0xffffffff) /* Default for given platform */ +#define TLV_PORT_MODE_10G (0) /* 10G, single SFP/10G-KR */ +#define TLV_PORT_MODE_40G (1) /* 40G, single QSFP/40G-KR */ +#define TLV_PORT_MODE_10G_10G (2) /* 2x10G, dual SFP/10G-KR or single QSFP */ +#define TLV_PORT_MODE_40G_40G (3) /* 40G + 40G, dual QSFP/40G-KR (Greenport, Medford) */ +#define TLV_PORT_MODE_10G_10G_10G_10G (4) /* 2x10G + 2x10G, quad SFP/10G-KR or dual QSFP (Greenport, Medford) */ +#define TLV_PORT_MODE_10G_10G_10G_10G_Q (5) /* 4x10G, single QSFP, cage 0 (Medford) */ +#define TLV_PORT_MODE_40G_10G_10G (6) /* 1x40G + 2x10G, dual QSFP (Greenport, Medford) */ +#define TLV_PORT_MODE_10G_10G_40G (7) /* 2x10G + 1x40G, dual QSFP (Greenport, Medford) */ +#define TLV_PORT_MODE_10G_10G_10G_10G_Q2 (8) /* 4x10G, single QSFP, cage 1 (Medford) */ +#define TLV_PORT_MODE_MAX TLV_PORT_MODE_10G_10G_10G_10G_Q2 +}; + +/* Type of the v-switch created implicitly by the firmware */ + +#define TLV_TAG_VSWITCH_TYPE(port) (0x10120000 + (port)) + +struct tlv_vswitch_type { + uint32_t tag; + uint32_t length; + uint32_t vswitch_type; +#define TLV_VSWITCH_TYPE_DEFAULT (0xffffffff) /* Firmware default; equivalent to no TLV present for a given port */ +#define TLV_VSWITCH_TYPE_NONE (0) +#define TLV_VSWITCH_TYPE_VLAN (1) +#define TLV_VSWITCH_TYPE_VEB (2) +#define TLV_VSWITCH_TYPE_VEPA (3) +#define TLV_VSWITCH_TYPE_MUX (4) +#define TLV_VSWITCH_TYPE_TEST (5) +}; + +/* A VLAN tag for the v-port created implicitly by the firmware */ + +#define TLV_TAG_VPORT_VLAN_TAG(pf) (0x10130000 + (pf)) + +struct tlv_vport_vlan_tag { + uint32_t tag; + uint32_t length; + uint32_t vlan_tag; +#define TLV_VPORT_NO_VLAN_TAG (0xFFFFFFFF) /* Default in the absence of TLV for a given PF */ +}; + +/* Offset to be applied to the 0v9 setting, wherever it came from */ + +#define TLV_TAG_ATB_0V9_OFFSET (0x10140000) + +struct tlv_0v9_atb_offset { + uint32_t tag; + uint32_t length; + int16_t offset_millivolts; + uint16_t reserved; +}; + +/* A privilege mask given on reset to all non-admin PCIe functions (that is other than first-PF-per-port). + * The meaning of particular bits is defined in mcdi_ef10.yml under MC_CMD_PRIVILEGE_MASK, see also bug 44583. + * TLV_TAG_PRIVILEGE_MASK_ADD specifies bits that should be added (ORed) to firmware default while + * TLV_TAG_PRIVILEGE_MASK_REM specifies bits that should be removed (ANDed) from firmware default: + * Initial_privilege_mask = (firmware_default_mask | privilege_mask_add) & ~privilege_mask_rem */ + +#define TLV_TAG_PRIVILEGE_MASK (0x10150000) /* legacy symbol - do not use */ + +struct tlv_privilege_mask { /* legacy structure - do not use */ + uint32_t tag; + uint32_t length; + uint32_t privilege_mask; +}; + +#define TLV_TAG_PRIVILEGE_MASK_ADD (0x10150000) + +struct tlv_privilege_mask_add { + uint32_t tag; + uint32_t length; + uint32_t privilege_mask_add; +}; + +#define TLV_TAG_PRIVILEGE_MASK_REM (0x10160000) + +struct tlv_privilege_mask_rem { + uint32_t tag; + uint32_t length; + uint32_t privilege_mask_rem; +}; + +/* Additional privileges given to all PFs. + * This tag takes precedence over TLV_TAG_PRIVILEGE_MASK_REM. */ + +#define TLV_TAG_PRIVILEGE_MASK_ADD_ALL_PFS (0x10190000) + +struct tlv_privilege_mask_add_all_pfs { + uint32_t tag; + uint32_t length; + uint32_t privilege_mask_add; +}; + +/* Additional privileges given to a selected PF. + * This tag takes precedence over TLV_TAG_PRIVILEGE_MASK_REM. */ + +#define TLV_TAG_PRIVILEGE_MASK_ADD_SINGLE_PF(pf) (0x101A0000 + (pf)) + +struct tlv_privilege_mask_add_single_pf { + uint32_t tag; + uint32_t length; + uint32_t privilege_mask_add; +}; + +/* Turning on/off the PFIOV mode. + * This tag only takes effect if TLV_TAG_VSWITCH_TYPE is missing or set to DEFAULT. */ + +#define TLV_TAG_PFIOV(port) (0x10170000 + (port)) + +struct tlv_pfiov { + uint32_t tag; + uint32_t length; + uint32_t pfiov; +#define TLV_PFIOV_OFF (0) /* Default */ +#define TLV_PFIOV_ON (1) +}; + +/* Multicast filter chaining mode selection. + * + * When enabled, multicast packets are delivered to all recipients of all + * matching multicast filters, with the exception that IP multicast filters + * will steal traffic from MAC multicast filters on a per-function basis. + * (New behaviour.) + * + * When disabled, multicast packets will always be delivered only to the + * recipients of the highest priority matching multicast filter. + * (Legacy behaviour.) + * + * The DEFAULT mode (which is the same as the tag not being present at all) + * is equivalent to ENABLED in production builds, and DISABLED in eftest + * builds. + * + * This option is intended to provide run-time control over this feature + * while it is being stabilised and may be withdrawn at some point in the + * future; the new behaviour is intended to become the standard behaviour. + */ + +#define TLV_TAG_MCAST_FILTER_CHAINING (0x10180000) + +struct tlv_mcast_filter_chaining { + uint32_t tag; + uint32_t length; + uint32_t mode; +#define TLV_MCAST_FILTER_CHAINING_DEFAULT (0xffffffff) +#define TLV_MCAST_FILTER_CHAINING_DISABLED (0) +#define TLV_MCAST_FILTER_CHAINING_ENABLED (1) +}; + + +/* Pacer rate limit per PF */ +#define TLV_TAG_RATE_LIMIT(pf) (0x101b0000 + (pf)) + +struct tlv_rate_limit { + uint32_t tag; + uint32_t length; + uint32_t rate_mbps; +}; + + +/* OCSD Enable/Disable + * + * This setting allows OCSD to be disabled. This is a requirement for HP + * servers to support PCI passthrough for virtualization. + * + * The DEFAULT mode (which is the same as the tag not being present) is + * equivalent to ENABLED. + * + * This option is not used by the MCFW, and is entirely handled by the various + * drivers that support OCSD, by reading the setting before they attempt + * to enable OCSD. + * + * bit0: OCSD Disabled/Enabled + */ + +#define TLV_TAG_OCSD (0x101C0000) + +struct tlv_ocsd { + uint32_t tag; + uint32_t length; + uint32_t mode; +#define TLV_OCSD_DISABLED 0 +#define TLV_OCSD_ENABLED 1 /* Default */ +}; + +#endif /* CI_MGMT_TLV_LAYOUT_H */ Modified: head/sys/dev/sfxge/common/efsys.h ============================================================================== --- head/sys/dev/sfxge/common/efsys.h Mon May 25 02:32:30 2015 (r283513) +++ head/sys/dev/sfxge/common/efsys.h Mon May 25 08:34:55 2015 (r283514) @@ -1,30 +1,34 @@ /*- - * Copyright (c) 2010-2011 Solarflare Communications, Inc. + * Copyright (c) 2010-2015 Solarflare Communications Inc. * All rights reserved. * * This software was developed in part by Philip Paeps under contract for * Solarflare Communications, Inc. * * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. + * modification, are permitted provided that the following conditions are met: * - * 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. + * 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 COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are + * those of the authors and should not be interpreted as representing official + * policies, either expressed or implied, of the FreeBSD Project. * * $FreeBSD$ */ @@ -56,6 +60,7 @@ extern "C" { #else #define EFSYS_USE_UINT64 0 #endif +#define EFSYS_HAS_SSE2_M128 0 #if _BYTE_ORDER == _BIG_ENDIAN #define EFSYS_IS_BIG_ENDIAN 1 #define EFSYS_IS_LITTLE_ENDIAN 0 @@ -90,6 +95,10 @@ extern "C" { #define P2ROUNDUP(x, align) (-(-(x) & -(align))) #endif +#ifndef P2ALIGN +#define P2ALIGN(_x, _a) ((_x) & -(_a)) +#endif + #ifndef IS2P #define ISP2(x) (((x) & ((x) - 1)) == 0) #endif @@ -176,7 +185,7 @@ prefetch_read_once(void *addr) #endif static __inline void sfxge_map_mbuf_fast(bus_dma_tag_t tag, bus_dmamap_t map, - struct mbuf *m, bus_dma_segment_t *seg) + struct mbuf *m, bus_dma_segment_t *seg) { #if defined(__i386__) || defined(__amd64__) seg->ds_addr = pmap_kextract(mtod(m, vm_offset_t)); @@ -188,10 +197,6 @@ sfxge_map_mbuf_fast(bus_dma_tag_t tag, b #endif } -/* Modifiers used for DOS builds */ -#define __cs -#define __far - /* Modifiers used for Windows builds */ #define __in #define __in_opt @@ -231,6 +236,7 @@ sfxge_map_mbuf_fast(bus_dma_tag_t tag, b #define EFSYS_OPT_FALCON 0 #define EFSYS_OPT_FALCON_NIC_CFG_OVERRIDE 0 #define EFSYS_OPT_SIENA 1 +#define EFSYS_OPT_HUNTINGTON 1 #ifdef DEBUG #define EFSYS_OPT_CHECK_REG 1 #else @@ -248,19 +254,19 @@ sfxge_map_mbuf_fast(bus_dma_tag_t tag, b #define EFSYS_OPT_MON_NULL 0 #define EFSYS_OPT_MON_LM87 0 #define EFSYS_OPT_MON_MAX6647 0 -#define EFSYS_OPT_MON_SIENA 0 +#define EFSYS_OPT_MON_MCDI 0 #define EFSYS_OPT_MON_STATS 0 #define EFSYS_OPT_PHY_NULL 0 #define EFSYS_OPT_PHY_QT2022C2 0 #define EFSYS_OPT_PHY_SFX7101 0 #define EFSYS_OPT_PHY_TXC43128 0 -#define EFSYS_OPT_PHY_PM8358 0 #define EFSYS_OPT_PHY_SFT9001 0 *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Mon May 25 09:08:20 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3686AF02; Mon, 25 May 2015 09:08:20 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.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 23B7A62F; Mon, 25 May 2015 09:08:20 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4P98KwO098151; Mon, 25 May 2015 09:08:20 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4P98JpZ098150; Mon, 25 May 2015 09:08:19 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201505250908.t4P98JpZ098150@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Mon, 25 May 2015 09:08:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283515 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 09:08:20 -0000 Author: kib Date: Mon May 25 09:08:19 2015 New Revision: 283515 URL: https://svnweb.freebsd.org/changeset/base/283515 Log: Remove excess Giant acquisition around the dounmount() call. Sponsored by: The FreeBSD Foundation MFC after: 1 week Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Mon May 25 08:34:55 2015 (r283514) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Mon May 25 09:08:19 2015 (r283515) @@ -3481,9 +3481,7 @@ zfs_unmount_snap(const char *snapname) #ifdef illumos (void) dounmount(vfsp, MS_FORCE, kcred); #else - mtx_lock(&Giant); /* dounmount() */ (void) dounmount(vfsp, MS_FORCE, curthread); - mtx_unlock(&Giant); /* dounmount() */ #endif return (0); } From owner-svn-src-all@FreeBSD.ORG Mon May 25 09:47:17 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7C0177DD; Mon, 25 May 2015 09:47:17 +0000 (UTC) (envelope-from royger@FreeBSD.org) Received: from svn.freebsd.org (svn.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 69A41F9F; Mon, 25 May 2015 09:47:17 +0000 (UTC) (envelope-from royger@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4P9lHZ5018780; Mon, 25 May 2015 09:47:17 GMT (envelope-from royger@FreeBSD.org) Received: (from royger@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4P9lHae018779; Mon, 25 May 2015 09:47:17 GMT (envelope-from royger@FreeBSD.org) Message-Id: <201505250947.t4P9lHae018779@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: royger set sender to royger@FreeBSD.org using -f From: Roger Pau Monné Date: Mon, 25 May 2015 09:47:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283516 - head/sys/x86/xen X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 09:47:17 -0000 Author: royger Date: Mon May 25 09:47:16 2015 New Revision: 283516 URL: https://svnweb.freebsd.org/changeset/base/283516 Log: xen: make sure xenpv bus is the last to attach This is needed so other buses have a chance of attaching a real ISA bus, if none is found xenpv will attach it. Sponsored by: Citrix Systems R&D Modified: head/sys/x86/xen/xenpv.c Modified: head/sys/x86/xen/xenpv.c ============================================================================== --- head/sys/x86/xen/xenpv.c Mon May 25 09:08:19 2015 (r283515) +++ head/sys/x86/xen/xenpv.c Mon May 25 09:47:16 2015 (r283516) @@ -35,6 +35,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -72,7 +73,11 @@ xenpv_identify(driver_t *driver, device_ if (devclass_get_device(xenpv_devclass, 0)) return; - if (BUS_ADD_CHILD(parent, 0, "xenpv", 0) == NULL) + /* + * The xenpv bus should be the last to attach in order + * to properly detect if an ISA bus has already been added. + */ + if (BUS_ADD_CHILD(parent, UINT_MAX, "xenpv", 0) == NULL) panic("Unable to attach xenpv bus."); } From owner-svn-src-all@FreeBSD.ORG Mon May 25 10:51:41 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9F886679; Mon, 25 May 2015 10:51:41 +0000 (UTC) (envelope-from markm@FreeBSD.org) Received: from svn.freebsd.org (svn.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 8DB35195; Mon, 25 May 2015 10:51:41 +0000 (UTC) (envelope-from markm@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PApfUQ051769; Mon, 25 May 2015 10:51:41 GMT (envelope-from markm@FreeBSD.org) Received: (from markm@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PApfSL051768; Mon, 25 May 2015 10:51:41 GMT (envelope-from markm@FreeBSD.org) Message-Id: <201505251051.t4PApfSL051768@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: markm set sender to markm@FreeBSD.org using -f From: Mark Murray Date: Mon, 25 May 2015 10:51:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283517 - head/gnu/lib X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 10:51:41 -0000 Author: markm Date: Mon May 25 10:51:40 2015 New Revision: 283517 URL: https://svnweb.freebsd.org/changeset/base/283517 Log: Unbreak build where WANT_GDB == "no', as libreadline is also used by ntpdc. Modified: head/gnu/lib/Makefile Modified: head/gnu/lib/Makefile ============================================================================== --- head/gnu/lib/Makefile Mon May 25 09:47:16 2015 (r283516) +++ head/gnu/lib/Makefile Mon May 25 10:51:40 2015 (r283517) @@ -16,7 +16,7 @@ SUBDIR+= libssp SUBDIR+= tests .endif -.if ${MK_GDB} != "no" +.if ${MK_GDB} != "no" || ${MK_NTP} != "no" SUBDIR+= libreadline .endif From owner-svn-src-all@FreeBSD.ORG Mon May 25 11:26:48 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 50FD9B68; Mon, 25 May 2015 11:26:48 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from mx1.sbone.de (mx1.sbone.de [IPv6:2a01:4f8:130:3ffc::401:25]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client CN "mx1.sbone.de", Issuer "SBone.DE" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 0A039BCD; Mon, 25 May 2015 11:26:48 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from mail.sbone.de (mail.sbone.de [IPv6:fde9:577b:c1a9:31::2013:587]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.sbone.de (Postfix) with ESMTPS id 96A8725D38A4; Mon, 25 May 2015 11:26:36 +0000 (UTC) Received: from content-filter.sbone.de (content-filter.sbone.de [IPv6:fde9:577b:c1a9:31::2013:2742]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sbone.de (Postfix) with ESMTPS id C8050C77034; Mon, 25 May 2015 11:26:35 +0000 (UTC) X-Virus-Scanned: amavisd-new at sbone.de Received: from mail.sbone.de ([IPv6:fde9:577b:c1a9:31::2013:587]) by content-filter.sbone.de (content-filter.sbone.de [fde9:577b:c1a9:31::2013:2742]) (amavisd-new, port 10024) with ESMTP id O0rcNfm7XRSc; Mon, 25 May 2015 11:26:34 +0000 (UTC) Received: from [IPv6:fde9:577b:c1a9:4410:f054:3fea:929c:9614] (unknown [IPv6:fde9:577b:c1a9:4410:f054:3fea:929c:9614]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sbone.de (Postfix) with ESMTPSA id 02DB8C77033; Mon, 25 May 2015 11:26:33 +0000 (UTC) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\)) Subject: Re: svn commit: r283511 - head/sys/opencrypto From: "Bjoern A. Zeeb" In-Reply-To: <201505250131.t4P1VdnG076857@svn.freebsd.org> Date: Mon, 25 May 2015 11:26:01 +0000 Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Content-Transfer-Encoding: quoted-printable Message-Id: <3830257F-8ACB-432C-AD91-68F7B689DC22@FreeBSD.org> References: <201505250131.t4P1VdnG076857@svn.freebsd.org> To: Mark Johnston X-Mailer: Apple Mail (2.2098) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 11:26:48 -0000 > On 25 May 2015, at 01:31 , Mark Johnston wrote: >=20 > Author: markj > Date: Mon May 25 01:31:39 2015 > New Revision: 283511 > URL: https://svnweb.freebsd.org/changeset/base/283511 >=20 > Log: > Use the correct number of arguments for the > opencrypto:deflate:deflate_global:bad DTrace probe, which is defined = to > have Once upon a time, these expended to exactly the same if my memory = doesn=E2=80=99t fool me. Thanks for cleaning up though! From owner-svn-src-all@FreeBSD.ORG Mon May 25 11:30:37 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id BA07ED3F; Mon, 25 May 2015 11:30:37 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (svn.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 A6FBDC58; Mon, 25 May 2015 11:30:37 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PBUbE2069511; Mon, 25 May 2015 11:30:37 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PBUbPh069510; Mon, 25 May 2015 11:30:37 GMT (envelope-from avg@FreeBSD.org) Message-Id: <201505251130.t4PBUbPh069510@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Mon, 25 May 2015 11:30:37 +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: r283518 - stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 11:30:37 -0000 Author: avg Date: Mon May 25 11:30:36 2015 New Revision: 283518 URL: https://svnweb.freebsd.org/changeset/base/283518 Log: MFC r282632: MFV r282630: 5809 Blowaway full receive in v1 pool causes kernel panic Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c Mon May 25 10:51:40 2015 (r283517) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c Mon May 25 11:30:36 2015 (r283518) @@ -996,7 +996,8 @@ dmu_recv_begin_sync(void *arg, dmu_tx_t } dsobj = dsl_dataset_create_sync(ds->ds_dir, recv_clone_name, snap, crflags, drba->drba_cred, tx); - dsl_dataset_rele(snap, FTAG); + if (drba->drba_snapobj != 0) + dsl_dataset_rele(snap, FTAG); dsl_dataset_rele(ds, FTAG); } else { dsl_dir_t *dd; From owner-svn-src-all@FreeBSD.ORG Mon May 25 11:32:11 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 06C01E88; Mon, 25 May 2015 11:32:11 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (svn.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 E7919DE3; Mon, 25 May 2015 11:32:10 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PBWAok073437; Mon, 25 May 2015 11:32:10 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PBWAox073436; Mon, 25 May 2015 11:32:10 GMT (envelope-from avg@FreeBSD.org) Message-Id: <201505251132.t4PBWAox073436@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Mon, 25 May 2015 11:32:10 +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: r283519 - stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 11:32:11 -0000 Author: avg Date: Mon May 25 11:32:10 2015 New Revision: 283519 URL: https://svnweb.freebsd.org/changeset/base/283519 Log: MFC r282632: MFV r282630: 5809 Blowaway full receive in v1 pool causes kernel panic Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c Mon May 25 11:30:36 2015 (r283518) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c Mon May 25 11:32:10 2015 (r283519) @@ -1142,7 +1142,8 @@ dmu_recv_begin_sync(void *arg, dmu_tx_t } dsobj = dsl_dataset_create_sync(ds->ds_dir, recv_clone_name, snap, crflags, drba->drba_cred, tx); - dsl_dataset_rele(snap, FTAG); + if (drba->drba_snapobj != 0) + dsl_dataset_rele(snap, FTAG); dsl_dataset_rele(ds, FTAG); } else { dsl_dir_t *dd; From owner-svn-src-all@FreeBSD.ORG Mon May 25 11:33:46 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0E565A9; Mon, 25 May 2015 11:33:46 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (svn.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 EF9AFE15; Mon, 25 May 2015 11:33:45 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PBXj0U073733; Mon, 25 May 2015 11:33:45 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PBXj2F073732; Mon, 25 May 2015 11:33:45 GMT (envelope-from avg@FreeBSD.org) Message-Id: <201505251133.t4PBXj2F073732@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Mon, 25 May 2015 11:33:45 +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: r283520 - stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 11:33:46 -0000 Author: avg Date: Mon May 25 11:33:45 2015 New Revision: 283520 URL: https://svnweb.freebsd.org/changeset/base/283520 Log: MFC r282473: dmu_recv_end_check: don't leak hold if dsl_destroy_snapshot_check_impl fails Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c Mon May 25 11:32:10 2015 (r283519) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c Mon May 25 11:33:45 2015 (r283520) @@ -2011,7 +2011,7 @@ dmu_recv_end_check(void *arg, dmu_tx_t * error = dsl_dataset_hold_obj(dp, obj, FTAG, &snap); if (error != 0) - return (error); + break; if (snap->ds_dir != origin_head->ds_dir) error = SET_ERROR(EINVAL); if (error == 0) { @@ -2021,7 +2021,11 @@ dmu_recv_end_check(void *arg, dmu_tx_t * obj = dsl_dataset_phys(snap)->ds_prev_snap_obj; dsl_dataset_rele(snap, FTAG); if (error != 0) - return (error); + break; + } + if (error != 0) { + dsl_dataset_rele(origin_head, FTAG); + return (error); } } error = dsl_dataset_clone_swap_check_impl(drc->drc_ds, From owner-svn-src-all@FreeBSD.ORG Mon May 25 11:33:58 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1379B1E0; Mon, 25 May 2015 11:33:58 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (svn.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 00C18E1D; Mon, 25 May 2015 11:33:58 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PBXvp9073809; Mon, 25 May 2015 11:33:57 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PBXvYG073808; Mon, 25 May 2015 11:33:57 GMT (envelope-from avg@FreeBSD.org) Message-Id: <201505251133.t4PBXvYG073808@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Mon, 25 May 2015 11:33:57 +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: r283521 - stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 11:33:58 -0000 Author: avg Date: Mon May 25 11:33:57 2015 New Revision: 283521 URL: https://svnweb.freebsd.org/changeset/base/283521 Log: MFC r282473: dmu_recv_end_check: don't leak hold if dsl_destroy_snapshot_check_impl fails Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c Mon May 25 11:33:45 2015 (r283520) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c Mon May 25 11:33:57 2015 (r283521) @@ -1755,7 +1755,7 @@ dmu_recv_end_check(void *arg, dmu_tx_t * error = dsl_dataset_hold_obj(dp, obj, FTAG, &snap); if (error != 0) - return (error); + break; if (snap->ds_dir != origin_head->ds_dir) error = SET_ERROR(EINVAL); if (error == 0) { @@ -1765,7 +1765,11 @@ dmu_recv_end_check(void *arg, dmu_tx_t * obj = snap->ds_phys->ds_prev_snap_obj; dsl_dataset_rele(snap, FTAG); if (error != 0) - return (error); + break; + } + if (error != 0) { + dsl_dataset_rele(origin_head, FTAG); + return (error); } } error = dsl_dataset_clone_swap_check_impl(drc->drc_ds, From owner-svn-src-all@FreeBSD.ORG Mon May 25 11:35:28 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id CE360359; Mon, 25 May 2015 11:35:28 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (svn.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 A2303E3E; Mon, 25 May 2015 11:35:28 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PBZSRm074141; Mon, 25 May 2015 11:35:28 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PBZSYT074138; Mon, 25 May 2015 11:35:28 GMT (envelope-from avg@FreeBSD.org) Message-Id: <201505251135.t4PBZSYT074138@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Mon, 25 May 2015 11:35: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: r283522 - in stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs: . 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-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 11:35:28 -0000 Author: avg Date: Mon May 25 11:35:27 2015 New Revision: 283522 URL: https://svnweb.freebsd.org/changeset/base/283522 Log: MFC r282475: zfs: do not hold an extra reference on a root vnode Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h Mon May 25 11:33:57 2015 (r283521) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h Mon May 25 11:35:27 2015 (r283522) @@ -261,10 +261,6 @@ VTOZ(vnode_t *vp) } \ } -/* Called on entry to each ZFS vnode and vfs operation that can not return EIO */ -#define ZFS_ENTER_NOERROR(zfsvfs) \ - rrm_enter(&(zfsvfs)->z_teardown_lock, RW_READER, FTAG) - /* Must be called before exiting the vop */ #define ZFS_EXIT(zfsvfs) rrm_exit(&(zfsvfs)->z_teardown_lock, FTAG) Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c Mon May 25 11:33:57 2015 (r283521) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c Mon May 25 11:35:27 2015 (r283522) @@ -1222,9 +1222,6 @@ zfs_domount(vfs_t *vfsp, char *osname) } vfs_mountedfrom(vfsp, osname); - /* Grab extra reference. */ - VERIFY(VFS_ROOT(vfsp, LK_EXCLUSIVE, &vp) == 0); - VOP_UNLOCK(vp, 0); if (!zfsvfs->z_issnap) zfsctl_create(zfsvfs); @@ -1802,7 +1799,7 @@ zfs_root(vfs_t *vfsp, int flags, vnode_t znode_t *rootzp; int error; - ZFS_ENTER_NOERROR(zfsvfs); + ZFS_ENTER(zfsvfs); error = zfs_zget(zfsvfs, zfsvfs->z_root, &rootzp); if (error == 0) @@ -1977,7 +1974,7 @@ zfs_umount(vfs_t *vfsp, int fflag) /* * Flush all the files. */ - ret = vflush(vfsp, 1, (fflag & MS_FORCE) ? FORCECLOSE : 0, td); + ret = vflush(vfsp, 0, (fflag & MS_FORCE) ? FORCECLOSE : 0, td); if (ret != 0) { if (!zfsvfs->z_issnap) { zfsctl_create(zfsvfs); From owner-svn-src-all@FreeBSD.ORG Mon May 25 11:36:15 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C70C0496; Mon, 25 May 2015 11:36:15 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (svn.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 9A34DE4B; Mon, 25 May 2015 11:36:15 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PBaFik074309; Mon, 25 May 2015 11:36:15 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PBaFgZ074307; Mon, 25 May 2015 11:36:15 GMT (envelope-from avg@FreeBSD.org) Message-Id: <201505251136.t4PBaFgZ074307@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Mon, 25 May 2015 11:36:15 +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: r283523 - in stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs: . sys X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 11:36:15 -0000 Author: avg Date: Mon May 25 11:36:14 2015 New Revision: 283523 URL: https://svnweb.freebsd.org/changeset/base/283523 Log: MFC r282475: zfs: do not hold an extra reference on a root vnode Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h Mon May 25 11:35:27 2015 (r283522) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h Mon May 25 11:36:14 2015 (r283523) @@ -263,10 +263,6 @@ VTOZ(vnode_t *vp) } \ } -/* Called on entry to each ZFS vnode and vfs operation that can not return EIO */ -#define ZFS_ENTER_NOERROR(zfsvfs) \ - rrw_enter(&(zfsvfs)->z_teardown_lock, RW_READER, FTAG) - /* Must be called before exiting the vop */ #define ZFS_EXIT(zfsvfs) rrw_exit(&(zfsvfs)->z_teardown_lock, FTAG) Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c Mon May 25 11:35:27 2015 (r283522) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c Mon May 25 11:36:14 2015 (r283523) @@ -1224,9 +1224,6 @@ zfs_domount(vfs_t *vfsp, char *osname) } vfs_mountedfrom(vfsp, osname); - /* Grab extra reference. */ - VERIFY(VFS_ROOT(vfsp, LK_EXCLUSIVE, &vp) == 0); - VOP_UNLOCK(vp, 0); if (!zfsvfs->z_issnap) zfsctl_create(zfsvfs); @@ -1804,7 +1801,7 @@ zfs_root(vfs_t *vfsp, int flags, vnode_t znode_t *rootzp; int error; - ZFS_ENTER_NOERROR(zfsvfs); + ZFS_ENTER(zfsvfs); error = zfs_zget(zfsvfs, zfsvfs->z_root, &rootzp); if (error == 0) @@ -1979,7 +1976,7 @@ zfs_umount(vfs_t *vfsp, int fflag) /* * Flush all the files. */ - ret = vflush(vfsp, 1, (fflag & MS_FORCE) ? FORCECLOSE : 0, td); + ret = vflush(vfsp, 0, (fflag & MS_FORCE) ? FORCECLOSE : 0, td); if (ret != 0) { if (!zfsvfs->z_issnap) { zfsctl_create(zfsvfs); From owner-svn-src-all@FreeBSD.ORG Mon May 25 11:45:14 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 38FB584D; Mon, 25 May 2015 11:45:14 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 14599DE; Mon, 25 May 2015 11:45:14 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (pool-173-54-116-245.nwrknj.fios.verizon.net [173.54.116.245]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 9B9BCB939; Mon, 25 May 2015 07:45:12 -0400 (EDT) From: John Baldwin To: "Alexander V. Chernikov" Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283364 - head/sys/sys Date: Mon, 25 May 2015 07:27 -0400 Message-ID: <1698551.fhQlKrx2sg@ralph.baldwin.cx> User-Agent: KMail/4.14.3 (FreeBSD/10.1-STABLE; KDE/4.14.3; amd64; ; ) In-Reply-To: <201505241124.t4OBOFe6030452@svn.freebsd.org> References: <201505241124.t4OBOFe6030452@svn.freebsd.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="iso-8859-1" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Mon, 25 May 2015 07:45:12 -0400 (EDT) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 11:45:14 -0000 On Sunday, May 24, 2015 11:24:15 AM Alexander V. Chernikov wrote: > Author: melifaro > Date: Sun May 24 11:24:14 2015 > New Revision: 283364 > URL: https://svnweb.freebsd.org/changeset/base/283364 >=20 > Log: > Fix SIOCGI2C structure requirement. > =20 > In reality, SIOCGI2C ioctl requires struct ifreq as many other > ioctls. Doing copyin() on (significantly) larger struct ifstat some= times > triggered EFAULT. > =20 > Reported by:=09Olivier Cochard-Labb=E9 > MFC after:=091 week Note that this breaks the ABI. You may wish to add a SIOCGI2C_OLD that= still uses the larger struct so that old programs continue to work. OT= OH, they were only working by accident before. If we expect that no code outside of ifconfig is using this yet, then it is probably ok to let th= is slide. --=20 John Baldwin From owner-svn-src-all@FreeBSD.ORG Mon May 25 11:45:14 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4C81C858; Mon, 25 May 2015 11:45:14 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 27DE0DF; Mon, 25 May 2015 11:45:14 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (pool-173-54-116-245.nwrknj.fios.verizon.net [173.54.116.245]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 0D90CB926; Mon, 25 May 2015 07:45:12 -0400 (EDT) From: John Baldwin To: Dmitry Chagin Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283469 - head/sys/compat/linux Date: Mon, 25 May 2015 07:41:48 -0400 Message-ID: <1462114.hO2YCqOyYV@ralph.baldwin.cx> User-Agent: KMail/4.14.3 (FreeBSD/10.1-STABLE; KDE/4.14.3; amd64; ; ) In-Reply-To: <201505241740.t4OHeEF3025573@svn.freebsd.org> References: <201505241740.t4OHeEF3025573@svn.freebsd.org> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Mon, 25 May 2015 07:45:12 -0400 (EDT) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 11:45:14 -0000 On Sunday, May 24, 2015 05:40:14 PM Dmitry Chagin wrote: > Author: dchagin > Date: Sun May 24 17:40:14 2015 > New Revision: 283469 > URL: https://svnweb.freebsd.org/changeset/base/283469 > > Log: > As fo_fill_kinfo() does not check fo_fill_kinfo to NULL > add a fo_fill_kinfo op to eventfdops. Yes, it is mandatory on purpose. :) Can you add a new KF_* file type (you can just call it eventfd in case we decide to grow a native eventfd)? Can you also add any meaningful data to the record that is exported to userland (e.g. old POSIX semaphores export their current count value) and update libprocstat/procstat/fstat to handle this file type? -- John Baldwin From owner-svn-src-all@FreeBSD.ORG Mon May 25 11:45:14 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id AB2D385C; Mon, 25 May 2015 11:45:14 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 86A46E0; Mon, 25 May 2015 11:45:14 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (pool-173-54-116-245.nwrknj.fios.verizon.net [173.54.116.245]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 69FD3B9A3; Mon, 25 May 2015 07:45:13 -0400 (EDT) From: John Baldwin To: Andrew Turner Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283331 - head/sys/arm/arm Date: Mon, 25 May 2015 07:23:28 -0400 Message-ID: <1484557.5zjnsBffEc@ralph.baldwin.cx> User-Agent: KMail/4.14.3 (FreeBSD/10.1-STABLE; KDE/4.14.3; amd64; ; ) In-Reply-To: <201505232228.t4NMSxs2032365@svn.freebsd.org> References: <201505232228.t4NMSxs2032365@svn.freebsd.org> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Mon, 25 May 2015 07:45:13 -0400 (EDT) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 11:45:14 -0000 On Saturday, May 23, 2015 10:28:59 PM Andrew Turner wrote: > Author: andrew > Date: Sat May 23 22:28:59 2015 > New Revision: 283331 > URL: https://svnweb.freebsd.org/changeset/base/283331 > > Log: > Use the wait-for-event instruction to put the core we have just enabled > to sleep while it waits to start scheduling. The boot core can then use > the send-event instruction to wake the cores when they should enter the > scheduler. > > MFC after: 1 week > > Modified: > head/sys/arm/arm/mp_machdep.c > > Modified: head/sys/arm/arm/mp_machdep.c > ============================================================================== > --- head/sys/arm/arm/mp_machdep.c Sat May 23 21:58:41 2015 (r283330) > +++ head/sys/arm/arm/mp_machdep.c Sat May 23 22:28:59 2015 (r283331) > @@ -185,8 +185,11 @@ init_secondary(int cpu) > atomic_add_rel_32(&mp_naps, 1); > > /* Spin until the BSP releases the APs */ > - while (!aps_ready) > - ; > + while (!atomic_load_acq_int(&aps_ready)) { > +#if __ARM_ARCH >= 7 > + __asm __volatile("wfe"); > +#endif > + } I don't know that this atomic load acquire is really changing anything here? Since aps_ready is volatile reading it should already be "atomic" on each check around the loop. > /* Initialize curthread */ > KASSERT(PCPU_GET(idlethread) != NULL, ("no idle thread")); > @@ -353,6 +356,10 @@ release_aps(void *dummy __unused) > arm_unmask_irq(i); > } > atomic_store_rel_int(&aps_ready, 1); > + /* Wake the other threads up */ > +#if __ARM_ARCH >= 7 > + armv7_sev(); > +#endif So I'm not at all familiar with these instructions or what they do, but are the events level triggered? In particular, is there any sort of race where the sev might arrive in between the check of aps_ready and the wfe on an AP? (For example, if wfe/sev were similar to using mwait on x86 for wfe and a memory write for sev, x86 would require a call to monitor before doing a check of aps_ready to handle the race like so: while (!aps_ready) { monitor(&aps_ready); if (!aps_ready) mwait(); } -- John Baldwin From owner-svn-src-all@FreeBSD.ORG Mon May 25 11:48:16 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A30B5C58; Mon, 25 May 2015 11:48:16 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (svn.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 9082E110; Mon, 25 May 2015 11:48:16 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PBmGww079466; Mon, 25 May 2015 11:48:16 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PBmGL4079465; Mon, 25 May 2015 11:48:16 GMT (envelope-from avg@FreeBSD.org) Message-Id: <201505251148.t4PBmGL4079465@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Mon, 25 May 2015 11:48:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283524 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 11:48:16 -0000 Author: avg Date: Mon May 25 11:48:15 2015 New Revision: 283524 URL: https://svnweb.freebsd.org/changeset/base/283524 Log: dsl_dataset_promote_check: ensure that shared snaps do not become too long ... after they are transfered from the old origin to the new one. See: https://www.illumos.org/issues/5909 See: https://reviews.csiden.org/r/219/ Reviewed by: mahrens MFC after: 10 days Sponsored by: ClusterHQ Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c Mon May 25 11:36:14 2015 (r283523) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c Mon May 25 11:48:15 2015 (r283524) @@ -2161,12 +2161,14 @@ dsl_dataset_promote_check(void *arg, dmu int err; uint64_t unused; uint64_t ss_mv_cnt; + size_t max_snap_len; err = promote_hold(ddpa, dp, FTAG); if (err != 0) return (err); hds = ddpa->ddpa_clone; + max_snap_len = MAXNAMELEN - strlen(ddpa->ddpa_clonename) - 1; if (dsl_dataset_phys(hds)->ds_flags & DS_FLAG_NOPROMOTE) { promote_rele(ddpa, FTAG); @@ -2230,6 +2232,10 @@ dsl_dataset_promote_check(void *arg, dmu /* Check that the snapshot name does not conflict */ VERIFY0(dsl_dataset_get_snapname(ds)); + if (strlen(ds->ds_snapname) >= max_snap_len) { + err = SET_ERROR(ENAMETOOLONG); + goto out; + } err = dsl_dataset_snap_lookup(hds, ds->ds_snapname, &val); if (err == 0) { (void) strcpy(ddpa->err_ds, snap->ds->ds_snapname); From owner-svn-src-all@FreeBSD.ORG Mon May 25 11:52:04 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3E5DDE37; Mon, 25 May 2015 11:52:04 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 179DC33F; Mon, 25 May 2015 11:52:04 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (pool-173-54-116-245.nwrknj.fios.verizon.net [173.54.116.245]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id E03EBB926; Mon, 25 May 2015 07:52:02 -0400 (EDT) From: John Baldwin To: Dmitry Chagin Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283424 - in head/sys: amd64/linux modules/linux64 Date: Mon, 25 May 2015 07:48:49 -0400 Message-ID: <2938779.SXzlp9bc0j@ralph.baldwin.cx> User-Agent: KMail/4.14.3 (FreeBSD/10.1-STABLE; KDE/4.14.3; amd64; ; ) In-Reply-To: <201505241607.t4OG7C7b073936@svn.freebsd.org> References: <201505241607.t4OG7C7b073936@svn.freebsd.org> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Mon, 25 May 2015 07:52:03 -0400 (EDT) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 11:52:04 -0000 On Sunday, May 24, 2015 04:07:12 PM Dmitry Chagin wrote: > Author: dchagin > Date: Sun May 24 16:07:11 2015 > New Revision: 283424 > URL: https://svnweb.freebsd.org/changeset/base/283424 > > Log: > Add preliminary support for x86-64 Linux binaries. > > Differential Revision: https://reviews.freebsd.org/D1076 > > Added: > head/sys/amd64/linux/ > head/sys/amd64/linux/Makefile (contents, props changed) > head/sys/amd64/linux/linux.h (contents, props changed) > head/sys/amd64/linux/linux_dummy.c (contents, props changed) > head/sys/amd64/linux/linux_genassym.c (contents, props changed) > head/sys/amd64/linux/linux_ipc64.h (contents, props changed) > head/sys/amd64/linux/linux_locore.s (contents, props changed) > head/sys/amd64/linux/linux_machdep.c (contents, props changed) > head/sys/amd64/linux/linux_support.s (contents, props changed) > head/sys/amd64/linux/linux_sysvec.c (contents, props changed) > head/sys/amd64/linux/linux_vdso.lds.s (contents, props changed) > head/sys/amd64/linux/syscalls.conf (contents, props changed) > head/sys/amd64/linux/syscalls.master (contents, props changed) > head/sys/modules/linux64/ > head/sys/modules/linux64/Makefile (contents, props changed) First, I'm really happy to see this land in HEAD! Second, __FreeBSD_version bump perhaps? -- John Baldwin From owner-svn-src-all@FreeBSD.ORG Mon May 25 11:56:58 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8BB71B9; Mon, 25 May 2015 11:56:58 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (svn.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 791FD37F; Mon, 25 May 2015 11:56:58 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PBuw1k084212; Mon, 25 May 2015 11:56:58 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PBuwPx084211; Mon, 25 May 2015 11:56:58 GMT (envelope-from avg@FreeBSD.org) Message-Id: <201505251156.t4PBuwPx084211@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Mon, 25 May 2015 11:56:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283525 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 11:56:58 -0000 Author: avg Date: Mon May 25 11:56:57 2015 New Revision: 283525 URL: https://svnweb.freebsd.org/changeset/base/283525 Log: zfs: fixes for a full stream received into an existing dataset - this should fail early unless the force flag is set - if the force flag is set then any local modifications including snapshots should be undone See: https://www.illumos.org/issues/5912 See: https://reviews.csiden.org/r/220/ Reviewed by: mahrens, Paul Dagnelie MFC after: 15 days Sponsored by: ClusterHQ Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c Mon May 25 11:48:15 2015 (r283524) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c Mon May 25 11:56:57 2015 (r283525) @@ -983,10 +983,12 @@ recv_begin_check_existing_impl(dmu_recv_ dsl_dataset_rele(snap, FTAG); } else { - /* if full, most recent snapshot must be $ORIGIN */ - if (dsl_dataset_phys(ds)->ds_prev_snap_txg >= TXG_INITIAL) - return (SET_ERROR(ENODEV)); - drba->drba_snapobj = dsl_dataset_phys(ds)->ds_prev_snap_obj; + /* if full, then must be forced */ + if (!drba->drba_cookie->drc_force) + return (SET_ERROR(EEXIST)); + /* start from $ORIGIN@$ORIGIN, if supported */ + drba->drba_snapobj = dp->dp_origin_snap != NULL ? + dp->dp_origin_snap->ds_object : 0; } return (0); From owner-svn-src-all@FreeBSD.ORG Mon May 25 12:27:04 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 96497A3A; Mon, 25 May 2015 12:27:04 +0000 (UTC) (envelope-from gnn@freebsd.org) Received: from vps.hungerhost.com (vps.hungerhost.com [216.38.53.176]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 6E716CD2; Mon, 25 May 2015 12:27:04 +0000 (UTC) (envelope-from gnn@freebsd.org) Received: from [65.255.63.108] (port=56667 helo=[10.144.4.135]) by vps.hungerhost.com with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.82) (envelope-from ) id 1YwrTC-0005VC-Ss; Mon, 25 May 2015 08:27:03 -0400 From: "George Neville-Neil" To: "Julian Elischer" Cc: "hiren panchasara" , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r282240 - in head: cddl/lib/libdtrace sys/netinet Date: Mon, 25 May 2015 08:27:00 -0400 Message-ID: In-Reply-To: <55628DDC.4030506@freebsd.org> References: <201504291719.t3THJtIM020724@svn.freebsd.org> <20150523215927.GM95600@strugglingcoder.info> <820BB330-CCB9-46DE-86CF-3D233B84F69B@freebsd.org> <55628DDC.4030506@freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; format=flowed X-Mailer: MailMate (1.9.1r5084) X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - vps.hungerhost.com X-AntiAbuse: Original Domain - freebsd.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - freebsd.org X-Get-Message-Sender-Via: vps.hungerhost.com: authenticated_id: gnn@neville-neil.com X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 12:27:04 -0000 On 24 May 2015, at 22:50, Julian Elischer wrote: > On 5/24/15 9:24 PM, George Neville-Neil wrote: >> >> On 23 May 2015, at 17:59, hiren panchasara wrote: >> >>> On 04/29/15 at 05:19P, George V. Neville-Neil wrote: >>>> Author: gnn >>>> Date: Wed Apr 29 17:19:55 2015 >>>> New Revision: 282240 >>>> URL: https://svnweb.freebsd.org/changeset/base/282240 >>>> >>>> Log: >>>> Brief demo script showing the various values that can be read via >>>> the new SIFTR statically defined tracepoint (SDT). >>>> >>>> Differential Revision: https://reviews.freebsd.org/D2387 >>>> Reviewed by: bz, markj >>>> >>>> Modified: >>>> head/cddl/lib/libdtrace/tcp.d >>>> head/sys/netinet/in_kdtrace.c >>>> head/sys/netinet/in_kdtrace.h >>>> head/sys/netinet/siftr.c >>> George, >>> >>> This seems useful. Can this be MFC'd to 10? >>> >> I think it can be. I'll mark this and do it when I'm back from >> holiday. Nag me if I forget :-) >> >> Best, >> George > > > George.. check out this script to make MFCs to 10 an absolute snap.. > > instead of being a worrying operation, it's a few keystrokes... > http://www.freebsd.org/~julian/MFC-10.sh > credits to Bapt for the original (ports) idea. Thanks! Best, George From owner-svn-src-all@FreeBSD.ORG Mon May 25 12:30:39 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9D8A1CF4; Mon, 25 May 2015 12:30:39 +0000 (UTC) (envelope-from andrew@fubar.geek.nz) Received: from kif.fubar.geek.nz (kif.fubar.geek.nz [178.62.119.249]) by mx1.freebsd.org (Postfix) with ESMTP id 693DCD4A; Mon, 25 May 2015 12:30:39 +0000 (UTC) (envelope-from andrew@fubar.geek.nz) Received: from bender.Home (97e07b11.skybroadband.com [151.224.123.17]) by kif.fubar.geek.nz (Postfix) with ESMTPSA id 8429FD7A6F; Mon, 25 May 2015 12:21:49 +0000 (UTC) Date: Mon, 25 May 2015 13:21:48 +0100 From: Andrew Turner To: John Baldwin Cc: Andrew Turner , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283331 - head/sys/arm/arm Message-ID: <20150525132148.3d5adb40@bender.Home> In-Reply-To: <1484557.5zjnsBffEc@ralph.baldwin.cx> References: <201505232228.t4NMSxs2032365@svn.freebsd.org> <1484557.5zjnsBffEc@ralph.baldwin.cx> X-Mailer: Claws Mail 3.11.1 (GTK+ 2.24.27; amd64-portbld-freebsd10.0) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 12:30:39 -0000 On Mon, 25 May 2015 07:23:28 -0400 John Baldwin wrote: > On Saturday, May 23, 2015 10:28:59 PM Andrew Turner wrote: > > Author: andrew > > Date: Sat May 23 22:28:59 2015 > > New Revision: 283331 > > URL: https://svnweb.freebsd.org/changeset/base/283331 > > > > Log: > > Use the wait-for-event instruction to put the core we have just > > enabled to sleep while it waits to start scheduling. The boot core > > can then use the send-event instruction to wake the cores when they > > should enter the scheduler. > > > > MFC after: 1 week > > > > Modified: > > head/sys/arm/arm/mp_machdep.c > > > > Modified: head/sys/arm/arm/mp_machdep.c > > ============================================================================== > > --- head/sys/arm/arm/mp_machdep.c Sat May 23 21:58:41 > > 2015 (r283330) +++ head/sys/arm/arm/mp_machdep.c Sat > > May 23 22:28:59 2015 (r283331) @@ -185,8 +185,11 @@ > > init_secondary(int cpu) atomic_add_rel_32(&mp_naps, 1); > > > > /* Spin until the BSP releases the APs */ > > - while (!aps_ready) > > - ; > > + while (!atomic_load_acq_int(&aps_ready)) { > > +#if __ARM_ARCH >= 7 > > + __asm __volatile("wfe"); > > +#endif > > + } > > I don't know that this atomic load acquire is really changing > anything here? Since aps_ready is volatile reading it should > already be "atomic" on each check around the loop. It's also adding acquire semantics to ensure we don't incorrectly reorder memory operations across the call. > > > /* Initialize curthread */ > > KASSERT(PCPU_GET(idlethread) != NULL, ("no idle thread")); > > @@ -353,6 +356,10 @@ release_aps(void *dummy __unused) > > arm_unmask_irq(i); > > } > > atomic_store_rel_int(&aps_ready, 1); > > + /* Wake the other threads up */ > > +#if __ARM_ARCH >= 7 > > + armv7_sev(); > > +#endif > > So I'm not at all familiar with these instructions or what they do, > but are the events level triggered? In particular, is there any > sort of race where the sev might arrive in between the check of > aps_ready and the wfe on an AP? (For example, if wfe/sev were > similar to using mwait on x86 for wfe and a memory write for sev, > x86 would require a call to monitor before doing a check of > aps_ready to handle the race like so: > > while (!aps_ready) { > monitor(&aps_ready); > if (!aps_ready) > mwait(); > } > The armv7_sev function includes a barrier to ensure any previous memory operations have been flushed to cache before we send the event. The sev instruction then sets the event register in every processor. The wfe instruction will check this event register and, if it is unset, it the processor can then enter a low power mode. From my reading of the documentation, if an event has been signalled before executing the wfe then the instruction is a nop so will exit the loop as the new value of aps_ready will be visible on all processors. Andrew From owner-svn-src-all@FreeBSD.ORG Mon May 25 13:36:26 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C261C61F; Mon, 25 May 2015 13:36:26 +0000 (UTC) (envelope-from carpeddiem@gmail.com) Received: from mail-ig0-x22a.google.com (mail-ig0-x22a.google.com [IPv6:2607:f8b0:4001:c05::22a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 8D221F5C; Mon, 25 May 2015 13:36:26 +0000 (UTC) (envelope-from carpeddiem@gmail.com) Received: by igbsb11 with SMTP id sb11so33487283igb.0; Mon, 25 May 2015 06:36:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc:content-type; bh=J+7l8yofiUFmkkt4gqEvnk/0YFykNgPeIVRWWzaF1WY=; b=hlvFoAv1xtBzvRdDOMQIAYlDSwNJqOTtF2OW0V2d8NhKNj8QtrUz5FwhUk2GOSnPdE 8XZThBjGHjyqWXHmau6zF4KMYTwnJmX/mf/sh2t9v0OEXhu7VCpKTbaOWfIByNhgRPzx edoT6fZZNRjnmk1e1SgOz4Asi2RASPV349LWgGNJOHJDcjxpIJjFirl2NsS9r6qJlaf4 Zxq71r6bOgrUSmwY+sQYkjY93W5+p5nVfhOWfM9YLv4sRPDVXTQPuITqx2jVApvHxKN6 wFwHlyiUNvlYA3gE44d73PqyP1AF6Uu9NAqXYN745CQwxtm/lO+iZc/3V6LmwzrIn8Cu H2AQ== X-Received: by 10.107.39.141 with SMTP id n135mr29314045ion.26.1432560986036; Mon, 25 May 2015 06:36:26 -0700 (PDT) MIME-Version: 1.0 Sender: carpeddiem@gmail.com Received: by 10.107.48.3 with HTTP; Mon, 25 May 2015 06:36:05 -0700 (PDT) In-Reply-To: <201505251051.t4PApfSL051768@svn.freebsd.org> References: <201505251051.t4PApfSL051768@svn.freebsd.org> From: Ed Maste Date: Mon, 25 May 2015 09:36:05 -0400 X-Google-Sender-Auth: DoJLXDrV3WArEXG1-U8MZxYRC9o Message-ID: Subject: Re: svn commit: r283517 - head/gnu/lib To: Mark Murray Cc: "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" Content-Type: text/plain; charset=UTF-8 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 13:36:26 -0000 On 25 May 2015 at 06:51, Mark Murray wrote: > Author: markm > Date: Mon May 25 10:51:40 2015 > New Revision: 283517 > URL: https://svnweb.freebsd.org/changeset/base/283517 > > Log: > Unbreak build where WANT_GDB == "no', as libreadline is also used by ntpdc. This is fine as a build fix, but ntpdc links against both libedit and libreadline which seems like a bug. Once that's addressed (dropping the libreadline dependency) we can revert this change. From owner-svn-src-all@FreeBSD.ORG Mon May 25 13:43:12 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 6F7DB7F6; Mon, 25 May 2015 13:43:12 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.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 594A01D0; Mon, 25 May 2015 13:43:12 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PDhCQC037823; Mon, 25 May 2015 13:43:12 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PDh3wR037780; Mon, 25 May 2015 13:43:03 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201505251343.t4PDh3wR037780@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Mon, 25 May 2015 13:43:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283526 - in head: . contrib/llvm/include/llvm/Target contrib/llvm/lib/Analysis contrib/llvm/lib/CodeGen contrib/llvm/lib/CodeGen/SelectionDAG contrib/llvm/lib/ExecutionEngine/RuntimeDy... X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 13:43:12 -0000 Author: dim Date: Mon May 25 13:43:03 2015 New Revision: 283526 URL: https://svnweb.freebsd.org/changeset/base/283526 Log: Upgrade our copy of clang and llvm to 3.6.1 release. This release contains the following cherry-picked revisions from upstream trunk: 226124 226151 226164 226165 226166 226407 226408 226409 226652 226905 226983 227084 227087 227089 227208 227209 227210 227211 227212 227213 227214 227269 227430 227482 227503 227519 227574 227822 227986 227987 227988 227989 227990 228037 228038 228039 228040 228188 228189 228190 228273 228372 228373 228374 228403 228765 228848 228918 229223 229225 229226 229227 229228 229230 229234 229235 229236 229238 229239 229413 229507 229680 229750 229751 229752 229911 230146 230147 230235 230253 230255 230469 230500 230564 230603 230657 230742 230748 230956 231219 231237 231245 231259 231280 231451 231563 231601 231658 231659 231662 231984 231986 232046 232085 232142 232176 232179 232189 232382 232386 232389 232425 232438 232443 232675 232786 232797 232943 232957 233075 233080 233351 233353 233409 233410 233508 233584 233819 233904 234629 234636 234891 234975 234977 235524 235641 235662 235931 236099 236306 236307 Please note that from 3.5.0 onwards, clang and llvm require C++11 support to build; see UPDATING for more information. Added: head/contrib/llvm/patches/patch-08-llvm-r230348-arm-fix-bad-ha.diff - copied, changed from r283525, head/contrib/llvm/patches/patch-10-llvm-r230348-arm-fix-bad-ha.diff head/contrib/llvm/patches/patch-09-clang-r227115-constantarraytype.diff - copied unchanged from r283313, head/contrib/llvm/patches/patch-12-clang-r227115-constantarraytype.diff Deleted: head/contrib/llvm/patches/patch-08-llvm-r227089-fix-mips-i128.diff head/contrib/llvm/patches/patch-09-llvm-r230058-indirectbrs-assert.diff head/contrib/llvm/patches/patch-10-llvm-r230348-arm-fix-bad-ha.diff head/contrib/llvm/patches/patch-11-llvm-r231227-aarch64-tls-relocs.diff head/contrib/llvm/patches/patch-12-clang-r227115-constantarraytype.diff head/contrib/llvm/patches/patch-13-llvm-r229911-uleb128-commas.diff Modified: head/ObsoleteFiles.inc head/UPDATING head/contrib/llvm/include/llvm/Target/TargetCallingConv.h head/contrib/llvm/include/llvm/Target/TargetLowering.h head/contrib/llvm/lib/Analysis/ScalarEvolutionExpander.cpp head/contrib/llvm/lib/CodeGen/MachineCopyPropagation.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp head/contrib/llvm/lib/IR/ConstantFold.cpp head/contrib/llvm/lib/IR/GCOV.cpp head/contrib/llvm/lib/Support/Unix/Memory.inc head/contrib/llvm/lib/Support/Windows/explicit_symbols.inc head/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp head/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp head/contrib/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp head/contrib/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp head/contrib/llvm/lib/Target/Mips/Mips.td head/contrib/llvm/lib/Target/Mips/Mips16InstrInfo.cpp head/contrib/llvm/lib/Target/Mips/Mips32r6InstrInfo.td head/contrib/llvm/lib/Target/Mips/MipsCCState.cpp head/contrib/llvm/lib/Target/Mips/MipsCallingConv.td head/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp head/contrib/llvm/lib/Target/Mips/MipsISelLowering.h head/contrib/llvm/lib/Target/Mips/MipsInstrFPU.td head/contrib/llvm/lib/Target/Mips/MipsRegisterInfo.td head/contrib/llvm/lib/Target/Mips/MipsSEISelDAGToDAG.cpp head/contrib/llvm/lib/Target/Mips/MipsSEISelLowering.cpp head/contrib/llvm/lib/Target/Mips/MipsSEInstrInfo.cpp head/contrib/llvm/lib/Target/PowerPC/PPCISelLowering.cpp head/contrib/llvm/lib/Target/R600/AMDGPU.td head/contrib/llvm/lib/Target/R600/AMDGPUAlwaysInlinePass.cpp head/contrib/llvm/lib/Target/R600/AMDGPUAsmPrinter.cpp head/contrib/llvm/lib/Target/R600/AMDGPUISelDAGToDAG.cpp head/contrib/llvm/lib/Target/R600/AMDGPUISelLowering.cpp head/contrib/llvm/lib/Target/R600/AMDGPUInstrInfo.h head/contrib/llvm/lib/Target/R600/AMDGPUInstrInfo.td head/contrib/llvm/lib/Target/R600/AMDGPUInstructions.td head/contrib/llvm/lib/Target/R600/AMDGPUIntrinsics.td head/contrib/llvm/lib/Target/R600/AMDGPUSubtarget.cpp head/contrib/llvm/lib/Target/R600/AMDGPUSubtarget.h head/contrib/llvm/lib/Target/R600/CaymanInstructions.td head/contrib/llvm/lib/Target/R600/EvergreenInstructions.td head/contrib/llvm/lib/Target/R600/InstPrinter/AMDGPUInstPrinter.cpp head/contrib/llvm/lib/Target/R600/Processors.td head/contrib/llvm/lib/Target/R600/R600ISelLowering.cpp head/contrib/llvm/lib/Target/R600/R600Instructions.td head/contrib/llvm/lib/Target/R600/SIAnnotateControlFlow.cpp head/contrib/llvm/lib/Target/R600/SIDefines.h head/contrib/llvm/lib/Target/R600/SIFoldOperands.cpp head/contrib/llvm/lib/Target/R600/SIISelLowering.cpp head/contrib/llvm/lib/Target/R600/SIInsertWaits.cpp head/contrib/llvm/lib/Target/R600/SIInstrFormats.td head/contrib/llvm/lib/Target/R600/SIInstrInfo.cpp head/contrib/llvm/lib/Target/R600/SIInstrInfo.h head/contrib/llvm/lib/Target/R600/SIInstrInfo.td head/contrib/llvm/lib/Target/R600/SIInstructions.td head/contrib/llvm/lib/Target/R600/SILowerControlFlow.cpp head/contrib/llvm/lib/Target/R600/SIRegisterInfo.cpp head/contrib/llvm/lib/Target/R600/SIRegisterInfo.h head/contrib/llvm/lib/Target/R600/SIRegisterInfo.td head/contrib/llvm/lib/Target/R600/VIInstrFormats.td head/contrib/llvm/lib/Target/R600/VIInstructions.td head/contrib/llvm/lib/Target/X86/X86FrameLowering.cpp head/contrib/llvm/lib/Target/X86/X86FrameLowering.h head/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp head/contrib/llvm/lib/Target/X86/X86InstrControl.td head/contrib/llvm/lib/Target/X86/X86IntrinsicsInfo.h head/contrib/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp head/contrib/llvm/lib/Transforms/Scalar/GVN.cpp head/contrib/llvm/lib/Transforms/Utils/SimplifyIndVar.cpp head/contrib/llvm/patches/README.TXT head/contrib/llvm/patches/patch-01-freebsd-kprintf.diff head/contrib/llvm/patches/patch-07-llvm-r227752-boot2-shrink.diff head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td head/contrib/llvm/tools/clang/include/clang/Basic/TargetCXXABI.h head/contrib/llvm/tools/clang/include/clang/Basic/TargetInfo.h head/contrib/llvm/tools/clang/include/clang/Sema/Sema.h head/contrib/llvm/tools/clang/include/clang/Sema/Template.h head/contrib/llvm/tools/clang/lib/AST/ASTContext.cpp head/contrib/llvm/tools/clang/lib/AST/ASTDiagnostic.cpp head/contrib/llvm/tools/clang/lib/AST/Decl.cpp head/contrib/llvm/tools/clang/lib/Analysis/ThreadSafety.cpp head/contrib/llvm/tools/clang/lib/Basic/SourceManager.cpp head/contrib/llvm/tools/clang/lib/Basic/TargetInfo.cpp head/contrib/llvm/tools/clang/lib/Basic/Targets.cpp head/contrib/llvm/tools/clang/lib/Basic/Version.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.cpp head/contrib/llvm/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp head/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp head/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp head/contrib/llvm/tools/clang/lib/Frontend/InitPreprocessor.cpp head/contrib/llvm/tools/clang/lib/Sema/DeclSpec.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaChecking.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaExpr.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp head/etc/mtree/BSD.debug.dist head/etc/mtree/BSD.usr.dist head/lib/clang/include/Makefile head/lib/clang/include/clang/Basic/Version.inc head/lib/clang/include/clang/Config/config.h head/lib/clang/include/llvm/Config/config.h head/lib/clang/include/llvm/Config/llvm-config.h head/lib/libclang_rt/Makefile.inc head/sys/sys/param.h head/tools/build/mk/OptionalObsoleteFiles.inc Directory Properties: head/contrib/llvm/ (props changed) head/contrib/llvm/tools/clang/ (props changed) Modified: head/ObsoleteFiles.inc ============================================================================== --- head/ObsoleteFiles.inc Mon May 25 11:56:57 2015 (r283525) +++ head/ObsoleteFiles.inc Mon May 25 13:43:03 2015 (r283526) @@ -38,6 +38,67 @@ # xargs -n1 | sort | uniq -d; # done +# 20150525: new clang import which bumps version from 3.6.0 to 3.6.1. +OLD_FILES+=usr/lib/clang/3.6.0/include/__stddef_max_align_t.h +OLD_FILES+=usr/lib/clang/3.6.0/include/__wmmintrin_aes.h +OLD_FILES+=usr/lib/clang/3.6.0/include/__wmmintrin_pclmul.h +OLD_FILES+=usr/lib/clang/3.6.0/include/adxintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/altivec.h +OLD_FILES+=usr/lib/clang/3.6.0/include/ammintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/arm_acle.h +OLD_FILES+=usr/lib/clang/3.6.0/include/arm_neon.h +OLD_FILES+=usr/lib/clang/3.6.0/include/avx2intrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/avx512bwintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/avx512erintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/avx512fintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/avx512vlbwintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/avx512vlintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/avxintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/bmi2intrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/bmiintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/cpuid.h +OLD_FILES+=usr/lib/clang/3.6.0/include/emmintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/f16cintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/fma4intrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/fmaintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/ia32intrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/immintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/lzcntintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/mm3dnow.h +OLD_FILES+=usr/lib/clang/3.6.0/include/mm_malloc.h +OLD_FILES+=usr/lib/clang/3.6.0/include/mmintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/module.modulemap +OLD_FILES+=usr/lib/clang/3.6.0/include/nmmintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/pmmintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/popcntintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/prfchwintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/rdseedintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/rtmintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/shaintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/smmintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/tbmintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/tmmintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/wmmintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/x86intrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/xmmintrin.h +OLD_FILES+=usr/lib/clang/3.6.0/include/xopintrin.h +OLD_DIRS+=usr/lib/clang/3.6.0/include +OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.asan-i386.a +OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.asan-x86_64.a +OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.asan_cxx-i386.a +OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.asan_cxx-x86_64.a +OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.profile-arm.a +OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.profile-i386.a +OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.profile-x86_64.a +OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.san-i386.a +OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.san-x86_64.a +OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.ubsan-i386.a +OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.ubsan-x86_64.a +OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.ubsan_cxx-i386.a +OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.ubsan_cxx-x86_64.a +OLD_DIRS+=usr/lib/clang/3.6.0/lib/freebsd +OLD_DIRS+=usr/lib/clang/3.6.0/lib +OLD_DIRS+=usr/lib/clang/3.6.0 # 20150521 OLD_FILES+=usr/bin/demandoc OLD_FILES+=usr/share/man/man1/demandoc.1.gz Modified: head/UPDATING ============================================================================== --- head/UPDATING Mon May 25 11:56:57 2015 (r283525) +++ head/UPDATING Mon May 25 13:43:03 2015 (r283526) @@ -31,6 +31,11 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 11 disable the most expensive debugging functionality run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20150525: + Clang and llvm have been upgraded to 3.6.1 release. Please see the + 20141231 entry below for information about prerequisites and upgrading, + if you are not already using 3.5.0 or higher. + 20150521: TI platform code switched to using vendor DTS files and this update may break existing systems running on Beaglebone, Beaglebone Black, Modified: head/contrib/llvm/include/llvm/Target/TargetCallingConv.h ============================================================================== --- head/contrib/llvm/include/llvm/Target/TargetCallingConv.h Mon May 25 11:56:57 2015 (r283525) +++ head/contrib/llvm/include/llvm/Target/TargetCallingConv.h Mon May 25 13:43:03 2015 (r283526) @@ -134,6 +134,8 @@ namespace ISD { /// Index original Function's argument. unsigned OrigArgIndex; + /// Sentinel value for implicit machine-level input arguments. + static const unsigned NoArgIndex = UINT_MAX; /// Offset in bytes of current input value relative to the beginning of /// original argument. E.g. if argument was splitted into four 32 bit @@ -147,6 +149,15 @@ namespace ISD { VT = vt.getSimpleVT(); ArgVT = argvt; } + + bool isOrigArg() const { + return OrigArgIndex != NoArgIndex; + } + + unsigned getOrigArgIndex() const { + assert(OrigArgIndex != NoArgIndex && "Implicit machine-level argument"); + return OrigArgIndex; + } }; /// OutputArg - This struct carries flags and a value for a Modified: head/contrib/llvm/include/llvm/Target/TargetLowering.h ============================================================================== --- head/contrib/llvm/include/llvm/Target/TargetLowering.h Mon May 25 11:56:57 2015 (r283525) +++ head/contrib/llvm/include/llvm/Target/TargetLowering.h Mon May 25 13:43:03 2015 (r283526) @@ -2806,6 +2806,11 @@ public: virtual bool useLoadStackGuardNode() const { return false; } + + /// Returns true if arguments should be sign-extended in lib calls. + virtual bool shouldSignExtendTypeInLibCall(EVT Type, bool IsSigned) const { + return IsSigned; + } }; /// Given an LLVM IR type and return type attributes, compute the return value Modified: head/contrib/llvm/lib/Analysis/ScalarEvolutionExpander.cpp ============================================================================== --- head/contrib/llvm/lib/Analysis/ScalarEvolutionExpander.cpp Mon May 25 11:56:57 2015 (r283525) +++ head/contrib/llvm/lib/Analysis/ScalarEvolutionExpander.cpp Mon May 25 13:43:03 2015 (r283526) @@ -1776,9 +1776,12 @@ unsigned SCEVExpander::replaceCongruentI << *IsomorphicInc << '\n'); Value *NewInc = OrigInc; if (OrigInc->getType() != IsomorphicInc->getType()) { - Instruction *IP = isa(OrigInc) - ? (Instruction*)L->getHeader()->getFirstInsertionPt() - : OrigInc->getNextNode(); + Instruction *IP = nullptr; + if (PHINode *PN = dyn_cast(OrigInc)) + IP = PN->getParent()->getFirstInsertionPt(); + else + IP = OrigInc->getNextNode(); + IRBuilder<> Builder(IP); Builder.SetCurrentDebugLocation(IsomorphicInc->getDebugLoc()); NewInc = Builder. Modified: head/contrib/llvm/lib/CodeGen/MachineCopyPropagation.cpp ============================================================================== --- head/contrib/llvm/lib/CodeGen/MachineCopyPropagation.cpp Mon May 25 11:56:57 2015 (r283525) +++ head/contrib/llvm/lib/CodeGen/MachineCopyPropagation.cpp Mon May 25 13:43:03 2015 (r283526) @@ -75,10 +75,9 @@ MachineCopyPropagation::SourceNoLongerAv I != E; ++I) { unsigned MappedDef = *I; // Source of copy is no longer available for propagation. - if (AvailCopyMap.erase(MappedDef)) { - for (MCSubRegIterator SR(MappedDef, TRI); SR.isValid(); ++SR) - AvailCopyMap.erase(*SR); - } + AvailCopyMap.erase(MappedDef); + for (MCSubRegIterator SR(MappedDef, TRI); SR.isValid(); ++SR) + AvailCopyMap.erase(*SR); } } } Modified: head/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp ============================================================================== --- head/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp Mon May 25 11:56:57 2015 (r283525) +++ head/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp Mon May 25 13:43:03 2015 (r283526) @@ -1160,13 +1160,6 @@ void DAGCombiner::Run(CombineLevel AtLev LegalOperations = Level >= AfterLegalizeVectorOps; LegalTypes = Level >= AfterLegalizeTypes; - // Early exit if this basic block is in an optnone function. - AttributeSet FnAttrs = - DAG.getMachineFunction().getFunction()->getAttributes(); - if (FnAttrs.hasAttribute(AttributeSet::FunctionIndex, - Attribute::OptimizeNone)) - return; - // Add all the dag nodes to the worklist. for (SelectionDAG::allnodes_iterator I = DAG.allnodes_begin(), E = DAG.allnodes_end(); I != E; ++I) @@ -2788,9 +2781,13 @@ SDValue DAGCombiner::visitAND(SDNode *N) SplatBitSize = SplatBitSize * 2) SplatValue |= SplatValue.shl(SplatBitSize); - Constant = APInt::getAllOnesValue(BitWidth); - for (unsigned i = 0, n = SplatBitSize/BitWidth; i < n; ++i) - Constant &= SplatValue.lshr(i*BitWidth).zextOrTrunc(BitWidth); + // Make sure that variable 'Constant' is only set if 'SplatBitSize' is a + // multiple of 'BitWidth'. Otherwise, we could propagate a wrong value. + if (SplatBitSize % BitWidth == 0) { + Constant = APInt::getAllOnesValue(BitWidth); + for (unsigned i = 0, n = SplatBitSize/BitWidth; i < n; ++i) + Constant &= SplatValue.lshr(i*BitWidth).zextOrTrunc(BitWidth); + } } } @@ -11043,7 +11040,9 @@ SDValue DAGCombiner::visitBUILD_VECTOR(S } else if (VecInT.getSizeInBits() == VT.getSizeInBits() * 2) { // If the input vector is too large, try to split it. // We don't support having two input vectors that are too large. - if (VecIn2.getNode()) + // If the zero vector was used, we can not split the vector, + // since we'd need 3 inputs. + if (UsesZeroVector || VecIn2.getNode()) return SDValue(); if (!TLI.isExtractSubvectorCheap(VT, VT.getVectorNumElements())) @@ -11055,7 +11054,6 @@ SDValue DAGCombiner::visitBUILD_VECTOR(S DAG.getConstant(VT.getVectorNumElements(), TLI.getVectorIdxTy())); VecIn1 = DAG.getNode(ISD::EXTRACT_SUBVECTOR, dl, VT, VecIn1, DAG.getConstant(0, TLI.getVectorIdxTy())); - UsesZeroVector = false; } else return SDValue(); } Modified: head/contrib/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp ============================================================================== --- head/contrib/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp Mon May 25 11:56:57 2015 (r283525) +++ head/contrib/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp Mon May 25 13:43:03 2015 (r283526) @@ -497,7 +497,7 @@ bool FastISel::selectGetElementPtr(const OI != E; ++OI) { const Value *Idx = *OI; if (auto *StTy = dyn_cast(Ty)) { - unsigned Field = cast(Idx)->getZExtValue(); + uint64_t Field = cast(Idx)->getZExtValue(); if (Field) { // N = N + Offset TotalOffs += DL.getStructLayout(StTy)->getElementOffset(Field); @@ -518,8 +518,8 @@ bool FastISel::selectGetElementPtr(const if (CI->isZero()) continue; // N = N + Offset - TotalOffs += - DL.getTypeAllocSize(Ty) * cast(CI)->getSExtValue(); + uint64_t IdxN = CI->getValue().sextOrTrunc(64).getSExtValue(); + TotalOffs += DL.getTypeAllocSize(Ty) * IdxN; if (TotalOffs >= MaxOffs) { N = fastEmit_ri_(VT, ISD::ADD, N, NIsKill, TotalOffs, VT); if (!N) // Unhandled operand. Halt "fast" selection and bail. Modified: head/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp ============================================================================== --- head/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp Mon May 25 11:56:57 2015 (r283525) +++ head/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp Mon May 25 13:43:03 2015 (r283526) @@ -658,7 +658,7 @@ SDValue DAGTypeLegalizer::SoftenFloatRes NVT, N->getOperand(0)); return TLI.makeLibCall(DAG, LC, TLI.getTypeToTransformTo(*DAG.getContext(), RVT), - &Op, 1, false, dl).first; + &Op, 1, Signed, dl).first; } Modified: head/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp ============================================================================== --- head/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp Mon May 25 11:56:57 2015 (r283525) +++ head/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp Mon May 25 13:43:03 2015 (r283526) @@ -1423,9 +1423,10 @@ SUnit *ScheduleDAGRRList::PickNodeToSche // If one or more successors has been unscheduled, then the current // node is no longer available. - if (!TrySU->isAvailable) + if (!TrySU->isAvailable || !TrySU->NodeQueueId) CurSU = AvailableQueue->pop(); else { + // Available and in AvailableQueue AvailableQueue->remove(TrySU); CurSU = TrySU; } Modified: head/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp ============================================================================== --- head/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp Mon May 25 11:56:57 2015 (r283525) +++ head/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp Mon May 25 13:43:03 2015 (r283526) @@ -3399,30 +3399,21 @@ void SelectionDAGBuilder::visitGetElemen Ty = StTy->getElementType(Field); } else { Ty = cast(Ty)->getElementType(); + MVT PtrTy = DAG.getTargetLoweringInfo().getPointerTy(AS); + unsigned PtrSize = PtrTy.getSizeInBits(); + APInt ElementSize(PtrSize, DL->getTypeAllocSize(Ty)); // If this is a constant subscript, handle it quickly. - const TargetLowering &TLI = DAG.getTargetLoweringInfo(); - if (const ConstantInt *CI = dyn_cast(Idx)) { - if (CI->isZero()) continue; - uint64_t Offs = - DL->getTypeAllocSize(Ty)*cast(CI)->getSExtValue(); - SDValue OffsVal; - EVT PTy = TLI.getPointerTy(AS); - unsigned PtrBits = PTy.getSizeInBits(); - if (PtrBits < 64) - OffsVal = DAG.getNode(ISD::TRUNCATE, getCurSDLoc(), PTy, - DAG.getConstant(Offs, MVT::i64)); - else - OffsVal = DAG.getConstant(Offs, PTy); - - N = DAG.getNode(ISD::ADD, getCurSDLoc(), N.getValueType(), N, - OffsVal); + if (const auto *CI = dyn_cast(Idx)) { + if (CI->isZero()) + continue; + APInt Offs = ElementSize * CI->getValue().sextOrTrunc(PtrSize); + SDValue OffsVal = DAG.getConstant(Offs, PtrTy); + N = DAG.getNode(ISD::ADD, getCurSDLoc(), N.getValueType(), N, OffsVal); continue; } // N = N + Idx * ElementSize; - APInt ElementSize = - APInt(TLI.getPointerSizeInBits(AS), DL->getTypeAllocSize(Ty)); SDValue IdxN = getValue(Idx); // If the index is smaller or larger than intptr_t, truncate or extend @@ -5727,6 +5718,11 @@ void SelectionDAGBuilder::LowerCallTo(Im // Skip the first return-type Attribute to get to params. Entry.setAttributes(&CS, i - CS.arg_begin() + 1); Args.push_back(Entry); + + // If we have an explicit sret argument that is an Instruction, (i.e., it + // might point to function-local memory), we can't meaningfully tail-call. + if (Entry.isSRet && isa(V)) + isTailCall = false; } // Check if target-independent constraints permit a tail call here. @@ -7353,6 +7349,10 @@ TargetLowering::LowerCallTo(TargetLoweri Entry.Alignment = Align; CLI.getArgs().insert(CLI.getArgs().begin(), Entry); CLI.RetTy = Type::getVoidTy(CLI.RetTy->getContext()); + + // sret demotion isn't compatible with tail-calls, since the sret argument + // points into the callers stack frame. + CLI.IsTailCall = false; } else { for (unsigned I = 0, E = RetTys.size(); I != E; ++I) { EVT VT = RetTys[I]; @@ -7638,7 +7638,8 @@ void SelectionDAGISel::LowerArguments(co ISD::ArgFlagsTy Flags; Flags.setSRet(); MVT RegisterVT = TLI->getRegisterType(*DAG.getContext(), ValueVTs[0]); - ISD::InputArg RetArg(Flags, RegisterVT, ValueVTs[0], true, 0, 0); + ISD::InputArg RetArg(Flags, RegisterVT, ValueVTs[0], true, + ISD::InputArg::NoArgIndex, 0); Ins.push_back(RetArg); } Modified: head/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp ============================================================================== --- head/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp Mon May 25 11:56:57 2015 (r283525) +++ head/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp Mon May 25 13:43:03 2015 (r283526) @@ -96,18 +96,19 @@ TargetLowering::makeLibCall(SelectionDAG for (unsigned i = 0; i != NumOps; ++i) { Entry.Node = Ops[i]; Entry.Ty = Entry.Node.getValueType().getTypeForEVT(*DAG.getContext()); - Entry.isSExt = isSigned; - Entry.isZExt = !isSigned; + Entry.isSExt = shouldSignExtendTypeInLibCall(Ops[i].getValueType(), isSigned); + Entry.isZExt = !shouldSignExtendTypeInLibCall(Ops[i].getValueType(), isSigned); Args.push_back(Entry); } SDValue Callee = DAG.getExternalSymbol(getLibcallName(LC), getPointerTy()); Type *RetTy = RetVT.getTypeForEVT(*DAG.getContext()); TargetLowering::CallLoweringInfo CLI(DAG); + bool signExtend = shouldSignExtendTypeInLibCall(RetVT, isSigned); CLI.setDebugLoc(dl).setChain(DAG.getEntryNode()) .setCallee(getLibcallCallingConv(LC), RetTy, Callee, std::move(Args), 0) .setNoReturn(doesNotReturn).setDiscardResult(!isReturnValueUsed) - .setSExtResult(isSigned).setZExtResult(!isSigned); + .setSExtResult(signExtend).setZExtResult(!signExtend); return LowerCallTo(CLI); } Modified: head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp ============================================================================== --- head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp Mon May 25 11:56:57 2015 (r283525) +++ head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp Mon May 25 13:43:03 2015 (r283526) @@ -177,25 +177,30 @@ bool RuntimeDyldMachO::isCompatibleFile( } template -void RuntimeDyldMachOCRTPBase::finalizeLoad(const ObjectFile &ObjImg, +void RuntimeDyldMachOCRTPBase::finalizeLoad(const ObjectFile &Obj, ObjSectionToIDMap &SectionMap) { unsigned EHFrameSID = RTDYLD_INVALID_SECTION_ID; unsigned TextSID = RTDYLD_INVALID_SECTION_ID; unsigned ExceptTabSID = RTDYLD_INVALID_SECTION_ID; - ObjSectionToIDMap::iterator i, e; - for (i = SectionMap.begin(), e = SectionMap.end(); i != e; ++i) { - const SectionRef &Section = i->first; + for (const auto &Section : Obj.sections()) { StringRef Name; Section.getName(Name); - if (Name == "__eh_frame") - EHFrameSID = i->second; - else if (Name == "__text") - TextSID = i->second; + + // Force emission of the __text, __eh_frame, and __gcc_except_tab sections + // if they're present. Otherwise call down to the impl to handle other + // sections that have already been emitted. + if (Name == "__text") + TextSID = findOrEmitSection(Obj, Section, true, SectionMap); + else if (Name == "__eh_frame") + EHFrameSID = findOrEmitSection(Obj, Section, false, SectionMap); else if (Name == "__gcc_except_tab") - ExceptTabSID = i->second; - else - impl().finalizeSection(ObjImg, i->second, Section); + ExceptTabSID = findOrEmitSection(Obj, Section, true, SectionMap); + else { + auto I = SectionMap.find(Section); + if (I != SectionMap.end()) + impl().finalizeSection(Obj, I->second, Section); + } } UnregisteredEHFrameSections.push_back( EHFrameRelatedSections(EHFrameSID, TextSID, ExceptTabSID)); @@ -238,7 +243,8 @@ unsigned char *RuntimeDyldMachOCRTPBase< } static int64_t computeDelta(SectionEntry *A, SectionEntry *B) { - int64_t ObjDistance = A->ObjAddress - B->ObjAddress; + int64_t ObjDistance = + static_cast(A->ObjAddress) - static_cast(B->ObjAddress); int64_t MemDistance = A->LoadAddress - B->LoadAddress; return ObjDistance - MemDistance; } Modified: head/contrib/llvm/lib/IR/ConstantFold.cpp ============================================================================== --- head/contrib/llvm/lib/IR/ConstantFold.cpp Mon May 25 11:56:57 2015 (r283525) +++ head/contrib/llvm/lib/IR/ConstantFold.cpp Mon May 25 13:43:03 2015 (r283526) @@ -1120,27 +1120,18 @@ Constant *llvm::ConstantFoldBinaryInstru return ConstantInt::get(CI1->getContext(), C1V | C2V); case Instruction::Xor: return ConstantInt::get(CI1->getContext(), C1V ^ C2V); - case Instruction::Shl: { - uint32_t shiftAmt = C2V.getZExtValue(); - if (shiftAmt < C1V.getBitWidth()) - return ConstantInt::get(CI1->getContext(), C1V.shl(shiftAmt)); - else - return UndefValue::get(C1->getType()); // too big shift is undef - } - case Instruction::LShr: { - uint32_t shiftAmt = C2V.getZExtValue(); - if (shiftAmt < C1V.getBitWidth()) - return ConstantInt::get(CI1->getContext(), C1V.lshr(shiftAmt)); - else - return UndefValue::get(C1->getType()); // too big shift is undef - } - case Instruction::AShr: { - uint32_t shiftAmt = C2V.getZExtValue(); - if (shiftAmt < C1V.getBitWidth()) - return ConstantInt::get(CI1->getContext(), C1V.ashr(shiftAmt)); - else - return UndefValue::get(C1->getType()); // too big shift is undef - } + case Instruction::Shl: + if (C2V.ult(C1V.getBitWidth())) + return ConstantInt::get(CI1->getContext(), C1V.shl(C2V)); + return UndefValue::get(C1->getType()); // too big shift is undef + case Instruction::LShr: + if (C2V.ult(C1V.getBitWidth())) + return ConstantInt::get(CI1->getContext(), C1V.lshr(C2V)); + return UndefValue::get(C1->getType()); // too big shift is undef + case Instruction::AShr: + if (C2V.ult(C1V.getBitWidth())) + return ConstantInt::get(CI1->getContext(), C1V.ashr(C2V)); + return UndefValue::get(C1->getType()); // too big shift is undef } } Modified: head/contrib/llvm/lib/IR/GCOV.cpp ============================================================================== --- head/contrib/llvm/lib/IR/GCOV.cpp Mon May 25 11:56:57 2015 (r283525) +++ head/contrib/llvm/lib/IR/GCOV.cpp Mon May 25 13:43:03 2015 (r283526) @@ -263,10 +263,12 @@ bool GCOVFunction::readGCDA(GCOVBuffer & // required to combine the edge counts that are contained in the GCDA file. for (uint32_t BlockNo = 0; Count > 0; ++BlockNo) { // The last block is always reserved for exit block - if (BlockNo >= Blocks.size()-1) { + if (BlockNo >= Blocks.size()) { errs() << "Unexpected number of edges (in " << Name << ").\n"; return false; } + if (BlockNo == Blocks.size() - 1) + errs() << "(" << Name << ") has arcs from exit block.\n"; GCOVBlock &Block = *Blocks[BlockNo]; for (size_t EdgeNo = 0, End = Block.getNumDstEdges(); EdgeNo < End; ++EdgeNo) { Modified: head/contrib/llvm/lib/Support/Unix/Memory.inc ============================================================================== --- head/contrib/llvm/lib/Support/Unix/Memory.inc Mon May 25 11:56:57 2015 (r283525) +++ head/contrib/llvm/lib/Support/Unix/Memory.inc Mon May 25 13:43:03 2015 (r283526) @@ -333,23 +333,12 @@ void Memory::InvalidateInstructionCache( for (intptr_t Line = StartLine; Line < EndLine; Line += LineSize) asm volatile("icbi 0, %0" : : "r"(Line)); asm volatile("isync"); -# elif (defined(__arm__) || defined(__aarch64__)) && defined(__GNUC__) +# elif (defined(__arm__) || defined(__aarch64__) || defined(__mips__)) && \ + defined(__GNUC__) // FIXME: Can we safely always call this for __GNUC__ everywhere? const char *Start = static_cast(Addr); const char *End = Start + Len; __clear_cache(const_cast(Start), const_cast(End)); -# elif defined(__mips__) - const char *Start = static_cast(Addr); -# if defined(ANDROID) - // The declaration of "cacheflush" in Android bionic: - // extern int cacheflush(long start, long end, long flags); - const char *End = Start + Len; - long LStart = reinterpret_cast(const_cast(Start)); - long LEnd = reinterpret_cast(const_cast(End)); - cacheflush(LStart, LEnd, BCACHE); -# else - cacheflush(const_cast(Start), Len, BCACHE); -# endif # endif #endif // end apple Modified: head/contrib/llvm/lib/Support/Windows/explicit_symbols.inc ============================================================================== --- head/contrib/llvm/lib/Support/Windows/explicit_symbols.inc Mon May 25 11:56:57 2015 (r283525) +++ head/contrib/llvm/lib/Support/Windows/explicit_symbols.inc Mon May 25 13:43:03 2015 (r283526) @@ -10,9 +10,15 @@ #ifdef HAVE___CHKSTK EXPLICIT_SYMBOL(__chkstk) #endif +#ifdef HAVE___CHKSTK_MS + EXPLICIT_SYMBOL(__chkstk_ms) +#endif #ifdef HAVE____CHKSTK EXPLICIT_SYMBOL(___chkstk) #endif +#ifdef HAVE____CHKSTK_MS + EXPLICIT_SYMBOL(___chkstk_ms) +#endif #ifdef HAVE___MAIN EXPLICIT_SYMBOL(__main) // FIXME: Don't call it. #endif Modified: head/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp ============================================================================== --- head/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp Mon May 25 11:56:57 2015 (r283525) +++ head/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp Mon May 25 13:43:03 2015 (r283526) @@ -2031,18 +2031,19 @@ SDValue AArch64TargetLowering::LowerForm unsigned CurArgIdx = 0; for (unsigned i = 0; i != NumArgs; ++i) { MVT ValVT = Ins[i].VT; - std::advance(CurOrigArg, Ins[i].OrigArgIndex - CurArgIdx); - CurArgIdx = Ins[i].OrigArgIndex; - - // Get type of the original argument. - EVT ActualVT = getValueType(CurOrigArg->getType(), /*AllowUnknown*/ true); - MVT ActualMVT = ActualVT.isSimple() ? ActualVT.getSimpleVT() : MVT::Other; - // If ActualMVT is i1/i8/i16, we should set LocVT to i8/i8/i16. - if (ActualMVT == MVT::i1 || ActualMVT == MVT::i8) - ValVT = MVT::i8; - else if (ActualMVT == MVT::i16) - ValVT = MVT::i16; + if (Ins[i].isOrigArg()) { + std::advance(CurOrigArg, Ins[i].getOrigArgIndex() - CurArgIdx); + CurArgIdx = Ins[i].getOrigArgIndex(); + // Get type of the original argument. + EVT ActualVT = getValueType(CurOrigArg->getType(), /*AllowUnknown*/ true); + MVT ActualMVT = ActualVT.isSimple() ? ActualVT.getSimpleVT() : MVT::Other; + // If ActualMVT is i1/i8/i16, we should set LocVT to i8/i8/i16. + if (ActualMVT == MVT::i1 || ActualMVT == MVT::i8) + ValVT = MVT::i8; + else if (ActualMVT == MVT::i16) + ValVT = MVT::i16; + } CCAssignFn *AssignFn = CCAssignFnForCall(CallConv, /*IsVarArg=*/false); bool Res = AssignFn(i, ValVT, ValVT, CCValAssign::Full, Ins[i].Flags, CCInfo); Modified: head/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp ============================================================================== --- head/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp Mon May 25 11:56:57 2015 (r283525) +++ head/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp Mon May 25 13:43:03 2015 (r283526) @@ -3092,8 +3092,11 @@ ARMTargetLowering::LowerFormalArguments( for (unsigned i = 0, e = ArgLocs.size(); i != e; ++i) { CCValAssign &VA = ArgLocs[i]; - std::advance(CurOrigArg, Ins[VA.getValNo()].OrigArgIndex - CurArgIdx); - CurArgIdx = Ins[VA.getValNo()].OrigArgIndex; + if (Ins[VA.getValNo()].isOrigArg()) { + std::advance(CurOrigArg, + Ins[VA.getValNo()].getOrigArgIndex() - CurArgIdx); + CurArgIdx = Ins[VA.getValNo()].getOrigArgIndex(); + } // Arguments stored in registers. if (VA.isRegLoc()) { EVT RegVT = VA.getLocVT(); @@ -3173,7 +3176,7 @@ ARMTargetLowering::LowerFormalArguments( assert(VA.isMemLoc()); assert(VA.getValVT() != MVT::i64 && "i64 should already be lowered"); - int index = ArgLocs[i].getValNo(); + int index = VA.getValNo(); // Some Ins[] entries become multiple ArgLoc[] entries. // Process them only once. @@ -3186,6 +3189,8 @@ ARMTargetLowering::LowerFormalArguments( // Since they could be overwritten by lowering of arguments in case of // a tail call. if (Flags.isByVal()) { + assert(Ins[index].isOrigArg() && + "Byval arguments cannot be implicit"); unsigned CurByValIndex = CCInfo.getInRegsParamsProcessed(); ByValStoreOffset = RoundUpToAlignment(ByValStoreOffset, Flags.getByValAlign()); Modified: head/contrib/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp ============================================================================== --- head/contrib/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp Mon May 25 11:56:57 2015 (r283525) +++ head/contrib/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp Mon May 25 13:43:03 2015 (r283526) @@ -3667,43 +3667,44 @@ bool MipsAsmParser::parseDirectiveModule return false; } - if (Lexer.is(AsmToken::Identifier)) { - StringRef Option = Parser.getTok().getString(); - Parser.Lex(); + StringRef Option; + if (Parser.parseIdentifier(Option)) { + reportParseError("expected .module option identifier"); + return false; + } - if (Option == "oddspreg") { - getTargetStreamer().emitDirectiveModuleOddSPReg(true, isABI_O32()); - clearFeatureBits(Mips::FeatureNoOddSPReg, "nooddspreg"); - - if (getLexer().isNot(AsmToken::EndOfStatement)) { - reportParseError("unexpected token, expected end of statement"); - return false; - } + if (Option == "oddspreg") { + getTargetStreamer().emitDirectiveModuleOddSPReg(true, isABI_O32()); + clearFeatureBits(Mips::FeatureNoOddSPReg, "nooddspreg"); + // If this is not the end of the statement, report an error. + if (getLexer().isNot(AsmToken::EndOfStatement)) { + reportParseError("unexpected token, expected end of statement"); return false; - } else if (Option == "nooddspreg") { - if (!isABI_O32()) { - Error(L, "'.module nooddspreg' requires the O32 ABI"); - return false; - } + } - getTargetStreamer().emitDirectiveModuleOddSPReg(false, isABI_O32()); - setFeatureBits(Mips::FeatureNoOddSPReg, "nooddspreg"); + return false; // parseDirectiveModule has finished successfully. + } else if (Option == "nooddspreg") { + if (!isABI_O32()) { + Error(L, "'.module nooddspreg' requires the O32 ABI"); + return false; + } - if (getLexer().isNot(AsmToken::EndOfStatement)) { - reportParseError("unexpected token, expected end of statement"); - return false; - } + getTargetStreamer().emitDirectiveModuleOddSPReg(false, isABI_O32()); + setFeatureBits(Mips::FeatureNoOddSPReg, "nooddspreg"); + // If this is not the end of the statement, report an error. + if (getLexer().isNot(AsmToken::EndOfStatement)) { + reportParseError("unexpected token, expected end of statement"); return false; - } else if (Option == "fp") { - return parseDirectiveModuleFP(); } + return false; // parseDirectiveModule has finished successfully. + } else if (Option == "fp") { + return parseDirectiveModuleFP(); + } else { return Error(L, "'" + Twine(Option) + "' is not a valid .module option."); } - - return false; } /// parseDirectiveModuleFP Modified: head/contrib/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp ============================================================================== --- head/contrib/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp Mon May 25 11:56:57 2015 (r283525) +++ head/contrib/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp Mon May 25 13:43:03 2015 (r283526) @@ -259,6 +259,11 @@ static DecodeStatus DecodeCacheOp(MCInst uint64_t Address, const void *Decoder); +static DecodeStatus DecodeCacheOpR6(MCInst &Inst, + unsigned Insn, + uint64_t Address, + const void *Decoder); + static DecodeStatus DecodeCacheOpMM(MCInst &Inst, unsigned Insn, uint64_t Address, @@ -304,6 +309,10 @@ static DecodeStatus DecodeFMem3(MCInst & uint64_t Address, const void *Decoder); +static DecodeStatus DecodeFMemCop2R6(MCInst &Inst, unsigned Insn, + uint64_t Address, + const void *Decoder); + static DecodeStatus DecodeSpecial3LlSc(MCInst &Inst, unsigned Insn, uint64_t Address, @@ -1118,6 +1127,23 @@ static DecodeStatus DecodeCacheOpMM(MCIn return MCDisassembler::Success; } +static DecodeStatus DecodeCacheOpR6(MCInst &Inst, + unsigned Insn, + uint64_t Address, + const void *Decoder) { + int Offset = fieldFromInstruction(Insn, 7, 9); + unsigned Hint = fieldFromInstruction(Insn, 16, 5); + unsigned Base = fieldFromInstruction(Insn, 21, 5); + + Base = getReg(Decoder, Mips::GPR32RegClassID, Base); + + Inst.addOperand(MCOperand::CreateReg(Base)); + Inst.addOperand(MCOperand::CreateImm(Offset)); + Inst.addOperand(MCOperand::CreateImm(Hint)); + + return MCDisassembler::Success; +} + static DecodeStatus DecodeSyncI(MCInst &Inst, unsigned Insn, uint64_t Address, @@ -1354,6 +1380,23 @@ static DecodeStatus DecodeFMem3(MCInst & return MCDisassembler::Success; } +static DecodeStatus DecodeFMemCop2R6(MCInst &Inst, + unsigned Insn, + uint64_t Address, + const void *Decoder) { + int Offset = SignExtend32<11>(Insn & 0x07ff); + unsigned Reg = fieldFromInstruction(Insn, 16, 5); + unsigned Base = fieldFromInstruction(Insn, 11, 5); + + Reg = getReg(Decoder, Mips::COP2RegClassID, Reg); + Base = getReg(Decoder, Mips::GPR32RegClassID, Base); + + Inst.addOperand(MCOperand::CreateReg(Reg)); + Inst.addOperand(MCOperand::CreateReg(Base)); + Inst.addOperand(MCOperand::CreateImm(Offset)); + + return MCDisassembler::Success; +} static DecodeStatus DecodeSpecial3LlSc(MCInst &Inst, unsigned Insn, uint64_t Address, Modified: head/contrib/llvm/lib/Target/Mips/Mips.td ============================================================================== --- head/contrib/llvm/lib/Target/Mips/Mips.td Mon May 25 11:56:57 2015 (r283525) +++ head/contrib/llvm/lib/Target/Mips/Mips.td Mon May 25 13:43:03 2015 (r283526) @@ -58,15 +58,15 @@ def MipsInstrInfo : InstrInfo; //===----------------------------------------------------------------------===// def FeatureNoABICalls : SubtargetFeature<"noabicalls", "NoABICalls", "true", - "Disable SVR4-style position-independent code.">; + "Disable SVR4-style position-independent code">; def FeatureGP64Bit : SubtargetFeature<"gp64", "IsGP64bit", "true", - "General Purpose Registers are 64-bit wide.">; + "General Purpose Registers are 64-bit wide">; def FeatureFP64Bit : SubtargetFeature<"fp64", "IsFP64bit", "true", - "Support 64-bit FP registers.">; + "Support 64-bit FP registers">; def FeatureFPXX : SubtargetFeature<"fpxx", "IsFPXX", "true", - "Support for FPXX.">; + "Support for FPXX">; def FeatureNaN2008 : SubtargetFeature<"nan2008", "IsNaN2008bit", "true", - "IEEE 754-2008 NaN encoding.">; + "IEEE 754-2008 NaN encoding">; def FeatureSingleFloat : SubtargetFeature<"single-float", "IsSingleFloat", "true", "Only supports single precision float">; def FeatureO32 : SubtargetFeature<"o32", "ABI", "MipsABIInfo::O32()", @@ -81,7 +81,7 @@ def FeatureNoOddSPReg : SubtargetFeatur "Disable odd numbered single-precision " "registers">; def FeatureVFPU : SubtargetFeature<"vfpu", "HasVFPU", - "true", "Enable vector FPU instructions.">; + "true", "Enable vector FPU instructions">; def FeatureMips1 : SubtargetFeature<"mips1", "MipsArchVersion", "Mips1", "Mips I ISA Support [highly experimental]">; def FeatureMips2 : SubtargetFeature<"mips2", "MipsArchVersion", "Mips2", Modified: head/contrib/llvm/lib/Target/Mips/Mips16InstrInfo.cpp ============================================================================== --- head/contrib/llvm/lib/Target/Mips/Mips16InstrInfo.cpp Mon May 25 11:56:57 2015 (r283525) +++ head/contrib/llvm/lib/Target/Mips/Mips16InstrInfo.cpp Mon May 25 13:43:03 2015 (r283526) @@ -293,6 +293,9 @@ void Mips16InstrInfo::adjustStackPtrBigU void Mips16InstrInfo::adjustStackPtr(unsigned SP, int64_t Amount, MachineBasicBlock &MBB, MachineBasicBlock::iterator I) const { + if (Amount == 0) + return; + if (isInt<16>(Amount)) // need to change to addiu sp, ....and isInt<16> BuildAddiuSpImm(MBB, I, Amount); else Modified: head/contrib/llvm/lib/Target/Mips/Mips32r6InstrInfo.td ============================================================================== --- head/contrib/llvm/lib/Target/Mips/Mips32r6InstrInfo.td Mon May 25 11:56:57 2015 (r283525) +++ head/contrib/llvm/lib/Target/Mips/Mips32r6InstrInfo.td Mon May 25 13:43:03 2015 (r283526) @@ -379,7 +379,6 @@ class JMP_IDX_COMPACT_DESC_BASE Pattern = []; bit isTerminator = 1; bit hasDelaySlot = 0; - string DecoderMethod = "DecodeSimm16"; } class JIALC_DESC : JMP_IDX_COMPACT_DESC_BASE<"jialc", calloffset16, @@ -550,6 +549,7 @@ class CACHE_HINT_DESC Pattern = []; + string DecoderMethod = "DecodeCacheOpR6"; } class CACHE_DESC : CACHE_HINT_DESC<"cache", mem_simm9, GPR32Opnd>; @@ -561,6 +561,7 @@ class COP2LD_DESC_BASE Pattern = []; bit mayLoad = 1; + string DecoderMethod = "DecodeFMemCop2R6"; } class LDC2_R6_DESC : COP2LD_DESC_BASE<"ldc2", COP2Opnd>; @@ -572,6 +573,7 @@ class COP2ST_DESC_BASE Pattern = []; bit mayStore = 1; + string DecoderMethod = "DecodeFMemCop2R6"; } class SDC2_R6_DESC : COP2ST_DESC_BASE<"sdc2", COP2Opnd>; Modified: head/contrib/llvm/lib/Target/Mips/MipsCCState.cpp ============================================================================== --- head/contrib/llvm/lib/Target/Mips/MipsCCState.cpp Mon May 25 11:56:57 2015 (r283525) +++ head/contrib/llvm/lib/Target/Mips/MipsCCState.cpp Mon May 25 13:43:03 2015 (r283526) @@ -132,8 +132,8 @@ void MipsCCState::PreAnalyzeFormalArgume continue; } - assert(Ins[i].OrigArgIndex < MF.getFunction()->arg_size()); - std::advance(FuncArg, Ins[i].OrigArgIndex); + assert(Ins[i].getOrigArgIndex() < MF.getFunction()->arg_size()); + std::advance(FuncArg, Ins[i].getOrigArgIndex()); OriginalArgWasF128.push_back( originalTypeIsF128(FuncArg->getType(), nullptr)); Modified: head/contrib/llvm/lib/Target/Mips/MipsCallingConv.td ============================================================================== --- head/contrib/llvm/lib/Target/Mips/MipsCallingConv.td Mon May 25 11:56:57 2015 (r283525) +++ head/contrib/llvm/lib/Target/Mips/MipsCallingConv.td Mon May 25 13:43:03 2015 (r283526) @@ -123,7 +123,7 @@ def CC_MipsN_SoftFloat : CallingConv<[ ]>; def CC_MipsN : CallingConv<[ - CCIfType<[i8, i16, i32], + CCIfType<[i8, i16, i32, i64], CCIfSubtargetNot<"isLittle()", CCIfInReg>>>, @@ -159,6 +159,10 @@ def CC_MipsN : CallingConv<[ // N32/64 variable arguments. // All arguments are passed in integer registers. def CC_MipsN_VarArg : CallingConv<[ + CCIfType<[i8, i16, i32, i64], + CCIfSubtargetNot<"isLittle()", + CCIfInReg>>>, + // All integers are promoted to 64-bit. CCIfType<[i8, i16, i32], CCPromoteToType>, Modified: head/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp ============================================================================== --- head/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp Mon May 25 11:56:57 2015 (r283525) +++ head/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp Mon May 25 13:43:03 2015 (r283526) @@ -619,6 +619,33 @@ static SDValue performSELECTCombine(SDNo return SDValue(); } +static SDValue performCMovFPCombine(SDNode *N, SelectionDAG &DAG, + TargetLowering::DAGCombinerInfo &DCI, + const MipsSubtarget &Subtarget) { + if (DCI.isBeforeLegalizeOps()) + return SDValue(); + + SDValue ValueIfTrue = N->getOperand(0), ValueIfFalse = N->getOperand(2); + + ConstantSDNode *FalseC = dyn_cast(ValueIfFalse); + if (!FalseC || FalseC->getZExtValue()) + return SDValue(); + + // Since RHS (False) is 0, we swap the order of the True/False operands + // (obviously also inverting the condition) so that we can + // take advantage of conditional moves using the $0 register. + // Example: + // return (a != 0) ? x : 0; + // load $reg, x + // movz $reg, $0, a + unsigned Opc = (N->getOpcode() == MipsISD::CMovFP_T) ? MipsISD::CMovFP_F : + MipsISD::CMovFP_T; + + SDValue FCC = N->getOperand(1), Glue = N->getOperand(3); + return DAG.getNode(Opc, SDLoc(N), ValueIfFalse.getValueType(), + ValueIfFalse, FCC, ValueIfTrue, Glue); +} + static SDValue performANDCombine(SDNode *N, SelectionDAG &DAG, TargetLowering::DAGCombinerInfo &DCI, const MipsSubtarget &Subtarget) { @@ -752,6 +779,9 @@ SDValue MipsTargetLowering::PerformDAGC return performDivRemCombine(N, DAG, DCI, Subtarget); case ISD::SELECT: return performSELECTCombine(N, DAG, DCI, Subtarget); + case MipsISD::CMovFP_F: + case MipsISD::CMovFP_T: + return performCMovFPCombine(N, DAG, DCI, Subtarget); case ISD::AND: return performANDCombine(N, DAG, DCI, Subtarget); case ISD::OR: @@ -2039,7 +2069,7 @@ SDValue MipsTargetLowering::lowerShiftLe SDValue Or = DAG.getNode(ISD::OR, DL, VT, ShiftLeftHi, ShiftRightLo); SDValue ShiftLeftLo = DAG.getNode(ISD::SHL, DL, VT, Lo, Shamt); SDValue Cond = DAG.getNode(ISD::AND, DL, MVT::i32, Shamt, - DAG.getConstant(0x20, MVT::i32)); + DAG.getConstant(VT.getSizeInBits(), MVT::i32)); Lo = DAG.getNode(ISD::SELECT, DL, VT, Cond, DAG.getConstant(0, VT), ShiftLeftLo); Hi = DAG.getNode(ISD::SELECT, DL, VT, Cond, ShiftLeftLo, Or); @@ -2078,11 +2108,12 @@ SDValue MipsTargetLowering::lowerShiftRi SDValue ShiftRightHi = DAG.getNode(IsSRA ? ISD::SRA : ISD::SRL, DL, VT, Hi, Shamt); SDValue Cond = DAG.getNode(ISD::AND, DL, MVT::i32, Shamt, - DAG.getConstant(0x20, MVT::i32)); - SDValue Shift31 = DAG.getNode(ISD::SRA, DL, VT, Hi, DAG.getConstant(31, VT)); + DAG.getConstant(VT.getSizeInBits(), MVT::i32)); + SDValue Ext = DAG.getNode(ISD::SRA, DL, VT, Hi, + DAG.getConstant(VT.getSizeInBits() - 1, VT)); Lo = DAG.getNode(ISD::SELECT, DL, VT, Cond, ShiftRightHi, Or); Hi = DAG.getNode(ISD::SELECT, DL, VT, Cond, - IsSRA ? Shift31 : DAG.getConstant(0, VT), ShiftRightHi); + IsSRA ? Ext : DAG.getConstant(0, VT), ShiftRightHi); SDValue Ops[2] = {Lo, Hi}; return DAG.getMergeValues(Ops, DL); @@ -2902,13 +2933,16 @@ MipsTargetLowering::LowerFormalArguments for (unsigned i = 0, e = ArgLocs.size(); i != e; ++i) { CCValAssign &VA = ArgLocs[i]; - std::advance(FuncArg, Ins[i].OrigArgIndex - CurArgIdx); - CurArgIdx = Ins[i].OrigArgIndex; + if (Ins[i].isOrigArg()) { + std::advance(FuncArg, Ins[i].getOrigArgIndex() - CurArgIdx); + CurArgIdx = Ins[i].getOrigArgIndex(); + } EVT ValVT = VA.getValVT(); ISD::ArgFlagsTy Flags = Ins[i].Flags; bool IsRegLoc = VA.isRegLoc(); if (Flags.isByVal()) { + assert(Ins[i].isOrigArg() && "Byval arguments cannot be implicit"); unsigned FirstByValReg, LastByValReg; unsigned ByValIdx = CCInfo.getInRegsParamsProcessed(); CCInfo.getInRegsParamInfo(ByValIdx, FirstByValReg, LastByValReg); @@ -3029,6 +3063,15 @@ MipsTargetLowering::CanLowerReturn(Calli return CCInfo.CheckReturn(Outs, RetCC_Mips); } +bool +MipsTargetLowering::shouldSignExtendTypeInLibCall(EVT Type, bool IsSigned) const { + if (Subtarget.hasMips3() && Subtarget.abiUsesSoftFloat()) { + if (Type == MVT::i32) + return true; + } + return IsSigned; +} + SDValue MipsTargetLowering::LowerReturn(SDValue Chain, CallingConv::ID CallConv, bool IsVarArg, Modified: head/contrib/llvm/lib/Target/Mips/MipsISelLowering.h ============================================================================== --- head/contrib/llvm/lib/Target/Mips/MipsISelLowering.h Mon May 25 11:56:57 2015 (r283525) +++ head/contrib/llvm/lib/Target/Mips/MipsISelLowering.h Mon May 25 13:43:03 2015 (r283526) @@ -472,6 +472,8 @@ namespace llvm { const SmallVectorImpl &OutVals, SDLoc dl, SelectionDAG &DAG) const override; + bool shouldSignExtendTypeInLibCall(EVT Type, bool IsSigned) const override; + // Inline asm support ConstraintType getConstraintType(const std::string &Constraint) const override; Modified: head/contrib/llvm/lib/Target/Mips/MipsInstrFPU.td ============================================================================== --- head/contrib/llvm/lib/Target/Mips/MipsInstrFPU.td Mon May 25 11:56:57 2015 (r283525) +++ head/contrib/llvm/lib/Target/Mips/MipsInstrFPU.td Mon May 25 13:43:03 2015 (r283526) @@ -458,42 +458,42 @@ def FSUB_S : MMRel, ADDS_FT<"sub.s", FGR defm FSUB : ADDS_M<"sub.d", II_SUB_D, 0, fsub>, ADDS_FM<0x01, 17>; def MADD_S : MMRel, MADDS_FT<"madd.s", FGR32Opnd, II_MADD_S, fadd>, - MADDS_FM<4, 0>, ISA_MIPS32R2_NOT_32R6_64R6; + MADDS_FM<4, 0>, INSN_MIPS4_32R2_NOT_32R6_64R6; def MSUB_S : MMRel, MADDS_FT<"msub.s", FGR32Opnd, II_MSUB_S, fsub>, - MADDS_FM<5, 0>, ISA_MIPS32R2_NOT_32R6_64R6; + MADDS_FM<5, 0>, INSN_MIPS4_32R2_NOT_32R6_64R6; let AdditionalPredicates = [NoNaNsFPMath] in { def NMADD_S : MMRel, NMADDS_FT<"nmadd.s", FGR32Opnd, II_NMADD_S, fadd>, - MADDS_FM<6, 0>, ISA_MIPS32R2_NOT_32R6_64R6; + MADDS_FM<6, 0>, INSN_MIPS4_32R2_NOT_32R6_64R6; def NMSUB_S : MMRel, NMADDS_FT<"nmsub.s", FGR32Opnd, II_NMSUB_S, fsub>, - MADDS_FM<7, 0>, ISA_MIPS32R2_NOT_32R6_64R6; + MADDS_FM<7, 0>, INSN_MIPS4_32R2_NOT_32R6_64R6; } def MADD_D32 : MMRel, MADDS_FT<"madd.d", AFGR64Opnd, II_MADD_D, fadd>, - MADDS_FM<4, 1>, ISA_MIPS32R2_NOT_32R6_64R6, FGR_32; + MADDS_FM<4, 1>, INSN_MIPS4_32R2_NOT_32R6_64R6, FGR_32; def MSUB_D32 : MMRel, MADDS_FT<"msub.d", AFGR64Opnd, II_MSUB_D, fsub>, - MADDS_FM<5, 1>, ISA_MIPS32R2_NOT_32R6_64R6, FGR_32; + MADDS_FM<5, 1>, INSN_MIPS4_32R2_NOT_32R6_64R6, FGR_32; let AdditionalPredicates = [NoNaNsFPMath] in { def NMADD_D32 : MMRel, NMADDS_FT<"nmadd.d", AFGR64Opnd, II_NMADD_D, fadd>, - MADDS_FM<6, 1>, ISA_MIPS32R2_NOT_32R6_64R6, FGR_32; + MADDS_FM<6, 1>, INSN_MIPS4_32R2_NOT_32R6_64R6, FGR_32; def NMSUB_D32 : MMRel, NMADDS_FT<"nmsub.d", AFGR64Opnd, II_NMSUB_D, fsub>, - MADDS_FM<7, 1>, ISA_MIPS32R2_NOT_32R6_64R6, FGR_32; + MADDS_FM<7, 1>, INSN_MIPS4_32R2_NOT_32R6_64R6, FGR_32; } -let isCodeGenOnly=1 in { +let DecoderNamespace = "Mips64" in { def MADD_D64 : MADDS_FT<"madd.d", FGR64Opnd, II_MADD_D, fadd>, - MADDS_FM<4, 1>, ISA_MIPS32R2_NOT_32R6_64R6, FGR_64; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Mon May 25 13:51:22 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id F0938C63; Mon, 25 May 2015 13:51:21 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.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 DBBA4340; Mon, 25 May 2015 13:51:21 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PDpLoW041632; Mon, 25 May 2015 13:51:21 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PDpEwU041567; Mon, 25 May 2015 13:51:14 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201505251351.t4PDpEwU041567@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Mon, 25 May 2015 13:51:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283527 - in head/sys: dev/ath dev/bwi dev/bwn dev/if_ndis dev/ipw dev/iwi dev/iwn dev/malo dev/mwl dev/ral dev/usb/wlan dev/wi dev/wpi dev/wtap dev/wtap/wtap_hal net80211 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 13:51:22 -0000 Author: glebius Date: Mon May 25 13:51:13 2015 New Revision: 283527 URL: https://svnweb.freebsd.org/changeset/base/283527 Log: Make net80211 drivers supply their device name to the net80211 layer, so that the latter doesn't need to go through struct ifnet to get their name. Sponsored by: Netflix Sponsored by: Nginx, Inc. Modified: head/sys/dev/ath/if_ath.c head/sys/dev/bwi/if_bwi.c head/sys/dev/bwn/if_bwn.c head/sys/dev/if_ndis/if_ndis.c head/sys/dev/ipw/if_ipw.c head/sys/dev/iwi/if_iwi.c head/sys/dev/iwn/if_iwn.c head/sys/dev/malo/if_malo.c head/sys/dev/mwl/if_mwl.c head/sys/dev/ral/rt2560.c head/sys/dev/ral/rt2661.c head/sys/dev/ral/rt2860.c head/sys/dev/usb/wlan/if_rsu.c head/sys/dev/usb/wlan/if_rum.c head/sys/dev/usb/wlan/if_run.c head/sys/dev/usb/wlan/if_uath.c head/sys/dev/usb/wlan/if_upgt.c head/sys/dev/usb/wlan/if_ural.c head/sys/dev/usb/wlan/if_urtw.c head/sys/dev/usb/wlan/if_urtwn.c head/sys/dev/usb/wlan/if_zyd.c head/sys/dev/wi/if_wi.c head/sys/dev/wpi/if_wpi.c head/sys/dev/wtap/if_wtap.c head/sys/dev/wtap/if_wtapvar.h head/sys/dev/wtap/wtap_hal/hal.c head/sys/net80211/ieee80211_var.h Modified: head/sys/dev/ath/if_ath.c ============================================================================== --- head/sys/dev/ath/if_ath.c Mon May 25 13:43:03 2015 (r283526) +++ head/sys/dev/ath/if_ath.c Mon May 25 13:51:13 2015 (r283527) @@ -592,6 +592,7 @@ ath_attach(u_int16_t devid, struct ath_s goto bad; } ic = ifp->if_l2com; + ic->ic_name = device_get_nameunit(sc->sc_dev); /* set these up early for if_printf use */ if_initname(ifp, device_get_name(sc->sc_dev), Modified: head/sys/dev/bwi/if_bwi.c ============================================================================== --- head/sys/dev/bwi/if_bwi.c Mon May 25 13:43:03 2015 (r283526) +++ head/sys/dev/bwi/if_bwi.c Mon May 25 13:51:13 2015 (r283527) @@ -507,6 +507,7 @@ bwi_attach(struct bwi_softc *sc) ieee80211_init_channels(ic, NULL, &bands); ic->ic_ifp = ifp; + ic->ic_name = device_get_nameunit(dev); ic->ic_caps = IEEE80211_C_STA | IEEE80211_C_SHSLOT | IEEE80211_C_SHPREAMBLE | Modified: head/sys/dev/bwn/if_bwn.c ============================================================================== --- head/sys/dev/bwn/if_bwn.c Mon May 25 13:43:03 2015 (r283526) +++ head/sys/dev/bwn/if_bwn.c Mon May 25 13:51:13 2015 (r283527) @@ -1058,6 +1058,7 @@ bwn_attach_post(struct bwn_softc *sc) ic = ifp->if_l2com; ic->ic_ifp = ifp; + ic->ic_name = device_get_nameunit(sc->sc_dev); /* XXX not right but it's not used anywhere important */ ic->ic_phytype = IEEE80211_T_OFDM; ic->ic_opmode = IEEE80211_M_STA; Modified: head/sys/dev/if_ndis/if_ndis.c ============================================================================== --- head/sys/dev/if_ndis/if_ndis.c Mon May 25 13:43:03 2015 (r283526) +++ head/sys/dev/if_ndis/if_ndis.c Mon May 25 13:51:13 2015 (r283527) @@ -738,6 +738,7 @@ ndis_attach(dev) ifp->if_ioctl = ndis_ioctl_80211; ic->ic_ifp = ifp; + ic->ic_name = device_get_nameunit(dev); ic->ic_opmode = IEEE80211_M_STA; ic->ic_phytype = IEEE80211_T_DS; ic->ic_caps = IEEE80211_C_8023ENCAP | Modified: head/sys/dev/ipw/if_ipw.c ============================================================================== --- head/sys/dev/ipw/if_ipw.c Mon May 25 13:43:03 2015 (r283526) +++ head/sys/dev/ipw/if_ipw.c Mon May 25 13:51:13 2015 (r283527) @@ -286,6 +286,7 @@ ipw_attach(device_t dev) IFQ_SET_READY(&ifp->if_snd); ic->ic_ifp = ifp; + ic->ic_name = device_get_nameunit(dev); ic->ic_opmode = IEEE80211_M_STA; ic->ic_phytype = IEEE80211_T_DS; Modified: head/sys/dev/iwi/if_iwi.c ============================================================================== --- head/sys/dev/iwi/if_iwi.c Mon May 25 13:43:03 2015 (r283526) +++ head/sys/dev/iwi/if_iwi.c Mon May 25 13:51:13 2015 (r283527) @@ -364,6 +364,7 @@ iwi_attach(device_t dev) IFQ_SET_READY(&ifp->if_snd); ic->ic_ifp = ifp; + ic->ic_name = device_get_nameunit(dev); ic->ic_opmode = IEEE80211_M_STA; ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ Modified: head/sys/dev/iwn/if_iwn.c ============================================================================== --- head/sys/dev/iwn/if_iwn.c Mon May 25 13:43:03 2015 (r283526) +++ head/sys/dev/iwn/if_iwn.c Mon May 25 13:51:13 2015 (r283527) @@ -556,6 +556,7 @@ iwn_attach(device_t dev) ic = ifp->if_l2com; ic->ic_ifp = ifp; + ic->ic_name = device_get_nameunit(dev); ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ ic->ic_opmode = IEEE80211_M_STA; /* default to BSS mode */ Modified: head/sys/dev/malo/if_malo.c ============================================================================== --- head/sys/dev/malo/if_malo.c Mon May 25 13:43:03 2015 (r283526) +++ head/sys/dev/malo/if_malo.c Mon May 25 13:51:13 2015 (r283527) @@ -276,6 +276,7 @@ malo_attach(uint16_t devid, struct malo_ IFQ_SET_READY(&ifp->if_snd); ic->ic_ifp = ifp; + ic->ic_name = device_get_nameunit(sc->malo_dev); /* XXX not right but it's not used anywhere important */ ic->ic_phytype = IEEE80211_T_OFDM; ic->ic_opmode = IEEE80211_M_STA; Modified: head/sys/dev/mwl/if_mwl.c ============================================================================== --- head/sys/dev/mwl/if_mwl.c Mon May 25 13:43:03 2015 (r283526) +++ head/sys/dev/mwl/if_mwl.c Mon May 25 13:51:13 2015 (r283527) @@ -413,6 +413,7 @@ mwl_attach(uint16_t devid, struct mwl_so IFQ_SET_READY(&ifp->if_snd); ic->ic_ifp = ifp; + ic->ic_name = device_get_nameunit(sc->sc_dev); /* XXX not right but it's not used anywhere important */ ic->ic_phytype = IEEE80211_T_OFDM; ic->ic_opmode = IEEE80211_M_STA; Modified: head/sys/dev/ral/rt2560.c ============================================================================== --- head/sys/dev/ral/rt2560.c Mon May 25 13:43:03 2015 (r283526) +++ head/sys/dev/ral/rt2560.c Mon May 25 13:51:13 2015 (r283527) @@ -273,6 +273,7 @@ rt2560_attach(device_t dev, int id) IFQ_SET_READY(&ifp->if_snd); ic->ic_ifp = ifp; + ic->ic_name = device_get_nameunit(dev); ic->ic_opmode = IEEE80211_M_STA; ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ Modified: head/sys/dev/ral/rt2661.c ============================================================================== --- head/sys/dev/ral/rt2661.c Mon May 25 13:43:03 2015 (r283526) +++ head/sys/dev/ral/rt2661.c Mon May 25 13:51:13 2015 (r283527) @@ -274,6 +274,7 @@ rt2661_attach(device_t dev, int id) IFQ_SET_READY(&ifp->if_snd); ic->ic_ifp = ifp; + ic->ic_name = device_get_nameunit(dev); ic->ic_opmode = IEEE80211_M_STA; ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ Modified: head/sys/dev/ral/rt2860.c ============================================================================== --- head/sys/dev/ral/rt2860.c Mon May 25 13:43:03 2015 (r283526) +++ head/sys/dev/ral/rt2860.c Mon May 25 13:51:13 2015 (r283527) @@ -315,6 +315,7 @@ rt2860_attach(device_t dev, int id) IFQ_SET_READY(&ifp->if_snd); ic->ic_ifp = ifp; + ic->ic_name = device_get_nameunit(dev); ic->ic_opmode = IEEE80211_M_STA; ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ Modified: head/sys/dev/usb/wlan/if_rsu.c ============================================================================== --- head/sys/dev/usb/wlan/if_rsu.c Mon May 25 13:43:03 2015 (r283526) +++ head/sys/dev/usb/wlan/if_rsu.c Mon May 25 13:51:13 2015 (r283527) @@ -355,6 +355,7 @@ rsu_attach(device_t self) ifp->if_hwassist = CSUM_TCP; ic->ic_ifp = ifp; + ic->ic_name = device_get_nameunit(self); ic->ic_phytype = IEEE80211_T_OFDM; /* Not only, but not used. */ ic->ic_opmode = IEEE80211_M_STA; /* Default to BSS mode. */ Modified: head/sys/dev/usb/wlan/if_rum.c ============================================================================== --- head/sys/dev/usb/wlan/if_rum.c Mon May 25 13:43:03 2015 (r283526) +++ head/sys/dev/usb/wlan/if_rum.c Mon May 25 13:51:13 2015 (r283527) @@ -488,6 +488,7 @@ rum_attach(device_t self) IFQ_SET_READY(&ifp->if_snd); ic->ic_ifp = ifp; + ic->ic_name = device_get_nameunit(self); ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ /* set device capabilities */ Modified: head/sys/dev/usb/wlan/if_run.c ============================================================================== --- head/sys/dev/usb/wlan/if_run.c Mon May 25 13:43:03 2015 (r283526) +++ head/sys/dev/usb/wlan/if_run.c Mon May 25 13:51:13 2015 (r283527) @@ -776,6 +776,7 @@ run_attach(device_t self) IFQ_SET_READY(&ifp->if_snd); ic->ic_ifp = ifp; + ic->ic_name = device_get_nameunit(self); ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ ic->ic_opmode = IEEE80211_M_STA; /* default to BSS mode */ Modified: head/sys/dev/usb/wlan/if_uath.c ============================================================================== --- head/sys/dev/usb/wlan/if_uath.c Mon May 25 13:43:03 2015 (r283526) +++ head/sys/dev/usb/wlan/if_uath.c Mon May 25 13:51:13 2015 (r283527) @@ -442,6 +442,7 @@ uath_attach(device_t dev) ic = ifp->if_l2com; ic->ic_ifp = ifp; + ic->ic_name = device_get_nameunit(dev); ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ ic->ic_opmode = IEEE80211_M_STA; /* default to BSS mode */ Modified: head/sys/dev/usb/wlan/if_upgt.c ============================================================================== --- head/sys/dev/usb/wlan/if_upgt.c Mon May 25 13:43:03 2015 (r283526) +++ head/sys/dev/usb/wlan/if_upgt.c Mon May 25 13:51:13 2015 (r283527) @@ -341,6 +341,7 @@ upgt_attach(device_t dev) ic = ifp->if_l2com; ic->ic_ifp = ifp; + ic->ic_name = device_get_nameunit(dev); ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ ic->ic_opmode = IEEE80211_M_STA; /* set device capabilities */ Modified: head/sys/dev/usb/wlan/if_ural.c ============================================================================== --- head/sys/dev/usb/wlan/if_ural.c Mon May 25 13:43:03 2015 (r283526) +++ head/sys/dev/usb/wlan/if_ural.c Mon May 25 13:51:13 2015 (r283527) @@ -473,6 +473,7 @@ ural_attach(device_t self) IFQ_SET_READY(&ifp->if_snd); ic->ic_ifp = ifp; + ic->ic_name = device_get_nameunit(self); ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ /* set device capabilities */ Modified: head/sys/dev/usb/wlan/if_urtw.c ============================================================================== --- head/sys/dev/usb/wlan/if_urtw.c Mon May 25 13:43:03 2015 (r283526) +++ head/sys/dev/usb/wlan/if_urtw.c Mon May 25 13:51:13 2015 (r283527) @@ -881,6 +881,7 @@ urtw_attach(device_t dev) ic = ifp->if_l2com; ic->ic_ifp = ifp; + ic->ic_name = device_get_nameunit(dev); ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ ic->ic_opmode = IEEE80211_M_STA; /* default to BSS mode */ Modified: head/sys/dev/usb/wlan/if_urtwn.c ============================================================================== --- head/sys/dev/usb/wlan/if_urtwn.c Mon May 25 13:43:03 2015 (r283526) +++ head/sys/dev/usb/wlan/if_urtwn.c Mon May 25 13:51:13 2015 (r283527) @@ -442,6 +442,7 @@ urtwn_attach(device_t self) IFQ_SET_READY(&ifp->if_snd); ic->ic_ifp = ifp; + ic->ic_name = device_get_nameunit(self); ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ ic->ic_opmode = IEEE80211_M_STA; /* default to BSS mode */ Modified: head/sys/dev/usb/wlan/if_zyd.c ============================================================================== --- head/sys/dev/usb/wlan/if_zyd.c Mon May 25 13:43:03 2015 (r283526) +++ head/sys/dev/usb/wlan/if_zyd.c Mon May 25 13:51:13 2015 (r283527) @@ -388,6 +388,7 @@ zyd_attach(device_t dev) ic = ifp->if_l2com; ic->ic_ifp = ifp; + ic->ic_name = device_get_nameunit(dev); ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ ic->ic_opmode = IEEE80211_M_STA; Modified: head/sys/dev/wi/if_wi.c ============================================================================== --- head/sys/dev/wi/if_wi.c Mon May 25 13:43:03 2015 (r283526) +++ head/sys/dev/wi/if_wi.c Mon May 25 13:51:13 2015 (r283527) @@ -344,6 +344,7 @@ wi_attach(device_t dev) IFQ_SET_READY(&ifp->if_snd); ic->ic_ifp = ifp; + ic->ic_name = device_get_nameunit(dev); ic->ic_phytype = IEEE80211_T_DS; ic->ic_opmode = IEEE80211_M_STA; ic->ic_caps = IEEE80211_C_STA Modified: head/sys/dev/wpi/if_wpi.c ============================================================================== --- head/sys/dev/wpi/if_wpi.c Mon May 25 13:43:03 2015 (r283526) +++ head/sys/dev/wpi/if_wpi.c Mon May 25 13:51:13 2015 (r283527) @@ -452,6 +452,7 @@ wpi_attach(device_t dev) ic = ifp->if_l2com; ic->ic_ifp = ifp; + ic->ic_name = device_get_nameunit(dev); ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ ic->ic_opmode = IEEE80211_M_STA; /* default to BSS mode */ Modified: head/sys/dev/wtap/if_wtap.c ============================================================================== --- head/sys/dev/wtap/if_wtap.c Mon May 25 13:43:03 2015 (r283526) +++ head/sys/dev/wtap/if_wtap.c Mon May 25 13:51:13 2015 (r283527) @@ -797,6 +797,7 @@ wtap_attach(struct wtap_softc *sc, const IFQ_SET_READY(&ifp->if_snd); ic->ic_ifp = ifp; + ic->ic_name = sc->name; ic->ic_phytype = IEEE80211_T_DS; ic->ic_opmode = IEEE80211_M_MBSS; ic->ic_caps = IEEE80211_C_MBSS; Modified: head/sys/dev/wtap/if_wtapvar.h ============================================================================== --- head/sys/dev/wtap/if_wtapvar.h Mon May 25 13:43:03 2015 (r283526) +++ head/sys/dev/wtap/if_wtapvar.h Mon May 25 13:51:13 2015 (r283527) @@ -130,6 +130,7 @@ struct wtap_vap { struct taskqueue; struct wtap_softc { + char name[7]; /* wtapXX\0 */ int32_t id; int32_t up; struct ifnet *sc_ifp; /* interface common */ Modified: head/sys/dev/wtap/wtap_hal/hal.c ============================================================================== --- head/sys/dev/wtap/wtap_hal/hal.c Mon May 25 13:43:03 2015 (r283526) +++ head/sys/dev/wtap/wtap_hal/hal.c Mon May 25 13:51:13 2015 (r283527) @@ -182,6 +182,8 @@ new_wtap(struct wtap_hal *hal, int32_t i bzero(hal->hal_devs[id], sizeof(struct wtap_softc)); hal->hal_devs[id]->sc_md = hal->hal_md; hal->hal_devs[id]->id = id; + snprintf(hal->hal_devs[id]->name, sizeof(hal->hal_devs[id]->name), + "wlan%d", id); mtx_init(&hal->hal_devs[id]->sc_mtx, "wtap_softc mtx", NULL, MTX_DEF | MTX_RECURSE); Modified: head/sys/net80211/ieee80211_var.h ============================================================================== --- head/sys/net80211/ieee80211_var.h Mon May 25 13:43:03 2015 (r283526) +++ head/sys/net80211/ieee80211_var.h Mon May 25 13:51:13 2015 (r283527) @@ -117,6 +117,7 @@ struct ieee80211_frame; struct ieee80211com { struct ifnet *ic_ifp; /* associated device */ + const char *ic_name; /* usually device name */ ieee80211_com_lock_t ic_comlock; /* state update lock */ ieee80211_tx_lock_t ic_txlock; /* ic/vap TX lock */ TAILQ_HEAD(, ieee80211vap) ic_vaps; /* list of vap instances */ From owner-svn-src-all@FreeBSD.ORG Mon May 25 13:57:30 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8B025DF7; Mon, 25 May 2015 13:57:30 +0000 (UTC) (envelope-from melifaro@ipfw.ru) Received: from forward14h.cmail.yandex.net (forward14h.cmail.yandex.net [IPv6:2a02:6b8:0:f35::9f]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "forwards.mail.yandex.net", Issuer "Certum Level IV CA" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 41318656; Mon, 25 May 2015 13:57:30 +0000 (UTC) (envelope-from melifaro@ipfw.ru) Received: from web7h.yandex.ru (web7h.yandex.ru [84.201.186.36]) by forward14h.cmail.yandex.net (Yandex) with ESMTP id 735D02175E; Mon, 25 May 2015 16:57:10 +0300 (MSK) Received: from 127.0.0.1 (localhost [127.0.0.1]) by web7h.yandex.ru (Yandex) with ESMTP id A36ED6921425; Mon, 25 May 2015 16:57:09 +0300 (MSK) Received: by web7h.yandex.ru with HTTP; Mon, 25 May 2015 16:57:09 +0300 From: Alexander V. Chernikov Envelope-From: melifaro@ipfw.ru To: John Baldwin Cc: "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" In-Reply-To: <1698551.fhQlKrx2sg@ralph.baldwin.cx> References: <201505241124.t4OBOFe6030452@svn.freebsd.org> <1698551.fhQlKrx2sg@ralph.baldwin.cx> Subject: Re: svn commit: r283364 - head/sys/sys MIME-Version: 1.0 Message-Id: <2823711432562229@web7h.yandex.ru> X-Mailer: Yamail [ http://yandex.ru ] 5.0 Date: Mon, 25 May 2015 16:57:09 +0300 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=utf-8 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 13:57:30 -0000 25.05.2015, 14:45, "John Baldwin" : > On Sunday, May 24, 2015 11:24:15 AM Alexander V. Chernikov wrote: >>  Author: melifaro >>  Date: Sun May 24 11:24:14 2015 >>  New Revision: 283364 >>  URL: https://svnweb.freebsd.org/changeset/base/283364 >> >>  Log: >>    Fix SIOCGI2C structure requirement. >> >>    In reality, SIOCGI2C ioctl requires struct ifreq as many other >>    ioctls. Doing copyin() on (significantly) larger struct ifstat sometimes >>    triggered EFAULT. >> >>    Reported by: Olivier Cochard-Labbé >>    MFC after: 1 week > > Note that this breaks the ABI.  You may wish to add a SIOCGI2C_OLD that In general, yes. Since this was not merged to -stable and I'm mostly sure that ifconfig is the only user - this is most likely OK. > still uses the larger struct so that old programs continue to work.  OTOH, > they were only working by accident before.  If we expect that no code Well, yes. I'm wondering why this worked at all (copyout tried to get 8XX bytes instead of 32). > outside of ifconfig is using this yet, then it is probably ok to let this > slide. > > -- > John Baldwin From owner-svn-src-all@FreeBSD.ORG Mon May 25 14:04:38 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B412A70; Mon, 25 May 2015 14:04:38 +0000 (UTC) (envelope-from dchagin@dchagin.static.corbina.net) Received: from heemeyer.club (heemeyer.club [IPv6:2001:19f0:6400:80a1::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "heemeyer.club", Issuer "heemeyer.club" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 6EA2F8D9; Mon, 25 May 2015 14:04:37 +0000 (UTC) (envelope-from dchagin@dchagin.static.corbina.net) Received: from dchagin.static.corbina.net (gprs-client-83.149.8.109.misp.ru [83.149.8.109] (may be forged)) by heemeyer.club (8.15.1/8.15.1) with ESMTPS id t4PE4Wg0021061 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 25 May 2015 14:04:34 GMT (envelope-from dchagin@dchagin.static.corbina.net) X-Authentication-Warning: heemeyer.club: Host gprs-client-83.149.8.109.misp.ru [83.149.8.109] (may be forged) claimed to be dchagin.static.corbina.net Received: from dchagin.static.corbina.net (localhost [127.0.0.1]) by dchagin.static.corbina.net (8.15.1/8.15.1) with ESMTPS id t4PE4L4v017376 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Mon, 25 May 2015 17:04:29 +0300 (MSK) (envelope-from dchagin@dchagin.static.corbina.net) Received: (from dchagin@localhost) by dchagin.static.corbina.net (8.15.1/8.15.1/Submit) id t4PE4LXq017375; Mon, 25 May 2015 17:04:21 +0300 (MSK) (envelope-from dchagin) Date: Mon, 25 May 2015 17:04:21 +0300 From: Chagin Dmitry To: John Baldwin Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283424 - in head/sys: amd64/linux modules/linux64 Message-ID: <20150525140421.GA17366@dchagin.static.corbina.net> References: <201505241607.t4OG7C7b073936@svn.freebsd.org> <2938779.SXzlp9bc0j@ralph.baldwin.cx> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <2938779.SXzlp9bc0j@ralph.baldwin.cx> User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 14:04:38 -0000 On Mon, May 25, 2015 at 07:48:49AM -0400, John Baldwin wrote: > On Sunday, May 24, 2015 04:07:12 PM Dmitry Chagin wrote: > > Author: dchagin > > Date: Sun May 24 16:07:11 2015 > > New Revision: 283424 > > URL: https://svnweb.freebsd.org/changeset/base/283424 > > > > Log: > > Add preliminary support for x86-64 Linux binaries. > > > > Differential Revision: https://reviews.freebsd.org/D1076 > > > > Added: > > head/sys/amd64/linux/ > > head/sys/amd64/linux/Makefile (contents, props changed) > > head/sys/amd64/linux/linux.h (contents, props changed) > > head/sys/amd64/linux/linux_dummy.c (contents, props changed) > > head/sys/amd64/linux/linux_genassym.c (contents, props changed) > > head/sys/amd64/linux/linux_ipc64.h (contents, props changed) > > head/sys/amd64/linux/linux_locore.s (contents, props changed) > > head/sys/amd64/linux/linux_machdep.c (contents, props changed) > > head/sys/amd64/linux/linux_support.s (contents, props changed) > > head/sys/amd64/linux/linux_sysvec.c (contents, props changed) > > head/sys/amd64/linux/linux_vdso.lds.s (contents, props changed) > > head/sys/amd64/linux/syscalls.conf (contents, props changed) > > head/sys/amd64/linux/syscalls.master (contents, props changed) > > head/sys/modules/linux64/ > > head/sys/modules/linux64/Makefile (contents, props changed) > > First, I'm really happy to see this land in HEAD! Thanks! > > Second, __FreeBSD_version bump perhaps? dim@ bumped, is that enough? -- Have fun! chd From owner-svn-src-all@FreeBSD.ORG Mon May 25 14:12:51 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B271E44E; Mon, 25 May 2015 14:12:51 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.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 A0896B01; Mon, 25 May 2015 14:12:51 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PECp4Y052621; Mon, 25 May 2015 14:12:51 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PECpJR052620; Mon, 25 May 2015 14:12:51 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201505251412.t4PECpJR052620@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Mon, 25 May 2015 14:12:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283528 - head/sys/dev/ipw X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 14:12:51 -0000 Author: glebius Date: Mon May 25 14:12:50 2015 New Revision: 283528 URL: https://svnweb.freebsd.org/changeset/base/283528 Log: Don't compare array to NULL. Found by: clang Modified: head/sys/dev/ipw/if_ipw.c Modified: head/sys/dev/ipw/if_ipw.c ============================================================================== --- head/sys/dev/ipw/if_ipw.c Mon May 25 13:51:13 2015 (r283527) +++ head/sys/dev/ipw/if_ipw.c Mon May 25 14:12:50 2015 (r283528) @@ -752,11 +752,8 @@ ipw_release(struct ipw_softc *sc) } if (sc->tbd_dmat != NULL) { - if (sc->stbd_list != NULL) { - bus_dmamap_unload(sc->tbd_dmat, sc->tbd_map); - bus_dmamem_free(sc->tbd_dmat, sc->tbd_list, - sc->tbd_map); - } + bus_dmamap_unload(sc->tbd_dmat, sc->tbd_map); + bus_dmamem_free(sc->tbd_dmat, sc->tbd_list, sc->tbd_map); bus_dma_tag_destroy(sc->tbd_dmat); } From owner-svn-src-all@FreeBSD.ORG Mon May 25 14:28:56 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4C49E93C; Mon, 25 May 2015 14:28:56 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from tensor.andric.com (tensor.andric.com [87.251.56.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "tensor.andric.com", Issuer "COMODO RSA Domain Validation Secure Server CA" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 07221D8B; Mon, 25 May 2015 14:28:55 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from [IPv6:2001:7b8:3a7::30d6:5393:d885:bc65] (unknown [IPv6:2001:7b8:3a7:0:30d6:5393:d885:bc65]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by tensor.andric.com (Postfix) with ESMTPSA id 072CE1CD1D; Mon, 25 May 2015 16:28:45 +0200 (CEST) Subject: Re: svn commit: r283424 - in head/sys: amd64/linux modules/linux64 Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\)) Content-Type: multipart/signed; boundary="Apple-Mail=_F69F52BC-1C70-418C-B7C4-D9667A94336C"; protocol="application/pgp-signature"; micalg=pgp-sha1 X-Pgp-Agent: GPGMail 2.5b6 From: Dimitry Andric In-Reply-To: <20150525140421.GA17366@dchagin.static.corbina.net> Date: Mon, 25 May 2015 16:28:33 +0200 Cc: John Baldwin , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Message-Id: <263D5B23-F466-468B-AEBF-A13E80558041@FreeBSD.org> References: <201505241607.t4OG7C7b073936@svn.freebsd.org> <2938779.SXzlp9bc0j@ralph.baldwin.cx> <20150525140421.GA17366@dchagin.static.corbina.net> To: Chagin Dmitry X-Mailer: Apple Mail (2.2098) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 14:28:56 -0000 --Apple-Mail=_F69F52BC-1C70-418C-B7C4-D9667A94336C Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii On 25 May 2015, at 16:04, Chagin Dmitry wrote: > > On Mon, May 25, 2015 at 07:48:49AM -0400, John Baldwin wrote: >> On Sunday, May 24, 2015 04:07:12 PM Dmitry Chagin wrote: >>> Author: dchagin >>> Date: Sun May 24 16:07:11 2015 >>> New Revision: 283424 >>> URL: https://svnweb.freebsd.org/changeset/base/283424 >>> >>> Log: >>> Add preliminary support for x86-64 Linux binaries. ... >> Second, __FreeBSD_version bump perhaps? > dim@ bumped, is that enough? I've added notes for both r283424 and r283526 to the porter's handbook: https://svnweb.freebsd.org/doc?view=revision&revision=46725 -Dimitry --Apple-Mail=_F69F52BC-1C70-418C-B7C4-D9667A94336C Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP using GPGMail -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.0.27 iEYEARECAAYFAlVjMZwACgkQsF6jCi4glqMajQCg7pEfQxftw6NdQ9Oz5GGhn3ZU L9sAoIiJ9j6Chau64LWp4NOsfoyG8q1a =vM72 -----END PGP SIGNATURE----- --Apple-Mail=_F69F52BC-1C70-418C-B7C4-D9667A94336C-- From owner-svn-src-all@FreeBSD.ORG Mon May 25 14:30:47 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 69AA1AAC; Mon, 25 May 2015 14:30:47 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.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 56D90EA5; Mon, 25 May 2015 14:30:47 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PEUlZh061023; Mon, 25 May 2015 14:30:47 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PEUiY9061003; Mon, 25 May 2015 14:30:44 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201505251430.t4PEUiY9061003@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Mon, 25 May 2015 14:30:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283529 - head/sys/net80211 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 14:30:47 -0000 Author: glebius Date: Mon May 25 14:30:44 2015 New Revision: 283529 URL: https://svnweb.freebsd.org/changeset/base/283529 Log: Use name from ieee80211com instead of parent ifnet, in debugging printfs. Sponsored by: Netflix Sponsored by: Nginx, Inc. Modified: head/sys/net80211/ieee80211.c head/sys/net80211/ieee80211_ddb.c head/sys/net80211/ieee80211_dfs.c head/sys/net80211/ieee80211_freebsd.c head/sys/net80211/ieee80211_ht.c head/sys/net80211/ieee80211_node.c head/sys/net80211/ieee80211_proto.c head/sys/net80211/ieee80211_radiotap.c head/sys/net80211/ieee80211_regdomain.c head/sys/net80211/ieee80211_var.h Modified: head/sys/net80211/ieee80211.c ============================================================================== --- head/sys/net80211/ieee80211.c Mon May 25 14:12:50 2015 (r283528) +++ head/sys/net80211/ieee80211.c Mon May 25 14:30:44 2015 (r283529) @@ -35,9 +35,10 @@ __FBSDID("$FreeBSD$"); #include #include #include - #include +#include + #include #include #include @@ -267,7 +268,20 @@ static void null_update_chw(struct ieee80211com *ic) { - if_printf(ic->ic_ifp, "%s: need callback\n", __func__); + ic_printf(ic, "%s: need callback\n", __func__); +} + +int +ic_printf(struct ieee80211com *ic, const char * fmt, ...) +{ + va_list ap; + int retval; + + retval = printf("%s: ", ic->ic_name); + va_start(ap, fmt); + retval += vprintf(fmt, ap); + va_end(ap); + return (retval); } /* @@ -284,8 +298,8 @@ ieee80211_ifattach(struct ieee80211com * KASSERT(ifp->if_type == IFT_IEEE80211, ("if_type %d", ifp->if_type)); - IEEE80211_LOCK_INIT(ic, ifp->if_xname); - IEEE80211_TX_LOCK_INIT(ic, ifp->if_xname); + IEEE80211_LOCK_INIT(ic, ic->ic_name); + IEEE80211_TX_LOCK_INIT(ic, ic->ic_name); TAILQ_INIT(&ic->ic_vaps); /* Create a taskqueue for all state changes */ @@ -427,7 +441,7 @@ ieee80211_vap_setup(struct ieee80211com ifp = if_alloc(IFT_ETHER); if (ifp == NULL) { - if_printf(ic->ic_ifp, "%s: unable to allocate ifnet\n", + ic_printf(ic, "%s: unable to allocate ifnet\n", __func__); return ENOMEM; } @@ -551,7 +565,7 @@ ieee80211_vap_attach(struct ieee80211vap IEEE80211_DPRINTF(vap, IEEE80211_MSG_STATE, "%s: %s parent %s flags 0x%x flags_ext 0x%x\n", __func__, ieee80211_opmode_name[vap->iv_opmode], - ic->ic_ifp->if_xname, vap->iv_flags, vap->iv_flags_ext); + ic->ic_name, vap->iv_flags, vap->iv_flags_ext); /* * Do late attach work that cannot happen until after @@ -608,7 +622,7 @@ ieee80211_vap_detach(struct ieee80211vap IEEE80211_DPRINTF(vap, IEEE80211_MSG_STATE, "%s: %s parent %s\n", __func__, ieee80211_opmode_name[vap->iv_opmode], - ic->ic_ifp->if_xname); + ic->ic_name); /* NB: bpfdetach is called by ether_ifdetach and claims all taps */ ether_ifdetach(ifp); @@ -900,7 +914,7 @@ int ieee80211_chan2ieee(struct ieee80211com *ic, const struct ieee80211_channel *c) { if (c == NULL) { - if_printf(ic->ic_ifp, "invalid channel (NULL)\n"); + ic_printf(ic, "invalid channel (NULL)\n"); return 0; /* XXX */ } return (c == IEEE80211_CHAN_ANYC ? IEEE80211_CHAN_ANY : c->ic_ieee); @@ -1169,7 +1183,6 @@ ieee80211_get_suprates(struct ieee80211c void ieee80211_announce(struct ieee80211com *ic) { - struct ifnet *ifp = ic->ic_ifp; int i, rate, mword; enum ieee80211_phymode mode; const struct ieee80211_rateset *rs; @@ -1178,7 +1191,7 @@ ieee80211_announce(struct ieee80211com * for (mode = IEEE80211_MODE_AUTO+1; mode < IEEE80211_MODE_11NA; mode++) { if (isclr(ic->ic_modecaps, mode)) continue; - if_printf(ifp, "%s rates: ", ieee80211_phymode_name[mode]); + ic_printf(ic, "%s rates: ", ieee80211_phymode_name[mode]); rs = &ic->ic_sup_rates[mode]; for (i = 0; i < rs->rs_nrates; i++) { mword = ieee80211_rate2media(ic, rs->rs_rates[i], mode); Modified: head/sys/net80211/ieee80211_ddb.c ============================================================================== --- head/sys/net80211/ieee80211_ddb.c Mon May 25 14:12:50 2015 (r283528) +++ head/sys/net80211/ieee80211_ddb.c Mon May 25 14:30:44 2015 (r283529) @@ -521,6 +521,7 @@ _db_show_com(const struct ieee80211com * db_printf(" %s(%p)", vap->iv_ifp->if_xname, vap); db_printf("\n"); db_printf("\tifp %p(%s)", ic->ic_ifp, ic->ic_ifp->if_xname); + db_printf("\tname %s", ic->ic_name); db_printf(" comlock %p", &ic->ic_comlock); db_printf("\n"); db_printf("\theadroom %d", ic->ic_headroom); Modified: head/sys/net80211/ieee80211_dfs.c ============================================================================== --- head/sys/net80211/ieee80211_dfs.c Mon May 25 14:12:50 2015 (r283528) +++ head/sys/net80211/ieee80211_dfs.c Mon May 25 14:30:44 2015 (r283529) @@ -253,8 +253,8 @@ dfs_timeout(void *arg) * msg instead of one for every channel * table entry. */ - if_printf(ic->ic_ifp, "radar on channel" - " %u (%u MHz) cleared after timeout\n", + ic_printf(ic, "radar on channel %u " + "(%u MHz) cleared after timeout\n", c->ic_ieee, c->ic_freq); /* notify user space */ c->ic_state &= @@ -272,14 +272,14 @@ dfs_timeout(void *arg) } static void -announce_radar(struct ifnet *ifp, const struct ieee80211_channel *curchan, +announce_radar(struct ieee80211com *ic, const struct ieee80211_channel *curchan, const struct ieee80211_channel *newchan) { if (newchan == NULL) - if_printf(ifp, "radar detected on channel %u (%u MHz)\n", + ic_printf(ic, "radar detected on channel %u (%u MHz)\n", curchan->ic_ieee, curchan->ic_freq); else - if_printf(ifp, "radar detected on channel %u (%u MHz), " + ic_printf(ic, "radar detected on channel %u (%u MHz), " "moving to channel %u (%u MHz)\n", curchan->ic_ieee, curchan->ic_freq, newchan->ic_ieee, newchan->ic_freq); @@ -309,7 +309,7 @@ ieee80211_dfs_notify_radar(struct ieee80 * along merrily. */ if (ieee80211_dfs_debug == DFS_DBG_NOCSANOL) { - announce_radar(ic->ic_ifp, chan, chan); + announce_radar(ic, chan, chan); ieee80211_notify_radar(ic, chan); return; } @@ -364,7 +364,7 @@ ieee80211_dfs_notify_radar(struct ieee80 else dfs->newchan = chan; - announce_radar(ic->ic_ifp, chan, dfs->newchan); + announce_radar(ic, chan, dfs->newchan); if (callout_pending(&dfs->cac_timer)) callout_schedule(&dfs->cac_timer, 0); @@ -380,7 +380,7 @@ ieee80211_dfs_notify_radar(struct ieee80 * on the NOL to expire. */ /*XXX*/ - if_printf(ic->ic_ifp, "%s: No free channels; waiting for entry " + ic_printf(ic, "%s: No free channels; waiting for entry " "on NOL to expire\n", __func__); } } else { @@ -390,9 +390,9 @@ ieee80211_dfs_notify_radar(struct ieee80 if (dfs->lastchan != chan) { dfs->lastchan = chan; dfs->cureps = 0; - announce_radar(ic->ic_ifp, chan, NULL); + announce_radar(ic, chan, NULL); } else if (ppsratecheck(&dfs->lastevent, &dfs->cureps, 1)) { - announce_radar(ic->ic_ifp, chan, NULL); + announce_radar(ic, chan, NULL); } } } @@ -434,6 +434,6 @@ ieee80211_dfs_pickchannel(struct ieee802 (c->ic_flags & flags) == flags) return c; } - if_printf(ic->ic_ifp, "HELP, no channel located to switch to!\n"); + ic_printf(ic, "HELP, no channel located to switch to!\n"); return NULL; } Modified: head/sys/net80211/ieee80211_freebsd.c ============================================================================== --- head/sys/net80211/ieee80211_freebsd.c Mon May 25 14:12:50 2015 (r283528) +++ head/sys/net80211/ieee80211_freebsd.c Mon May 25 14:30:44 2015 (r283529) @@ -207,9 +207,8 @@ static int ieee80211_sysctl_parent(SYSCTL_HANDLER_ARGS) { struct ieee80211com *ic = arg1; - const char *name = ic->ic_ifp->if_xname; - return SYSCTL_OUT_STR(req, name); + return SYSCTL_OUT_STR(req, ic->ic_name); } static int Modified: head/sys/net80211/ieee80211_ht.c ============================================================================== --- head/sys/net80211/ieee80211_ht.c Mon May 25 14:12:50 2015 (r283528) +++ head/sys/net80211/ieee80211_ht.c Mon May 25 14:30:44 2015 (r283529) @@ -354,7 +354,6 @@ static struct printranges { static void ht_rateprint(struct ieee80211com *ic, enum ieee80211_phymode mode, int ratetype) { - struct ifnet *ifp = ic->ic_ifp; int minrate, maxrate; struct printranges *range; @@ -369,12 +368,12 @@ ht_rateprint(struct ieee80211com *ic, en minrate = ht_getrate(ic, range->minmcs, mode, ratetype); maxrate = ht_getrate(ic, range->maxmcs, mode, ratetype); if (range->maxmcs) { - if_printf(ifp, "MCS %d-%d: %d%sMbps - %d%sMbps\n", + ic_printf(ic, "MCS %d-%d: %d%sMbps - %d%sMbps\n", range->minmcs, range->maxmcs, minrate/2, ((minrate & 0x1) != 0 ? ".5" : ""), maxrate/2, ((maxrate & 0x1) != 0 ? ".5" : "")); } else { - if_printf(ifp, "MCS %d: %d%sMbps\n", range->minmcs, + ic_printf(ic, "MCS %d: %d%sMbps\n", range->minmcs, minrate/2, ((minrate & 0x1) != 0 ? ".5" : "")); } } @@ -383,22 +382,21 @@ ht_rateprint(struct ieee80211com *ic, en static void ht_announce(struct ieee80211com *ic, enum ieee80211_phymode mode) { - struct ifnet *ifp = ic->ic_ifp; const char *modestr = ieee80211_phymode_name[mode]; - if_printf(ifp, "%s MCS 20MHz\n", modestr); + ic_printf(ic, "%s MCS 20MHz\n", modestr); ht_rateprint(ic, mode, 0); if (ic->ic_htcaps & IEEE80211_HTCAP_SHORTGI20) { - if_printf(ifp, "%s MCS 20MHz SGI\n", modestr); + ic_printf(ic, "%s MCS 20MHz SGI\n", modestr); ht_rateprint(ic, mode, 1); } if (ic->ic_htcaps & IEEE80211_HTCAP_CHWIDTH40) { - if_printf(ifp, "%s MCS 40MHz:\n", modestr); + ic_printf(ic, "%s MCS 40MHz:\n", modestr); ht_rateprint(ic, mode, 2); } if ((ic->ic_htcaps & IEEE80211_HTCAP_CHWIDTH40) && (ic->ic_htcaps & IEEE80211_HTCAP_SHORTGI40)) { - if_printf(ifp, "%s MCS 40MHz SGI:\n", modestr); + ic_printf(ic, "%s MCS 40MHz SGI:\n", modestr); ht_rateprint(ic, mode, 3); } } @@ -406,11 +404,10 @@ ht_announce(struct ieee80211com *ic, enu void ieee80211_ht_announce(struct ieee80211com *ic) { - struct ifnet *ifp = ic->ic_ifp; if (isset(ic->ic_modecaps, IEEE80211_MODE_11NA) || isset(ic->ic_modecaps, IEEE80211_MODE_11NG)) - if_printf(ifp, "%dT%dR\n", ic->ic_txstream, ic->ic_rxstream); + ic_printf(ic, "%dT%dR\n", ic->ic_txstream, ic->ic_rxstream); if (isset(ic->ic_modecaps, IEEE80211_MODE_11NA)) ht_announce(ic, IEEE80211_MODE_11NA); if (isset(ic->ic_modecaps, IEEE80211_MODE_11NG)) Modified: head/sys/net80211/ieee80211_node.c ============================================================================== --- head/sys/net80211/ieee80211_node.c Mon May 25 14:12:50 2015 (r283528) +++ head/sys/net80211/ieee80211_node.c Mon May 25 14:30:44 2015 (r283529) @@ -1908,11 +1908,10 @@ ieee80211_node_table_init(struct ieee802 struct ieee80211_node_table *nt, const char *name, int inact, int keyixmax) { - struct ifnet *ifp = ic->ic_ifp; nt->nt_ic = ic; - IEEE80211_NODE_LOCK_INIT(nt, ifp->if_xname); - IEEE80211_NODE_ITERATE_LOCK_INIT(nt, ifp->if_xname); + IEEE80211_NODE_LOCK_INIT(nt, ic->ic_name); + IEEE80211_NODE_ITERATE_LOCK_INIT(nt, ic->ic_name); TAILQ_INIT(&nt->nt_node); nt->nt_name = name; nt->nt_scangen = 1; @@ -1923,7 +1922,7 @@ ieee80211_node_table_init(struct ieee802 keyixmax * sizeof(struct ieee80211_node *), M_80211_NODE, M_NOWAIT | M_ZERO); if (nt->nt_keyixmap == NULL) - if_printf(ic->ic_ifp, + ic_printf(ic, "Cannot allocate key index map with %u entries\n", keyixmax); } else @@ -2256,8 +2255,8 @@ ieee80211_iterate_nt(struct ieee80211_no TAILQ_FOREACH(ni, &nt->nt_node, ni_list) { if (i >= max_aid) { ret = E2BIG; - if_printf(nt->nt_ic->ic_ifp, - "Node array overflow: max=%u", max_aid); + ic_printf(nt->nt_ic, "Node array overflow: max=%u", + max_aid); break; } ni_arr[i] = ieee80211_ref_node(ni); Modified: head/sys/net80211/ieee80211_proto.c ============================================================================== --- head/sys/net80211/ieee80211_proto.c Mon May 25 14:12:50 2015 (r283528) +++ head/sys/net80211/ieee80211_proto.c Mon May 25 14:30:44 2015 (r283529) @@ -113,9 +113,8 @@ static int null_raw_xmit(struct ieee80211_node *ni, struct mbuf *m, const struct ieee80211_bpf_params *params) { - struct ifnet *ifp = ni->ni_ic->ic_ifp; - if_printf(ifp, "missing ic_raw_xmit callback, drop frame\n"); + ic_printf(ni->ni_ic, "missing ic_raw_xmit callback, drop frame\n"); m_freem(m); return ENETDOWN; } Modified: head/sys/net80211/ieee80211_radiotap.c ============================================================================== --- head/sys/net80211/ieee80211_radiotap.c Mon May 25 14:12:50 2015 (r283528) +++ head/sys/net80211/ieee80211_radiotap.c Mon May 25 14:30:44 2015 (r283529) @@ -80,8 +80,8 @@ ieee80211_radiotap_attachv(struct ieee80 else if (tx_radiotap & B(IEEE80211_RADIOTAP_XCHANNEL)) off = radiotap_offset(th, n_tx_v, IEEE80211_RADIOTAP_XCHANNEL); if (off == -1) { - if_printf(ic->ic_ifp, "%s: no tx channel, radiotap 0x%x\n", - __func__, tx_radiotap); + ic_printf(ic, "%s: no tx channel, radiotap 0x%x\n", __func__, + tx_radiotap); /* NB: we handle this case but data will have no chan spec */ } else ic->ic_txchan = ((uint8_t *) th) + off; @@ -96,8 +96,8 @@ ieee80211_radiotap_attachv(struct ieee80 else if (rx_radiotap & B(IEEE80211_RADIOTAP_XCHANNEL)) off = radiotap_offset(rh, n_rx_v, IEEE80211_RADIOTAP_XCHANNEL); if (off == -1) { - if_printf(ic->ic_ifp, "%s: no rx channel, radiotap 0x%x\n", - __func__, rx_radiotap); + ic_printf(ic, "%s: no rx channel, radiotap 0x%x\n", __func__, + rx_radiotap); /* NB: we handle this case but data will have no chan spec */ } else ic->ic_rxchan = ((uint8_t *) rh) + off; Modified: head/sys/net80211/ieee80211_regdomain.c ============================================================================== --- head/sys/net80211/ieee80211_regdomain.c Mon May 25 14:12:50 2015 (r283528) +++ head/sys/net80211/ieee80211_regdomain.c Mon May 25 14:30:44 2015 (r283529) @@ -304,16 +304,16 @@ ieee80211_alloc_countryie(struct ieee802 aie = malloc(IEEE80211_COUNTRY_MAX_SIZE, M_80211_NODE_IE, M_NOWAIT | M_ZERO); if (aie == NULL) { - if_printf(ic->ic_ifp, - "%s: unable to allocate memory for country ie\n", __func__); + ic_printf(ic, "%s: unable to allocate memory for country ie\n", + __func__); /* XXX stat */ return NULL; } ie = (struct ieee80211_country_ie *) aie->ie_data; ie->ie = IEEE80211_ELEMID_COUNTRY; if (rd->isocc[0] == '\0') { - if_printf(ic->ic_ifp, "no ISO country string for cc %d; " - "using blanks\n", rd->country); + ic_printf(ic, "no ISO country string for cc %d; using blanks\n", + rd->country); ie->cc[0] = ie->cc[1] = ' '; } else { ie->cc[0] = rd->isocc[0]; @@ -350,7 +350,7 @@ ieee80211_alloc_countryie(struct ieee802 if (c->ic_ieee != nextchan || c->ic_maxregpower != frm[-1]) { /* new run */ if (nruns == IEEE80211_COUNTRY_MAX_BANDS) { - if_printf(ic->ic_ifp, "%s: country ie too big, " + ic_printf(ic, "%s: country ie too big, " "runs > max %d, truncating\n", __func__, IEEE80211_COUNTRY_MAX_BANDS); /* XXX stat? fail? */ Modified: head/sys/net80211/ieee80211_var.h ============================================================================== --- head/sys/net80211/ieee80211_var.h Mon May 25 14:12:50 2015 (r283528) +++ head/sys/net80211/ieee80211_var.h Mon May 25 14:30:44 2015 (r283529) @@ -676,6 +676,7 @@ MALLOC_DECLARE(M_80211_VAP); "\20\1LDPC\2CHWIDTH40\5GREENFIELD\6SHORTGI20\7SHORTGI40\10TXSTBC" \ "\21AMPDU\22AMSDU\23HT\24SMPS\25RIFS" +int ic_printf(struct ieee80211com *, const char *, ...) __printflike(2, 3); void ieee80211_ifattach(struct ieee80211com *, const uint8_t macaddr[IEEE80211_ADDR_LEN]); void ieee80211_ifdetach(struct ieee80211com *); From owner-svn-src-all@FreeBSD.ORG Mon May 25 14:54:11 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8B7FC39C; Mon, 25 May 2015 14:54:11 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.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 7989B676; Mon, 25 May 2015 14:54:11 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PEsBbi073620; Mon, 25 May 2015 14:54:11 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PEsBkT073619; Mon, 25 May 2015 14:54:11 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201505251454.t4PEsBkT073619@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Mon, 25 May 2015 14:54:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283530 - head/sys/net80211 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 14:54:11 -0000 Author: glebius Date: Mon May 25 14:54:10 2015 New Revision: 283530 URL: https://svnweb.freebsd.org/changeset/base/283530 Log: Remove unused include. Modified: head/sys/net80211/ieee80211_radiotap.c Modified: head/sys/net80211/ieee80211_radiotap.c ============================================================================== --- head/sys/net80211/ieee80211_radiotap.c Mon May 25 14:30:44 2015 (r283529) +++ head/sys/net80211/ieee80211_radiotap.c Mon May 25 14:54:10 2015 (r283530) @@ -43,7 +43,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include From owner-svn-src-all@FreeBSD.ORG Mon May 25 14:58:07 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B326C540; Mon, 25 May 2015 14:58:07 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 8B3B469C; Mon, 25 May 2015 14:58:07 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (pool-173-54-116-245.nwrknj.fios.verizon.net [173.54.116.245]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 4D0ABB949; Mon, 25 May 2015 10:58:06 -0400 (EDT) From: John Baldwin To: Andrew Turner Cc: Andrew Turner , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283331 - head/sys/arm/arm Date: Mon, 25 May 2015 10:31:08 -0400 Message-ID: <3083392.nvUXfWWOav@ralph.baldwin.cx> User-Agent: KMail/4.14.3 (FreeBSD/10.1-STABLE; KDE/4.14.3; amd64; ; ) In-Reply-To: <20150525132148.3d5adb40@bender.Home> References: <201505232228.t4NMSxs2032365@svn.freebsd.org> <1484557.5zjnsBffEc@ralph.baldwin.cx> <20150525132148.3d5adb40@bender.Home> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Mon, 25 May 2015 10:58:06 -0400 (EDT) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 14:58:07 -0000 On Monday, May 25, 2015 01:21:48 PM Andrew Turner wrote: > On Mon, 25 May 2015 07:23:28 -0400 > John Baldwin wrote: > > > On Saturday, May 23, 2015 10:28:59 PM Andrew Turner wrote: > > > Author: andrew > > > Date: Sat May 23 22:28:59 2015 > > > New Revision: 283331 > > > URL: https://svnweb.freebsd.org/changeset/base/283331 > > > > > > Log: > > > Use the wait-for-event instruction to put the core we have just > > > enabled to sleep while it waits to start scheduling. The boot core > > > can then use the send-event instruction to wake the cores when they > > > should enter the scheduler. > > > > > > MFC after: 1 week > > > > > > Modified: > > > head/sys/arm/arm/mp_machdep.c > > > > > > Modified: head/sys/arm/arm/mp_machdep.c > > > ============================================================================== > > > --- head/sys/arm/arm/mp_machdep.c Sat May 23 21:58:41 > > > 2015 (r283330) +++ head/sys/arm/arm/mp_machdep.c Sat > > > May 23 22:28:59 2015 (r283331) @@ -185,8 +185,11 @@ > > > init_secondary(int cpu) atomic_add_rel_32(&mp_naps, 1); > > > > > > /* Spin until the BSP releases the APs */ > > > - while (!aps_ready) > > > - ; > > > + while (!atomic_load_acq_int(&aps_ready)) { > > > +#if __ARM_ARCH >= 7 > > > + __asm __volatile("wfe"); > > > +#endif > > > + } > > > > I don't know that this atomic load acquire is really changing > > anything here? Since aps_ready is volatile reading it should > > already be "atomic" on each check around the loop. > > It's also adding acquire semantics to ensure we don't > incorrectly reorder memory operations across the call. I think the _rel barrier on the update to mp_naps above probably already does that, but ok. > > > /* Initialize curthread */ > > > KASSERT(PCPU_GET(idlethread) != NULL, ("no idle thread")); > > > @@ -353,6 +356,10 @@ release_aps(void *dummy __unused) > > > arm_unmask_irq(i); > > > } > > > atomic_store_rel_int(&aps_ready, 1); > > > + /* Wake the other threads up */ > > > +#if __ARM_ARCH >= 7 > > > + armv7_sev(); > > > +#endif > > > > So I'm not at all familiar with these instructions or what they do, > > but are the events level triggered? In particular, is there any > > sort of race where the sev might arrive in between the check of > > aps_ready and the wfe on an AP? (For example, if wfe/sev were > > similar to using mwait on x86 for wfe and a memory write for sev, > > x86 would require a call to monitor before doing a check of > > aps_ready to handle the race like so: > > > > while (!aps_ready) { > > monitor(&aps_ready); > > if (!aps_ready) > > mwait(); > > } > > > > The armv7_sev function includes a barrier to ensure any previous memory > operations have been flushed to cache before we send the event. The sev > instruction then sets the event register in every processor. > > The wfe instruction will check this event register and, if it is unset, > it the processor can then enter a low power mode. From my reading of > the documentation, if an event has been signalled before executing the > wfe then the instruction is a nop so will exit the loop as the new > value of aps_ready will be visible on all processors. Mmmm, does that mean then that you can (conceivably) lose the race the other way where it "sees" ap_ready's update before it calls wfe and never calls wfe to "harvest" the event from sev? (In practice I think this is not possible during boot as AP's can't get preempted and there is typically a "long" time between AP's being signalled to start and start_aps being set. However, this would be a concern for use of wfe/sev for other use cases such as for the cpu_idle hook perhaps?) -- John Baldwin From owner-svn-src-all@FreeBSD.ORG Mon May 25 14:58:07 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 53D4553C; Mon, 25 May 2015 14:58:07 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 2D761698; Mon, 25 May 2015 14:58:07 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (pool-173-54-116-245.nwrknj.fios.verizon.net [173.54.116.245]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 8D3DAB93B; Mon, 25 May 2015 10:58:05 -0400 (EDT) From: John Baldwin To: "Alexander V. Chernikov" Cc: "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" Subject: Re: svn commit: r283364 - head/sys/sys Date: Mon, 25 May 2015 10:32:40 -0400 Message-ID: <3116734.QKYigSPBbf@ralph.baldwin.cx> User-Agent: KMail/4.14.3 (FreeBSD/10.1-STABLE; KDE/4.14.3; amd64; ; ) In-Reply-To: <2823711432562229@web7h.yandex.ru> References: <201505241124.t4OBOFe6030452@svn.freebsd.org> <1698551.fhQlKrx2sg@ralph.baldwin.cx> <2823711432562229@web7h.yandex.ru> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="iso-8859-1" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Mon, 25 May 2015 10:58:05 -0400 (EDT) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 14:58:07 -0000 On Monday, May 25, 2015 04:57:09 PM Alexander V. Chernikov wrote: > 25.05.2015, 14:45, "John Baldwin" : > > On Sunday, May 24, 2015 11:24:15 AM Alexander V. Chernikov wrote: > >> Author: melifaro > >> Date: Sun May 24 11:24:14 2015 > >> New Revision: 283364 > >> URL: https://svnweb.freebsd.org/changeset/base/283364 > >> > >> Log: > >> Fix SIOCGI2C structure requirement. > >> > >> In reality, SIOCGI2C ioctl requires struct ifreq as many other > >> ioctls. Doing copyin() on (significantly) larger struct ifstat = sometimes > >> triggered EFAULT. > >> > >> Reported by: Olivier Cochard-Labb=E9 > >> MFC after: 1 week > > > > Note that this breaks the ABI. You may wish to add a SIOCGI2C_OLD = that > In general, yes. Since this was not merged to -stable and I'm mostly = sure that ifconfig > is the only user - this is most likely OK. Oh, the MFC after threw me off, I didn't realize it was never merged to= stable. In that case compat is certainly not needed. > > still uses the larger struct so that old programs continue to work.= OTOH, > > they were only working by accident before. If we expect that no co= de > Well, yes. I'm wondering why this worked at all (copyout tried to get= 8XX bytes instead of 32). Well, if the ifreq was on the stack there was probably space beyond it,= so it was just a buffer overrun (in effect). --=20 John Baldwin From owner-svn-src-all@FreeBSD.ORG Mon May 25 14:58:07 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5DB5953E; Mon, 25 May 2015 14:58:07 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 393B269B; Mon, 25 May 2015 14:58:07 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (pool-173-54-116-245.nwrknj.fios.verizon.net [173.54.116.245]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 01C7EB915; Mon, 25 May 2015 10:58:05 -0400 (EDT) From: John Baldwin To: Chagin Dmitry Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283424 - in head/sys: amd64/linux modules/linux64 Date: Mon, 25 May 2015 10:40:09 -0400 Message-ID: <3590632.VFQBH2fsZP@ralph.baldwin.cx> User-Agent: KMail/4.14.3 (FreeBSD/10.1-STABLE; KDE/4.14.3; amd64; ; ) In-Reply-To: <20150525140421.GA17366@dchagin.static.corbina.net> References: <201505241607.t4OG7C7b073936@svn.freebsd.org> <2938779.SXzlp9bc0j@ralph.baldwin.cx> <20150525140421.GA17366@dchagin.static.corbina.net> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Mon, 25 May 2015 10:58:05 -0400 (EDT) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 14:58:07 -0000 On Monday, May 25, 2015 05:04:21 PM Chagin Dmitry wrote: > On Mon, May 25, 2015 at 07:48:49AM -0400, John Baldwin wrote: > > On Sunday, May 24, 2015 04:07:12 PM Dmitry Chagin wrote: > > > Author: dchagin > > > Date: Sun May 24 16:07:11 2015 > > > New Revision: 283424 > > > URL: https://svnweb.freebsd.org/changeset/base/283424 > > > > > > Log: > > > Add preliminary support for x86-64 Linux binaries. > > > > > > Differential Revision: https://reviews.freebsd.org/D1076 > > > > > > Added: > > > head/sys/amd64/linux/ > > > head/sys/amd64/linux/Makefile (contents, props changed) > > > head/sys/amd64/linux/linux.h (contents, props changed) > > > head/sys/amd64/linux/linux_dummy.c (contents, props changed) > > > head/sys/amd64/linux/linux_genassym.c (contents, props changed) > > > head/sys/amd64/linux/linux_ipc64.h (contents, props changed) > > > head/sys/amd64/linux/linux_locore.s (contents, props changed) > > > head/sys/amd64/linux/linux_machdep.c (contents, props changed) > > > head/sys/amd64/linux/linux_support.s (contents, props changed) > > > head/sys/amd64/linux/linux_sysvec.c (contents, props changed) > > > head/sys/amd64/linux/linux_vdso.lds.s (contents, props changed) > > > head/sys/amd64/linux/syscalls.conf (contents, props changed) > > > head/sys/amd64/linux/syscalls.master (contents, props changed) > > > head/sys/modules/linux64/ > > > head/sys/modules/linux64/Makefile (contents, props changed) > > > > First, I'm really happy to see this land in HEAD! > Thanks! > > > > > Second, __FreeBSD_version bump perhaps? > dim@ bumped, is that enough? That is fine to reuse, but it should probably be explicitly noted in the comments for that version that it is both for clang 3.6.1 and for x86-64 Linux support. I imagine the ports tree will know which versions include your changes. Also, I don't read ports commits since src is enough of a firehouse, so I have a naive question: is the ports tree updated to supply a 64-bit linux-base? Maybe a mail to current@ on how to use a 64-bit base, etc.? Some other related questions are: can we revive print/acroread now and or use a 64-bit flash plugin after these changes? -- John Baldwin From owner-svn-src-all@FreeBSD.ORG Mon May 25 14:59:51 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id CCAFB91B; Mon, 25 May 2015 14:59:51 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id A72CF6B3; Mon, 25 May 2015 14:59:51 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (pool-173-54-116-245.nwrknj.fios.verizon.net [173.54.116.245]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id BEE8BB913; Mon, 25 May 2015 10:59:50 -0400 (EDT) From: John Baldwin To: Chagin Dmitry Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283424 - in head/sys: amd64/linux modules/linux64 Date: Mon, 25 May 2015 10:59:48 -0400 Message-ID: <1795461.Fei61WsQ8j@ralph.baldwin.cx> User-Agent: KMail/4.14.3 (FreeBSD/10.1-STABLE; KDE/4.14.3; amd64; ; ) In-Reply-To: <3590632.VFQBH2fsZP@ralph.baldwin.cx> References: <201505241607.t4OG7C7b073936@svn.freebsd.org> <20150525140421.GA17366@dchagin.static.corbina.net> <3590632.VFQBH2fsZP@ralph.baldwin.cx> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Mon, 25 May 2015 10:59:50 -0400 (EDT) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 14:59:51 -0000 On Monday, May 25, 2015 10:40:09 AM John Baldwin wrote: > On Monday, May 25, 2015 05:04:21 PM Chagin Dmitry wrote: > That is fine to reuse, but it should probably be explicitly noted in the > comments for that version that it is both for clang 3.6.1 and for x86-64 > Linux support. I imagine the ports tree will know which versions include ^^^^ want to > your changes. -- John Baldwin From owner-svn-src-all@FreeBSD.ORG Mon May 25 15:02:40 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0A6A6C65 for ; Mon, 25 May 2015 15:02:40 +0000 (UTC) (envelope-from ian@freebsd.org) Received: from pmta2.delivery6.ore.mailhop.org (pmta2.delivery6.ore.mailhop.org [54.200.129.228]) by mx1.freebsd.org (Postfix) with SMTP id BE589908 for ; Mon, 25 May 2015 15:02:39 +0000 (UTC) (envelope-from ian@freebsd.org) Received: from ilsoft.org (unknown [73.34.117.227]) by outbound2.ore.mailhop.org (Halon Mail Gateway) with ESMTPSA; Mon, 25 May 2015 15:02:51 +0000 (UTC) Received: from revolution.hippie.lan (revolution.hippie.lan [172.22.42.240]) by ilsoft.org (8.14.9/8.14.9) with ESMTP id t4PF2WtV010640; Mon, 25 May 2015 09:02:32 -0600 (MDT) (envelope-from ian@freebsd.org) Message-ID: <1432566152.1200.34.camel@freebsd.org> Subject: Re: svn commit: r283331 - head/sys/arm/arm From: Ian Lepore To: John Baldwin Cc: Andrew Turner , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Date: Mon, 25 May 2015 09:02:32 -0600 In-Reply-To: <1484557.5zjnsBffEc@ralph.baldwin.cx> References: <201505232228.t4NMSxs2032365@svn.freebsd.org> <1484557.5zjnsBffEc@ralph.baldwin.cx> Content-Type: text/plain; charset="us-ascii" X-Mailer: Evolution 3.12.10 FreeBSD GNOME Team Port Mime-Version: 1.0 Content-Transfer-Encoding: 7bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 15:02:40 -0000 On Mon, 2015-05-25 at 07:23 -0400, John Baldwin wrote: > On Saturday, May 23, 2015 10:28:59 PM Andrew Turner wrote: > > Author: andrew > > Date: Sat May 23 22:28:59 2015 > > New Revision: 283331 > > URL: https://svnweb.freebsd.org/changeset/base/283331 > > > > Log: > > Use the wait-for-event instruction to put the core we have just enabled > > to sleep while it waits to start scheduling. The boot core can then use > > the send-event instruction to wake the cores when they should enter the > > scheduler. > > > > MFC after: 1 week > > > > Modified: > > head/sys/arm/arm/mp_machdep.c > > > > Modified: head/sys/arm/arm/mp_machdep.c > > ============================================================================== > > --- head/sys/arm/arm/mp_machdep.c Sat May 23 21:58:41 2015 (r283330) > > +++ head/sys/arm/arm/mp_machdep.c Sat May 23 22:28:59 2015 (r283331) > > @@ -185,8 +185,11 @@ init_secondary(int cpu) > > atomic_add_rel_32(&mp_naps, 1); > > > > /* Spin until the BSP releases the APs */ > > - while (!aps_ready) > > - ; > > + while (!atomic_load_acq_int(&aps_ready)) { > > +#if __ARM_ARCH >= 7 > > + __asm __volatile("wfe"); > > +#endif > > + } > > I don't know that this atomic load acquire is really changing > anything here? Since aps_ready is volatile reading it should > already be "atomic" on each check around the loop. > > > /* Initialize curthread */ > > KASSERT(PCPU_GET(idlethread) != NULL, ("no idle thread")); > > @@ -353,6 +356,10 @@ release_aps(void *dummy __unused) > > arm_unmask_irq(i); > > } > > atomic_store_rel_int(&aps_ready, 1); > > + /* Wake the other threads up */ > > +#if __ARM_ARCH >= 7 > > + armv7_sev(); > > +#endif > > So I'm not at all familiar with these instructions or what they do, > but are the events level triggered? In particular, is there any > sort of race where the sev might arrive in between the check of > aps_ready and the wfe on an AP? (For example, if wfe/sev were > similar to using mwait on x86 for wfe and a memory write for sev, > x86 would require a call to monitor before doing a check of > aps_ready to handle the race like so: > > while (!aps_ready) { > monitor(&aps_ready); > if (!aps_ready) > mwait(); > } > The arm send-event/wait-for-event system includes a 1-bit event latch per core that indicates whether an event arrived since the prior wait. The latch is checked atomically by the hardware as part of going into low-power mode, so you can't get stuck waiting by an event-arrival race, you just need to be prepared to handle spurious wakeups. -- Ian From owner-svn-src-all@FreeBSD.ORG Mon May 25 15:08:39 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 10379DF1; Mon, 25 May 2015 15:08:39 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.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 F2DED93C; Mon, 25 May 2015 15:08:38 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PF8cQZ079580; Mon, 25 May 2015 15:08:38 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PF8cBV079579; Mon, 25 May 2015 15:08:38 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201505251508.t4PF8cBV079579@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Mon, 25 May 2015 15:08:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283531 - head/sys/net80211 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 15:08:39 -0000 Author: glebius Date: Mon May 25 15:08:38 2015 New Revision: 283531 URL: https://svnweb.freebsd.org/changeset/base/283531 Log: Add void * member to struct ieee80211com, so that drivers can obtain their softc without going through the struct ifnet. Sponsored by: Netflix Sponsored by: Nginx, Inc. Modified: head/sys/net80211/ieee80211_var.h Modified: head/sys/net80211/ieee80211_var.h ============================================================================== --- head/sys/net80211/ieee80211_var.h Mon May 25 14:54:10 2015 (r283530) +++ head/sys/net80211/ieee80211_var.h Mon May 25 15:08:38 2015 (r283531) @@ -117,6 +117,7 @@ struct ieee80211_frame; struct ieee80211com { struct ifnet *ic_ifp; /* associated device */ + void *ic_softc; /* driver softc */ const char *ic_name; /* usually device name */ ieee80211_com_lock_t ic_comlock; /* state update lock */ ieee80211_tx_lock_t ic_txlock; /* ic/vap TX lock */ From owner-svn-src-all@FreeBSD.ORG Mon May 25 15:09:17 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D122DF2E; Mon, 25 May 2015 15:09:17 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.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 BC243941; Mon, 25 May 2015 15:09:17 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PF9Hfd079720; Mon, 25 May 2015 15:09:17 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PF9HYl079719; Mon, 25 May 2015 15:09:17 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201505251509.t4PF9HYl079719@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Mon, 25 May 2015 15:09:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283532 - head/sys/dev/iwn X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 15:09:17 -0000 Author: glebius Date: Mon May 25 15:09:17 2015 New Revision: 283532 URL: https://svnweb.freebsd.org/changeset/base/283532 Log: Store softc in ic_softc and access it without using struct ifnet. Sponsored by: Netflix Sponsored by: Nginx, Inc. Modified: head/sys/dev/iwn/if_iwn.c Modified: head/sys/dev/iwn/if_iwn.c ============================================================================== --- head/sys/dev/iwn/if_iwn.c Mon May 25 15:08:38 2015 (r283531) +++ head/sys/dev/iwn/if_iwn.c Mon May 25 15:09:17 2015 (r283532) @@ -556,6 +556,7 @@ iwn_attach(device_t dev) ic = ifp->if_l2com; ic->ic_ifp = ifp; + ic->ic_softc = sc; ic->ic_name = device_get_nameunit(dev); ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ ic->ic_opmode = IEEE80211_M_STA; /* default to BSS mode */ @@ -1316,10 +1317,10 @@ iwn_vap_create(struct ieee80211com *ic, const uint8_t bssid[IEEE80211_ADDR_LEN], const uint8_t mac[IEEE80211_ADDR_LEN]) { + struct iwn_softc *sc = ic->ic_softc; struct iwn_vap *ivp; struct ieee80211vap *vap; uint8_t mac1[IEEE80211_ADDR_LEN]; - struct iwn_softc *sc = ic->ic_ifp->if_softc; if (!TAILQ_EMPTY(&ic->ic_vaps)) /* only one at a time */ return NULL; @@ -2526,7 +2527,7 @@ static int iwn_setregdomain(struct ieee80211com *ic, struct ieee80211_regdomain *rd, int nchan, struct ieee80211_channel chans[]) { - struct iwn_softc *sc = ic->ic_ifp->if_softc; + struct iwn_softc *sc = ic->ic_softc; int i; for (i = 0; i < nchan; i++) { @@ -2798,7 +2799,7 @@ iwn_newstate(struct ieee80211vap *vap, e { struct iwn_vap *ivp = IWN_VAP(vap); struct ieee80211com *ic = vap->iv_ic; - struct iwn_softc *sc = ic->ic_ifp->if_softc; + struct iwn_softc *sc = ic->ic_softc; int error = 0; DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); @@ -5248,7 +5249,7 @@ static int iwn_updateedca(struct ieee80211com *ic) { #define IWN_EXP2(x) ((1 << (x)) - 1) /* CWmin = 2^ECWmin - 1 */ - struct iwn_softc *sc = ic->ic_ifp->if_softc; + struct iwn_softc *sc = ic->ic_softc; struct iwn_edca_params cmd; int aci; @@ -7082,7 +7083,7 @@ iwn_ampdu_rx_start(struct ieee80211_node int baparamset, int batimeout, int baseqctl) { #define MS(_v, _f) (((_v) & _f) >> _f##_S) - struct iwn_softc *sc = ni->ni_ic->ic_ifp->if_softc; + struct iwn_softc *sc = ni->ni_ic->ic_softc; struct iwn_ops *ops = &sc->ops; struct iwn_node *wn = (void *)ni; struct iwn_node_info node; @@ -7118,7 +7119,7 @@ static void iwn_ampdu_rx_stop(struct ieee80211_node *ni, struct ieee80211_rx_ampdu *rap) { struct ieee80211com *ic = ni->ni_ic; - struct iwn_softc *sc = ic->ic_ifp->if_softc; + struct iwn_softc *sc = ic->ic_softc; struct iwn_ops *ops = &sc->ops; struct iwn_node *wn = (void *)ni; struct iwn_node_info node; @@ -7146,7 +7147,7 @@ static int iwn_addba_request(struct ieee80211_node *ni, struct ieee80211_tx_ampdu *tap, int dialogtoken, int baparamset, int batimeout) { - struct iwn_softc *sc = ni->ni_ic->ic_ifp->if_softc; + struct iwn_softc *sc = ni->ni_ic->ic_softc; int qid; DPRINTF(sc, IWN_DEBUG_TRACE, "->Doing %s\n", __func__); @@ -7176,7 +7177,7 @@ static int iwn_addba_response(struct ieee80211_node *ni, struct ieee80211_tx_ampdu *tap, int code, int baparamset, int batimeout) { - struct iwn_softc *sc = ni->ni_ic->ic_ifp->if_softc; + struct iwn_softc *sc = ni->ni_ic->ic_softc; int qid = *(int *)tap->txa_private; uint8_t tid = tap->txa_tid; int ret; @@ -7205,7 +7206,7 @@ iwn_ampdu_tx_start(struct ieee80211com * uint8_t tid) { struct ieee80211_tx_ampdu *tap = &ni->ni_tx_ampdu[tid]; - struct iwn_softc *sc = ni->ni_ic->ic_ifp->if_softc; + struct iwn_softc *sc = ni->ni_ic->ic_softc; struct iwn_ops *ops = &sc->ops; struct iwn_node *wn = (void *)ni; struct iwn_node_info node; @@ -7239,7 +7240,7 @@ iwn_ampdu_tx_start(struct ieee80211com * static void iwn_ampdu_tx_stop(struct ieee80211_node *ni, struct ieee80211_tx_ampdu *tap) { - struct iwn_softc *sc = ni->ni_ic->ic_ifp->if_softc; + struct iwn_softc *sc = ni->ni_ic->ic_softc; struct iwn_ops *ops = &sc->ops; uint8_t tid = tap->txa_tid; int qid; @@ -8774,8 +8775,8 @@ static void iwn_scan_curchan(struct ieee80211_scan_state *ss, unsigned long maxdwell) { struct ieee80211vap *vap = ss->ss_vap; - struct iwn_softc *sc = vap->iv_ic->ic_ifp->if_softc; struct ieee80211com *ic = vap->iv_ic; + struct iwn_softc *sc = ic->ic_softc; int error; IWN_LOCK(sc); From owner-svn-src-all@FreeBSD.ORG Mon May 25 15:09:32 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id F27D6108 for ; Mon, 25 May 2015 15:09:32 +0000 (UTC) (envelope-from ian@freebsd.org) Received: from outbound3.ore.mailhop.org (erouter6.ore.mailhop.org [54.187.213.119]) by mx1.freebsd.org (Postfix) with SMTP id D192794B for ; Mon, 25 May 2015 15:09:32 +0000 (UTC) (envelope-from ian@freebsd.org) Received: from ilsoft.org (unknown [73.34.117.227]) by outbound3.ore.mailhop.org (Halon Mail Gateway) with ESMTPSA; Mon, 25 May 2015 15:09:00 +0000 (UTC) Received: from revolution.hippie.lan (revolution.hippie.lan [172.22.42.240]) by ilsoft.org (8.14.9/8.14.9) with ESMTP id t4PF9QPl010656; Mon, 25 May 2015 09:09:26 -0600 (MDT) (envelope-from ian@freebsd.org) Message-ID: <1432566566.1200.37.camel@freebsd.org> Subject: Re: svn commit: r283331 - head/sys/arm/arm From: Ian Lepore To: John Baldwin Cc: Andrew Turner , Andrew Turner , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Date: Mon, 25 May 2015 09:09:26 -0600 In-Reply-To: <3083392.nvUXfWWOav@ralph.baldwin.cx> References: <201505232228.t4NMSxs2032365@svn.freebsd.org> <1484557.5zjnsBffEc@ralph.baldwin.cx> <20150525132148.3d5adb40@bender.Home> <3083392.nvUXfWWOav@ralph.baldwin.cx> Content-Type: text/plain; charset="us-ascii" X-Mailer: Evolution 3.12.10 FreeBSD GNOME Team Port Mime-Version: 1.0 Content-Transfer-Encoding: 7bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 15:09:33 -0000 On Mon, 2015-05-25 at 10:31 -0400, John Baldwin wrote: > On Monday, May 25, 2015 01:21:48 PM Andrew Turner wrote: > > On Mon, 25 May 2015 07:23:28 -0400 > > John Baldwin wrote: > > > > > On Saturday, May 23, 2015 10:28:59 PM Andrew Turner wrote: > > > > Author: andrew > > > > Date: Sat May 23 22:28:59 2015 > > > > New Revision: 283331 > > > > URL: https://svnweb.freebsd.org/changeset/base/283331 > > > > > > > > Log: > > > > Use the wait-for-event instruction to put the core we have just > > > > enabled to sleep while it waits to start scheduling. The boot core > > > > can then use the send-event instruction to wake the cores when they > > > > should enter the scheduler. > > > > > > > > MFC after: 1 week > > > > > > > > Modified: > > > > head/sys/arm/arm/mp_machdep.c > > > > > > > > Modified: head/sys/arm/arm/mp_machdep.c > > > > ============================================================================== > > > > --- head/sys/arm/arm/mp_machdep.c Sat May 23 21:58:41 > > > > 2015 (r283330) +++ head/sys/arm/arm/mp_machdep.c Sat > > > > May 23 22:28:59 2015 (r283331) @@ -185,8 +185,11 @@ > > > > init_secondary(int cpu) atomic_add_rel_32(&mp_naps, 1); > > > > > > > > /* Spin until the BSP releases the APs */ > > > > - while (!aps_ready) > > > > - ; > > > > + while (!atomic_load_acq_int(&aps_ready)) { > > > > +#if __ARM_ARCH >= 7 > > > > + __asm __volatile("wfe"); > > > > +#endif > > > > + } > > > > > > I don't know that this atomic load acquire is really changing > > > anything here? Since aps_ready is volatile reading it should > > > already be "atomic" on each check around the loop. > > > > It's also adding acquire semantics to ensure we don't > > incorrectly reorder memory operations across the call. > > I think the _rel barrier on the update to mp_naps above probably > already does that, but ok. > > > > > /* Initialize curthread */ > > > > KASSERT(PCPU_GET(idlethread) != NULL, ("no idle thread")); > > > > @@ -353,6 +356,10 @@ release_aps(void *dummy __unused) > > > > arm_unmask_irq(i); > > > > } > > > > atomic_store_rel_int(&aps_ready, 1); > > > > + /* Wake the other threads up */ > > > > +#if __ARM_ARCH >= 7 > > > > + armv7_sev(); > > > > +#endif > > > > > > So I'm not at all familiar with these instructions or what they do, > > > but are the events level triggered? In particular, is there any > > > sort of race where the sev might arrive in between the check of > > > aps_ready and the wfe on an AP? (For example, if wfe/sev were > > > similar to using mwait on x86 for wfe and a memory write for sev, > > > x86 would require a call to monitor before doing a check of > > > aps_ready to handle the race like so: > > > > > > while (!aps_ready) { > > > monitor(&aps_ready); > > > if (!aps_ready) > > > mwait(); > > > } > > > > > > > The armv7_sev function includes a barrier to ensure any previous memory > > operations have been flushed to cache before we send the event. The sev > > instruction then sets the event register in every processor. > > > > The wfe instruction will check this event register and, if it is unset, > > it the processor can then enter a low power mode. From my reading of > > the documentation, if an event has been signalled before executing the > > wfe then the instruction is a nop so will exit the loop as the new > > value of aps_ready will be visible on all processors. > > Mmmm, does that mean then that you can (conceivably) lose the race the other > way where it "sees" ap_ready's update before it calls wfe and never calls > wfe to "harvest" the event from sev? (In practice I think this is not > possible during boot as AP's can't get preempted and there is typically > a "long" time between AP's being signalled to start and start_aps being > set. However, this would be a concern for use of wfe/sev for other use > cases such as for the cpu_idle hook perhaps?) > That's the "you must be prepared to handle spurious wakeups" part of the sev/wfe contract. The point of WFE is only power-saving, so if your loop spins one time due to an unharvested prior event flag still set, that's deemed harmless. (Userland is allowed to issue SEV instructions, which always target all cores, so there's no expectation of 1:1 relation between sending and waiting.) -- Ian From owner-svn-src-all@FreeBSD.ORG Mon May 25 15:12:24 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 92C27280; Mon, 25 May 2015 15:12:24 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.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 81798B3C; Mon, 25 May 2015 15:12:24 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PFCOAD083850; Mon, 25 May 2015 15:12:24 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PFCOQH083849; Mon, 25 May 2015 15:12:24 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201505251512.t4PFCOQH083849@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Mon, 25 May 2015 15:12:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283533 - head/sys/dev/iwn X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 15:12:24 -0000 Author: glebius Date: Mon May 25 15:12:23 2015 New Revision: 283533 URL: https://svnweb.freebsd.org/changeset/base/283533 Log: Use ic_printf() instead of if_printf(). Modified: head/sys/dev/iwn/if_iwn.c Modified: head/sys/dev/iwn/if_iwn.c ============================================================================== --- head/sys/dev/iwn/if_iwn.c Mon May 25 15:09:17 2015 (r283532) +++ head/sys/dev/iwn/if_iwn.c Mon May 25 15:12:23 2015 (r283533) @@ -2536,8 +2536,7 @@ iwn_setregdomain(struct ieee80211com *ic channel = iwn_find_eeprom_channel(sc, c); if (channel == NULL) { - if_printf(ic->ic_ifp, - "%s: invalid channel %u freq %u/0x%x\n", + ic_printf(ic, "%s: invalid channel %u freq %u/0x%x\n", __func__, c->ic_ieee, c->ic_freq, c->ic_flags); return EINVAL; } @@ -4905,7 +4904,7 @@ iwn_watchdog(void *arg) if (sc->sc_tx_timer > 0) { if (--sc->sc_tx_timer == 0) { - if_printf(ifp, "device timeout\n"); + ic_printf(ic, "device timeout\n"); ieee80211_runtask(ic, &sc->sc_reinit_task); return; } From owner-svn-src-all@FreeBSD.ORG Mon May 25 15:13:43 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 94CC53DD; Mon, 25 May 2015 15:13:43 +0000 (UTC) (envelope-from slw@zxy.spb.ru) Received: from zxy.spb.ru (zxy.spb.ru [195.70.199.98]) (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 4DEF5B5A; Mon, 25 May 2015 15:13:43 +0000 (UTC) (envelope-from slw@zxy.spb.ru) Received: from slw by zxy.spb.ru with local (Exim 4.84 (FreeBSD)) (envelope-from ) id 1Ywu4R-0002dU-Pe; Mon, 25 May 2015 18:13:39 +0300 Date: Mon, 25 May 2015 18:13:39 +0300 From: Slawa Olhovchenkov To: John Baldwin Cc: Chagin Dmitry , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r283424 - in head/sys: amd64/linux modules/linux64 Message-ID: <20150525151339.GM1394@zxy.spb.ru> References: <201505241607.t4OG7C7b073936@svn.freebsd.org> <2938779.SXzlp9bc0j@ralph.baldwin.cx> <20150525140421.GA17366@dchagin.static.corbina.net> <3590632.VFQBH2fsZP@ralph.baldwin.cx> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3590632.VFQBH2fsZP@ralph.baldwin.cx> User-Agent: Mutt/1.5.23 (2014-03-12) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: slw@zxy.spb.ru X-SA-Exim-Scanned: No (on zxy.spb.ru); SAEximRunCond expanded to false X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 15:13:43 -0000 On Mon, May 25, 2015 at 10:40:09AM -0400, John Baldwin wrote: > Some other related questions are: can we revive print/acroread now and or > use a 64-bit flash plugin after these changes? I am still use print/acroread. As I know removing print/acroread irrelevant to linuxator. This is will by security reasson. I am don't open suspicious pdf from suspicious source and just ignore this removing. From owner-svn-src-all@FreeBSD.ORG Mon May 25 15:18:33 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5EB09556; Mon, 25 May 2015 15:18:33 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (svn.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 32499B83; Mon, 25 May 2015 15:18:33 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PFIXup084715; Mon, 25 May 2015 15:18:33 GMT (envelope-from avg@FreeBSD.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PFIXTV084714; Mon, 25 May 2015 15:18:33 GMT (envelope-from avg@FreeBSD.org) Message-Id: <201505251518.t4PFIXTV084714@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: avg set sender to avg@FreeBSD.org using -f From: Andriy Gapon Date: Mon, 25 May 2015 15:18:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r283534 - vendor-sys/illumos/dist/uts/common/fs/zfs X-SVN-Group: vendor-sys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 15:18:33 -0000 Author: avg Date: Mon May 25 15:18:32 2015 New Revision: 283534 URL: https://svnweb.freebsd.org/changeset/base/283534 Log: 5515 dataset user hold doesn't reject empty tags Author: Josef 'Jeff' Sipek Reviewed by: Yuri Pankov Reviewed by: Saso Kiselkov Approved by: Matthew Ahrens illumos/illumos-gate@752fd8dabccac68d6d09f82f3bf3561e055e400b Modified: vendor-sys/illumos/dist/uts/common/fs/zfs/zfs_ioctl.c Modified: vendor-sys/illumos/dist/uts/common/fs/zfs/zfs_ioctl.c ============================================================================== --- vendor-sys/illumos/dist/uts/common/fs/zfs/zfs_ioctl.c Mon May 25 15:12:23 2015 (r283533) +++ vendor-sys/illumos/dist/uts/common/fs/zfs/zfs_ioctl.c Mon May 25 15:18:32 2015 (r283534) @@ -22,12 +22,11 @@ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Portions Copyright 2011 Martin Matuska - * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + * Copyright 2015 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2014, Joyent, Inc. All rights reserved. * Copyright (c) 2011, 2014 by Delphix. All rights reserved. * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. * Copyright (c) 2013 Steven Hartland. All rights reserved. - * Copyright (c) 2014, Nexenta Systems, Inc. All rights reserved. */ /* @@ -5110,6 +5109,7 @@ zfs_ioc_smb_acl(zfs_cmd_t *zc) static int zfs_ioc_hold(const char *pool, nvlist_t *args, nvlist_t *errlist) { + nvpair_t *pair; nvlist_t *holds; int cleanup_fd = -1; int error; @@ -5119,6 +5119,19 @@ zfs_ioc_hold(const char *pool, nvlist_t if (error != 0) return (SET_ERROR(EINVAL)); + /* make sure the user didn't pass us any invalid (empty) tags */ + for (pair = nvlist_next_nvpair(holds, NULL); pair != NULL; + pair = nvlist_next_nvpair(holds, pair)) { + char *htag; + + error = nvpair_value_string(pair, &htag); + if (error != 0) + return (SET_ERROR(error)); + + if (strlen(htag) == 0) + return (SET_ERROR(EINVAL)); + } + if (nvlist_lookup_int32(args, "cleanup_fd", &cleanup_fd) == 0) { error = zfs_onexit_fd_hold(cleanup_fd, &minor); if (error != 0) From owner-svn-src-all@FreeBSD.ORG Mon May 25 15:48:23 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 65BE1C96; Mon, 25 May 2015 15:48:23 +0000 (UTC) (envelope-from dchagin@dchagin.static.corbina.net) Received: from heemeyer.club (heemeyer.club [IPv6:2001:19f0:6400:80a1::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "heemeyer.club", Issuer "heemeyer.club" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 3F3432DD; Mon, 25 May 2015 15:48:22 +0000 (UTC) (envelope-from dchagin@dchagin.static.corbina.net) Received: from dchagin.static.corbina.net (gprs-client-83.149.8.109.misp.ru [83.149.8.109] (may be forged)) by heemeyer.club (8.15.1/8.15.1) with ESMTPS id t4PFmI0D021362 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 25 May 2015 15:48:20 GMT (envelope-from dchagin@dchagin.static.corbina.net) X-Authentication-Warning: heemeyer.club: Host gprs-client-83.149.8.109.misp.ru [83.149.8.109] (may be forged) claimed to be dchagin.static.corbina.net Received: from dchagin.static.corbina.net (localhost [127.0.0.1]) by dchagin.static.corbina.net (8.15.1/8.15.1) with ESMTPS id t4PFmHQ8003538 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Mon, 25 May 2015 18:48:17 +0300 (MSK) (envelope-from dchagin@dchagin.static.corbina.net) Received: (from dchagin@localhost) by dchagin.static.corbina.net (8.15.1/8.15.1/Submit) id t4PFmHAU003537; Mon, 25 May 2015 18:48:17 +0300 (MSK) (envelope-from dchagin) Date: Mon, 25 May 2015 18:48:17 +0300 From: Chagin Dmitry To: Konstantin Belousov Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283479 - in head/sys: amd64/amd64 amd64/ia32 arm/arm i386/i386 mips/mips powerpc/powerpc sparc64/sparc64 Message-ID: <20150525154816.GA3524@dchagin.static.corbina.net> References: <201505241756.t4OHu3ot035613@svn.freebsd.org> <20150524182515.GF2499@kib.kiev.ua> <20150524193448.GA2729@dchagin.static.corbina.net> <20150525082302.GJ2499@kib.kiev.ua> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20150525082302.GJ2499@kib.kiev.ua> User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 15:48:23 -0000 On Mon, May 25, 2015 at 11:23:02AM +0300, Konstantin Belousov wrote: > On Sun, May 24, 2015 at 10:34:48PM +0300, Chagin Dmitry wrote: > > On Sun, May 24, 2015 at 09:25:15PM +0300, Konstantin Belousov wrote: > > > On Sun, May 24, 2015 at 05:56:03PM +0000, Dmitry Chagin wrote: > > > > Author: dchagin > > > > Date: Sun May 24 17:56:02 2015 > > > > New Revision: 283479 > > > > URL: https://svnweb.freebsd.org/changeset/base/283479 > > > > > > > > Log: > > > > The kernel sends signals to the processes via ABI specific sv_sendsig method. > > > > Native ABI do not need signal conversion, only emulators may want this. Usually > > > > emulators implements its own sv_sendsig method. For now only ibcs2 emulator does > > > > not have own sv_sendsig implementation and depends on native sendsig() method. > > > > So, remove any extra attempts to convert signal numbers from native sendsig() > > > > methods except from i386 where ibsc2 is living. > > > > > > > > Modified: > > > > head/sys/amd64/amd64/machdep.c > > > > head/sys/amd64/ia32/ia32_signal.c > > > > head/sys/arm/arm/machdep.c > > > > head/sys/i386/i386/machdep.c > > > > head/sys/mips/mips/freebsd32_machdep.c > > > > head/sys/mips/mips/pm_machdep.c > > > > head/sys/powerpc/powerpc/exec_machdep.c > > > > head/sys/sparc64/sparc64/machdep.c > > > > > > > > Modified: head/sys/amd64/amd64/machdep.c > > > > ============================================================================== > > > > --- head/sys/amd64/amd64/machdep.c Sun May 24 17:53:48 2015 (r283478) > > > > +++ head/sys/amd64/amd64/machdep.c Sun May 24 17:56:02 2015 (r283479) > > > > @@ -398,10 +398,6 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, > > > > /* Align to 16 bytes. */ > > > > sfp = (struct sigframe *)((unsigned long)sp & ~0xFul); > > > > > > > > - /* Translate the signal if appropriate. */ > > > > - if (p->p_sysent->sv_sigtbl && sig <= p->p_sysent->sv_sigsize) > > > > - sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)]; > > > > - > > > Does struct sysent still need sv_sigtbl and sv_sigsize members then ? > > ubsc2 share sendsig with i386, so this members still used > You mean, iBCS2 uses current FreeBSD signal frame layout ? no, I mean ibsc2 uses i386 sendsig() method, unfortunatelly I know nothing about ibsc2. > > Indeed, and I do not see how this is not broken. The SysV R3 definitely > did not knew about things like SSE or AVX, and I am sure that the layout > of the signal frame for i386 even in its non-extended part on FreeBSD > mutated without looking back to the iBCS2 requirements. But this is a > different issue. > > That said, could iBCS2 use a wrapper around some internal variant of the > sendsig() which would take both ksi and translated signal number ? The > signal number would be used to set sf_signum. hm, ok, I write it -- Have fun! chd From owner-svn-src-all@FreeBSD.ORG Mon May 25 16:37:47 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 463CA405; Mon, 25 May 2015 16:37:47 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.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 32994C; Mon, 25 May 2015 16:37:47 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PGblDA024619; Mon, 25 May 2015 16:37:47 GMT (envelope-from adrian@FreeBSD.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PGbgoh024594; Mon, 25 May 2015 16:37:42 GMT (envelope-from adrian@FreeBSD.org) Message-Id: <201505251637.t4PGbgoh024594@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: adrian set sender to adrian@FreeBSD.org using -f From: Adrian Chadd Date: Mon, 25 May 2015 16:37:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283535 - in head/sys: dev/ath dev/wi net80211 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 16:37:47 -0000 Author: adrian Date: Mon May 25 16:37:41 2015 New Revision: 283535 URL: https://svnweb.freebsd.org/changeset/base/283535 Log: Begin plumbing ieee80211_rx_stats through the receive path. Smart NICs with firmware (eg wpi, iwn, the new atheros parts, the intel 7260 series, etc) support doing a lot of things in firmware. This includes but isn't limited to things like scanning, sending probe requests and receiving probe responses. However, net80211 doesn't know about any of this - it still drives the whole scan/probe infrastructure itself. In order to move towards suppoting smart NICs, the receive path needs to know about the channel/details for each received packet. In at least the iwn and 7260 firmware (and I believe wpi, but I haven't tried it yet) it will do the scanning, power-save and off-channel buffering for you - all you need to do is handle receiving beacons and probe responses on channels that aren't what you're currently on. However the whole receive path is peppered with ic->ic_curchan and manual scan/powersave handling. The beacon parsing code also checks ic->ic_curchan to determine if the received beacon is on the correct channel or not.[1] So: * add freq/ieee values to ieee80211_rx_stats; * change ieee80211_parse_beacon() to accept the 'current' channel as an argument; * modify the iv_input() and iv_recv_mgmt() methods to include the rx_stats; * add a new method - ieee80211_lookup_channel_rxstats() - that looks up a channel based on the contents of ieee80211_rx_stats; * if it exists, use it in the mgmt path to switch the current channel (which still defaults to ic->ic_curchan) over to something determined by rx_stats. This is enough to kick-start scan offload support in the Intel 7260 driver that Rui/I are working on. It also is a good start for scan offload support for a handful of existing NICs (wpi, iwn, some USB parts) and it'll very likely dramatically improve stability/performance there. It's not the whole thing - notably, we don't need to do powersave, we should not scan all channels, and we should leave probe request sending to the firmware and not do it ourselves. But, this allows for continued development on the above features whilst actually having a somewhat working NIC. TODO: * Finish tidying up how the net80211 input path works. Right now ieee80211_input / ieee80211_input_all act as the top-level that everything feeds into; it should change so the MIMO input routines are those and the legacy routines are phased out. * The band selection should be done by the driver, not by the net80211 layer. * ieee80211_lookup_channel_rxstats() only determines 11b or 11g channels for now - this is enough for scanning, but not 100% true in all cases. If we ever need to handle off-channel scan support for things like static-40MHz or static-80MHz, or turbo-G, or half/quarter rates, then we should extend this. [1] This is a side effect of frequency-hopping and CCK modes - you can receive beacons when you think you're on a different channel. In particular, CCK (which is used by the low 11b rates, eg beacons!) is decodable from adjacent channels - just at a low SNR. FH is a side effect of having the hardware/firmware do the frequency hopping - it may pick up beacons transmitted from other FH networks that are in a different phase of hopping frequencies. Modified: head/sys/dev/ath/if_ath_rx.c head/sys/dev/ath/if_ath_rx.h head/sys/dev/ath/if_athvar.h head/sys/dev/wi/if_wi.c head/sys/dev/wi/if_wivar.h head/sys/net80211/ieee80211.c head/sys/net80211/ieee80211_adhoc.c head/sys/net80211/ieee80211_hostap.c head/sys/net80211/ieee80211_input.c head/sys/net80211/ieee80211_input.h head/sys/net80211/ieee80211_mesh.c head/sys/net80211/ieee80211_monitor.c head/sys/net80211/ieee80211_proto.h head/sys/net80211/ieee80211_sta.c head/sys/net80211/ieee80211_tdma.c head/sys/net80211/ieee80211_tdma.h head/sys/net80211/ieee80211_var.h head/sys/net80211/ieee80211_wds.c Modified: head/sys/dev/ath/if_ath_rx.c ============================================================================== --- head/sys/dev/ath/if_ath_rx.c Mon May 25 15:18:32 2015 (r283534) +++ head/sys/dev/ath/if_ath_rx.c Mon May 25 16:37:41 2015 (r283535) @@ -327,7 +327,7 @@ ath_legacy_rxbuf_init(struct ath_softc * */ void ath_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m, - int subtype, int rssi, int nf) + int subtype, const struct ieee80211_rx_stats *rxs, int rssi, int nf) { struct ieee80211vap *vap = ni->ni_vap; struct ath_softc *sc = vap->iv_ic->ic_ifp->if_softc; @@ -353,7 +353,7 @@ ath_recv_mgmt(struct ieee80211_node *ni, * Call up first so subsequent work can use information * potentially stored in the node (e.g. for ibss merge). */ - ATH_VAP(vap)->av_recv_mgmt(ni, m, subtype, rssi, nf); + ATH_VAP(vap)->av_recv_mgmt(ni, m, subtype, rxs, rssi, nf); switch (subtype) { case IEEE80211_FC0_SUBTYPE_BEACON: /* update rssi statistics for use by the hal */ Modified: head/sys/dev/ath/if_ath_rx.h ============================================================================== --- head/sys/dev/ath/if_ath_rx.h Mon May 25 15:18:32 2015 (r283534) +++ head/sys/dev/ath/if_ath_rx.h Mon May 25 16:37:41 2015 (r283535) @@ -33,7 +33,8 @@ extern u_int32_t ath_calcrxfilter(struct ath_softc *sc); extern void ath_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m, - int subtype, int rssi, int nf); + int subtype, const struct ieee80211_rx_stats *rxs, + int rssi, int nf); #define ath_stoprecv(_sc, _dodelay) \ (_sc)->sc_rx.recv_stop((_sc), (_dodelay)) Modified: head/sys/dev/ath/if_athvar.h ============================================================================== --- head/sys/dev/ath/if_athvar.h Mon May 25 15:18:32 2015 (r283534) +++ head/sys/dev/ath/if_athvar.h Mon May 25 16:37:41 2015 (r283535) @@ -481,7 +481,8 @@ struct ath_vap { struct ath_txq av_mcastq; /* buffered mcast s/w queue */ void (*av_recv_mgmt)(struct ieee80211_node *, - struct mbuf *, int, int, int); + struct mbuf *, int, + const struct ieee80211_rx_stats *, int, int); int (*av_newstate)(struct ieee80211vap *, enum ieee80211_state, int); void (*av_bmiss)(struct ieee80211vap *); Modified: head/sys/dev/wi/if_wi.c ============================================================================== --- head/sys/dev/wi/if_wi.c Mon May 25 15:18:32 2015 (r283534) +++ head/sys/dev/wi/if_wi.c Mon May 25 16:37:41 2015 (r283535) @@ -127,7 +127,8 @@ static int wi_newstate_sta(struct ieee8 static int wi_newstate_hostap(struct ieee80211vap *, enum ieee80211_state, int); static void wi_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m, - int subtype, int rssi, int nf); + int subtype, const struct ieee80211_rx_stats *rxs, + int rssi, int nf); static int wi_reset(struct wi_softc *); static void wi_watchdog(void *); static int wi_ioctl(struct ifnet *, u_long, caddr_t); @@ -804,7 +805,7 @@ wi_scan_end(struct ieee80211com *ic) static void wi_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m, - int subtype, int rssi, int nf) + int subtype, const struct ieee80211_rx_stats *rxs, int rssi, int nf) { struct ieee80211vap *vap = ni->ni_vap; @@ -815,7 +816,7 @@ wi_recv_mgmt(struct ieee80211_node *ni, /* NB: filter frames that trigger state changes */ return; } - WI_VAP(vap)->wv_recv_mgmt(ni, m, subtype, rssi, nf); + WI_VAP(vap)->wv_recv_mgmt(ni, m, subtype, rxs, rssi, nf); } static int Modified: head/sys/dev/wi/if_wivar.h ============================================================================== --- head/sys/dev/wi/if_wivar.h Mon May 25 15:18:32 2015 (r283534) +++ head/sys/dev/wi/if_wivar.h Mon May 25 16:37:41 2015 (r283535) @@ -61,7 +61,7 @@ struct wi_vap { struct ieee80211_beacon_offsets wv_bo; void (*wv_recv_mgmt)(struct ieee80211_node *, struct mbuf *, - int, int, int); + int, const struct ieee80211_rx_stats *rxs, int, int); int (*wv_newstate)(struct ieee80211vap *, enum ieee80211_state, int); }; Modified: head/sys/net80211/ieee80211.c ============================================================================== --- head/sys/net80211/ieee80211.c Mon May 25 15:18:32 2015 (r283534) +++ head/sys/net80211/ieee80211.c Mon May 25 16:37:41 2015 (r283535) @@ -1005,6 +1005,75 @@ ieee80211_find_channel_byieee(struct iee return NULL; } +/* + * Lookup a channel suitable for the given rx status. + * + * This is used to find a channel for a frame (eg beacon, probe + * response) based purely on the received PHY information. + * + * For now it tries to do it based on R_FREQ / R_IEEE. + * This is enough for 11bg and 11a (and thus 11ng/11na) + * but it will not be enough for GSM, PSB channels and the + * like. It also doesn't know about legacy-turbog and + * legacy-turbo modes, which some offload NICs actually + * support in weird ways. + * + * Takes the ic and rxstatus; returns the channel or NULL + * if not found. + * + * XXX TODO: Add support for that when the need arises. + */ +struct ieee80211_channel * +ieee80211_lookup_channel_rxstatus(struct ieee80211vap *vap, + const struct ieee80211_rx_stats *rxs) +{ + struct ieee80211com *ic = vap->iv_ic; + uint32_t flags; + struct ieee80211_channel *c; + + if (rxs == NULL) + return (NULL); + + /* + * Strictly speaking we only use freq for now, + * however later on we may wish to just store + * the ieee for verification. + */ + if ((rxs->r_flags & IEEE80211_R_FREQ) == 0) + return (NULL); + if ((rxs->r_flags & IEEE80211_R_IEEE) == 0) + return (NULL); + + /* + * If the rx status contains a valid ieee/freq, then + * ensure we populate the correct channel information + * in rxchan before passing it up to the scan infrastructure. + * Offload NICs will pass up beacons from all channels + * during background scans. + */ + + /* Determine a band */ + /* XXX should be done by the driver? */ + if (rxs->c_freq < 3000) { + flags = IEEE80211_CHAN_B; + } else { + flags = IEEE80211_CHAN_A; + } + + /* Channel lookup */ + c = ieee80211_find_channel(ic, rxs->c_freq, flags); + + IEEE80211_DPRINTF(vap, IEEE80211_MSG_INPUT, + "%s: freq=%d, ieee=%d, flags=0x%08x; c=%p\n", + __func__, + (int) rxs->c_freq, + (int) rxs->c_ieee, + flags, + c); + + return (c); +} + static void addmedia(struct ifmedia *media, int caps, int addsta, int mode, int mword) { Modified: head/sys/net80211/ieee80211_adhoc.c ============================================================================== --- head/sys/net80211/ieee80211_adhoc.c Mon May 25 15:18:32 2015 (r283534) +++ head/sys/net80211/ieee80211_adhoc.c Mon May 25 16:37:41 2015 (r283535) @@ -70,11 +70,12 @@ __FBSDID("$FreeBSD$"); static void adhoc_vattach(struct ieee80211vap *); static int adhoc_newstate(struct ieee80211vap *, enum ieee80211_state, int); -static int adhoc_input(struct ieee80211_node *, struct mbuf *, int, int); +static int adhoc_input(struct ieee80211_node *, struct mbuf *, + const struct ieee80211_rx_stats *, int, int); static void adhoc_recv_mgmt(struct ieee80211_node *, struct mbuf *, - int subtype, int, int); + int subtype, const struct ieee80211_rx_stats *, int, int); static void ahdemo_recv_mgmt(struct ieee80211_node *, struct mbuf *, - int subtype, int, int); + int subtype, const struct ieee80211_rx_stats *rxs, int, int); static void adhoc_recv_ctl(struct ieee80211_node *, struct mbuf *, int subtype); void @@ -289,7 +290,8 @@ doprint(struct ieee80211vap *vap, int su * by the 802.11 layer. */ static int -adhoc_input(struct ieee80211_node *ni, struct mbuf *m, int rssi, int nf) +adhoc_input(struct ieee80211_node *ni, struct mbuf *m, + const struct ieee80211_rx_stats *rxs, int rssi, int nf) { struct ieee80211vap *vap = ni->ni_vap; struct ieee80211com *ic = ni->ni_ic; @@ -642,7 +644,7 @@ adhoc_input(struct ieee80211_node *ni, s vap->iv_stats.is_rx_mgtdiscard++; /* XXX */ goto out; } - vap->iv_recv_mgmt(ni, m, subtype, rssi, nf); + vap->iv_recv_mgmt(ni, m, subtype, rxs, rssi, nf); goto out; case IEEE80211_FC0_TYPE_CTL: @@ -687,10 +689,11 @@ is11bclient(const uint8_t *rates, const static void adhoc_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m0, - int subtype, int rssi, int nf) + int subtype, const struct ieee80211_rx_stats *rxs, int rssi, int nf) { struct ieee80211vap *vap = ni->ni_vap; struct ieee80211com *ic = ni->ni_ic; + struct ieee80211_channel *rxchan = ic->ic_curchan; struct ieee80211_frame *wh; uint8_t *frm, *efrm, *sfrm; uint8_t *ssid, *rates, *xrates; @@ -705,11 +708,17 @@ adhoc_recv_mgmt(struct ieee80211_node *n case IEEE80211_FC0_SUBTYPE_PROBE_RESP: case IEEE80211_FC0_SUBTYPE_BEACON: { struct ieee80211_scanparams scan; + struct ieee80211_channel *c; /* * We process beacon/probe response * frames to discover neighbors. */ - if (ieee80211_parse_beacon(ni, m0, &scan) != 0) + if (rxs != NULL) { + c = ieee80211_lookup_channel_rxstatus(vap, rxs); + if (c != NULL) + rxchan = c; + } + if (ieee80211_parse_beacon(ni, m0, rxchan, &scan) != 0) return; /* * Count frame now that we know it's to be processed. @@ -735,7 +744,7 @@ adhoc_recv_mgmt(struct ieee80211_node *n ieee80211_probe_curchan(vap, 1); ic->ic_flags_ext &= ~IEEE80211_FEXT_PROBECHAN; } - ieee80211_add_scan(vap, ic->ic_curchan, &scan, wh, + ieee80211_add_scan(vap, rxchan, &scan, wh, subtype, rssi, nf); return; } @@ -911,7 +920,7 @@ adhoc_recv_mgmt(struct ieee80211_node *n static void ahdemo_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m0, - int subtype, int rssi, int nf) + int subtype, const struct ieee80211_rx_stats *rxs, int rssi, int nf) { struct ieee80211vap *vap = ni->ni_vap; struct ieee80211com *ic = ni->ni_ic; @@ -922,7 +931,7 @@ ahdemo_recv_mgmt(struct ieee80211_node * * a site-survey. */ if (ic->ic_flags & IEEE80211_F_SCAN) - adhoc_recv_mgmt(ni, m0, subtype, rssi, nf); + adhoc_recv_mgmt(ni, m0, subtype, rxs, rssi, nf); else { wh = mtod(m0, struct ieee80211_frame *); switch (subtype) { Modified: head/sys/net80211/ieee80211_hostap.c ============================================================================== --- head/sys/net80211/ieee80211_hostap.c Mon May 25 15:18:32 2015 (r283534) +++ head/sys/net80211/ieee80211_hostap.c Mon May 25 16:37:41 2015 (r283535) @@ -68,11 +68,12 @@ __FBSDID("$FreeBSD$"); static void hostap_vattach(struct ieee80211vap *); static int hostap_newstate(struct ieee80211vap *, enum ieee80211_state, int); static int hostap_input(struct ieee80211_node *ni, struct mbuf *m, + const struct ieee80211_rx_stats *, int rssi, int nf); static void hostap_deliver_data(struct ieee80211vap *, struct ieee80211_node *, struct mbuf *); static void hostap_recv_mgmt(struct ieee80211_node *, struct mbuf *, - int subtype, int rssi, int nf); + int subtype, const struct ieee80211_rx_stats *rxs, int rssi, int nf); static void hostap_recv_ctl(struct ieee80211_node *, struct mbuf *, int); void @@ -476,7 +477,8 @@ doprint(struct ieee80211vap *vap, int su * by the 802.11 layer. */ static int -hostap_input(struct ieee80211_node *ni, struct mbuf *m, int rssi, int nf) +hostap_input(struct ieee80211_node *ni, struct mbuf *m, + const struct ieee80211_rx_stats *rxs, int rssi, int nf) { struct ieee80211vap *vap = ni->ni_vap; struct ieee80211com *ic = ni->ni_ic; @@ -893,7 +895,7 @@ hostap_input(struct ieee80211_node *ni, if (ieee80211_radiotap_active_vap(vap)) ieee80211_radiotap_rx(vap, m); need_tap = 0; - vap->iv_recv_mgmt(ni, m, subtype, rssi, nf); + vap->iv_recv_mgmt(ni, m, subtype, rxs, rssi, nf); goto out; case IEEE80211_FC0_TYPE_CTL: @@ -1681,7 +1683,7 @@ is11bclient(const uint8_t *rates, const static void hostap_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m0, - int subtype, int rssi, int nf) + int subtype, const struct ieee80211_rx_stats *rxs, int rssi, int nf) { struct ieee80211vap *vap = ni->ni_vap; struct ieee80211com *ic = ni->ni_ic; @@ -1709,7 +1711,8 @@ hostap_recv_mgmt(struct ieee80211_node * return; } /* NB: accept off-channel frames */ - if (ieee80211_parse_beacon(ni, m0, &scan) &~ IEEE80211_BPARSE_OFFCHAN) + /* XXX TODO: use rxstatus to determine off-channel details */ + if (ieee80211_parse_beacon(ni, m0, ic->ic_curchan, &scan) &~ IEEE80211_BPARSE_OFFCHAN) return; /* * Count frame now that we know it's to be processed. Modified: head/sys/net80211/ieee80211_input.c ============================================================================== --- head/sys/net80211/ieee80211_input.c Mon May 25 15:18:32 2015 (r283534) +++ head/sys/net80211/ieee80211_input.c Mon May 25 16:37:41 2015 (r283535) @@ -88,7 +88,8 @@ ieee80211_input_mimo(struct ieee80211_no { /* XXX should assert IEEE80211_R_NF and IEEE80211_R_RSSI are set */ ieee80211_process_mimo(ni, rx); - return ieee80211_input(ni, m, rx->rssi, rx->nf); + //return ieee80211_input(ni, m, rx->rssi, rx->nf); + return ni->ni_vap->iv_input(ni, m, rx, rx->rssi, rx->nf); } int @@ -468,7 +469,7 @@ ieee80211_alloc_challenge(struct ieee802 */ int ieee80211_parse_beacon(struct ieee80211_node *ni, struct mbuf *m, - struct ieee80211_scanparams *scan) + struct ieee80211_channel *rxchan, struct ieee80211_scanparams *scan) { struct ieee80211vap *vap = ni->ni_vap; struct ieee80211com *ic = ni->ni_ic; @@ -505,7 +506,7 @@ ieee80211_parse_beacon(struct ieee80211_ scan->tstamp = frm; frm += 8; scan->bintval = le16toh(*(uint16_t *)frm); frm += 2; scan->capinfo = le16toh(*(uint16_t *)frm); frm += 2; - scan->bchan = ieee80211_chan2ieee(ic, ic->ic_curchan); + scan->bchan = ieee80211_chan2ieee(ic, rxchan); scan->chan = scan->bchan; scan->ies = frm; scan->ies_len = efrm - frm; @@ -648,7 +649,8 @@ ieee80211_parse_beacon(struct ieee80211_ */ IEEE80211_DISCARD(vap, IEEE80211_MSG_ELEMID | IEEE80211_MSG_INPUT, - wh, NULL, "for off-channel %u", scan->chan); + wh, NULL, "for off-channel %u (bchan=%u)", + scan->chan, scan->bchan); vap->iv_stats.is_rx_chanmismatch++; scan->status |= IEEE80211_BPARSE_OFFCHAN; } Modified: head/sys/net80211/ieee80211_input.h ============================================================================== --- head/sys/net80211/ieee80211_input.h Mon May 25 15:18:32 2015 (r283534) +++ head/sys/net80211/ieee80211_input.h Mon May 25 16:37:41 2015 (r283535) @@ -255,6 +255,7 @@ void ieee80211_send_error(struct ieee802 const uint8_t mac[IEEE80211_ADDR_LEN], int subtype, int arg); int ieee80211_alloc_challenge(struct ieee80211_node *); int ieee80211_parse_beacon(struct ieee80211_node *, struct mbuf *, + struct ieee80211_channel *, struct ieee80211_scanparams *); int ieee80211_parse_action(struct ieee80211_node *, struct mbuf *); #endif /* _NET80211_IEEE80211_INPUT_H_ */ Modified: head/sys/net80211/ieee80211_mesh.c ============================================================================== --- head/sys/net80211/ieee80211_mesh.c Mon May 25 15:18:32 2015 (r283534) +++ head/sys/net80211/ieee80211_mesh.c Mon May 25 16:37:41 2015 (r283535) @@ -85,9 +85,10 @@ static void mesh_transmit_to_gate(struct struct ieee80211_mesh_route *); static void mesh_forward(struct ieee80211vap *, struct mbuf *, const struct ieee80211_meshcntl *); -static int mesh_input(struct ieee80211_node *, struct mbuf *, int, int); +static int mesh_input(struct ieee80211_node *, struct mbuf *, + const struct ieee80211_rx_stats *rxs, int, int); static void mesh_recv_mgmt(struct ieee80211_node *, struct mbuf *, int, - int, int); + const struct ieee80211_rx_stats *rxs, int, int); static void mesh_recv_ctl(struct ieee80211_node *, struct mbuf *, int); static void mesh_peer_timeout_setup(struct ieee80211_node *); static void mesh_peer_timeout_backoff(struct ieee80211_node *); @@ -1532,7 +1533,8 @@ mesh_recv_group_data(struct ieee80211vap } static int -mesh_input(struct ieee80211_node *ni, struct mbuf *m, int rssi, int nf) +mesh_input(struct ieee80211_node *ni, struct mbuf *m, + const struct ieee80211_rx_stats *rxs, int rssi, int nf) { #define HAS_SEQ(type) ((type & 0x4) == 0) #define MC01(mc) ((const struct ieee80211_meshcntl_ae01 *)mc) @@ -1831,7 +1833,7 @@ mesh_input(struct ieee80211_node *ni, st vap->iv_stats.is_rx_mgtdiscard++; /* XXX */ goto out; } - vap->iv_recv_mgmt(ni, m, subtype, rssi, nf); + vap->iv_recv_mgmt(ni, m, subtype, rxs, rssi, nf); goto out; case IEEE80211_FC0_TYPE_CTL: vap->iv_stats.is_rx_ctl++; @@ -1859,11 +1861,12 @@ out: static void mesh_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m0, int subtype, - int rssi, int nf) + const struct ieee80211_rx_stats *rxs, int rssi, int nf) { struct ieee80211vap *vap = ni->ni_vap; struct ieee80211_mesh_state *ms = vap->iv_mesh; struct ieee80211com *ic = ni->ni_ic; + struct ieee80211_channel *rxchan = ic->ic_curchan; struct ieee80211_frame *wh; struct ieee80211_mesh_route *rt; uint8_t *frm, *efrm; @@ -1876,11 +1879,17 @@ mesh_recv_mgmt(struct ieee80211_node *ni case IEEE80211_FC0_SUBTYPE_BEACON: { struct ieee80211_scanparams scan; + struct ieee80211_channel *c; /* * We process beacon/probe response * frames to discover neighbors. */ - if (ieee80211_parse_beacon(ni, m0, &scan) != 0) + if (rxs != NULL) { + c = ieee80211_lookup_channel_rxstatus(vap, rxs); + if (c != NULL) + rxchan = c; + } + if (ieee80211_parse_beacon(ni, m0, rxchan, &scan) != 0) return; /* * Count frame now that we know it's to be processed. @@ -1906,7 +1915,7 @@ mesh_recv_mgmt(struct ieee80211_node *ni ieee80211_probe_curchan(vap, 1); ic->ic_flags_ext &= ~IEEE80211_FEXT_PROBECHAN; } - ieee80211_add_scan(vap, ic->ic_curchan, &scan, wh, + ieee80211_add_scan(vap, rxchan, &scan, wh, subtype, rssi, nf); return; } Modified: head/sys/net80211/ieee80211_monitor.c ============================================================================== --- head/sys/net80211/ieee80211_monitor.c Mon May 25 15:18:32 2015 (r283534) +++ head/sys/net80211/ieee80211_monitor.c Mon May 25 16:37:41 2015 (r283535) @@ -61,7 +61,7 @@ __FBSDID("$FreeBSD$"); static void monitor_vattach(struct ieee80211vap *); static int monitor_newstate(struct ieee80211vap *, enum ieee80211_state, int); static int monitor_input(struct ieee80211_node *ni, struct mbuf *m, - int rssi, int nf); + const struct ieee80211_rx_stats *rxs, int rssi, int nf); void ieee80211_monitor_attach(struct ieee80211com *ic) @@ -125,7 +125,8 @@ monitor_newstate(struct ieee80211vap *va * Process a received frame in monitor mode. */ static int -monitor_input(struct ieee80211_node *ni, struct mbuf *m, int rssi, int nf) +monitor_input(struct ieee80211_node *ni, struct mbuf *m, + const struct ieee80211_rx_stats *rxs, int rssi, int nf) { struct ieee80211vap *vap = ni->ni_vap; struct ifnet *ifp = vap->iv_ifp; Modified: head/sys/net80211/ieee80211_proto.h ============================================================================== --- head/sys/net80211/ieee80211_proto.h Mon May 25 15:18:32 2015 (r283534) +++ head/sys/net80211/ieee80211_proto.h Mon May 25 16:37:41 2015 (r283535) @@ -68,6 +68,9 @@ void ieee80211_syncflag_ext(struct ieee8 #define IEEE80211_R_C_RSSI 0x0000010 /* per-chain RSSI value valid */ #define IEEE80211_R_C_EVM 0x0000020 /* per-chain EVM valid */ #define IEEE80211_R_C_HT40 0x0000040 /* RX'ed packet is 40mhz, pilots 4,5 valid */ +#define IEEE80211_R_FREQ 0x0000080 /* Freq value populated, MHz */ +#define IEEE80211_R_IEEE 0x0000100 /* IEEE value populated */ +#define IEEE80211_R_BAND 0x0000200 /* Frequency band populated */ struct ieee80211_rx_stats { uint32_t r_flags; /* IEEE80211_R_* flags */ @@ -80,10 +83,12 @@ struct ieee80211_rx_stats { uint8_t rssi; /* global RSSI */ uint8_t evm[IEEE80211_MAX_CHAINS][IEEE80211_MAX_EVM_PILOTS]; /* per-chain, per-pilot EVM values */ + uint16_t c_freq; + uint8_t c_ieee; }; #define ieee80211_input(ni, m, rssi, nf) \ - ((ni)->ni_vap->iv_input(ni, m, rssi, nf)) + ((ni)->ni_vap->iv_input(ni, m, NULL, rssi, nf)) int ieee80211_input_all(struct ieee80211com *, struct mbuf *, int, int); int ieee80211_input_mimo(struct ieee80211_node *, struct mbuf *, Modified: head/sys/net80211/ieee80211_sta.c ============================================================================== --- head/sys/net80211/ieee80211_sta.c Mon May 25 15:18:32 2015 (r283534) +++ head/sys/net80211/ieee80211_sta.c Mon May 25 16:37:41 2015 (r283535) @@ -70,9 +70,10 @@ __FBSDID("$FreeBSD$"); static void sta_vattach(struct ieee80211vap *); static void sta_beacon_miss(struct ieee80211vap *); static int sta_newstate(struct ieee80211vap *, enum ieee80211_state, int); -static int sta_input(struct ieee80211_node *, struct mbuf *, int, int); +static int sta_input(struct ieee80211_node *, struct mbuf *, + const struct ieee80211_rx_stats *, int, int); static void sta_recv_mgmt(struct ieee80211_node *, struct mbuf *, - int subtype, int rssi, int nf); + int subtype, const struct ieee80211_rx_stats *, int rssi, int nf); static void sta_recv_ctl(struct ieee80211_node *, struct mbuf *, int subtype); void @@ -525,7 +526,8 @@ doprint(struct ieee80211vap *vap, int su * by the 802.11 layer. */ static int -sta_input(struct ieee80211_node *ni, struct mbuf *m, int rssi, int nf) +sta_input(struct ieee80211_node *ni, struct mbuf *m, + const struct ieee80211_rx_stats *rxs, int rssi, int nf) { struct ieee80211vap *vap = ni->ni_vap; struct ieee80211com *ic = ni->ni_ic; @@ -922,7 +924,7 @@ sta_input(struct ieee80211_node *ni, str wh = mtod(m, struct ieee80211_frame *); wh->i_fc[1] &= ~IEEE80211_FC1_PROTECTED; } - vap->iv_recv_mgmt(ni, m, subtype, rssi, nf); + vap->iv_recv_mgmt(ni, m, subtype, rxs, rssi, nf); goto out; case IEEE80211_FC0_TYPE_CTL: @@ -1285,13 +1287,15 @@ startbgscan(struct ieee80211vap *vap) } static void -sta_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m0, - int subtype, int rssi, int nf) +sta_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m0, int subtype, + const struct ieee80211_rx_stats *rxs, + int rssi, int nf) { #define ISPROBE(_st) ((_st) == IEEE80211_FC0_SUBTYPE_PROBE_RESP) #define ISREASSOC(_st) ((_st) == IEEE80211_FC0_SUBTYPE_REASSOC_RESP) struct ieee80211vap *vap = ni->ni_vap; struct ieee80211com *ic = ni->ni_ic; + struct ieee80211_channel *rxchan = ic->ic_curchan; struct ieee80211_frame *wh; uint8_t *frm, *efrm; uint8_t *rates, *xrates, *wme, *htcap, *htinfo; @@ -1305,6 +1309,7 @@ sta_recv_mgmt(struct ieee80211_node *ni, case IEEE80211_FC0_SUBTYPE_PROBE_RESP: case IEEE80211_FC0_SUBTYPE_BEACON: { struct ieee80211_scanparams scan; + struct ieee80211_channel *c; /* * We process beacon/probe response frames: * o when scanning, or @@ -1316,8 +1321,16 @@ sta_recv_mgmt(struct ieee80211_node *ni, vap->iv_stats.is_rx_mgtdiscard++; return; } + + /* Override RX channel as appropriate */ + if (rxs != NULL) { + c = ieee80211_lookup_channel_rxstatus(vap, rxs); + if (c != NULL) + rxchan = c; + } + /* XXX probe response in sta mode when !scanning? */ - if (ieee80211_parse_beacon(ni, m0, &scan) != 0) { + if (ieee80211_parse_beacon(ni, m0, rxchan, &scan) != 0) { if (! (ic->ic_flags & IEEE80211_F_SCAN)) vap->iv_stats.is_beacon_bad++; return; @@ -1484,7 +1497,7 @@ sta_recv_mgmt(struct ieee80211_node *ni, * our ap. */ if (ic->ic_flags & IEEE80211_F_SCAN) { - ieee80211_add_scan(vap, ic->ic_curchan, + ieee80211_add_scan(vap, rxchan, &scan, wh, subtype, rssi, nf); } else if (contbgscan(vap)) { ieee80211_bg_scan(vap, 0); @@ -1529,7 +1542,7 @@ sta_recv_mgmt(struct ieee80211_node *ni, ieee80211_probe_curchan(vap, 1); ic->ic_flags_ext &= ~IEEE80211_FEXT_PROBECHAN; } - ieee80211_add_scan(vap, ic->ic_curchan, &scan, wh, + ieee80211_add_scan(vap, rxchan, &scan, wh, subtype, rssi, nf); return; } Modified: head/sys/net80211/ieee80211_tdma.c ============================================================================== --- head/sys/net80211/ieee80211_tdma.c Mon May 25 15:18:32 2015 (r283534) +++ head/sys/net80211/ieee80211_tdma.c Mon May 25 16:37:41 2015 (r283535) @@ -115,7 +115,7 @@ static void tdma_vdetach(struct ieee8021 static int tdma_newstate(struct ieee80211vap *, enum ieee80211_state, int); static void tdma_beacon_miss(struct ieee80211vap *vap); static void tdma_recv_mgmt(struct ieee80211_node *, struct mbuf *, - int subtype, int rssi, int nf); + int subtype, const struct ieee80211_rx_stats *rxs, int rssi, int nf); static int tdma_update(struct ieee80211vap *vap, const struct ieee80211_tdma_param *tdma, struct ieee80211_node *ni, int pickslot); @@ -320,7 +320,7 @@ tdma_beacon_miss(struct ieee80211vap *va static void tdma_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m0, - int subtype, int rssi, int nf) + int subtype, const struct ieee80211_rx_stats *rxs, int rssi, int nf) { struct ieee80211com *ic = ni->ni_ic; struct ieee80211vap *vap = ni->ni_vap; @@ -331,7 +331,8 @@ tdma_recv_mgmt(struct ieee80211_node *ni struct ieee80211_frame *wh = mtod(m0, struct ieee80211_frame *); struct ieee80211_scanparams scan; - if (ieee80211_parse_beacon(ni, m0, &scan) != 0) + /* XXX TODO: use rxstatus to determine off-channel beacons */ + if (ieee80211_parse_beacon(ni, m0, ic->ic_curchan, &scan) != 0) return; if (scan.tdma == NULL) { /* @@ -391,7 +392,7 @@ tdma_recv_mgmt(struct ieee80211_node *ni * 2x parsing of the frame but should happen infrequently */ } - ts->tdma_recv_mgmt(ni, m0, subtype, rssi, nf); + ts->tdma_recv_mgmt(ni, m0, subtype, rxs, rssi, nf); } /* Modified: head/sys/net80211/ieee80211_tdma.h ============================================================================== --- head/sys/net80211/ieee80211_tdma.h Mon May 25 15:18:32 2015 (r283534) +++ head/sys/net80211/ieee80211_tdma.h Mon May 25 16:37:41 2015 (r283535) @@ -81,7 +81,8 @@ struct ieee80211_tdma_state { int (*tdma_newstate)(struct ieee80211vap *, enum ieee80211_state, int arg); void (*tdma_recv_mgmt)(struct ieee80211_node *, - struct mbuf *, int, int, int); + struct mbuf *, int, + const struct ieee80211_rx_stats *rxs, int, int); void (*tdma_opdetach)(struct ieee80211vap *); }; Modified: head/sys/net80211/ieee80211_var.h ============================================================================== --- head/sys/net80211/ieee80211_var.h Mon May 25 15:18:32 2015 (r283534) +++ head/sys/net80211/ieee80211_var.h Mon May 25 16:37:41 2015 (r283535) @@ -468,9 +468,13 @@ struct ieee80211vap { void (*iv_opdetach)(struct ieee80211vap *); /* receive processing */ int (*iv_input)(struct ieee80211_node *, - struct mbuf *, int, int); + struct mbuf *, + const struct ieee80211_rx_stats *, + int, int); void (*iv_recv_mgmt)(struct ieee80211_node *, - struct mbuf *, int, int, int); + struct mbuf *, int, + const struct ieee80211_rx_stats *, + int, int); void (*iv_recv_ctl)(struct ieee80211_node *, struct mbuf *, int); void (*iv_deliver_data)(struct ieee80211vap *, @@ -710,6 +714,8 @@ struct ieee80211_channel *ieee80211_find int freq, int flags); struct ieee80211_channel *ieee80211_find_channel_byieee(struct ieee80211com *, int ieee, int flags); +struct ieee80211_channel *ieee80211_lookup_channel_rxstatus(struct ieee80211vap *, + const struct ieee80211_rx_stats *); int ieee80211_setmode(struct ieee80211com *, enum ieee80211_phymode); enum ieee80211_phymode ieee80211_chan2mode(const struct ieee80211_channel *); uint32_t ieee80211_mac_hash(const struct ieee80211com *, Modified: head/sys/net80211/ieee80211_wds.c ============================================================================== --- head/sys/net80211/ieee80211_wds.c Mon May 25 15:18:32 2015 (r283534) +++ head/sys/net80211/ieee80211_wds.c Mon May 25 16:37:41 2015 (r283535) @@ -64,9 +64,10 @@ __FBSDID("$FreeBSD$"); static void wds_vattach(struct ieee80211vap *); static int wds_newstate(struct ieee80211vap *, enum ieee80211_state, int); -static int wds_input(struct ieee80211_node *ni, struct mbuf *m, int, int); -static void wds_recv_mgmt(struct ieee80211_node *, struct mbuf *, - int subtype, int, int); +static int wds_input(struct ieee80211_node *ni, struct mbuf *m, + const struct ieee80211_rx_stats *rxs, int, int); +static void wds_recv_mgmt(struct ieee80211_node *, struct mbuf *, int subtype, + const struct ieee80211_rx_stats *, int, int); void ieee80211_wds_attach(struct ieee80211com *ic) @@ -408,7 +409,8 @@ wds_newstate(struct ieee80211vap *vap, e * by the 802.11 layer. */ static int -wds_input(struct ieee80211_node *ni, struct mbuf *m, int rssi, int nf) +wds_input(struct ieee80211_node *ni, struct mbuf *m, + const struct ieee80211_rx_stats *rxs, int rssi, int nf) { struct ieee80211vap *vap = ni->ni_vap; struct ieee80211com *ic = ni->ni_ic; @@ -718,7 +720,7 @@ wds_input(struct ieee80211_node *ni, str vap->iv_stats.is_rx_mgtdiscard++; /* XXX */ goto out; } - vap->iv_recv_mgmt(ni, m, subtype, rssi, nf); + vap->iv_recv_mgmt(ni, m, subtype, rxs, rssi, nf); goto out; case IEEE80211_FC0_TYPE_CTL: @@ -744,8 +746,8 @@ out: } static void -wds_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m0, - int subtype, int rssi, int nf) +wds_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m0, int subtype, + const struct ieee80211_rx_stats *rxs, int rssi, int nf) { struct ieee80211vap *vap = ni->ni_vap; struct ieee80211com *ic = ni->ni_ic; From owner-svn-src-all@FreeBSD.ORG Mon May 25 16:39:22 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id DB3AA552; Mon, 25 May 2015 16:39:22 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 636CA51; Mon, 25 May 2015 16:39:22 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from tom.home (kostik@localhost [127.0.0.1]) by kib.kiev.ua (8.14.9/8.14.9) with ESMTP id t4PGdFuP008053 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Mon, 25 May 2015 19:39:15 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.9.2 kib.kiev.ua t4PGdFuP008053 Received: (from kostik@localhost) by tom.home (8.14.9/8.14.9/Submit) id t4PGdFhf008052; Mon, 25 May 2015 19:39:15 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Mon, 25 May 2015 19:39:15 +0300 From: Konstantin Belousov To: Chagin Dmitry Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283479 - in head/sys: amd64/amd64 amd64/ia32 arm/arm i386/i386 mips/mips powerpc/powerpc sparc64/sparc64 Message-ID: <20150525163915.GP2499@kib.kiev.ua> References: <201505241756.t4OHu3ot035613@svn.freebsd.org> <20150524182515.GF2499@kib.kiev.ua> <20150524193448.GA2729@dchagin.static.corbina.net> <20150525082302.GJ2499@kib.kiev.ua> <20150525154816.GA3524@dchagin.static.corbina.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20150525154816.GA3524@dchagin.static.corbina.net> User-Agent: Mutt/1.5.23 (2014-03-12) X-Spam-Status: No, score=-2.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=3.4.1 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on tom.home X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 16:39:23 -0000 On Mon, May 25, 2015 at 06:48:17PM +0300, Chagin Dmitry wrote: > On Mon, May 25, 2015 at 11:23:02AM +0300, Konstantin Belousov wrote: > > On Sun, May 24, 2015 at 10:34:48PM +0300, Chagin Dmitry wrote: > > > On Sun, May 24, 2015 at 09:25:15PM +0300, Konstantin Belousov wrote: > > > > On Sun, May 24, 2015 at 05:56:03PM +0000, Dmitry Chagin wrote: > > > > > Author: dchagin > > > > > Date: Sun May 24 17:56:02 2015 > > > > > New Revision: 283479 > > > > > URL: https://svnweb.freebsd.org/changeset/base/283479 > > > > > > > > > > Log: > > > > > The kernel sends signals to the processes via ABI specific sv_sendsig method. > > > > > Native ABI do not need signal conversion, only emulators may want this. Usually > > > > > emulators implements its own sv_sendsig method. For now only ibcs2 emulator does > > > > > not have own sv_sendsig implementation and depends on native sendsig() method. > > > > > So, remove any extra attempts to convert signal numbers from native sendsig() > > > > > methods except from i386 where ibsc2 is living. > > > > > > > > > > Modified: > > > > > head/sys/amd64/amd64/machdep.c > > > > > head/sys/amd64/ia32/ia32_signal.c > > > > > head/sys/arm/arm/machdep.c > > > > > head/sys/i386/i386/machdep.c > > > > > head/sys/mips/mips/freebsd32_machdep.c > > > > > head/sys/mips/mips/pm_machdep.c > > > > > head/sys/powerpc/powerpc/exec_machdep.c > > > > > head/sys/sparc64/sparc64/machdep.c > > > > > > > > > > Modified: head/sys/amd64/amd64/machdep.c > > > > > ============================================================================== > > > > > --- head/sys/amd64/amd64/machdep.c Sun May 24 17:53:48 2015 (r283478) > > > > > +++ head/sys/amd64/amd64/machdep.c Sun May 24 17:56:02 2015 (r283479) > > > > > @@ -398,10 +398,6 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, > > > > > /* Align to 16 bytes. */ > > > > > sfp = (struct sigframe *)((unsigned long)sp & ~0xFul); > > > > > > > > > > - /* Translate the signal if appropriate. */ > > > > > - if (p->p_sysent->sv_sigtbl && sig <= p->p_sysent->sv_sigsize) > > > > > - sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)]; > > > > > - > > > > Does struct sysent still need sv_sigtbl and sv_sigsize members then ? > > > ubsc2 share sendsig with i386, so this members still used > > You mean, iBCS2 uses current FreeBSD signal frame layout ? > no, I mean ibsc2 uses i386 sendsig() method, unfortunatelly What I stated (use of the modern FreeBSD layout for the signal frame when delivered to iBCS2 process) is the consequence of the usage of sendsig(). > I know nothing about ibsc2. > > > > > Indeed, and I do not see how this is not broken. The SysV R3 definitely > > did not knew about things like SSE or AVX, and I am sure that the layout > > of the signal frame for i386 even in its non-extended part on FreeBSD > > mutated without looking back to the iBCS2 requirements. But this is a > > different issue. > > > > That said, could iBCS2 use a wrapper around some internal variant of the > > sendsig() which would take both ksi and translated signal number ? The > > signal number would be used to set sf_signum. > hm, ok, I write it I am not sure this is would be a fix of anything. iBCS2 should grow its own sendsig(), like svr4 and other ABIs. I tried to find an information for the frame layout on signal delivery for iBCS2, but was unable to get anything. Basically, I need sys/signal.h and machine/sigframe.h from SCO OpenServer, or whatever the files were called there. From owner-svn-src-all@FreeBSD.ORG Mon May 25 17:06:53 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 86C5C96C; Mon, 25 May 2015 17:06:53 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.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 5A93495F; Mon, 25 May 2015 17:06:53 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PH6rU6039625; Mon, 25 May 2015 17:06:53 GMT (envelope-from adrian@FreeBSD.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PH6qqA039622; Mon, 25 May 2015 17:06:52 GMT (envelope-from adrian@FreeBSD.org) Message-Id: <201505251706.t4PH6qqA039622@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: adrian set sender to adrian@FreeBSD.org using -f From: Adrian Chadd Date: Mon, 25 May 2015 17:06:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283536 - head/sys/dev/wpi X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 17:06:53 -0000 Author: adrian Date: Mon May 25 17:06:52 2015 New Revision: 283536 URL: https://svnweb.freebsd.org/changeset/base/283536 Log: Update wpi(4) to use the new mgmt RX API. Modified: head/sys/dev/wpi/if_wpi.c head/sys/dev/wpi/if_wpivar.h Modified: head/sys/dev/wpi/if_wpi.c ============================================================================== --- head/sys/dev/wpi/if_wpi.c Mon May 25 16:37:41 2015 (r283535) +++ head/sys/dev/wpi/if_wpi.c Mon May 25 17:06:52 2015 (r283536) @@ -177,8 +177,9 @@ static int wpi_add_node_entry_adhoc(stru static struct ieee80211_node *wpi_node_alloc(struct ieee80211vap *, const uint8_t mac[IEEE80211_ADDR_LEN]); static void wpi_node_free(struct ieee80211_node *); -static void wpi_recv_mgmt(struct ieee80211_node *, struct mbuf *, int, int, - int); +static void wpi_recv_mgmt(struct ieee80211_node *, struct mbuf *, int, + const struct ieee80211_rx_stats *, + int, int); static void wpi_restore_node(void *, struct ieee80211_node *); static void wpi_restore_node_table(struct wpi_softc *, struct wpi_vap *); static int wpi_newstate(struct ieee80211vap *, enum ieee80211_state, int); @@ -1693,15 +1694,16 @@ wpi_check_bss_filter(struct wpi_softc *s } static void -wpi_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m, int subtype, int rssi, - int nf) +wpi_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m, int subtype, + const struct ieee80211_rx_stats *rxs, + int rssi, int nf) { struct ieee80211vap *vap = ni->ni_vap; struct wpi_softc *sc = vap->iv_ic->ic_ifp->if_softc; struct wpi_vap *wvp = WPI_VAP(vap); uint64_t ni_tstamp, rx_tstamp; - wvp->wv_recv_mgmt(ni, m, subtype, rssi, nf); + wvp->wv_recv_mgmt(ni, m, subtype, rxs, rssi, nf); if (vap->iv_opmode == IEEE80211_M_IBSS && vap->iv_state == IEEE80211_S_RUN && Modified: head/sys/dev/wpi/if_wpivar.h ============================================================================== --- head/sys/dev/wpi/if_wpivar.h Mon May 25 16:37:41 2015 (r283535) +++ head/sys/dev/wpi/if_wpivar.h Mon May 25 17:06:52 2015 (r283536) @@ -133,7 +133,9 @@ struct wpi_vap { int (*wv_newstate)(struct ieee80211vap *, enum ieee80211_state, int); void (*wv_recv_mgmt)(struct ieee80211_node *, - struct mbuf *, int, int, int); + struct mbuf *, int, + const struct ieee80211_rx_stats *, + int, int); }; #define WPI_VAP(vap) ((struct wpi_vap *)(vap)) From owner-svn-src-all@FreeBSD.ORG Mon May 25 17:16:23 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3BBDAB8D; Mon, 25 May 2015 17:16:23 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 15034BB8; Mon, 25 May 2015 17:16:23 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (pool-173-54-116-245.nwrknj.fios.verizon.net [173.54.116.245]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 2E82FB926; Mon, 25 May 2015 13:16:21 -0400 (EDT) From: John Baldwin To: Ian Lepore Cc: Andrew Turner , Andrew Turner , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283331 - head/sys/arm/arm Date: Mon, 25 May 2015 12:33:48 -0400 Message-ID: <1756258.Dk05pRRcTN@ralph.baldwin.cx> User-Agent: KMail/4.14.3 (FreeBSD/10.1-STABLE; KDE/4.14.3; amd64; ; ) In-Reply-To: <1432566566.1200.37.camel@freebsd.org> References: <201505232228.t4NMSxs2032365@svn.freebsd.org> <3083392.nvUXfWWOav@ralph.baldwin.cx> <1432566566.1200.37.camel@freebsd.org> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Mon, 25 May 2015 13:16:21 -0400 (EDT) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 17:16:23 -0000 On Monday, May 25, 2015 09:09:26 AM Ian Lepore wrote: > On Mon, 2015-05-25 at 10:31 -0400, John Baldwin wrote: > > Mmmm, does that mean then that you can (conceivably) lose the race the other > > way where it "sees" ap_ready's update before it calls wfe and never calls > > wfe to "harvest" the event from sev? (In practice I think this is not > > possible during boot as AP's can't get preempted and there is typically > > a "long" time between AP's being signalled to start and start_aps being > > set. However, this would be a concern for use of wfe/sev for other use > > cases such as for the cpu_idle hook perhaps?) > > > > That's the "you must be prepared to handle spurious wakeups" part of the > sev/wfe contract. The point of WFE is only power-saving, so if your > loop spins one time due to an unharvested prior event flag still set, > that's deemed harmless. (Userland is allowed to issue SEV instructions, > which always target all cores, so there's no expectation of 1:1 relation > between sending and waiting.) Ok, good to know. Thanks! -- John Baldwin From owner-svn-src-all@FreeBSD.ORG Mon May 25 17:16:23 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 73540B90; Mon, 25 May 2015 17:16:23 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4D06BBB9; Mon, 25 May 2015 17:16:23 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (pool-173-54-116-245.nwrknj.fios.verizon.net [173.54.116.245]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id F3ABFB915; Mon, 25 May 2015 13:16:21 -0400 (EDT) From: John Baldwin To: Slawa Olhovchenkov Cc: Chagin Dmitry , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r283424 - in head/sys: amd64/linux modules/linux64 Date: Mon, 25 May 2015 12:32:41 -0400 Message-ID: <1834151.lrAIDRMoJM@ralph.baldwin.cx> User-Agent: KMail/4.14.3 (FreeBSD/10.1-STABLE; KDE/4.14.3; amd64; ; ) In-Reply-To: <20150525151339.GM1394@zxy.spb.ru> References: <201505241607.t4OG7C7b073936@svn.freebsd.org> <3590632.VFQBH2fsZP@ralph.baldwin.cx> <20150525151339.GM1394@zxy.spb.ru> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Mon, 25 May 2015 13:16:22 -0400 (EDT) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 17:16:23 -0000 On Monday, May 25, 2015 06:13:39 PM Slawa Olhovchenkov wrote: > On Mon, May 25, 2015 at 10:40:09AM -0400, John Baldwin wrote: > > > Some other related questions are: can we revive print/acroread now and or > > use a 64-bit flash plugin after these changes? > > I am still use print/acroread. > As I know removing print/acroread irrelevant to linuxator. > This is will by security reasson. > I am don't open suspicious pdf from suspicious source and just ignore > this removing. I mean more if these updates allow us to update to a newer version of print/acroread that would no longer be vulnerable (if such a thing exists) whether 32- or 64-bit. -- John Baldwin From owner-svn-src-all@FreeBSD.ORG Mon May 25 17:27:37 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 82766F; Mon, 25 May 2015 17:27:37 +0000 (UTC) (envelope-from slw@zxy.spb.ru) Received: from zxy.spb.ru (zxy.spb.ru [195.70.199.98]) (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 3AD34E0D; Mon, 25 May 2015 17:27:37 +0000 (UTC) (envelope-from slw@zxy.spb.ru) Received: from slw by zxy.spb.ru with local (Exim 4.84 (FreeBSD)) (envelope-from ) id 1YwwA2-00051F-R1; Mon, 25 May 2015 20:27:34 +0300 Date: Mon, 25 May 2015 20:27:34 +0300 From: Slawa Olhovchenkov To: John Baldwin Cc: Chagin Dmitry , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r283424 - in head/sys: amd64/linux modules/linux64 Message-ID: <20150525172734.GR21070@zxy.spb.ru> References: <201505241607.t4OG7C7b073936@svn.freebsd.org> <3590632.VFQBH2fsZP@ralph.baldwin.cx> <20150525151339.GM1394@zxy.spb.ru> <1834151.lrAIDRMoJM@ralph.baldwin.cx> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1834151.lrAIDRMoJM@ralph.baldwin.cx> User-Agent: Mutt/1.5.23 (2014-03-12) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: slw@zxy.spb.ru X-SA-Exim-Scanned: No (on zxy.spb.ru); SAEximRunCond expanded to false X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 17:27:37 -0000 On Mon, May 25, 2015 at 12:32:41PM -0400, John Baldwin wrote: > On Monday, May 25, 2015 06:13:39 PM Slawa Olhovchenkov wrote: > > On Mon, May 25, 2015 at 10:40:09AM -0400, John Baldwin wrote: > > > > > Some other related questions are: can we revive print/acroread now and or > > > use a 64-bit flash plugin after these changes? > > > > I am still use print/acroread. > > As I know removing print/acroread irrelevant to linuxator. > > This is will by security reasson. > > I am don't open suspicious pdf from suspicious source and just ignore > > this removing. > > I mean more if these updates allow us to update to a newer version of > print/acroread that would no longer be vulnerable (if such a thing exists) > whether 32- or 64-bit. Currenly I don't see any linux in Acrobat Reader support OS: https://get.adobe.com/reader/otherversions/ From owner-svn-src-all@FreeBSD.ORG Mon May 25 17:59:51 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9DFC75CA; Mon, 25 May 2015 17:59:51 +0000 (UTC) (envelope-from markjdb@gmail.com) Received: from mail-pd0-x235.google.com (mail-pd0-x235.google.com [IPv6:2607:f8b0:400e:c02::235]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 770776D4; Mon, 25 May 2015 17:59:51 +0000 (UTC) (envelope-from markjdb@gmail.com) Received: by pdbqa5 with SMTP id qa5so73506888pdb.0; Mon, 25 May 2015 10:59:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:content-transfer-encoding :in-reply-to:user-agent; bh=FCfJV8AkJPpqJmvhKOv0KTxWYxDJiQ8PfYRgdlL09u0=; b=AltCiiK8Qr2JWNxod1YH35f4YhJ4aJrbtYPP7+a/7hWyl9tG+MnP943UHW7z0w2NGl MJXiJKepxCbUK7/Ntfu7MEOcuTUPhQvTMmIwJyYffKT25HhVd0Ey791xg0lvrB/pX/CR AHwQkRzhg9FUr6Kqb7JKTsAih0HMvkThW5LVuds3yS8VWTe6XzuvpYta1YLExavMUIBO A8ZwvXB8mwbKRnvQoixyUS+0HKcEIV4V+wjLpdVB3suRE0xq+pXmhyqXOUxmieRZoY2D Fyqhm/iANDH/eFXI5z0lk0v/0sueVm80Llh7LuWsunbkuB+ELcUOv6AMiuQgrsnECKdr f8ww== X-Received: by 10.69.17.130 with SMTP id ge2mr41026798pbd.75.1432576790912; Mon, 25 May 2015 10:59:50 -0700 (PDT) Received: from raichu ([104.232.114.184]) by mx.google.com with ESMTPSA id we8sm10738374pac.44.2015.05.25.10.59.49 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 25 May 2015 10:59:49 -0700 (PDT) Sender: Mark Johnston Date: Mon, 25 May 2015 10:59:44 -0700 From: Mark Johnston To: "Bjoern A. Zeeb" Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283511 - head/sys/opencrypto Message-ID: <20150525175944.GA7904@raichu> References: <201505250131.t4P1VdnG076857@svn.freebsd.org> <3830257F-8ACB-432C-AD91-68F7B689DC22@FreeBSD.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <3830257F-8ACB-432C-AD91-68F7B689DC22@FreeBSD.org> User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 17:59:51 -0000 On Mon, May 25, 2015 at 11:26:01AM +0000, Bjoern A. Zeeb wrote: > > > On 25 May 2015, at 01:31 , Mark Johnston wrote: > > > > Author: markj > > Date: Mon May 25 01:31:39 2015 > > New Revision: 283511 > > URL: https://svnweb.freebsd.org/changeset/base/283511 > > > > Log: > > Use the correct number of arguments for the > > opencrypto:deflate:deflate_global:bad DTrace probe, which is defined to > > have > > Once upon a time, these expended to exactly the same if my memory doesn’t > fool me. Thanks for cleaning up though! They still do I think. Some upcoming work on SDT will turn this sort of discrepancy into a compile error though; this was the one occurrence of it that I ran into. -Mark From owner-svn-src-all@FreeBSD.ORG Mon May 25 18:50:33 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 82825E29; Mon, 25 May 2015 18:50:33 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.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 6EBCA2FB; Mon, 25 May 2015 18:50:33 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PIoXh7090613; Mon, 25 May 2015 18:50:33 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PIoQrc090574; Mon, 25 May 2015 18:50:26 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201505251850.t4PIoQrc090574@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Mon, 25 May 2015 18:50:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283537 - in head/sys/dev: ath bwi bwn if_ndis ipw iwi malo mwl ral usb/wlan wi wpi wtap X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 18:50:33 -0000 Author: glebius Date: Mon May 25 18:50:26 2015 New Revision: 283537 URL: https://svnweb.freebsd.org/changeset/base/283537 Log: Set ic_softc in all 802.11 drivers. Not required right now, but will be used quite soon. Sponsored by: Netflix Sponsored by: Nginx, Inc. Modified: head/sys/dev/ath/if_ath.c head/sys/dev/bwi/if_bwi.c head/sys/dev/bwn/if_bwn.c head/sys/dev/if_ndis/if_ndis.c head/sys/dev/ipw/if_ipw.c head/sys/dev/iwi/if_iwi.c head/sys/dev/malo/if_malo.c head/sys/dev/mwl/if_mwl.c head/sys/dev/ral/rt2560.c head/sys/dev/ral/rt2661.c head/sys/dev/ral/rt2860.c head/sys/dev/usb/wlan/if_rsu.c head/sys/dev/usb/wlan/if_rum.c head/sys/dev/usb/wlan/if_run.c head/sys/dev/usb/wlan/if_uath.c head/sys/dev/usb/wlan/if_upgt.c head/sys/dev/usb/wlan/if_ural.c head/sys/dev/usb/wlan/if_urtw.c head/sys/dev/usb/wlan/if_urtwn.c head/sys/dev/usb/wlan/if_zyd.c head/sys/dev/wi/if_wi.c head/sys/dev/wpi/if_wpi.c head/sys/dev/wtap/if_wtap.c Modified: head/sys/dev/ath/if_ath.c ============================================================================== --- head/sys/dev/ath/if_ath.c Mon May 25 17:06:52 2015 (r283536) +++ head/sys/dev/ath/if_ath.c Mon May 25 18:50:26 2015 (r283537) @@ -592,6 +592,7 @@ ath_attach(u_int16_t devid, struct ath_s goto bad; } ic = ifp->if_l2com; + ic->ic_softc = sc; ic->ic_name = device_get_nameunit(sc->sc_dev); /* set these up early for if_printf use */ Modified: head/sys/dev/bwi/if_bwi.c ============================================================================== --- head/sys/dev/bwi/if_bwi.c Mon May 25 17:06:52 2015 (r283536) +++ head/sys/dev/bwi/if_bwi.c Mon May 25 18:50:26 2015 (r283537) @@ -507,6 +507,7 @@ bwi_attach(struct bwi_softc *sc) ieee80211_init_channels(ic, NULL, &bands); ic->ic_ifp = ifp; + ic->ic_softc = sc; ic->ic_name = device_get_nameunit(dev); ic->ic_caps = IEEE80211_C_STA | IEEE80211_C_SHSLOT | Modified: head/sys/dev/bwn/if_bwn.c ============================================================================== --- head/sys/dev/bwn/if_bwn.c Mon May 25 17:06:52 2015 (r283536) +++ head/sys/dev/bwn/if_bwn.c Mon May 25 18:50:26 2015 (r283537) @@ -1058,6 +1058,7 @@ bwn_attach_post(struct bwn_softc *sc) ic = ifp->if_l2com; ic->ic_ifp = ifp; + ic->ic_softc = sc; ic->ic_name = device_get_nameunit(sc->sc_dev); /* XXX not right but it's not used anywhere important */ ic->ic_phytype = IEEE80211_T_OFDM; Modified: head/sys/dev/if_ndis/if_ndis.c ============================================================================== --- head/sys/dev/if_ndis/if_ndis.c Mon May 25 17:06:52 2015 (r283536) +++ head/sys/dev/if_ndis/if_ndis.c Mon May 25 18:50:26 2015 (r283537) @@ -738,6 +738,7 @@ ndis_attach(dev) ifp->if_ioctl = ndis_ioctl_80211; ic->ic_ifp = ifp; + ic->ic_softc = sc; ic->ic_name = device_get_nameunit(dev); ic->ic_opmode = IEEE80211_M_STA; ic->ic_phytype = IEEE80211_T_DS; Modified: head/sys/dev/ipw/if_ipw.c ============================================================================== --- head/sys/dev/ipw/if_ipw.c Mon May 25 17:06:52 2015 (r283536) +++ head/sys/dev/ipw/if_ipw.c Mon May 25 18:50:26 2015 (r283537) @@ -286,6 +286,7 @@ ipw_attach(device_t dev) IFQ_SET_READY(&ifp->if_snd); ic->ic_ifp = ifp; + ic->ic_softc = sc; ic->ic_name = device_get_nameunit(dev); ic->ic_opmode = IEEE80211_M_STA; ic->ic_phytype = IEEE80211_T_DS; Modified: head/sys/dev/iwi/if_iwi.c ============================================================================== --- head/sys/dev/iwi/if_iwi.c Mon May 25 17:06:52 2015 (r283536) +++ head/sys/dev/iwi/if_iwi.c Mon May 25 18:50:26 2015 (r283537) @@ -364,6 +364,7 @@ iwi_attach(device_t dev) IFQ_SET_READY(&ifp->if_snd); ic->ic_ifp = ifp; + ic->ic_softc = sc; ic->ic_name = device_get_nameunit(dev); ic->ic_opmode = IEEE80211_M_STA; ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ Modified: head/sys/dev/malo/if_malo.c ============================================================================== --- head/sys/dev/malo/if_malo.c Mon May 25 17:06:52 2015 (r283536) +++ head/sys/dev/malo/if_malo.c Mon May 25 18:50:26 2015 (r283537) @@ -276,6 +276,7 @@ malo_attach(uint16_t devid, struct malo_ IFQ_SET_READY(&ifp->if_snd); ic->ic_ifp = ifp; + ic->ic_softc = sc; ic->ic_name = device_get_nameunit(sc->malo_dev); /* XXX not right but it's not used anywhere important */ ic->ic_phytype = IEEE80211_T_OFDM; Modified: head/sys/dev/mwl/if_mwl.c ============================================================================== --- head/sys/dev/mwl/if_mwl.c Mon May 25 17:06:52 2015 (r283536) +++ head/sys/dev/mwl/if_mwl.c Mon May 25 18:50:26 2015 (r283537) @@ -413,6 +413,7 @@ mwl_attach(uint16_t devid, struct mwl_so IFQ_SET_READY(&ifp->if_snd); ic->ic_ifp = ifp; + ic->ic_softc = sc; ic->ic_name = device_get_nameunit(sc->sc_dev); /* XXX not right but it's not used anywhere important */ ic->ic_phytype = IEEE80211_T_OFDM; Modified: head/sys/dev/ral/rt2560.c ============================================================================== --- head/sys/dev/ral/rt2560.c Mon May 25 17:06:52 2015 (r283536) +++ head/sys/dev/ral/rt2560.c Mon May 25 18:50:26 2015 (r283537) @@ -273,6 +273,7 @@ rt2560_attach(device_t dev, int id) IFQ_SET_READY(&ifp->if_snd); ic->ic_ifp = ifp; + ic->ic_softc = sc; ic->ic_name = device_get_nameunit(dev); ic->ic_opmode = IEEE80211_M_STA; ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ Modified: head/sys/dev/ral/rt2661.c ============================================================================== --- head/sys/dev/ral/rt2661.c Mon May 25 17:06:52 2015 (r283536) +++ head/sys/dev/ral/rt2661.c Mon May 25 18:50:26 2015 (r283537) @@ -274,6 +274,7 @@ rt2661_attach(device_t dev, int id) IFQ_SET_READY(&ifp->if_snd); ic->ic_ifp = ifp; + ic->ic_softc = sc; ic->ic_name = device_get_nameunit(dev); ic->ic_opmode = IEEE80211_M_STA; ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ Modified: head/sys/dev/ral/rt2860.c ============================================================================== --- head/sys/dev/ral/rt2860.c Mon May 25 17:06:52 2015 (r283536) +++ head/sys/dev/ral/rt2860.c Mon May 25 18:50:26 2015 (r283537) @@ -315,6 +315,7 @@ rt2860_attach(device_t dev, int id) IFQ_SET_READY(&ifp->if_snd); ic->ic_ifp = ifp; + ic->ic_softc = sc; ic->ic_name = device_get_nameunit(dev); ic->ic_opmode = IEEE80211_M_STA; ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ Modified: head/sys/dev/usb/wlan/if_rsu.c ============================================================================== --- head/sys/dev/usb/wlan/if_rsu.c Mon May 25 17:06:52 2015 (r283536) +++ head/sys/dev/usb/wlan/if_rsu.c Mon May 25 18:50:26 2015 (r283537) @@ -355,6 +355,7 @@ rsu_attach(device_t self) ifp->if_hwassist = CSUM_TCP; ic->ic_ifp = ifp; + ic->ic_softc = sc; ic->ic_name = device_get_nameunit(self); ic->ic_phytype = IEEE80211_T_OFDM; /* Not only, but not used. */ ic->ic_opmode = IEEE80211_M_STA; /* Default to BSS mode. */ Modified: head/sys/dev/usb/wlan/if_rum.c ============================================================================== --- head/sys/dev/usb/wlan/if_rum.c Mon May 25 17:06:52 2015 (r283536) +++ head/sys/dev/usb/wlan/if_rum.c Mon May 25 18:50:26 2015 (r283537) @@ -488,6 +488,7 @@ rum_attach(device_t self) IFQ_SET_READY(&ifp->if_snd); ic->ic_ifp = ifp; + ic->ic_softc = sc; ic->ic_name = device_get_nameunit(self); ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ Modified: head/sys/dev/usb/wlan/if_run.c ============================================================================== --- head/sys/dev/usb/wlan/if_run.c Mon May 25 17:06:52 2015 (r283536) +++ head/sys/dev/usb/wlan/if_run.c Mon May 25 18:50:26 2015 (r283537) @@ -776,6 +776,7 @@ run_attach(device_t self) IFQ_SET_READY(&ifp->if_snd); ic->ic_ifp = ifp; + ic->ic_softc = sc; ic->ic_name = device_get_nameunit(self); ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ ic->ic_opmode = IEEE80211_M_STA; /* default to BSS mode */ Modified: head/sys/dev/usb/wlan/if_uath.c ============================================================================== --- head/sys/dev/usb/wlan/if_uath.c Mon May 25 17:06:52 2015 (r283536) +++ head/sys/dev/usb/wlan/if_uath.c Mon May 25 18:50:26 2015 (r283537) @@ -442,6 +442,7 @@ uath_attach(device_t dev) ic = ifp->if_l2com; ic->ic_ifp = ifp; + ic->ic_softc = sc; ic->ic_name = device_get_nameunit(dev); ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ ic->ic_opmode = IEEE80211_M_STA; /* default to BSS mode */ Modified: head/sys/dev/usb/wlan/if_upgt.c ============================================================================== --- head/sys/dev/usb/wlan/if_upgt.c Mon May 25 17:06:52 2015 (r283536) +++ head/sys/dev/usb/wlan/if_upgt.c Mon May 25 18:50:26 2015 (r283537) @@ -341,6 +341,7 @@ upgt_attach(device_t dev) ic = ifp->if_l2com; ic->ic_ifp = ifp; + ic->ic_softc = sc; ic->ic_name = device_get_nameunit(dev); ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ ic->ic_opmode = IEEE80211_M_STA; Modified: head/sys/dev/usb/wlan/if_ural.c ============================================================================== --- head/sys/dev/usb/wlan/if_ural.c Mon May 25 17:06:52 2015 (r283536) +++ head/sys/dev/usb/wlan/if_ural.c Mon May 25 18:50:26 2015 (r283537) @@ -473,6 +473,7 @@ ural_attach(device_t self) IFQ_SET_READY(&ifp->if_snd); ic->ic_ifp = ifp; + ic->ic_softc = sc; ic->ic_name = device_get_nameunit(self); ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ Modified: head/sys/dev/usb/wlan/if_urtw.c ============================================================================== --- head/sys/dev/usb/wlan/if_urtw.c Mon May 25 17:06:52 2015 (r283536) +++ head/sys/dev/usb/wlan/if_urtw.c Mon May 25 18:50:26 2015 (r283537) @@ -881,6 +881,7 @@ urtw_attach(device_t dev) ic = ifp->if_l2com; ic->ic_ifp = ifp; + ic->ic_softc = sc; ic->ic_name = device_get_nameunit(dev); ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ ic->ic_opmode = IEEE80211_M_STA; /* default to BSS mode */ Modified: head/sys/dev/usb/wlan/if_urtwn.c ============================================================================== --- head/sys/dev/usb/wlan/if_urtwn.c Mon May 25 17:06:52 2015 (r283536) +++ head/sys/dev/usb/wlan/if_urtwn.c Mon May 25 18:50:26 2015 (r283537) @@ -442,6 +442,7 @@ urtwn_attach(device_t self) IFQ_SET_READY(&ifp->if_snd); ic->ic_ifp = ifp; + ic->ic_softc = sc; ic->ic_name = device_get_nameunit(self); ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ ic->ic_opmode = IEEE80211_M_STA; /* default to BSS mode */ Modified: head/sys/dev/usb/wlan/if_zyd.c ============================================================================== --- head/sys/dev/usb/wlan/if_zyd.c Mon May 25 17:06:52 2015 (r283536) +++ head/sys/dev/usb/wlan/if_zyd.c Mon May 25 18:50:26 2015 (r283537) @@ -388,6 +388,7 @@ zyd_attach(device_t dev) ic = ifp->if_l2com; ic->ic_ifp = ifp; + ic->ic_softc = sc; ic->ic_name = device_get_nameunit(dev); ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ ic->ic_opmode = IEEE80211_M_STA; Modified: head/sys/dev/wi/if_wi.c ============================================================================== --- head/sys/dev/wi/if_wi.c Mon May 25 17:06:52 2015 (r283536) +++ head/sys/dev/wi/if_wi.c Mon May 25 18:50:26 2015 (r283537) @@ -345,6 +345,7 @@ wi_attach(device_t dev) IFQ_SET_READY(&ifp->if_snd); ic->ic_ifp = ifp; + ic->ic_softc = sc; ic->ic_name = device_get_nameunit(dev); ic->ic_phytype = IEEE80211_T_DS; ic->ic_opmode = IEEE80211_M_STA; Modified: head/sys/dev/wpi/if_wpi.c ============================================================================== --- head/sys/dev/wpi/if_wpi.c Mon May 25 17:06:52 2015 (r283536) +++ head/sys/dev/wpi/if_wpi.c Mon May 25 18:50:26 2015 (r283537) @@ -453,6 +453,7 @@ wpi_attach(device_t dev) ic = ifp->if_l2com; ic->ic_ifp = ifp; + ic->ic_softc = sc; ic->ic_name = device_get_nameunit(dev); ic->ic_phytype = IEEE80211_T_OFDM; /* not only, but not used */ ic->ic_opmode = IEEE80211_M_STA; /* default to BSS mode */ Modified: head/sys/dev/wtap/if_wtap.c ============================================================================== --- head/sys/dev/wtap/if_wtap.c Mon May 25 17:06:52 2015 (r283536) +++ head/sys/dev/wtap/if_wtap.c Mon May 25 18:50:26 2015 (r283537) @@ -797,6 +797,7 @@ wtap_attach(struct wtap_softc *sc, const IFQ_SET_READY(&ifp->if_snd); ic->ic_ifp = ifp; + ic->ic_softc = sc; ic->ic_name = sc->name; ic->ic_phytype = IEEE80211_T_DS; ic->ic_opmode = IEEE80211_M_MBSS; From owner-svn-src-all@FreeBSD.ORG Mon May 25 19:18:23 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id BB30A3D4; Mon, 25 May 2015 19:18:23 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.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 A748EB3E; Mon, 25 May 2015 19:18:23 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PJINJP004596; Mon, 25 May 2015 19:18:23 GMT (envelope-from adrian@FreeBSD.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PJIGnk004558; Mon, 25 May 2015 19:18:16 GMT (envelope-from adrian@FreeBSD.org) Message-Id: <201505251918.t4PJIGnk004558@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: adrian set sender to adrian@FreeBSD.org using -f From: Adrian Chadd Date: Mon, 25 May 2015 19:18:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283538 - head/sys/net80211 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 19:18:23 -0000 Author: adrian Date: Mon May 25 19:18:16 2015 New Revision: 283538 URL: https://svnweb.freebsd.org/changeset/base/283538 Log: Convert malloc/free back to #define's, as part of OS portability work. DragonflyBSD uses the FreeBSD wireless stack and drivers. Their malloc() API is named differently, so they don't have userland/kernel symbol clashes like we do (think libuinet.) So, to make it easier for them and to port to other BSDs/other operating systems, start hiding the malloc specific bits behind defines in ieee80211_freebsd.h. DragonflyBSD can now put these portability defines in their local ieee80211_dragonflybsd.h. This should be a great big no-op for everyone running wifi. TODO: * kill M_WAITOK - some platforms just don't want you to use it * .. and/or handle it returning NULL rather than waiting forever. * MALLOC_DEFINE() ? * Migrate the well-known malloc names (eg M_TEMP) to net80211 namespace defines. Modified: head/sys/net80211/ieee80211_acl.c head/sys/net80211/ieee80211_amrr.c head/sys/net80211/ieee80211_crypto_ccmp.c head/sys/net80211/ieee80211_crypto_tkip.c head/sys/net80211/ieee80211_crypto_wep.c head/sys/net80211/ieee80211_freebsd.c head/sys/net80211/ieee80211_freebsd.h head/sys/net80211/ieee80211_hostap.c head/sys/net80211/ieee80211_hwmp.c head/sys/net80211/ieee80211_input.c head/sys/net80211/ieee80211_ioctl.c head/sys/net80211/ieee80211_mesh.c head/sys/net80211/ieee80211_node.c head/sys/net80211/ieee80211_output.c head/sys/net80211/ieee80211_power.c head/sys/net80211/ieee80211_proto.c head/sys/net80211/ieee80211_ratectl_none.c head/sys/net80211/ieee80211_regdomain.c head/sys/net80211/ieee80211_rssadapt.c head/sys/net80211/ieee80211_scan_sta.c head/sys/net80211/ieee80211_scan_sw.c head/sys/net80211/ieee80211_sta.c head/sys/net80211/ieee80211_superg.c head/sys/net80211/ieee80211_tdma.c Modified: head/sys/net80211/ieee80211_acl.c ============================================================================== --- head/sys/net80211/ieee80211_acl.c Mon May 25 18:50:26 2015 (r283537) +++ head/sys/net80211/ieee80211_acl.c Mon May 25 19:18:16 2015 (r283538) @@ -99,8 +99,8 @@ acl_attach(struct ieee80211vap *vap) { struct aclstate *as; - as = (struct aclstate *) malloc(sizeof(struct aclstate), - M_80211_ACL, M_NOWAIT | M_ZERO); + as = (struct aclstate *) IEEE80211_MALLOC(sizeof(struct aclstate), + M_80211_ACL, IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (as == NULL) return 0; ACL_LOCK_INIT(as, "acl"); @@ -123,7 +123,7 @@ acl_detach(struct ieee80211vap *vap) acl_free_all(vap); vap->iv_as = NULL; ACL_LOCK_DESTROY(as); - free(as, M_80211_ACL); + IEEE80211_FREE(as, M_80211_ACL); } static __inline struct acl * @@ -147,7 +147,7 @@ _acl_free(struct aclstate *as, struct ac TAILQ_REMOVE(&as->as_list, acl, acl_list); LIST_REMOVE(acl, acl_hash); - free(acl, M_80211_ACL); + IEEE80211_FREE(acl, M_80211_ACL); as->as_nacls--; } @@ -175,7 +175,8 @@ acl_add(struct ieee80211vap *vap, const struct acl *acl, *new; int hash; - new = (struct acl *) malloc(sizeof(struct acl), M_80211_ACL, M_NOWAIT | M_ZERO); + new = (struct acl *) IEEE80211_MALLOC(sizeof(struct acl), + M_80211_ACL, IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (new == NULL) { IEEE80211_DPRINTF(vap, IEEE80211_MSG_ACL, "ACL: add %s failed, no memory\n", ether_sprintf(mac)); @@ -188,7 +189,7 @@ acl_add(struct ieee80211vap *vap, const LIST_FOREACH(acl, &as->as_hash[hash], acl_hash) { if (IEEE80211_ADDR_EQ(acl->acl_macaddr, mac)) { ACL_UNLOCK(as); - free(new, M_80211_ACL); + IEEE80211_FREE(new, M_80211_ACL); IEEE80211_DPRINTF(vap, IEEE80211_MSG_ACL, "ACL: add %s failed, already present\n", ether_sprintf(mac)); @@ -302,8 +303,8 @@ acl_getioctl(struct ieee80211vap *vap, s ireq->i_len = space; /* return required space */ return 0; /* NB: must not error */ } - ap = (struct ieee80211req_maclist *) malloc(space, - M_TEMP, M_NOWAIT); + ap = (struct ieee80211req_maclist *) IEEE80211_MALLOC(space, + M_TEMP, IEEE80211_M_NOWAIT); if (ap == NULL) return ENOMEM; i = 0; @@ -318,7 +319,7 @@ acl_getioctl(struct ieee80211vap *vap, s ireq->i_len = space; } else error = copyout(ap, ireq->i_data, ireq->i_len); - free(ap, M_TEMP); + IEEE80211_FREE(ap, M_TEMP); return error; } return EINVAL; Modified: head/sys/net80211/ieee80211_amrr.c ============================================================================== --- head/sys/net80211/ieee80211_amrr.c Mon May 25 18:50:26 2015 (r283537) +++ head/sys/net80211/ieee80211_amrr.c Mon May 25 19:18:16 2015 (r283538) @@ -113,8 +113,8 @@ amrr_init(struct ieee80211vap *vap) KASSERT(vap->iv_rs == NULL, ("%s called multiple times", __func__)); - amrr = vap->iv_rs = malloc(sizeof(struct ieee80211_amrr), - M_80211_RATECTL, M_NOWAIT|M_ZERO); + amrr = vap->iv_rs = IEEE80211_MALLOC(sizeof(struct ieee80211_amrr), + M_80211_RATECTL, IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (amrr == NULL) { if_printf(vap->iv_ifp, "couldn't alloc ratectl structure\n"); return; @@ -128,7 +128,7 @@ amrr_init(struct ieee80211vap *vap) static void amrr_deinit(struct ieee80211vap *vap) { - free(vap->iv_rs, M_80211_RATECTL); + IEEE80211_FREE(vap->iv_rs, M_80211_RATECTL); } /* @@ -160,8 +160,8 @@ amrr_node_init(struct ieee80211_node *ni uint8_t rate; if (ni->ni_rctls == NULL) { - ni->ni_rctls = amn = malloc(sizeof(struct ieee80211_amrr_node), - M_80211_RATECTL, M_NOWAIT|M_ZERO); + ni->ni_rctls = amn = IEEE80211_MALLOC(sizeof(struct ieee80211_amrr_node), + M_80211_RATECTL, IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (amn == NULL) { if_printf(vap->iv_ifp, "couldn't alloc per-node ratectl " "structure\n"); @@ -225,7 +225,7 @@ amrr_node_init(struct ieee80211_node *ni static void amrr_node_deinit(struct ieee80211_node *ni) { - free(ni->ni_rctls, M_80211_RATECTL); + IEEE80211_FREE(ni->ni_rctls, M_80211_RATECTL); } static int Modified: head/sys/net80211/ieee80211_crypto_ccmp.c ============================================================================== --- head/sys/net80211/ieee80211_crypto_ccmp.c Mon May 25 18:50:26 2015 (r283537) +++ head/sys/net80211/ieee80211_crypto_ccmp.c Mon May 25 19:18:16 2015 (r283538) @@ -96,8 +96,8 @@ ccmp_attach(struct ieee80211vap *vap, st { struct ccmp_ctx *ctx; - ctx = (struct ccmp_ctx *) malloc(sizeof(struct ccmp_ctx), - M_80211_CRYPTO, M_NOWAIT | M_ZERO); + ctx = (struct ccmp_ctx *) IEEE80211_MALLOC(sizeof(struct ccmp_ctx), + M_80211_CRYPTO, IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (ctx == NULL) { vap->iv_stats.is_crypto_nomem++; return NULL; @@ -113,7 +113,7 @@ ccmp_detach(struct ieee80211_key *k) { struct ccmp_ctx *ctx = k->wk_private; - free(ctx, M_80211_CRYPTO); + IEEE80211_FREE(ctx, M_80211_CRYPTO); KASSERT(nrefs > 0, ("imbalanced attach/detach")); nrefs--; /* NB: we assume caller locking */ } Modified: head/sys/net80211/ieee80211_crypto_tkip.c ============================================================================== --- head/sys/net80211/ieee80211_crypto_tkip.c Mon May 25 18:50:26 2015 (r283537) +++ head/sys/net80211/ieee80211_crypto_tkip.c Mon May 25 19:18:16 2015 (r283538) @@ -109,8 +109,8 @@ tkip_attach(struct ieee80211vap *vap, st { struct tkip_ctx *ctx; - ctx = (struct tkip_ctx *) malloc(sizeof(struct tkip_ctx), - M_80211_CRYPTO, M_NOWAIT | M_ZERO); + ctx = (struct tkip_ctx *) IEEE80211_MALLOC(sizeof(struct tkip_ctx), + M_80211_CRYPTO, IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (ctx == NULL) { vap->iv_stats.is_crypto_nomem++; return NULL; @@ -126,7 +126,7 @@ tkip_detach(struct ieee80211_key *k) { struct tkip_ctx *ctx = k->wk_private; - free(ctx, M_80211_CRYPTO); + IEEE80211_FREE(ctx, M_80211_CRYPTO); KASSERT(nrefs > 0, ("imbalanced attach/detach")); nrefs--; /* NB: we assume caller locking */ } Modified: head/sys/net80211/ieee80211_crypto_wep.c ============================================================================== --- head/sys/net80211/ieee80211_crypto_wep.c Mon May 25 18:50:26 2015 (r283537) +++ head/sys/net80211/ieee80211_crypto_wep.c Mon May 25 19:18:16 2015 (r283538) @@ -87,8 +87,8 @@ wep_attach(struct ieee80211vap *vap, str { struct wep_ctx *ctx; - ctx = (struct wep_ctx *) malloc(sizeof(struct wep_ctx), - M_80211_CRYPTO, M_NOWAIT | M_ZERO); + ctx = (struct wep_ctx *) IEEE80211_MALLOC(sizeof(struct wep_ctx), + M_80211_CRYPTO, IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (ctx == NULL) { vap->iv_stats.is_crypto_nomem++; return NULL; @@ -106,7 +106,7 @@ wep_detach(struct ieee80211_key *k) { struct wep_ctx *ctx = k->wk_private; - free(ctx, M_80211_CRYPTO); + IEEE80211_FREE(ctx, M_80211_CRYPTO); KASSERT(nrefs > 0, ("imbalanced attach/detach")); nrefs--; /* NB: we assume caller locking */ } Modified: head/sys/net80211/ieee80211_freebsd.c ============================================================================== --- head/sys/net80211/ieee80211_freebsd.c Mon May 25 18:50:26 2015 (r283537) +++ head/sys/net80211/ieee80211_freebsd.c Mon May 25 19:18:16 2015 (r283538) @@ -82,7 +82,8 @@ wlan_alloc(u_char type, struct ifnet *if { struct ieee80211com *ic; - ic = malloc(sizeof(struct ieee80211com), M_80211_COM, M_WAITOK|M_ZERO); + ic = IEEE80211_MALLOC(sizeof(struct ieee80211com), M_80211_COM, + IEEE80211_M_WAITOK | IEEE80211_M_ZERO); ic->ic_ifp = ifp; return (ic); @@ -91,7 +92,7 @@ wlan_alloc(u_char type, struct ifnet *if static void wlan_free(void *ic, u_char type) { - free(ic, M_80211_COM); + IEEE80211_FREE(ic, M_80211_COM); } static int @@ -244,8 +245,8 @@ ieee80211_sysctl_vattach(struct ieee8021 struct sysctl_oid *oid; char num[14]; /* sufficient for 32 bits */ - ctx = (struct sysctl_ctx_list *) malloc(sizeof(struct sysctl_ctx_list), - M_DEVBUF, M_NOWAIT | M_ZERO); + ctx = (struct sysctl_ctx_list *) IEEE80211_MALLOC(sizeof(struct sysctl_ctx_list), + M_DEVBUF, IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (ctx == NULL) { if_printf(ifp, "%s: cannot allocate sysctl context!\n", __func__); @@ -320,7 +321,7 @@ ieee80211_sysctl_vdetach(struct ieee8021 if (vap->iv_sysctl != NULL) { sysctl_ctx_free(vap->iv_sysctl); - free(vap->iv_sysctl, M_DEVBUF); + IEEE80211_FREE(vap->iv_sysctl, M_DEVBUF); vap->iv_sysctl = NULL; } } Modified: head/sys/net80211/ieee80211_freebsd.h ============================================================================== --- head/sys/net80211/ieee80211_freebsd.h Mon May 25 18:50:26 2015 (r283537) +++ head/sys/net80211/ieee80211_freebsd.h Mon May 25 19:18:16 2015 (r283538) @@ -596,4 +596,19 @@ struct ieee80211_bpf_params { uint8_t ibp_try3; /* series 4 try count */ uint8_t ibp_rate3; /* series 4 IEEE tx rate */ }; + +/* + * Malloc API. Other BSD operating systems have slightly + * different malloc/free namings (eg DragonflyBSD.) + */ +#define IEEE80211_MALLOC malloc +#define IEEE80211_FREE free + +/* XXX TODO: get rid of WAITOK, fix all the users of it? */ +#define IEEE80211_M_NOWAIT M_NOWAIT +#define IEEE80211_M_WAITOK M_WAITOK +#define IEEE80211_M_ZERO M_ZERO + +/* XXX TODO: the type fields */ + #endif /* _NET80211_IEEE80211_FREEBSD_H_ */ Modified: head/sys/net80211/ieee80211_hostap.c ============================================================================== --- head/sys/net80211/ieee80211_hostap.c Mon May 25 18:50:26 2015 (r283537) +++ head/sys/net80211/ieee80211_hostap.c Mon May 25 19:18:16 2015 (r283538) @@ -939,7 +939,7 @@ hostap_auth_open(struct ieee80211_node * * open auth is attempted. */ if (ni->ni_challenge != NULL) { - free(ni->ni_challenge, M_80211_NODE); + IEEE80211_FREE(ni->ni_challenge, M_80211_NODE); ni->ni_challenge = NULL; } /* XXX hack to workaround calling convention */ @@ -2042,7 +2042,7 @@ hostap_recv_mgmt(struct ieee80211_node * return; /* discard challenge after association */ if (ni->ni_challenge != NULL) { - free(ni->ni_challenge, M_80211_NODE); + IEEE80211_FREE(ni->ni_challenge, M_80211_NODE); ni->ni_challenge = NULL; } /* NB: 802.11 spec says to ignore station's privacy bit */ Modified: head/sys/net80211/ieee80211_hwmp.c ============================================================================== --- head/sys/net80211/ieee80211_hwmp.c Mon May 25 18:50:26 2015 (r283537) +++ head/sys/net80211/ieee80211_hwmp.c Mon May 25 19:18:16 2015 (r283538) @@ -268,8 +268,8 @@ hwmp_vattach(struct ieee80211vap *vap) KASSERT(vap->iv_opmode == IEEE80211_M_MBSS, ("not a mesh vap, opmode %d", vap->iv_opmode)); - hs = malloc(sizeof(struct ieee80211_hwmp_state), M_80211_VAP, - M_NOWAIT | M_ZERO); + hs = IEEE80211_MALLOC(sizeof(struct ieee80211_hwmp_state), M_80211_VAP, + IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (hs == NULL) { printf("%s: couldn't alloc HWMP state\n", __func__); return; @@ -285,7 +285,7 @@ hwmp_vdetach(struct ieee80211vap *vap) struct ieee80211_hwmp_state *hs = vap->iv_hwmp; callout_drain(&hs->hs_roottimer); - free(vap->iv_hwmp, M_80211_VAP); + IEEE80211_FREE(vap->iv_hwmp, M_80211_VAP); vap->iv_hwmp = NULL; } @@ -429,9 +429,10 @@ hwmp_recv_action_meshpath(struct ieee802 vap->iv_stats.is_rx_mgtdiscard++; break; } - preq = malloc(sizeof(*preq) + + preq = IEEE80211_MALLOC(sizeof(*preq) + (ndest - 1) * sizeof(*preq->preq_targets), - M_80211_MESH_PREQ, M_NOWAIT | M_ZERO); + M_80211_MESH_PREQ, + IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); KASSERT(preq != NULL, ("preq == NULL")); preq->preq_ie = *iefrm_t++; @@ -464,7 +465,7 @@ hwmp_recv_action_meshpath(struct ieee802 } hwmp_recv_preq(vap, ni, wh, preq); - free(preq, M_80211_MESH_PREQ); + IEEE80211_FREE(preq, M_80211_MESH_PREQ); found++; break; } @@ -476,8 +477,9 @@ hwmp_recv_action_meshpath(struct ieee802 vap->iv_stats.is_rx_mgtdiscard++; break; } - prep = malloc(sizeof(*prep), - M_80211_MESH_PREP, M_NOWAIT | M_ZERO); + prep = IEEE80211_MALLOC(sizeof(*prep), + M_80211_MESH_PREP, + IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); KASSERT(prep != NULL, ("prep == NULL")); prep->prep_ie = *iefrm_t++; @@ -501,7 +503,7 @@ hwmp_recv_action_meshpath(struct ieee802 prep->prep_origseq = LE_READ_4(iefrm_t); iefrm_t += 4; hwmp_recv_prep(vap, ni, wh, prep); - free(prep, M_80211_MESH_PREP); + IEEE80211_FREE(prep, M_80211_MESH_PREP); found++; break; } @@ -515,9 +517,10 @@ hwmp_recv_action_meshpath(struct ieee802 vap->iv_stats.is_rx_mgtdiscard++; break; } - perr = malloc(sizeof(*perr) + + perr = IEEE80211_MALLOC(sizeof(*perr) + (ndest - 1) * sizeof(*perr->perr_dests), - M_80211_MESH_PERR, M_NOWAIT | M_ZERO); + M_80211_MESH_PERR, + IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); KASSERT(perr != NULL, ("perr == NULL")); perr->perr_ie = *iefrm_t++; @@ -546,7 +549,7 @@ hwmp_recv_action_meshpath(struct ieee802 } hwmp_recv_perr(vap, ni, wh, perr); - free(perr, M_80211_MESH_PERR); + IEEE80211_FREE(perr, M_80211_MESH_PERR); found++; break; } @@ -1556,8 +1559,8 @@ hwmp_recv_perr(struct ieee80211vap *vap, */ if (ms->ms_flags & IEEE80211_MESHFLAGS_FWD) { forward = 1; - pperr = malloc(sizeof(*perr) + 31*sizeof(*perr->perr_dests), - M_80211_MESH_PERR, M_NOWAIT); /* XXX: magic number, 32 err dests */ + pperr = IEEE80211_MALLOC(sizeof(*perr) + 31*sizeof(*perr->perr_dests), + M_80211_MESH_PERR, IEEE80211_M_NOWAIT); /* XXX: magic number, 32 err dests */ } /* @@ -1632,7 +1635,7 @@ hwmp_recv_perr(struct ieee80211vap *vap, } done: if (pperr != NULL) - free(pperr, M_80211_MESH_PERR); + IEEE80211_FREE(pperr, M_80211_MESH_PERR); } #undef PERR_DFLAGS #undef PERR_DADDR Modified: head/sys/net80211/ieee80211_input.c ============================================================================== --- head/sys/net80211/ieee80211_input.c Mon May 25 18:50:26 2015 (r283537) +++ head/sys/net80211/ieee80211_input.c Mon May 25 19:18:16 2015 (r283538) @@ -449,8 +449,9 @@ int ieee80211_alloc_challenge(struct ieee80211_node *ni) { if (ni->ni_challenge == NULL) - ni->ni_challenge = (uint32_t *) malloc(IEEE80211_CHALLENGE_LEN, - M_80211_NODE, M_NOWAIT); + ni->ni_challenge = (uint32_t *) + IEEE80211_MALLOC(IEEE80211_CHALLENGE_LEN, + M_80211_NODE, IEEE80211_M_NOWAIT); if (ni->ni_challenge == NULL) { IEEE80211_NOTE(ni->ni_vap, IEEE80211_MSG_DEBUG | IEEE80211_MSG_AUTH, ni, Modified: head/sys/net80211/ieee80211_ioctl.c ============================================================================== --- head/sys/net80211/ieee80211_ioctl.c Mon May 25 18:50:26 2015 (r283537) +++ head/sys/net80211/ieee80211_ioctl.c Mon May 25 19:18:16 2015 (r283538) @@ -323,14 +323,15 @@ ieee80211_ioctl_getscanresults(struct ie space = req.space; /* XXX M_WAITOK after driver lock released */ - p = malloc(space, M_TEMP, M_NOWAIT | M_ZERO); + p = IEEE80211_MALLOC(space, M_TEMP, + IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (p == NULL) return ENOMEM; req.sr = p; ieee80211_scan_iterate(vap, get_scan_result, &req); ireq->i_len = space - req.space; error = copyout(p, ireq->i_data, ireq->i_len); - free(p, M_TEMP); + IEEE80211_FREE(p, M_TEMP); } else ireq->i_len = 0; @@ -473,7 +474,8 @@ getstainfo_common(struct ieee80211vap *v if (req.space > 0) { space = req.space; /* XXX M_WAITOK after driver lock released */ - p = malloc(space, M_TEMP, M_NOWAIT | M_ZERO); + p = IEEE80211_MALLOC(space, M_TEMP, + IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (p == NULL) { error = ENOMEM; goto bad; @@ -485,7 +487,7 @@ getstainfo_common(struct ieee80211vap *v get_sta_info(&req, ni); ireq->i_len = space - req.space; error = copyout(p, (uint8_t *) ireq->i_data+off, ireq->i_len); - free(p, M_TEMP); + IEEE80211_FREE(p, M_TEMP); } else ireq->i_len = 0; bad: @@ -697,7 +699,8 @@ ieee80211_ioctl_getdevcaps(struct ieee80 if (maxchans > 2048) maxchans = 2048; dc = (struct ieee80211_devcaps_req *) - malloc(IEEE80211_DEVCAPS_SIZE(maxchans), M_TEMP, M_NOWAIT | M_ZERO); + IEEE80211_MALLOC(IEEE80211_DEVCAPS_SIZE(maxchans), M_TEMP, + IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (dc == NULL) return ENOMEM; dc->dc_drivercaps = ic->ic_caps; @@ -709,7 +712,7 @@ ieee80211_ioctl_getdevcaps(struct ieee80 ("nchans %d maxchans %d", ci->ic_nchans, maxchans)); ieee80211_sort_channels(ci->ic_chans, ci->ic_nchans); error = copyout(dc, ireq->i_data, IEEE80211_DEVCAPS_SPACE(dc)); - free(dc, M_TEMP); + IEEE80211_FREE(dc, M_TEMP); return error; } @@ -1666,13 +1669,13 @@ ieee80211_ioctl_setchanlist(struct ieee8 if (ireq->i_len > sizeof(ic->ic_chan_active)) ireq->i_len = sizeof(ic->ic_chan_active); - list = malloc(ireq->i_len + IEEE80211_CHAN_BYTES, M_TEMP, - M_NOWAIT | M_ZERO); + list = IEEE80211_MALLOC(ireq->i_len + IEEE80211_CHAN_BYTES, M_TEMP, + IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (list == NULL) return ENOMEM; error = copyin(ireq->i_data, list, ireq->i_len); if (error) { - free(list, M_TEMP); + IEEE80211_FREE(list, M_TEMP); return error; } nchan = 0; @@ -1691,7 +1694,7 @@ ieee80211_ioctl_setchanlist(struct ieee8 } } if (nchan == 0) { - free(list, M_TEMP); + IEEE80211_FREE(list, M_TEMP); return EINVAL; } if (ic->ic_bsschan != IEEE80211_CHAN_ANYC && /* XXX */ @@ -1699,7 +1702,7 @@ ieee80211_ioctl_setchanlist(struct ieee8 ic->ic_bsschan = IEEE80211_CHAN_ANYC; memcpy(ic->ic_chan_active, chanlist, IEEE80211_CHAN_BYTES); ieee80211_scan_flush(vap); - free(list, M_TEMP); + IEEE80211_FREE(list, M_TEMP); return ENETRESET; } @@ -2112,7 +2115,8 @@ ieee80211_ioctl_setregdomain(struct ieee return EINVAL; } reg = (struct ieee80211_regdomain_req *) - malloc(IEEE80211_REGDOMAIN_SIZE(nchans), M_TEMP, M_NOWAIT); + IEEE80211_MALLOC(IEEE80211_REGDOMAIN_SIZE(nchans), M_TEMP, + IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (reg == NULL) { IEEE80211_DPRINTF(vap, IEEE80211_MSG_IOCTL, "%s: no memory, nchans %d\n", __func__, nchans); @@ -2129,7 +2133,7 @@ ieee80211_ioctl_setregdomain(struct ieee } else error = ieee80211_setregdomain(vap, reg); } - free(reg, M_TEMP); + IEEE80211_FREE(reg, M_TEMP); return (error == 0 ? ENETRESET : error); } @@ -2246,7 +2250,7 @@ setappie(struct ieee80211_appie **aie, c if (ireq->i_len == 0) { /* delete any existing ie */ if (app != NULL) { *aie = NULL; /* XXX racey */ - free(app, M_80211_NODE_IE); + IEEE80211_FREE(app, M_80211_NODE_IE); } return 0; } @@ -2260,20 +2264,21 @@ setappie(struct ieee80211_appie **aie, c * * XXX bad bad bad */ - napp = (struct ieee80211_appie *) malloc( - sizeof(struct ieee80211_appie) + ireq->i_len, M_80211_NODE_IE, M_NOWAIT); + napp = (struct ieee80211_appie *) IEEE80211_MALLOC( + sizeof(struct ieee80211_appie) + ireq->i_len, M_80211_NODE_IE, + IEEE80211_M_NOWAIT); if (napp == NULL) return ENOMEM; /* XXX holding ic lock */ error = copyin(ireq->i_data, napp->ie_data, ireq->i_len); if (error) { - free(napp, M_80211_NODE_IE); + IEEE80211_FREE(napp, M_80211_NODE_IE); return error; } napp->ie_len = ireq->i_len; *aie = napp; if (app != NULL) - free(app, M_80211_NODE_IE); + IEEE80211_FREE(app, M_80211_NODE_IE); return 0; } Modified: head/sys/net80211/ieee80211_mesh.c ============================================================================== --- head/sys/net80211/ieee80211_mesh.c Mon May 25 18:50:26 2015 (r283537) +++ head/sys/net80211/ieee80211_mesh.c Mon May 25 19:18:16 2015 (r283538) @@ -211,8 +211,9 @@ mesh_rt_add_locked(struct ieee80211vap * MESH_RT_LOCK_ASSERT(ms); - rt = malloc(ALIGN(sizeof(struct ieee80211_mesh_route)) + - ms->ms_ppath->mpp_privlen, M_80211_MESH_RT, M_NOWAIT | M_ZERO); + rt = IEEE80211_MALLOC(ALIGN(sizeof(struct ieee80211_mesh_route)) + + ms->ms_ppath->mpp_privlen, M_80211_MESH_RT, + IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (rt != NULL) { rt->rt_vap = vap; IEEE80211_ADDR_COPY(rt->rt_dest, dest); @@ -360,7 +361,7 @@ mesh_rt_del(struct ieee80211_mesh_state RT_ENTRY_LOCK(rt); callout_drain(&rt->rt_discovery); mtx_destroy(&rt->rt_lock); - free(rt, M_80211_MESH_RT); + IEEE80211_FREE(rt, M_80211_MESH_RT); } void @@ -654,7 +655,7 @@ mesh_vdetach(struct ieee80211vap *vap) ieee80211_mesh_rt_flush(vap); mtx_destroy(&ms->ms_rt_lock); ms->ms_ppath->mpp_vdetach(vap); - free(vap->iv_mesh, M_80211_VAP); + IEEE80211_FREE(vap->iv_mesh, M_80211_VAP); vap->iv_mesh = NULL; } @@ -667,8 +668,8 @@ mesh_vattach(struct ieee80211vap *vap) vap->iv_opdetach = mesh_vdetach; vap->iv_recv_mgmt = mesh_recv_mgmt; vap->iv_recv_ctl = mesh_recv_ctl; - ms = malloc(sizeof(struct ieee80211_mesh_state), M_80211_VAP, - M_NOWAIT | M_ZERO); + ms = IEEE80211_MALLOC(sizeof(struct ieee80211_mesh_state), M_80211_VAP, + IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (ms == NULL) { printf("%s: couldn't alloc MBSS state\n", __func__); return; @@ -885,8 +886,9 @@ ieee80211_mesh_mark_gate(struct ieee8021 /* New mesh gate add it to known table. */ IEEE80211_NOTE_MAC(vap, IEEE80211_MSG_MESH, addr, "%s", "stored new gate information from pro-PREQ."); - gr = malloc(ALIGN(sizeof(struct ieee80211_mesh_gate_route)), - M_80211_MESH_GT_RT, M_NOWAIT | M_ZERO); + gr = IEEE80211_MALLOC(ALIGN(sizeof(struct ieee80211_mesh_gate_route)), + M_80211_MESH_GT_RT, + IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); IEEE80211_ADDR_COPY(gr->gr_addr, addr); TAILQ_INSERT_TAIL(&ms->ms_known_gates, gr, gr_next); } @@ -2643,8 +2645,9 @@ mesh_recv_action_meshgate(struct ieee802 /* this GANN is from a new mesh Gate add it to known table. */ IEEE80211_NOTE_MAC(vap, IEEE80211_MSG_MESH, ie.gann_addr, "stored new GANN information, seq %u.", ie.gann_seq); - gr = malloc(ALIGN(sizeof(struct ieee80211_mesh_gate_route)), - M_80211_MESH_GT_RT, M_NOWAIT | M_ZERO); + gr = IEEE80211_MALLOC(ALIGN(sizeof(struct ieee80211_mesh_gate_route)), + M_80211_MESH_GT_RT, + IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); IEEE80211_ADDR_COPY(gr->gr_addr, ie.gann_addr); TAILQ_INSERT_TAIL(&ms->ms_known_gates, gr, gr_next); } @@ -3491,7 +3494,8 @@ mesh_ioctl_get80211(struct ieee80211vap } ireq->i_len = len; /* XXX M_WAIT? */ - p = malloc(len, M_TEMP, M_NOWAIT | M_ZERO); + p = IEEE80211_MALLOC(len, M_TEMP, + IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (p == NULL) return ENOMEM; off = 0; @@ -3516,7 +3520,7 @@ mesh_ioctl_get80211(struct ieee80211vap MESH_RT_UNLOCK(ms); error = copyout(p, (uint8_t *)ireq->i_data, ireq->i_len); - free(p, M_TEMP); + IEEE80211_FREE(p, M_TEMP); break; case IEEE80211_MESH_RTCMD_FLUSH: case IEEE80211_MESH_RTCMD_ADD: Modified: head/sys/net80211/ieee80211_node.c ============================================================================== --- head/sys/net80211/ieee80211_node.c Mon May 25 18:50:26 2015 (r283537) +++ head/sys/net80211/ieee80211_node.c Mon May 25 19:18:16 2015 (r283538) @@ -172,9 +172,10 @@ ieee80211_node_latevattach(struct ieee80 "WARNING: max aid too small, changed to %d\n", vap->iv_max_aid); } - vap->iv_aid_bitmap = (uint32_t *) malloc( + vap->iv_aid_bitmap = (uint32_t *) IEEE80211_MALLOC( howmany(vap->iv_max_aid, 32) * sizeof(uint32_t), - M_80211_NODE, M_NOWAIT | M_ZERO); + M_80211_NODE, + IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (vap->iv_aid_bitmap == NULL) { /* XXX no way to recover */ printf("%s: no memory for AID bitmap, max aid %d!\n", @@ -199,7 +200,7 @@ ieee80211_node_vdetach(struct ieee80211v vap->iv_bss = NULL; } if (vap->iv_aid_bitmap != NULL) { - free(vap->iv_aid_bitmap, M_80211_NODE); + IEEE80211_FREE(vap->iv_aid_bitmap, M_80211_NODE); vap->iv_aid_bitmap = NULL; } } @@ -892,8 +893,8 @@ node_alloc(struct ieee80211vap *vap, con { struct ieee80211_node *ni; - ni = (struct ieee80211_node *) malloc(sizeof(struct ieee80211_node), - M_80211_NODE, M_NOWAIT | M_ZERO); + ni = (struct ieee80211_node *) IEEE80211_MALLOC(sizeof(struct ieee80211_node), + M_80211_NODE, IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); return ni; } @@ -910,11 +911,12 @@ ieee80211_ies_init(struct ieee80211_ies memset(ies, 0, offsetof(struct ieee80211_ies, data)); if (ies->data != NULL && ies->len != len) { /* data size changed */ - free(ies->data, M_80211_NODE_IE); + IEEE80211_FREE(ies->data, M_80211_NODE_IE); ies->data = NULL; } if (ies->data == NULL) { - ies->data = (uint8_t *) malloc(len, M_80211_NODE_IE, M_NOWAIT); + ies->data = (uint8_t *) IEEE80211_MALLOC(len, M_80211_NODE_IE, + IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (ies->data == NULL) { ies->len = 0; /* NB: pointers have already been zero'd above */ @@ -933,7 +935,7 @@ void ieee80211_ies_cleanup(struct ieee80211_ies *ies) { if (ies->data != NULL) - free(ies->data, M_80211_NODE_IE); + IEEE80211_FREE(ies->data, M_80211_NODE_IE); } /* @@ -1045,7 +1047,7 @@ node_cleanup(struct ieee80211_node *ni) ni->ni_associd = 0; if (ni->ni_challenge != NULL) { - free(ni->ni_challenge, M_80211_NODE); + IEEE80211_FREE(ni->ni_challenge, M_80211_NODE); ni->ni_challenge = NULL; } /* @@ -1080,7 +1082,7 @@ node_free(struct ieee80211_node *ni) ic->ic_node_cleanup(ni); ieee80211_ies_cleanup(&ni->ni_ies); ieee80211_psq_cleanup(&ni->ni_psq); - free(ni, M_80211_NODE); + IEEE80211_FREE(ni, M_80211_NODE); } static void @@ -1918,9 +1920,10 @@ ieee80211_node_table_init(struct ieee802 nt->nt_inact_init = inact; nt->nt_keyixmax = keyixmax; if (nt->nt_keyixmax > 0) { - nt->nt_keyixmap = (struct ieee80211_node **) malloc( + nt->nt_keyixmap = (struct ieee80211_node **) IEEE80211_MALLOC( keyixmax * sizeof(struct ieee80211_node *), - M_80211_NODE, M_NOWAIT | M_ZERO); + M_80211_NODE, + IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (nt->nt_keyixmap == NULL) ic_printf(ic, "Cannot allocate key index map with %u entries\n", @@ -1979,7 +1982,7 @@ ieee80211_node_table_cleanup(struct ieee printf("%s: %s[%u] still active\n", __func__, nt->nt_name, i); #endif - free(nt->nt_keyixmap, M_80211_NODE); + IEEE80211_FREE(nt->nt_keyixmap, M_80211_NODE); nt->nt_keyixmap = NULL; } IEEE80211_NODE_ITERATE_LOCK_DESTROY(nt); @@ -2318,8 +2321,8 @@ ieee80211_iterate_nodes(struct ieee80211 max_aid = vap->iv_max_aid; size = max_aid * sizeof(struct ieee80211_node *); - ni_arr = (struct ieee80211_node **) malloc(size, M_80211_NODE, - M_NOWAIT | M_ZERO); + ni_arr = (struct ieee80211_node **) IEEE80211_MALLOC(size, M_80211_NODE, + IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (ni_arr == NULL) return; @@ -2342,7 +2345,7 @@ ieee80211_iterate_nodes(struct ieee80211 } done: - free(ni_arr, M_80211_NODE); + IEEE80211_FREE(ni_arr, M_80211_NODE); } void Modified: head/sys/net80211/ieee80211_output.c ============================================================================== --- head/sys/net80211/ieee80211_output.c Mon May 25 18:50:26 2015 (r283537) +++ head/sys/net80211/ieee80211_output.c Mon May 25 19:18:16 2015 (r283538) @@ -1950,7 +1950,7 @@ ieee80211_add_countryie(uint8_t *frm, st * re-calculation. */ if (ic->ic_countryie != NULL) - free(ic->ic_countryie, M_80211_NODE_IE); + IEEE80211_FREE(ic->ic_countryie, M_80211_NODE_IE); ic->ic_countryie = ieee80211_alloc_countryie(ic); if (ic->ic_countryie == NULL) return frm; Modified: head/sys/net80211/ieee80211_power.c ============================================================================== --- head/sys/net80211/ieee80211_power.c Mon May 25 18:50:26 2015 (r283537) +++ head/sys/net80211/ieee80211_power.c Mon May 25 19:18:16 2015 (r283538) @@ -83,8 +83,9 @@ ieee80211_power_latevattach(struct ieee8 */ if (vap->iv_opmode == IEEE80211_M_HOSTAP) { vap->iv_tim_len = howmany(vap->iv_max_aid,8) * sizeof(uint8_t); - vap->iv_tim_bitmap = (uint8_t *) malloc(vap->iv_tim_len, - M_80211_POWER, M_NOWAIT | M_ZERO); + vap->iv_tim_bitmap = (uint8_t *) IEEE80211_MALLOC(vap->iv_tim_len, + M_80211_POWER, + IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (vap->iv_tim_bitmap == NULL) { printf("%s: no memory for TIM bitmap!\n", __func__); /* XXX good enough to keep from crashing? */ @@ -97,7 +98,7 @@ void ieee80211_power_vdetach(struct ieee80211vap *vap) { if (vap->iv_tim_bitmap != NULL) { - free(vap->iv_tim_bitmap, M_80211_POWER); + IEEE80211_FREE(vap->iv_tim_bitmap, M_80211_POWER); vap->iv_tim_bitmap = NULL; } } Modified: head/sys/net80211/ieee80211_proto.c ============================================================================== --- head/sys/net80211/ieee80211_proto.c Mon May 25 18:50:26 2015 (r283537) +++ head/sys/net80211/ieee80211_proto.c Mon May 25 19:18:16 2015 (r283538) @@ -250,7 +250,7 @@ ieee80211_proto_vdetach(struct ieee80211 { #define FREEAPPIE(ie) do { \ if (ie != NULL) \ - free(ie, M_80211_NODE_IE); \ + IEEE80211_FREE(ie, M_80211_NODE_IE); \ } while (0) /* * Detach operating mode module. Modified: head/sys/net80211/ieee80211_ratectl_none.c ============================================================================== --- head/sys/net80211/ieee80211_ratectl_none.c Mon May 25 18:50:26 2015 (r283537) +++ head/sys/net80211/ieee80211_ratectl_none.c Mon May 25 19:18:16 2015 (r283538) @@ -56,7 +56,7 @@ none_init(struct ieee80211vap *vap) static void none_deinit(struct ieee80211vap *vap) { - free(vap->iv_rs, M_80211_RATECTL); + IEEE80211_FREE(vap->iv_rs, M_80211_RATECTL); } static void Modified: head/sys/net80211/ieee80211_regdomain.c ============================================================================== --- head/sys/net80211/ieee80211_regdomain.c Mon May 25 18:50:26 2015 (r283537) +++ head/sys/net80211/ieee80211_regdomain.c Mon May 25 19:18:16 2015 (r283538) @@ -84,7 +84,7 @@ void ieee80211_regdomain_detach(struct ieee80211com *ic) { if (ic->ic_countryie != NULL) { - free(ic->ic_countryie, M_80211_NODE_IE); + IEEE80211_FREE(ic->ic_countryie, M_80211_NODE_IE); ic->ic_countryie = NULL; } } @@ -301,8 +301,8 @@ ieee80211_alloc_countryie(struct ieee802 struct ieee80211_country_ie *ie; int i, skip, nruns; - aie = malloc(IEEE80211_COUNTRY_MAX_SIZE, M_80211_NODE_IE, - M_NOWAIT | M_ZERO); + aie = IEEE80211_MALLOC(IEEE80211_COUNTRY_MAX_SIZE, M_80211_NODE_IE, + IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (aie == NULL) { ic_printf(ic, "%s: unable to allocate memory for country ie\n", __func__); @@ -493,7 +493,7 @@ ieee80211_setregdomain(struct ieee80211v * Invalidate channel-related state. */ if (ic->ic_countryie != NULL) { - free(ic->ic_countryie, M_80211_NODE_IE); + IEEE80211_FREE(ic->ic_countryie, M_80211_NODE_IE); ic->ic_countryie = NULL; } ieee80211_scan_flush(vap); Modified: head/sys/net80211/ieee80211_rssadapt.c ============================================================================== --- head/sys/net80211/ieee80211_rssadapt.c Mon May 25 18:50:26 2015 (r283537) +++ head/sys/net80211/ieee80211_rssadapt.c Mon May 25 19:18:16 2015 (r283538) @@ -132,8 +132,8 @@ rssadapt_init(struct ieee80211vap *vap) KASSERT(vap->iv_rs == NULL, ("%s: iv_rs already initialized", __func__)); - vap->iv_rs = rs = malloc(sizeof(struct ieee80211_rssadapt), - M_80211_RATECTL, M_NOWAIT|M_ZERO); + vap->iv_rs = rs = IEEE80211_MALLOC(sizeof(struct ieee80211_rssadapt), + M_80211_RATECTL, IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (rs == NULL) { if_printf(vap->iv_ifp, "couldn't alloc ratectl structure\n"); return; @@ -146,7 +146,7 @@ rssadapt_init(struct ieee80211vap *vap) static void rssadapt_deinit(struct ieee80211vap *vap) { - free(vap->iv_rs, M_80211_RATECTL); + IEEE80211_FREE(vap->iv_rs, M_80211_RATECTL); } static void @@ -175,8 +175,8 @@ rssadapt_node_init(struct ieee80211_node if (ni->ni_rctls == NULL) { ni->ni_rctls = ra = - malloc(sizeof(struct ieee80211_rssadapt_node), - M_80211_RATECTL, M_NOWAIT|M_ZERO); + IEEE80211_MALLOC(sizeof(struct ieee80211_rssadapt_node), + M_80211_RATECTL, IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (ra == NULL) { if_printf(vap->iv_ifp, "couldn't alloc per-node ratectl " "structure\n"); @@ -204,7 +204,7 @@ static void rssadapt_node_deinit(struct ieee80211_node *ni) { - free(ni->ni_rctls, M_80211_RATECTL); + IEEE80211_FREE(ni->ni_rctls, M_80211_RATECTL); } static __inline int Modified: head/sys/net80211/ieee80211_scan_sta.c ============================================================================== --- head/sys/net80211/ieee80211_scan_sta.c Mon May 25 18:50:26 2015 (r283537) +++ head/sys/net80211/ieee80211_scan_sta.c Mon May 25 19:18:16 2015 (r283538) @@ -159,8 +159,9 @@ sta_attach(struct ieee80211_scan_state * { struct sta_table *st; - st = (struct sta_table *) malloc(sizeof(struct sta_table), - M_80211_SCAN, M_NOWAIT | M_ZERO); + st = (struct sta_table *) IEEE80211_MALLOC(sizeof(struct sta_table), + M_80211_SCAN, + IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (st == NULL) return 0; IEEE80211_SCAN_TABLE_LOCK_INIT(st, "scantable"); @@ -183,7 +184,7 @@ sta_detach(struct ieee80211_scan_state * sta_flush_table(st); IEEE80211_SCAN_TABLE_LOCK_DESTROY(st); mtx_destroy(&st->st_scanlock); - free(st, M_80211_SCAN); + IEEE80211_FREE(st, M_80211_SCAN); KASSERT(nrefs > 0, ("imbalanced attach/detach")); nrefs--; /* NB: we assume caller locking */ } @@ -217,7 +218,7 @@ sta_flush_table(struct sta_table *st) TAILQ_REMOVE(&st->st_entry, se, se_list); LIST_REMOVE(se, se_hash); ieee80211_ies_cleanup(&se->base.se_ies); - free(se, M_80211_SCAN); + IEEE80211_FREE(se, M_80211_SCAN); } memset(st->st_maxrssi, 0, sizeof(st->st_maxrssi)); } @@ -252,8 +253,8 @@ sta_add(struct ieee80211_scan_state *ss, LIST_FOREACH(se, &st->st_hash[hash], se_hash) if (IEEE80211_ADDR_EQ(se->base.se_macaddr, macaddr)) goto found; - se = (struct sta_entry *) malloc(sizeof(struct sta_entry), - M_80211_SCAN, M_NOWAIT | M_ZERO); + se = (struct sta_entry *) IEEE80211_MALLOC(sizeof(struct sta_entry), + M_80211_SCAN, IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (se == NULL) { IEEE80211_SCAN_TABLE_UNLOCK(st); return 0; @@ -1680,7 +1681,7 @@ adhoc_age(struct ieee80211_scan_state *s TAILQ_REMOVE(&st->st_entry, se, se_list); LIST_REMOVE(se, se_hash); ieee80211_ies_cleanup(&se->base.se_ies); - free(se, M_80211_SCAN); + IEEE80211_FREE(se, M_80211_SCAN); } } IEEE80211_SCAN_TABLE_UNLOCK(st); Modified: head/sys/net80211/ieee80211_scan_sw.c ============================================================================== --- head/sys/net80211/ieee80211_scan_sw.c Mon May 25 18:50:26 2015 (r283537) +++ head/sys/net80211/ieee80211_scan_sw.c Mon May 25 19:18:16 2015 (r283538) @@ -107,8 +107,8 @@ ieee80211_swscan_attach(struct ieee80211 { struct scan_state *ss; - ss = (struct scan_state *) malloc(sizeof(struct scan_state), - M_80211_SCAN, M_NOWAIT | M_ZERO); + ss = (struct scan_state *) IEEE80211_MALLOC(sizeof(struct scan_state), + M_80211_SCAN, IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (ss == NULL) { ic->ic_scan = NULL; return; @@ -155,7 +155,7 @@ ieee80211_swscan_detach(struct ieee80211 ss->ss_ops = NULL; } ic->ic_scan = NULL; - free(SCAN_PRIVATE(ss), M_80211_SCAN); + IEEE80211_FREE(SCAN_PRIVATE(ss), M_80211_SCAN); } } Modified: head/sys/net80211/ieee80211_sta.c ============================================================================== --- head/sys/net80211/ieee80211_sta.c Mon May 25 18:50:26 2015 (r283537) +++ head/sys/net80211/ieee80211_sta.c Mon May 25 19:18:16 2015 (r283538) @@ -1060,7 +1060,7 @@ sta_auth_shared(struct ieee80211_node *n switch (seq) { case IEEE80211_AUTH_SHARED_PASS: if (ni->ni_challenge != NULL) { - free(ni->ni_challenge, M_80211_NODE); + IEEE80211_FREE(ni->ni_challenge, M_80211_NODE); ni->ni_challenge = NULL; } if (status != 0) { Modified: head/sys/net80211/ieee80211_superg.c ============================================================================== --- head/sys/net80211/ieee80211_superg.c Mon May 25 18:50:26 2015 (r283537) +++ head/sys/net80211/ieee80211_superg.c Mon May 25 19:18:16 2015 (r283538) @@ -100,9 +100,9 @@ ieee80211_superg_attach(struct ieee80211 struct ieee80211_superg *sg; if (ic->ic_caps & IEEE80211_C_FF) { - sg = (struct ieee80211_superg *) malloc( + sg = (struct ieee80211_superg *) IEEE80211_MALLOC( sizeof(struct ieee80211_superg), M_80211_VAP, - M_NOWAIT | M_ZERO); + IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (sg == NULL) { printf("%s: cannot allocate SuperG state block\n", __func__); @@ -117,7 +117,7 @@ void ieee80211_superg_detach(struct ieee80211com *ic) { if (ic->ic_superg != NULL) { - free(ic->ic_superg, M_80211_VAP); + IEEE80211_FREE(ic->ic_superg, M_80211_VAP); ic->ic_superg = NULL; } } Modified: head/sys/net80211/ieee80211_tdma.c ============================================================================== --- head/sys/net80211/ieee80211_tdma.c Mon May 25 18:50:26 2015 (r283537) +++ head/sys/net80211/ieee80211_tdma.c Mon May 25 19:18:16 2015 (r283538) @@ -149,8 +149,9 @@ ieee80211_tdma_vattach(struct ieee80211v KASSERT(vap->iv_caps & IEEE80211_C_TDMA, ("not a tdma vap, caps 0x%x", vap->iv_caps)); - ts = (struct ieee80211_tdma_state *) malloc( - sizeof(struct ieee80211_tdma_state), M_80211_VAP, M_NOWAIT | M_ZERO); + ts = (struct ieee80211_tdma_state *) IEEE80211_MALLOC( + sizeof(struct ieee80211_tdma_state), M_80211_VAP, + IEEE80211_M_NOWAIT | IEEE80211_M_ZERO); if (ts == NULL) { printf("%s: cannot allocate TDMA state block\n", __func__); /* NB: fall back to adhdemo mode */ @@ -199,7 +200,7 @@ tdma_vdetach(struct ieee80211vap *vap) return; } ts->tdma_opdetach(vap); - free(vap->iv_tdma, M_80211_VAP); + IEEE80211_FREE(vap->iv_tdma, M_80211_VAP); vap->iv_tdma = NULL; setackpolicy(vap->iv_ic, 0); /* enable ACK's */ From owner-svn-src-all@FreeBSD.ORG Mon May 25 19:38:38 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E3038A82; Mon, 25 May 2015 19:38:38 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from cell.glebius.int.ru (glebius.int.ru [81.19.69.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "cell.glebius.int.ru", Issuer "cell.glebius.int.ru" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 6F85FFBD; Mon, 25 May 2015 19:38:36 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from cell.glebius.int.ru (localhost [127.0.0.1]) by cell.glebius.int.ru (8.14.9/8.14.9) with ESMTP id t4PJcXZX083260 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Mon, 25 May 2015 22:38:33 +0300 (MSK) (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by cell.glebius.int.ru (8.14.9/8.14.9/Submit) id t4PJcXs7083259; Mon, 25 May 2015 22:38:33 +0300 (MSK) (envelope-from glebius@FreeBSD.org) X-Authentication-Warning: cell.glebius.int.ru: glebius set sender to glebius@FreeBSD.org using -f Date: Mon, 25 May 2015 22:38:33 +0300 From: Gleb Smirnoff To: Adrian Chadd Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283538 - head/sys/net80211 Message-ID: <20150525193833.GW73119@FreeBSD.org> References: <201505251918.t4PJIGnk004558@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201505251918.t4PJIGnk004558@svn.freebsd.org> User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 19:38:39 -0000 On Mon, May 25, 2015 at 07:18:16PM +0000, Adrian Chadd wrote: A> * kill M_WAITOK - some platforms just don't want you to use it Actually all functions called in device attach context or in syscall context should use M_WAITOK. This makes API more robust and simplifies code a lot. Can we achieve portability without losing this nice feature of FreeBSD? -- Totus tuus, Glebius. From owner-svn-src-all@FreeBSD.ORG Mon May 25 19:45:47 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id DD978FEA; Mon, 25 May 2015 19:45:46 +0000 (UTC) (envelope-from baptiste.daroussin@gmail.com) Received: from mail-wi0-x22a.google.com (mail-wi0-x22a.google.com [IPv6:2a00:1450:400c:c05::22a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 7037228B; Mon, 25 May 2015 19:45:46 +0000 (UTC) (envelope-from baptiste.daroussin@gmail.com) Received: by wicmx19 with SMTP id mx19so47385510wic.0; Mon, 25 May 2015 12:45:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=ktlb+k9g2kDGJYFcR42sifzr+3Gb2BO7KTTBpMRPuw8=; b=bSq5/mi/3t5brHk3L8fM3/fq8J6mReZgXVlTEwkJgDbFiwzWji1Nq3PrKvis745kPp iDKk+zUYGe2p/k9adlj1ms27SBoQqsub6Bo34f6Ybi/nf9H54Q8Flq1fHXTrDOXpl/Y6 xshpC5jjdHQ4PEYRCWJbSpqb1HZz5zOLZYXthnkDELSNf8JHcsNiQOz6Uspq5lPxSA7E SSuok43fTqxyf3xHaJx5K1VErlwmE9N5WvuWWOYhiSYOuQjvbBPZFL2NZaUrbS+boVtB i9VQWJlfEkqlXyLAkfFZNbC4yW6umqOP5+SAf3KOubh38XsLy7KyZ6pV78yZLODKTjWe sTOQ== X-Received: by 10.194.189.4 with SMTP id ge4mr23173398wjc.111.1432583145050; Mon, 25 May 2015 12:45:45 -0700 (PDT) Received: from ivaldir.etoilebsd.net ([2001:41d0:8:db4c::1]) by mx.google.com with ESMTPSA id ex5sm13384770wib.2.2015.05.25.12.45.43 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 25 May 2015 12:45:43 -0700 (PDT) Sender: Baptiste Daroussin Date: Mon, 25 May 2015 21:45:41 +0200 From: Baptiste Daroussin To: Cy Schubert Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r280849 - in head: contrib/ntp contrib/ntp/adjtimed contrib/ntp/arlib contrib/ntp/clockstuff contrib/ntp/conf contrib/ntp/html contrib/ntp/html/build contrib/ntp/html/drivers contrib/nt... Message-ID: <20150525194541.GB39108@ivaldir.etoilebsd.net> References: <201503301330.t2UDUHpI094651@svn.freebsd.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="lEGEL1/lMxI0MVQ2" Content-Disposition: inline In-Reply-To: <201503301330.t2UDUHpI094651@svn.freebsd.org> User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 19:45:47 -0000 --lEGEL1/lMxI0MVQ2 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, Mar 30, 2015 at 01:30:17PM +0000, Cy Schubert wrote: > Author: cy > Date: Mon Mar 30 13:30:15 2015 > New Revision: 280849 > URL: https://svnweb.freebsd.org/changeset/base/280849 >=20 > Log: > MFV ntp 4.2.8p1 (r258945, r275970, r276091, r276092, r276093, r278284) > =20 > Thanks to roberto for providing pointers to wedge this into HEAD. > =20 > Approved by: roberto >=20 Thanks for the update, but you have reintroduced overlinking of useless libraries all over ntp. for example with ntpdc: The binary does not need at all to link with ncurses explicitly The binary does not need to link with both libedit and readline (libedit is enough and prefered) The binary does not need to link to libmd as it does not use it. The binary needs libcrypto but absolutly not to libssl Also ntpdc does not build if WITHOUT_OPENSSL because in the config.h it is hardcoded that it needs openssl, for example: #define USE_OPENSSL_CRYPTO_RAND 1 Before the update, libmd was used for the digests functions. gGven now it is hardcoded that openssl is required libmd should be replaced by libcrypto but you should not have both. I'm working on fixing the overlink, but given I know nothing about libntp's= code I will let others have a look on what to do with the MK_OPENSSL. Best regards, Bapt --lEGEL1/lMxI0MVQ2 Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iEYEARECAAYFAlVje+UACgkQ8kTtMUmk6ExeJwCfY+n2ZdEbLNhOPdodxWwQwb37 IlkAnRZ0/CI6KLSTCuD4kblcHHfs4UzG =NyrN -----END PGP SIGNATURE----- --lEGEL1/lMxI0MVQ2-- From owner-svn-src-all@FreeBSD.ORG Mon May 25 19:48:49 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 96A3C342; Mon, 25 May 2015 19:48:49 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.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 842572DA; Mon, 25 May 2015 19:48:49 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PJmnJQ019613; Mon, 25 May 2015 19:48:49 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PJmnMd019612; Mon, 25 May 2015 19:48:49 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201505251948.t4PJmnMd019612@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Mon, 25 May 2015 19:48:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283539 - head/sys/net80211 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 19:48:49 -0000 Author: glebius Date: Mon May 25 19:48:48 2015 New Revision: 283539 URL: https://svnweb.freebsd.org/changeset/base/283539 Log: When sending RTM_IEEE80211_CSA, RTM_IEEE80211_RADAR, RTM_IEEE80211_CAC and RTM_IEEE80211_RADIO routing messages, broadcast them on all vap interfaces instead of sending them on parent. Reviewed by: adrian Sponsored by: Netflix Sponsored by: Nginx, Inc. Modified: head/sys/net80211/ieee80211_freebsd.c Modified: head/sys/net80211/ieee80211_freebsd.c ============================================================================== --- head/sys/net80211/ieee80211_freebsd.c Mon May 25 19:18:16 2015 (r283538) +++ head/sys/net80211/ieee80211_freebsd.c Mon May 25 19:48:48 2015 (r283539) @@ -694,8 +694,9 @@ void ieee80211_notify_csa(struct ieee80211com *ic, const struct ieee80211_channel *c, int mode, int count) { - struct ifnet *ifp = ic->ic_ifp; struct ieee80211_csa_event iev; + struct ieee80211vap *vap; + struct ifnet *ifp; memset(&iev, 0, sizeof(iev)); iev.iev_flags = c->ic_flags; @@ -703,42 +704,53 @@ ieee80211_notify_csa(struct ieee80211com iev.iev_ieee = c->ic_ieee; iev.iev_mode = mode; iev.iev_count = count; - CURVNET_SET(ifp->if_vnet); - rt_ieee80211msg(ifp, RTM_IEEE80211_CSA, &iev, sizeof(iev)); - CURVNET_RESTORE(); + TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) { + ifp = vap->iv_ifp; + CURVNET_SET(ifp->if_vnet); + rt_ieee80211msg(ifp, RTM_IEEE80211_CSA, &iev, sizeof(iev)); + CURVNET_RESTORE(); + } } void ieee80211_notify_radar(struct ieee80211com *ic, const struct ieee80211_channel *c) { - struct ifnet *ifp = ic->ic_ifp; struct ieee80211_radar_event iev; + struct ieee80211vap *vap; + struct ifnet *ifp; memset(&iev, 0, sizeof(iev)); iev.iev_flags = c->ic_flags; iev.iev_freq = c->ic_freq; iev.iev_ieee = c->ic_ieee; - CURVNET_SET(ifp->if_vnet); - rt_ieee80211msg(ifp, RTM_IEEE80211_RADAR, &iev, sizeof(iev)); - CURVNET_RESTORE(); + TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) { + ifp = vap->iv_ifp; + CURVNET_SET(ifp->if_vnet); + rt_ieee80211msg(ifp, RTM_IEEE80211_RADAR, &iev, sizeof(iev)); + CURVNET_RESTORE(); + } } void ieee80211_notify_cac(struct ieee80211com *ic, const struct ieee80211_channel *c, enum ieee80211_notify_cac_event type) { - struct ifnet *ifp = ic->ic_ifp; struct ieee80211_cac_event iev; + struct ieee80211vap *vap; + struct ifnet *ifp; memset(&iev, 0, sizeof(iev)); iev.iev_flags = c->ic_flags; iev.iev_freq = c->ic_freq; iev.iev_ieee = c->ic_ieee; iev.iev_type = type; - CURVNET_SET(ifp->if_vnet); - rt_ieee80211msg(ifp, RTM_IEEE80211_CAC, &iev, sizeof(iev)); - CURVNET_RESTORE(); + TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) { + ifp = vap->iv_ifp; + CURVNET_SET(ifp->if_vnet); + rt_ieee80211msg(ifp, RTM_IEEE80211_CAC, &iev, sizeof(iev)); + CURVNET_RESTORE(); + } } void @@ -782,14 +794,18 @@ ieee80211_notify_country(struct ieee8021 void ieee80211_notify_radio(struct ieee80211com *ic, int state) { - struct ifnet *ifp = ic->ic_ifp; struct ieee80211_radio_event iev; + struct ieee80211vap *vap; + struct ifnet *ifp; memset(&iev, 0, sizeof(iev)); iev.iev_state = state; - CURVNET_SET(ifp->if_vnet); - rt_ieee80211msg(ifp, RTM_IEEE80211_RADIO, &iev, sizeof(iev)); - CURVNET_RESTORE(); + TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) { + ifp = vap->iv_ifp; + CURVNET_SET(ifp->if_vnet); + rt_ieee80211msg(ifp, RTM_IEEE80211_RADIO, &iev, sizeof(iev)); + CURVNET_RESTORE(); + } } void From owner-svn-src-all@FreeBSD.ORG Mon May 25 19:53:37 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A0B9062A; Mon, 25 May 2015 19:53:37 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.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 8CA636D7; Mon, 25 May 2015 19:53:37 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PJrbge024032; Mon, 25 May 2015 19:53:37 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PJrU2E023830; Mon, 25 May 2015 19:53:30 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201505251953.t4PJrU2E023830@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Mon, 25 May 2015 19:53:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283540 - in head/sys: dev/ath dev/bwi dev/bwn dev/if_ndis dev/iwn dev/malo dev/mwl dev/ral dev/usb/wlan dev/wi dev/wpi dev/wtap net80211 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 19:53:37 -0000 Author: glebius Date: Mon May 25 19:53:29 2015 New Revision: 283540 URL: https://svnweb.freebsd.org/changeset/base/283540 Log: Change three methods in struct ieee80211com, namely ic_updateslot, ic_update_mcast and ic_update_promisc, to pass pointer to the ieee80211com, not to the ifnet. Sponsored by: Netflix Sponsored by: Nginx, Inc. Modified: head/sys/dev/ath/if_ath.c head/sys/dev/bwi/if_bwi.c head/sys/dev/bwn/if_bwn.c head/sys/dev/if_ndis/if_ndis.c head/sys/dev/iwn/if_iwn.c head/sys/dev/malo/if_malo.c head/sys/dev/mwl/if_mwl.c head/sys/dev/ral/rt2560.c head/sys/dev/ral/rt2661.c head/sys/dev/ral/rt2860.c head/sys/dev/usb/wlan/if_rsu.c head/sys/dev/usb/wlan/if_rum.c head/sys/dev/usb/wlan/if_run.c head/sys/dev/usb/wlan/if_uath.c head/sys/dev/usb/wlan/if_upgt.c head/sys/dev/usb/wlan/if_ural.c head/sys/dev/usb/wlan/if_urtw.c head/sys/dev/usb/wlan/if_urtwn.c head/sys/dev/usb/wlan/if_zyd.c head/sys/dev/wi/if_wi.c head/sys/dev/wpi/if_wpi.c head/sys/dev/wtap/if_wtap.c head/sys/net80211/ieee80211.c head/sys/net80211/ieee80211_proto.c head/sys/net80211/ieee80211_var.h Modified: head/sys/dev/ath/if_ath.c ============================================================================== --- head/sys/dev/ath/if_ath.c Mon May 25 19:48:48 2015 (r283539) +++ head/sys/dev/ath/if_ath.c Mon May 25 19:53:29 2015 (r283540) @@ -166,9 +166,9 @@ static void ath_bmiss_proc(void *, int); static void ath_key_update_begin(struct ieee80211vap *); static void ath_key_update_end(struct ieee80211vap *); static void ath_update_mcast_hw(struct ath_softc *); -static void ath_update_mcast(struct ifnet *); -static void ath_update_promisc(struct ifnet *); -static void ath_updateslot(struct ifnet *); +static void ath_update_mcast(struct ieee80211com *); +static void ath_update_promisc(struct ieee80211com *); +static void ath_updateslot(struct ieee80211com *); static void ath_bstuck_proc(void *, int); static void ath_reset_proc(void *, int); static int ath_desc_alloc(struct ath_softc *); @@ -3547,9 +3547,9 @@ ath_key_update_end(struct ieee80211vap * } static void -ath_update_promisc(struct ifnet *ifp) +ath_update_promisc(struct ieee80211com *ic) { - struct ath_softc *sc = ifp->if_softc; + struct ath_softc *sc = ic->ic_softc; u_int32_t rfilt; /* configure rx filter */ @@ -3611,9 +3611,9 @@ ath_update_mcast_hw(struct ath_softc *sc * awake before operating. */ static void -ath_update_mcast(struct ifnet *ifp) +ath_update_mcast(struct ieee80211com *ic) { - struct ath_softc *sc = ifp->if_softc; + struct ath_softc *sc = ic->ic_softc; ATH_LOCK(sc); ath_power_set_power_state(sc, HAL_PM_AWAKE); @@ -3697,10 +3697,9 @@ ath_setslottime(struct ath_softc *sc) * slot time based on the current setting. */ static void -ath_updateslot(struct ifnet *ifp) +ath_updateslot(struct ieee80211com *ic) { - struct ath_softc *sc = ifp->if_softc; - struct ieee80211com *ic = ifp->if_l2com; + struct ath_softc *sc = ic->ic_softc; /* * When not coordinating the BSS, change the hardware Modified: head/sys/dev/bwi/if_bwi.c ============================================================================== --- head/sys/dev/bwi/if_bwi.c Mon May 25 19:48:48 2015 (r283539) +++ head/sys/dev/bwi/if_bwi.c Mon May 25 19:53:29 2015 (r283540) @@ -113,7 +113,7 @@ static void bwi_scan_start(struct ieee80 static void bwi_set_channel(struct ieee80211com *); static void bwi_scan_end(struct ieee80211com *); static int bwi_newstate(struct ieee80211vap *, enum ieee80211_state, int); -static void bwi_updateslot(struct ifnet *); +static void bwi_updateslot(struct ieee80211com *); static int bwi_media_change(struct ifnet *); static void bwi_calibrate(void *); @@ -3735,14 +3735,13 @@ bwi_set_bssid(struct bwi_softc *sc, cons } static void -bwi_updateslot(struct ifnet *ifp) +bwi_updateslot(struct ieee80211com *ic) { - struct bwi_softc *sc = ifp->if_softc; - struct ieee80211com *ic = ifp->if_l2com; + struct bwi_softc *sc = ic->ic_softc; struct bwi_mac *mac; BWI_LOCK(sc); - if (ifp->if_drv_flags & IFF_DRV_RUNNING) { + if (ic->ic_ifp->if_drv_flags & IFF_DRV_RUNNING) { DPRINTF(sc, BWI_DBG_80211, "%s\n", __func__); KASSERT(sc->sc_cur_regwin->rw_type == BWI_REGWIN_T_MAC, Modified: head/sys/dev/bwn/if_bwn.c ============================================================================== --- head/sys/dev/bwn/if_bwn.c Mon May 25 19:48:48 2015 (r283539) +++ head/sys/dev/bwn/if_bwn.c Mon May 25 19:53:29 2015 (r283540) @@ -181,8 +181,8 @@ static void bwn_addchannels(struct ieee8 const struct bwn_channelinfo *, int); static int bwn_raw_xmit(struct ieee80211_node *, struct mbuf *, const struct ieee80211_bpf_params *); -static void bwn_updateslot(struct ifnet *); -static void bwn_update_promisc(struct ifnet *); +static void bwn_updateslot(struct ieee80211com *); +static void bwn_update_promisc(struct ieee80211com *); static void bwn_wme_init(struct bwn_mac *); static int bwn_wme_update(struct ieee80211com *); static void bwn_wme_clear(struct bwn_softc *); @@ -1252,7 +1252,7 @@ bwn_ioctl(struct ifnet *ifp, u_long cmd, case SIOCSIFFLAGS: startall = 0; if (IS_RUNNING(ifp)) { - bwn_update_promisc(ifp); + bwn_update_promisc(ic); } else if (ifp->if_flags & IFF_UP) { if ((sc->sc_flags & BWN_FLAG_INVALID) == 0) { bwn_init(sc); @@ -2772,14 +2772,13 @@ bwn_raw_xmit(struct ieee80211_node *ni, * like slot time and preamble. */ static void -bwn_updateslot(struct ifnet *ifp) +bwn_updateslot(struct ieee80211com *ic) { - struct bwn_softc *sc = ifp->if_softc; - struct ieee80211com *ic = ifp->if_l2com; + struct bwn_softc *sc = ic->ic_softc; struct bwn_mac *mac; BWN_LOCK(sc); - if (ifp->if_drv_flags & IFF_DRV_RUNNING) { + if (ic->ic_ifp->if_drv_flags & IFF_DRV_RUNNING) { mac = (struct bwn_mac *)sc->sc_curmac; bwn_set_slot_time(mac, (ic->ic_flags & IEEE80211_F_SHSLOT) ? 9 : 20); @@ -2795,15 +2794,15 @@ bwn_updateslot(struct ifnet *ifp) * mode when operating in hostap mode to do ACS). */ static void -bwn_update_promisc(struct ifnet *ifp) +bwn_update_promisc(struct ieee80211com *ic) { - struct bwn_softc *sc = ifp->if_softc; + struct bwn_softc *sc = ic->ic_softc; struct bwn_mac *mac = sc->sc_curmac; BWN_LOCK(sc); mac = sc->sc_curmac; if (mac != NULL && mac->mac_status >= BWN_MAC_STATUS_INITED) { - if (ifp->if_flags & IFF_PROMISC) + if (ic->ic_ifp->if_flags & IFF_PROMISC) sc->sc_filters |= BWN_MACCTL_PROMISC; else sc->sc_filters &= ~BWN_MACCTL_PROMISC; Modified: head/sys/dev/if_ndis/if_ndis.c ============================================================================== --- head/sys/dev/if_ndis/if_ndis.c Mon May 25 19:48:48 2015 (r283539) +++ head/sys/dev/if_ndis/if_ndis.c Mon May 25 19:53:29 2015 (r283540) @@ -159,8 +159,8 @@ static void ndis_tick (void *); static void ndis_ticktask (device_object *, void *); static int ndis_raw_xmit (struct ieee80211_node *, struct mbuf *, const struct ieee80211_bpf_params *); -static void ndis_update_mcast (struct ifnet *ifp); -static void ndis_update_promisc (struct ifnet *ifp); +static void ndis_update_mcast (struct ieee80211com *); +static void ndis_update_promisc (struct ieee80211com *); static void ndis_start (struct ifnet *); static void ndis_starttask (device_object *, void *); static void ndis_resettask (device_object *, void *); @@ -1773,15 +1773,15 @@ ndis_raw_xmit(struct ieee80211_node *ni, } static void -ndis_update_mcast(struct ifnet *ifp) +ndis_update_mcast(struct ieee80211com *ic) { - struct ndis_softc *sc = ifp->if_softc; + struct ndis_softc *sc = ic->ic_softc; ndis_setmulti(sc); } static void -ndis_update_promisc(struct ifnet *ifp) +ndis_update_promisc(struct ieee80211com *ic) { /* not supported */ } Modified: head/sys/dev/iwn/if_iwn.c ============================================================================== --- head/sys/dev/iwn/if_iwn.c Mon May 25 19:48:48 2015 (r283539) +++ head/sys/dev/iwn/if_iwn.c Mon May 25 19:53:29 2015 (r283540) @@ -247,7 +247,7 @@ static int iwn_set_link_quality(struct i struct ieee80211_node *); static int iwn_add_broadcast_node(struct iwn_softc *, int); static int iwn_updateedca(struct ieee80211com *); -static void iwn_update_mcast(struct ifnet *); +static void iwn_update_mcast(struct ieee80211com *); static void iwn_set_led(struct iwn_softc *, uint8_t, uint8_t, uint8_t); static int iwn_set_critical_temp(struct iwn_softc *); static int iwn_set_timing(struct iwn_softc *, struct ieee80211_node *); @@ -5278,7 +5278,7 @@ iwn_updateedca(struct ieee80211com *ic) } static void -iwn_update_mcast(struct ifnet *ifp) +iwn_update_mcast(struct ieee80211com *ic) { /* Ignore */ } Modified: head/sys/dev/malo/if_malo.c ============================================================================== --- head/sys/dev/malo/if_malo.c Mon May 25 19:48:48 2015 (r283539) +++ head/sys/dev/malo/if_malo.c Mon May 25 19:53:29 2015 (r283540) @@ -133,7 +133,7 @@ static void malo_tx_cleanupq(struct malo static void malo_start(struct ifnet *); static void malo_watchdog(void *); static int malo_ioctl(struct ifnet *, u_long, caddr_t); -static void malo_updateslot(struct ifnet *); +static void malo_updateslot(struct ieee80211com *); static int malo_newstate(struct ieee80211vap *, enum ieee80211_state, int); static void malo_scan_start(struct ieee80211com *); static void malo_scan_end(struct ieee80211com *); @@ -1766,15 +1766,14 @@ malo_ioctl(struct ifnet *ifp, u_long cmd * like slot time and preamble. */ static void -malo_updateslot(struct ifnet *ifp) +malo_updateslot(struct ieee80211com *ic) { - struct malo_softc *sc = ifp->if_softc; - struct ieee80211com *ic = ifp->if_l2com; + struct malo_softc *sc = ic->ic_softc; struct malo_hal *mh = sc->malo_mh; int error; /* NB: can be called early; suppress needless cmds */ - if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) + if ((ic->ic_ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) return; DPRINTF(sc, MALO_DEBUG_RESET, Modified: head/sys/dev/mwl/if_mwl.c ============================================================================== --- head/sys/dev/mwl/if_mwl.c Mon May 25 19:48:48 2015 (r283539) +++ head/sys/dev/mwl/if_mwl.c Mon May 25 19:53:29 2015 (r283540) @@ -113,9 +113,9 @@ static int mwl_key_delete(struct ieee802 static int mwl_key_set(struct ieee80211vap *, const struct ieee80211_key *, const uint8_t mac[IEEE80211_ADDR_LEN]); static int mwl_mode_init(struct mwl_softc *); -static void mwl_update_mcast(struct ifnet *); -static void mwl_update_promisc(struct ifnet *); -static void mwl_updateslot(struct ifnet *); +static void mwl_update_mcast(struct ieee80211com *); +static void mwl_update_promisc(struct ieee80211com *); +static void mwl_updateslot(struct ieee80211com *); static int mwl_beacon_setup(struct ieee80211vap *); static void mwl_beacon_update(struct ieee80211vap *, int); #ifdef MWL_HOST_PS_SUPPORT @@ -1845,9 +1845,9 @@ mwl_mode_init(struct mwl_softc *sc) * Callback from the 802.11 layer after a multicast state change. */ static void -mwl_update_mcast(struct ifnet *ifp) +mwl_update_mcast(struct ieee80211com *ic) { - struct mwl_softc *sc = ifp->if_softc; + struct mwl_softc *sc = ic->ic_softc; mwl_setmcastfilter(sc); } @@ -1860,11 +1860,12 @@ mwl_update_mcast(struct ifnet *ifp) * mode when operating in hostap mode to do ACS). */ static void -mwl_update_promisc(struct ifnet *ifp) +mwl_update_promisc(struct ieee80211com *ic) { - struct mwl_softc *sc = ifp->if_softc; + struct mwl_softc *sc = ic->ic_softc; - mwl_hal_setpromisc(sc->sc_mh, (ifp->if_flags & IFF_PROMISC) != 0); + mwl_hal_setpromisc(sc->sc_mh, + (ic->ic_ifp->if_flags & IFF_PROMISC) != 0); } /* @@ -1874,15 +1875,14 @@ mwl_update_promisc(struct ifnet *ifp) * like slot time and preamble. */ static void -mwl_updateslot(struct ifnet *ifp) +mwl_updateslot(struct ieee80211com *ic) { - struct mwl_softc *sc = ifp->if_softc; - struct ieee80211com *ic = ifp->if_l2com; + struct mwl_softc *sc = ic->ic_softc; struct mwl_hal *mh = sc->sc_mh; int prot; /* NB: can be called early; suppress needless cmds */ - if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) + if ((ic->ic_ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) return; /* @@ -1940,7 +1940,7 @@ mwl_beacon_update(struct ieee80211vap *v KASSERT(hvap != NULL, ("no beacon")); switch (item) { case IEEE80211_BEACON_ERP: - mwl_updateslot(ic->ic_ifp); + mwl_updateslot(ic); break; case IEEE80211_BEACON_HTINFO: mwl_hal_setnprotmode(hvap, Modified: head/sys/dev/ral/rt2560.c ============================================================================== --- head/sys/dev/ral/rt2560.c Mon May 25 19:48:48 2015 (r283539) +++ head/sys/dev/ral/rt2560.c Mon May 25 19:53:29 2015 (r283540) @@ -144,14 +144,14 @@ static void rt2560_disable_rf_tune(stru static void rt2560_enable_tsf_sync(struct rt2560_softc *); static void rt2560_enable_tsf(struct rt2560_softc *); static void rt2560_update_plcp(struct rt2560_softc *); -static void rt2560_update_slot(struct ifnet *); +static void rt2560_update_slot(struct ieee80211com *); static void rt2560_set_basicrates(struct rt2560_softc *, const struct ieee80211_rateset *); static void rt2560_update_led(struct rt2560_softc *, int, int); static void rt2560_set_bssid(struct rt2560_softc *, const uint8_t *); static void rt2560_set_macaddr(struct rt2560_softc *, uint8_t *); static void rt2560_get_macaddr(struct rt2560_softc *, uint8_t *); -static void rt2560_update_promisc(struct ifnet *); +static void rt2560_update_promisc(struct ieee80211com *); static const char *rt2560_get_rf(int); static void rt2560_read_config(struct rt2560_softc *); static int rt2560_bbp_init(struct rt2560_softc *); @@ -1998,7 +1998,7 @@ rt2560_ioctl(struct ifnet *ifp, u_long c rt2560_init_locked(sc); startall = 1; } else - rt2560_update_promisc(ifp); + rt2560_update_promisc(ic); } else { if (ifp->if_drv_flags & IFF_DRV_RUNNING) rt2560_stop_locked(sc); @@ -2307,10 +2307,9 @@ rt2560_update_plcp(struct rt2560_softc * * IEEE Std 802.11-1999 pp. 85 to know how these values are computed. */ static void -rt2560_update_slot(struct ifnet *ifp) +rt2560_update_slot(struct ieee80211com *ic) { - struct rt2560_softc *sc = ifp->if_softc; - struct ieee80211com *ic = ifp->if_l2com; + struct rt2560_softc *sc = ic->ic_softc; uint8_t slottime; uint16_t tx_sifs, tx_pifs, tx_difs, eifs; uint32_t tmp; @@ -2437,21 +2436,21 @@ rt2560_get_macaddr(struct rt2560_softc * } static void -rt2560_update_promisc(struct ifnet *ifp) +rt2560_update_promisc(struct ieee80211com *ic) { - struct rt2560_softc *sc = ifp->if_softc; + struct rt2560_softc *sc = ic->ic_softc; uint32_t tmp; tmp = RAL_READ(sc, RT2560_RXCSR0); tmp &= ~RT2560_DROP_NOT_TO_ME; - if (!(ifp->if_flags & IFF_PROMISC)) + if (!(ic->ic_ifp->if_flags & IFF_PROMISC)) tmp |= RT2560_DROP_NOT_TO_ME; RAL_WRITE(sc, RT2560_RXCSR0, tmp); - DPRINTF(sc, "%s promiscuous mode\n", (ifp->if_flags & IFF_PROMISC) ? - "entering" : "leaving"); + DPRINTF(sc, "%s promiscuous mode\n", + (ic->ic_ifp->if_flags & IFF_PROMISC) ? "entering" : "leaving"); } static const char * @@ -2660,7 +2659,7 @@ rt2560_init_locked(struct rt2560_softc * /* set basic rate set (will be updated later) */ RAL_WRITE(sc, RT2560_ARSP_PLCP_1, 0x153); - rt2560_update_slot(ifp); + rt2560_update_slot(ic); rt2560_update_plcp(sc); rt2560_update_led(sc, 0, 0); Modified: head/sys/dev/ral/rt2661.c ============================================================================== --- head/sys/dev/ral/rt2661.c Mon May 25 19:48:48 2015 (r283539) +++ head/sys/dev/ral/rt2661.c Mon May 25 19:53:29 2015 (r283540) @@ -147,9 +147,9 @@ static void rt2661_set_bssid(struct rt2 const uint8_t *); static void rt2661_set_macaddr(struct rt2661_softc *, const uint8_t *); -static void rt2661_update_promisc(struct ifnet *); +static void rt2661_update_promisc(struct ieee80211com *); static int rt2661_wme_update(struct ieee80211com *) __unused; -static void rt2661_update_slot(struct ifnet *); +static void rt2661_update_slot(struct ieee80211com *); static const char *rt2661_get_rf(int); static void rt2661_read_eeprom(struct rt2661_softc *, uint8_t macaddr[IEEE80211_ADDR_LEN]); @@ -1736,7 +1736,7 @@ rt2661_ioctl(struct ifnet *ifp, u_long c rt2661_init_locked(sc); startall = 1; } else - rt2661_update_promisc(ifp); + rt2661_update_promisc(ic); } else { if (ifp->if_drv_flags & IFF_DRV_RUNNING) rt2661_stop_locked(sc); @@ -2080,21 +2080,21 @@ rt2661_set_macaddr(struct rt2661_softc * } static void -rt2661_update_promisc(struct ifnet *ifp) +rt2661_update_promisc(struct ieee80211com *ic) { - struct rt2661_softc *sc = ifp->if_softc; + struct rt2661_softc *sc = ic->ic_softc; uint32_t tmp; tmp = RAL_READ(sc, RT2661_TXRX_CSR0); tmp &= ~RT2661_DROP_NOT_TO_ME; - if (!(ifp->if_flags & IFF_PROMISC)) + if (!(ic->ic_ifp->if_flags & IFF_PROMISC)) tmp |= RT2661_DROP_NOT_TO_ME; RAL_WRITE(sc, RT2661_TXRX_CSR0, tmp); - DPRINTF(sc, "%s promiscuous mode\n", (ifp->if_flags & IFF_PROMISC) ? - "entering" : "leaving"); + DPRINTF(sc, "%s promiscuous mode\n", + (ic->ic_ifp->if_flags & IFF_PROMISC) ? "entering" : "leaving"); } /* @@ -2144,10 +2144,9 @@ rt2661_wme_update(struct ieee80211com *i } static void -rt2661_update_slot(struct ifnet *ifp) +rt2661_update_slot(struct ieee80211com *ic) { - struct rt2661_softc *sc = ifp->if_softc; - struct ieee80211com *ic = ifp->if_l2com; + struct rt2661_softc *sc = ic->ic_softc; uint8_t slottime; uint32_t tmp; Modified: head/sys/dev/ral/rt2860.c ============================================================================== --- head/sys/dev/ral/rt2860.c Mon May 25 19:48:48 2015 (r283539) +++ head/sys/dev/ral/rt2860.c Mon May 25 19:53:29 2015 (r283540) @@ -154,8 +154,8 @@ static void rt2860_set_leds(struct rt286 static void rt2860_set_gp_timer(struct rt2860_softc *, int); static void rt2860_set_bssid(struct rt2860_softc *, const uint8_t *); static void rt2860_set_macaddr(struct rt2860_softc *, const uint8_t *); -static void rt2860_update_promisc(struct ifnet *); -static void rt2860_updateslot(struct ifnet *); +static void rt2860_update_promisc(struct ieee80211com *); +static void rt2860_updateslot(struct ieee80211com *); static void rt2860_updateprot(struct ifnet *); static int rt2860_updateedca(struct ieee80211com *); #ifdef HW_CRYPTO @@ -2053,7 +2053,7 @@ rt2860_ioctl(struct ifnet *ifp, u_long c rt2860_init_locked(sc); startall = 1; } else - rt2860_update_promisc(ifp); + rt2860_update_promisc(ic); } else { if (ifp->if_drv_flags & IFF_DRV_RUNNING) rt2860_stop_locked(sc); @@ -3101,10 +3101,9 @@ rt2860_set_macaddr(struct rt2860_softc * } static void -rt2860_updateslot(struct ifnet *ifp) +rt2860_updateslot(struct ieee80211com *ic) { - struct rt2860_softc *sc = ifp->if_softc; - struct ieee80211com *ic = ifp->if_l2com; + struct rt2860_softc *sc = ic->ic_softc; uint32_t tmp; tmp = RAL_READ(sc, RT2860_BKOFF_SLOT_CFG); @@ -3139,14 +3138,14 @@ rt2860_updateprot(struct ifnet *ifp) } static void -rt2860_update_promisc(struct ifnet *ifp) +rt2860_update_promisc(struct ieee80211com *ic) { - struct rt2860_softc *sc = ifp->if_softc; + struct rt2860_softc *sc = ic->ic_softc; uint32_t tmp; tmp = RAL_READ(sc, RT2860_RX_FILTR_CFG); tmp &= ~RT2860_DROP_NOT_MYBSS; - if (!(ifp->if_flags & IFF_PROMISC)) + if (!(ic->ic_ifp->if_flags & IFF_PROMISC)) tmp |= RT2860_DROP_NOT_MYBSS; RAL_WRITE(sc, RT2860_RX_FILTR_CFG, tmp); } Modified: head/sys/dev/usb/wlan/if_rsu.c ============================================================================== --- head/sys/dev/usb/wlan/if_rsu.c Mon May 25 19:48:48 2015 (r283539) +++ head/sys/dev/usb/wlan/if_rsu.c Mon May 25 19:53:29 2015 (r283540) @@ -142,7 +142,7 @@ static void rsu_vap_delete(struct ieee80 static void rsu_scan_start(struct ieee80211com *); static void rsu_scan_end(struct ieee80211com *); static void rsu_set_channel(struct ieee80211com *); -static void rsu_update_mcast(struct ifnet *); +static void rsu_update_mcast(struct ieee80211com *); static int rsu_alloc_rx_list(struct rsu_softc *); static void rsu_free_rx_list(struct rsu_softc *); static int rsu_alloc_tx_list(struct rsu_softc *); @@ -534,7 +534,7 @@ rsu_set_channel(struct ieee80211com *ic } static void -rsu_update_mcast(struct ifnet *ifp) +rsu_update_mcast(struct ieee80211com *ic) { /* XXX do nothing? */ } Modified: head/sys/dev/usb/wlan/if_rum.c ============================================================================== --- head/sys/dev/usb/wlan/if_rum.c Mon May 25 19:48:48 2015 (r283539) +++ head/sys/dev/usb/wlan/if_rum.c Mon May 25 19:53:29 2015 (r283540) @@ -201,8 +201,8 @@ static void rum_enable_tsf(struct rum_s static void rum_update_slot(struct ifnet *); static void rum_set_bssid(struct rum_softc *, const uint8_t *); static void rum_set_macaddr(struct rum_softc *, const uint8_t *); -static void rum_update_mcast(struct ifnet *); -static void rum_update_promisc(struct ifnet *); +static void rum_update_mcast(struct ieee80211com *); +static void rum_update_promisc(struct ieee80211com *); static void rum_setpromisc(struct rum_softc *); static const char *rum_get_rf(int); static void rum_read_eeprom(struct rum_softc *); @@ -1843,11 +1843,11 @@ rum_setpromisc(struct rum_softc *sc) } static void -rum_update_promisc(struct ifnet *ifp) +rum_update_promisc(struct ieee80211com *ic) { - struct rum_softc *sc = ifp->if_softc; + struct rum_softc *sc = ic->ic_softc; - if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) + if ((ic->ic_ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) return; RUM_LOCK(sc); @@ -1856,12 +1856,12 @@ rum_update_promisc(struct ifnet *ifp) } static void -rum_update_mcast(struct ifnet *ifp) +rum_update_mcast(struct ieee80211com *ic) { static int warning_printed; if (warning_printed == 0) { - if_printf(ifp, "need to implement %s\n", __func__); + ic_printf(ic, "need to implement %s\n", __func__); warning_printed = 1; } } Modified: head/sys/dev/usb/wlan/if_run.c ============================================================================== --- head/sys/dev/usb/wlan/if_run.c Mon May 25 19:48:48 2015 (r283539) +++ head/sys/dev/usb/wlan/if_run.c Mon May 25 19:53:29 2015 (r283540) @@ -439,12 +439,12 @@ static void run_set_basicrates(struct ru static void run_set_leds(struct run_softc *, uint16_t); static void run_set_bssid(struct run_softc *, const uint8_t *); static void run_set_macaddr(struct run_softc *, const uint8_t *); -static void run_updateslot(struct ifnet *); +static void run_updateslot(struct ieee80211com *); static void run_updateslot_cb(void *); -static void run_update_mcast(struct ifnet *); +static void run_update_mcast(struct ieee80211com *); static int8_t run_rssi2dbm(struct run_softc *, uint8_t, uint8_t); -static void run_update_promisc_locked(struct ifnet *); -static void run_update_promisc(struct ifnet *); +static void run_update_promisc_locked(struct run_softc *); +static void run_update_promisc(struct ieee80211com *); static void run_rt5390_bbp_init(struct run_softc *); static int run_bbp_init(struct run_softc *); static int run_rt3070_rf_init(struct run_softc *); @@ -2139,7 +2139,7 @@ run_newstate(struct ieee80211vap *vap, e IEEE80211_LOCK(ic); return (-1); } - run_updateslot(ic->ic_ifp); + run_updateslot(ic); run_enable_mrr(sc); run_set_txpreamble(sc); run_set_basicrates(sc); @@ -3787,7 +3787,7 @@ run_ioctl(struct ifnet *ifp, u_long cmd, startall = 1; run_init_locked(sc); } else - run_update_promisc_locked(ifp); + run_update_promisc_locked(sc); } else { if (ifp->if_drv_flags & IFF_DRV_RUNNING && (ic->ic_nrunning == 0 || sc->rvp_cnt <= 1)) { @@ -4903,7 +4903,7 @@ run_update_beacon(struct ieee80211vap *v switch (item) { case IEEE80211_BEACON_ERP: - run_updateslot(ic->ic_ifp); + run_updateslot(ic); break; case IEEE80211_BEACON_HTINFO: run_updateprot(ic); @@ -5064,33 +5064,32 @@ run_reset_livelock(struct run_softc *sc) } static void -run_update_promisc_locked(struct ifnet *ifp) +run_update_promisc_locked(struct run_softc *sc) { - struct run_softc *sc = ifp->if_softc; uint32_t tmp; run_read(sc, RT2860_RX_FILTR_CFG, &tmp); tmp |= RT2860_DROP_UC_NOME; - if (ifp->if_flags & IFF_PROMISC) + if (sc->sc_ifp->if_flags & IFF_PROMISC) tmp &= ~RT2860_DROP_UC_NOME; run_write(sc, RT2860_RX_FILTR_CFG, tmp); - DPRINTF("%s promiscuous mode\n", (ifp->if_flags & IFF_PROMISC) ? + DPRINTF("%s promiscuous mode\n", (sc->sc_ifp->if_flags & IFF_PROMISC) ? "entering" : "leaving"); } static void -run_update_promisc(struct ifnet *ifp) +run_update_promisc(struct ieee80211com *ic) { - struct run_softc *sc = ifp->if_softc; + struct run_softc *sc = ic->ic_softc; - if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) + if ((ic->ic_ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) return; RUN_LOCK(sc); - run_update_promisc_locked(ifp); + run_update_promisc_locked(sc); RUN_UNLOCK(sc); } @@ -5213,16 +5212,15 @@ run_set_macaddr(struct run_softc *sc, co } static void -run_updateslot(struct ifnet *ifp) +run_updateslot(struct ieee80211com *ic) { - struct run_softc *sc = ifp->if_softc; - struct ieee80211com *ic = ifp->if_l2com; + struct run_softc *sc = ic->ic_softc; uint32_t i; i = RUN_CMDQ_GET(&sc->cmdq_store); DPRINTF("cmdq_store=%d\n", i); sc->cmdq[i].func = run_updateslot_cb; - sc->cmdq[i].arg0 = ifp; + sc->cmdq[i].arg0 = ic->ic_ifp; ieee80211_runtask(ic, &sc->cmdq_task); return; @@ -5244,10 +5242,11 @@ run_updateslot_cb(void *arg) } static void -run_update_mcast(struct ifnet *ifp) +run_update_mcast(struct ieee80211com *ic) { + /* h/w filter supports getting everything or nothing */ - ifp->if_flags |= IFF_ALLMULTI; + ic->ic_ifp->if_flags |= IFF_ALLMULTI; } static int8_t Modified: head/sys/dev/usb/wlan/if_uath.c ============================================================================== --- head/sys/dev/usb/wlan/if_uath.c Mon May 25 19:48:48 2015 (r283539) +++ head/sys/dev/usb/wlan/if_uath.c Mon May 25 19:53:29 2015 (r283540) @@ -290,8 +290,8 @@ static int uath_raw_xmit(struct ieee8021 static void uath_scan_start(struct ieee80211com *); static void uath_scan_end(struct ieee80211com *); static void uath_set_channel(struct ieee80211com *); -static void uath_update_mcast(struct ifnet *); -static void uath_update_promisc(struct ifnet *); +static void uath_update_mcast(struct ieee80211com *); +static void uath_update_promisc(struct ieee80211com *); static int uath_config(struct uath_softc *, uint32_t, uint32_t); static int uath_config_multi(struct uath_softc *, uint32_t, const void *, int); @@ -1927,13 +1927,13 @@ uath_set_rxmulti_filter(struct uath_soft return (0); } static void -uath_update_mcast(struct ifnet *ifp) +uath_update_mcast(struct ieee80211com *ic) { - struct uath_softc *sc = ifp->if_softc; + struct uath_softc *sc = ic->ic_softc; UATH_LOCK(sc); if ((sc->sc_flags & UATH_FLAG_INVALID) || - (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) { + (ic->ic_ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) { UATH_UNLOCK(sc); return; } @@ -1947,13 +1947,13 @@ uath_update_mcast(struct ifnet *ifp) } static void -uath_update_promisc(struct ifnet *ifp) +uath_update_promisc(struct ieee80211com *ic) { - struct uath_softc *sc = ifp->if_softc; + struct uath_softc *sc = ic->ic_softc; UATH_LOCK(sc); if ((sc->sc_flags & UATH_FLAG_INVALID) || - (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) { + (ic->ic_ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) { UATH_UNLOCK(sc); return; } Modified: head/sys/dev/usb/wlan/if_upgt.c ============================================================================== --- head/sys/dev/usb/wlan/if_upgt.c Mon May 25 19:48:48 2015 (r283539) +++ head/sys/dev/usb/wlan/if_upgt.c Mon May 25 19:53:29 2015 (r283540) @@ -142,7 +142,7 @@ static struct ieee80211vap *upgt_vap_cre const uint8_t [IEEE80211_ADDR_LEN], const uint8_t [IEEE80211_ADDR_LEN]); static void upgt_vap_delete(struct ieee80211vap *); -static void upgt_update_mcast(struct ifnet *); +static void upgt_update_mcast(struct ieee80211com *); static uint8_t upgt_rx_rate(struct upgt_softc *, const int); static void upgt_set_multi(void *); static void upgt_stop(struct upgt_softc *); @@ -1115,9 +1115,9 @@ upgt_vap_delete(struct ieee80211vap *vap } static void -upgt_update_mcast(struct ifnet *ifp) +upgt_update_mcast(struct ieee80211com *ic) { - struct upgt_softc *sc = ifp->if_softc; + struct upgt_softc *sc = ic->ic_softc; upgt_set_multi(sc); } Modified: head/sys/dev/usb/wlan/if_ural.c ============================================================================== --- head/sys/dev/usb/wlan/if_ural.c Mon May 25 19:48:48 2015 (r283539) +++ head/sys/dev/usb/wlan/if_ural.c Mon May 25 19:53:29 2015 (r283540) @@ -177,7 +177,7 @@ static void ural_set_basicrates(struct const struct ieee80211_channel *); static void ural_set_bssid(struct ural_softc *, const uint8_t *); static void ural_set_macaddr(struct ural_softc *, uint8_t *); -static void ural_update_promisc(struct ifnet *); +static void ural_update_promisc(struct ieee80211com *); static void ural_setpromisc(struct ural_softc *); static const char *ural_get_rf(int); static void ural_read_eeprom(struct ural_softc *); @@ -1928,11 +1928,11 @@ ural_setpromisc(struct ural_softc *sc) } static void -ural_update_promisc(struct ifnet *ifp) +ural_update_promisc(struct ieee80211com *ic) { - struct ural_softc *sc = ifp->if_softc; + struct ural_softc *sc = ic->ic_softc; - if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) + if ((ic->ic_ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) return; RAL_LOCK(sc); Modified: head/sys/dev/usb/wlan/if_urtw.c ============================================================================== --- head/sys/dev/usb/wlan/if_urtw.c Mon May 25 19:48:48 2015 (r283539) +++ head/sys/dev/usb/wlan/if_urtw.c Mon May 25 19:53:29 2015 (r283540) @@ -663,7 +663,7 @@ static int urtw_raw_xmit(struct ieee802 static void urtw_scan_start(struct ieee80211com *); static void urtw_scan_end(struct ieee80211com *); static void urtw_set_channel(struct ieee80211com *); -static void urtw_update_mcast(struct ifnet *); +static void urtw_update_mcast(struct ieee80211com *); static int urtw_tx_start(struct urtw_softc *, struct ieee80211_node *, struct mbuf *, struct urtw_data *, int); @@ -758,7 +758,7 @@ static struct urtw_data * urtw_getbuf(struct urtw_softc *sc); static int urtw_compute_txtime(uint16_t, uint16_t, uint8_t, uint8_t); -static void urtw_updateslot(struct ifnet *); +static void urtw_updateslot(struct ieee80211com *); static void urtw_updateslottask(void *, int); static void urtw_sysctl_node(struct urtw_softc *); @@ -1663,7 +1663,7 @@ fail: } static void -urtw_update_mcast(struct ifnet *ifp) +urtw_update_mcast(struct ieee80211com *ic) { /* XXX do nothing? */ @@ -4367,10 +4367,9 @@ urtw_compute_txtime(uint16_t framelen, u * slot time based on the current setting. */ static void -urtw_updateslot(struct ifnet *ifp) +urtw_updateslot(struct ieee80211com *ic) { - struct urtw_softc *sc = ifp->if_softc; - struct ieee80211com *ic = ifp->if_l2com; + struct urtw_softc *sc = ic->ic_softc; ieee80211_runtask(ic, &sc->sc_updateslot_task); } Modified: head/sys/dev/usb/wlan/if_urtwn.c ============================================================================== --- head/sys/dev/usb/wlan/if_urtwn.c Mon May 25 19:48:48 2015 (r283539) +++ head/sys/dev/usb/wlan/if_urtwn.c Mon May 25 19:53:29 2015 (r283540) @@ -266,7 +266,7 @@ static void urtwn_set_channel(struct ie static void urtwn_set_chan(struct urtwn_softc *, struct ieee80211_channel *, struct ieee80211_channel *); -static void urtwn_update_mcast(struct ifnet *); +static void urtwn_update_mcast(struct ieee80211com *); static void urtwn_iq_calib(struct urtwn_softc *); static void urtwn_lc_calib(struct urtwn_softc *); static void urtwn_init(void *); @@ -3147,7 +3147,7 @@ urtwn_set_channel(struct ieee80211com *i } static void -urtwn_update_mcast(struct ifnet *ifp) +urtwn_update_mcast(struct ieee80211com *ic) { /* XXX do nothing? */ } Modified: head/sys/dev/usb/wlan/if_zyd.c ============================================================================== --- head/sys/dev/usb/wlan/if_zyd.c Mon May 25 19:48:48 2015 (r283539) +++ head/sys/dev/usb/wlan/if_zyd.c Mon May 25 19:53:29 2015 (r283540) @@ -147,7 +147,7 @@ static int zyd_set_bssid(struct zyd_soft static int zyd_switch_radio(struct zyd_softc *, int); static int zyd_set_led(struct zyd_softc *, int, int); static void zyd_set_multi(struct zyd_softc *); -static void zyd_update_mcast(struct ifnet *); +static void zyd_update_mcast(struct ieee80211com *); static int zyd_set_rxfilter(struct zyd_softc *); static void zyd_set_chan(struct zyd_softc *, struct ieee80211_channel *); static int zyd_set_beacon_interval(struct zyd_softc *, int); @@ -2046,11 +2046,11 @@ fail: } static void -zyd_update_mcast(struct ifnet *ifp) +zyd_update_mcast(struct ieee80211com *ic) { - struct zyd_softc *sc = ifp->if_softc; + struct zyd_softc *sc = ic->ic_softc; - if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) + if ((ic->ic_ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) return; ZYD_LOCK(sc); Modified: head/sys/dev/wi/if_wi.c ============================================================================== --- head/sys/dev/wi/if_wi.c Mon May 25 19:48:48 2015 (r283539) +++ head/sys/dev/wi/if_wi.c Mon May 25 19:53:29 2015 (r283540) @@ -144,8 +144,8 @@ static void wi_info_intr(struct wi_softc static int wi_write_txrate(struct wi_softc *, struct ieee80211vap *); static int wi_write_wep(struct wi_softc *, struct ieee80211vap *); static int wi_write_multi(struct wi_softc *); -static void wi_update_mcast(struct ifnet *); -static void wi_update_promisc(struct ifnet *); +static void wi_update_mcast(struct ieee80211com *); +static void wi_update_promisc(struct ieee80211com *); static int wi_alloc_fid(struct wi_softc *, int, int *); static void wi_read_nicid(struct wi_softc *); static int wi_write_ssid(struct wi_softc *, int, u_int8_t *, int); @@ -1623,22 +1623,22 @@ allmulti: } static void -wi_update_mcast(struct ifnet *ifp) +wi_update_mcast(struct ieee80211com *ic) { - wi_write_multi(ifp->if_softc); + + wi_write_multi(ic->ic_softc); } static void -wi_update_promisc(struct ifnet *ifp) +wi_update_promisc(struct ieee80211com *ic) { - struct wi_softc *sc = ifp->if_softc; - struct ieee80211com *ic = ifp->if_l2com; + struct wi_softc *sc = ic->ic_softc; WI_LOCK(sc); /* XXX handle WEP special case handling? */ wi_write_val(sc, WI_RID_PROMISC, (ic->ic_opmode == IEEE80211_M_MONITOR || - (ifp->if_flags & IFF_PROMISC))); + (ic->ic_ifp->if_flags & IFF_PROMISC))); WI_UNLOCK(sc); } Modified: head/sys/dev/wpi/if_wpi.c ============================================================================== --- head/sys/dev/wpi/if_wpi.c Mon May 25 19:48:48 2015 (r283539) +++ head/sys/dev/wpi/if_wpi.c Mon May 25 19:53:29 2015 (r283540) @@ -219,8 +219,8 @@ static int wpi_add_ibss_node(struct wpi_ static void wpi_del_node(struct wpi_softc *, struct ieee80211_node *); static int wpi_updateedca(struct ieee80211com *); static void wpi_set_promisc(struct wpi_softc *); -static void wpi_update_promisc(struct ifnet *); -static void wpi_update_mcast(struct ifnet *); +static void wpi_update_promisc(struct ieee80211com *); +static void wpi_update_mcast(struct ieee80211com *); static void wpi_set_led(struct wpi_softc *, uint8_t, uint8_t, uint8_t); static int wpi_set_timing(struct wpi_softc *, struct ieee80211_node *); static void wpi_power_calibration(struct wpi_softc *); @@ -3542,9 +3542,9 @@ wpi_set_promisc(struct wpi_softc *sc) } static void -wpi_update_promisc(struct ifnet *ifp) +wpi_update_promisc(struct ieee80211com *ic) { - struct wpi_softc *sc = ifp->if_softc; + struct wpi_softc *sc = ic->ic_softc; WPI_RXON_LOCK(sc); wpi_set_promisc(sc); @@ -3557,7 +3557,7 @@ wpi_update_promisc(struct ifnet *ifp) } static void -wpi_update_mcast(struct ifnet *ifp) +wpi_update_mcast(struct ieee80211com *ic) { /* Ignore */ } Modified: head/sys/dev/wtap/if_wtap.c ============================================================================== --- head/sys/dev/wtap/if_wtap.c Mon May 25 19:48:48 2015 (r283539) +++ head/sys/dev/wtap/if_wtap.c Mon May 25 19:53:29 2015 (r283540) @@ -702,14 +702,14 @@ wtap_wme_update(struct ieee80211com *ic) } static void -wtap_update_mcast(struct ifnet *ifp) +wtap_update_mcast(struct ieee80211com *ic) { DWTAP_PRINTF("%s\n", __func__); } static void -wtap_update_promisc(struct ifnet *ifp) +wtap_update_promisc(struct ieee80211com *ic) { DWTAP_PRINTF("%s\n", __func__); @@ -829,9 +829,6 @@ wtap_attach(struct wtap_softc *sc, const /* override default methods */ ic->ic_newassoc = wtap_newassoc; -#if 0 - ic->ic_updateslot = myath_updateslot; -#endif ic->ic_wme.wme_update = wtap_wme_update; ic->ic_vap_create = wtap_vap_create; ic->ic_vap_delete = wtap_vap_delete; Modified: head/sys/net80211/ieee80211.c ============================================================================== --- head/sys/net80211/ieee80211.c Mon May 25 19:48:48 2015 (r283539) +++ head/sys/net80211/ieee80211.c Mon May 25 19:53:29 2015 (r283540) @@ -224,15 +224,17 @@ ieee80211_chan_init(struct ieee80211com } static void -null_update_mcast(struct ifnet *ifp) +null_update_mcast(struct ieee80211com *ic) { - if_printf(ifp, "need multicast update callback\n"); + + ic_printf(ic, "need multicast update callback\n"); } static void -null_update_promisc(struct ifnet *ifp) +null_update_promisc(struct ieee80211com *ic) { - if_printf(ifp, "need promiscuous mode update callback\n"); + + ic_printf(ic, "need promiscuous mode update callback\n"); } static int Modified: head/sys/net80211/ieee80211_proto.c ============================================================================== --- head/sys/net80211/ieee80211_proto.c Mon May 25 19:48:48 2015 (r283539) +++ head/sys/net80211/ieee80211_proto.c Mon May 25 19:53:29 2015 (r283540) @@ -650,7 +650,7 @@ ieee80211_set_shortslottime(struct ieee8 ic->ic_flags &= ~IEEE80211_F_SHSLOT; /* notify driver */ if (ic->ic_updateslot != NULL) - ic->ic_updateslot(ic->ic_ifp); + ic->ic_updateslot(ic); } /* @@ -1164,18 +1164,16 @@ static void update_mcast(void *arg, int npending) { struct ieee80211com *ic = arg; - struct ifnet *parent = ic->ic_ifp; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Mon May 25 20:06:52 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 58084953; Mon, 25 May 2015 20:06:52 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.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 4495BA4C; Mon, 25 May 2015 20:06:52 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PK6qma033596; Mon, 25 May 2015 20:06:52 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PK6o1H033582; Mon, 25 May 2015 20:06:50 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201505252006.t4PK6o1H033582@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Mon, 25 May 2015 20:06:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283541 - head/sys/net80211 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 20:06:52 -0000 Author: glebius Date: Mon May 25 20:06:49 2015 New Revision: 283541 URL: https://svnweb.freebsd.org/changeset/base/283541 Log: Cleanup compat shims for FreeBSD versions that predate 10.0-RELEASE. There are no plans to merge anything save a trivial bugfix to stable/9. Discussed with: adrian Modified: head/sys/net80211/ieee80211.c head/sys/net80211/ieee80211_freebsd.c head/sys/net80211/ieee80211_freebsd.h head/sys/net80211/ieee80211_hostap.c head/sys/net80211/ieee80211_input.c head/sys/net80211/ieee80211_output.c head/sys/net80211/ieee80211_proto.h head/sys/net80211/ieee80211_var.h Modified: head/sys/net80211/ieee80211.c ============================================================================== --- head/sys/net80211/ieee80211.c Mon May 25 19:53:29 2015 (r283540) +++ head/sys/net80211/ieee80211.c Mon May 25 20:06:49 2015 (r283541) @@ -245,15 +245,9 @@ null_transmit(struct ifnet *ifp, struct return EACCES; /* XXX EIO/EPERM? */ } -#if __FreeBSD_version >= 1000031 static int null_output(struct ifnet *ifp, struct mbuf *m, const struct sockaddr *dst, struct route *ro) -#else -static int -null_output(struct ifnet *ifp, struct mbuf *m, - struct sockaddr *dst, struct route *ro) -#endif { if_printf(ifp, "discard raw packet\n"); return null_transmit(ifp, m); Modified: head/sys/net80211/ieee80211_freebsd.c ============================================================================== --- head/sys/net80211/ieee80211_freebsd.c Mon May 25 19:53:29 2015 (r283540) +++ head/sys/net80211/ieee80211_freebsd.c Mon May 25 20:06:49 2015 (r283541) @@ -66,10 +66,8 @@ SYSCTL_INT(_net_wlan, OID_AUTO, debug, C static MALLOC_DEFINE(M_80211_COM, "80211com", "802.11 com state"); -#if __FreeBSD_version >= 1000020 static const char wlanname[] = "wlan"; static struct if_clone *wlan_cloner; -#endif /* * Allocate/free com structure in conjunction with ifnet; @@ -136,18 +134,10 @@ wlan_clone_create(struct if_clone *ifc, if_printf(ifp, "TDMA not supported\n"); return EOPNOTSUPP; } -#if __FreeBSD_version >= 1000020 vap = ic->ic_vap_create(ic, wlanname, unit, cp.icp_opmode, cp.icp_flags, cp.icp_bssid, cp.icp_flags & IEEE80211_CLONE_MACADDR ? cp.icp_macaddr : (const uint8_t *)IF_LLADDR(ifp)); -#else - vap = ic->ic_vap_create(ic, ifc->ifc_name, unit, - cp.icp_opmode, cp.icp_flags, cp.icp_bssid, - cp.icp_flags & IEEE80211_CLONE_MACADDR ? - cp.icp_macaddr : (const uint8_t *)IF_LLADDR(ifp)); - -#endif return (vap == NULL ? EIO : 0); } @@ -161,19 +151,11 @@ wlan_clone_destroy(struct ifnet *ifp) ic->ic_vap_delete(vap); } -#if __FreeBSD_version < 1000020 -IFC_SIMPLE_DECLARE(wlan, 0); -#endif - void ieee80211_vap_destroy(struct ieee80211vap *vap) { CURVNET_SET(vap->iv_ifp->if_vnet); -#if __FreeBSD_version >= 1000020 if_clone_destroyif(wlan_cloner, vap->iv_ifp); -#else - if_clone_destroyif(&wlan_cloner, vap->iv_ifp); -#endif CURVNET_RESTORE(); } @@ -891,21 +873,13 @@ wlan_modevent(module_t mod, int type, vo bpf_track, 0, EVENTHANDLER_PRI_ANY); wlan_ifllevent = EVENTHANDLER_REGISTER(iflladdr_event, wlan_iflladdr, NULL, EVENTHANDLER_PRI_ANY); -#if __FreeBSD_version >= 1000020 wlan_cloner = if_clone_simple(wlanname, wlan_clone_create, wlan_clone_destroy, 0); -#else - if_clone_attach(&wlan_cloner); -#endif if_register_com_alloc(IFT_IEEE80211, wlan_alloc, wlan_free); return 0; case MOD_UNLOAD: if_deregister_com_alloc(IFT_IEEE80211); -#if __FreeBSD_version >= 1000020 if_clone_detach(wlan_cloner); -#else - if_clone_detach(&wlan_cloner); -#endif EVENTHANDLER_DEREGISTER(bpf_track, wlan_bpfevent); EVENTHANDLER_DEREGISTER(iflladdr_event, wlan_ifllevent); return 0; @@ -914,11 +888,7 @@ wlan_modevent(module_t mod, int type, vo } static moduledata_t wlan_mod = { -#if __FreeBSD_version >= 1000020 wlanname, -#else - "wlan", -#endif wlan_modevent, 0 }; Modified: head/sys/net80211/ieee80211_freebsd.h ============================================================================== --- head/sys/net80211/ieee80211_freebsd.h Mon May 25 19:53:29 2015 (r283540) +++ head/sys/net80211/ieee80211_freebsd.h Mon May 25 20:06:49 2015 (r283541) @@ -234,21 +234,9 @@ struct mbuf *ieee80211_getmgtframe(uint8 #define M_FF M_PROTO6 /* fast frame */ #define M_TXCB M_PROTO7 /* do tx complete callback */ #define M_AMPDU_MPDU M_PROTO8 /* ok for A-MPDU aggregation */ - -/* - * FreeBSD-HEAD from 1000046 retired M_*FRAG* flags and turned them - * into header flags instead. So, we use the new protocol-specific - * flags. - * - * Earlier FreeBSD versions overload M_FRAG, M_FIRSTFRAG and M_LASTFRAG. - * - * XXX TODO: rename these fields so there are no namespace clashes! - */ -#if __FreeBSD_version >= 1000046 #define M_FRAG M_PROTO9 /* frame fragmentation */ #define M_FIRSTFRAG M_PROTO10 /* first frame fragment */ #define M_LASTFRAG M_PROTO11 /* last frame fragment */ -#endif #define M_80211_TX \ (M_ENCAP|M_EAPOL|M_PWR_SAV|M_MORE_DATA|M_FF|M_TXCB| \ @@ -262,18 +250,10 @@ struct mbuf *ieee80211_getmgtframe(uint8 #endif #define M_80211_RX (M_AMPDU|M_WEP|M_AMPDU_MPDU) -#if __FreeBSD_version >= 1000046 #define IEEE80211_MBUF_TX_FLAG_BITS \ M_FLAG_BITS \ "\15M_ENCAP\17M_EAPOL\20M_PWR_SAV\21M_MORE_DATA\22M_FF\23M_TXCB" \ "\24M_AMPDU_MPDU\25M_FRAG\26M_FIRSTFRAG\27M_LASTFRAG" -#else -/* There aren't any flag bits available for versions before this */ -/* XXX TODO: implement M_FLAG_BITS for this! */ -#define IEEE80211_MBUF_TX_FLAG_BITS \ - "\15M_ENCAP\17M_EAPOL\20M_PWR_SAV\21M_MORE_DATA\22M_FF\23M_TXCB" \ - "\24M_AMPDU_MPDU" -#endif #define IEEE80211_MBUF_RX_FLAG_BITS \ M_FLAG_BITS \ Modified: head/sys/net80211/ieee80211_hostap.c ============================================================================== --- head/sys/net80211/ieee80211_hostap.c Mon May 25 19:53:29 2015 (r283540) +++ head/sys/net80211/ieee80211_hostap.c Mon May 25 20:06:49 2015 (r283541) @@ -357,12 +357,8 @@ hostap_deliver_data(struct ieee80211vap struct ifnet *ifp = vap->iv_ifp; /* clear driver/net80211 flags before passing up */ -#if __FreeBSD_version >= 1000046 m->m_flags &= ~(M_MCAST | M_BCAST); m_clrprotoflags(m); -#else - m->m_flags &= ~(M_80211_RX | M_MCAST | M_BCAST); -#endif KASSERT(vap->iv_opmode == IEEE80211_M_HOSTAP, ("gack, opmode %d", vap->iv_opmode)); Modified: head/sys/net80211/ieee80211_input.c ============================================================================== --- head/sys/net80211/ieee80211_input.c Mon May 25 19:53:29 2015 (r283540) +++ head/sys/net80211/ieee80211_input.c Mon May 25 20:06:49 2015 (r283541) @@ -253,9 +253,7 @@ ieee80211_deliver_data(struct ieee80211v /* clear driver/net80211 flags before passing up */ m->m_flags &= ~(M_MCAST | M_BCAST); -#if __FreeBSD_version >= 1000046 m_clrprotoflags(m); -#endif /* NB: see hostap_deliver_data, this path doesn't handle hostap */ KASSERT(vap->iv_opmode != IEEE80211_M_HOSTAP, ("gack, hostap")); Modified: head/sys/net80211/ieee80211_output.c ============================================================================== --- head/sys/net80211/ieee80211_output.c Mon May 25 19:53:29 2015 (r283540) +++ head/sys/net80211/ieee80211_output.c Mon May 25 20:06:49 2015 (r283541) @@ -516,15 +516,9 @@ ieee80211_raw_output(struct ieee80211vap * connect bpf write calls to the 802.11 layer for injecting * raw 802.11 frames. */ -#if __FreeBSD_version >= 1000031 int ieee80211_output(struct ifnet *ifp, struct mbuf *m, const struct sockaddr *dst, struct route *ro) -#else -int -ieee80211_output(struct ifnet *ifp, struct mbuf *m, - struct sockaddr *dst, struct route *ro) -#endif { #define senderr(e) do { error = (e); goto bad;} while (0) struct ieee80211_node *ni = NULL; Modified: head/sys/net80211/ieee80211_proto.h ============================================================================== --- head/sys/net80211/ieee80211_proto.h Mon May 25 19:53:29 2015 (r283540) +++ head/sys/net80211/ieee80211_proto.h Mon May 25 20:06:49 2015 (r283541) @@ -101,13 +101,8 @@ int ieee80211_mgmt_output(struct ieee802 struct ieee80211_bpf_params *); int ieee80211_raw_xmit(struct ieee80211_node *, struct mbuf *, const struct ieee80211_bpf_params *); -#if __FreeBSD_version >= 1000031 int ieee80211_output(struct ifnet *, struct mbuf *, const struct sockaddr *, struct route *ro); -#else -int ieee80211_output(struct ifnet *, struct mbuf *, - struct sockaddr *, struct route *ro); -#endif int ieee80211_vap_pkt_send_dest(struct ieee80211vap *, struct mbuf *, struct ieee80211_node *); int ieee80211_raw_output(struct ieee80211vap *, struct ieee80211_node *, Modified: head/sys/net80211/ieee80211_var.h ============================================================================== --- head/sys/net80211/ieee80211_var.h Mon May 25 19:53:29 2015 (r283540) +++ head/sys/net80211/ieee80211_var.h Mon May 25 20:06:49 2015 (r283541) @@ -502,13 +502,8 @@ struct ieee80211vap { int (*iv_newstate)(struct ieee80211vap *, enum ieee80211_state, int); /* 802.3 output method for raw frame xmit */ -#if __FreeBSD_version >= 1000031 int (*iv_output)(struct ifnet *, struct mbuf *, const struct sockaddr *, struct route *); -#else - int (*iv_output)(struct ifnet *, struct mbuf *, - struct sockaddr *, struct route *); -#endif uint64_t iv_spare[6]; }; MALLOC_DECLARE(M_80211_VAP); From owner-svn-src-all@FreeBSD.ORG Mon May 25 20:19:53 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2F84AFB4; Mon, 25 May 2015 20:19:53 +0000 (UTC) (envelope-from cschuber@gmail.com) Received: from mail-pd0-x22b.google.com (mail-pd0-x22b.google.com [IPv6:2607:f8b0:400e:c02::22b]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id F0F57CB6; Mon, 25 May 2015 20:19:52 +0000 (UTC) (envelope-from cschuber@gmail.com) Received: by pdbki1 with SMTP id ki1so33428453pdb.1; Mon, 25 May 2015 13:19:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:mime-version:from:subject:date:to:cc:content-type; bh=YSpQMmptJ9Gd90u+oC5H7xcge8MxDKO4XqgMmvq4uiE=; b=CEQ3jzO2DRgQkCIs3Hhyr/jKMkPwErFISsXiJmp1cFUQiBVTiGoNhy4bESO0tUIxdN Z63WLqoXvB3mMwaSi9UKO7LVxrMdqOQDPnOS1vUGpx6vPPIXPJL+Q9A796CODw4BWhKo deyRSDv3gsNPawCwjeEq5WjlsccDGVsVdi2U5uLoaPIuSuvZtTK3FjTy8+ArnWKrJoHm gFeq8WiQQqG+8Iz0E3apH8gQwYULYdUizNpkMjV+yfeZ8lat7fIyckdx8tzpWue1RfvC 9hqKazziitsrV6/QKU3AaH0XPhJ/4ofY+kndQeAAvnt8iIwXY59S9JpeF+CiZ/kQNg0k jJ1w== X-Received: by 10.66.140.36 with SMTP id rd4mr42306254pab.109.1432585192436; Mon, 25 May 2015 13:19:52 -0700 (PDT) Received: from [10.168.3.106] (S0106d4ca6d8943b0.gv.shawcable.net. [24.68.134.59]) by mx.google.com with ESMTPSA id af5sm10814793pbc.90.2015.05.25.13.19.51 (version=SSLv3 cipher=RC4-SHA bits=128/128); Mon, 25 May 2015 13:19:51 -0700 (PDT) Message-ID: <556383e7.a5a9440a.7137.ffffe47c@mx.google.com> MIME-Version: 1.0 From: Cy schubert Subject: RE: svn commit: r280849 - in head: contrib/ntp contrib/ntp/adjtimedcontrib/ntp/arlib contrib/ntp/clockstuff contrib/ntp/conf contrib/ntp/htmlcontrib/ntp/html/build contrib/ntp/html/drivers contrib/nt... Date: Mon, 25 May 2015 13:19:52 -0700 To: Baptiste Daroussin , Cy Schubert CC: "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.20 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 20:19:53 -0000 Thanks bapt@. I will take a look after work tonight. ~Cy -----Original Message----- From: Baptiste Daroussin Sent: 25/05/2015 12:45 To: Cy Schubert Cc: src-committers@freebsd.org; svn-src-all@freebsd.org; svn-src-head@freeb= sd.org Subject: Re: svn commit: r280849 - in head: contrib/ntp contrib/ntp/adjtime= dcontrib/ntp/arlib contrib/ntp/clockstuff contrib/ntp/conf contrib/ntp/html= contrib/ntp/html/build contrib/ntp/html/drivers contrib/nt... On Mon, Mar 30, 2015 at 01:30:17PM +0000, Cy Schubert wrote: > Author: cy > Date: Mon Mar 30 13:30:15 2015 > New Revision: 280849 > URL: https://svnweb.freebsd.org/changeset/base/280849 >=20 > Log: > MFV ntp 4.2.8p1 (r258945, r275970, r276091, r276092, r276093, r278284) > =20 > Thanks to roberto for providing pointers to wedge this into HEAD. > =20 > Approved by: roberto >=20 Thanks for the update, but you have reintroduced overlinking of useless libraries all over ntp. for example with ntpdc: The binary does not need at all to link with ncurses explicitly The binary does not need to link with both libedit and readline (libedit is enough and prefered) The binary does not need to link to libmd as it does not use it. The binary needs libcrypto but absolutly not to libssl Also ntpdc does not build if WITHOUT_OPENSSL because in the config.h it is hardcoded that it needs openssl, for example: #define USE_OPENSSL_CRYPTO_RAND 1 Before the update, libmd was used for the digests functions. gGven now it i= s hardcoded that openssl is required libmd should be replaced by libcrypto bu= t you should not have both. I'm working on fixing the overlink, but given I know nothing about libntp's= code I will let others have a look on what to do with the MK_OPENSSL. Best regards, Bapt From owner-svn-src-all@FreeBSD.ORG Mon May 25 20:27:49 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A79D51FC; Mon, 25 May 2015 20:27:49 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org (svn.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 8836AED1; Mon, 25 May 2015 20:27:49 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PKRnsT043871; Mon, 25 May 2015 20:27:49 GMT (envelope-from bapt@FreeBSD.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PKRlA7043861; Mon, 25 May 2015 20:27:47 GMT (envelope-from bapt@FreeBSD.org) Message-Id: <201505252027.t4PKRlA7043861@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: bapt set sender to bapt@FreeBSD.org using -f From: Baptiste Daroussin Date: Mon, 25 May 2015 20:27:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283542 - in head/usr.sbin/ntp: . ntp-keygen ntpd ntpdate ntpdc ntpq sntp X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 20:27:49 -0000 Author: bapt Date: Mon May 25 20:27:46 2015 New Revision: 283542 URL: https://svnweb.freebsd.org/changeset/base/283542 Log: Fix overlinking again after recent ntp updates Fix building WITHOUT_OPENSSL Modified: head/usr.sbin/ntp/Makefile.inc head/usr.sbin/ntp/config.h head/usr.sbin/ntp/ntp-keygen/Makefile head/usr.sbin/ntp/ntpd/Makefile head/usr.sbin/ntp/ntpdate/Makefile head/usr.sbin/ntp/ntpdc/Makefile head/usr.sbin/ntp/ntpq/Makefile head/usr.sbin/ntp/sntp/Makefile Modified: head/usr.sbin/ntp/Makefile.inc ============================================================================== --- head/usr.sbin/ntp/Makefile.inc Mon May 25 20:06:49 2015 (r283541) +++ head/usr.sbin/ntp/Makefile.inc Mon May 25 20:27:46 2015 (r283542) @@ -11,7 +11,7 @@ NTPDEFS= -DSYS_FREEBSD CFLAGS+= ${NTPDEFS} ${DEFS_LOCAL} ${CLOCKDEFS} .if ${MK_OPENSSL} != "no" && !defined(RELEASE_CRUNCH) -CFLAGS+= -DOPENSSL +CFLAGS+= -DOPENSSL -DUSE_OPENSSL_CRYPTO_RAND -DAUTOKEY .endif WARNS?= 0 Modified: head/usr.sbin/ntp/config.h ============================================================================== --- head/usr.sbin/ntp/config.h Mon May 25 20:06:49 2015 (r283541) +++ head/usr.sbin/ntp/config.h Mon May 25 20:27:46 2015 (r283542) @@ -9,7 +9,7 @@ /* #undef ADJTIME_IS_ACCURATE */ /* Support NTP Autokey protocol? */ -#define AUTOKEY 1 +/* #define AUTOKEY 1 */ /* why not HAVE_P_S? */ /* #undef CALL_PTHREAD_SETCONCURRENCY */ @@ -1578,7 +1578,7 @@ typedef unsigned int uintptr_t; #define USE_FSETOWNCTTY 1 /* Use OpenSSL's crypto random functions */ -#define USE_OPENSSL_CRYPTO_RAND 1 +/* #define USE_OPENSSL_CRYPTO_RAND 1 */ /* OK to use snprintb()? */ /* #undef USE_SNPRINTB */ Modified: head/usr.sbin/ntp/ntp-keygen/Makefile ============================================================================== --- head/usr.sbin/ntp/ntp-keygen/Makefile Mon May 25 20:06:49 2015 (r283541) +++ head/usr.sbin/ntp/ntp-keygen/Makefile Mon May 25 20:27:46 2015 (r283542) @@ -23,7 +23,7 @@ CFLAGS+= -I${.CURDIR}/../../../contrib/n LIBADD+= ntp opts pthread .if ${MK_OPENSSL} != "no" -LIBADD+= md crypto +LIBADD+= crypto .endif .include Modified: head/usr.sbin/ntp/ntpd/Makefile ============================================================================== --- head/usr.sbin/ntp/ntpd/Makefile Mon May 25 20:06:49 2015 (r283541) +++ head/usr.sbin/ntp/ntpd/Makefile Mon May 25 20:27:46 2015 (r283542) @@ -35,10 +35,12 @@ CFLAGS+= -I${.CURDIR}/../../../contrib/n -I${.CURDIR}/../ \ -I${.CURDIR} -LIBADD= parse ntp m rt opts md pthread +LIBADD= parse ntp m opts pthread .if ${MK_OPENSSL} != "no" LIBADD+= crypto +.else +LIBADD+= md .endif CLEANFILES+= .version version.c Modified: head/usr.sbin/ntp/ntpdate/Makefile ============================================================================== --- head/usr.sbin/ntp/ntpdate/Makefile Mon May 25 20:06:49 2015 (r283541) +++ head/usr.sbin/ntp/ntpdate/Makefile Mon May 25 20:27:46 2015 (r283542) @@ -14,10 +14,12 @@ CFLAGS+= -I${.CURDIR}/../../../contrib/n -I${.CURDIR}/../../../contrib/ntp/lib/isc/pthreads/include \ -I${.CURDIR}/../ -LIBADD= rt ntp m pthread +LIBADD= ntp m pthread .if ${MK_OPENSSL} != "no" -LIBADD+= md ssl crypto +LIBADD+= crypto +.else +LIBADD+= md .endif CLEANFILES+= .version version.c Modified: head/usr.sbin/ntp/ntpdc/Makefile ============================================================================== --- head/usr.sbin/ntp/ntpdc/Makefile Mon May 25 20:06:49 2015 (r283541) +++ head/usr.sbin/ntp/ntpdc/Makefile Mon May 25 20:27:46 2015 (r283542) @@ -18,12 +18,14 @@ CFLAGS+= -I${.CURDIR}/../../../contrib/n -I${.CURDIR}/../../../lib/libc/${MACHINE_ARCH} \ -I${.CURDIR}/../ -I${.CURDIR} -LIBADD= edit md ntp m readline opts ncurses pthread +LIBADD= edit ntp m opts pthread CFLAGS+= -DHAVE_LIBEDIT -DHAVE_READLINE_READLINE_H \ -I${DESTDIR}/${INCLUDEDIR}/edit .if ${MK_OPENSSL} != "no" -LIBADD+= ssl crypto +LIBADD+= crypto +.else +LIBADD+= md .endif CLEANFILES+= .version version.c Modified: head/usr.sbin/ntp/ntpq/Makefile ============================================================================== --- head/usr.sbin/ntp/ntpq/Makefile Mon May 25 20:06:49 2015 (r283541) +++ head/usr.sbin/ntp/ntpq/Makefile Mon May 25 20:27:46 2015 (r283542) @@ -21,10 +21,12 @@ CFLAGS+= -I${.CURDIR}/../../../contrib/n -I${.CURDIR}/../../../contrib/ntp/sntp/libopts \ -I${.CURDIR}/../ -LIBADD+= edit md ntp opts m pthread +LIBADD+= edit ntp opts m pthread .if ${MK_OPENSSL} != "no" -LIBADD+= ssl crypto +LIBADD+= crypto +.else +LIBADD+= md .endif CFLAGS+= -DHAVE_LIBEDIT -DHAVE_READLINE_READLINE_H \ Modified: head/usr.sbin/ntp/sntp/Makefile ============================================================================== --- head/usr.sbin/ntp/sntp/Makefile Mon May 25 20:06:49 2015 (r283541) +++ head/usr.sbin/ntp/sntp/Makefile Mon May 25 20:27:46 2015 (r283542) @@ -23,7 +23,9 @@ CFLAGS+= -I${.CURDIR}/../../../contrib/n LIBADD= m opts ntp ntpevent pthread .if ${MK_OPENSSL} != "no" -LIBADD+= md ssl crypto +LIBADD+= crypto +.else +LIBADD+= md .endif .include From owner-svn-src-all@FreeBSD.ORG Mon May 25 20:29:36 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D98DB377; Mon, 25 May 2015 20:29:36 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org (svn.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 C7635EE9; Mon, 25 May 2015 20:29:36 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PKTaEi044177; Mon, 25 May 2015 20:29:36 GMT (envelope-from bapt@FreeBSD.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PKTalQ044176; Mon, 25 May 2015 20:29:36 GMT (envelope-from bapt@FreeBSD.org) Message-Id: <201505252029.t4PKTalQ044176@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: bapt set sender to bapt@FreeBSD.org using -f From: Baptiste Daroussin Date: Mon, 25 May 2015 20:29:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283543 - head/gnu/lib X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 20:29:37 -0000 Author: bapt Date: Mon May 25 20:29:35 2015 New Revision: 283543 URL: https://svnweb.freebsd.org/changeset/base/283543 Log: ntp is now again libreadline free, so only build libreadline for gdb Modified: head/gnu/lib/Makefile Modified: head/gnu/lib/Makefile ============================================================================== --- head/gnu/lib/Makefile Mon May 25 20:27:46 2015 (r283542) +++ head/gnu/lib/Makefile Mon May 25 20:29:35 2015 (r283543) @@ -16,7 +16,7 @@ SUBDIR+= libssp SUBDIR+= tests .endif -.if ${MK_GDB} != "no" || ${MK_NTP} != "no" +.if ${MK_GDB} != "no" SUBDIR+= libreadline .endif From owner-svn-src-all@FreeBSD.ORG Mon May 25 20:36:05 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id AD524646; Mon, 25 May 2015 20:36:05 +0000 (UTC) (envelope-from baptiste.daroussin@gmail.com) Received: from mail-wg0-x234.google.com (mail-wg0-x234.google.com [IPv6:2a00:1450:400c:c00::234]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3E1A6160; Mon, 25 May 2015 20:36:05 +0000 (UTC) (envelope-from baptiste.daroussin@gmail.com) Received: by wgez8 with SMTP id z8so80557698wge.0; Mon, 25 May 2015 13:36:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=L04xd33yQUJpnwpEfjTlP0y05Ds7hKY8fbKq31d7fVc=; b=R4PwpITes2oTriCDiRE8/aT8DYELhCzjAeXK/RfVzohlJ4hD7W9mVh2ROQ7f/ikCLq zvpLi0I6pLIOZD1EHLV10CQOe751rd1BSOSJ5Jr31vOp5oiKks61AcVZLWJmDJio/2++ H/03gFmRtMsweQ9q/ZzB8U3mAtdDc0G7FI1SaeulxICnSnNi/OGFb06SsDfa4Omq4yEW GoVIrUB4rsBxBt0XoFavyTjx5OwINa20/qynwzVEU8scJ68HMGbsO06ngpFEWP2I4tBP axJ/6WzdHYfQPbijCrtVz0nuCfAwtvX9CcaF2wRBFthWWA/3jOpT2Rb3yvFrAC39/J53 GNqA== X-Received: by 10.180.14.193 with SMTP id r1mr33852757wic.47.1432586163783; Mon, 25 May 2015 13:36:03 -0700 (PDT) Received: from ivaldir.etoilebsd.net ([2001:41d0:8:db4c::1]) by mx.google.com with ESMTPSA id gi14sm18391293wjc.42.2015.05.25.13.36.02 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 25 May 2015 13:36:02 -0700 (PDT) Sender: Baptiste Daroussin Date: Mon, 25 May 2015 22:36:00 +0200 From: Baptiste Daroussin To: Cy schubert Cc: Cy Schubert , "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" Subject: Re: svn commit: r280849 - in head: contrib/ntp contrib/ntp/adjtimedcontrib/ntp/arlib contrib/ntp/clockstuff contrib/ntp/conf contrib/ntp/htmlcontrib/ntp/html/build contrib/ntp/html/drivers contrib/nt... Message-ID: <20150525203600.GC39108@ivaldir.etoilebsd.net> References: <556383e7.a5a9440a.7137.ffffe47c@mx.google.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="9Ek0hoCL9XbhcSqy" Content-Disposition: inline In-Reply-To: <556383e7.a5a9440a.7137.ffffe47c@mx.google.com> User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 20:36:05 -0000 --9Ek0hoCL9XbhcSqy Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, May 25, 2015 at 01:19:52PM -0700, Cy schubert wrote: > Thanks bapt@. I will take a look after work tonight. >=20 > ~Cy Actually I have been able to fix all the issues, but double check never hur= ts :) I have figured out that building WITHOUT_OPENSSL disables the AUTOKEY proto= col support so I bet keeping the switch in ntp makes sense (this is only used in ntp-keygen) which is why in this makefile there is no alternative to libcry= pto with libmd, so when one will build WITHOUT_OPENSSL it will be built without= the autokey feature. Best regards, Bapt --9Ek0hoCL9XbhcSqy Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iEYEARECAAYFAlVjh7AACgkQ8kTtMUmk6EymkACeKkQr3+gn0XanF7o1oVIvnyM3 l7cAniWQ6tJ+umEmDdTsPrL24Z0LHBzA =8niV -----END PGP SIGNATURE----- --9Ek0hoCL9XbhcSqy-- From owner-svn-src-all@FreeBSD.ORG Mon May 25 20:44:48 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id DAE3AB54; Mon, 25 May 2015 20:44:47 +0000 (UTC) (envelope-from dchagin@FreeBSD.org) Received: from svn.freebsd.org (svn.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 C80393F4; Mon, 25 May 2015 20:44:47 +0000 (UTC) (envelope-from dchagin@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PKilGT053403; Mon, 25 May 2015 20:44:47 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PKilPC053399; Mon, 25 May 2015 20:44:47 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505252044.t4PKilPC053399@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Mon, 25 May 2015 20:44:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283544 - in head/sys: amd64/linux32 compat/linux i386/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 20:44:48 -0000 Author: dchagin Date: Mon May 25 20:44:46 2015 New Revision: 283544 URL: https://svnweb.freebsd.org/changeset/base/283544 Log: When I merged the lemul branch I missied kib@'s r282708 commit. This is not the final fix as I need properly cleanup thread resources before other threads suicide. Tested by: Ruslan Makhmatkhanov Modified: head/sys/amd64/linux32/linux32_machdep.c head/sys/compat/linux/linux_emul.c head/sys/i386/linux/linux_machdep.c Modified: head/sys/amd64/linux32/linux32_machdep.c ============================================================================== --- head/sys/amd64/linux32/linux32_machdep.c Mon May 25 20:29:35 2015 (r283543) +++ head/sys/amd64/linux32/linux32_machdep.c Mon May 25 20:44:46 2015 (r283544) @@ -126,7 +126,6 @@ int linux_execve(struct thread *td, struct linux_execve_args *args) { struct image_args eargs; - struct vmspace *oldvmspace; char *path; int error; @@ -137,19 +136,11 @@ linux_execve(struct thread *td, struct l printf(ARGS(execve, "%s"), path); #endif - error = pre_execve(td, &oldvmspace); - if (error != 0) { - free(path, M_TEMP); - return (error); - } error = freebsd32_exec_copyin_args(&eargs, path, UIO_SYSSPACE, args->argp, args->envp); free(path, M_TEMP); if (error == 0) - error = kern_execve(td, &eargs, NULL); - if (error == 0) error = linux_common_execve(td, &eargs); - post_execve(td, error, oldvmspace); return (error); } Modified: head/sys/compat/linux/linux_emul.c ============================================================================== --- head/sys/compat/linux/linux_emul.c Mon May 25 20:29:35 2015 (r283543) +++ head/sys/compat/linux/linux_emul.c Mon May 25 20:44:46 2015 (r283544) @@ -172,27 +172,19 @@ linux_common_execve(struct thread *td, s { struct linux_pemuldata *pem; struct epoll_emuldata *emd; + struct vmspace *oldvmspace; struct linux_emuldata *em; struct proc *p; int error; p = td->td_proc; - /* - * Unlike FreeBSD abort all other threads before - * proceeding exec. - */ - PROC_LOCK(p); - /* See exit1() comments. */ - thread_suspend_check(0); - while (p->p_flag & P_HADTHREADS) { - if (!thread_single(p, SINGLE_EXIT)) - break; - thread_suspend_check(0); - } - PROC_UNLOCK(p); + error = pre_execve(td, &oldvmspace); + if (error != 0) + return (error); error = kern_execve(td, eargs, NULL); + post_execve(td, error, oldvmspace); if (error != 0) return (error); Modified: head/sys/i386/linux/linux_machdep.c ============================================================================== --- head/sys/i386/linux/linux_machdep.c Mon May 25 20:29:35 2015 (r283543) +++ head/sys/i386/linux/linux_machdep.c Mon May 25 20:44:46 2015 (r283544) @@ -104,7 +104,6 @@ int linux_execve(struct thread *td, struct linux_execve_args *args) { struct image_args eargs; - struct vmspace *oldvmspace; char *newpath; int error; @@ -115,19 +114,11 @@ linux_execve(struct thread *td, struct l printf(ARGS(execve, "%s"), newpath); #endif - error = pre_execve(td, &oldvmspace); - if (error != 0) { - free(newpath, M_TEMP); - return (error); - } error = exec_copyin_args(&eargs, newpath, UIO_SYSSPACE, args->argp, args->envp); free(newpath, M_TEMP); if (error == 0) - error = kern_execve(td, &eargs, NULL); - if (error == 0) error = linux_common_execve(td, &eargs); - post_execve(td, error, oldvmspace); return (error); } From owner-svn-src-all@FreeBSD.ORG Mon May 25 21:02:08 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 53F78FE0; Mon, 25 May 2015 21:02:08 +0000 (UTC) (envelope-from cschuber@gmail.com) Received: from mail-pa0-x231.google.com (mail-pa0-x231.google.com [IPv6:2607:f8b0:400e:c03::231]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 20F96A6F; Mon, 25 May 2015 21:02:08 +0000 (UTC) (envelope-from cschuber@gmail.com) Received: by pabru16 with SMTP id ru16so77101637pab.1; Mon, 25 May 2015 14:02:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:mime-version:from:subject:date:to:cc:content-type; bh=5Ua7TV0wokbkF5+Dow8Qyobh9Ia8RzLow0/3gaWDQts=; b=W2yQUGDqREVJRxLgWXtAEreyMrI6XcMm9o3RxN4tGk8VVpM1jnkw7RgAIt5f4T0teF 9QQJ8ObZ/bWpTlIFKXLPZqNmSRNuwJJmvi6ES6zu44GBrGPo4CUPdZrNmKXgKIp8nq1y TO3VqnSdBOtaa5hjdCDRwcYFU8b/0bG8I50mf3FSgjcZ8cDG1NROKyrmWQacWFkRCPNb 9/Hiqh2d5Pu4xB7/tKSzTP+mogTPWmpixAS8moDloJztxxqVn6oRL73fZlOONrQ24Dht wPQL1b3X1JsjKhex/RFuzjx+AqqPmZmgZJTYhMPWnZhunhjCgwjQCWaHJ0H6HK2odWXl Ltiw== X-Received: by 10.70.131.132 with SMTP id om4mr42485938pdb.30.1432587727468; Mon, 25 May 2015 14:02:07 -0700 (PDT) Received: from [10.168.3.106] (S0106d4ca6d8943b0.gv.shawcable.net. [24.68.134.59]) by mx.google.com with ESMTPSA id i15sm10871561pbq.60.2015.05.25.14.02.06 (version=SSLv3 cipher=RC4-SHA bits=128/128); Mon, 25 May 2015 14:02:06 -0700 (PDT) Message-ID: <55638dce.8f39440a.7f35.ffffe990@mx.google.com> MIME-Version: 1.0 From: Cy schubert Subject: RE: svn commit: r280849 - in head: contrib/ntpcontrib/ntp/adjtimedcontrib/ntp/arlib contrib/ntp/clockstuff contrib/ntp/confcontrib/ntp/htmlcontrib/ntp/html/build contrib/ntp/html/drivers contrib/nt... Date: Mon, 25 May 2015 14:02:07 -0700 To: Baptiste Daroussin CC: Cy Schubert , "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.20 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 21:02:08 -0000 I don't have internet access at the moment, just a cell phone with really c= rappy data performance, so I'm not in the know right now. But if you don't = mind I can make openssl a conditional. ~Cy -----Original Message----- From: Baptiste Daroussin Sent: 25/05/2015 13:36 To: Cy schubert Cc: Cy Schubert; src-committers@freebsd.org; svn-src-all@freebsd.org; svn-s= rc-head@freebsd.org Subject: Re: svn commit: r280849 - in head: contrib/ntpcontrib/ntp/adjtimed= contrib/ntp/arlib contrib/ntp/clockstuff contrib/ntp/confcontrib/ntp/htmlco= ntrib/ntp/html/build contrib/ntp/html/drivers contrib/nt... On Mon, May 25, 2015 at 01:19:52PM -0700, Cy schubert wrote: > Thanks bapt@. I will take a look after work tonight. >=20 > ~Cy Actually I have been able to fix all the issues, but double check never hur= ts :) I have figured out that building WITHOUT_OPENSSL disables the AUTOKEY proto= col support so I bet keeping the switch in ntp makes sense (this is only used i= n ntp-keygen) which is why in this makefile there is no alternative to libcry= pto with libmd, so when one will build WITHOUT_OPENSSL it will be built without= the autokey feature. Best regards, Bapt From owner-svn-src-all@FreeBSD.ORG Mon May 25 21:04:46 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8CD39290; Mon, 25 May 2015 21:04:46 +0000 (UTC) (envelope-from baptiste.daroussin@gmail.com) Received: from mail-wg0-x22b.google.com (mail-wg0-x22b.google.com [IPv6:2a00:1450:400c:c00::22b]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 1CC4BA93; Mon, 25 May 2015 21:04:46 +0000 (UTC) (envelope-from baptiste.daroussin@gmail.com) Received: by wgbgq6 with SMTP id gq6so80940270wgb.3; Mon, 25 May 2015 14:04:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=0X4cc0Sq0hy8Ldf/B8xOSx4xGpG/GZhaqouFUWE2EaY=; b=RKAnfCgvfqD/E5BBhfQtMmKCrumbycZnKBmEupJ2py2Olzw5aV34gRsK4uo83NM407 kVE04VAQtXJCjbCIoWKaCtw3VkSJ9fjl7GpqDYr7aKq7XCvnxWgsLUVCRNf3yF/X0VLt oU/VQpTqxiHbCp1LKxIJvWl1Z3du75TgngZYxrSl/8qwAlehT7ORZTkwBU2SJ3Icgna4 1ZF3PaISYidd+70wmiNvhOPd6J5/ysHZ0/mFAtLEKhk01fhSmf6f8Z2LEYZ+U2GkDtu6 oL///AkLF/Tb8VOOury4Yn5IQdTgsYbPPB8QOynAWt3+cYmalpi5QWa1u0OUGJJ3aPRY CKzw== X-Received: by 10.180.100.74 with SMTP id ew10mr35369290wib.12.1432587884543; Mon, 25 May 2015 14:04:44 -0700 (PDT) Received: from ivaldir.etoilebsd.net ([2001:41d0:8:db4c::1]) by mx.google.com with ESMTPSA id gw7sm13619600wib.15.2015.05.25.14.04.43 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 25 May 2015 14:04:43 -0700 (PDT) Sender: Baptiste Daroussin Date: Mon, 25 May 2015 23:04:41 +0200 From: Baptiste Daroussin To: Cy schubert Cc: "svn-src-head@freebsd.org" , "svn-src-all@freebsd.org" , "src-committers@freebsd.org" , Cy Schubert Subject: Re: svn commit: r280849 - in head: contrib/ntpcontrib/ntp/adjtimedcontrib/ntp/arlib contrib/ntp/clockstuff contrib/ntp/confcontrib/ntp/htmlcontrib/ntp/html/build contrib/ntp/html/drivers contrib/nt... Message-ID: <20150525210441.GE39108@ivaldir.etoilebsd.net> References: <55638dce.8f39440a.7f35.ffffe990@mx.google.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="LSp5EJdfMPwZcMS1" Content-Disposition: inline In-Reply-To: <55638dce.8f39440a.7f35.ffffe990@mx.google.com> User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 21:04:46 -0000 --LSp5EJdfMPwZcMS1 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, May 25, 2015 at 02:02:07PM -0700, Cy schubert wrote: > I don't have internet access at the moment, just a cell phone with really= crappy data performance, so I'm not in the know right now. But if you don'= t mind I can make openssl a conditional. >=20 > ~Cy This is what I did, no rush, I have fixed everthing in r283542 Best regards, Bapt --LSp5EJdfMPwZcMS1 Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iEYEARECAAYFAlVjjmkACgkQ8kTtMUmk6Ez5/QCdHirAPxpTVDAoriYbtSFAfSck njcAn1WuT/NqJVi5J2T6N5U7XBDYO0eN =9km5 -----END PGP SIGNATURE----- --LSp5EJdfMPwZcMS1-- From owner-svn-src-all@FreeBSD.ORG Mon May 25 22:12:31 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5593571A; Mon, 25 May 2015 22:12:31 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.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 4171FCCD; Mon, 25 May 2015 22:12:31 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PMCVre098842; Mon, 25 May 2015 22:12:31 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PMCVZW098841; Mon, 25 May 2015 22:12:31 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201505252212.t4PMCVZW098841@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Mon, 25 May 2015 22:12:31 +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: r283545 - stable/10/release X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 22:12:31 -0000 Author: gjb Date: Mon May 25 22:12:30 2015 New Revision: 283545 URL: https://svnweb.freebsd.org/changeset/base/283545 Log: MFC r282785, r282787, r282789, r282790, r282791, r282792, r282793, r282794, r282795, r282796, r282797, r282798, r282799, r283265, r283266, r283268, r283271, r283272, r283298, r283302: Add a new file, Makefile.mirrors, which is intended to replace a 474-line kludge of a shell script to pre-create the directory hierarchy on ftp-master. This is not in any way connected to the build, and there is no intention to do so. This only intent here is to try to make things a little bit easier. Always use the 'make install' directory as the source for images. For RE purposes, we use the default (/R within the chroot), so this helps avoid copying files multiple times and xz(1)-compressing additional times when not needed. Fix staging virtual machine images for ftp propagation. This Makefile is not for general consumption. Sponsored by: The FreeBSD Foundation Added: stable/10/release/Makefile.mirrors - copied, changed from r282785, head/release/Makefile.mirrors Modified: Directory Properties: stable/10/ (props changed) Copied and modified: stable/10/release/Makefile.mirrors (from r282785, head/release/Makefile.mirrors) ============================================================================== --- head/release/Makefile.mirrors Mon May 11 22:14:03 2015 (r282785, copy source) +++ stable/10/release/Makefile.mirrors Mon May 25 22:12:30 2015 (r283545) @@ -5,27 +5,29 @@ # You probably do not want to use this. Really. # You have been warned. # +# Seriously. +# +# Don't use this unless you know why you're using it. +# # $FreeBSD$ # .include "${.CURDIR}/Makefile" -FTPDIR?= /ftp +RELEASEDIR?= /R +FTPDIR?= ${RELEASEDIR}/ftp-stage STAGE_TARGETS?= iso-images-stage +.if (defined(EMBEDDED_TARGET) && !empty(EMBEDDED_TARGET)) || (defined(EMBEDDEDBUILD) && !empty(EMBEDDEDBUILD)) +. if ${TARGET} == "arm" || ${EMBEDDED_TARGET} == "arm" +EMBEDDED= 1 +. endif +.endif + # snapshot .if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT" SNAPSHOT= 1 TLD?= ${FTPDIR}/snapshots -BUILDDATE!= date -j -f '%s' $$(stat -f "%c" ${.OBJDIR}/dist/base/bin/sh) +%Y%m%d -. if ${TARGET} == "arm" && ${TARGET_ARCH} == "armv6" -. if !defined(BOARDNAME) || empty(BOARDNAME) -BOARDNAME= ${KERNCONF} -. endif -_SNAP_SUFFIX:= -${BOARDNAME}-${BUILDDATE} -. else # not arm/armv6 -_SNAP_SUFFIX:= -${BUILDDATE} -. endif . for _D in /usr/bin /usr/local/bin . for _S in svnversion svnliteversion . if exists(${_D}/${_S}) @@ -33,9 +35,16 @@ SVNVERSION?= ${_D}/${_S} . endif . endfor . endfor +. if exists(${.CURDIR}/${.OBJDIR}/dist/base/bin/sh) +BUILDDATE!= cd ${.CURDIR} && date -j -f '%s' $$(stat -f "%c" ${.OBJDIR}/dist/base/bin/sh) +%Y%m%d +. else +BUILDDATE!= date +%Y%m%d +. endif . if exists(${SVNVERSION}) && !empty(SVNVERSION) SVNREVISION!= ${SVNVERSION} ${WORLDDIR}/Makefile -_SNAP_SUFFIX:= ${_SNAP_SUFFIX}-r${SVNREVISION} +_SNAP_SUFFIX:= -r${SVNREVISION}-${BUILDDATE} +. else +_SNAP_SUFFIX:= -${BUILDDATE} . endif .else # release @@ -43,6 +52,20 @@ SNAPSHOT= TLD?= ${FTPDIR}/releases .endif +.if defined(EMBEDDED) && !empty(EMBEDDED) +. if ${TARGET} == "arm" && ${TARGET_ARCH} == "armv6" +. if !defined(BOARDNAME) && empty(BOARDNAME) +BOARDNAME:= ${KERNCONF} +. else +OLDNAME:= ${KERNCONF} +. endif +. if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT" +SNAPSHOT= 1 +. endif +IMAGES:= img +. endif # arm/armv6 +.endif # embedded + .if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES) STAGE_TARGETS+= vm-images-stage VM_DIR= ${TLD}/VM-IMAGES/${REVISION}-${BRANCH}/${TARGET_ARCH} @@ -54,75 +77,177 @@ SNAP_SUFFIX!= echo ${_SNAP_SUFFIX:S,^-, ISO_DIR= ${TLD}/${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION} FTP_DIR= ${TLD}/${TARGET}/${TARGET_ARCH}/${REVISION}-${BRANCH} +remove-old-bits: + rm -rf ${FTPDIR} + iso-images-stage: mkdir -p ${ISO_DIR} mkdir -p ${TLD}/ISO-IMAGES/${REVISION} -.for IMAGE in ${IMAGES} - cp -p ${.OBJDIR}/${IMAGE} ${ISO_DIR}/${OSRELEASE}-${IMAGE} -. if exists(/R/${IMAGE}.xz) - cp -p ${.OBJDIR}/${IMAGE}.xz ${ISO_DIR}/${OSRELEASE}-${IMAGE}.xz -. endif -.endfor -.if defined(SNAPSHOT) && !empty(SNAPSHOT) -. for IMAGE in ${IMAGES} - cd ${ISO_DIR} && mv ${OSRELEASE}-${IMAGE} \ - ${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} +.if exists(${RELEASEDIR}) + @# Assume we have images to copy. +. if defined(SNAPSHOT) && !empty(SNAPSHOT) + cd ${RELEASEDIR} && rm -f CHECKSUM.* +. for IMAGE in ${IMAGES} +. if defined(EMBEDDED) && !empty(EMBEDDED) +. if defined(OLDNAME) && !empty(OLDNAME) + @# arm/armv6 IMX6 -> WANDBOARD, for example. + cd ${RELEASEDIR} && \ + mv ${OSRELEASE}-${OLDNAME}.${IMAGE}.xz \ + ${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz +. endif + cd ${RELEASEDIR} && \ + mv ${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz \ + ${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz + cp -p ${RELEASEDIR}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz \ + ${ISO_DIR}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz cd ${TLD}/ISO-IMAGES/${REVISION} && \ ln -s \ - ../../${TARGET}/${TARGET_ARCH}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} -. endfor -. for CHECKSUM in ${CHECKSUM_FILES} -. if exists(${ISO_DIR}/CHECKSUM.${CHECKSUM}) - rm -f ${ISO_DIR}/CHECKSUM.${CHECKSUM} -. endif - cd ${ISO_DIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \ - CHECKSUM.${CHECKSUM}-${REVISION}-${BRANCH}-${SNAP_SUFFIX} -. endfor -.else # !snapshot - cd ${TLD}/ISO-IMAGES/${REVISION} && ln -s \ - ../../${TARGET}/${TARGET_ARCH}/${OSRELEASE}-${IMAGE} . - cd ${ISO_DIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \ - CHECKSUM.${CHECKSUM}-${REVISION}-${BRANCH}-${SNAP_SUFFIX} -.endif -.if exists(${.OBJDIR}/ftp) + ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz +. endif # not embedded +. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}) + cd ${RELEASEDIR} && \ + mv ${OSRELEASE}-${IMAGE} \ + ${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} || true + cp -p ${RELEASEDIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} \ + ${ISO_DIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} + cd ${TLD}/ISO-IMAGES/${REVISION} && \ + ln -s \ + ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} +. endif +. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz) + cd ${RELEASEDIR} && \ + mv ${OSRELEASE}-${IMAGE}.xz \ + ${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz || true + cp -p ${RELEASEDIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz \ + ${ISO_DIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz + cd ${TLD}/ISO-IMAGES/${REVISION} && \ + ln -s \ + ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz +. endif +. endfor # images loop + cd ${RELEASEDIR} && rm -f CHECKSUM.* +. for CHECKSUM in ${CHECKSUM_FILES} +. if defined(EMBEDDED) && !empty(EMBEDDED) + cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \ + CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX} + cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX} \ + ${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX} + cd ${TLD}/ISO-IMAGES/${REVISION} && \ + ln -s \ + ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX} +. else # not embedded + cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \ + CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX} + cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX} \ + ${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX} + cd ${TLD}/ISO-IMAGES/${REVISION} && \ + ln -s \ + ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX} +. endif # +. endfor # checksum files +. else # not snapshot +. for IMAGE in ${IMAGES} +. if defined(EMBEDDED) && !empty(EMBEDDED) +. if defined(OLDNAME) && !empty(OLDNAME) + @# arm/armv6 IMX6 -> WANDBOARD, for example. + cd ${RELEASEDIR} && \ + mv ${OSRELEASE}-${OLDNAME}.${IMAGE}.xz \ + ${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz +. endif + cp -p ${RELEASEDIR}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz \ + ${ISO_DIR}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz + cd ${TLD}/ISO-IMAGES/${REVISION} && \ + ln -s \ + ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz +. endif # not embedded +. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}) + cd ${RELEASEDIR} && \ + cp -p ${RELEASEDIR}/${OSRELEASE}-${IMAGE} \ + ${ISO_DIR}/${OSRELEASE}-${IMAGE} + cd ${TLD}/ISO-IMAGES/${REVISION} && \ + ln -s \ + ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE} +. endif +. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz) + cp -p ${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz \ + ${ISO_DIR}/${OSRELEASE}-${IMAGE}.xz + cd ${TLD}/ISO-IMAGES/${REVISION} && \ + ln -s \ + ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE}.xz +. endif +. endfor # images loop + cd ${RELEASEDIR} && rm -f CHECKSUM.* +. for CHECKSUM in ${CHECKSUM_FILES} +. if defined(EMBEDDED) && !empty(EMBEDDED) + cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \ + CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME} + cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME} \ + ${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME} + cd ${TLD}/ISO-IMAGES/${REVISION} && \ + ln -s \ + ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME} +. else # not embedded + cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \ + CHECKSUM.${CHECKSUM}-${OSRELEASE} + cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE} \ + ${ISO_DIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE} + cd ${TLD}/ISO-IMAGES/${REVISION} && \ + ln -s \ + ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE} +. endif +. endfor # checksum files +. endif # release +. if exists(${RELEASEDIR}/ftp) mkdir -p ${FTP_DIR} - cp ${.OBJDIR}/ftp/*.txz ${.OBJDIR}/ftp/MANIFEST ${FTP_DIR} + cp -p ${RELEASEDIR}/ftp/*.txz ${RELEASEDIR}/ftp/MANIFEST ${FTP_DIR} cd ${TLD}/${TARGET} && \ ln -s ${TARGET_ARCH}/${REVISION}-${BRANCH} \ ${REVISION}-${BRANCH} -.endif +. endif +.endif # no RELEASEDIR vm-images-stage: - @true -# mkdir -p ${VM_DIR} -#.if defined(SNAPSHOT) && !empty(SNAPSHOT) -# mkdir -p ${VM_DIR}/${BUILDDATE} -#. if exists(${VM_DIR}/Latest) -# unlink ${VM_DIR}/Latest -# cd ${VM_DIR} && ln -s ${BUILDDATE} Latest -#. endif -#. for VMIMAGE in ${VMIMAGES} -# cd /R/vmimages && cp -p ${VMIMAGE}.xz \ -# ${VM_DIR}/${BUILDDATE}/${OSRELEASE}-${SNAP_SUFFIX}-${VMIMAGE}.xz -# cd ${VM_DIR}/Latest && ln -s \ -# ../${BUILDDATE}/${OSRELEASE}-${SNAP_SUFFIX}-${VMIMAGE}.xz \ -# ${OSRELEASE}-${VMIMAGE}.xz -#. endfor -#. for CHECKSUM in ${CHECKSUM_FILES} -#. if exists(${VM_DIR}/${BUILDDATE}/CHECKSUM.${CHECKSUM}) -# rm -f ${VM_DIR}/${BUILDDATE}/CHECKSUM.${CHECKSUM} -#. endif -# cd ${VM_DIR}/${BUILDDATE} && ${CHECKSUM:tl} ${OSRELEASE}* > \ -# CHECKSUM.${CHECKSUM}-${REVISION}-${BRANCH}-${SNAP_SUFFIX} -# cd ${VM_DIR}/Latest && ln -s \ -# ${VM_DIR}/${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \ -# CHECKSUM.${CHECKSUM} -#. endfor -#.else # !snapshot -#. for CHECKSUM in ${CHECKSUM_FILES} -# cd /R/vmimages && cp -p CHECKSUM.${CHECKSUM}* \ -# ${VM_DIR}/${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} -#.endif + mkdir -p ${VM_DIR} +.if defined(SNAPSHOT) && !empty(SNAPSHOT) +. if exists(${VM_DIR}/Latest) + rm -rf ${VM_DIR}/Latest +. endif + mkdir -p ${VM_DIR}/Latest + mkdir -p ${VM_DIR}/${BUILDDATE} +. for VMFORMAT in ${VMFORMATS} + cd ${RELEASEDIR}/vmimages && \ + mv ${OSRELEASE}.${VMFORMAT}.xz \ + ${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz + cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz \ + ${VM_DIR}/${BUILDDATE}/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz + cd ${VM_DIR}/Latest && \ + ln -s ../${BUILDDATE}/${OSRELEASE}-${SNAP_SUFFIX}.${VMFORMAT}.xz \ + ${OSRELEASE}.${VMFORMAT}.xz +. endfor + cd ${RELEASEDIR}/vmimages && rm -f CHECKSUM.* +. for CHECKSUM in ${CHECKSUM_FILES} + cd ${RELEASEDIR}/vmimages && \ + ${CHECKSUM:tl} ${OSRELEASE}* > CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} + cp -p ${RELEASEDIR}/vmimages/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \ + ${VM_DIR}/${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} + cd ${VM_DIR}/Latest && \ + ln -s ../${BUILDDATE}/CHECKSUM.${CHECKSUM}-${SNAP_SUFFIX} \ + CHECKSUM.${CHECKSUM} +. endfor +.else # not snapshot +. if exists(${VM_DIR}/Latest) + rm -rf ${VM_DIR}/Latest +. endif + mkdir -p ${VM_DIR}/Latest +. for VMFORMAT in ${VMFORMATS} + cp -p ${RELEASEDIR}/vmimages/${OSRELEASE}.${VMFORMAT}.xz \ + ${VM_DIR}/Latest/${OSRELEASE}.${VMFORMAT}.xz +. endfor +. for CHECKSUM in ${CHECKSUM_FILES} + cp -p ${RELEASEDIR}/vmimages/CHECKSUM.${CHECKSUM} \ + ${VM_DIR}/Latest/CHECKSUM.${CHECKSUM} +. endfor +.endif -ftp-stage: ${STAGE_TARGETS} +ftp-stage: remove-old-bits ${STAGE_TARGETS} From owner-svn-src-all@FreeBSD.ORG Mon May 25 22:13:24 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 29E14856; Mon, 25 May 2015 22:13:24 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.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 1660ACD9; Mon, 25 May 2015 22:13:24 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PMDNx7099065; Mon, 25 May 2015 22:13:23 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PMDMLa099058; Mon, 25 May 2015 22:13:22 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <201505252213.t4PMDMLa099058@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Mon, 25 May 2015 22:13:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283546 - in head/sys: kern sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 22:13:24 -0000 Author: jhb Date: Mon May 25 22:13:22 2015 New Revision: 283546 URL: https://svnweb.freebsd.org/changeset/base/283546 Log: Add KTR tracing for some MI ptrace events. Differential Revision: https://reviews.freebsd.org/D2643 Reviewed by: kib Modified: head/sys/kern/kern_exit.c head/sys/kern/kern_fork.c head/sys/kern/kern_sig.c head/sys/kern/sys_process.c head/sys/sys/ktr_class.h Modified: head/sys/kern/kern_exit.c ============================================================================== --- head/sys/kern/kern_exit.c Mon May 25 22:12:30 2015 (r283545) +++ head/sys/kern/kern_exit.c Mon May 25 22:13:22 2015 (r283546) @@ -525,6 +525,8 @@ exit1(struct thread *td, int rv) */ while ((q = LIST_FIRST(&p->p_orphans)) != NULL) { PROC_LOCK(q); + CTR2(KTR_PTRACE, "exit: pid %d, clearing orphan %d", p->p_pid, + q->p_pid); clear_orphan(q); PROC_UNLOCK(q); } @@ -857,6 +859,9 @@ proc_reap(struct thread *td, struct proc t = proc_realparent(p); PROC_LOCK(t); PROC_LOCK(p); + CTR2(KTR_PTRACE, + "wait: traced child %d moved back to parent %d", p->p_pid, + t->p_pid); proc_reparent(p, t); p->p_oppid = 0; PROC_UNLOCK(p); @@ -1216,6 +1221,10 @@ loop: PROC_UNLOCK(q); } + CTR4(KTR_PTRACE, + "wait: returning trapped pid %d status %#x (xstat %d) xthread %d", + p->p_pid, W_STOPCODE(p->p_xstat), p->p_xstat, + p->p_xthread != NULL ? p->p_xthread->td_tid : -1); PROC_UNLOCK(p); return (0); } Modified: head/sys/kern/kern_fork.c ============================================================================== --- head/sys/kern/kern_fork.c Mon May 25 22:12:30 2015 (r283545) +++ head/sys/kern/kern_fork.c Mon May 25 22:13:22 2015 (r283546) @@ -1035,6 +1035,9 @@ fork_return(struct thread *td, struct tr dbg = p->p_pptr->p_pptr; p->p_flag |= P_TRACED; p->p_oppid = p->p_pptr->p_pid; + CTR2(KTR_PTRACE, + "fork_return: attaching to new child pid %d: oppid %d", + p->p_pid, p->p_oppid); proc_reparent(p, dbg); sx_xunlock(&proctree_lock); td->td_dbgflags |= TDB_CHILD; Modified: head/sys/kern/kern_sig.c ============================================================================== --- head/sys/kern/kern_sig.c Mon May 25 22:12:30 2015 (r283545) +++ head/sys/kern/kern_sig.c Mon May 25 22:13:22 2015 (r283546) @@ -2478,6 +2478,8 @@ ptracestop(struct thread *td, int sig) td->td_dbgflags |= TDB_XSIG; td->td_xsig = sig; + CTR4(KTR_PTRACE, "ptracestop: tid %d (pid %d) flags %#x sig %d", + td->td_tid, p->p_pid, td->td_dbgflags, sig); PROC_SLOCK(p); while ((p->p_flag & P_TRACED) && (td->td_dbgflags & TDB_XSIG)) { if (p->p_flag & P_SINGLE_EXIT) { Modified: head/sys/kern/sys_process.c ============================================================================== --- head/sys/kern/sys_process.c Mon May 25 22:12:30 2015 (r283545) +++ head/sys/kern/sys_process.c Mon May 25 22:13:22 2015 (r283546) @@ -432,6 +432,9 @@ ptrace_vm_entry(struct thread *td, struc free(freepath, M_TEMP); } } + if (error == 0) + CTR3(KTR_PTRACE, "PT_VM_ENTRY: pid %d, entry %d, start %p", + p->p_pid, pve->pve_entry, pve->pve_start); return (error); } @@ -826,6 +829,7 @@ kern_ptrace(struct thread *td, int req, if (p->p_flag & P_PPWAIT) p->p_flag |= P_PPTRACE; p->p_oppid = p->p_pptr->p_pid; + CTR1(KTR_PTRACE, "PT_TRACE_ME: pid %d", p->p_pid); break; case PT_ATTACH: @@ -845,17 +849,25 @@ kern_ptrace(struct thread *td, int req, proc_reparent(p, td->td_proc); } data = SIGSTOP; + CTR2(KTR_PTRACE, "PT_ATTACH: pid %d, oppid %d", p->p_pid, + p->p_oppid); goto sendsig; /* in PT_CONTINUE below */ case PT_CLEARSTEP: + CTR2(KTR_PTRACE, "PT_CLEARSTEP: tid %d (pid %d)", td2->td_tid, + p->p_pid); error = ptrace_clear_single_step(td2); break; case PT_SETSTEP: + CTR2(KTR_PTRACE, "PT_SETSTEP: tid %d (pid %d)", td2->td_tid, + p->p_pid); error = ptrace_single_step(td2); break; case PT_SUSPEND: + CTR2(KTR_PTRACE, "PT_SUSPEND: tid %d (pid %d)", td2->td_tid, + p->p_pid); td2->td_dbgflags |= TDB_SUSPEND; thread_lock(td2); td2->td_flags |= TDF_NEEDSUSPCHK; @@ -863,10 +875,15 @@ kern_ptrace(struct thread *td, int req, break; case PT_RESUME: + CTR2(KTR_PTRACE, "PT_RESUME: tid %d (pid %d)", td2->td_tid, + p->p_pid); td2->td_dbgflags &= ~TDB_SUSPEND; break; case PT_FOLLOW_FORK: + CTR3(KTR_PTRACE, "PT_FOLLOW_FORK: pid %d %s -> %s", p->p_pid, + p->p_flag & P_FOLLOWFORK ? "enabled" : "disabled", + data ? "enabled" : "disabled"); if (data) p->p_flag |= P_FOLLOWFORK; else @@ -887,6 +904,8 @@ kern_ptrace(struct thread *td, int req, switch (req) { case PT_STEP: + CTR2(KTR_PTRACE, "PT_STEP: tid %d (pid %d)", + td2->td_tid, p->p_pid); error = ptrace_single_step(td2); if (error) goto out; @@ -904,12 +923,25 @@ kern_ptrace(struct thread *td, int req, switch (req) { case PT_TO_SCE: p->p_stops |= S_PT_SCE; + CTR2(KTR_PTRACE, + "PT_TO_SCE: pid %d, stops = %#x", p->p_pid, + p->p_stops); break; case PT_TO_SCX: p->p_stops |= S_PT_SCX; + CTR2(KTR_PTRACE, + "PT_TO_SCX: pid %d, stops = %#x", p->p_pid, + p->p_stops); break; case PT_SYSCALL: p->p_stops |= S_PT_SCE | S_PT_SCX; + CTR2(KTR_PTRACE, + "PT_SYSCALL: pid %d, stops = %#x", p->p_pid, + p->p_stops); + break; + case PT_CONTINUE: + CTR1(KTR_PTRACE, + "PT_CONTINUE: pid %d", p->p_pid); break; } break; @@ -924,7 +956,11 @@ kern_ptrace(struct thread *td, int req, proc_reparent(p, pp); if (pp == initproc) p->p_sigparent = SIGCHLD; - } + CTR2(KTR_PTRACE, + "PT_DETACH: pid %d reparented to pid %d", + p->p_pid, pp->p_pid); + } else + CTR1(KTR_PTRACE, "PT_DETACH: pid %d", p->p_pid); p->p_oppid = 0; p->p_flag &= ~(P_TRACED | P_WAITED | P_FOLLOWFORK); @@ -1001,6 +1037,14 @@ kern_ptrace(struct thread *td, int req, } if (!write) td->td_retval[0] = tmp; + if (error == 0) { + if (write) + CTR3(KTR_PTRACE, "PT_WRITE: pid %d: %p <= %#x", + p->p_pid, addr, data); + else + CTR3(KTR_PTRACE, "PT_READ: pid %d: %p >= %#x", + p->p_pid, addr, tmp); + } PROC_LOCK(p); break; @@ -1033,10 +1077,14 @@ kern_ptrace(struct thread *td, int req, switch (tmp) { case PIOD_READ_D: case PIOD_READ_I: + CTR3(KTR_PTRACE, "PT_IO: pid %d: READ (%p, %#x)", + p->p_pid, (uintptr_t)uio.uio_offset, uio.uio_resid); uio.uio_rw = UIO_READ; break; case PIOD_WRITE_D: case PIOD_WRITE_I: + CTR3(KTR_PTRACE, "PT_IO: pid %d: WRITE (%p, %#x)", + p->p_pid, (uintptr_t)uio.uio_offset, uio.uio_resid); td2->td_dbgflags |= TDB_USERWR; uio.uio_rw = UIO_WRITE; break; @@ -1056,33 +1104,46 @@ kern_ptrace(struct thread *td, int req, break; case PT_KILL: + CTR1(KTR_PTRACE, "PT_KILL: pid %d", p->p_pid); data = SIGKILL; goto sendsig; /* in PT_CONTINUE above */ case PT_SETREGS: + CTR2(KTR_PTRACE, "PT_SETREGS: tid %d (pid %d)", td2->td_tid, + p->p_pid); td2->td_dbgflags |= TDB_USERWR; error = PROC_WRITE(regs, td2, addr); break; case PT_GETREGS: + CTR2(KTR_PTRACE, "PT_GETREGS: tid %d (pid %d)", td2->td_tid, + p->p_pid); error = PROC_READ(regs, td2, addr); break; case PT_SETFPREGS: + CTR2(KTR_PTRACE, "PT_SETFPREGS: tid %d (pid %d)", td2->td_tid, + p->p_pid); td2->td_dbgflags |= TDB_USERWR; error = PROC_WRITE(fpregs, td2, addr); break; case PT_GETFPREGS: + CTR2(KTR_PTRACE, "PT_GETFPREGS: tid %d (pid %d)", td2->td_tid, + p->p_pid); error = PROC_READ(fpregs, td2, addr); break; case PT_SETDBREGS: + CTR2(KTR_PTRACE, "PT_SETDBREGS: tid %d (pid %d)", td2->td_tid, + p->p_pid); td2->td_dbgflags |= TDB_USERWR; error = PROC_WRITE(dbregs, td2, addr); break; case PT_GETDBREGS: + CTR2(KTR_PTRACE, "PT_GETDBREGS: tid %d (pid %d)", td2->td_tid, + p->p_pid); error = PROC_READ(dbregs, td2, addr); break; @@ -1145,13 +1206,21 @@ kern_ptrace(struct thread *td, int req, if (wrap32) ptrace_lwpinfo_to32(pl, pl32); #endif + CTR5(KTR_PTRACE, + "PT_LWPINFO: tid %d (pid %d) event %d flags %#x child pid %d", + td2->td_tid, p->p_pid, pl->pl_event, pl->pl_flags, + pl->pl_child_pid); break; case PT_GETNUMLWPS: + CTR2(KTR_PTRACE, "PT_GETNUMLWPS: pid %d: %d threads", p->p_pid, + p->p_numthreads); td->td_retval[0] = p->p_numthreads; break; case PT_GETLWPLIST: + CTR3(KTR_PTRACE, "PT_GETLWPLIST: pid %d: data %d, actual %d", + p->p_pid, data, p->p_numthreads); if (data <= 0) { error = EINVAL; break; @@ -1175,6 +1244,8 @@ kern_ptrace(struct thread *td, int req, break; case PT_VM_TIMESTAMP: + CTR2(KTR_PTRACE, "PT_VM_TIMESTAMP: pid %d: timestamp %d", + p->p_pid, p->p_vmspace->vm_map.timestamp); td->td_retval[0] = p->p_vmspace->vm_map.timestamp; break; @@ -1225,6 +1296,8 @@ stopevent(struct proc *p, unsigned int e PROC_LOCK_ASSERT(p, MA_OWNED); p->p_step = 1; + CTR3(KTR_PTRACE, "stopevent: pid %d event %u val %u", p->p_pid, event, + val); do { p->p_xstat = val; p->p_xthread = NULL; Modified: head/sys/sys/ktr_class.h ============================================================================== --- head/sys/sys/ktr_class.h Mon May 25 22:12:30 2015 (r283545) +++ head/sys/sys/ktr_class.h Mon May 25 22:13:22 2015 (r283546) @@ -71,7 +71,8 @@ #define KTR_INET6 0x10000000 /* IPv6 stack */ #define KTR_SCHED 0x20000000 /* Machine parsed sched info. */ #define KTR_BUF 0x40000000 /* Buffer cache */ -#define KTR_ALL 0x7fffffff +#define KTR_PTRACE 0x80000000 /* Process debugging. */ +#define KTR_ALL 0xffffffff /* KTR trace classes to compile in */ #ifdef KTR From owner-svn-src-all@FreeBSD.ORG Mon May 25 22:37:51 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 48FFFD8B; Mon, 25 May 2015 22:37:51 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 237B4188; Mon, 25 May 2015 22:37:51 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (pool-173-54-116-245.nwrknj.fios.verizon.net [173.54.116.245]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 0DA27B915; Mon, 25 May 2015 18:37:49 -0400 (EDT) From: John Baldwin To: Slawa Olhovchenkov Cc: Chagin Dmitry , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r283424 - in head/sys: amd64/linux modules/linux64 Date: Mon, 25 May 2015 18:09:59 -0400 Message-ID: <3477965.eCK5d68YxY@ralph.baldwin.cx> User-Agent: KMail/4.14.3 (FreeBSD/10.1-STABLE; KDE/4.14.3; amd64; ; ) In-Reply-To: <20150525172734.GR21070@zxy.spb.ru> References: <201505241607.t4OG7C7b073936@svn.freebsd.org> <1834151.lrAIDRMoJM@ralph.baldwin.cx> <20150525172734.GR21070@zxy.spb.ru> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Mon, 25 May 2015 18:37:49 -0400 (EDT) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 22:37:51 -0000 On Monday, May 25, 2015 08:27:34 PM Slawa Olhovchenkov wrote: > On Mon, May 25, 2015 at 12:32:41PM -0400, John Baldwin wrote: > > > On Monday, May 25, 2015 06:13:39 PM Slawa Olhovchenkov wrote: > > > On Mon, May 25, 2015 at 10:40:09AM -0400, John Baldwin wrote: > > > > > > > Some other related questions are: can we revive print/acroread now and or > > > > use a 64-bit flash plugin after these changes? > > > > > > I am still use print/acroread. > > > As I know removing print/acroread irrelevant to linuxator. > > > This is will by security reasson. > > > I am don't open suspicious pdf from suspicious source and just ignore > > > this removing. > > > > I mean more if these updates allow us to update to a newer version of > > print/acroread that would no longer be vulnerable (if such a thing exists) > > whether 32- or 64-bit. > > Currenly I don't see any linux in Acrobat Reader support OS: https://get.adobe.com/reader/otherversions/ Humm, it seems it was pulled last year. :-/ -- John Baldwin From owner-svn-src-all@FreeBSD.ORG Mon May 25 23:27:18 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 177053CF; Mon, 25 May 2015 23:27:18 +0000 (UTC) (envelope-from ian@FreeBSD.org) Received: from svn.freebsd.org (svn.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 0536EE58; Mon, 25 May 2015 23:27:18 +0000 (UTC) (envelope-from ian@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4PNRHfu033891; Mon, 25 May 2015 23:27:17 GMT (envelope-from ian@FreeBSD.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4PNRDaA033870; Mon, 25 May 2015 23:27:13 GMT (envelope-from ian@FreeBSD.org) Message-Id: <201505252327.t4PNRDaA033870@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ian set sender to ian@FreeBSD.org using -f From: Ian Lepore Date: Mon, 25 May 2015 23:27:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283547 - head/sys/arm/conf X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 23:27:18 -0000 Author: ian Date: Mon May 25 23:27:13 2015 New Revision: 283547 URL: https://svnweb.freebsd.org/changeset/base/283547 Log: Ensure that all arm kernel configs contain ALT_BREAK_TO_DEBUGGER and not BREAK_TO_DEBUGGER if they have a serial console (most do). A burst of serial line noise (such as unplugging a usb serial adapter) can look like a break and drop a working system into the debugger. The alt break sequence (~^B) works fine on both serial and non-serial consoles. Modified: head/sys/arm/conf/ALPINE head/sys/arm/conf/BEAGLEBONE head/sys/arm/conf/CUBIEBOARD head/sys/arm/conf/CUBIEBOARD2 head/sys/arm/conf/DOCKSTAR head/sys/arm/conf/DREAMPLUG-1001 head/sys/arm/conf/EFIKA_MX head/sys/arm/conf/EXYNOS5.common head/sys/arm/conf/PANDABOARD head/sys/arm/conf/RK3188 head/sys/arm/conf/RPI-B head/sys/arm/conf/RPI2 head/sys/arm/conf/SOCKIT.common head/sys/arm/conf/VYBRID head/sys/arm/conf/ZEDBOARD Modified: head/sys/arm/conf/ALPINE ============================================================================== --- head/sys/arm/conf/ALPINE Mon May 25 22:13:22 2015 (r283546) +++ head/sys/arm/conf/ALPINE Mon May 25 23:27:13 2015 (r283547) @@ -31,7 +31,7 @@ options SMP # Enable multiple cores # Debugging makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols -options BREAK_TO_DEBUGGER +options ALT_BREAK_TO_DEBUGGER options KDB options DDB #Enable the kernel debugger Modified: head/sys/arm/conf/BEAGLEBONE ============================================================================== --- head/sys/arm/conf/BEAGLEBONE Mon May 25 22:13:22 2015 (r283546) +++ head/sys/arm/conf/BEAGLEBONE Mon May 25 23:27:13 2015 (r283547) @@ -40,7 +40,7 @@ options PLATFORM # Debugging for use in -current makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols -options BREAK_TO_DEBUGGER +options ALT_BREAK_TO_DEBUGGER #options VERBOSE_SYSINIT # Enable verbose sysinit messages options KDB # Enable kernel debugger support # For minimum debugger support (stable branch) use: Modified: head/sys/arm/conf/CUBIEBOARD ============================================================================== --- head/sys/arm/conf/CUBIEBOARD Mon May 25 22:13:22 2015 (r283546) +++ head/sys/arm/conf/CUBIEBOARD Mon May 25 23:27:13 2015 (r283547) @@ -29,7 +29,7 @@ options SCHED_4BSD # 4BSD scheduler # Debugging for use in -current makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols -options BREAK_TO_DEBUGGER +options ALT_BREAK_TO_DEBUGGER #options VERBOSE_SYSINIT # Enable verbose sysinit messages options KDB # Enable kernel debugger support # For minimum debugger support (stable branch) use: Modified: head/sys/arm/conf/CUBIEBOARD2 ============================================================================== --- head/sys/arm/conf/CUBIEBOARD2 Mon May 25 22:13:22 2015 (r283546) +++ head/sys/arm/conf/CUBIEBOARD2 Mon May 25 23:27:13 2015 (r283547) @@ -30,7 +30,7 @@ options SMP # Enable multiple cores # Debugging for use in -current makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols -options BREAK_TO_DEBUGGER +options ALT_BREAK_TO_DEBUGGER #options VERBOSE_SYSINIT # Enable verbose sysinit messages options KDB # Enable kernel debugger support # For minimum debugger support (stable branch) use: Modified: head/sys/arm/conf/DOCKSTAR ============================================================================== --- head/sys/arm/conf/DOCKSTAR Mon May 25 22:13:22 2015 (r283546) +++ head/sys/arm/conf/DOCKSTAR Mon May 25 23:27:13 2015 (r283547) @@ -50,7 +50,6 @@ options _KPOSIX_PRIORITY_SCHEDULING # P # Debugging for use in -current makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols -options BREAK_TO_DEBUGGER options ALT_BREAK_TO_DEBUGGER options KDB # Enable kernel debugger support options DDB # Enable the kernel debugger Modified: head/sys/arm/conf/DREAMPLUG-1001 ============================================================================== --- head/sys/arm/conf/DREAMPLUG-1001 Mon May 25 22:13:22 2015 (r283546) +++ head/sys/arm/conf/DREAMPLUG-1001 Mon May 25 23:27:13 2015 (r283547) @@ -53,7 +53,6 @@ options _KPOSIX_PRIORITY_SCHEDULING # P # Debugging for use in -current makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols -options BREAK_TO_DEBUGGER options ALT_BREAK_TO_DEBUGGER options KDB # Enable kernel debugger support options DDB # Enable the kernel debugger Modified: head/sys/arm/conf/EFIKA_MX ============================================================================== --- head/sys/arm/conf/EFIKA_MX Mon May 25 22:13:22 2015 (r283546) +++ head/sys/arm/conf/EFIKA_MX Mon May 25 23:27:13 2015 (r283547) @@ -38,7 +38,7 @@ options INCLUDE_CONFIG_FILE # Include t # Debugging for use in -current makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols -options BREAK_TO_DEBUGGER +options ALT_BREAK_TO_DEBUGGER #options VERBOSE_SYSINIT # Enable verbose sysinit messages options KDB # Enable kernel debugger support # For minimum debugger support (stable branch) use: Modified: head/sys/arm/conf/EXYNOS5.common ============================================================================== --- head/sys/arm/conf/EXYNOS5.common Mon May 25 22:13:22 2015 (r283546) +++ head/sys/arm/conf/EXYNOS5.common Mon May 25 23:27:13 2015 (r283547) @@ -58,7 +58,7 @@ options SMP # Enable multiple cores # Debugging for use in -current makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols -options BREAK_TO_DEBUGGER +options ALT_BREAK_TO_DEBUGGER #options VERBOSE_SYSINIT # Enable verbose sysinit messages options KDB # Enable kernel debugger support # For minimum debugger support (stable branch) use: Modified: head/sys/arm/conf/PANDABOARD ============================================================================== --- head/sys/arm/conf/PANDABOARD Mon May 25 22:13:22 2015 (r283546) +++ head/sys/arm/conf/PANDABOARD Mon May 25 23:27:13 2015 (r283547) @@ -37,7 +37,7 @@ options SMP # Enable multiple cores # Debugging for use in -current makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols -options BREAK_TO_DEBUGGER +options ALT_BREAK_TO_DEBUGGER #options VERBOSE_SYSINIT # Enable verbose sysinit messages options KDB # Enable kernel debugger support # For minimum debugger support (stable branch) use: Modified: head/sys/arm/conf/RK3188 ============================================================================== --- head/sys/arm/conf/RK3188 Mon May 25 22:13:22 2015 (r283546) +++ head/sys/arm/conf/RK3188 Mon May 25 23:27:13 2015 (r283547) @@ -29,7 +29,7 @@ options SMP # Enable multiple cores # Debugging for use in -current makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols -options BREAK_TO_DEBUGGER +options ALT_BREAK_TO_DEBUGGER #options VERBOSE_SYSINIT # Enable verbose sysinit messages options KDB # Enable kernel debugger support # For minimum debugger support (stable branch) use: Modified: head/sys/arm/conf/RPI-B ============================================================================== --- head/sys/arm/conf/RPI-B Mon May 25 22:13:22 2015 (r283546) +++ head/sys/arm/conf/RPI-B Mon May 25 23:27:13 2015 (r283547) @@ -30,7 +30,6 @@ options PLATFORM # Debugging for use in -current makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols -options BREAK_TO_DEBUGGER options ALT_BREAK_TO_DEBUGGER #options VERBOSE_SYSINIT # Enable verbose sysinit messages options KDB # Enable kernel debugger support Modified: head/sys/arm/conf/RPI2 ============================================================================== --- head/sys/arm/conf/RPI2 Mon May 25 22:13:22 2015 (r283546) +++ head/sys/arm/conf/RPI2 Mon May 25 23:27:13 2015 (r283547) @@ -31,7 +31,6 @@ options PLATFORM # Debugging for use in -current makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols -options BREAK_TO_DEBUGGER options ALT_BREAK_TO_DEBUGGER #options VERBOSE_SYSINIT # Enable verbose sysinit messages options KDB # Enable kernel debugger support Modified: head/sys/arm/conf/SOCKIT.common ============================================================================== --- head/sys/arm/conf/SOCKIT.common Mon May 25 22:13:22 2015 (r283546) +++ head/sys/arm/conf/SOCKIT.common Mon May 25 23:27:13 2015 (r283547) @@ -31,7 +31,7 @@ options SMP # Enable multiple cores # Debugging for use in -current makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols -options BREAK_TO_DEBUGGER +options ALT_BREAK_TO_DEBUGGER #options VERBOSE_SYSINIT # Enable verbose sysinit messages options KDB # Enable kernel debugger support # For minimum debugger support (stable branch) use: Modified: head/sys/arm/conf/VYBRID ============================================================================== --- head/sys/arm/conf/VYBRID Mon May 25 22:13:22 2015 (r283546) +++ head/sys/arm/conf/VYBRID Mon May 25 23:27:13 2015 (r283547) @@ -31,7 +31,7 @@ options SCHED_4BSD # 4BSD scheduler # Debugging for use in -current makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols -options BREAK_TO_DEBUGGER +options ALT_BREAK_TO_DEBUGGER #options VERBOSE_SYSINIT # Enable verbose sysinit messages options KDB # Enable kernel debugger support # For minimum debugger support (stable branch) use: Modified: head/sys/arm/conf/ZEDBOARD ============================================================================== --- head/sys/arm/conf/ZEDBOARD Mon May 25 22:13:22 2015 (r283546) +++ head/sys/arm/conf/ZEDBOARD Mon May 25 23:27:13 2015 (r283547) @@ -30,7 +30,7 @@ options SMP # Enable multiple cores # Debugging for use in -current makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols -#options BREAK_TO_DEBUGGER +options ALT_BREAK_TO_DEBUGGER options KDB # Enable kernel debugger support # For minimum debugger support (stable branch) use: #options KDB_TRACE # Print a stack trace for a panic From owner-svn-src-all@FreeBSD.ORG Mon May 25 23:51:48 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 6EA5678B; Mon, 25 May 2015 23:51:48 +0000 (UTC) (envelope-from jmg@gold.funkthat.com) Received: from gold.funkthat.com (gate2.funkthat.com [208.87.223.18]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "gold.funkthat.com", Issuer "gold.funkthat.com" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4B2C56B4; Mon, 25 May 2015 23:51:47 +0000 (UTC) (envelope-from jmg@gold.funkthat.com) Received: from gold.funkthat.com (localhost [127.0.0.1]) by gold.funkthat.com (8.14.5/8.14.5) with ESMTP id t4PNplf0035304 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 25 May 2015 16:51:47 -0700 (PDT) (envelope-from jmg@gold.funkthat.com) Received: (from jmg@localhost) by gold.funkthat.com (8.14.5/8.14.5/Submit) id t4PNplrj035303; Mon, 25 May 2015 16:51:47 -0700 (PDT) (envelope-from jmg) Date: Mon, 25 May 2015 16:51:47 -0700 From: John-Mark Gurney To: Ian Lepore Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283547 - head/sys/arm/conf Message-ID: <20150525235147.GJ37063@funkthat.com> References: <201505252327.t4PNRDaA033870@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201505252327.t4PNRDaA033870@svn.freebsd.org> X-Operating-System: FreeBSD 9.1-PRERELEASE amd64 X-PGP-Fingerprint: 54BA 873B 6515 3F10 9E88 9322 9CB1 8F74 6D3F A396 X-Files: The truth is out there X-URL: http://resnet.uoregon.edu/~gurney_j/ X-Resume: http://resnet.uoregon.edu/~gurney_j/resume.html X-TipJar: bitcoin:13Qmb6AeTgQecazTWph4XasEsP7nGRbAPE X-to-the-FBI-CIA-and-NSA: HI! HOW YA DOIN? can i haz chizburger? User-Agent: Mutt/1.5.21 (2010-09-15) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (gold.funkthat.com [127.0.0.1]); Mon, 25 May 2015 16:51:47 -0700 (PDT) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2015 23:51:48 -0000 Ian Lepore wrote this message on Mon, May 25, 2015 at 23:27 +0000: > Author: ian > Date: Mon May 25 23:27:13 2015 > New Revision: 283547 > URL: https://svnweb.freebsd.org/changeset/base/283547 > > Log: > Ensure that all arm kernel configs contain ALT_BREAK_TO_DEBUGGER and not > BREAK_TO_DEBUGGER if they have a serial console (most do). A burst of > serial line noise (such as unplugging a usb serial adapter) can look like > a break and drop a working system into the debugger. The alt break sequence > (~^B) works fine on both serial and non-serial consoles. Just so you know, this removes support for video console to break into the debugger via keyboard... This mean ctrl-alt-esc and other key sequences won't work anymore... -- John-Mark Gurney Voice: +1 415 225 5579 "All that I will do, has been done, All that I have, has not." From owner-svn-src-all@FreeBSD.ORG Tue May 26 00:18:10 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id DD13C2E4 for ; Tue, 26 May 2015 00:18:10 +0000 (UTC) (envelope-from bms@fastmail.net) Received: from out5-smtp.messagingengine.com (out5-smtp.messagingengine.com [66.111.4.29]) (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 A29FBBB1 for ; Tue, 26 May 2015 00:18:10 +0000 (UTC) (envelope-from bms@fastmail.net) Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 935B320835 for ; Mon, 25 May 2015 20:18:03 -0400 (EDT) Received: from frontend2 ([10.202.2.161]) by compute1.internal (MEProxy); Mon, 25 May 2015 20:18:03 -0400 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=fastmail.net; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-sasl-enc :x-sasl-enc; s=mesmtp; bh=1ImdeUjagN8Y/okZwpQzNVSvFuk=; b=eY5XvJ DtpIb7FoKqJNaLh4aOkmXoiUAESTUcAAeFl1M/NhrFY+DN0R7ZRy+2oVXG8cxlAS sd5ZPfpjzEDtjKU4UUZvoqAxSY4dQq9eNqLLECKkWZhHJgM2QVK7ZRKhcSbeI8ku IpByiT54yGeYrhSuCqCVdu9UhKozzYInBbm9g= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-sasl-enc:x-sasl-enc; s=smtpout; bh=1ImdeUjagN8Y/ok ZwpQzNVSvFuk=; b=iQB8GVvnqDYjonhoUvskj6fshXF27RS4qJYQrNXptp842bN Uqe0FfUsyOZxMdHR8PmQFLs+7+soTV0+uyd4w3bz6qKNh9dunO338O002qvS4H1u 8559xvaB6MoY51o4FNGVgaXHiKN2ZeVFwn4liwbBkSVksQSuC2zT5RMJS/gA= X-Sasl-enc: AhVzKBKj+1aWNNmWivcJM5zlMHHNs3TavvK8ioMeRgTB 1432599483 Received: from [192.168.1.66] (unknown [94.194.112.252]) by mail.messagingengine.com (Postfix) with ESMTPA id 69D5A68013B; Mon, 25 May 2015 20:18:02 -0400 (EDT) Message-ID: <5563BBB9.7040105@fastmail.net> Date: Tue, 26 May 2015 01:18:01 +0100 From: Bruce Simpson User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Slawa Olhovchenkov , John Baldwin CC: Chagin Dmitry , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r283424 - in head/sys: amd64/linux modules/linux64 References: <201505241607.t4OG7C7b073936@svn.freebsd.org> <3590632.VFQBH2fsZP@ralph.baldwin.cx> <20150525151339.GM1394@zxy.spb.ru> <1834151.lrAIDRMoJM@ralph.baldwin.cx> <20150525172734.GR21070@zxy.spb.ru> In-Reply-To: <20150525172734.GR21070@zxy.spb.ru> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 00:18:11 -0000 All, The enhancements to the Linux runtime are probably of more interest to folk porting server applications; I am particularly happy to see recvmmsg() and sendmmsg() go in. It might also be wise to emulate the getrandom() API, even if this is only in terms of wrapping the relevant sysctl for now. On 25/05/2015 18:27, Slawa Olhovchenkov wrote: > Currenly I don't see any linux in Acrobat Reader support OS: > https://get.adobe.com/reader/otherversions/ It got pulled. Of course, support for PDF's forms varies greatly outside of official Adobe product. A better alternative might be the MuPDF backend for KDE Okular, or for Zathura, neither of which are packaged anywhere in the Linux world yet. Of course, this could be built natively, without needing the Linux runtime support. I've noticed that rendering performance seems disappointing in the open source Linux PDF readers, as compared to OS X Preview.app on similar hardware. Bruce From owner-svn-src-all@FreeBSD.ORG Tue May 26 00:44:30 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B10A868D; Tue, 26 May 2015 00:44:30 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.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 9F2BF20E; Tue, 26 May 2015 00:44:30 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4Q0iUh5074821; Tue, 26 May 2015 00:44:30 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4Q0iUvk074820; Tue, 26 May 2015 00:44:30 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201505260044.t4Q0iUvk074820@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Tue, 26 May 2015 00:44:30 +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: r283548 - stable/10/release/i386 X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 00:44:30 -0000 Author: gjb Date: Tue May 26 00:44:29 2015 New Revision: 283548 URL: https://svnweb.freebsd.org/changeset/base/283548 Log: MFC r283307: Use mkimg(1) to create the i386 memstick images, similar to how is done for amd64. The exception here is there is no EFI partition for i386. Sponsored by: The FreeBSD Foundation Modified: stable/10/release/i386/make-memstick.sh Directory Properties: stable/10/ (props changed) Modified: stable/10/release/i386/make-memstick.sh ============================================================================== --- stable/10/release/i386/make-memstick.sh Mon May 25 23:27:13 2015 (r283547) +++ stable/10/release/i386/make-memstick.sh Tue May 26 00:44:29 2015 (r283548) @@ -29,20 +29,13 @@ if [ -e ${2} ]; then fi echo '/dev/ufs/FreeBSD_Install / ufs ro,noatime 1 1' > ${1}/etc/fstab -makefs -B little -o label=FreeBSD_Install ${2} ${1} +makefs -B little -o label=FreeBSD_Install ${2}.part ${1} if [ $? -ne 0 ]; then echo "makefs failed" exit 1 fi rm ${1}/etc/fstab -unit=$(mdconfig -a -t vnode -f ${2}) -if [ $? -ne 0 ]; then - echo "mdconfig failed" - exit 1 -fi -gpart create -s BSD ${unit} -gpart bootcode -b ${1}/boot/boot ${unit} -gpart add -t freebsd-ufs ${unit} -mdconfig -d -u ${unit} +mkimg -s gpt -b ${1}/boot/pmbr -p freebsd-boot:=${1}/boot/gptboot -p freebsd-ufs:=${2}.part -p freebsd-swap::1M -o ${2} +rm ${2}.part From owner-svn-src-all@FreeBSD.ORG Tue May 26 01:09:56 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D2316AEB; Tue, 26 May 2015 01:09:56 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org (svn.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 C0E0B8DA; Tue, 26 May 2015 01:09:56 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4Q19ugr085561; Tue, 26 May 2015 01:09:56 GMT (envelope-from bapt@FreeBSD.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4Q19uup085559; Tue, 26 May 2015 01:09:56 GMT (envelope-from bapt@FreeBSD.org) Message-Id: <201505260109.t4Q19uup085559@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: bapt set sender to bapt@FreeBSD.org using -f From: Baptiste Daroussin Date: Tue, 26 May 2015 01:09:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283549 - head/share/mk X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 01:09:56 -0000 Author: bapt Date: Tue May 26 01:09:56 2015 New Revision: 283549 URL: https://svnweb.freebsd.org/changeset/base/283549 Log: Considers cases when NO_SHARED?=[no|NO] as dynamically linking This reduces overlinking for parts of the build system where NO_SHARED is set to no/NO Modified: head/share/mk/src.libnames.mk Modified: head/share/mk/src.libnames.mk ============================================================================== --- head/share/mk/src.libnames.mk Tue May 26 00:44:29 2015 (r283548) +++ head/share/mk/src.libnames.mk Tue May 26 01:09:56 2015 (r283549) @@ -255,7 +255,7 @@ LDADD_${_l}?= -lprivate${_l} .else LDADD_${_l}?= ${LDADD_${_l}_L} -l${_l} .endif -.if defined(_DP_${_l}) && defined(NO_SHARED) +.if defined(_DP_${_l}) && defined(NO_SHARED) && (${NO_SHARED} != "no" && ${NO_SHARED} != "NO") .for _d in ${_DP_${_l}} DPADD_${_l}+= ${DPADD_${_d}} LDADD_${_l}+= ${LDADD_${_d}} From owner-svn-src-all@FreeBSD.ORG Tue May 26 01:30:10 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7F7D2D34; Tue, 26 May 2015 01:30:10 +0000 (UTC) (envelope-from loos@FreeBSD.org) Received: from svn.freebsd.org (svn.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 543D6D24; Tue, 26 May 2015 01:30:10 +0000 (UTC) (envelope-from loos@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4Q1UAx9095669; Tue, 26 May 2015 01:30:10 GMT (envelope-from loos@FreeBSD.org) Received: (from loos@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4Q1UAoL095668; Tue, 26 May 2015 01:30:10 GMT (envelope-from loos@FreeBSD.org) Message-Id: <201505260130.t4Q1UAoL095668@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: loos set sender to loos@FreeBSD.org using -f From: Luiz Otavio O Souza Date: Tue, 26 May 2015 01:30:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283550 - head/sys/arm/broadcom/bcm2835 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 01:30:10 -0000 Author: loos Date: Tue May 26 01:30:09 2015 New Revision: 283550 URL: https://svnweb.freebsd.org/changeset/base/283550 Log: Remove unused mutex and softc variables. Modified: head/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c Modified: head/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c ============================================================================== --- head/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c Tue May 26 01:09:56 2015 (r283549) +++ head/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c Tue May 26 01:30:09 2015 (r283550) @@ -76,23 +76,13 @@ TUNABLE_INT("hw.bcm2835.sdhci.pio_mode", struct bcm_sdhci_softc { device_t sc_dev; - struct mtx sc_mtx; struct resource * sc_mem_res; struct resource * sc_irq_res; bus_space_tag_t sc_bst; bus_space_handle_t sc_bsh; void * sc_intrhand; struct mmc_request * sc_req; - struct mmc_data * sc_data; - uint32_t sc_flags; -#define LPC_SD_FLAGS_IGNORECRC (1 << 0) - int sc_xfer_direction; -#define DIRECTION_READ 0 -#define DIRECTION_WRITE 1 - int sc_xfer_done; - int sc_bus_busy; struct sdhci_slot sc_slot; - int sc_dma_inuse; int sc_dma_ch; bus_dma_tag_t sc_dma_tag; bus_dmamap_t sc_dma_map; @@ -113,11 +103,6 @@ static void bcm_sdhci_intr(void *); static int bcm_sdhci_get_ro(device_t, device_t); static void bcm_sdhci_dma_intr(int ch, void *arg); -#define bcm_sdhci_lock(_sc) \ - mtx_lock(&_sc->sc_mtx); -#define bcm_sdhci_unlock(_sc) \ - mtx_unlock(&_sc->sc_mtx); - static void bcm_sdhci_dmacb(void *arg, bus_dma_segment_t *segs, int nseg, int err) { @@ -187,8 +172,6 @@ bcm_sdhci_attach(device_t dev) if (bootverbose) device_printf(dev, "SDHCI frequency: %dMHz\n", default_freq); - mtx_init(&sc->sc_mtx, "bcm sdhci", "sdhci", MTX_DEF); - rid = 0; sc->sc_mem_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE); @@ -277,7 +260,6 @@ fail: bus_release_resource(dev, SYS_RES_IRQ, 0, sc->sc_irq_res); if (sc->sc_mem_res) bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->sc_mem_res); - mtx_destroy(&sc->sc_mtx); return (err); } From owner-svn-src-all@FreeBSD.ORG Tue May 26 01:40:34 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1F689EFA; Tue, 26 May 2015 01:40:34 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from svn.freebsd.org (svn.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 E86AD16; Tue, 26 May 2015 01:40:33 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4Q1eXDI001380; Tue, 26 May 2015 01:40:33 GMT (envelope-from delphij@FreeBSD.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4Q1eXlj001379; Tue, 26 May 2015 01:40:33 GMT (envelope-from delphij@FreeBSD.org) Message-Id: <201505260140.t4Q1eXlj001379@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: delphij set sender to delphij@FreeBSD.org using -f From: Xin LI Date: Tue, 26 May 2015 01:40:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283551 - head/sys/kern X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 01:40:34 -0000 Author: delphij Date: Tue May 26 01:40:33 2015 New Revision: 283551 URL: https://svnweb.freebsd.org/changeset/base/283551 Log: MFuser/delphij/zfs-arc-rebase@r281754: In r256613, taskqueue_enqueue_locked() have been modified to release the task queue lock before returning. In r276665, taskqueue_drain_all() will call taskqueue_enqueue_locked() to insert the barrier task into the queue, but did not reacquire the lock after it but later code expects the lock still being held (e.g. TQ_SLEEP()). The barrier task is special and if we release then reacquire the lock, there would be a small race window where a high priority task could sneak into the queue. Looking more closely, the race seems to be tolerable but is undesirable from semantics standpoint. To solve this, in taskqueue_drain_tq_queue(), instead of directly calling taskqueue_enqueue_locked(), insert the barrier task directly without releasing the lock. Modified: head/sys/kern/subr_taskqueue.c Directory Properties: head/ (props changed) head/sys/ (props changed) Modified: head/sys/kern/subr_taskqueue.c ============================================================================== --- head/sys/kern/subr_taskqueue.c Tue May 26 01:30:09 2015 (r283550) +++ head/sys/kern/subr_taskqueue.c Tue May 26 01:40:33 2015 (r283551) @@ -323,17 +323,16 @@ taskqueue_drain_tq_queue(struct taskqueu return; /* - * Enqueue our barrier with the lowest possible priority - * so we are inserted after all current tasks. + * Enqueue our barrier after all current tasks, but with + * the highest priority so that newly queued tasks cannot + * pass it. Because of the high priority, we can not use + * taskqueue_enqueue_locked directly (which drops the lock + * anyway) so just insert it at tail while we have the + * queue lock. */ - TASK_INIT(&t_barrier, 0, taskqueue_task_nop_fn, &t_barrier); - taskqueue_enqueue_locked(queue, &t_barrier); - - /* - * Raise the barrier's priority so newly queued tasks cannot - * pass it. - */ - t_barrier.ta_priority = USHRT_MAX; + TASK_INIT(&t_barrier, USHRT_MAX, taskqueue_task_nop_fn, &t_barrier); + STAILQ_INSERT_TAIL(&queue->tq_queue, &t_barrier, ta_link); + t_barrier.ta_pending = 1; /* * Once the barrier has executed, all previously queued tasks From owner-svn-src-all@FreeBSD.ORG Tue May 26 01:58:17 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id DA6A9320; Tue, 26 May 2015 01:58:17 +0000 (UTC) (envelope-from julian@freebsd.org) Received: from vps1.elischer.org (vps1.elischer.org [204.109.63.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "vps1.elischer.org", Issuer "CA Cert Signing Authority" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id AED833FD; Tue, 26 May 2015 01:58:17 +0000 (UTC) (envelope-from julian@freebsd.org) Received: from Julian-MBP3.local (ppp121-45-225-35.lns20.per1.internode.on.net [121.45.225.35]) (authenticated bits=0) by vps1.elischer.org (8.14.9/8.14.9) with ESMTP id t4Q1w9Th063799 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Mon, 25 May 2015 18:58:13 -0700 (PDT) (envelope-from julian@freebsd.org) Message-ID: <5563D32B.8010404@freebsd.org> Date: Tue, 26 May 2015 09:58:03 +0800 From: Julian Elischer User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: George Neville-Neil CC: hiren panchasara , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r282240 - in head: cddl/lib/libdtrace sys/netinet References: <201504291719.t3THJtIM020724@svn.freebsd.org> <20150523215927.GM95600@strugglingcoder.info> <820BB330-CCB9-46DE-86CF-3D233B84F69B@freebsd.org> <55628DDC.4030506@freebsd.org> In-Reply-To: Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 01:58:18 -0000 On 5/25/15 8:27 PM, George Neville-Neil wrote: > > > On 24 May 2015, at 22:50, Julian Elischer wrote: > >> On 5/24/15 9:24 PM, George Neville-Neil wrote: >>> >>> On 23 May 2015, at 17:59, hiren panchasara wrote: >>> >>>> On 04/29/15 at 05:19P, George V. Neville-Neil wrote: >>>>> Author: gnn >>>>> Date: Wed Apr 29 17:19:55 2015 >>>>> New Revision: 282240 >>>>> URL: https://svnweb.freebsd.org/changeset/base/282240 >>>>> >>>>> Log: >>>>> Brief demo script showing the various values that can be read via >>>>> the new SIFTR statically defined tracepoint (SDT). >>>>> >>>>> Differential Revision: https://reviews.freebsd.org/D2387 >>>>> Reviewed by: bz, markj >>>>> >>>>> Modified: >>>>> head/cddl/lib/libdtrace/tcp.d >>>>> head/sys/netinet/in_kdtrace.c >>>>> head/sys/netinet/in_kdtrace.h >>>>> head/sys/netinet/siftr.c >>>> George, >>>> >>>> This seems useful. Can this be MFC'd to 10? >>>> >>> I think it can be. I'll mark this and do it when I'm back from >>> holiday. Nag me if I forget :-) >>> >>> Best, >>> George >> >> >> George.. check out this script to make MFCs to 10 an absolute snap.. >> >> instead of being a worrying operation, it's a few keystrokes... >> http://www.freebsd.org/~julian/MFC-10.sh >> credits to Bapt for the original (ports) idea. you don't even need to have a tree checked out.. it does all that.. > > Thanks! > > Best, > George > > From owner-svn-src-all@FreeBSD.ORG Tue May 26 02:02:21 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5A1FC570; Tue, 26 May 2015 02:02:21 +0000 (UTC) (envelope-from cy.schubert@komquats.com) Received: from smtp-out-01.shaw.ca (smtp-out-01.shaw.ca [64.59.136.137]) by mx1.freebsd.org (Postfix) with ESMTP id 73B1B82D; Tue, 26 May 2015 02:02:20 +0000 (UTC) (envelope-from cy.schubert@komquats.com) Received: from slippy.cwsent.com ([24.68.119.200]) by shaw.ca with SMTP id x4C2YOuwdU0GJx4C4Y0okN; Mon, 25 May 2015 20:02:13 -0600 X-Authority-Analysis: v=2.1 cv=fqQWHgMf c=1 sm=1 tr=0 a=DtyMuQCYAJf2vvIh/Mv8eA==:117 a=DtyMuQCYAJf2vvIh/Mv8eA==:17 a=VxmjJ2MpAAAA:8 a=kj9zAlcOel0A:10 a=BWvPGDcYAAAA:8 a=h1PgugrvaO0A:10 a=sol3VE4AAAAA:8 a=YxBL1-UpAAAA:8 a=6I5d2MoRAAAA:8 a=AO5lWNTjxGVeJzcPHq0A:9 a=CjuIK1q_8ugA:10 Received: from slippy.cwsent.com (localhost [127.0.0.1]) by slippy.cwsent.com (8.14.9/8.14.9) with ESMTP id t4Q228Bs087846; Mon, 25 May 2015 19:02:09 -0700 (PDT) (envelope-from Cy.Schubert@komquats.com) Received: from slippy (cy@localhost) by slippy.cwsent.com (8.14.9/8.14.8/Submit) with ESMTP id t4Q2277Y087813; Mon, 25 May 2015 19:02:08 -0700 (PDT) (envelope-from Cy.Schubert@komquats.com) Message-Id: <201505260202.t4Q2277Y087813@slippy.cwsent.com> X-Authentication-Warning: slippy.cwsent.com: cy owned process doing -bs X-Mailer: exmh version 2.8.0 04/21/2012 with nmh-1.6 Reply-to: Cy Schubert From: Cy Schubert X-os: FreeBSD X-Sender: cy@cwsent.com X-URL: http://www.komquats.com/ To: Baptiste Daroussin cc: Cy schubert , "svn-src-head@freebsd.org" , "svn-src-all@freebsd.org" , "src-committers@freebsd.org" , Cy Schubert Subject: Re: svn commit: r280849 - in head: contrib/ntpcontrib/ntp/adjtimedcontrib/ntp/arlib contrib/ntp/clockstuff contrib/ntp/confcontrib/ntp/htmlcontrib/ntp/html/build contrib/ntp/html/drivers contrib/nt... In-Reply-To: Message from Baptiste Daroussin of "Mon, 25 May 2015 23:04:41 +0200." <20150525210441.GE39108@ivaldir.etoilebsd.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Mon, 25 May 2015 19:01:47 -0700 X-CMAE-Envelope: MS4wfIcC7kSQ2b1XH7rPkneoKCKpTIDFk1/mXlOG2JqeG+F8yFrzoiHdu6/XRE4qpUvv2B+mFsnQBYDFf1qLkfE+Ao8e9+YEXy1EM0nMk1jnPQjlrkg1Wr6abff25FpdaJghHMrFGW4Ycy3ArQo6I/jyjLh6rvXyPUtsisycaQ66zFR2BgxsjwAfDrXOr2PXFqrQj7D3ST9ZeblIJnIJo4cES0tc1B6U9M6b42ZUKr7Qj7/qMieie5rNejKs2ksNriljoSkFcazXb9ou8gYwF6Vwtm6Yr853CXS086N8JevEJcjF7klOuAX83kFA7aCUQrMRvJXj9YIcQX5FWq2cggpfH8k= X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 02:02:21 -0000 In message <20150525210441.GE39108@ivaldir.etoilebsd.net>, Baptiste Daroussin w rites: > > > --LSp5EJdfMPwZcMS1 > Content-Type: text/plain; charset=us-ascii > Content-Disposition: inline > Content-Transfer-Encoding: quoted-printable > > On Mon, May 25, 2015 at 02:02:07PM -0700, Cy schubert wrote: > > I don't have internet access at the moment, just a cell phone with really= > crappy data performance, so I'm not in the know right now. But if you don'= > t mind I can make openssl a conditional. > >=20 > > ~Cy > > This is what I did, no rush, I have fixed everthing in r283542 Ah yes. I see. Thank you. -- Cheers, Cy Schubert or FreeBSD UNIX: Web: http://www.FreeBSD.org The need of the many outweighs the greed of the few. From owner-svn-src-all@FreeBSD.ORG Tue May 26 02:18:11 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A0C87749; Tue, 26 May 2015 02:18:11 +0000 (UTC) (envelope-from julian@FreeBSD.org) Received: from svn.freebsd.org (svn.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 74A48A49; Tue, 26 May 2015 02:18:11 +0000 (UTC) (envelope-from julian@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4Q2IB48020185; Tue, 26 May 2015 02:18:11 GMT (envelope-from julian@FreeBSD.org) Received: (from julian@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4Q2IBld020184; Tue, 26 May 2015 02:18:11 GMT (envelope-from julian@FreeBSD.org) Message-Id: <201505260218.t4Q2IBld020184@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: julian set sender to julian@FreeBSD.org using -f From: Julian Elischer Date: Tue, 26 May 2015 02:18:11 +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: r283552 - stable/10/share/man/man9 X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 02:18:11 -0000 Author: julian Date: Tue May 26 02:18:10 2015 New Revision: 283552 URL: https://svnweb.freebsd.org/changeset/base/283552 Log: MFH: r283105 Only several years late, catch the psignal man page up to the fact that psignal has been renamed to kern_psignal since 9.0. Modified: stable/10/share/man/man9/psignal.9 Directory Properties: stable/10/ (props changed) Modified: stable/10/share/man/man9/psignal.9 ============================================================================== --- stable/10/share/man/man9/psignal.9 Tue May 26 01:40:33 2015 (r283551) +++ stable/10/share/man/man9/psignal.9 Tue May 26 02:18:10 2015 (r283552) @@ -33,6 +33,7 @@ .Os .Sh NAME .Nm psignal , +.Nm kern_psignal , .Nm pgsignal , .Nm gsignal , .Nm tdsignal @@ -41,7 +42,7 @@ .In sys/types.h .In sys/signalvar.h .Ft void -.Fn psignal "struct proc *p" "int signum" +.Fn kern_psignal "struct proc *p" "int signum" .Ft void .Fn pgsignal "struct pgrp *pgrp" "int signum" "int checkctty" .Ft void @@ -56,16 +57,21 @@ common to all three functions should be .Bq 1- Ns Dv NSIG . .Pp The -.Fn psignal +.Fn kern_psignal function posts signal number .Fa signum to the process represented by the process structure .Fa p . +The +.Fn kernel_psignal +function used to be called +.Fn psignal +but was renamed. With a few exceptions noted below, the target process signal disposition is updated and is marked as runnable, so further handling of the signal is done in the context of the target process after a context switch. Note that -.Fn psignal +.Fn kern_psignal does not by itself cause a context switch to happen. .Pp The target process is not marked as runnable in the following cases: @@ -91,7 +97,7 @@ regardless of the signal action .El .Pp If the target process is being traced -.Fn psignal +.Fn kern_psignal behaves as if the target process were taking the default action for .Fa signum . This allows the tracing process to be notified of the signal. @@ -113,7 +119,7 @@ of the process group structure pointed at by .Fa pgrp and calling -.Fn psignal +.Fn kern_psignal as appropriate. If .Fa pgrp @@ -149,3 +155,10 @@ to the thread represented by the thread .Xr sigaction 2 , .Xr signal 9 , .Xr tsleep 9 +.Sh HISTORY +The +.Fn psignal +call was renamed to +.Fn kern_psignal +in +.Fx 9.0 . From owner-svn-src-all@FreeBSD.ORG Tue May 26 02:50:11 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 11B1FBAF; Tue, 26 May 2015 02:50:11 +0000 (UTC) (envelope-from bjkfbsd@gmail.com) Received: from mail-wg0-x22e.google.com (mail-wg0-x22e.google.com [IPv6:2a00:1450:400c:c00::22e]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 9ED37122; Tue, 26 May 2015 02:50:10 +0000 (UTC) (envelope-from bjkfbsd@gmail.com) Received: by wgme6 with SMTP id e6so16200968wgm.2; Mon, 25 May 2015 19:50:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=KZTp6ShwudY8ztIXOw9r3wrJjZjplbtVKubq56HdjsM=; b=JLJAp8rOgrsfPRa4ChilqAdnTvOu3qBNbb46TLcKOtZs1sH8CIapRk/MjL+wRRgXtz 68waD+VHBnjFLNidYm0xFYl3QGCc/5eUWIvKMHiTLhaCF/AdjYQM8kO7HcJZLOxoou3B Lne6uePjNt59obdAi1m9OersnkN/to0cze5KMdE5Ujx6jqexguI7G+xv93pIrRy/KFvL Qpcu9qJ3fADeVcQxKfof72iPsUlLhd3+FmMq+JtzFphxb8/CJ+REs5LQbJgLUlaH3Gk4 J0KGeyMCnq8Vx5OqIlZuuXpB2kMD+K8nPm4Fj0T2rwUfKDfuKuFyvmNVYKGdMUlNczrM Dwog== MIME-Version: 1.0 X-Received: by 10.180.14.135 with SMTP id p7mr36149776wic.8.1432608609036; Mon, 25 May 2015 19:50:09 -0700 (PDT) Received: by 10.27.77.201 with HTTP; Mon, 25 May 2015 19:50:08 -0700 (PDT) In-Reply-To: <201505260218.t4Q2IBld020184@svn.freebsd.org> References: <201505260218.t4Q2IBld020184@svn.freebsd.org> Date: Mon, 25 May 2015 22:50:08 -0400 Message-ID: Subject: Re: svn commit: r283552 - stable/10/share/man/man9 From: Benjamin Kaduk To: Julian Elischer Cc: "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Content-Type: text/plain; charset=UTF-8 X-Content-Filtered-By: Mailman/MimeDel 2.1.20 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 02:50:11 -0000 On Mon, May 25, 2015 at 10:18 PM, Julian Elischer wrote: > Author: julian > Date: Tue May 26 02:18:10 2015 > New Revision: 283552 > URL: https://svnweb.freebsd.org/changeset/base/283552 > > Log: > MFH: r283105 > Only several years late, catch the psignal man page up to the > fact that psignal has been renamed to kern_psignal since 9.0. > Why did you not merge r283114 as well? -Ben From owner-svn-src-all@FreeBSD.ORG Tue May 26 02:50:31 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7ECD3CDF; Tue, 26 May 2015 02:50:31 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from svn.freebsd.org (svn.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 6D49D15F; Tue, 26 May 2015 02:50:31 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4Q2oVh9035947; Tue, 26 May 2015 02:50:31 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4Q2oVrq035946; Tue, 26 May 2015 02:50:31 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201505260250.t4Q2oVrq035946@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Tue, 26 May 2015 02:50:31 +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: r283553 - stable/10/sys/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-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 02:50:31 -0000 Author: emaste Date: Tue May 26 02:50:30 2015 New Revision: 283553 URL: https://svnweb.freebsd.org/changeset/base/283553 Log: MFC r283110: Add GRP_COMDAT section group flag to ELF header Sponsored by: The FreeBSD Foundation Modified: stable/10/sys/sys/elf_common.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/sys/elf_common.h ============================================================================== --- stable/10/sys/sys/elf_common.h Tue May 26 02:18:10 2015 (r283552) +++ stable/10/sys/sys/elf_common.h Tue May 26 02:50:30 2015 (r283553) @@ -329,6 +329,9 @@ typedef struct { #define SHF_MASKOS 0x0ff00000 /* OS-specific semantics. */ #define SHF_MASKPROC 0xf0000000 /* Processor-specific semantics. */ +/* Flags for section groups. */ +#define GRP_COMDAT 0x1 /* COMDAT semantics. */ + /* Values for p_type. */ #define PT_NULL 0 /* Unused entry. */ #define PT_LOAD 1 /* Loadable segment. */ From owner-svn-src-all@FreeBSD.ORG Tue May 26 03:55:28 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2850890B; Tue, 26 May 2015 03:55:28 +0000 (UTC) (envelope-from julian@freebsd.org) Received: from vps1.elischer.org (vps1.elischer.org [204.109.63.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "vps1.elischer.org", Issuer "CA Cert Signing Authority" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id E7EAB405; Tue, 26 May 2015 03:55:27 +0000 (UTC) (envelope-from julian@freebsd.org) Received: from Julian-MBP3.local (ppp121-45-225-35.lns20.per1.internode.on.net [121.45.225.35]) (authenticated bits=0) by vps1.elischer.org (8.14.9/8.14.9) with ESMTP id t4Q3tFiT064438 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Mon, 25 May 2015 20:55:19 -0700 (PDT) (envelope-from julian@freebsd.org) Message-ID: <5563EE9E.6030002@freebsd.org> Date: Tue, 26 May 2015 11:55:10 +0800 From: Julian Elischer User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Benjamin Kaduk CC: "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: Re: svn commit: r283552 - stable/10/share/man/man9 References: <201505260218.t4Q2IBld020184@svn.freebsd.org> In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Content-Filtered-By: Mailman/MimeDel 2.1.20 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 03:55:28 -0000 On 5/26/15 10:50 AM, Benjamin Kaduk wrote: > On Mon, May 25, 2015 at 10:18 PM, Julian Elischer > > wrote: > > Author: julian > Date: Tue May 26 02:18:10 2015 > New Revision: 283552 > URL: https://svnweb.freebsd.org/changeset/base/283552 > > Log: > MFH: r283105 > Only several years late, catch the psignal man page up to the > fact that psignal has been renamed to kern_psignal since 9.0. > > > Why did you not merge r283114 as well? > > -Ben I didn't do it.. didn't even see it. From owner-svn-src-all@FreeBSD.ORG Tue May 26 03:58:19 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1322DAE5; Tue, 26 May 2015 03:58:19 +0000 (UTC) (envelope-from julian@FreeBSD.org) Received: from svn.freebsd.org (svn.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 0096B5FE; Tue, 26 May 2015 03:58:19 +0000 (UTC) (envelope-from julian@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4Q3wIYr070047; Tue, 26 May 2015 03:58:18 GMT (envelope-from julian@FreeBSD.org) Received: (from julian@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4Q3wIld070046; Tue, 26 May 2015 03:58:18 GMT (envelope-from julian@FreeBSD.org) Message-Id: <201505260358.t4Q3wIld070046@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: julian set sender to julian@FreeBSD.org using -f From: Julian Elischer Date: Tue, 26 May 2015 03:58:18 +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: r283554 - stable/10/share/man/man9 X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 03:58:19 -0000 Author: julian Date: Tue May 26 03:58:18 2015 New Revision: 283554 URL: https://svnweb.freebsd.org/changeset/base/283554 Log: MFH: r283114 Fixup to the kern_psignal manpage r283105 misspelled kern_psignal as kernel_psignal in one occurrence, and added trailing whitespace. While here, change 'call' to the more standard 'function', and say why the name was changed (taken from the commit message for r225617). Modified: stable/10/share/man/man9/psignal.9 Directory Properties: stable/10/ (props changed) Modified: stable/10/share/man/man9/psignal.9 ============================================================================== --- stable/10/share/man/man9/psignal.9 Tue May 26 02:50:30 2015 (r283553) +++ stable/10/share/man/man9/psignal.9 Tue May 26 03:58:18 2015 (r283554) @@ -63,10 +63,11 @@ function posts signal number to the process represented by the process structure .Fa p . The -.Fn kernel_psignal -function used to be called +.Fn kern_psignal +function used to be called .Fn psignal -but was renamed. +but was renamed in order to eliminate a name collision with the libc +function of that name and facilitate code reuse. With a few exceptions noted below, the target process signal disposition is updated and is marked as runnable, so further handling of the signal is done in the context of the target process after a context switch. @@ -158,7 +159,7 @@ to the thread represented by the thread .Sh HISTORY The .Fn psignal -call was renamed to +function was renamed to .Fn kern_psignal -in +in .Fx 9.0 . From owner-svn-src-all@FreeBSD.ORG Tue May 26 04:25:12 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7842AEB3; Tue, 26 May 2015 04:25:12 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.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 590D4C89; Tue, 26 May 2015 04:25:12 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4Q4PCil084425; Tue, 26 May 2015 04:25:12 GMT (envelope-from adrian@FreeBSD.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4Q4PBTL084420; Tue, 26 May 2015 04:25:11 GMT (envelope-from adrian@FreeBSD.org) Message-Id: <201505260425.t4Q4PBTL084420@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: adrian set sender to adrian@FreeBSD.org using -f From: Adrian Chadd Date: Tue, 26 May 2015 04:25:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283555 - head/sys/net80211 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 04:25:12 -0000 Author: adrian Date: Tue May 26 04:25:11 2015 New Revision: 283555 URL: https://svnweb.freebsd.org/changeset/base/283555 Log: Migrate the 802.11s locks out into ieee80211_freebsd.h, so they can be defined as platform specific bits. This is to help make OS portability easier. Modified: head/sys/net80211/ieee80211_freebsd.h head/sys/net80211/ieee80211_mesh.c head/sys/net80211/ieee80211_mesh.h Modified: head/sys/net80211/ieee80211_freebsd.h ============================================================================== --- head/sys/net80211/ieee80211_freebsd.h Tue May 26 03:58:18 2015 (r283554) +++ head/sys/net80211/ieee80211_freebsd.h Tue May 26 04:25:11 2015 (r283555) @@ -184,6 +184,27 @@ typedef struct mtx ieee80211_scan_table_ #define IEEE80211_SCAN_TABLE_UNLOCK(_st) mtx_unlock(&(_st)->st_lock) /* + * Mesh node/routing definitions. + */ +typedef struct mtx ieee80211_rte_lock_t; +#define MESH_RT_ENTRY_LOCK_INIT(_rt, _name) \ + mtx_init(&(rt)->rt_lock, _name, "802.11s route entry", MTX_DEF) +#define MESH_RT_ENTRY_LOCK_DESTROY(_rt) \ + mtx_destroy(&(_rt)->rt_lock) +#define MESH_RT_ENTRY_LOCK(rt) mtx_lock(&(rt)->rt_lock) +#define MESH_RT_ENTRY_LOCK_ASSERT(rt) mtx_assert(&(rt)->rt_lock, MA_OWNED) +#define MESH_RT_ENTRY_UNLOCK(rt) mtx_unlock(&(rt)->rt_lock) + +typedef struct mtx ieee80211_rt_lock_t; +#define MESH_RT_LOCK(ms) mtx_lock(&(ms)->ms_rt_lock) +#define MESH_RT_LOCK_ASSERT(ms) mtx_assert(&(ms)->ms_rt_lock, MA_OWNED) +#define MESH_RT_UNLOCK(ms) mtx_unlock(&(ms)->ms_rt_lock) +#define MESH_RT_LOCK_INIT(ms, name) \ + mtx_init(&(ms)->ms_rt_lock, name, "802.11s routing table", MTX_DEF) +#define MESH_RT_LOCK_DESTROY(ms) \ + mtx_destroy(&(ms)->ms_rt_lock) + +/* * Node reference counting definitions. * * ieee80211_node_initref initialize the reference count to 1 Modified: head/sys/net80211/ieee80211_mesh.c ============================================================================== --- head/sys/net80211/ieee80211_mesh.c Tue May 26 03:58:18 2015 (r283554) +++ head/sys/net80211/ieee80211_mesh.c Tue May 26 04:25:11 2015 (r283555) @@ -162,14 +162,6 @@ static const struct ieee80211_mesh_proto static struct ieee80211_mesh_proto_path mesh_proto_paths[4]; static struct ieee80211_mesh_proto_metric mesh_proto_metrics[4]; -#define RT_ENTRY_LOCK(rt) mtx_lock(&(rt)->rt_lock) -#define RT_ENTRY_LOCK_ASSERT(rt) mtx_assert(&(rt)->rt_lock, MA_OWNED) -#define RT_ENTRY_UNLOCK(rt) mtx_unlock(&(rt)->rt_lock) - -#define MESH_RT_LOCK(ms) mtx_lock(&(ms)->ms_rt_lock) -#define MESH_RT_LOCK_ASSERT(ms) mtx_assert(&(ms)->ms_rt_lock, MA_OWNED) -#define MESH_RT_UNLOCK(ms) mtx_unlock(&(ms)->ms_rt_lock) - MALLOC_DEFINE(M_80211_MESH_PREQ, "80211preq", "802.11 MESH Path Request frame"); MALLOC_DEFINE(M_80211_MESH_PREP, "80211prep", "802.11 MESH Path Reply frame"); MALLOC_DEFINE(M_80211_MESH_PERR, "80211perr", "802.11 MESH Path Error frame"); @@ -218,7 +210,7 @@ mesh_rt_add_locked(struct ieee80211vap * rt->rt_vap = vap; IEEE80211_ADDR_COPY(rt->rt_dest, dest); rt->rt_priv = (void *)ALIGN(&rt[1]); - mtx_init(&rt->rt_lock, "MBSS_RT", "802.11s route entry", MTX_DEF); + MESH_RT_ENTRY_LOCK_INIT(rt, "MBSS_RT"); callout_init(&rt->rt_discovery, 1); rt->rt_updtime = ticks; /* create time */ TAILQ_INSERT_TAIL(&ms->ms_routes, rt, rt_next); @@ -271,11 +263,11 @@ ieee80211_mesh_rt_update(struct ieee8021 KASSERT(rt != NULL, ("route is NULL")); now = ticks; - RT_ENTRY_LOCK(rt); + MESH_RT_ENTRY_LOCK(rt); /* dont clobber a proxy entry gated by us */ if (rt->rt_flags & IEEE80211_MESHRT_FLAGS_PROXY && rt->rt_nhops == 0) { - RT_ENTRY_UNLOCK(rt); + MESH_RT_ENTRY_UNLOCK(rt); return rt->rt_lifetime; } @@ -296,7 +288,7 @@ ieee80211_mesh_rt_update(struct ieee8021 new_lifetime, rt->rt_lifetime); } lifetime = rt->rt_lifetime; - RT_ENTRY_UNLOCK(rt); + MESH_RT_ENTRY_UNLOCK(rt); return lifetime; } @@ -358,9 +350,9 @@ mesh_rt_del(struct ieee80211_mesh_state * Grab the lock before destroying it, to be sure no one else * is holding the route. */ - RT_ENTRY_LOCK(rt); + MESH_RT_ENTRY_LOCK(rt); callout_drain(&rt->rt_discovery); - mtx_destroy(&rt->rt_lock); + MESH_RT_ENTRY_LOCK_DESTROY(rt); IEEE80211_FREE(rt, M_80211_MESH_RT); } @@ -653,7 +645,7 @@ mesh_vdetach(struct ieee80211vap *vap) ieee80211_iterate_nodes(&vap->iv_ic->ic_sta, mesh_vdetach_peers, NULL); ieee80211_mesh_rt_flush(vap); - mtx_destroy(&ms->ms_rt_lock); + MESH_RT_LOCK_DESTROY(ms); ms->ms_ppath->mpp_vdetach(vap); IEEE80211_FREE(vap->iv_mesh, M_80211_VAP); vap->iv_mesh = NULL; @@ -680,7 +672,7 @@ mesh_vattach(struct ieee80211vap *vap) ms->ms_ttl = IEEE80211_MESH_DEFAULT_TTL; TAILQ_INIT(&ms->ms_known_gates); TAILQ_INIT(&ms->ms_routes); - mtx_init(&ms->ms_rt_lock, "MBSS", "802.11s routing table", MTX_DEF); + MESH_RT_LOCK_INIT(ms, "MBSS"); callout_init(&ms->ms_cleantimer, 1); callout_init(&ms->ms_gatetimer, 1); ms->ms_gateseq = 0; Modified: head/sys/net80211/ieee80211_mesh.h ============================================================================== --- head/sys/net80211/ieee80211_mesh.h Tue May 26 03:58:18 2015 (r283554) +++ head/sys/net80211/ieee80211_mesh.h Tue May 26 04:25:11 2015 (r283555) @@ -418,7 +418,7 @@ MALLOC_DECLARE(M_80211_MESH_GT_RT); struct ieee80211_mesh_route { TAILQ_ENTRY(ieee80211_mesh_route) rt_next; struct ieee80211vap *rt_vap; - struct mtx rt_lock; /* fine grained route lock */ + ieee80211_rte_lock_t rt_lock; /* fine grained route lock */ struct callout rt_discovery; /* discovery timeout */ int rt_updtime; /* last update time */ uint8_t rt_dest[IEEE80211_ADDR_LEN]; @@ -515,7 +515,7 @@ struct ieee80211_mesh_state { #define IEEE80211_MESHFLAGS_FWD 0x04 /* forward packets */ #define IEEE80211_MESHFLAGS_ROOT 0x08 /* configured as root */ uint8_t ms_flags; - struct mtx ms_rt_lock; + ieee80211_rt_lock_t ms_rt_lock; struct callout ms_cleantimer; struct callout ms_gatetimer; ieee80211_mesh_seq ms_gateseq; From owner-svn-src-all@FreeBSD.ORG Tue May 26 04:38:01 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E731133F; Tue, 26 May 2015 04:38:00 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.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 C8AABEEF; Tue, 26 May 2015 04:38:00 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4Q4c0bu089852; Tue, 26 May 2015 04:38:00 GMT (envelope-from adrian@FreeBSD.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4Q4c0eU089849; Tue, 26 May 2015 04:38:00 GMT (envelope-from adrian@FreeBSD.org) Message-Id: <201505260438.t4Q4c0eU089849@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: adrian set sender to adrian@FreeBSD.org using -f From: Adrian Chadd Date: Tue, 26 May 2015 04:38:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283556 - head/sys/net80211 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 04:38:01 -0000 Author: adrian Date: Tue May 26 04:37:59 2015 New Revision: 283556 URL: https://svnweb.freebsd.org/changeset/base/283556 Log: Migrate the scan iterator lock typedefs out into ieee80211_freebsd.h. This removes the final piece of freebsd-specific locking that snuck into the tree - it's now all inside ieee80211_freebsd.h. Modified: head/sys/net80211/ieee80211_freebsd.h head/sys/net80211/ieee80211_scan_sta.c Modified: head/sys/net80211/ieee80211_freebsd.h ============================================================================== --- head/sys/net80211/ieee80211_freebsd.h Tue May 26 04:25:11 2015 (r283555) +++ head/sys/net80211/ieee80211_freebsd.h Tue May 26 04:37:59 2015 (r283556) @@ -183,6 +183,13 @@ typedef struct mtx ieee80211_scan_table_ #define IEEE80211_SCAN_TABLE_LOCK(_st) mtx_lock(&(_st)->st_lock) #define IEEE80211_SCAN_TABLE_UNLOCK(_st) mtx_unlock(&(_st)->st_lock) +typedef struct mtx ieee80211_scan_iter_lock_t; +#define IEEE80211_SCAN_ITER_LOCK_INIT(_st, _name) \ + mtx_init(&(_st)->st_scanlock, _name, "802.11 scangen", MTX_DEF) +#define IEEE80211_SCAN_ITER_LOCK_DESTROY(_st) mtx_destroy(&(_st)->st_scanlock) +#define IEEE80211_SCAN_ITER_LOCK(_st) mtx_lock(&(_st)->st_scanlock) +#define IEEE80211_SCAN_ITER_UNLOCK(_st) mtx_unlock(&(_st)->st_scanlock) + /* * Mesh node/routing definitions. */ Modified: head/sys/net80211/ieee80211_scan_sta.c ============================================================================== --- head/sys/net80211/ieee80211_scan_sta.c Tue May 26 04:25:11 2015 (r283555) +++ head/sys/net80211/ieee80211_scan_sta.c Tue May 26 04:37:59 2015 (r283556) @@ -102,7 +102,7 @@ struct sta_table { ieee80211_scan_table_lock_t st_lock; /* on scan table */ TAILQ_HEAD(, sta_entry) st_entry; /* all entries */ LIST_HEAD(, sta_entry) st_hash[STA_HASHSIZE]; - struct mtx st_scanlock; /* on st_scaniter */ + ieee80211_scan_iter_lock_t st_scanlock; /* on st_scaniter */ u_int st_scaniter; /* gen# for iterator */ u_int st_scangen; /* scan generation # */ int st_newscan; @@ -165,7 +165,7 @@ sta_attach(struct ieee80211_scan_state * if (st == NULL) return 0; IEEE80211_SCAN_TABLE_LOCK_INIT(st, "scantable"); - mtx_init(&st->st_scanlock, "scangen", "802.11 scangen", MTX_DEF); + IEEE80211_SCAN_ITER_LOCK_INIT(st, "scangen"); TAILQ_INIT(&st->st_entry); ss->ss_priv = st; nrefs++; /* NB: we assume caller locking */ @@ -183,7 +183,7 @@ sta_detach(struct ieee80211_scan_state * if (st != NULL) { sta_flush_table(st); IEEE80211_SCAN_TABLE_LOCK_DESTROY(st); - mtx_destroy(&st->st_scanlock); + IEEE80211_SCAN_ITER_LOCK_DESTROY(st); IEEE80211_FREE(st, M_80211_SCAN); KASSERT(nrefs > 0, ("imbalanced attach/detach")); nrefs--; /* NB: we assume caller locking */ @@ -1403,7 +1403,7 @@ sta_iterate(struct ieee80211_scan_state struct sta_entry *se; u_int gen; - mtx_lock(&st->st_scanlock); + IEEE80211_SCAN_ITER_LOCK(st); gen = st->st_scaniter++; restart: IEEE80211_SCAN_TABLE_LOCK(st); @@ -1419,7 +1419,7 @@ restart: } IEEE80211_SCAN_TABLE_UNLOCK(st); - mtx_unlock(&st->st_scanlock); + IEEE80211_SCAN_ITER_UNLOCK(st); } static void From owner-svn-src-all@FreeBSD.ORG Tue May 26 06:43:00 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 6569760A; Tue, 26 May 2015 06:43:00 +0000 (UTC) (envelope-from trtrmitya@gmail.com) Received: from mail-la0-x232.google.com (mail-la0-x232.google.com [IPv6:2a00:1450:4010:c03::232]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id DC1E3186; Tue, 26 May 2015 06:42:59 +0000 (UTC) (envelope-from trtrmitya@gmail.com) Received: by labbd9 with SMTP id bd9so60846651lab.2; Mon, 25 May 2015 23:42:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=content-type:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=D/6XIaCCk2lC5MQvXyoEdvA++FjA4+bg6Zm9QtgpGfE=; b=BK3t8tc/OV15m/x6fTcXpKFoHrg4RxGOxWBfDQkNKn5shEt1b2GP9NTrhBiFNp4GEg M6kuHqhflPF2AysrBPJ2qLoWNVSX9F2ehdDtd1ieI5PDzPeeYzXbrx2x9NLqWw8B0lLY 6mOCWMLw3qrRN+7n01n5hjsgUbBkv6RXVvDMtu/bsrTwEhmGTRiF/MIUVXozgJ0abgFJ m1TUicxtaO+pCJXvV3FfSFOV03tSoflJ+Aq5dTq0AVFGrYLZUlaeZ/M2H35g54l4bIRZ Bx5PqH88SgOZlHaaaSvJfkzBhFVrZOrc3f/yl4c6V0FY0oWUT5B1ioFTZ8wHHOULv1fK eFxA== X-Received: by 10.112.202.234 with SMTP id kl10mr21019630lbc.51.1432622577894; Mon, 25 May 2015 23:42:57 -0700 (PDT) Received: from [10.0.1.6] (broadband-5-228-251-108.nationalcablenetworks.ru. [5.228.251.108]) by mx.google.com with ESMTPSA id xh4sm2805776lac.19.2015.05.25.23.42.57 (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 25 May 2015 23:42:57 -0700 (PDT) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\)) Subject: Re: svn commit: r283424 - in head/sys: amd64/linux modules/linux64 From: Dmitry Sivachenko In-Reply-To: <3590632.VFQBH2fsZP@ralph.baldwin.cx> Date: Tue, 26 May 2015 09:42:56 +0300 Cc: Chagin Dmitry , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Content-Transfer-Encoding: quoted-printable Message-Id: <581BBF2B-2CD9-49F0-847C-E9CAD984F708@gmail.com> References: <201505241607.t4OG7C7b073936@svn.freebsd.org> <2938779.SXzlp9bc0j@ralph.baldwin.cx> <20150525140421.GA17366@dchagin.static.corbina.net> <3590632.VFQBH2fsZP@ralph.baldwin.cx> To: John Baldwin X-Mailer: Apple Mail (2.2098) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 06:43:00 -0000 > On 25 =D0=BC=D0=B0=D1=8F 2015 =D0=B3., at 17:40, John Baldwin = wrote: >=20 > Some other related questions are: can we revive print/acroread now and = or > use a 64-bit flash plugin after these changes? I also wonder if it is possible to run 64bit Oracle JDK (Linux version) = now?= From owner-svn-src-all@FreeBSD.ORG Tue May 26 07:22:02 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E8104E65; Tue, 26 May 2015 07:22:02 +0000 (UTC) (envelope-from slw@zxy.spb.ru) Received: from zxy.spb.ru (zxy.spb.ru [195.70.199.98]) (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 9FD93DA3; Tue, 26 May 2015 07:22:02 +0000 (UTC) (envelope-from slw@zxy.spb.ru) Received: from slw by zxy.spb.ru with local (Exim 4.84 (FreeBSD)) (envelope-from ) id 1Yx9BW-000JaE-Ha; Tue, 26 May 2015 10:21:58 +0300 Date: Tue, 26 May 2015 10:21:58 +0300 From: Slawa Olhovchenkov To: Bruce Simpson Cc: John Baldwin , Chagin Dmitry , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r283424 - in head/sys: amd64/linux modules/linux64 Message-ID: <20150526072158.GU21070@zxy.spb.ru> References: <201505241607.t4OG7C7b073936@svn.freebsd.org> <3590632.VFQBH2fsZP@ralph.baldwin.cx> <20150525151339.GM1394@zxy.spb.ru> <1834151.lrAIDRMoJM@ralph.baldwin.cx> <20150525172734.GR21070@zxy.spb.ru> <5563BBB9.7040105@fastmail.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5563BBB9.7040105@fastmail.net> User-Agent: Mutt/1.5.23 (2014-03-12) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: slw@zxy.spb.ru X-SA-Exim-Scanned: No (on zxy.spb.ru); SAEximRunCond expanded to false X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 07:22:03 -0000 On Tue, May 26, 2015 at 01:18:01AM +0100, Bruce Simpson wrote: > All, > > The enhancements to the Linux runtime are probably of more interest to > folk porting server applications; I am particularly happy to see > recvmmsg() and sendmmsg() go in. > > It might also be wise to emulate the getrandom() API, even if this is > only in terms of wrapping the relevant sysctl for now. What about skype4.3? Do you collaborate with Baptiste Daroussin to allow install linux32 on amd64 (some iKVM have linux binyary .so for Java plugin and don't work [w/o tricks] on linux64) Do you plan to MFC? > On 25/05/2015 18:27, Slawa Olhovchenkov wrote: > > Currenly I don't see any linux in Acrobat Reader support OS: > > https://get.adobe.com/reader/otherversions/ > > It got pulled. Of course, support for PDF's forms varies greatly outside > of official Adobe product. > > A better alternative might be the MuPDF backend for KDE Okular, or for > Zathura, neither of which are packaged anywhere in the Linux world yet. > Of course, this could be built natively, without needing the Linux > runtime support. > > I've noticed that rendering performance seems disappointing in the open > source Linux PDF readers, as compared to OS X Preview.app on similar > hardware. I am just restore from SVN latest working print/acroread9 and continue to use. From owner-svn-src-all@FreeBSD.ORG Tue May 26 08:36:15 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A21C5D44; Tue, 26 May 2015 08:36:15 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail106.syd.optusnet.com.au (mail106.syd.optusnet.com.au [211.29.132.42]) by mx1.freebsd.org (Postfix) with ESMTP id 4CD701FC; Tue, 26 May 2015 08:36:14 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from c211-30-166-197.carlnfd1.nsw.optusnet.com.au (c211-30-166-197.carlnfd1.nsw.optusnet.com.au [211.30.166.197]) by mail106.syd.optusnet.com.au (Postfix) with ESMTPS id C9BB83C5BB1; Tue, 26 May 2015 18:03:52 +1000 (AEST) Date: Tue, 26 May 2015 18:03:52 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: John-Mark Gurney cc: Ian Lepore , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283547 - head/sys/arm/conf In-Reply-To: <20150525235147.GJ37063@funkthat.com> Message-ID: <20150526153023.F914@besplex.bde.org> References: <201505252327.t4PNRDaA033870@svn.freebsd.org> <20150525235147.GJ37063@funkthat.com> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Optus-CM-Score: 0 X-Optus-CM-Analysis: v=2.1 cv=L/MkHYj8 c=1 sm=1 tr=0 a=KA6XNC2GZCFrdESI5ZmdjQ==:117 a=PO7r1zJSAAAA:8 a=kj9zAlcOel0A:10 a=JzwRw_2MAAAA:8 a=6I5d2MoRAAAA:8 a=2mXejjZ4VZKcZnkcnb4A:9 a=CjuIK1q_8ugA:10 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 08:36:15 -0000 On Mon, 25 May 2015, John-Mark Gurney wrote: > Ian Lepore wrote this message on Mon, May 25, 2015 at 23:27 +0000: >> Author: ian >> Date: Mon May 25 23:27:13 2015 >> New Revision: 283547 >> URL: https://svnweb.freebsd.org/changeset/base/283547 >> >> Log: >> Ensure that all arm kernel configs contain ALT_BREAK_TO_DEBUGGER and not >> BREAK_TO_DEBUGGER if they have a serial console (most do). A burst of >> serial line noise (such as unplugging a usb serial adapter) can look like >> a break and drop a working system into the debugger. The alt break sequence >> (~^B) works fine on both serial and non-serial consoles. > > Just so you know, this removes support for video console to break into > the debugger via keyboard... This mean ctrl-alt-esc and other key > sequences won't work anymore... Actually, it only breaks the usual non-sequences ctrl-prtscrn and ctrl-alt-esc. All console drivers support ALT_BREAK_TO_DEBUGGER, so escape sequences still work if this option is configured, but these quences are harder to remember and harder to type (I often forget where \n goes in them, or mistype it) and were not needed before except for serial consoles, so at most users of serial consoles will know them. Most of this is broken. 1. The BREAK in BREAK_TO_DEBUGGER means a serial line break. This is now confused with "breaking" into the debugger in all sorts of ways, and/or with the breakpoint() function used to implement "breaking" into the debugger in some of these ways. The breakpoint() function has a generic name although not all arches have a breakpoint instruction in hardware, at least by name. kdb_break() is misnamed. It is just a wrapper for kdb_enter() that supplies the (wrong) entry code KDB_WHY_BREAK and the (wrong) message "Break to debugger". Here BREAK and "Break" have nothing to do with serial line breaks or the (virtual) breakpoint instruction. They mean "break" in the sense of "stop the normal execution and enter the debugger". Normal uses of the breakpoint instruction don't go via this path -- they have already executed the instruction, while this path will execute the instruction. 2. BREAK_TO_DEBUGGER with its non-broken meaning is unusable for most systems since it causes the problems mentioned by ian, except the problems are not really line noise. Just unplugging the line causes a serial line break unless you are quick enough to re-plug it in less than the break detection time, and no one can do that except at low speeds like 1 bit/second, since the break detection time is just 1 character times. Unplugging is also less of a problem than turning off the terminal, since with the former you are more likely to see that the system has entered the debugger immediately after re-plugging, instead of much later when turning on the terminal. I didn't notice this problem for many years. Even BREAK_TO_DEBUGGER was only added in 1996. Before that, serial line breaks caused debugger entry unconditionally if a debugger was configured. Just before that, until 1995 debugger entry was similarly unconditional except it occured when a slip FRAME_END character (0xc0) was received. I don't see how slip could have worked with that. I didn't notice the problem with unplugging for many more years. There was a bug in detecting these line breaks. Serial interrupts were only enabled when the console was open for normal syscalls and the line breaks were not detected otherwise, so they didn't bite as often as they should have. 3. So BREAK_TO_DEBUGGER should normally not be configured. ALT_BREAK_TO_DEBUGGER used to provide an adequate workaround. The name of this option is confusing but not wrong. I gives an alternative to entering the debugger with a serial line break, not an alternative to the normal way of breaking into the debugger. 4. Breakage started occuring with multiple consoles. You might have 1 serial console that is most secure and never turned off, so BREAK_TO_DEBUGGER is best for it, 1 serial console that is secure but sometimes turned off, so ALT_BREAK_TO_DEBUGGER is best for it, and 1 serial console that is insecure so both BREAK_TO_DEBUGGER and ALT_BREAK_TO_DEBUGGER are too insecure to use. Since they are global flags, they must be turned off for all serial consoles. Or just don't use multiple serial consoles. Since no serial console drivers support multiple serial consoles, this is too easy to do. 5. Next, the breakage with multiple consoles spread to affect all console drivers. The configuration is now dynamic, with sysctls to control it, but the confusion of serial line breaks with breaking into the debugger combined with the null support for multiple serial consoles breaks the usual case of just no serial consoles at all, as pointed out by jmg. The config-time-variable for serial line breaks (BREAK_TO_DEBUGGER) is misused to configure "breaking" into the the debugger in the usual ways (but not the ways given by ALT_BREAK_TO_DEBUGGER -- that gives security holes instead). From subr_kdb.c: X #ifdef BREAK_TO_DEBUGGER X #define KDB_BREAK_TO_DEBUGGER 1 X #else X #define KDB_BREAK_TO_DEBUGGER 0 X #endif Wrong default for usual entry from non-serial consoles. X X #ifdef ALT_BREAK_TO_DEBUGGER X #define KDB_ALT_BREAK_TO_DEBUGGER 1 X #else X #define KDB_ALT_BREAK_TO_DEBUGGER 0 X #endif Better, but it gives security holes for non-serial consoles if it is configured. X X static int kdb_break_to_debugger = KDB_BREAK_TO_DEBUGGER; X static int kdb_alt_break_to_debugger = KDB_ALT_BREAK_TO_DEBUGGER; X ... X SYSCTL_INT(_debug_kdb, OID_AUTO, break_to_debugger, X CTLFLAG_RWTUN | CTLFLAG_SECURE, X &kdb_break_to_debugger, 0, "Enable break to debugger"); X X SYSCTL_INT(_debug_kdb, OID_AUTO, alt_break_to_debugger, X CTLFLAG_RWTUN | CTLFLAG_SECURE, X &kdb_alt_break_to_debugger, 0, "Enable alternative break to debugger"); X ... X int X kdb_break(void) X { X X if (!kdb_break_to_debugger) X return (0); X kdb_enter(KDB_WHY_BREAK, "Break to debugger"); X return (KDB_REQ_DEBUGGER); X } Only non-alt "breaking" us limited by kdb_break_to_debugger. kdb_break() is only called from console drivers: - from serial console drivers, when a serial line break is received - from syscons, when the debugger entry key combination is pressed. Syscons still has adequate although poorly implemented security for this: - compile-time configuration by SC_DISABLE_KDBKEY (default enabled) - runtime configuration by sysctl hw.syscons.kbd_debug (default from the config option) The config option shouldn't exist, but the sysctl is needed to handle the case of needing kdb_break_to_debugger for a serial console but the syscons console being to insecure for this, since the kdb sysctl is too global. This only works since there is really only one syscons device -- different security on different vt's is not important. - vt is chummy with the implementation and bypasses some of the implementation's bugs by bypassing kdb_break(). So its debugger entry in the usual way it is only limited by its own sysctl, like syscons used to be. OTOH, vt doesn't bypass kdb_alt_break() or have its own sysctl variable to limit entry in unusual ways. Syscons uses its old SC_DISABLE_KDBKEY+hw.syscons.kbd_debug for this too. Security holes: GENERIC doesn't have either BREAK_TO_DEBUGGER or ALT_BREAK_TO_DEBUGGER, so most user configuration probably don't have either of these either. Syscons used to default to debugger entry enabled, but only normal entry was supported. This was apparently reversed by the dynamic configuration -- since *BREAK_TO_DEBUGGER is not the default, the sysctls default to disabled. Syscons grew support for alternative "breaking" at much the same time as the dynamic configuration was added. Now, if you enable ALT_BREAK_TO_DEBUGGER to use for a serial console, you get it for syscons and vt too. My workarounds for this: - I stopped configuring BREAK_TO_DEBUGGER and started always configuring ALT_BREAK_TO_DEBUGGER 10-15 years ago. Then to fix the reversal of the default for debugger keys in syscons: - in some configurations, I define KDB_BREAK_TO_DEBUGGER as 1 unconditionally in subr_kdb.c. I have to remember to either not use a serial console or not unplug it. - in most configurations, I change the sysctl for kdb_break_to_debug to 1 early in the boot, and have to remember things as above. This can be confusing. I forgot that I did this, and was confused by ddb working at first when booted with -d, and then later in multi-user mode, but not at the askroot prompt or in single user mode. (The debugger and other keys don't work right during the boot, but could be made to work better by always checking keys like -p mode does. I mainly miss scrollback early, not debugger entry. Even -p mode is affected by multiple console bugs in polled mode.) Bruce From owner-svn-src-all@FreeBSD.ORG Tue May 26 09:08:06 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A62196AA for ; Tue, 26 May 2015 09:08:06 +0000 (UTC) (envelope-from agh@fastmail.fm) Received: from out5-smtp.messagingengine.com (out5-smtp.messagingengine.com [66.111.4.29]) (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 700A1BCB for ; Tue, 26 May 2015 09:08:05 +0000 (UTC) (envelope-from agh@fastmail.fm) Received: from compute6.internal (compute6.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id 3B43720B98 for ; Tue, 26 May 2015 05:08:04 -0400 (EDT) Received: from frontend2 ([10.202.2.161]) by compute6.internal (MEProxy); Tue, 26 May 2015 05:08:04 -0400 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=fastmail.fm; h=cc :content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to:x-sasl-enc:x-sasl-enc; s=mesmtp; bh=QbtXl ZnIGsqcpNUlZqP7vAhVH54=; b=UKTE2gJMvrkFYYZZUi7tz4HBGNFvMG/v34bP/ SmL6kvOAm/QAhTWiCIwXK/woQA6ynX5Bd82hvA8+Z4SSjzA8r96r+K0G/DJ+Wodx g8YOrg94kskW5cupL2Fz9T4Kg7/ggFaQB80ZmmOAdqgLG17I4a768kIc/Bv8RFVR KFFCCA= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-sasl-enc :x-sasl-enc; s=smtpout; bh=QbtXlZnIGsqcpNUlZqP7vAhVH54=; b=dTG4B lHkYCRIQKimsdKIG5xaiE4z1K5ZCR79cir2ft3c3YzK/RyjSuwRI1/4TO+YNhm2f suQ2cF620t9zMSKhxycJq2LjvX+gGDridpoOf+WxoS4lT+v09SQwuWX5DuhNdxLm PWgmWY/KjypuHMVtBqzr6uqU47N2lW1/4qudRg= X-Sasl-enc: fBIEte5zwdeGY/AA5SODsKAdnXST/i59Ixj+VJWvfa45 1432631283 Received: from kropotkin.auxio (unknown [223.252.30.161]) by mail.messagingengine.com (Postfix) with ESMTPA id 841CB6800C9; Tue, 26 May 2015 05:08:02 -0400 (EDT) Date: Tue, 26 May 2015 17:07:59 +0800 From: Alastair Hogge To: Baptiste Daroussin Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283132 - head/lib/libproc Message-ID: <20150526090759.GQ55490@kropotkin.auxio> References: <201505192223.t4JMNGDZ025108@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201505192223.t4JMNGDZ025108@svn.freebsd.org> User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 09:08:06 -0000 On 2015-05-19 Tue 22:23:16 +0000 Baptiste Daroussin , wrote: Hi, > Author: bapt > Date: Tue May 19 22:23:15 2015 > New Revision: 283132 > URL: https://svnweb.freebsd.org/changeset/base/283132 > > Log: > Fix underlinking > > Modified: > head/lib/libproc/Makefile > > Modified: head/lib/libproc/Makefile > ============================================================================== > --- head/lib/libproc/Makefile Tue May 19 22:22:53 2015 (r283131) > +++ head/lib/libproc/Makefile Tue May 19 22:23:15 2015 (r283132) > @@ -23,6 +23,8 @@ LIBADD+= cxxrt > LIBADD+= supcplusplus > .endif > > +LIBADD+= elf rtld_db util > + I have to revert this commit on my CURRENT systems so buildworld can continue. On one such system(r283554): [...] building shared library libproc.so.3 --- all_subdir_libdwarf --- --- libdwarf_elf_init.So --- cc -fpic -DPIC -O2 -pipe -march=bdver2 -I. -I/usr/src/lib/libdwarf/../../contrib/elftoolchain/libdwarf -I/usr/src/lib/libdwarf/../../contrib/elftoolchain/common -I/usr/src/lib/libdwarf/../../contrib/elftoolchain/libelf -std=gnu99 -fstack-protector -Ws ystem-headers -Werror -Wall -Wno-format-y2k -W -Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch -Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts -Winline -Wnested- externs -Wredundant-decls -Wold-style-definition -Wno-pointer-sign -Wmissing-variable-declarations -Wthread-safety -Wno-empty-body -Wno-string-plus-int -Wno-unused-const-variable -Qunused-arguments -c /usr/src/lib/libdwarf/../../contrib/elftoolchain/libd warf/libdwarf_elf_init.c -o libdwarf_elf_init.So --- all_subdir_libproc --- cc -fstack-protector -shared -Wl,-x -Wl,--fatal-warnings -Wl,--warn-shared-textrel -o libproc.so.3 -Wl,-soname,libproc.so.3 `NM='nm' lorder proc_bkpt.So proc_create.So proc_regs.So proc_sym.So proc_rtld.So proc_util.So | tsort -q` -lcxxrt -lelf -l rtld_db -lutil --- all_subdir_librt --- --- mq.o --- cc -O2 -pipe -march=bdver2 -I/usr/src/lib/librt/../libc/include -I/usr/src/lib/librt -fexceptions -Winline -Wall -std=gnu99 -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -Wno-empty-body -Wno-stri ng-plus-int -Wno-unused-const-variable -Wno-tautological-compare -Wno-unused-value -Wno-parentheses-equality -Wno-unused-function -Wno-enum-conversion -Wno-unused-local-typedef -Wno-switch -Wno-switch-enum -Wno-knr-promoted-parameter -Qunused-arguments - c /usr/src/lib/librt/mq.c -o mq.o --- sigev_thread.o --- cc -O2 -pipe -march=bdver2 -I/usr/src/lib/librt/../libc/include -I/usr/src/lib/librt -fexceptions -Winline -Wall -std=gnu99 -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -Wno-empty-body -Wno-stri ng-plus-int -Wno-unused-const-variable -Wno-tautological-compare -Wno-unused-value -Wno-parentheses-equality -Wno-unused-function -Wno-enum-conversion -Wno-unused-local-typedef -Wno-switch -Wno-switch-enum -Wno-knr-promoted-parameter -Qunused-arguments - c /usr/src/lib/librt/sigev_thread.c -o sigev_thread.o --- all_subdir_librpcsvc --- --- nfs_prot_xdr.o --- cc -O2 -pipe -march=bdver2 -DYP -I/tmp/bdver2/usr/src/tmp/usr/include/rpcsvc -std=gnu99 -fstack-protector -Wsystem-headers -Werror -Wno-pointer-sign -Wno-empty-body -Wno-string-plus-int -Wno-unused-const-variable -Wno-tautological-compare -Wno-unused- value -Wno-parentheses-equality -Wno-unused-function -Wno-enum-conversion -Wno-unused-local-typedef -Wno-switch -Wno-switch-enum -Wno-knr-promoted-parameter -Wno-parentheses -Qunused-arguments -c nfs_prot_xdr.c -o nfs_prot_xdr.o --- all_subdir_libproc --- /tmp/bdver2/usr/src/tmp/usr/bin/ld: cannot find -lrtld_db cc: error: linker command failed with exit code 1 (use -v to see invocation) *** [libproc.so.3] Error code 1 $ cat /etc/make.conf: ALWAYS_CHECK_MAKE=YES CPUTYPE?=corei7-avx DEFAULT_VERSIONS= perl5=5.20 KERNCONF= GENERIC KROPOTKIN KROPOTKIN_DEBUG MALLOC_PRODUCTION= NO_MODULES= PERL5_DEFAULT= 5.20 WITH_PKG= devel $ cat /etc/src.conf WITH_BSD_GREP= WITH_CLANG_EXTRAS= WITH_LLDB= WITH_PIE= #WITH_SORT_THREADS= WITHOUT_AMD= WITHOUT_APM= WITHOUT_ATM= WITHOUT_BLUETOOTH= WITHOUT_CDDL= WITHOUT_CTM= WITHOUT_CUSE= WITHOUT_FDT= WITHOUT_FLOPPY= WITHOUT_FMTREE= WITHOUT_FREEBSD_UPDATE= WITHOUT_FTP= WITHOUT_GCOV= WITHOUT_GDB= WITHOUT_GPL_DTC= WITHOUT_GROFF= WITHOUT_HAST= WITHOUT_HTML= WITHOUT_HYPERV= WITHOUT_INFO= WITHOUT_IPFILTER= WITHOUT_IPFW= WITHOUT_ISCSI= WITHOUT_LEGACY_CONSOLE= WITHOUT_LPR= WITHOUT_NDIS= WITHOUT_NTP= WITHOUT_PC_SYSINSTALL= WITHOUT_PORTSNAP= WITHOUT_PROFILE= WITHOUT_RCMDS= WITHOUT_RCS= WITHOUT_SENDMAIL= WITHOUT_SHAREDOCS= WITHOUT_SVNLITE= WITHOUT_SYSCONS= WITHOUT_SYSINSTALL= WITHOUT_TEXINFO= WITHOUT_TESTS= WITHOUT_TFTP= WITHOUT_WIRELESS= WITHOUT_WPA_SUPPLICANT_EAPOL= Ta very much al -- Smile, Cthulhu Loathes You. From owner-svn-src-all@FreeBSD.ORG Tue May 26 10:29:38 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B400FE0D; Tue, 26 May 2015 10:29:38 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.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 A1638240; Tue, 26 May 2015 10:29:38 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4QATc0d060478; Tue, 26 May 2015 10:29:38 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4QATcJh060476; Tue, 26 May 2015 10:29:38 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <201505261029.t4QATcJh060476@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Tue, 26 May 2015 10:29:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283562 - in head: sys/kern tests/sys/kern X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 10:29:38 -0000 Author: jhb Date: Tue May 26 10:29:37 2015 New Revision: 283562 URL: https://svnweb.freebsd.org/changeset/base/283562 Log: Do not allow a process to reap an orphan (a child currently being traced by another process such as a debugger). The parent process does need to check for matching orphan pids to avoid returning ECHILD if an orphan has exited, but it should not return the exited status for the child until after the debugger has detached from the orphan process either explicitly or implicitly via wait(). Add two tests for for this case: one where the debugger is the direct child (thus the parent has a non-empty children list) and one where the debugger is not a direct child (so the only "child" of the parent is the orphan). Differential Revision: https://reviews.freebsd.org/D2644 Reviewed by: kib MFC after: 2 weeks Modified: head/sys/kern/kern_exit.c head/tests/sys/kern/ptrace_test.c Modified: head/sys/kern/kern_exit.c ============================================================================== --- head/sys/kern/kern_exit.c Tue May 26 09:38:16 2015 (r283561) +++ head/sys/kern/kern_exit.c Tue May 26 10:29:37 2015 (r283562) @@ -955,7 +955,8 @@ proc_reap(struct thread *td, struct proc static int proc_to_reap(struct thread *td, struct proc *p, idtype_t idtype, id_t id, - int *status, int options, struct __wrusage *wrusage, siginfo_t *siginfo) + int *status, int options, struct __wrusage *wrusage, siginfo_t *siginfo, + int check_only) { struct proc *q; struct rusage *rup; @@ -1093,7 +1094,7 @@ proc_to_reap(struct thread *td, struct p calccru(p, &rup->ru_utime, &rup->ru_stime); } - if (p->p_state == PRS_ZOMBIE) { + if (p->p_state == PRS_ZOMBIE && !check_only) { PROC_SLOCK(p); proc_reap(td, p, status, options); return (-1); @@ -1187,7 +1188,7 @@ loop: sx_xlock(&proctree_lock); LIST_FOREACH(p, &q->p_children, p_sibling) { ret = proc_to_reap(td, p, idtype, id, status, options, - wrusage, siginfo); + wrusage, siginfo, 0); if (ret == 0) continue; else if (ret == 1) @@ -1289,15 +1290,17 @@ loop: * for. By maintaining a list of orphans we allow the parent * to successfully wait until the child becomes a zombie. */ - LIST_FOREACH(p, &q->p_orphans, p_orphan) { - ret = proc_to_reap(td, p, idtype, id, status, options, - wrusage, siginfo); - if (ret == 0) - continue; - else if (ret == 1) - nfound++; - else - return (0); + if (nfound == 0) { + LIST_FOREACH(p, &q->p_orphans, p_orphan) { + ret = proc_to_reap(td, p, idtype, id, NULL, options, + NULL, NULL, 1); + if (ret != 0) { + KASSERT(ret != -1, ("reaped an orphan (pid %d)", + (int)td->td_retval[0])); + nfound++; + break; + } + } } if (nfound == 0) { sx_xunlock(&proctree_lock); Modified: head/tests/sys/kern/ptrace_test.c ============================================================================== --- head/tests/sys/kern/ptrace_test.c Tue May 26 09:38:16 2015 (r283561) +++ head/tests/sys/kern/ptrace_test.c Tue May 26 10:29:37 2015 (r283562) @@ -29,6 +29,8 @@ __FBSDID("$FreeBSD$"); #include #include +#include +#include #include #include #include @@ -133,11 +135,255 @@ ATF_TC_BODY(ptrace__parent_wait_after_at ATF_REQUIRE(errno == ECHILD); } +/* + * Verify that a parent process "sees" the exit of a debugged process only + * after the debugger has seen it. + */ +ATF_TC_WITHOUT_HEAD(ptrace__parent_sees_exit_after_child_debugger); +ATF_TC_BODY(ptrace__parent_sees_exit_after_child_debugger, tc) +{ + pid_t child, debugger, wpid; + int cpipe[2], dpipe[2], status; + char c; + + ATF_REQUIRE(pipe(cpipe) == 0); + ATF_REQUIRE((child = fork()) != -1); + + if (child == 0) { + /* Child process. */ + close(cpipe[0]); + + /* Wait for parent to be ready. */ + ATF_REQUIRE(read(cpipe[1], &c, sizeof(c)) == sizeof(c)); + + exit(1); + } + close(cpipe[1]); + + ATF_REQUIRE(pipe(dpipe) == 0); + ATF_REQUIRE((debugger = fork()) != -1); + + if (debugger == 0) { + /* Debugger process. */ + close(dpipe[0]); + + ATF_REQUIRE(ptrace(PT_ATTACH, child, NULL, 0) != -1); + + wpid = waitpid(child, &status, 0); + ATF_REQUIRE(wpid == child); + ATF_REQUIRE(WIFSTOPPED(status)); + ATF_REQUIRE(WSTOPSIG(status) == SIGSTOP); + + ATF_REQUIRE(ptrace(PT_CONTINUE, child, (caddr_t)1, 0) != -1); + + /* Signal parent that debugger is attached. */ + ATF_REQUIRE(write(dpipe[1], &c, sizeof(c)) == sizeof(c)); + + /* Wait for parent's failed wait. */ + ATF_REQUIRE(read(dpipe[1], &c, sizeof(c)) == 0); + + wpid = waitpid(child, &status, 0); + ATF_REQUIRE(wpid == child); + ATF_REQUIRE(WIFEXITED(status)); + ATF_REQUIRE(WEXITSTATUS(status) == 1); + + exit(0); + } + close(dpipe[1]); + + /* Parent process. */ + + /* Wait for the debugger to attach to the child. */ + ATF_REQUIRE(read(dpipe[0], &c, sizeof(c)) == sizeof(c)); + + /* Release the child. */ + ATF_REQUIRE(write(cpipe[0], &c, sizeof(c)) == sizeof(c)); + ATF_REQUIRE(read(cpipe[0], &c, sizeof(c)) == 0); + close(cpipe[0]); + + /* + * Wait for the child to exit. This is kind of gross, but + * there is not a better way. + */ + for (;;) { + struct kinfo_proc kp; + size_t len; + int mib[4]; + + mib[0] = CTL_KERN; + mib[1] = KERN_PROC; + mib[2] = KERN_PROC_PID; + mib[3] = child; + len = sizeof(kp); + if (sysctl(mib, nitems(mib), &kp, &len, NULL, 0) == -1) { + /* The KERN_PROC_PID sysctl fails for zombies. */ + ATF_REQUIRE(errno == ESRCH); + break; + } + usleep(5000); + } + + /* + * This wait should return an empty pid. The parent should + * see the child as non-exited until the debugger sees the + * exit. + */ + wpid = waitpid(child, &status, WNOHANG); + ATF_REQUIRE(wpid == 0); + + /* Signal the debugger to wait for the child. */ + close(dpipe[0]); + + /* Wait for the debugger. */ + wpid = waitpid(debugger, &status, 0); + ATF_REQUIRE(wpid == debugger); + ATF_REQUIRE(WIFEXITED(status)); + ATF_REQUIRE(WEXITSTATUS(status) == 0); + + /* The child process should now be ready. */ + wpid = waitpid(child, &status, WNOHANG); + ATF_REQUIRE(wpid == child); + ATF_REQUIRE(WIFEXITED(status)); + ATF_REQUIRE(WEXITSTATUS(status) == 1); +} + +/* + * Verify that a parent process "sees" the exit of a debugged process + * only after a non-direct-child debugger has seen it. In particular, + * various wait() calls in the parent must avoid failing with ESRCH by + * checking the parent's orphan list for the debugee. + */ +ATF_TC_WITHOUT_HEAD(ptrace__parent_sees_exit_after_unrelated_debugger); +ATF_TC_BODY(ptrace__parent_sees_exit_after_unrelated_debugger, tc) +{ + pid_t child, debugger, fpid, wpid; + int cpipe[2], dpipe[2], status; + char c; + + ATF_REQUIRE(pipe(cpipe) == 0); + ATF_REQUIRE((child = fork()) != -1); + + if (child == 0) { + /* Child process. */ + close(cpipe[0]); + + /* Wait for parent to be ready. */ + ATF_REQUIRE(read(cpipe[1], &c, sizeof(c)) == sizeof(c)); + + exit(1); + } + close(cpipe[1]); + + ATF_REQUIRE(pipe(dpipe) == 0); + ATF_REQUIRE((debugger = fork()) != -1); + + if (debugger == 0) { + /* Debugger parent. */ + + /* + * Fork again and drop the debugger parent so that the + * debugger is not a child of the main parent. + */ + ATF_REQUIRE((fpid = fork()) != -1); + if (fpid != 0) + exit(2); + + /* Debugger process. */ + close(dpipe[0]); + + ATF_REQUIRE(ptrace(PT_ATTACH, child, NULL, 0) != -1); + + wpid = waitpid(child, &status, 0); + ATF_REQUIRE(wpid == child); + ATF_REQUIRE(WIFSTOPPED(status)); + ATF_REQUIRE(WSTOPSIG(status) == SIGSTOP); + + ATF_REQUIRE(ptrace(PT_CONTINUE, child, (caddr_t)1, 0) != -1); + + /* Signal parent that debugger is attached. */ + ATF_REQUIRE(write(dpipe[1], &c, sizeof(c)) == sizeof(c)); + + /* Wait for parent's failed wait. */ + ATF_REQUIRE(read(dpipe[1], &c, sizeof(c)) == 0); + + wpid = waitpid(child, &status, 0); + ATF_REQUIRE(wpid == child); + ATF_REQUIRE(WIFEXITED(status)); + ATF_REQUIRE(WEXITSTATUS(status) == 1); + + exit(0); + } + + /* Parent process. */ + + /* Wait for the debugger parent process to exit. */ + wpid = waitpid(debugger, &status, 0); + ATF_REQUIRE(wpid == debugger); + ATF_REQUIRE(WIFEXITED(status)); + ATF_REQUIRE(WEXITSTATUS(status) == 2); + + /* A WNOHANG wait here should see the non-exited child. */ + wpid = waitpid(child, &status, WNOHANG); + ATF_REQUIRE(wpid == 0); + + /* Wait for the debugger to attach to the child. */ + ATF_REQUIRE(read(dpipe[0], &c, sizeof(c)) == sizeof(c)); + + /* Release the child. */ + ATF_REQUIRE(write(cpipe[0], &c, sizeof(c)) == sizeof(c)); + ATF_REQUIRE(read(cpipe[0], &c, sizeof(c)) == 0); + close(cpipe[0]); + + /* + * Wait for the child to exit. This is kind of gross, but + * there is not a better way. + */ + for (;;) { + struct kinfo_proc kp; + size_t len; + int mib[4]; + + mib[0] = CTL_KERN; + mib[1] = KERN_PROC; + mib[2] = KERN_PROC_PID; + mib[3] = child; + len = sizeof(kp); + if (sysctl(mib, nitems(mib), &kp, &len, NULL, 0) == -1) { + /* The KERN_PROC_PID sysctl fails for zombies. */ + ATF_REQUIRE(errno == ESRCH); + break; + } + usleep(5000); + } + + /* + * This wait should return an empty pid. The parent should + * see the child as non-exited until the debugger sees the + * exit. + */ + wpid = waitpid(child, &status, WNOHANG); + ATF_REQUIRE(wpid == 0); + + /* Signal the debugger to wait for the child. */ + close(dpipe[0]); + + /* Wait for the debugger. */ + ATF_REQUIRE(read(dpipe[1], &c, sizeof(c)) == 0); + + /* The child process should now be ready. */ + wpid = waitpid(child, &status, WNOHANG); + ATF_REQUIRE(wpid == child); + ATF_REQUIRE(WIFEXITED(status)); + ATF_REQUIRE(WEXITSTATUS(status) == 1); +} + ATF_TP_ADD_TCS(tp) { ATF_TP_ADD_TC(tp, ptrace__parent_wait_after_trace_me); ATF_TP_ADD_TC(tp, ptrace__parent_wait_after_attach); + ATF_TP_ADD_TC(tp, ptrace__parent_sees_exit_after_child_debugger); + ATF_TP_ADD_TC(tp, ptrace__parent_sees_exit_after_unrelated_debugger); return (atf_no_error()); } From owner-svn-src-all@FreeBSD.ORG Tue May 26 12:06:36 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C6EAC141; Tue, 26 May 2015 12:06:36 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.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 B4603D5F; Tue, 26 May 2015 12:06:36 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4QC6ahR009419; Tue, 26 May 2015 12:06:36 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4QC6aj7009418; Tue, 26 May 2015 12:06:36 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201505261206.t4QC6aj7009418@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Tue, 26 May 2015 12:06:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283565 - head/sys/net80211 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 12:06:36 -0000 Author: glebius Date: Tue May 26 12:06:36 2015 New Revision: 283565 URL: https://svnweb.freebsd.org/changeset/base/283565 Log: Reduce diff before functional changes: - Use ic_name instead of if_xname. - Formatting cleanup. Modified: head/sys/net80211/ieee80211.c Modified: head/sys/net80211/ieee80211.c ============================================================================== --- head/sys/net80211/ieee80211.c Tue May 26 11:15:51 2015 (r283564) +++ head/sys/net80211/ieee80211.c Tue May 26 12:06:36 2015 (r283565) @@ -302,7 +302,7 @@ ieee80211_ifattach(struct ieee80211com * ic->ic_tq = taskqueue_create("ic_taskq", M_WAITOK | M_ZERO, taskqueue_thread_enqueue, &ic->ic_tq); taskqueue_start_threads(&ic->ic_tq, 1, PI_NET, "%s net80211 taskq", - ifp->if_xname); + ic->ic_name); /* * Fill in 802.11 available channel set, mark all * available channels as active, and pick a default @@ -617,8 +617,7 @@ ieee80211_vap_detach(struct ieee80211vap CURVNET_SET(ifp->if_vnet); IEEE80211_DPRINTF(vap, IEEE80211_MSG_STATE, "%s: %s parent %s\n", - __func__, ieee80211_opmode_name[vap->iv_opmode], - ic->ic_name); + __func__, ieee80211_opmode_name[vap->iv_opmode], ic->ic_name); /* NB: bpfdetach is called by ether_ifdetach and claims all taps */ ether_ifdetach(ifp); From owner-svn-src-all@FreeBSD.ORG Tue May 26 12:40:28 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 94949B21; Tue, 26 May 2015 12:40:28 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.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 8273D77C; Tue, 26 May 2015 12:40:28 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4QCeSpQ026989; Tue, 26 May 2015 12:40:28 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4QCeS1s026987; Tue, 26 May 2015 12:40:28 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201505261240.t4QCeS1s026987@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Tue, 26 May 2015 12:40:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283566 - head/sys/net80211 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 12:40:28 -0000 Author: glebius Date: Tue May 26 12:40:27 2015 New Revision: 283566 URL: https://svnweb.freebsd.org/changeset/base/283566 Log: Make ieee80211broadcastaddr global, so that drivers or other code may use it and not paste. Modified: head/sys/net80211/ieee80211.c head/sys/net80211/ieee80211.h Modified: head/sys/net80211/ieee80211.c ============================================================================== --- head/sys/net80211/ieee80211.c Tue May 26 12:06:36 2015 (r283565) +++ head/sys/net80211/ieee80211.c Tue May 26 12:40:27 2015 (r283566) @@ -82,7 +82,7 @@ const int ieee80211_opcap[IEEE80211_OPMO #endif }; -static const uint8_t ieee80211broadcastaddr[IEEE80211_ADDR_LEN] = +const uint8_t ieee80211broadcastaddr[IEEE80211_ADDR_LEN] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; static void ieee80211_syncflag_locked(struct ieee80211com *ic, int flag); Modified: head/sys/net80211/ieee80211.h ============================================================================== --- head/sys/net80211/ieee80211.h Tue May 26 12:06:36 2015 (r283565) +++ head/sys/net80211/ieee80211.h Tue May 26 12:40:27 2015 (r283566) @@ -36,6 +36,10 @@ /* is 802.11 address multicast/broadcast? */ #define IEEE80211_IS_MULTICAST(_a) (*(_a) & 0x01) +#ifdef _KERNEL +extern const uint8_t ieee80211broadcastaddr[]; +#endif + typedef uint16_t ieee80211_seq; /* IEEE 802.11 PLCP header */ From owner-svn-src-all@FreeBSD.ORG Tue May 26 12:51:17 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D8E1AE5B; Tue, 26 May 2015 12:51:17 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.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 BA493ACD; Tue, 26 May 2015 12:51:17 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4QCpHHf030952; Tue, 26 May 2015 12:51:17 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4QCpFDF030942; Tue, 26 May 2015 12:51:15 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201505261251.t4QCpFDF030942@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Tue, 26 May 2015 12:51:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283567 - head/sys/net80211 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 12:51:18 -0000 Author: glebius Date: Tue May 26 12:51:14 2015 New Revision: 283567 URL: https://svnweb.freebsd.org/changeset/base/283567 Log: Add two counters to ieee80211com, that will be used to count transmission or receive errors that can't be associated with any vap. Sponsored by: Netflix Sponsored by: Nginx, Inc. Modified: head/sys/net80211/ieee80211_crypto.c head/sys/net80211/ieee80211_crypto_ccmp.c head/sys/net80211/ieee80211_crypto_none.c head/sys/net80211/ieee80211_crypto_tkip.c head/sys/net80211/ieee80211_crypto_wep.c head/sys/net80211/ieee80211_hwmp.c head/sys/net80211/ieee80211_ratectl_none.c head/sys/net80211/ieee80211_var.h Modified: head/sys/net80211/ieee80211_crypto.c ============================================================================== --- head/sys/net80211/ieee80211_crypto.c Tue May 26 12:40:27 2015 (r283566) +++ head/sys/net80211/ieee80211_crypto.c Tue May 26 12:51:14 2015 (r283567) @@ -33,6 +33,8 @@ __FBSDID("$FreeBSD$"); #include "opt_wlan.h" #include +#include +#include #include #include #include Modified: head/sys/net80211/ieee80211_crypto_ccmp.c ============================================================================== --- head/sys/net80211/ieee80211_crypto_ccmp.c Tue May 26 12:40:27 2015 (r283566) +++ head/sys/net80211/ieee80211_crypto_ccmp.c Tue May 26 12:51:14 2015 (r283567) @@ -37,6 +37,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include Modified: head/sys/net80211/ieee80211_crypto_none.c ============================================================================== --- head/sys/net80211/ieee80211_crypto_none.c Tue May 26 12:40:27 2015 (r283566) +++ head/sys/net80211/ieee80211_crypto_none.c Tue May 26 12:51:14 2015 (r283567) @@ -32,8 +32,9 @@ __FBSDID("$FreeBSD$"); #include "opt_wlan.h" #include -#include #include +#include +#include #include #include Modified: head/sys/net80211/ieee80211_crypto_tkip.c ============================================================================== --- head/sys/net80211/ieee80211_crypto_tkip.c Tue May 26 12:40:27 2015 (r283566) +++ head/sys/net80211/ieee80211_crypto_tkip.c Tue May 26 12:51:14 2015 (r283567) @@ -37,6 +37,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include Modified: head/sys/net80211/ieee80211_crypto_wep.c ============================================================================== --- head/sys/net80211/ieee80211_crypto_wep.c Tue May 26 12:40:27 2015 (r283566) +++ head/sys/net80211/ieee80211_crypto_wep.c Tue May 26 12:51:14 2015 (r283567) @@ -33,6 +33,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include Modified: head/sys/net80211/ieee80211_hwmp.c ============================================================================== --- head/sys/net80211/ieee80211_hwmp.c Tue May 26 12:40:27 2015 (r283566) +++ head/sys/net80211/ieee80211_hwmp.c Tue May 26 12:51:14 2015 (r283567) @@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include Modified: head/sys/net80211/ieee80211_ratectl_none.c ============================================================================== --- head/sys/net80211/ieee80211_ratectl_none.c Tue May 26 12:40:27 2015 (r283566) +++ head/sys/net80211/ieee80211_ratectl_none.c Tue May 26 12:51:14 2015 (r283567) @@ -30,6 +30,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include Modified: head/sys/net80211/ieee80211_var.h ============================================================================== --- head/sys/net80211/ieee80211_var.h Tue May 26 12:40:27 2015 (r283566) +++ head/sys/net80211/ieee80211_var.h Tue May 26 12:51:14 2015 (r283567) @@ -135,6 +135,9 @@ struct ieee80211com { struct task ic_bmiss_task; /* deferred beacon miss hndlr */ struct task ic_chw_task; /* deferred HT CHW update */ + counter_u64_t ic_ierrors; /* input errors */ + counter_u64_t ic_oerrors; /* output errors */ + uint32_t ic_flags; /* state flags */ uint32_t ic_flags_ext; /* extended state flags */ uint32_t ic_flags_ht; /* HT state flags */ From owner-svn-src-all@FreeBSD.ORG Tue May 26 13:19:06 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 293629D6; Tue, 26 May 2015 13:19:06 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.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 F29BB129; Tue, 26 May 2015 13:19:05 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4QDJ5U4045299; Tue, 26 May 2015 13:19:05 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4QDJ5Hj045298; Tue, 26 May 2015 13:19:05 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201505261319.t4QDJ5Hj045298@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Tue, 26 May 2015 13:19:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283568 - head/sys/net80211 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 13:19:06 -0000 Author: glebius Date: Tue May 26 13:19:05 2015 New Revision: 283568 URL: https://svnweb.freebsd.org/changeset/base/283568 Log: Provide ieee80211_get_counter() that sums up ieee802com errors to the errors of this vap interface. Sponsored by: Netflix Sponsored by: Nginx, Inc. Modified: head/sys/net80211/ieee80211.c Modified: head/sys/net80211/ieee80211.c ============================================================================== --- head/sys/net80211/ieee80211.c Tue May 26 12:51:14 2015 (r283567) +++ head/sys/net80211/ieee80211.c Tue May 26 13:19:05 2015 (r283568) @@ -95,6 +95,7 @@ static void ieee80211com_media_status(st static int ieee80211com_media_change(struct ifnet *); static int media_status(enum ieee80211_opmode, const struct ieee80211_channel *); +static uint64_t ieee80211_get_counter(struct ifnet *, ift_counter); MALLOC_DEFINE(M_80211_VAP, "80211vap", "802.11 vap state"); @@ -303,6 +304,8 @@ ieee80211_ifattach(struct ieee80211com * taskqueue_thread_enqueue, &ic->ic_tq); taskqueue_start_threads(&ic->ic_tq, 1, PI_NET, "%s net80211 taskq", ic->ic_name); + ic->ic_ierrors = counter_u64_alloc(M_WAITOK); + ic->ic_oerrors = counter_u64_alloc(M_WAITOK); /* * Fill in 802.11 available channel set, mark all * available channels as active, and pick a default @@ -401,6 +404,8 @@ ieee80211_ifdetach(struct ieee80211com * /* XXX VNET needed? */ ifmedia_removeall(&ic->ic_media); + counter_u64_free(ic->ic_ierrors); + counter_u64_free(ic->ic_oerrors); taskqueue_free(ic->ic_tq); IEEE80211_TX_LOCK_DESTROY(ic); @@ -423,6 +428,31 @@ default_reset(struct ieee80211vap *vap, } /* + * Add underlying device errors to vap errors. + */ +static uint64_t +ieee80211_get_counter(struct ifnet *ifp, ift_counter cnt) +{ + struct ieee80211vap *vap = ifp->if_softc; + struct ieee80211com *ic = vap->iv_ic; + uint64_t rv; + + rv = if_get_counter_default(ifp, cnt); + switch (cnt) { + case IFCOUNTER_OERRORS: + rv += counter_u64_fetch(ic->ic_oerrors); + break; + case IFCOUNTER_IERRORS: + rv += counter_u64_fetch(ic->ic_ierrors); + break; + default: + break; + } + + return (rv); +} + +/* * Prepare a vap for use. Drivers use this call to * setup net80211 state in new vap's prior attaching * them with ieee80211_vap_attach (below). @@ -448,6 +478,7 @@ ieee80211_vap_setup(struct ieee80211com ifp->if_qflush = ieee80211_vap_qflush; ifp->if_ioctl = ieee80211_ioctl; ifp->if_init = ieee80211_init; + ifp->if_get_counter = ieee80211_get_counter; vap->iv_ifp = ifp; vap->iv_ic = ic; From owner-svn-src-all@FreeBSD.ORG Tue May 26 13:21:01 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1BEDCB49; Tue, 26 May 2015 13:21:01 +0000 (UTC) (envelope-from rionda@gmail.com) Received: from mail-oi0-x233.google.com (mail-oi0-x233.google.com [IPv6:2607:f8b0:4003:c06::233]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id D61AE1D3; Tue, 26 May 2015 13:21:00 +0000 (UTC) (envelope-from rionda@gmail.com) Received: by oihd6 with SMTP id d6so77379128oih.2; Tue, 26 May 2015 06:21:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc:content-type; bh=eHHTYBZ+qpZouPi9TrXDzVvszZU1NYsQq2SW67+8rac=; b=B81XW5UenljqgLxNL4RY6T2sWKu0mgOC603oYoEWBEl5hV1nfMufYONGTE6Vk8Jt7l qqtnuuPkMqaf6BSf24/TFGkdcUIkbHtZxSFA9HwqxEkMcslAraNCu1nIJPVCrM8UgzC1 YG/G/LD/NhTf5DiHmWz/VOHp+ekeAhOE3zJQHzvkE247ikm1EiMlNcx3BDfxEPCIVkLG ggiaFj5/3f/hpPHtfq36uIYtktgIz00/pq+FNpH9YR6s2Rlbpx2ns8s5ymWlbk/ILgAU Er8Myy7E/olStM/RwNbymP7V2/lGx5rXqeIfbLJhaf9GC1HCKh4sZkAdFM7pERtJ8di6 7tXw== X-Received: by 10.202.240.215 with SMTP id o206mr20270465oih.94.1432646460194; Tue, 26 May 2015 06:21:00 -0700 (PDT) MIME-Version: 1.0 Sender: rionda@gmail.com Received: by 10.182.233.44 with HTTP; Tue, 26 May 2015 06:20:39 -0700 (PDT) In-Reply-To: <20150526090759.GQ55490@kropotkin.auxio> References: <201505192223.t4JMNGDZ025108@svn.freebsd.org> <20150526090759.GQ55490@kropotkin.auxio> From: Matteo Riondato Date: Tue, 26 May 2015 09:20:39 -0400 X-Google-Sender-Auth: 77_RFmvFHLdXuaalT5kH0V5k_aE Message-ID: Subject: Re: svn commit: r283132 - head/lib/libproc To: Alastair Hogge Cc: Baptiste Daroussin , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Content-Type: text/plain; charset=UTF-8 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 13:21:01 -0000 On Tue, May 26, 2015 at 5:07 AM, Alastair Hogge wrote: > On 2015-05-19 Tue 22:23:16 +0000 Baptiste Daroussin , wrote: ============================================================================== >> --- head/lib/libproc/Makefile Tue May 19 22:22:53 2015 (r283131) >> +++ head/lib/libproc/Makefile Tue May 19 22:23:15 2015 (r283132) >> @@ -23,6 +23,8 @@ LIBADD+= cxxrt >> LIBADD+= supcplusplus >> .endif >> >> +LIBADD+= elf rtld_db util >> + > > I have to revert this commit on my CURRENT systems so buildworld can > continue. > > On one such system(r283554): > [..] > --- all_subdir_libproc --- > /tmp/bdver2/usr/src/tmp/usr/bin/ld: cannot find -lrtld_db > cc: error: linker command failed with exit code 1 (use -v to see invocation) > *** [libproc.so.3] Error code 1 Same here. make.conf: KERNCONF=TRITON CPUTYPE?=k8-sse3 SVN_UPDATE=y COPTFLAGS=-O2 -pipe MALLOC_PRODUCTION=y src.conf: WITHOUT_AMD=y WITHOUT_APM=y WITHOUT_ASSERT_DEBUG=y WITHOUT_ATM=y WITHOUT_AUTOFS=y WITHOUT_BHYVE=y WITHOUT_BLUETOOTH=y WITHOUT_BOOTPARAMD=y WITHOUT_BOOTPD=y WITHOUT_BSNMP=y WITHOUT_CAPSICUM=y WITHOUT_CASPER=y WITHOUT_CDDL=y WITHOUT_CTM=y WITHOUT_FLOPPY=y WITHOUT_HAST=y WITHOUT_HTML=y WITHOUT_HYPERV=y WITHOUT_IPFILTER=y WITHOUT_ISCSI=y WITHOUT_NDIS=y WITHOUT_PPP=y WITHOUT_PROFILE=y WITHOUT_RBOOTD=y WITHOUT_ROUTED=y WITH_SORT_THREADS=y WITHOUT_TESTS=y WITHOUT_WIRELESS=y Best, Matteo From owner-svn-src-all@FreeBSD.ORG Tue May 26 14:08:33 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 07A82695; Tue, 26 May 2015 14:08:33 +0000 (UTC) (envelope-from nyan@FreeBSD.org) Received: from svn.freebsd.org (svn.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 CF942FD9; Tue, 26 May 2015 14:08:32 +0000 (UTC) (envelope-from nyan@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4QE8WKQ069744; Tue, 26 May 2015 14:08:32 GMT (envelope-from nyan@FreeBSD.org) Received: (from nyan@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4QE8WLq069743; Tue, 26 May 2015 14:08:32 GMT (envelope-from nyan@FreeBSD.org) Message-Id: <201505261408.t4QE8WLq069743@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: nyan set sender to nyan@FreeBSD.org using -f From: Takahashi Yoshihiro Date: Tue, 26 May 2015 14:08:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283569 - head/sys/conf X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 14:08:33 -0000 Author: nyan Date: Tue May 26 14:08:32 2015 New Revision: 283569 URL: https://svnweb.freebsd.org/changeset/base/283569 Log: MFi386: r283407 Implement vdso - virtual dynamic shared object. MFi386: r283474 Rework signal code to allow using it by other modules, like linprocfs. MFi386: r283506 For objcopy, use --input-target and --output-target. This fixes pc98 build. Modified: head/sys/conf/files.pc98 Modified: head/sys/conf/files.pc98 ============================================================================== --- head/sys/conf/files.pc98 Tue May 26 13:19:05 2015 (r283568) +++ head/sys/conf/files.pc98 Tue May 26 14:08:32 2015 (r283569) @@ -21,6 +21,18 @@ linux_assym.h optional compat_linux \ no-obj no-implicit-rule before-depend \ clean "linux_assym.h" # +linux_locore.o optional compat_linux \ + dependency "linux_assym.h $S/i386/linux/linux_locore.s" \ + compile-with "${CC} -x assembler-with-cpp -DLOCORE -shared -s -pipe -I. -I$S -Werror -Wall -fno-common -nostdinc -nostdlib -Wl,-T$S/i386/linux/linux_vdso.lds.s -Wl,-soname=linux_vdso.so,--eh-frame-hdr,-fPIC,-warn-common ${.IMPSRC} -o ${.TARGET}" \ + no-obj no-implicit-rule \ + clean "linux_locore.o" +# +linux_vdso.so optional compat_linux \ + dependency "linux_locore.o" \ + compile-with "${OBJCOPY} --input-target binary --output-target elf32-i386-freebsd --binary-architecture i386 linux_locore.o ${.TARGET}" \ + no-implicit-rule \ + clean "linux_vdso.so" +# svr4_genassym.o optional compat_svr4 \ dependency "$S/i386/svr4/svr4_genassym.c" \ compile-with "${CC} ${CFLAGS:N-fno-common} -c ${.IMPSRC}" \ @@ -59,6 +71,8 @@ compat/linux/linux_time.c optional compa compat/linux/linux_timer.c optional compat_linux compat/linux/linux_uid16.c optional compat_linux compat/linux/linux_util.c optional compat_linux +compat/linux/linux_vdso.c optional compat_linux +compat/linux/linux.c optional compat_linux compat/svr4/imgact_svr4.c optional compat_svr4 compat/svr4/svr4_fcntl.c optional compat_svr4 compat/svr4/svr4_filio.c optional compat_svr4 @@ -193,8 +207,6 @@ i386/isa/pmtimer.c optional pmtimer i386/isa/prof_machdep.c optional profiling-routine i386/linux/imgact_linux.c optional compat_linux i386/linux/linux_dummy.c optional compat_linux -i386/linux/linux_locore.s optional compat_linux \ - dependency "linux_assym.h" i386/linux/linux_machdep.c optional compat_linux i386/linux/linux_ptrace.c optional compat_linux i386/linux/linux_support.s optional compat_linux \ From owner-svn-src-all@FreeBSD.ORG Tue May 26 14:51:07 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5044C6C9; Tue, 26 May 2015 14:51:07 +0000 (UTC) (envelope-from baptiste.daroussin@gmail.com) Received: from mail-wi0-x230.google.com (mail-wi0-x230.google.com [IPv6:2a00:1450:400c:c05::230]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id E4EE4DC0; Tue, 26 May 2015 14:51:06 +0000 (UTC) (envelope-from baptiste.daroussin@gmail.com) Received: by wicmc15 with SMTP id mc15so67369369wic.1; Tue, 26 May 2015 07:51:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=xcF6yihcymwbzfv1F0Xh3R/nyVPnPGYcDb4k2Hhkx+E=; b=SF+P8cPsAZXjOJ+A39OVgY78nt1wfgM2pno5Rr80WvF4hXjIWb/MGjmE+0vdkBoCIg AiEbjCi3HqEppXZKFnfyzNGvnFZSl8RMXl2soVyLNEVQbLf6Z/Hgj8SmVysunxR3oHT4 tWR4SfErMK37jP6O+nJVluErIhkQJh8GdBPNyo5Tt5nWjHVBzj1xLccR3OWh1QvYGhmQ 7L1qrSfoodhcXGT5kPb6cPsCmJJiJqyAUcneWLQuZgWFE0QmAdD4WGpGd929j63Ng4UA 29oj4X08wdODmp2UjS0jbTlYcNGar5tU0W9yG4pRMlNGOvDJro7imbMnP/xNPm6BG5EP 4+Rg== X-Received: by 10.194.81.169 with SMTP id b9mr30405830wjy.126.1432651865103; Tue, 26 May 2015 07:51:05 -0700 (PDT) Received: from ivaldir.etoilebsd.net ([2001:41d0:8:db4c::1]) by mx.google.com with ESMTPSA id eu10sm17276506wib.8.2015.05.26.07.51.03 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 May 2015 07:51:04 -0700 (PDT) Sender: Baptiste Daroussin Date: Tue, 26 May 2015 16:51:02 +0200 From: Baptiste Daroussin To: Matteo Riondato Cc: Alastair Hogge , svn-src-head@freebsd.org, src-committers@freebsd.org, svn-src-all@freebsd.org Subject: Re: svn commit: r283132 - head/lib/libproc Message-ID: <20150526145101.GN39108@ivaldir.etoilebsd.net> References: <201505192223.t4JMNGDZ025108@svn.freebsd.org> <20150526090759.GQ55490@kropotkin.auxio> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="Zl+NncWK+U5aSfTo" Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 14:51:07 -0000 --Zl+NncWK+U5aSfTo Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Tue, May 26, 2015 at 09:20:39AM -0400, Matteo Riondato wrote: > On Tue, May 26, 2015 at 5:07 AM, Alastair Hogge wrote: > > On 2015-05-19 Tue 22:23:16 +0000 Baptiste Daroussin ,= wrote: > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > >> --- head/lib/libproc/Makefile Tue May 19 22:22:53 2015 (r283131) > >> +++ head/lib/libproc/Makefile Tue May 19 22:23:15 2015 (r283132) > >> @@ -23,6 +23,8 @@ LIBADD+=3D cxxrt > >> LIBADD+=3D supcplusplus > >> .endif > >> > >> +LIBADD+=3D elf rtld_db util > >> + > > > > I have to revert this commit on my CURRENT systems so buildworld can > > continue. > > > > On one such system(r283554): > > [..] > > --- all_subdir_libproc --- > > /tmp/bdver2/usr/src/tmp/usr/bin/ld: cannot find -lrtld_db > > cc: error: linker command failed with exit code 1 (use -v to see invoca= tion) > > *** [libproc.so.3] Error code 1 >=20 > Same here. >=20 > make.conf: > KERNCONF=3DTRITON > CPUTYPE?=3Dk8-sse3 > SVN_UPDATE=3Dy > COPTFLAGS=3D-O2 -pipe > MALLOC_PRODUCTION=3Dy >=20 > src.conf: > WITHOUT_AMD=3Dy > WITHOUT_APM=3Dy > WITHOUT_ASSERT_DEBUG=3Dy > WITHOUT_ATM=3Dy > WITHOUT_AUTOFS=3Dy > WITHOUT_BHYVE=3Dy > WITHOUT_BLUETOOTH=3Dy > WITHOUT_BOOTPARAMD=3Dy > WITHOUT_BOOTPD=3Dy > WITHOUT_BSNMP=3Dy > WITHOUT_CAPSICUM=3Dy > WITHOUT_CASPER=3Dy > WITHOUT_CDDL=3Dy > WITHOUT_CTM=3Dy > WITHOUT_FLOPPY=3Dy > WITHOUT_HAST=3Dy > WITHOUT_HTML=3Dy > WITHOUT_HYPERV=3Dy > WITHOUT_IPFILTER=3Dy > WITHOUT_ISCSI=3Dy > WITHOUT_NDIS=3Dy > WITHOUT_PPP=3Dy > WITHOUT_PROFILE=3Dy > WITHOUT_RBOOTD=3Dy > WITHOUT_ROUTED=3Dy > WITH_SORT_THREADS=3Dy > WITHOUT_TESTS=3Dy > WITHOUT_WIRELESS=3Dy >=20 Thanks, working on a fix now, this only happens due to WITHOUT_CDDL. Best regards, Bapt --Zl+NncWK+U5aSfTo Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iEYEARECAAYFAlVkiFUACgkQ8kTtMUmk6EwIwwCfcXuqZlP+Bu3VHIBa/qC+gAJu WCcAmQF3r8b5AQgPP0j5Fsg28jl3Wp+7 =LPvt -----END PGP SIGNATURE----- --Zl+NncWK+U5aSfTo-- From owner-svn-src-all@FreeBSD.ORG Tue May 26 15:25:02 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0D09FCDA; Tue, 26 May 2015 15:25:02 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-ig0-x231.google.com (mail-ig0-x231.google.com [IPv6:2607:f8b0:4001:c05::231]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id CA960878; Tue, 26 May 2015 15:25:01 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: by igbsb11 with SMTP id sb11so56072794igb.0; Tue, 26 May 2015 08:25:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=d0fYX7ETkgFprYQsDDOjtdUrNxezo9yy7n/Y4Eb/ngQ=; b=zg2G56UCSEsPILD+WRpOHN+EfMr308UjGxCZtkIb4vRe1cNuva46stk1ilArgOxLLP VAwcmO14Qurwl2IkDck34tp8GKKKltUPpqCtZBNsc+pAbIPTA+wOZci4B7HxbuwzA0Th vPBlq4GQwnxTVOVLUkGUVoK/aSQ6VnAws+/v15mi4lBXUrgLuxWkPYnwpPcYK0LEuB7o LuThTsDgZPP1bA7+vHiSEuntmxjxUrDRawajToz7DkF5Sf3uwxLzsxiT4BQm/eX59oQA 1mInxmYvBExAylEnxupTIQi/d7vxiZPCFcepzp494MoYjce0VUd08YUTcPZuXIkd3oAc tz3w== MIME-Version: 1.0 X-Received: by 10.50.97.105 with SMTP id dz9mr30390614igb.49.1432653901171; Tue, 26 May 2015 08:25:01 -0700 (PDT) Sender: adrian.chadd@gmail.com Received: by 10.36.38.133 with HTTP; Tue, 26 May 2015 08:25:01 -0700 (PDT) In-Reply-To: <201505261319.t4QDJ5Hj045298@svn.freebsd.org> References: <201505261319.t4QDJ5Hj045298@svn.freebsd.org> Date: Tue, 26 May 2015 08:25:01 -0700 X-Google-Sender-Auth: zRlxehus0aPBzpMdxN3nLXuhr58 Message-ID: Subject: Re: svn commit: r283568 - head/sys/net80211 From: Adrian Chadd To: Gleb Smirnoff Cc: "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" Content-Type: text/plain; charset=UTF-8 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 15:25:02 -0000 Hi, We're going to have to move all of the counter API stuff into ieee80211_freebsd.[ch]. -adrian On 26 May 2015 at 06:19, Gleb Smirnoff wrote: > Author: glebius > Date: Tue May 26 13:19:05 2015 > New Revision: 283568 > URL: https://svnweb.freebsd.org/changeset/base/283568 > > Log: > Provide ieee80211_get_counter() that sums up ieee802com > errors to the errors of this vap interface. > > Sponsored by: Netflix > Sponsored by: Nginx, Inc. > > Modified: > head/sys/net80211/ieee80211.c > > Modified: head/sys/net80211/ieee80211.c > ============================================================================== > --- head/sys/net80211/ieee80211.c Tue May 26 12:51:14 2015 (r283567) > +++ head/sys/net80211/ieee80211.c Tue May 26 13:19:05 2015 (r283568) > @@ -95,6 +95,7 @@ static void ieee80211com_media_status(st > static int ieee80211com_media_change(struct ifnet *); > static int media_status(enum ieee80211_opmode, > const struct ieee80211_channel *); > +static uint64_t ieee80211_get_counter(struct ifnet *, ift_counter); > > MALLOC_DEFINE(M_80211_VAP, "80211vap", "802.11 vap state"); > > @@ -303,6 +304,8 @@ ieee80211_ifattach(struct ieee80211com * > taskqueue_thread_enqueue, &ic->ic_tq); > taskqueue_start_threads(&ic->ic_tq, 1, PI_NET, "%s net80211 taskq", > ic->ic_name); > + ic->ic_ierrors = counter_u64_alloc(M_WAITOK); > + ic->ic_oerrors = counter_u64_alloc(M_WAITOK); > /* > * Fill in 802.11 available channel set, mark all > * available channels as active, and pick a default > @@ -401,6 +404,8 @@ ieee80211_ifdetach(struct ieee80211com * > > /* XXX VNET needed? */ > ifmedia_removeall(&ic->ic_media); > + counter_u64_free(ic->ic_ierrors); > + counter_u64_free(ic->ic_oerrors); > > taskqueue_free(ic->ic_tq); > IEEE80211_TX_LOCK_DESTROY(ic); > @@ -423,6 +428,31 @@ default_reset(struct ieee80211vap *vap, > } > > /* > + * Add underlying device errors to vap errors. > + */ > +static uint64_t > +ieee80211_get_counter(struct ifnet *ifp, ift_counter cnt) > +{ > + struct ieee80211vap *vap = ifp->if_softc; > + struct ieee80211com *ic = vap->iv_ic; > + uint64_t rv; > + > + rv = if_get_counter_default(ifp, cnt); > + switch (cnt) { > + case IFCOUNTER_OERRORS: > + rv += counter_u64_fetch(ic->ic_oerrors); > + break; > + case IFCOUNTER_IERRORS: > + rv += counter_u64_fetch(ic->ic_ierrors); > + break; > + default: > + break; > + } > + > + return (rv); > +} > + > +/* > * Prepare a vap for use. Drivers use this call to > * setup net80211 state in new vap's prior attaching > * them with ieee80211_vap_attach (below). > @@ -448,6 +478,7 @@ ieee80211_vap_setup(struct ieee80211com > ifp->if_qflush = ieee80211_vap_qflush; > ifp->if_ioctl = ieee80211_ioctl; > ifp->if_init = ieee80211_init; > + ifp->if_get_counter = ieee80211_get_counter; > > vap->iv_ifp = ifp; > vap->iv_ic = ic; > From owner-svn-src-all@FreeBSD.ORG Tue May 26 15:45:04 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 170BD587; Tue, 26 May 2015 15:45:04 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from cell.glebius.int.ru (glebius.int.ru [81.19.69.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "cell.glebius.int.ru", Issuer "cell.glebius.int.ru" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 8DF8DD9A; Tue, 26 May 2015 15:45:02 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from cell.glebius.int.ru (localhost [127.0.0.1]) by cell.glebius.int.ru (8.14.9/8.14.9) with ESMTP id t4QFir2n089246 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Tue, 26 May 2015 18:44:53 +0300 (MSK) (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by cell.glebius.int.ru (8.14.9/8.14.9/Submit) id t4QFirKU089245; Tue, 26 May 2015 18:44:53 +0300 (MSK) (envelope-from glebius@FreeBSD.org) X-Authentication-Warning: cell.glebius.int.ru: glebius set sender to glebius@FreeBSD.org using -f Date: Tue, 26 May 2015 18:44:53 +0300 From: Gleb Smirnoff To: Adrian Chadd Cc: "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" Subject: Re: svn commit: r283568 - head/sys/net80211 Message-ID: <20150526154453.GA73119@FreeBSD.org> References: <201505261319.t4QDJ5Hj045298@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 15:45:04 -0000 On Tue, May 26, 2015 at 08:25:01AM -0700, Adrian Chadd wrote: A> Hi, A> A> We're going to have to move all of the counter API stuff into A> ieee80211_freebsd.[ch]. Well, I put the function in the same file where if_get_counter pointer is set, so that it can be static. You need distinctive border between FreeBSD and non-FreeBSD stuff, which right now isn't yet clear. I don't mind moving, but looks like the ifnet attachment process, either the current one or the future one, also needs to be moved to FreeBSD part of the code. -- Totus tuus, Glebius. From owner-svn-src-all@FreeBSD.ORG Tue May 26 16:25:29 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id CC29860E; Tue, 26 May 2015 16:25:29 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org (svn.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 BAACFA87; Tue, 26 May 2015 16:25:29 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4QGPTDT039811; Tue, 26 May 2015 16:25:29 GMT (envelope-from bapt@FreeBSD.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4QGPTot039810; Tue, 26 May 2015 16:25:29 GMT (envelope-from bapt@FreeBSD.org) Message-Id: <201505261625.t4QGPTot039810@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: bapt set sender to bapt@FreeBSD.org using -f From: Baptiste Daroussin Date: Tue, 26 May 2015 16:25:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283572 - head X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 16:25:29 -0000 Author: bapt Date: Tue May 26 16:25:28 2015 New Revision: 283572 URL: https://svnweb.freebsd.org/changeset/base/283572 Log: Fix build WITHOUT_CDDL by unconditionnaly adding libproc and librtld_db on supported arches to the prebuild libs Modified: head/Makefile.inc1 Modified: head/Makefile.inc1 ============================================================================== --- head/Makefile.inc1 Tue May 26 16:17:24 2015 (r283571) +++ head/Makefile.inc1 Tue May 26 16:25:28 2015 (r283572) @@ -1755,6 +1755,7 @@ _cddl_lib= cddl/lib cddl/lib/libzfs_core__L: cddl/lib/libnvpair__L cddl/lib/libzfs__L: lib/libgeom__L cddl/lib/libctf__L: lib/libz__L +.endif # cddl/lib/libdtrace requires lib/libproc and lib/librtld_db; it's only built # on select architectures though (see cddl/lib/Makefile) .if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386" || \ @@ -1762,7 +1763,6 @@ cddl/lib/libctf__L: lib/libz__L ${MACHINE_CPUARCH} == "arm" _prebuild_libs+= lib/libproc lib/librtld_db .endif -.endif .if ${MK_CRYPT} != "no" .if ${MK_OPENSSL} != "no" From owner-svn-src-all@FreeBSD.ORG Tue May 26 16:36:08 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0F451B73; Tue, 26 May 2015 16:36:08 +0000 (UTC) (envelope-from baptiste.daroussin@gmail.com) Received: from mail-wg0-x22e.google.com (mail-wg0-x22e.google.com [IPv6:2a00:1450:400c:c00::22e]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 95466CFC; Tue, 26 May 2015 16:36:07 +0000 (UTC) (envelope-from baptiste.daroussin@gmail.com) Received: by wgbgq6 with SMTP id gq6so102402164wgb.3; Tue, 26 May 2015 09:36:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=EgearozmTuoUj/7fLZ+9VAn/lHxEjZ7cFZWlfLdl7vU=; b=KrEtXjjSZZmrrsItDyOfoGwDgpQOVJ2dtKm54BSOmpwPfss1qq69wkY/f4urL2GAVE IN4QLuDXR3r7XM3TiFVwk9WXZqUewyjAhWyN+wtkW6+aBP6yF2QuXsfyTwYdF6yROINm +Lu/031OGNJ+AOfgjq7yBmGBvElVLGRxFxbTk2OcpZCPR+EoYkamscCl9strQmX/1s2M cMlFENNYq+cufXCAHY/RWwj1qWtlS1UbzEOCEfDUOBqXQopDPQ00zna+BdUUA8kiJBuj 6PXHXT58eWWr1fiaTvmlDMHkVRW5cCqbDMwIJcupp2oLMOBk8gx+3AaTCP35Kf0pUkEn DpAg== X-Received: by 10.180.83.6 with SMTP id m6mr41026646wiy.72.1432658166167; Tue, 26 May 2015 09:36:06 -0700 (PDT) Received: from ivaldir.etoilebsd.net ([2001:41d0:8:db4c::1]) by mx.google.com with ESMTPSA id ha4sm17704195wib.0.2015.05.26.09.36.04 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 May 2015 09:36:04 -0700 (PDT) Sender: Baptiste Daroussin Date: Tue, 26 May 2015 18:36:02 +0200 From: Baptiste Daroussin To: Matteo Riondato Cc: Alastair Hogge , svn-src-head@freebsd.org, src-committers@freebsd.org, svn-src-all@freebsd.org Subject: Re: svn commit: r283132 - head/lib/libproc Message-ID: <20150526163554.GO39108@ivaldir.etoilebsd.net> References: <201505192223.t4JMNGDZ025108@svn.freebsd.org> <20150526090759.GQ55490@kropotkin.auxio> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="B3NBd8mrXZtPJEYR" Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 16:36:08 -0000 --B3NBd8mrXZtPJEYR Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Tue, May 26, 2015 at 09:20:39AM -0400, Matteo Riondato wrote: > On Tue, May 26, 2015 at 5:07 AM, Alastair Hogge wrote: > > On 2015-05-19 Tue 22:23:16 +0000 Baptiste Daroussin ,= wrote: > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > >> --- head/lib/libproc/Makefile Tue May 19 22:22:53 2015 (r283131) > >> +++ head/lib/libproc/Makefile Tue May 19 22:23:15 2015 (r283132) > >> @@ -23,6 +23,8 @@ LIBADD+=3D cxxrt > >> LIBADD+=3D supcplusplus > >> .endif > >> > >> +LIBADD+=3D elf rtld_db util > >> + > > > > I have to revert this commit on my CURRENT systems so buildworld can > > continue. > > > > On one such system(r283554): > > [..] > > --- all_subdir_libproc --- > > /tmp/bdver2/usr/src/tmp/usr/bin/ld: cannot find -lrtld_db > > cc: error: linker command failed with exit code 1 (use -v to see invoca= tion) > > *** [libproc.so.3] Error code 1 >=20 > Same here. >=20 > make.conf: > KERNCONF=3DTRITON > CPUTYPE?=3Dk8-sse3 > SVN_UPDATE=3Dy > COPTFLAGS=3D-O2 -pipe > MALLOC_PRODUCTION=3Dy >=20 > src.conf: > WITHOUT_AMD=3Dy > WITHOUT_APM=3Dy > WITHOUT_ASSERT_DEBUG=3Dy > WITHOUT_ATM=3Dy > WITHOUT_AUTOFS=3Dy > WITHOUT_BHYVE=3Dy > WITHOUT_BLUETOOTH=3Dy > WITHOUT_BOOTPARAMD=3Dy > WITHOUT_BOOTPD=3Dy > WITHOUT_BSNMP=3Dy > WITHOUT_CAPSICUM=3Dy > WITHOUT_CASPER=3Dy > WITHOUT_CDDL=3Dy > WITHOUT_CTM=3Dy > WITHOUT_FLOPPY=3Dy > WITHOUT_HAST=3Dy > WITHOUT_HTML=3Dy > WITHOUT_HYPERV=3Dy > WITHOUT_IPFILTER=3Dy > WITHOUT_ISCSI=3Dy > WITHOUT_NDIS=3Dy > WITHOUT_PPP=3Dy > WITHOUT_PROFILE=3Dy > WITHOUT_RBOOTD=3Dy > WITHOUT_ROUTED=3Dy > WITH_SORT_THREADS=3Dy > WITHOUT_TESTS=3Dy > WITHOUT_WIRELESS=3Dy >=20 > Best, > Matteo Should be fixed, thanks for reporting Best regards, Bapt --B3NBd8mrXZtPJEYR Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iEYEARECAAYFAlVkoOkACgkQ8kTtMUmk6EzEXQCgqeH0aMzx5WzjtjV52bo4ze9w VKsAn1qdLjpuyjHNal6o9EZZeM08PalU =iRRB -----END PGP SIGNATURE----- --B3NBd8mrXZtPJEYR-- From owner-svn-src-all@FreeBSD.ORG Tue May 26 17:10:14 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 734A8821 for ; Tue, 26 May 2015 17:10:14 +0000 (UTC) (envelope-from pfg@FreeBSD.org) Received: from nm41-vm3.bullet.mail.bf1.yahoo.com (nm41-vm3.bullet.mail.bf1.yahoo.com [216.109.114.158]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 2302C882 for ; Tue, 26 May 2015 17:10:14 +0000 (UTC) (envelope-from pfg@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1432660206; bh=lgMR3kP/4qkezwClBtXC8wNusz7ot9pP92qT9Bh+zlw=; h=Date:From:To:CC:Subject:References:In-Reply-To:From:Subject; b=qdPKIM3oxac4AibNRyPn1mCWYiyw/neZrfR5h3OzI+5LQQev/ER3wN9FKGR09oqx2D/7nByOEjh3MXLAJIUSTTxYzm4ZFUlXI3ubT7OSg92R1ZnoZwXn0dTqi2KUxsW7APTrZ/UhHaBXr1kWbDj891X5slOmTe4aDZola+n8ZmJGDsKlH73STalSfnavWK8ZybXIUPR3ojxsScY8OcRoFlQYhIfyfRMMqyOpaVUentaOr8pA/I5gp0ZrDT4av/KLejxCdxE2L31kF55AHoYj4Hzl5e+DBs8qnjAsTbfCS4CHUQ9GGpIaqmDMLahRpYsCY3J6JM/7K8cbCobm85aIgQ== Received: from [66.196.81.174] by nm41.bullet.mail.bf1.yahoo.com with NNFMP; 26 May 2015 17:10:06 -0000 Received: from [98.139.213.8] by tm20.bullet.mail.bf1.yahoo.com with NNFMP; 26 May 2015 17:10:06 -0000 Received: from [127.0.0.1] by smtp108.mail.bf1.yahoo.com with NNFMP; 26 May 2015 17:10:06 -0000 X-Yahoo-Newman-Id: 4291.95749.bm@smtp108.mail.bf1.yahoo.com X-Yahoo-Newman-Property: ymail-3 X-YMail-OSG: eXV9WZ8VM1kkIlu6VkH7gK16wvit.uLFgWqUhYA7GKvTFoy QtUFYv1bQCNMDvUk5jXnFDn21oWXMQ_uknlRN9HfAzrHALMoaerMCmdDu7Z1 Xire3Ahm1OGj5oVaByYqpY70q5mMKlUjMG9UzG_GmvXX3DoT1vA126UbE3H5 NLiMAxaVwXWJi3h_aVSDG3IJH3rR2GlHPjpS5EZmHzBiERe4BNwvnhXfnW3Z KQ7vSD0bczg3B8fAMVQrYaQMnYZ4PqJ_wHjD5XRAS2yFGqr0AGAbgvdlzguv MQZuxc3fFs4mx4pt5QArgtTxraZocZBBMwRh7frlDzGiZWJOKMSevshpGdlw mssTpHiRDzB9yefjTqUCa97ZNnRmf2l37PY7iXGOhPnhu6v9wwIq1to8NDGf xWDdgIa9iTKwSTdZXVa3ERwJvu.AzacyKakBFwMjtT4b4kKSl6vTZEPfpIA8 CQu2DtYboTMmoAqLWV7WjrzVPCcXSrmt_yH5GYrn.5O9ESTp9f3pMjWsbAFJ 2WSSb45b4QjRoQdIssnr8necis_.WV2Ik X-Yahoo-SMTP: xcjD0guswBAZaPPIbxpWwLcp9Unf Message-ID: <5564A8EC.6020405@FreeBSD.org> Date: Tue, 26 May 2015 12:10:04 -0500 From: Pedro Giffuni Organization: FreeBSD Project User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Chagin Dmitry , John Baldwin CC: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283424 - in head/sys: amd64/linux modules/linux64 References: <201505241607.t4OG7C7b073936@svn.freebsd.org> <2938779.SXzlp9bc0j@ralph.baldwin.cx> <20150525140421.GA17366@dchagin.static.corbina.net> In-Reply-To: <20150525140421.GA17366@dchagin.static.corbina.net> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 17:10:14 -0000 On 25/05/2015 09:04 a.m., Chagin Dmitry wrote: > On Mon, May 25, 2015 at 07:48:49AM -0400, John Baldwin wrote: >> On Sunday, May 24, 2015 04:07:12 PM Dmitry Chagin wrote: >>> Author: dchagin >>> Date: Sun May 24 16:07:11 2015 >>> New Revision: 283424 >>> URL: https://svnweb.freebsd.org/changeset/base/283424 >>> >>> Log: >>> Add preliminary support for x86-64 Linux binaries. >>> >>> Differential Revision: https://reviews.freebsd.org/D1076 >>> >>> Added: >>> head/sys/amd64/linux/ >>> head/sys/amd64/linux/Makefile (contents, props changed) >>> head/sys/amd64/linux/linux.h (contents, props changed) >>> head/sys/amd64/linux/linux_dummy.c (contents, props changed) >>> head/sys/amd64/linux/linux_genassym.c (contents, props changed) >>> head/sys/amd64/linux/linux_ipc64.h (contents, props changed) >>> head/sys/amd64/linux/linux_locore.s (contents, props changed) >>> head/sys/amd64/linux/linux_machdep.c (contents, props changed) >>> head/sys/amd64/linux/linux_support.s (contents, props changed) >>> head/sys/amd64/linux/linux_sysvec.c (contents, props changed) >>> head/sys/amd64/linux/linux_vdso.lds.s (contents, props changed) >>> head/sys/amd64/linux/syscalls.conf (contents, props changed) >>> head/sys/amd64/linux/syscalls.master (contents, props changed) >>> head/sys/modules/linux64/ >>> head/sys/modules/linux64/Makefile (contents, props changed) >> First, I'm really happy to see this land in HEAD! > Thanks! Indeed ... HUGE congratulations and thanks to Dmitry .. Great Job! Pedro. From owner-svn-src-all@FreeBSD.ORG Tue May 26 17:15:26 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 127A1AC1; Tue, 26 May 2015 17:15:26 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id E1723A04; Tue, 26 May 2015 17:15:25 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (pool-173-54-116-245.nwrknj.fios.verizon.net [173.54.116.245]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id D9117B91F; Tue, 26 May 2015 13:15:24 -0400 (EDT) From: John Baldwin To: Gleb Smirnoff Cc: Adrian Chadd , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283538 - head/sys/net80211 Date: Tue, 26 May 2015 13:02:54 -0400 Message-ID: <1496924.Xgdmz2A7b4@ralph.baldwin.cx> User-Agent: KMail/4.14.3 (FreeBSD/10.1-STABLE; KDE/4.14.3; amd64; ; ) In-Reply-To: <20150525193833.GW73119@FreeBSD.org> References: <201505251918.t4PJIGnk004558@svn.freebsd.org> <20150525193833.GW73119@FreeBSD.org> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Tue, 26 May 2015 13:15:24 -0400 (EDT) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 17:15:26 -0000 On Monday, May 25, 2015 10:38:33 PM Gleb Smirnoff wrote: > On Mon, May 25, 2015 at 07:18:16PM +0000, Adrian Chadd wrote: > A> * kill M_WAITOK - some platforms just don't want you to use it > > Actually all functions called in device attach context or in > syscall context should use M_WAITOK. This makes API more robust and > simplifies code a lot. > > Can we achieve portability without losing this nice feature of > FreeBSD? I agree with this general policy. There are several places that currently use M_NOWAIT (e.g. new-bus) that could safely use M_WAITOK instead in many cases (if not always). -- John Baldwin From owner-svn-src-all@FreeBSD.ORG Tue May 26 17:15:25 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 47A76ABF; Tue, 26 May 2015 17:15:25 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 20939A03; Tue, 26 May 2015 17:15:25 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (pool-173-54-116-245.nwrknj.fios.verizon.net [173.54.116.245]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 2F6F0B97E; Tue, 26 May 2015 13:15:24 -0400 (EDT) From: John Baldwin To: Julian Elischer Cc: Benjamin Kaduk , "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: Re: svn commit: r283552 - stable/10/share/man/man9 Date: Tue, 26 May 2015 13:06:55 -0400 Message-ID: <8588022.SvtbAhTXay@ralph.baldwin.cx> User-Agent: KMail/4.14.3 (FreeBSD/10.1-STABLE; KDE/4.14.3; amd64; ; ) In-Reply-To: <5563EE9E.6030002@freebsd.org> References: <201505260218.t4Q2IBld020184@svn.freebsd.org> <5563EE9E.6030002@freebsd.org> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Tue, 26 May 2015 13:15:24 -0400 (EDT) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 17:15:25 -0000 On Tuesday, May 26, 2015 11:55:10 AM Julian Elischer wrote: > On 5/26/15 10:50 AM, Benjamin Kaduk wrote: > > On Mon, May 25, 2015 at 10:18 PM, Julian Elischer > > > wrote: > > > > Author: julian > > Date: Tue May 26 02:18:10 2015 > > New Revision: 283552 > > URL: https://svnweb.freebsd.org/changeset/base/283552 > > > > Log: > > MFH: r283105 > > Only several years late, catch the psignal man page up to the > > fact that psignal has been renamed to kern_psignal since 9.0. > > > > > > Why did you not merge r283114 as well? > > > > -Ben > I didn't do it.. didn't even see it. Part of my standing practice with merges is to actually open the link to the change in viewvc in a web browser and open the revision logs of each changed file in a new tab. In each tab I clear the sticky revision and then check for any followup commits that might have fixed issues in the previous change. For smaller changes where I know there wasn't a followup I will skip this, but if I'm not sure I use this to check for followups. -- John Baldwin From owner-svn-src-all@FreeBSD.ORG Tue May 26 17:26:37 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A8D86CA; Tue, 26 May 2015 17:26:37 +0000 (UTC) (envelope-from dchagin@dchagin.static.corbina.net) Received: from heemeyer.club (heemeyer.club [IPv6:2001:19f0:6400:80a1::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "heemeyer.club", Issuer "heemeyer.club" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 7CAF8C86; Tue, 26 May 2015 17:26:36 +0000 (UTC) (envelope-from dchagin@dchagin.static.corbina.net) Received: from dchagin.static.corbina.net ([83.220.236.178]) by heemeyer.club (8.15.1/8.15.1) with ESMTPS id t4QHQRYT031249 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 26 May 2015 17:26:33 GMT (envelope-from dchagin@dchagin.static.corbina.net) X-Authentication-Warning: heemeyer.club: Host [83.220.236.178] claimed to be dchagin.static.corbina.net Received: from dchagin.static.corbina.net (localhost [127.0.0.1]) by dchagin.static.corbina.net (8.15.1/8.15.1) with ESMTPS id t4QHQOZb028519 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Tue, 26 May 2015 20:26:25 +0300 (MSK) (envelope-from dchagin@dchagin.static.corbina.net) Received: (from dchagin@localhost) by dchagin.static.corbina.net (8.15.1/8.15.1/Submit) id t4QHQNYx028518; Tue, 26 May 2015 20:26:23 +0300 (MSK) (envelope-from dchagin) Date: Tue, 26 May 2015 20:26:22 +0300 From: Chagin Dmitry To: Takahashi Yoshihiro Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283569 - head/sys/conf Message-ID: <20150526172622.GA28505@dchagin.static.corbina.net> References: <201505261408.t4QE8WLq069743@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201505261408.t4QE8WLq069743@svn.freebsd.org> User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 17:26:37 -0000 On Tue, May 26, 2015 at 02:08:32PM +0000, Takahashi Yoshihiro wrote: > Author: nyan > Date: Tue May 26 14:08:32 2015 > New Revision: 283569 > URL: https://svnweb.freebsd.org/changeset/base/283569 > > Log: > MFi386: r283407 > Implement vdso - virtual dynamic shared object. > > MFi386: r283474 > Rework signal code to allow using it by other modules, like linprocfs. > > MFi386: r283506 > For objcopy, use --input-target and --output-target. > > This fixes pc98 build. > Thank you, my make universe just ended, sorry -- Have fun! chd From owner-svn-src-all@FreeBSD.ORG Tue May 26 17:34:57 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 689A42CB; Tue, 26 May 2015 17:34:57 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.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 5751AEA7; Tue, 26 May 2015 17:34:57 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4QHYvNA075941; Tue, 26 May 2015 17:34:57 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4QHYvMN075940; Tue, 26 May 2015 17:34:57 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201505261734.t4QHYvMN075940@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Tue, 26 May 2015 17:34:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283573 - head/release X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 17:34:57 -0000 Author: gjb Date: Tue May 26 17:34:56 2015 New Revision: 283573 URL: https://svnweb.freebsd.org/changeset/base/283573 Log: Remove a continuation on error, since the relevant behavior can only occur if a particular file exists. MFC after: 3 days Sponsored by: The FreeBSD Foundation Modified: head/release/Makefile.mirrors Modified: head/release/Makefile.mirrors ============================================================================== --- head/release/Makefile.mirrors Tue May 26 16:25:28 2015 (r283572) +++ head/release/Makefile.mirrors Tue May 26 17:34:56 2015 (r283573) @@ -107,7 +107,7 @@ iso-images-stage: . if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}) cd ${RELEASEDIR} && \ mv ${OSRELEASE}-${IMAGE} \ - ${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} || true + ${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} cp -p ${RELEASEDIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} \ ${ISO_DIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} cd ${TLD}/ISO-IMAGES/${REVISION} && \ @@ -117,7 +117,7 @@ iso-images-stage: . if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz) cd ${RELEASEDIR} && \ mv ${OSRELEASE}-${IMAGE}.xz \ - ${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz || true + ${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz cp -p ${RELEASEDIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz \ ${ISO_DIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz cd ${TLD}/ISO-IMAGES/${REVISION} && \ From owner-svn-src-all@FreeBSD.ORG Tue May 26 17:40:37 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B91CA618; Tue, 26 May 2015 17:40:37 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.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 A80EFF5B; Tue, 26 May 2015 17:40:37 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4QHebID079838; Tue, 26 May 2015 17:40:37 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4QHeb5p079837; Tue, 26 May 2015 17:40:37 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201505261740.t4QHeb5p079837@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Tue, 26 May 2015 17:40:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283574 - head/release X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 17:40:37 -0000 Author: gjb Date: Tue May 26 17:40:36 2015 New Revision: 283574 URL: https://svnweb.freebsd.org/changeset/base/283574 Log: Set STAGE_TARGETS only if RELEASEDIR exists. MFC after: 3 days Sponsored by: The FreeBSD Foundation Modified: head/release/Makefile.mirrors Modified: head/release/Makefile.mirrors ============================================================================== --- head/release/Makefile.mirrors Tue May 26 17:34:56 2015 (r283573) +++ head/release/Makefile.mirrors Tue May 26 17:40:36 2015 (r283574) @@ -16,7 +16,9 @@ RELEASEDIR?= /R FTPDIR?= ${RELEASEDIR}/ftp-stage +.if exists(${RELEASEDIR}) STAGE_TARGETS?= iso-images-stage +.endif .if (defined(EMBEDDED_TARGET) && !empty(EMBEDDED_TARGET)) || (defined(EMBEDDEDBUILD) && !empty(EMBEDDEDBUILD)) . if ${TARGET} == "arm" || ${EMBEDDED_TARGET} == "arm" From owner-svn-src-all@FreeBSD.ORG Tue May 26 17:42:28 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D3375777; Tue, 26 May 2015 17:42:28 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.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 C1C36141; Tue, 26 May 2015 17:42:28 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4QHgSXd080805; Tue, 26 May 2015 17:42:28 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4QHgSEb080804; Tue, 26 May 2015 17:42:28 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201505261742.t4QHgSEb080804@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Tue, 26 May 2015 17:42:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283575 - head/release X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 17:42:28 -0000 Author: gjb Date: Tue May 26 17:42:28 2015 New Revision: 283575 URL: https://svnweb.freebsd.org/changeset/base/283575 Log: Remove duplicate exists() sanity check. MFC after: 3 days Sponsored by: The FreeBSD Foundation Modified: head/release/Makefile.mirrors Modified: head/release/Makefile.mirrors ============================================================================== --- head/release/Makefile.mirrors Tue May 26 17:40:36 2015 (r283574) +++ head/release/Makefile.mirrors Tue May 26 17:42:28 2015 (r283575) @@ -85,8 +85,6 @@ remove-old-bits: iso-images-stage: mkdir -p ${ISO_DIR} mkdir -p ${TLD}/ISO-IMAGES/${REVISION} -.if exists(${RELEASEDIR}) - @# Assume we have images to copy. . if defined(SNAPSHOT) && !empty(SNAPSHOT) cd ${RELEASEDIR} && rm -f CHECKSUM.* . for IMAGE in ${IMAGES} @@ -206,7 +204,6 @@ iso-images-stage: ln -s ${TARGET_ARCH}/${REVISION}-${BRANCH} \ ${REVISION}-${BRANCH} . endif -.endif # no RELEASEDIR vm-images-stage: mkdir -p ${VM_DIR} From owner-svn-src-all@FreeBSD.ORG Tue May 26 17:44:32 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 040E29C6; Tue, 26 May 2015 17:44:32 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.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 E611F16B; Tue, 26 May 2015 17:44:31 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4QHiVKp081266; Tue, 26 May 2015 17:44:31 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4QHiV6l081265; Tue, 26 May 2015 17:44:31 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201505261744.t4QHiV6l081265@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Tue, 26 May 2015 17:44:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283576 - head/release X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 17:44:32 -0000 Author: gjb Date: Tue May 26 17:44:31 2015 New Revision: 283576 URL: https://svnweb.freebsd.org/changeset/base/283576 Log: Reindent after r283575. MFC after: 3 days Sponsored by: The FreeBSD Foundation Modified: head/release/Makefile.mirrors Modified: head/release/Makefile.mirrors ============================================================================== --- head/release/Makefile.mirrors Tue May 26 17:42:28 2015 (r283575) +++ head/release/Makefile.mirrors Tue May 26 17:44:31 2015 (r283576) @@ -85,16 +85,16 @@ remove-old-bits: iso-images-stage: mkdir -p ${ISO_DIR} mkdir -p ${TLD}/ISO-IMAGES/${REVISION} -. if defined(SNAPSHOT) && !empty(SNAPSHOT) +.if defined(SNAPSHOT) && !empty(SNAPSHOT) cd ${RELEASEDIR} && rm -f CHECKSUM.* -. for IMAGE in ${IMAGES} -. if defined(EMBEDDED) && !empty(EMBEDDED) -. if defined(OLDNAME) && !empty(OLDNAME) +. for IMAGE in ${IMAGES} +. if defined(EMBEDDED) && !empty(EMBEDDED) +. if defined(OLDNAME) && !empty(OLDNAME) @# arm/armv6 IMX6 -> WANDBOARD, for example. cd ${RELEASEDIR} && \ mv ${OSRELEASE}-${OLDNAME}.${IMAGE}.xz \ ${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz -. endif +. endif cd ${RELEASEDIR} && \ mv ${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz \ ${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz @@ -103,8 +103,8 @@ iso-images-stage: cd ${TLD}/ISO-IMAGES/${REVISION} && \ ln -s \ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz -. endif # not embedded -. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}) +. endif # not embedded +. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}) cd ${RELEASEDIR} && \ mv ${OSRELEASE}-${IMAGE} \ ${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} @@ -113,8 +113,8 @@ iso-images-stage: cd ${TLD}/ISO-IMAGES/${REVISION} && \ ln -s \ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} -. endif -. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz) +. endif +. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz) cd ${RELEASEDIR} && \ mv ${OSRELEASE}-${IMAGE}.xz \ ${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz @@ -123,11 +123,11 @@ iso-images-stage: cd ${TLD}/ISO-IMAGES/${REVISION} && \ ln -s \ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz -. endif -. endfor # images loop +. endif +. endfor # images loop cd ${RELEASEDIR} && rm -f CHECKSUM.* -. for CHECKSUM in ${CHECKSUM_FILES} -. if defined(EMBEDDED) && !empty(EMBEDDED) +. for CHECKSUM in ${CHECKSUM_FILES} +. if defined(EMBEDDED) && !empty(EMBEDDED) cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \ CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX} cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX} \ @@ -135,7 +135,7 @@ iso-images-stage: cd ${TLD}/ISO-IMAGES/${REVISION} && \ ln -s \ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX} -. else # not embedded +. else # not embedded cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \ CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX} cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX} \ @@ -143,42 +143,42 @@ iso-images-stage: cd ${TLD}/ISO-IMAGES/${REVISION} && \ ln -s \ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX} -. endif # -. endfor # checksum files -. else # not snapshot -. for IMAGE in ${IMAGES} -. if defined(EMBEDDED) && !empty(EMBEDDED) -. if defined(OLDNAME) && !empty(OLDNAME) +. endif # +. endfor # checksum files +.else # not snapshot +. for IMAGE in ${IMAGES} +. if defined(EMBEDDED) && !empty(EMBEDDED) +. if defined(OLDNAME) && !empty(OLDNAME) @# arm/armv6 IMX6 -> WANDBOARD, for example. cd ${RELEASEDIR} && \ mv ${OSRELEASE}-${OLDNAME}.${IMAGE}.xz \ ${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz -. endif +. endif cp -p ${RELEASEDIR}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz \ ${ISO_DIR}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz cd ${TLD}/ISO-IMAGES/${REVISION} && \ ln -s \ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz -. endif # not embedded -. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}) +. endif # not embedded +. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}) cd ${RELEASEDIR} && \ cp -p ${RELEASEDIR}/${OSRELEASE}-${IMAGE} \ ${ISO_DIR}/${OSRELEASE}-${IMAGE} cd ${TLD}/ISO-IMAGES/${REVISION} && \ ln -s \ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE} -. endif -. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz) +. endif +. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz) cp -p ${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz \ ${ISO_DIR}/${OSRELEASE}-${IMAGE}.xz cd ${TLD}/ISO-IMAGES/${REVISION} && \ ln -s \ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE}.xz -. endif -. endfor # images loop +. endif +. endfor # images loop cd ${RELEASEDIR} && rm -f CHECKSUM.* -. for CHECKSUM in ${CHECKSUM_FILES} -. if defined(EMBEDDED) && !empty(EMBEDDED) +. for CHECKSUM in ${CHECKSUM_FILES} +. if defined(EMBEDDED) && !empty(EMBEDDED) cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \ CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME} cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME} \ @@ -186,7 +186,7 @@ iso-images-stage: cd ${TLD}/ISO-IMAGES/${REVISION} && \ ln -s \ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME} -. else # not embedded +. else # not embedded cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \ CHECKSUM.${CHECKSUM}-${OSRELEASE} cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE} \ @@ -194,16 +194,16 @@ iso-images-stage: cd ${TLD}/ISO-IMAGES/${REVISION} && \ ln -s \ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE} -. endif -. endfor # checksum files -. endif # release -. if exists(${RELEASEDIR}/ftp) +. endif +. endfor # checksum files +.endif # release +.if exists(${RELEASEDIR}/ftp) mkdir -p ${FTP_DIR} cp -p ${RELEASEDIR}/ftp/*.txz ${RELEASEDIR}/ftp/MANIFEST ${FTP_DIR} cd ${TLD}/${TARGET} && \ ln -s ${TARGET_ARCH}/${REVISION}-${BRANCH} \ ${REVISION}-${BRANCH} -. endif +.endif vm-images-stage: mkdir -p ${VM_DIR} From owner-svn-src-all@FreeBSD.ORG Tue May 26 18:25:32 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id DA503B0E; Tue, 26 May 2015 18:25:32 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-ie0-x231.google.com (mail-ie0-x231.google.com [IPv6:2607:f8b0:4001:c03::231]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A4178D5E; Tue, 26 May 2015 18:25:32 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: by iebgx4 with SMTP id gx4so98695553ieb.0; Tue, 26 May 2015 11:25:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=7X6ZXzGrorAPepDkBl7Pj1CnFrKA/KootjOZnbmTnzQ=; b=fiiWtXvI1XG3Y3OrRw2SWtRHCemWgpbnl7OpOZnVabFf5QYQnwFCS0h1Kvn+2nNYAX AccU3YOQCSsOShEKCce7PUR55MWXQbgZlVGUB0qFa2i1DZQuwQ3XqRlx85Z91QiUgZ5S mIpcYrJrlco8q/E2Ihzw0eVmawETfSP69S4AB0HImLrD2ejjOW/kX3FLCO/ySUnUkkq8 zeQHj77dFFjLdlz1G1yxoOXo4rxQBNHWXvpiToZJhIEAQrhRvePLQ7F7pqsfO9ZE4zug evMZWGlGrth22cZ+39HChwwBXrPcTEt6Ce40jTkQox5n20NCOBY8ZL9Gf3Un3xIgNWO/ IkMg== MIME-Version: 1.0 X-Received: by 10.50.73.198 with SMTP id n6mr31282158igv.32.1432664732074; Tue, 26 May 2015 11:25:32 -0700 (PDT) Sender: adrian.chadd@gmail.com Received: by 10.36.38.133 with HTTP; Tue, 26 May 2015 11:25:32 -0700 (PDT) In-Reply-To: <20150526154453.GA73119@FreeBSD.org> References: <201505261319.t4QDJ5Hj045298@svn.freebsd.org> <20150526154453.GA73119@FreeBSD.org> Date: Tue, 26 May 2015 11:25:32 -0700 X-Google-Sender-Auth: 1d_s-pDA7RjRLrVesmKsc4mQClc Message-ID: Subject: Re: svn commit: r283568 - head/sys/net80211 From: Adrian Chadd To: Gleb Smirnoff Cc: "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" Content-Type: text/plain; charset=UTF-8 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 18:25:33 -0000 On 26 May 2015 at 08:44, Gleb Smirnoff wrote: > On Tue, May 26, 2015 at 08:25:01AM -0700, Adrian Chadd wrote: > A> Hi, > A> > A> We're going to have to move all of the counter API stuff into > A> ieee80211_freebsd.[ch]. > > Well, I put the function in the same file where if_get_counter pointer > is set, so that it can be static. You need distinctive border between > FreeBSD and non-FreeBSD stuff, which right now isn't yet clear. > > I don't mind moving, but looks like the ifnet attachment process, either > the current one or the future one, also needs to be moved to FreeBSD > part of the code. Yeah, the lines got .. blurred. I don't want to go full portability unless someone comes up with a very pressing need - eg, still assume ifnet ,still assume ioctl ,transmit/start, receive, mbufs, etc. But vnets and counter API should be easy to migrate out so netbsd/dragonflybsd can port things. -adrian From owner-svn-src-all@FreeBSD.ORG Tue May 26 18:26:30 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C88B3C58; Tue, 26 May 2015 18:26:30 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-ig0-x231.google.com (mail-ig0-x231.google.com [IPv6:2607:f8b0:4001:c05::231]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 92E1ED6D; Tue, 26 May 2015 18:26:30 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: by igbhj9 with SMTP id hj9so67333657igb.1; Tue, 26 May 2015 11:26:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=RnAMWtb0w207gxaFlPv9ruPRcJPT1wFKNx0WZz4od2M=; b=D94ocjWO2FAyE5dwr/WmmmfEAjiEBk7bOW9GNwGpGl8EnYP3fB2mgLlGadOATVweR4 PEhOK8bFwoyGL3FtP9fY2UE2odBUY2NEyoAZHlDlpF6+k1V3MvolyosU2RUQkpqA58vb LMso/CFSanNiwdzMBFQJY6UBijKP/DZO9rK5GfnC8+1pW87YpEbC98YXT2GM/QTOLjPd 2mec0CXL2wX5lMAKgzUc8MQVXxeQWbMh9R+lKDrBWLwrlwXbRyKDa0gUX44Tck7JL7Sv OWMwH4HJgLfbFYODpb9N/yI98Jzw5DQpbly39FPkgUdbuIP99VuXL022KefmfOUP8UUt Fwkg== MIME-Version: 1.0 X-Received: by 10.50.97.105 with SMTP id dz9mr31442542igb.49.1432664790063; Tue, 26 May 2015 11:26:30 -0700 (PDT) Sender: adrian.chadd@gmail.com Received: by 10.36.38.133 with HTTP; Tue, 26 May 2015 11:26:30 -0700 (PDT) In-Reply-To: <1496924.Xgdmz2A7b4@ralph.baldwin.cx> References: <201505251918.t4PJIGnk004558@svn.freebsd.org> <20150525193833.GW73119@FreeBSD.org> <1496924.Xgdmz2A7b4@ralph.baldwin.cx> Date: Tue, 26 May 2015 11:26:30 -0700 X-Google-Sender-Auth: qdHIBfj2cF_bIX1AJ65Avdl-eQA Message-ID: Subject: Re: svn commit: r283538 - head/sys/net80211 From: Adrian Chadd To: John Baldwin Cc: Gleb Smirnoff , "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" Content-Type: text/plain; charset=UTF-8 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 18:26:30 -0000 There's only one place that it's used in net80211, and that's for the ifnet setup. All I wanted to do was ensure it didn't end up getting used elsewhere in the stack. -adrian From owner-svn-src-all@FreeBSD.ORG Tue May 26 18:27:38 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D97C6DA6; Tue, 26 May 2015 18:27:38 +0000 (UTC) (envelope-from ae@FreeBSD.org) Received: from svn.freebsd.org (svn.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 C847BD7E; Tue, 26 May 2015 18:27:38 +0000 (UTC) (envelope-from ae@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4QIRcC4003245; Tue, 26 May 2015 18:27:38 GMT (envelope-from ae@FreeBSD.org) Received: (from ae@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4QIRcv8003244; Tue, 26 May 2015 18:27:38 GMT (envelope-from ae@FreeBSD.org) Message-Id: <201505261827.t4QIRcv8003244@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ae set sender to ae@FreeBSD.org using -f From: "Andrey V. Elsukov" Date: Tue, 26 May 2015 18:27:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283577 - head/sbin/dumpfs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 18:27:39 -0000 Author: ae Date: Tue May 26 18:27:38 2015 New Revision: 283577 URL: https://svnweb.freebsd.org/changeset/base/283577 Log: Print leading zeroes of UFS2 fs_id like we do for UFS1. PR: 156908 MFC after: 1 week Modified: head/sbin/dumpfs/dumpfs.c Modified: head/sbin/dumpfs/dumpfs.c ============================================================================== --- head/sbin/dumpfs/dumpfs.c Tue May 26 17:44:31 2015 (r283576) +++ head/sbin/dumpfs/dumpfs.c Tue May 26 18:27:38 2015 (r283577) @@ -165,7 +165,7 @@ dumpfs(const char *name) fstime = afs.fs_time; printf("magic\t%x (UFS2)\ttime\t%s", afs.fs_magic, ctime(&fstime)); - printf("superblock location\t%jd\tid\t[ %x %x ]\n", + printf("superblock location\t%jd\tid\t[ %08x %08x ]\n", (intmax_t)afs.fs_sblockloc, afs.fs_id[0], afs.fs_id[1]); printf("ncg\t%d\tsize\t%jd\tblocks\t%jd\n", afs.fs_ncg, (intmax_t)fssize, (intmax_t)afs.fs_dsize); From owner-svn-src-all@FreeBSD.ORG Tue May 26 19:46:42 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0FD99FF2; Tue, 26 May 2015 19:46:42 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org (svn.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 EF225315; Tue, 26 May 2015 19:46:41 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4QJkf8T043855; Tue, 26 May 2015 19:46:41 GMT (envelope-from des@FreeBSD.org) Received: (from des@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4QJkfMo043854; Tue, 26 May 2015 19:46:41 GMT (envelope-from des@FreeBSD.org) Message-Id: <201505261946.t4QJkfMo043854@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: des set sender to des@FreeBSD.org using -f From: Dag-Erling Smørgrav Date: Tue, 26 May 2015 19:46:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283578 - head/crypto/openssh X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 19:46:42 -0000 Author: des Date: Tue May 26 19:46:41 2015 New Revision: 283578 URL: https://svnweb.freebsd.org/changeset/base/283578 Log: Import new moduli from OpenBSD. Although there is no reason to distrust the current set, it is good hygiene to change them once in a while. MFC after: 1 week Modified: head/crypto/openssh/moduli Modified: head/crypto/openssh/moduli ============================================================================== --- head/crypto/openssh/moduli Tue May 26 18:27:38 2015 (r283577) +++ head/crypto/openssh/moduli Tue May 26 19:46:41 2015 (r283578) @@ -1,262 +1,276 @@ -# $OpenBSD: moduli,v 1.8 2012/08/29 05:06:54 dtucker Exp $ +# $OpenBSD: moduli,v 1.12 2015/05/22 02:45:42 dtucker Exp $ # Time Type Tests Tries Size Generator Modulus -20120821044040 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A770E2EC9F -20120821044046 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A7711F2C6B -20120821044047 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A771225323 -20120821044048 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A7712507AB -20120821044050 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A7712A2DB3 -20120821044051 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A7712CACEF -20120821044053 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A7713959C3 -20120821044057 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A7715BBA13 -20120821044103 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A77191592F -20120821044104 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A771938E1F -20120821044106 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A771A1E127 -20120821044108 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A771B3CDFB -20120821044109 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A771B71913 -20120821044111 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A771C2759F -20120821044113 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A771CF8ABF -20120821044114 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A771D2B49B -20120821044116 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A771DF6193 -20120821044117 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A771E67E33 -20120821044120 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A771FA581B -20120821044121 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A772027DDB -20120821044123 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A772093F8B -20120821044124 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A7720EEF6F -20120821044125 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A77216CAD7 -20120821044126 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A77219A90B -20120821044129 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A7722A0103 -20120821044130 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A772343DBF -20120821044133 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A772460C3F -20120821044137 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A7726A4E0F -20120821044138 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A772716D8B -20120821044141 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A7728D719B -20120821044143 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A77297AA8B -20120821044145 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A772A8794B -20120821044147 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A772B4D6AB -20120821044149 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A772BD325F -20120821044150 2 6 100 1023 5 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A772BDAE07 -20120821044151 2 6 100 1023 2 D9277DAA27DB131C03B108D41A76B4DA8ACEECCCAE73D2E48CEDAAA70B09EF9F04FB020DCF36C51B8E485B26FABE0337E24232BE4F4E693548310244937433FB1A5758195DC73B84ADEF8237472C46747D79DC0A2CF8A57CE8DBD8F466A20F8551E7B1B824B2E4987A8816D9BC0741C2798F3EBAD3ADEBCC78FCE6A772C95CE3 -20120821044502 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F96361507 -20120821044515 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F965885BF -20120821044519 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F966006C7 -20120821044528 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F9674A0EB -20120821044539 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F969457F3 -20120821044544 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F969BE79B -20120821044606 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F96E1E827 -20120821044623 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F9714284B -20120821044630 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F97231CB7 -20120821044636 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F972E01DF -20120821044647 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F974BCED3 -20120821044650 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F974C3A43 -20120821044653 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F974E8F73 -20120821044701 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F9763403B -20120821044705 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F9767666B -20120821044708 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F9768D81F -20120821044726 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F979FD437 -20120821044729 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F97A29BC7 -20120821044732 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F97A56447 -20120821044737 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F97AEDBDB -20120821044740 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F97B187F3 -20120821044746 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F97BC6EE3 -20120821044757 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F97DCCDEB -20120821044817 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F981975F7 -20120821044831 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F983EC267 -20120821044841 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F985A032F -20120821044846 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F9863B0AB -20120821044852 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F986E5C7F -20120821044911 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F98A8FF6B -20120821044917 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F98B40E4B -20120821044924 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F98C5840F -20120821044940 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F98F22CEB -20120821044947 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F99040FFF -20120821044954 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F99139AE3 -20120821045010 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F9940BEFB -20120821045017 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F9954379F -20120821045020 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F99548C23 -20120821045023 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F99562FC3 -20120821045028 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F9960CDCF -20120821045038 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F997AC0B3 -20120821045045 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F998D9B6B -20120821045050 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F9994BB77 -20120821045059 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F99AC001B -20120821045101 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F99AC5547 -20120821045107 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F99B86567 -20120821045110 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F99BA2677 -20120821045128 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F99EF4523 -20120821045154 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F9A419DAB -20120821045214 2 6 100 1535 5 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F9A7D1E67 -20120821045218 2 6 100 1535 2 D1391174233D315398FE2830AC6B2B66BCCD01B0A634899F339B7879F1DB85712E9DC4E4B1C6C8355570C1D2DCB53493DF18175A9C53D1128B592B4C72D97136F5542FEB981CBFE8012FDD30361F288A42BD5EBB08BAB0A5640E1AC48763B2ABD1945FEE36B2D55E1D50A1C86CED9DD141C4E7BE2D32D9B562A0F8E2E927020E91F58B57EB9ACDDA106A59302D7E92AD5F6E851A45FA1CFE86029A0F727F65A8F475F33572E2FDAB6073F0C21B8B54C3823DB2EF068927E5D747498F9A826443 -20120821045639 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293680B09D63 -20120821045830 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C6042936814C2FFB -20120821050046 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C60429368214FC53 -20120821050054 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C60429368218E83F -20120821050118 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293682361D5F -20120821050218 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C6042936828ADA17 -20120821050243 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293682A8A7CB -20120821050427 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C60429368341AC87 -20120821050515 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C6042936837F8657 -20120821050545 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293683A3DFD3 -20120821050554 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293683A9635F -20120821050636 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293683DF582B -20120821050648 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293683E86803 -20120821050758 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293684495A13 -20120821050807 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C6042936844FAB5B -20120821050849 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C60429368486D99B -20120821050916 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293684A776A7 -20120821050942 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293684C4FF73 -20120821051003 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293684DB980F -20120821051010 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293684DD4FBF -20120821051158 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293685721537 -20120821051206 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293685768253 -20120821051231 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293685930F13 -20120821051240 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293685987B0B -20120821051324 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293685D5E36B -20120821051349 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293685F3AB7F -20120821051424 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293686206187 -20120821051516 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C60429368668EB4B -20120821051540 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C60429368686EB87 -20120821051622 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293686BCCF13 -20120821051703 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293686F13B9F -20120821051715 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293686FB2D4F -20120821051837 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C6042936876ED7DF -20120821051843 2 6 100 2047 2 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C6042936876F05DB -20120821051930 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293687AEDE8F -20120821052131 2 6 100 2047 5 DD2047CBDBB6F8E919BC63DE885B34D0FD6E3DB2887D8B46FE249886ACED6B46DFCD5553168185FD376122171CD8927E60120FA8D01F01D03E58281FEA9A1ABE97631C828E41815F34FDCDF787419FE13A3137649AA93D2584230DF5F24B5C00C88B7D7DE4367693428C730376F218A53E853B0851BAB7C53C15DA7839CBE1285DB63F6FA45C1BB59FE1C5BB918F0F8459D7EF60ACFF5C0FA0F3FCAD1C5F4CE4416D4F4B36B05CDCEBE4FB879E95847EFBC6449CD190248843BC7EDB145FBFC4EDBB1A3C959298F08F3BA2CFBE231BBE204BE6F906209D28BD4820AB3E7BE96C26AE8A809ADD8D1A5A0B008E9570FA4C4697E116B8119892C604293688637CFF -20120821053137 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF942284EA9F -20120821053209 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF94228B7F67 -20120821053317 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9422A2B3C7 -20120821053841 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF94232DEF87 -20120821054039 2 6 100 3071 2 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF942359AB7B -20120821054334 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9423A371A7 -20120821054455 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9423C1CEEF -20120821054844 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9424273F1F -20120821055307 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9424987667 -20120821055436 2 6 100 3071 2 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9424B90BAB -20120821055700 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9424F6C7CF -20120821060224 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF94258ADCEF -20120821060334 2 6 100 3071 2 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9425A1FCEB -20120821060420 2 6 100 3071 2 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9425AEBF43 -20120821060927 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF942634C34F -20120821061829 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF94272F0D4F -20120821062020 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF94275B00B7 -20120821062241 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9427941F5F -20120821063416 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9428D5E367 -20120821063648 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF942917E127 -20120821064052 2 6 100 3071 2 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9429825A2B -20120821064951 2 6 100 3071 2 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF942A74C4EB -20120821065736 2 6 100 3071 2 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF942B4640D3 -20120821071146 2 6 100 3071 2 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF942CCD6D1B -20120821071337 2 6 100 3071 2 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF942CF9321B -20120821072545 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF942E48654F -20120821075022 2 6 100 3071 2 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9430F1B6A3 -20120821080229 2 6 100 3071 2 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9432356F63 -20120821081230 2 6 100 3071 2 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF94333D9363 -20120821081746 2 6 100 3071 5 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9433C6A7A7 -20120821081811 2 6 100 3071 2 DFAA35D35531E0F524F0099877A482D2AC8D589F374394A262A8E81A8A4FB2F65FADBAB395E05D147B29D486DFAA41F41597A256DA82A8B6F76401AED53D0253F956CEC610D417E42E3B287F7938FC24D8821B40BFA218A956EB7401BED6C96C68C7FD64F8170A8A76B953DD2F05420118F6B144D8FE48060A2BCB85056B478EDEF96DBC70427053ECD2958C074169E9550DD877779A3CF17C5AC850598C7586BEEA9DCFE9DD2A5FB62DF5F33EA7BC00CDA31B9D2DD721F979EA85B6E63F0C4E30BDDCD3A335522F9004C4ED50B15DC537F55324DD4FA119FB3F101467C6D7E1699DE4B3E3C478A8679B8EB3FA5C9B826B44530FD3BE9AD3063B240B0C853EBDDBD68DD940332D98F148D5D9E1DC977D60A0D23D0CA1198637FEAE4E7FAAC173AF2B84313A666CFB4EE6972811921D0AD867CE57F3BBC8D6CB057E3B66757BB46C9F72662624D44E14528327E3A7100E81A12C43C4E236118318CD90C8AA185BBB0C764826DAEAEE8DD245C5B451B4944E6122CC522D1C335C2EEF9433C94C93 -20120821084945 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA45B27D047 -20120821091240 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA45C370A33 -20120821092428 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA45CBB9FBB -20120821093047 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA45D001E73 -20120821095420 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA45E104D6F -20120821095624 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA45E21E2BF -20120821102749 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA45F9B1B7B -20120821105854 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA4610E205F -20120821110658 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA461631FBF -20120821110744 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA461635E3B -20120821115206 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA4636E0DF7 -20120821121256 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA4645F38B3 -20120821121421 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA46467609B -20120821122649 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA464F87D6B -20120821122854 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA46508F94B -20120821125200 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA4661CBC5B -20120821130613 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA466BC6B33 -20120821131115 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA466ED9CC7 -20120821132817 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA467B278B3 -20120821135349 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA468D8351B -20120821141206 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA469A817A7 -20120821144909 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA46B488EF7 -20120821150021 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA46BC5D5E7 -20120821153843 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA46D774723 -20120821162006 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA46F5488DB -20120821170404 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA47157A067 -20120821173305 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA472A1E94B -20120821173936 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA472E0E57F -20120821174533 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA4731F7433 -20120821180053 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA473C7CE3F -20120821180952 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA4742A8237 -20120821181124 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA474343C5B -20120821183540 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA4754D89DB -20120821183852 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA47569B47F -20120821184512 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA475AC57DB -20120821184603 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA475AD78CB -20120821184701 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA475B0038F -20120821185939 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA4763BD72F -20120821190630 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA476853BB7 -20120821190945 2 6 100 4095 2 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA476A47843 -20120821195501 2 6 100 4095 5 EF07B0F39662DC8600224E46AB8BE8CB72E552D52E88013D20EC039A0697ED9AAD018B16F0B910D4AD54437B8585AAA4EAE0CE216E31F50EDF0CD05DAF5E02A73D399C91B38220EC3B62C42D1CF6BF06378533A70C1F8F4F4416DD542213D3432412125FDBFF7B9473CE6F8812D860E66282C9F34C1774D1EA57D54DADDF7E37A12C4A6AD5B4A30128C29D27D03B6535C0F7A8AF857E18ECAB992984E6D546918AAACB971A2AC2C2E7AF79A9547979E6342DB7443985E5F7EDF6F9F22B600EEB42CB84A5F1ACD76E213C52E3052DAE1A9119801CFA28E6EFD4F6BC35FA06C8724D78A96AF054826C0BF865D0EC5F6F4D31C1D3F7CF2FE6F16AF267A7BA04753AEF420D4D8C36BCE8D9694814B9E9C3DF468064EB5636405C71CA9D8D50D36570B42639C9C2C02FB3A3D0C6B28DD200B0AF164C621D60B12E35E4D00129C8900F6EFDBB49FF34DD64CB13CD4087A7F84FEFD77D4E8099C2B804BA643EAFCA66D1F02BD09AE44AC83A5149F60711B7B108C01D53FF15FA59B36BE62A870F163F5063CEE103B377808343AFBD32271199E26D93734011BED2305EDE2E841EAD512E23B8C9B8CD4D398C7B4C8B76B355CC150B66B8EB7779E2CA519E10E45D0FB138676850C56F23DB135F546D364B92BC1C9423E089D30D4D57D27D7885EE14AE135A488C0 542C3719FBEF46F4BB5FB53A28DA26DDF84C8BC55348A8AA478A96AEF -20120705232031 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71 A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B241215BB -20120705233800 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71 A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B246EC93B -20120706002709 2 6 100 6143 5 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71 A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B2582B477 -20120706013826 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71 A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B271419A3 -20120706014732 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71 A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B273FB1BB -20120706021008 2 6 100 6143 5 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71 A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B27B7E59F -20120705225552 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71 A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B29C4E81B -20120705233754 2 6 100 6143 5 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71 A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B2AB07037 -20120705234834 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71 A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B2AE25CBB -20120706024556 2 6 100 6143 5 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71 A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B2EDFAA6F -20120705233556 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71 A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B30EE83EB -20120706002117 2 6 100 6143 5 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71 A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B31E6F727 -20120705233808 2 6 100 6143 5 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71 A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B37267537 -20120706001148 2 6 100 6143 5 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71 A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B3DF98C1F -20120706013155 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71 A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B3FBB98EB -20120706025705 2 6 100 6143 5 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71 A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B418898A7 -20120706022948 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71 A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B4707179B -20120705233534 2 6 100 6143 5 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71 A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B4F3D25C7 -20120706014542 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71 A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B520205CB -20120706030026 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71 A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B539518DB -20120706003519 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71 A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B566E0243 -20120706032218 2 6 100 6143 5 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71 A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B59E508EF -20120706033523 2 6 100 6143 5 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71 A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B5A254F5F -20120705235242 2 6 100 6143 5 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71 A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B5B60C48F -20120706022615 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71 A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B646A1B3B -20120706032540 2 6 100 6143 5 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71 A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B6594B14F -20120706001843 2 6 100 6143 2 EEBCAD36F686DDEB790C1EBDF6C6355A4EEB95435785FAC26C1DDBBD0D3C284AB5B4A1D5BA22131604AAE087D8B9431038CDA76DAA9E1C8D10793F53374FDF26489D38FF13188B6961B86E44A065D2FADEFC6C9496350AFA4129C9FD1B6B321E6053A6C645978C151D623C1106FE6669C220690B637F6259522F88250CC2B1B7F170706E9CE741F6E26BB4E86FB6822B13D8A7CE99FEF5CD66EF08310ECE5CC86648BD90E1DC59332505579116D3F3C8314065DC1319BEA133ED809903CA4949905C3D21619217816465E964768FFE76BC962AACBC8FF13477990A81C8759BBE95DFFA22E299F7C0F79A0EA7C44B28E8AB96149CC213E7C886E3D0A2230D7A4176749D6EDD6FCA2F5F3E2BD10392BC818CFB25C696C1EC14CE6F23CDB6C3DA2ED77E098A874799EB65F82A4EAF85CA0C9E68278381AF964AA5816B2CDA8E1ABB2954C02F641E1F374563B0F9DBF2F1B6D8168558BB971C8F48668A8034F82908D45D4D9A9072375D00AE0D5D442C6E6B6B2E7280C104C7675FDB0795DD0D3273E74BDC7B243B7604447502EB1572A273ABA0032CDB754345B1ACDF17B5AEDA45B661DBEFDA084B1427F94C8EA62BAB6A1E05DED8F2F706445879F15FB096996765238B6B546FDE5F219B5B85B31E804A989C4959600998A03572FB59DC150714BDB0C71 A236497AE79871FBEFCAFFF34D2DF0142F2AF3C9C5D92F5FC7A61A27FF9AA1EADDF3552A2BED2CC4D19FB0F67DCC02744947A42FE10B338A3A8E634B413AE46C4E644DD5934D5820C9714656171A02BBCA25AED1CCD9EB9BEF9C63E7E966B0E2E47146191ECA452588FA2AFF50AF25FABAF83E143D47A651BD9B9C37CF5D6319FDCBC2F5D4B76D07B52D857FDE48FD983F06B531F7D316E2961E17D358FE6556C82C2E78C1D9CCF68760EFD8CC692E8912914781651D834C0C766B3D71C07C91AB93619E0C06385CFAC6FA18E1DEC7F3C5EE92C906CC49A4786D24CDB4F5656DE60F1F4412367B16BDA68DA368218C16E30C48366A8C0FDFA6E708E3353B8471402A42E594903774A65EA7AB5A83D08AD10D34DB38201B44B677C3593 -20120705054703 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE234453518A0F7 -20120705060217 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE23445353B291F -20120705100916 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE2344537DF8F1B -20120705112627 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE2344538AF7C7B -20120705121419 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE23445392BB61F -20120705162623 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE234453BD5FE03 -20120705171958 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE234453C6257EF -20120705222541 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE234453FBF1073 -20120705120012 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE2344544BA2363 -20120705143238 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE23445464ED33B -20120705175610 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE23445486B9E93 -20120705143839 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE2344551AEBB1B -20120705164833 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE2344553053057 -20120705195911 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE2344560200E33 -20120705051445 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE23445620DCB9B -20120705090103 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE234456453E2C3 -20120705102457 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE234456520F7B3 -20120705045958 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE234456CC34FE7 -20120705064048 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE234456DBB1643 -20120705100057 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE234456FACFC3F -20120705130216 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE23445716EEFD3 -20120705184211 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE2344574BD3B0F -20120705075506 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE234457918ED6F -20120705111016 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE23445857E1707 -20120705051124 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE234458C6078E3 -20120705054255 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE234458CA4E313 -20120705155949 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE234459281E7B3 -20120705065517 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE2344597A57CB3 -20120705082307 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE23445987253DB -20120705182442 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE234459E124B2F -20120705184956 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE234459E442F5B -20120705071209 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE23445A1E0FD83 -20120705155527 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE23445A6BDA473 -20120705103912 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE23445ADCE429F -20120705115451 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE23445AE75FB83 -20120705133531 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE23445AF5813A3 -20120705144902 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE23445AFF92FDF -20120705160631 2 6 100 8191 5 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE23445B0A9AF9F -20120705194100 2 6 100 8191 2 DA2167F01CB32874E032B38C40FEC5F2557C9C4411B3A4B3D38C889A8BEED4EB7EF08A9A1E1EAAEEC22C2A46891D3CA84517FDFCDFA2BACBCDE2FC8EA87182542F5C8D3897B6C8A6DB951256F3DDBA7C5D6E7060925AD1F3046F49D00B433770B412DAA2A74E539EB81E3266DDDA82781BB21B19695FB925FA8BB6D249B5C33401C5D9E5C6B1719A36F1EB36E7CCD28AD98AA74DFD453D343BD189C968EB8F459809E87F77C6BA985B82B960A46660C7A277970E016EBD183CE7D6232F56EB06ECC0931024B9333879EF063F976C3603649AB9DCBE9714753E0A865020C3EF22BABF2F473F771CFC70A7C43FE320640D6E2816E88B6CA501A85A34F88EFF26AD8FFA0D11B0A21CB1A4FC7F90DB97B11BD5367302CBB45A390D2CB28CE83D50156A161D0080FD5F3961872ABC56FBCB973C517F6D7205E6CCF44E22E5DF8793D5037A9E779A52628D258CEA6B45CA4AC604CD69875D51145EE4C3D8856E24F9DBCA0134D54A734320A46A0AF52E20DD604AD465508172D4185C0D5C720B325ABC1760B1680B7BDFBAA1AE845A84AC3C7BBC53CD01C000B2186DC3915A1879224DD703E817C58F5FFCFBDF0189BB4B5033769F49852F3C48A88B88FB659B4AC96EE9DFC1D7E1760194EE4E1B6A8052BA17C827BE8A74C9F3FA7EA3236171F3DF9ACF19C40 636825F1C49EFAAB12CEAD24F4585FE7C466FDE7ACF7E1FC91C8D473A8AB12C652AF568227E7CE3421256F83084D8E82DC977309E5B8C73EB8D92B71B9DAF6A53D13539D55C1A67BAC646358352529958AA3599DF0D882B8640ABFF17031C3F246A3E07F86AEB29CEACACF3B3EB931C40D292D09F4B99E08E4C68D811F9425DA30AC456107454AAC470DBD627C3EE2132E7C6FCEB61C2BA1CBE4FE6F07A2A4E398FDFBECC0283E9CF440F9F8F6893D019A98EFE992BA7433951DF341A3B3A8E879B090FB0E11907382853FBD6FA79B5B3FFF4EBE286F92A99D24C548949209867B1116BDBE1F104230EE26CCA0A12602A328B9B7A86D18415881AEFC9527AD4BB563CC330F29DF51199E1E9F0317EE6F3768C0849351FC1F95D47A1DE90484BE923ADC004D8287A90168C1D1491AD9A9B3266A826F966AA964E814F171FF9F3BA755DF83961182D95317844D6064D8BDED2DDB9AB4D74C325C1748036103690D88D85B532B692B74ED199253CB77E3BA57A2369BD9DD3B4FE68A66A1EFE507BA1F1A0164B6EDF397DF550EAC7FA155F7DED564A34DA73BC1F72E2D56CBABADAF3ED6B03C56FE00CA51548604403757ACAE67C71C564D4F688BA44465C7D3FFC84DB2BA142E06A967181CA0806E732134D795AD6E936BB25C00A14FE0DA5A83A7095D0271B380E802CD9E6E601C582EAC20CB6 AC0C670108376302BA364FFD30E78D0CAB72BADB15F2! 82CD256BC3B365896D80DC170BE23445B296E223 +20150520233853 2 6 100 1023 5 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA2AC62AF +20150520233854 2 6 100 1023 5 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA2BCC50F +20150520233854 2 6 100 1023 2 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA2C241F3 +20150520233855 2 6 100 1023 5 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA2DDF347 +20150520233856 2 6 100 1023 2 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA2E3FDBB +20150520233857 2 6 100 1023 2 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA3006603 +20150520233858 2 6 100 1023 5 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA31D9C37 +20150520233859 2 6 100 1023 2 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA333355B +20150520233900 2 6 100 1023 2 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA3428B23 +20150520233902 2 6 100 1023 2 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA37C9A43 +20150520233903 2 6 100 1023 5 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA384B367 +20150520233903 2 6 100 1023 2 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA3903453 +20150520233904 2 6 100 1023 5 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA3946C77 +20150520233904 2 6 100 1023 2 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA39F6A9B +20150520233904 2 6 100 1023 2 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA3A0E88B +20150520233905 2 6 100 1023 2 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA3A37763 +20150520233906 2 6 100 1023 5 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA3BBDD57 +20150520233906 2 6 100 1023 5 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA3BDCDD7 +20150520233906 2 6 100 1023 2 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA3BF5D73 +20150520233907 2 6 100 1023 2 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA3C9BB83 +20150520233908 2 6 100 1023 5 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA3E5ADCF +20150520233909 2 6 100 1023 5 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA3F82077 +20150520233910 2 6 100 1023 5 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA406944F +20150520233910 2 6 100 1023 5 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA40F7457 +20150520233912 2 6 100 1023 2 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA438733B +20150520233913 2 6 100 1023 2 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA44707FB +20150520233914 2 6 100 1023 2 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA4588A2B +20150520233916 2 6 100 1023 2 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA48CC01B +20150520233917 2 6 100 1023 5 DB662973FB21C0B7BF21AB46AFD3E2002AE70C92DE6B9AEAFECF7B0A96D7ACB024B7C29DB18E70CB945FA54C7773519BC7161648AFE4939058AC40ECDBBD3636F5BF45863117E955007C9D0F9333BB4EF62F7C9F6298AB79A309C734F3CF201C61EBC3926ADD4E80968A65D9F60535164ACE7A7BFEDC1022002BB2BBA4960077 +20150520234251 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A740BE2123 +20150520234255 2 6 100 1535 5 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A740D85877 +20150520234257 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A740E6494B +20150520234301 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A741120F9B +20150520234303 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7411EAC5B +20150520234304 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7412579DB +20150520234311 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A74167053B +20150520234312 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A74169B303 +20150520234318 2 6 100 1535 5 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A741A3D69F +20150520234322 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A741C07E23 +20150520234330 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7420B48E3 +20150520234331 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A74215059B +20150520234336 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A74240BD03 +20150520234338 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7424D70BB +20150520234341 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7425C6CE3 +20150520234342 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A74264FA9B +20150520234343 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7426BB34B +20150520234346 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A74285D9E3 +20150520234347 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A742878293 +20150520234348 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A74288D143 +20150520234356 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A742D55BF3 +20150520234401 2 6 100 1535 5 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A742FC8227 +20150520234410 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7436032EB +20150520234411 2 6 100 1535 5 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A74361377F +20150520234415 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7437CCCFB +20150520234418 2 6 100 1535 5 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A743902C1F +20150520234420 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7439EE5DB +20150520234422 2 6 100 1535 5 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A743AE19BF +20150520234430 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7440152AB +20150520234432 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7440C2F63 +20150520234434 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7441FBDEB +20150520234436 2 6 100 1535 5 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7442C98DF +20150520234437 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A744319703 +20150520234438 2 6 100 1535 5 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A74433E927 +20150520234444 2 6 100 1535 5 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A7446DF46F +20150520234450 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A744A3488B +20150520234455 2 6 100 1535 2 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A744CDAACB +20150520234459 2 6 100 1535 5 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A744E9D8FF +20150520234504 2 6 100 1535 5 F8F4A446A6C7196643612A6C5CC26A47E491FB737740D68BBEBF0130F7AAADC59075781FB1723B644C0ADCE548C02E726DE5233C484FB4481F3EF3ED0585A0D687B2E0A6987AD2BC910754FC1A1E06B87710CFF0BC2E9868BA15BA20C103D3DCA6B65D8D0182B277F7CAE61D83A785BDD0B3CE471B4B8FAB224438D7A6772130167110AFD1FF584861996117F67B41CF3D2D5FAB020F2EB7F53E299AACF98797AEB6BAC3F0BB892DB4E4F8CDDE28C112C73EB556D0C381C6B9CC78A745196237 +20150520235007 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031E9A9C5F7 +20150520235015 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031E9CBB21F +20150520235039 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EA2E9623 +20150520235043 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EA33E3DF +20150520235057 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EA68038B +20150520235114 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EAAB0717 +20150520235122 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EAC2A7FB +20150520235125 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EAC82DD3 +20150520235154 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EB40583F +20150520235214 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EB94F247 +20150520235218 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EB9DF49F +20150520235239 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EBF7BE27 +20150520235244 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EC0B4F4F +20150520235250 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EC21070F +20150520235256 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EC36541F +20150520235307 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EC5FE22B +20150520235322 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031ECA1FB57 +20150520235331 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031ECC3C823 +20150520235349 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031ED035187 +20150520235400 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031ED2F07DB +20150520235407 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031ED4620CF +20150520235422 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031ED86D39F +20150520235424 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031ED86E683 +20150520235427 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031ED8C3073 +20150520235443 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EDCB1F63 +20150520235450 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EDE00B77 +20150520235452 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EDE42247 +20150520235458 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EDF8F493 +20150520235503 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EE04D69F +20150520235508 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EE14B92B +20150520235510 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EE167933 +20150520235517 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EE2DC63B +20150520235527 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EE52259F +20150520235539 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EE829247 +20150520235557 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EED044BF +20150520235608 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EEFD34CF +20150520235614 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EF0F709F +20150520235616 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EF12110B +20150520235622 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EF25FE1F +20150520235637 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EF6BF4D3 +20150520235654 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EFAF28BF +20150520235701 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EFBFB8BB +20150520235704 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EFC7A62F +20150520235710 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031EFD79323 +20150520235725 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F0158F1F +20150520235728 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F01A9E6B +20150520235743 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F055798B +20150520235752 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F0730BC3 +20150520235757 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F08283FF +20150520235825 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F0F451E3 +20150520235830 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F0FDEFB7 +20150520235901 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F1828ECF +20150521000008 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F185D7BF +20150521000011 2 6 100 2047 2 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F18C58FB +20150521000014 2 6 100 2047 5 F7360753237CF1837003CDFE89D99C8149BE6C4B4CCD9D09D834FF137878C452FB4FAB5CA51BE6619BC6FEC4184FA9A96D21FDE83505B67262EEA4870FD709F4DD3A2EC36E5746ED80D762467E794FE524992EAC42D2F0F391A63E027F24411B231D25AEFE60C9329CE8FFB61A8A123C74F6755211C8CFD59915CE0DE28579B66CB426D111F90B19A5BD83AB8C2CAB09FB1F09509B029883BD154B82418B4F3A9EE4564E5F344D5B911C10829C1E975817EB2DFF49F34D95277897A7198C9C4921037B8AA091C380663A6D5260F98FA784565DE2D977C50A1079B485F4BE63B4E3D6A63FD8DD59704116A41CB1C7C2AAA449071BFBAFB0F867FCC031F191F757 +20150521000841 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CC7F06BB +20150521001025 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CD1057AB +20150521001131 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CD717D6F +20150521001248 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CDDA85F7 +20150521001453 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CE8959BF +20150521001510 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CE98227B +20150521001623 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CEF967BF +20150521001651 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CF18156B +20150521001758 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CF717197 +20150521001924 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622CFE1507B +20150521002244 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D0F75427 +20150521002509 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D1BD2823 +20150521002808 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D2B4950F +20150521002846 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D2E6D6D7 +20150521003203 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D3F5D0D3 +20150521003322 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D45851E3 +20150521003430 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D4AEE517 +20150521003629 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D5538E0B +20150521003714 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D58BAFCF +20150521003722 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D5916FC7 +20150521003739 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D5A378F7 +20150521004506 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D82B5113 +20150521004613 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D880CB43 +20150521004753 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D909305B +20150521004802 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D90DBDC3 +20150521005025 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D9CBF44F +20150521005051 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622D9E89DA7 +20150521005252 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622DA8BA403 +20150521005347 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622DAD07F73 +20150521005825 2 6 100 3071 2 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622DC5CE5A3 +20150521005858 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622DC84A597 +20150521010014 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622DCE62957 +20150521010219 2 6 100 3071 5 E0C2D7F7B6E4C69A3B6632FC77BED88CAC663CE39D91DDF017816529795F33B591F80F445BE16F8FB51D11861682154B904AE2282FA0462EB6C508FD7B7AEC551A6C630FE9CC7E17E660377558E4F841CD77AABD81E6A0988823047B3A00C2E50C33035987D6EA42C65FD776051F5D43045848D4385FB37482DC9E5133D1B75E34CC81C2B87C9530F5229FF2154604A286C2E257D3A89CF330AEDBA16288E852277C5D7C6AA947B4510625312DF982A30A4D75679F707EB325CD4DF65C7A58154C6C05E28545DE69673B3EA9CCD41529A7CCEB49A3392D23E9AB083148DD956F8CA9B8CDD76496FF95B5782EE888C40EF1201EB3A52CAE1A635BBF82CD479B38DABD6DEE7A2844F8C614215B04CEBDD41039C2DC2D1CF00AFC78C0363E548FAE1DE8A7B535CC41CED767BE05F300F50C59307061ADE1CAA4614F8FEFAECE8F8C5DB3F425B348A206B0E95703EEA8785768CDB53972422C75B58A7AEA2AD9E2546EA991466E6AFE1FA157D75D3F6616DB715D10CCD6B71C73051FE622DD9517D7 +20150521011229 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877F951FEB83 +20150521011834 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877F960399B7 +20150521012438 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877F96EE7973 +20150521014010 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877F99453213 +20150521015607 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877F9B549727 +20150521015640 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877F9B600A7B +20150521020946 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877F9D5299DF +20150521021536 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877F9E2793D3 +20150521022706 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877F9FE131CB +20150521023922 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FA1BAC073 +20150521025234 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FA3BC9483 +20150521025424 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FA3FB3513 +20150521032445 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FA87E0FAB +20150521032932 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FA929F00F +20150521032947 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FA92B272B +20150521033245 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FA9953D0B +20150521034828 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FABDD4AEF +20150521035044 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FAC298C7F +20150521035111 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FAC31F17B +20150521035749 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FAD250357 +20150521040009 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FAD788A73 +20150521040220 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FADC5F173 +20150521040316 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FADDFFC03 +20150521041042 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FAEEBDEB3 +20150521041443 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FAF7AD7BB +20150521041831 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FB007D653 +20150521041928 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FB025C91B +20150521042301 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FB0A4C143 +20150521042631 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FB12009F7 +20150521042740 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FB145360F +20150521043358 2 6 100 4095 2 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FB22FAE93 +20150521044013 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FB31527AF +20150521044543 2 6 100 4095 5 C8BCE52E2AE7AE1EC20056B2D0764047C92392C9DF75C3A57EB8AF1062A809E6EA975D9910AA5C55833CC47D4DA76E92BF63FEBB289E5FE2ED729429DE9567D0A489FA27B41810066B96602B2E555B34628A37C4CE04984D15C36F1EAD09081D2CB2147D5F0B7E8BCF0774FFCF5F649E0CB797DD23D0801C153B6B8480828CF165C7ED3181F316F371C6EC0B6EF6B8CBE36E5A4E8C070854668AF07FE6C73C3EB817CD0E8C7F264546A1B0402AC0FCEBA5032EBA2323769CC401D262971F4B44FC1151EC4F6E761709FD6ABDC84D9C36046811F54DC86D293D16D235DC712BF7346CDAC005AE5C0DCD96480C9BD0CF7C4BD50026553E27F957B6640BA6A87C6642FF3D97A3E63DA468276E3A22C0C3F2A1CFFB4F190D5E23700BB468EA31FD3EB87B44B51BDABDB0667FCFB618CECFB2BC440A5F2E237E93A6DFF96AB3561AF5EE1BDA21720129FF2123F7038C70B4CADF1BC70B2EF5EBC264E1E3B2A4B3780D4A11507D03A498A556A923B0EFAF90D024341A47818F03D5ADD961086C2573DABF02C4E2F303817D323E1D8D88EFBE3F5E0D6688593C65254907745CA6176C8ED7D6B830875A0BA8FFEEB1882742A4553E4E55A93A7AD4F3224B7BFA03E29C77DB0FCCE0E37E6D3A64C5555ED9555FA1E2C34EC04DA3B6E0AAA7BF64879BC4724859FE8 06E7DC49A5394AD3D01492F05AE69CF10C67B18BDFF8E877FB3DDFBB7 +20150521004745 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F52665F2B +20150521003352 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F57C7B577 +20150521005557 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F591BBC57 +20150521014228 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F5BDF5CE7 +20150521015455 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F5C9CFD1F +20150521001701 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F5CF6FF9B +20150521002558 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F5D7C4FE3 +20150521003319 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F5DE41DFB +20150521003721 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F5E1B5FAF +20150521010943 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F600B866F +20150521014141 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F61F01EC3 +20150521010312 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F65EAB753 +20150521002914 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F69FD9357 +20150521011058 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F6C6B8513 +20150521013628 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F6DE7D9EF +20150521015040 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F6EB0C897 +20150521001307 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F6F15473B +20150521012712 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F7377044B +20150521005218 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F7767DEA3 +20150521003512 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F7C5546F7 +20150521005420 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F7D68EDC3 +20150521011347 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F7E859CF3 +20150521002429 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F819A93E7 +20150521004826 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F88D91A57 +20150521010541 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F89D29B9F +20150521012418 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F8ADC38F7 +20150521015506 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F8C91980B +20150521004000 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F8E369B97 +20150521005659 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F8F2B1BEB +20150521010328 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F8F7DD1D3 +20150521011152 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F8FF052BB +20150521001457 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F92940463 +20150521011129 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F95C47DCB +20150521013515 2 6 100 6143 2 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F9710A103 +20150521013841 2 6 100 6143 5 D9F2DC4F4AB3E451AB7781730AE26AE5AB1927A8F93D05C7765C4F23947CBAD218690437DDE587137100CA657CB902597743E8B05CB9B821A48E081C451227F5E42404534A28EE1D0A52FA903FBB15B79139D130420B8C7BD2477CDF0C06CF4C9943DF76A74C3B503B2229A5628E13983B0426A10FD164A720488DE3A1639D004B694ADB5216C21F481519865529CE6E3C9C8B89AC00FBF2B4C1F0B0033AC2A5072A157B5D4346950917B055227557FF1EB5F0873D75E648BEE4B6F88D4B228CB89C7602E34F85BF86DDBD09CA39993C73FF59B0310754F0D24740316F7D8D21D67EC65C8715B7130EBC8E19EB712990BBB30D650ACB0B7864B632ABBC2AEE7221393A5C74B043568043480DB41821A0CE1E6D271456C2FDC243D39868FB0D7BDA3FAD5894F7DCBBC5751B77B3DF99F6E8A5BD7A5B82F594E3E0CA2BBF7DA74312227B323652E6856B597326206CAFF2380C23CF94B8CD3EAA56BE60F8C372887CD37A62FC6F5FD467ED96E7CD9C285E75C2C353E520DFB3F39FE7B8E35FFB485B1B043F52321675EDF4848266997D059810F71D21E9DB3E3AB1BCE3713DB67155F41B7C21939B285AB63DBF1770228E4EE36314310D89200F132E8ECF2968CDA0E57DBBCE589E4DDBAD009994A817032EFA52F0659A319FBD813901BF5847EC2D7979C BA5870F3DA25BE09673952628E1EA70C82EC0BE67B402E48DF85C5983516BBEEAB811D1ECAB02928D4087B826139D073501149D47B3339CDA763840E4492661FFEF96C81C816B862EEE820019CD83C93BF9DFF8EC8C59331780D5D86B164EC12BBE59F4C9E62FD7819A941D10AFE32179B2361A17618FA84864F58C09AECB817E67BC352371BB7D7F8209E4EB9002013A585092D4721B1CB464A8480CC76173989144EF51692E373E9CCEAC9807EF190D6BBDD3BB0D16CA87DC6A54890D6F074ABD83E3CF077F2F592C0745BE15D7D6871552BB6139E5CF70D684C6D1D0C4516733E0639BBEC847313BE3D1D923B6A5FAF43A5341DD8C0779881BEB92736BA4F18BD6CDC1FC922B3809ED244748101A6C7E30DDE0C232FA3F9733A497 +20150521041810 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE315 1CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7BE934407F +20150521070624 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE315 1CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7BEEB1E407 +20150521051555 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE315 1CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7BF50EEEC3 +20150521061258 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE315 1CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C00AF225F +20150521034225 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE315 1CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C058D5963 +20150521035956 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE315 1CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C0616723F +20150521054248 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE315 1CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C12F16C3F +20150521060112 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE315 1CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C1379EA23 +20150521023340 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE315 1CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C165F2773 +20150521043505 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE315 1CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C1A3EC717 +20150521024626 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE315 1CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C202ABED3 +20150521064303 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE315 1CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C27790087 +20150521060604 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE315 1CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C2F9DF583 +20150521062143 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE315 1CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C3003EEAB +20150521044311 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE315 1CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C363D0A77 +20150521053731 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE315 1CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C37D6EFCF +20150521065640 2 6 100 7679 5 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE315 1CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C3A20A2DF +20150521044717 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE315 1CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C3F622E8B +20150521065426 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE315 1CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C430ED7CB +20150521023632 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE315 1CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C445E575B +20150521032945 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE315 1CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C45EEE643 +20150521054538 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE315 1CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C49FB77CB +20150521024620 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE315 1CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C4D86D0FB +20150521042108 2 6 100 7679 2 D67DA234F46097F7EE3B230456E7C895BCA86395DF43D60D9D587C64EA4525FBCAD22442143068578CE8ECC8280B2D81F747B484AA668FFCDBEB067EB824B42E5FA1A40BC08EE8CC4A064298CB31C36340951EC7A006878C79C80068196180DA31E1DEF79A72B2D059203DDE461485D1B9783AF79E981CDAEF88589D8343E5B52D96FE90EA13194AFAF7459B17B80971720357ABD09CFE992966FFC1C239821C910F55D69E44277E5DE9841F4E5B2D25D6A265D321059B762F7D6AC5F0E260DEEB628D32940002B219B354486CC5BBF6390F19899EA5E145A28487029DF0517564A81FA10FA60AFA04CE77794775392829DB636E7F5EE00868D5027A6BA75CA922CEF3CA78683D14AB2E58439789033ACF441236F5E3C7849E3662B5123304F82D0061EA9C18EA1676A736FFD628AE982CCEAB8979568C43FB34207E0DEC7D8A6AA391846C910F77771ECF2D0531A234D3798BC1B1433091A895E23A77792F4BE403D526F1D260A3627F2E80E863A204A774F58D7DE2C5C4A7E463A46BC436F0B7AF07179EC334D31073BF035FD94454ECD54146473F786EA15A1CEBB3B9C0D282195AD612D33B31F5528DAB5231CB17A3DE9AB5C8BD7BF8F773C255845BC9B70A1E53A50E5AEA801FFE604A2B2C1FBE86A2A883632E7AE75ADA007FB6AB1AA529DE315 1CAA8D1D07FA19EFF5679398340E720CF2CFC4E1AEDD73C44983CC8E610DD419AE2E88206573837D6E44018D9498B62F9C0B8EA7741450FC7DBFF7C546D3CBCBA5B9123577FD5531880A18F1275F9181A922803D8F03512C58B5FBBC41CE8095EDD920A3E36CEB6EDB56900E6CEC2928288909D61B3B426EBC54F0A69C261A848B358C3A8E332567B9FFC1A7A07E9414BB1F75DE0795CF87632F5D6A87A246FD4E98E70489F779FE99C5BC4DB24BFA860C3551888FC721CDBC6AB5783B02BEF893E0984B6FDB5142A1AFD3277FE8F36B87849BC00B3FB3ADAFE4EDAE4839B83894C27FEF93514D7E3FFB7A30E99C6875D96C582E81D45FB463DC37B8791FC28A759301FC2F9879960C82BC7C427382A41B9AEFAC0051A2C653E55A47B48860CDA32812A192C1508A6C012C7E4BBAB1619B7926549FD8CE27928618F035BE31D56CBC9586D88E00DA69341F6F01554E205344E49E8871CCF80F9FF5CB54479AFA66806DD02FAFEE7D43572B3AA22742635FE65BFC8004960DC679FC7F8C0E5B50B3CE1E446B7A5E189BB9AAFA06FEC472D6E67EA4905373A01A2B662F534131405FBAB9BBAE892F0C265439EA1ABC91B186B5AC1E53A0C786607B1069BC026359955CFD614D7F80DF416A08AB18991A0398A83DF3CF2D65D7C505E524B +20150521041835 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C2 4447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B4 01A14FACDAC97F63529118ED56DFB7DAC4967FFA252D! 185DBC29652E3F62A45D6BF990FB354CD3703FA7 +20150521051726 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C2 4447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B4 01A14FACDAC97F63529118ED56DFB7DAC4967FFA252D! 185DBC29652E3F62A45D6BF990FB354CD4CEF96F +20150521074626 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C2 4447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B4 01A14FACDAC97F63529118ED56DFB7DAC4967FFA252D! 185DBC29652E3F62A45D6BF990FB354CD86439C3 +20150521082439 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C2 4447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B4 01A14FACDAC97F63529118ED56DFB7DAC4967FFA252D! 185DBC29652E3F62A45D6BF990FB354CD947F7F3 +20150521012012 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C2 4447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B4 01A14FACDAC97F63529118ED56DFB7DAC4967FFA252D! 185DBC29652E3F62A45D6BF990FB354CE0694343 +20150521073153 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C2 4447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B4 01A14FACDAC97F63529118ED56DFB7DAC4967FFA252D! 185DBC29652E3F62A45D6BF990FB354CE93D436F +20150521094433 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C2 4447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B4 01A14FACDAC97F63529118ED56DFB7DAC4967FFA252D! 185DBC29652E3F62A45D6BF990FB354CEC4EE993 +20150521074128 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C2 4447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B4 01A14FACDAC97F63529118ED56DFB7DAC4967FFA252D! 185DBC29652E3F62A45D6BF990FB354CFA190CE3 +20150521014004 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C2 4447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B4 01A14FACDAC97F63529118ED56DFB7DAC4967FFA252D! 185DBC29652E3F62A45D6BF990FB354D0235296F +20150521014736 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C2 4447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B4 01A14FACDAC97F63529118ED56DFB7DAC4967FFA252D! 185DBC29652E3F62A45D6BF990FB354D025961EB +20150521065737 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C2 4447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B4 01A14FACDAC97F63529118ED56DFB7DAC4967FFA252D! 185DBC29652E3F62A45D6BF990FB354D0961218F +20150521043653 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C2 4447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B4 01A14FACDAC97F63529118ED56DFB7DAC4967FFA252D! 185DBC29652E3F62A45D6BF990FB354D163706C7 +20150521085322 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C2 4447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B4 01A14FACDAC97F63529118ED56DFB7DAC4967FFA252D! 185DBC29652E3F62A45D6BF990FB354D1BC6858F +20150521093922 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C2 4447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B4 01A14FACDAC97F63529118ED56DFB7DAC4967FFA252D! 185DBC29652E3F62A45D6BF990FB354D1CC27FE3 +20150521120407 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C2 4447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B4 01A14FACDAC97F63529118ED56DFB7DAC4967FFA252D! 185DBC29652E3F62A45D6BF990FB354D1FE2874F +20150521124157 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C2 4447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B4 01A14FACDAC97F63529118ED56DFB7DAC4967FFA252D! 185DBC29652E3F62A45D6BF990FB354D20A8A19B +20150521035417 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C2 4447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B4 01A14FACDAC97F63529118ED56DFB7DAC4967FFA252D! 185DBC29652E3F62A45D6BF990FB354D24E0665B +20150521062806 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C2 4447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B4 01A14FACDAC97F63529118ED56DFB7DAC4967FFA252D! 185DBC29652E3F62A45D6BF990FB354D2828F7AB +20150521074218 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C2 4447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B4 01A14FACDAC97F63529118ED56DFB7DAC4967FFA252D! 185DBC29652E3F62A45D6BF990FB354D29B42017 +20150521114937 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C2 4447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B4 01A14FACDAC97F63529118ED56DFB7DAC4967FFA252D! 185DBC29652E3F62A45D6BF990FB354D2F027D3F +20150521073847 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C2 4447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B4 01A14FACDAC97F63529118ED56DFB7DAC4967FFA252D! 185DBC29652E3F62A45D6BF990FB354D3905A9FF +20150521024512 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C2 4447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B4 01A14FACDAC97F63529118ED56DFB7DAC4967FFA252D! 185DBC29652E3F62A45D6BF990FB354D41DB2FFB +20150521024827 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C2 4447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B4 01A14FACDAC97F63529118ED56DFB7DAC4967FFA252D! 185DBC29652E3F62A45D6BF990FB354D41E2852F +20150521042402 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C2 4447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B4 01A14FACDAC97F63529118ED56DFB7DAC4967FFA252D! 185DBC29652E3F62A45D6BF990FB354D43D9B0E3 +20150521083756 2 6 100 8191 5 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C2 4447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B4 01A14FACDAC97F63529118ED56DFB7DAC4967FFA252D! 185DBC29652E3F62A45D6BF990FB354D491D852F +20150521113241 2 6 100 8191 2 D7182545CB6AFDA1CCF5BB87F606DDD1CD25D4BAF110D7CCCC0BC78929189C09DC69308FBF76A16338AB8351B974081AEFE6F68B9DD0B3F661ED84DAF8736BF328122D00A803AD05DDB334CF5C98B2670F0B2ED0E2FA602CE2F6157A2A8E649A546957CE4F723C84B6AC46D64C5B329304181F2B70F48D15181C38777F4E18BB0344F5DAE703CC3A46B670713A7B99E536D30F92D1E5E683F2C5540105F425E01234968D1A63E0220A02721183E30302F029E4D0E0664E30329B730D99D03E53D67793F31BBA6C4274FB2ACA9181655B766246C598E4CD402737B682232B8534BE43A790ED6C04EF8047E1796048099B65EF415375D87BC7A01CB6086C9E23B667D22F52F5F44D6960601C15515D14F7D6A6BF6D7F6B1D834866ADF9FCFA1CDE00EF04C05591B05D4752471F124406D034BC8E6D71E03880BD3E7A77FD22E7D90B90A491E528EDE2E4B6FCF7C638883A4CDE80AF2C839569A4FB641C7B8948200DB0F51CA9B2613966C51F026A007D0696D14A4E4897556C7BB0E60A407B7B8C57643F278A47CC8089E24D38BAC1350A0E6D19FE540A773B8E90A6312D4B038C643B03ADDC741BDD3012F7714863BB63688E6145D47A6F40D15D6485E5AC278E229EA800FE705FEBEB2183CEF7C55DB952B627D4890B45441B3D4CF03BF0D132A7042C2 4447518B14956C11703131981CD69D7B6BA2A9F8C62057FE3A4319D17739DE0BBDAC9600E4809CD856E5F41C580863D93C251F0A31BA1CBCCAA499FEB79184E165C436A3B2FA9791C4526B47B0D1F6FE3BDE2730421E5DCA10483D91AA873ABD1236674EBE3A0D134C685CCE9D632280AE11C0D9CF7275517C1F14BCB81F2B23860D86F5028B21DF85868972EDF70A0704B3853EB1B16970834C661BC65693D38368DDB0D6E781DD2F52AE279913304601F5709E1C4B1A12B0FFDA93369001186FE8716027667F4B816E927A9977D3030CE211F4BE8B6F48836EABF4D8457FC5CFE39DF5BE96146D3B8C5BA11C3D75D252B0C190DEA5757049DE6BA89249166D60163ADDD38EAE171B53D44E135973AA05293AA7407693AE5478F480A3BE97BACBD8C7DE6EDF39EFB8BDDF8B0A2169228FD98A863C450129C8BA561A1D0F29C4EC75060A27E028E1321BCF7ADCB34B2C2B037E2C6B705F74002E0C844092025A630CFB2105F04D40135794DDF30C7E19187AE2AB8E6296C9EACFF43279F0ABE6E1150ABC2C3C8A6C4B95A7AA18CFBF953BF7662C16A0FE26D9EE7CF62BA16AA87B06373082E7551F42B8BE57BE19A50B059DC652BA46157FB7CC29AC1BF2834E668443637F87B2B12FD338706D69935D2C6348CF72F568B89B66345BF42209AA6D898F4388A54B4CFFD735EAF987CD6B738B4 01A14FACDAC97F63529118ED56DFB7DAC4967FFA252D! 185DBC29652E3F62A45D6BF990FB354D4CAD7D8B From owner-svn-src-all@FreeBSD.ORG Tue May 26 20:32:15 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id F37D0AD3; Tue, 26 May 2015 20:32:14 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (svn.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 E186CDE; Tue, 26 May 2015 20:32:14 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4QKWEVY068226; Tue, 26 May 2015 20:32:14 GMT (envelope-from gonzo@FreeBSD.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4QKWEKk068225; Tue, 26 May 2015 20:32:14 GMT (envelope-from gonzo@FreeBSD.org) Message-Id: <201505262032.t4QKWEKk068225@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: gonzo set sender to gonzo@FreeBSD.org using -f From: Oleksandr Tymoshenko Date: Tue, 26 May 2015 20:32:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283579 - head/sys/boot/uboot/lib X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 20:32:15 -0000 Author: gonzo Date: Tue May 26 20:32:14 2015 New Revision: 283579 URL: https://svnweb.freebsd.org/changeset/base/283579 Log: Print error message if autoload fails due to missing DTB blob, otherwise ubldr just falls back to loader prompt with no apparent reason Modified: head/sys/boot/uboot/lib/module.c Modified: head/sys/boot/uboot/lib/module.c ============================================================================== --- head/sys/boot/uboot/lib/module.c Tue May 26 19:46:41 2015 (r283578) +++ head/sys/boot/uboot/lib/module.c Tue May 26 20:32:14 2015 (r283579) @@ -47,8 +47,10 @@ uboot_autoload(void) #if defined(LOADER_FDT_SUPPORT) int err; - if ((err = fdt_setup_fdtp()) != 0) + if ((err = fdt_setup_fdtp()) != 0) { + printf("No valid device tree blob found!\n"); return (err); + } #endif return(0); From owner-svn-src-all@FreeBSD.ORG Tue May 26 20:51:44 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id DB3C3F49; Tue, 26 May 2015 20:51:44 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.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 C998F785; Tue, 26 May 2015 20:51:44 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4QKpiTV078144; Tue, 26 May 2015 20:51:44 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4QKpiK3078143; Tue, 26 May 2015 20:51:44 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201505262051.t4QKpiK3078143@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Tue, 26 May 2015 20:51:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283580 - head/release X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 20:51:45 -0000 Author: gjb Date: Tue May 26 20:51:44 2015 New Revision: 283580 URL: https://svnweb.freebsd.org/changeset/base/283580 Log: Use SVNREVISION and BUILDDATE if passed into the make(1) environment, fallback to trying to figure it out otherwise. MFC after: 3 days Sponsored by: The FreeBSD Foundation Modified: head/release/Makefile.mirrors Modified: head/release/Makefile.mirrors ============================================================================== --- head/release/Makefile.mirrors Tue May 26 20:32:14 2015 (r283579) +++ head/release/Makefile.mirrors Tue May 26 20:51:44 2015 (r283580) @@ -30,24 +30,26 @@ EMBEDDED= 1 .if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT" SNAPSHOT= 1 TLD?= ${FTPDIR}/snapshots -. for _D in /usr/bin /usr/local/bin -. for _S in svnversion svnliteversion -. if exists(${_D}/${_S}) +. if !defined(SVNREVISION) || empty(SVNREVISION) +. for _D in /usr/bin /usr/local/bin +. for _S in svnversion svnliteversion +. if exists(${_D}/${_S}) SVNVERSION?= ${_D}/${_S} -. endif +. endif +. endfor . endfor -. endfor -. if exists(${.CURDIR}/${.OBJDIR}/dist/base/bin/sh) +. if exists(${SVNVERSION}) && !empty(SVNVERSION) +SVNREVISION!= ${SVNVERSION} ${WORLDDIR}/Makefile +. endif +. endif # !defined(SVNERVISION) +. if !defined(BUILDDATE) || empty(BUILDDATE) +. if exists(${.CURDIR}/${.OBJDIR}/dist/base/bin/sh) BUILDDATE!= cd ${.CURDIR} && date -j -f '%s' $$(stat -f "%c" ${.OBJDIR}/dist/base/bin/sh) +%Y%m%d -. else +. else BUILDDATE!= date +%Y%m%d +. endif . endif -. if exists(${SVNVERSION}) && !empty(SVNVERSION) -SVNREVISION!= ${SVNVERSION} ${WORLDDIR}/Makefile _SNAP_SUFFIX:= -r${SVNREVISION}-${BUILDDATE} -. else -_SNAP_SUFFIX:= -${BUILDDATE} -. endif .else # release SNAPSHOT= From owner-svn-src-all@FreeBSD.ORG Tue May 26 21:12:02 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D8CB0466; Tue, 26 May 2015 21:12:02 +0000 (UTC) (envelope-from luigi@FreeBSD.org) Received: from svn.freebsd.org (svn.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 C6717C00; Tue, 26 May 2015 21:12:02 +0000 (UTC) (envelope-from luigi@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4QLC2sZ088370; Tue, 26 May 2015 21:12:02 GMT (envelope-from luigi@FreeBSD.org) Received: (from luigi@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4QLC2xr088369; Tue, 26 May 2015 21:12:02 GMT (envelope-from luigi@FreeBSD.org) Message-Id: <201505262112.t4QLC2xr088369@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: luigi set sender to luigi@FreeBSD.org using -f From: Luigi Rizzo Date: Tue, 26 May 2015 21:12:02 +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: r283583 - stable/10/contrib/tcpdump X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 21:12:03 -0000 Author: luigi Date: Tue May 26 21:12:02 2015 New Revision: 283583 URL: https://svnweb.freebsd.org/changeset/base/283583 Log: MFC: 272451, 272653 add CAP_EVENT so that we can poll() on netmap and pcap file descriptors Modified: stable/10/contrib/tcpdump/tcpdump.c Modified: stable/10/contrib/tcpdump/tcpdump.c ============================================================================== --- stable/10/contrib/tcpdump/tcpdump.c Tue May 26 21:03:41 2015 (r283582) +++ stable/10/contrib/tcpdump/tcpdump.c Tue May 26 21:12:02 2015 (r283583) @@ -1486,7 +1486,12 @@ main(int argc, char **argv) if (RFileName == NULL && VFileName == NULL) { static const unsigned long cmds[] = { BIOCGSTATS }; - cap_rights_init(&rights, CAP_IOCTL, CAP_READ); + /* + * The various libpcap devices use a combination of + * read (bpf), ioctl (bpf, netmap), poll (netmap). + * Grant the relevant access rights, sorted by name. + */ + cap_rights_init(&rights, CAP_EVENT, CAP_IOCTL, CAP_READ); if (cap_rights_limit(pcap_fileno(pd), &rights) < 0 && errno != ENOSYS) { error("unable to limit pcap descriptor"); From owner-svn-src-all@FreeBSD.ORG Tue May 26 21:16:09 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2D7B2653; Tue, 26 May 2015 21:16:09 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from svn.freebsd.org (svn.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 0EC1FC2F; Tue, 26 May 2015 21:16:09 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4QLG8P0089133; Tue, 26 May 2015 21:16:08 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4QLG8HK089130; Tue, 26 May 2015 21:16:08 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201505262116.t4QLG8HK089130@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Tue, 26 May 2015 21:16:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283584 - in head: contrib/netbsd-tests/lib/libc/string lib/libc/string X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 21:16:09 -0000 Author: emaste Date: Tue May 26 21:16:07 2015 New Revision: 283584 URL: https://svnweb.freebsd.org/changeset/base/283584 Log: memmem(3): empty little string matches the beginning of the big string This function originated in glibc, and this matches their behaviour (and NetBSD, OpenBSD, and musl). An empty big string (arg "l") is handled by the existing l_len < s_len test. Reviewed by: bapt, ngie Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D2657 Modified: head/contrib/netbsd-tests/lib/libc/string/t_memmem.c head/lib/libc/string/memmem.3 head/lib/libc/string/memmem.c Modified: head/contrib/netbsd-tests/lib/libc/string/t_memmem.c ============================================================================== --- head/contrib/netbsd-tests/lib/libc/string/t_memmem.c Tue May 26 21:12:02 2015 (r283583) +++ head/contrib/netbsd-tests/lib/libc/string/t_memmem.c Tue May 26 21:16:07 2015 (r283584) @@ -75,7 +75,7 @@ ATF_TC_HEAD(memmem_basic, tc) ATF_TC_BODY(memmem_basic, tc) { -#if defined(__darwin__) || defined(__FreeBSD__) +#if defined(__darwin__) expect(memmem(b2, lb2, p0, lp0) == NULL); expect(memmem(b0, lb0, p0, lp0) == NULL); #else Modified: head/lib/libc/string/memmem.3 ============================================================================== --- head/lib/libc/string/memmem.3 Tue May 26 21:12:02 2015 (r283583) +++ head/lib/libc/string/memmem.3 Tue May 26 21:16:07 2015 (r283584) @@ -26,7 +26,7 @@ .\" .\" $FreeBSD$ .\" -.Dd August 24, 2005 +.Dd May 26, 2015 .Dt MEMMEM 3 .Os .Sh NAME @@ -51,14 +51,12 @@ in the byte string .Fa big . .Sh RETURN VALUES If -.Fa big_len -is smaller than -.Fa little_len , -if .Fa little_len -is 0, if -.Fa big_len -is 0 or if +is zero +.Fa big +is returned (that is, an empty little is deemed to match at the beginning of +big); +if .Fa little occurs nowhere in .Fa big , @@ -84,3 +82,11 @@ function first appeared in .Sh BUGS This function was broken in Linux libc up to and including version 5.0.9 and in GNU libc prior to version 2.1. +Prior to +.Fx 11.0 +.Nm +returned +.Dv NULL +when +.Fa little_len +equals 0. Modified: head/lib/libc/string/memmem.c ============================================================================== --- head/lib/libc/string/memmem.c Tue May 26 21:12:02 2015 (r283583) +++ head/lib/libc/string/memmem.c Tue May 26 21:16:07 2015 (r283584) @@ -42,9 +42,9 @@ memmem(const void *l, size_t l_len, cons const char *cl = (const char *)l; const char *cs = (const char *)s; - /* we need something to compare */ - if (l_len == 0 || s_len == 0) - return NULL; + /* empty "s" matches the beginning of "l" */ + if (s_len == 0) + return (void *)cl; /* "s" must be smaller or equal to "l" */ if (l_len < s_len) From owner-svn-src-all@FreeBSD.ORG Tue May 26 21:26:22 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id CFF8E8FC for ; Tue, 26 May 2015 21:26:22 +0000 (UTC) (envelope-from joerg@britannica.bec.de) Received: from mo6-p00-ob.smtp.rzone.de (mo6-p00-ob.smtp.rzone.de [IPv6:2a01:238:20a:202:5300::3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "*.smtp.rzone.de", Issuer "TeleSec ServerPass DE-2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 6E2D7E79 for ; Tue, 26 May 2015 21:26:22 +0000 (UTC) (envelope-from joerg@britannica.bec.de) X-RZG-AUTH: :JiIXek6mfvEEUpFQdo7Fj1/zg48CFjWjQv0cW+St/nW/auYssS93lfoVC/9k X-RZG-CLASS-ID: mo00 Received: from britannica.bec.de (ip-2-202-27-21.web.vodafone.de [2.202.27.21]) by smtp.strato.de (RZmta 37.6 DYNA|AUTH) with ESMTPSA id L04216r4QLPwTCK (using TLSv1 with cipher AES256-SHA (256 bits)) (Client did not present a certificate) for ; Tue, 26 May 2015 23:25:58 +0200 (CEST) Received: by britannica.bec.de (sSMTP sendmail emulation); Tue, 26 May 2015 23:25:57 +0200 Date: Tue, 26 May 2015 23:25:57 +0200 From: Joerg Sonnenberger To: svn-src-all@freebsd.org Subject: Re: svn commit: r283320 - head/sys/kern Message-ID: <20150526212557.GA28459@britannica.bec.de> References: <201505231909.t4NJ94ct032002@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201505231909.t4NJ94ct032002@svn.freebsd.org> User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 21:26:22 -0000 On Sat, May 23, 2015 at 07:09:04PM +0000, Konstantin Belousov wrote: > Author: kib > Date: Sat May 23 19:09:04 2015 > New Revision: 283320 > URL: https://svnweb.freebsd.org/changeset/base/283320 > > Log: > If thread requested to not stop on non-boundary, then not only > stopping signals should obey, but also all forms of single-threading. This sentence is messes up my English parser... Joerg From owner-svn-src-all@FreeBSD.ORG Tue May 26 21:50:53 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id DD8E528D; Tue, 26 May 2015 21:50:53 +0000 (UTC) (envelope-from gavin@FreeBSD.org) Received: from svn.freebsd.org (svn.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 CBC4A627; Tue, 26 May 2015 21:50:53 +0000 (UTC) (envelope-from gavin@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4QLorAd007210; Tue, 26 May 2015 21:50:53 GMT (envelope-from gavin@FreeBSD.org) Received: (from gavin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4QLorHd007209; Tue, 26 May 2015 21:50:53 GMT (envelope-from gavin@FreeBSD.org) Message-Id: <201505262150.t4QLorHd007209@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: gavin set sender to gavin@FreeBSD.org using -f From: Gavin Atkinson Date: Tue, 26 May 2015 21:50:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283589 - head/sys/net80211 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 21:50:54 -0000 Author: gavin Date: Tue May 26 21:50:53 2015 New Revision: 283589 URL: https://svnweb.freebsd.org/changeset/base/283589 Log: Fix spelling mistake in comment. Modified: head/sys/net80211/ieee80211.h Modified: head/sys/net80211/ieee80211.h ============================================================================== --- head/sys/net80211/ieee80211.h Tue May 26 21:47:43 2015 (r283588) +++ head/sys/net80211/ieee80211.h Tue May 26 21:50:53 2015 (r283589) @@ -816,7 +816,7 @@ struct ieee80211_csa_ie { #define IEEE80211_RATE_BASIC 0x80 #define IEEE80211_RATE_VAL 0x7f -/* EPR information element flags */ +/* ERP information element flags */ #define IEEE80211_ERP_NON_ERP_PRESENT 0x01 #define IEEE80211_ERP_USE_PROTECTION 0x02 #define IEEE80211_ERP_LONG_PREAMBLE 0x04 From owner-svn-src-all@FreeBSD.ORG Tue May 26 21:58:23 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id CEF0D711; Tue, 26 May 2015 21:58:23 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.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 BD6B7831; Tue, 26 May 2015 21:58:23 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4QLwN7O009562; Tue, 26 May 2015 21:58:23 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4QLwN6G009561; Tue, 26 May 2015 21:58:23 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201505262158.t4QLwN6G009561@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Tue, 26 May 2015 21:58:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283593 - head/release X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 May 2015 21:58:23 -0000 Author: gjb Date: Tue May 26 21:58:22 2015 New Revision: 283593 URL: https://svnweb.freebsd.org/changeset/base/283593 Log: Fix a typo. Submitted by: ian MFC after: 3 days Sponsored by: The FreeBSD Foundation Modified: head/release/Makefile.mirrors Modified: head/release/Makefile.mirrors ============================================================================== --- head/release/Makefile.mirrors Tue May 26 21:53:04 2015 (r283592) +++ head/release/Makefile.mirrors Tue May 26 21:58:22 2015 (r283593) @@ -41,7 +41,7 @@ SVNVERSION?= ${_D}/${_S} . if exists(${SVNVERSION}) && !empty(SVNVERSION) SVNREVISION!= ${SVNVERSION} ${WORLDDIR}/Makefile . endif -. endif # !defined(SVNERVISION) +. endif # !defined(SVNREVISION) . if !defined(BUILDDATE) || empty(BUILDDATE) . if exists(${.CURDIR}/${.OBJDIR}/dist/base/bin/sh) BUILDDATE!= cd ${.CURDIR} && date -j -f '%s' $$(stat -f "%c" ${.OBJDIR}/dist/base/bin/sh) +%Y%m%d From owner-svn-src-all@FreeBSD.ORG Wed May 27 08:23:24 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 13E6D358; Wed, 27 May 2015 08:23:24 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.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 016BCC70; Wed, 27 May 2015 08:23:24 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4R8NN12035166; Wed, 27 May 2015 08:23:23 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4R8NNVV035165; Wed, 27 May 2015 08:23:23 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201505270823.t4R8NNVV035165@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 27 May 2015 08:23:23 +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: r283597 - stable/10/lib/libc/gen X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 08:23:24 -0000 Author: kib Date: Wed May 27 08:23:23 2015 New Revision: 283597 URL: https://svnweb.freebsd.org/changeset/base/283597 Log: MFC r283153: Remove the write-only variable phent. Modified: stable/10/lib/libc/gen/dlfcn.c Directory Properties: stable/10/ (props changed) Modified: stable/10/lib/libc/gen/dlfcn.c ============================================================================== --- stable/10/lib/libc/gen/dlfcn.c Wed May 27 07:05:56 2015 (r283596) +++ stable/10/lib/libc/gen/dlfcn.c Wed May 27 08:23:23 2015 (r283597) @@ -149,10 +149,8 @@ static void dl_init_phdr_info(void) { Elf_Auxinfo *auxp; - size_t phent; unsigned int i; - phent = 0; for (auxp = __elf_aux_vector; auxp->a_type != AT_NULL; auxp++) { switch (auxp->a_type) { case AT_BASE: @@ -165,9 +163,6 @@ dl_init_phdr_info(void) phdr_info.dlpi_phdr = (const Elf_Phdr *)auxp->a_un.a_ptr; break; - case AT_PHENT: - phent = auxp->a_un.a_val; - break; case AT_PHNUM: phdr_info.dlpi_phnum = (Elf_Half)auxp->a_un.a_val; break; From owner-svn-src-all@FreeBSD.ORG Wed May 27 08:30:17 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1C7BE50A; Wed, 27 May 2015 08:30:17 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.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 0A0B7D7D; Wed, 27 May 2015 08:30:17 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4R8UGwQ036708; Wed, 27 May 2015 08:30:16 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4R8UG7R036707; Wed, 27 May 2015 08:30:16 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201505270830.t4R8UG7R036707@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 27 May 2015 08:30: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: r283598 - stable/10/sys/vm X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 08:30:17 -0000 Author: kib Date: Wed May 27 08:30:16 2015 New Revision: 283598 URL: https://svnweb.freebsd.org/changeset/base/283598 Log: MFC r283162: Set VPO_UNMANAGED on the freed page when insertion of the page into the object queue failed, to satisfy the assertion. MFC r283163: Do grammar fix in the comment to record the right commit message for r283162. Modified: stable/10/sys/vm/vm_page.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/vm/vm_page.c ============================================================================== --- stable/10/sys/vm/vm_page.c Wed May 27 08:23:23 2015 (r283597) +++ stable/10/sys/vm/vm_page.c Wed May 27 08:30:16 2015 (r283598) @@ -1639,6 +1639,7 @@ vm_page_alloc(vm_object_t object, vm_pin m->wire_count = 0; } m->object = NULL; + m->oflags = VPO_UNMANAGED; vm_page_free(m); return (NULL); } @@ -3037,8 +3038,8 @@ vm_page_zero_invalid(vm_page_t m, boolea VM_OBJECT_ASSERT_WLOCKED(m->object); /* * Scan the valid bits looking for invalid sections that - * must be zerod. Invalid sub-DEV_BSIZE'd areas ( where the - * valid bit may be set ) have already been zerod by + * must be zeroed. Invalid sub-DEV_BSIZE'd areas ( where the + * valid bit may be set ) have already been zeroed by * vm_page_set_validclean(). */ for (b = i = 0; i <= PAGE_SIZE / DEV_BSIZE; ++i) { From owner-svn-src-all@FreeBSD.ORG Wed May 27 08:57:48 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id DB32EB71; Wed, 27 May 2015 08:57:48 +0000 (UTC) (envelope-from arybchik@FreeBSD.org) Received: from svn.freebsd.org (svn.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 C8C9D5F2; Wed, 27 May 2015 08:57:48 +0000 (UTC) (envelope-from arybchik@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4R8vmSh050866; Wed, 27 May 2015 08:57:48 GMT (envelope-from arybchik@FreeBSD.org) Received: (from arybchik@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4R8vmRa050865; Wed, 27 May 2015 08:57:48 GMT (envelope-from arybchik@FreeBSD.org) Message-Id: <201505270857.t4R8vmRa050865@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: arybchik set sender to arybchik@FreeBSD.org using -f From: Andrew Rybchenko Date: Wed, 27 May 2015 08:57:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283599 - head/sys/dev/sfxge X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 08:57:49 -0000 Author: arybchik Date: Wed May 27 08:57:48 2015 New Revision: 283599 URL: https://svnweb.freebsd.org/changeset/base/283599 Log: sfxge: mask ifmedia options (pauses) when looking for matching mode Sponsored by: Solarflare Communications, Inc. MFC after: 2 days Differential Revision: https://reviews.freebsd.org/D2656 Modified: head/sys/dev/sfxge/sfxge_port.c Modified: head/sys/dev/sfxge/sfxge_port.c ============================================================================== --- head/sys/dev/sfxge/sfxge_port.c Wed May 27 08:30:16 2015 (r283598) +++ head/sys/dev/sfxge/sfxge_port.c Wed May 27 08:57:48 2015 (r283599) @@ -822,6 +822,8 @@ sfxge_link_mode_to_phy_cap(efx_link_mode static int sfxge_phy_cap_mask(struct sfxge_softc *sc, int ifmedia, uint32_t *phy_cap_mask) { + /* Get global options (duplex), type and subtype bits */ + int ifmedia_masked = ifmedia & (IFM_GMASK | IFM_NMASK | IFM_TMASK); efx_phy_media_type_t medium_type; boolean_t mode_found = B_FALSE; uint32_t cap_mask, mode_cap_mask; @@ -837,7 +839,7 @@ sfxge_phy_cap_mask(struct sfxge_softc *s efx_phy_adv_cap_get(sc->enp, EFX_PHY_CAP_PERM, &cap_mask); for (mode = EFX_LINK_10HDX; mode < EFX_LINK_NMODES; mode++) { - if (ifmedia == sfxge_link_mode[medium_type][mode]) { + if (ifmedia_masked == sfxge_link_mode[medium_type][mode]) { mode_found = B_TRUE; break; } @@ -848,8 +850,8 @@ sfxge_phy_cap_mask(struct sfxge_softc *s * If media is not in the table, it must be IFM_AUTO. */ KASSERT((cap_mask & (1 << EFX_PHY_CAP_AN)) && - ifmedia == (IFM_ETHER | IFM_AUTO), - ("%s: no mode for media %d", __func__, ifmedia)); + ifmedia_masked == (IFM_ETHER | IFM_AUTO), + ("%s: no mode for media %#x", __func__, ifmedia)); *phy_cap_mask = (cap_mask & ~(1 << EFX_PHY_CAP_ASYM)); return (0); } From owner-svn-src-all@FreeBSD.ORG Wed May 27 09:20:45 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4B9C219C; Wed, 27 May 2015 09:20:45 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.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 2C4C1C48; Wed, 27 May 2015 09:20:45 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4R9Kj21062408; Wed, 27 May 2015 09:20:45 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4R9Kh72062401; Wed, 27 May 2015 09:20:43 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201505270920.t4R9Kh72062401@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 27 May 2015 09:20:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283600 - in head/sys: fs/nfsserver kern sys ufs/ffs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 09:20:45 -0000 Author: kib Date: Wed May 27 09:20:42 2015 New Revision: 283600 URL: https://svnweb.freebsd.org/changeset/base/283600 Log: Currently, softupdate code detects overstepping on the workitems limits in the code which is deep in the call stack, and owns several critical system resources, like vnode locks. Attempt to wait while the per-mount softupdate thread cleans up the backlog may deadlock, because the thread might need to lock the same vnode which is owned by the waiting thread. Instead of synchronously waiting for the worker, perform the worker' tickle and pause until the backlog is cleaned, at the safe point during return from kernel to usermode. A new ast request to call softdep_ast_cleanup() is created, the SU code now only checks the size of queue and schedules ast. There is no ast delivery for the kernel threads, so they are exempted from the mechanism, except NFS daemon threads. NFS server loop explicitely checks for the request, and informs the schedule_cleanup() that it is capable of handling the requests by the process P2_AST_SU flag. This is needed because nfsd may be the sole cause of the SU workqueue overflow. But, to not cause nsfd to spawn additional threads just because we slow down existing workers, only tickle su threads, without waiting for the backlog cleanup. Reviewed by: jhb, mckusick Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 2 weeks Modified: head/sys/fs/nfsserver/nfs_nfsdkrpc.c head/sys/kern/kern_exit.c head/sys/kern/subr_trap.c head/sys/sys/proc.h head/sys/sys/systm.h head/sys/ufs/ffs/ffs_softdep.c Modified: head/sys/fs/nfsserver/nfs_nfsdkrpc.c ============================================================================== --- head/sys/fs/nfsserver/nfs_nfsdkrpc.c Wed May 27 08:57:48 2015 (r283599) +++ head/sys/fs/nfsserver/nfs_nfsdkrpc.c Wed May 27 09:20:42 2015 (r283600) @@ -294,6 +294,8 @@ nfssvc_program(struct svc_req *rqst, SVC svc_freereq(rqst); out: + if (softdep_ast_cleanup != NULL) + softdep_ast_cleanup(); NFSEXITCODE(0); } @@ -464,6 +466,7 @@ int nfsrvd_nfsd(struct thread *td, struct nfsd_nfsd_args *args) { char principal[MAXHOSTNAMELEN + 5]; + struct proc *p; int error = 0; bool_t ret2, ret3, ret4; @@ -481,6 +484,10 @@ nfsrvd_nfsd(struct thread *td, struct nf */ NFSD_LOCK(); if (newnfs_numnfsd == 0) { + p = td->td_proc; + PROC_LOCK(p); + p->p_flag2 |= P2_AST_SU; + PROC_UNLOCK(p); newnfs_numnfsd++; NFSD_UNLOCK(); @@ -512,6 +519,9 @@ nfsrvd_nfsd(struct thread *td, struct nf NFSD_LOCK(); newnfs_numnfsd--; nfsrvd_init(1); + PROC_LOCK(p); + p->p_flag2 &= ~P2_AST_SU; + PROC_UNLOCK(p); } NFSD_UNLOCK(); Modified: head/sys/kern/kern_exit.c ============================================================================== --- head/sys/kern/kern_exit.c Wed May 27 08:57:48 2015 (r283599) +++ head/sys/kern/kern_exit.c Wed May 27 09:20:42 2015 (r283600) @@ -205,6 +205,12 @@ exit1(struct thread *td, int rv) } /* + * Deref SU mp, since the thread does not return to userspace. + */ + if (softdep_ast_cleanup != NULL) + softdep_ast_cleanup(); + + /* * MUST abort all other threads before proceeding past here. */ PROC_LOCK(p); Modified: head/sys/kern/subr_trap.c ============================================================================== --- head/sys/kern/subr_trap.c Wed May 27 08:57:48 2015 (r283599) +++ head/sys/kern/subr_trap.c Wed May 27 09:20:42 2015 (r283600) @@ -86,6 +86,8 @@ __FBSDID("$FreeBSD$"); #include +void (*softdep_ast_cleanup)(void); + /* * Define the code needed before returning to user mode, for trap and * syscall. @@ -114,6 +116,9 @@ userret(struct thread *td, struct trapfr #ifdef KTRACE KTRUSERRET(td); #endif + if (softdep_ast_cleanup != NULL) + softdep_ast_cleanup(); + /* * If this thread tickled GEOM, we need to wait for the giggling to * stop before we return to userland @@ -157,6 +162,8 @@ userret(struct thread *td, struct trapfr ("userret: Returning while holding vnode reservation")); KASSERT((td->td_flags & TDF_SBDRY) == 0, ("userret: Returning with stop signals deferred")); + KASSERT(td->td_su == NULL, + ("userret: Returning with SU cleanup request not handled")); #ifdef VIMAGE /* Unfortunately td_vnet_lpush needs VNET_DEBUG. */ VNET_ASSERT(curvnet == NULL, Modified: head/sys/sys/proc.h ============================================================================== --- head/sys/sys/proc.h Wed May 27 08:57:48 2015 (r283599) +++ head/sys/sys/proc.h Wed May 27 09:20:42 2015 (r283600) @@ -277,6 +277,7 @@ struct thread { u_int td_vp_reserv; /* (k) Count of reserved vnodes. */ int td_no_sleeping; /* (k) Sleeping disabled count. */ int td_dom_rr_idx; /* (k) RR Numa domain selection. */ + void *td_su; /* (k) FFS SU private */ #define td_endzero td_sigmask /* Copied during fork1() or create_thread(). */ @@ -677,6 +678,7 @@ struct proc { #define P2_INHERIT_PROTECTED 0x00000001 /* New children get P_PROTECTED. */ #define P2_NOTRACE 0x00000002 /* No ptrace(2) attach or coredumps. */ #define P2_NOTRACE_EXEC 0x00000004 /* Keep P2_NOPTRACE on exec(2). */ +#define P2_AST_SU 0x00000008 /* Handles SU ast for kthreads. */ /* Flags protected by proctree_lock, kept in p_treeflags. */ #define P_TREE_ORPHANED 0x00000001 /* Reparented, on orphan list */ Modified: head/sys/sys/systm.h ============================================================================== --- head/sys/sys/systm.h Wed May 27 08:57:48 2015 (r283599) +++ head/sys/sys/systm.h Wed May 27 09:20:42 2015 (r283600) @@ -431,4 +431,6 @@ void free_unr(struct unrhdr *uh, u_int i void intr_prof_stack_use(struct thread *td, struct trapframe *frame); +extern void (*softdep_ast_cleanup)(void); + #endif /* !_SYS_SYSTM_H_ */ Modified: head/sys/ufs/ffs/ffs_softdep.c ============================================================================== --- head/sys/ufs/ffs/ffs_softdep.c Wed May 27 08:57:48 2015 (r283599) +++ head/sys/ufs/ffs/ffs_softdep.c Wed May 27 09:20:42 2015 (r283600) @@ -900,6 +900,8 @@ static int pagedep_find(struct pagedep_h struct pagedep **); static void pause_timer(void *); static int request_cleanup(struct mount *, int); +static void schedule_cleanup(struct mount *); +static void softdep_ast_cleanup_proc(void); static int process_worklist_item(struct mount *, int, int); static void process_removes(struct vnode *); static void process_truncates(struct vnode *); @@ -921,6 +923,8 @@ static int journal_unsuspend(struct ufsm static void softdep_prelink(struct vnode *, struct vnode *); static void add_to_journal(struct worklist *); static void remove_from_journal(struct worklist *); +static bool softdep_excess_inodes(struct ufsmount *); +static bool softdep_excess_dirrem(struct ufsmount *); static void softdep_process_journal(struct mount *, struct worklist *, int); static struct jremref *newjremref(struct dirrem *, struct inode *, struct inode *ip, off_t, nlink_t); @@ -2209,12 +2213,10 @@ inodedep_lookup(mp, inum, flags, inodede * responsible for more than our share of that usage and * we are not in a rush, request some inodedep cleanup. */ - while (dep_current[D_INODEDEP] > max_softdeps && - (flags & NODELAY) == 0 && - ump->softdep_curdeps[D_INODEDEP] > - max_softdeps / stat_flush_threads) - request_cleanup(mp, FLUSH_INODES); - FREE_LOCK(ump); + if (softdep_excess_inodes(ump)) + schedule_cleanup(mp); + else + FREE_LOCK(ump); inodedep = malloc(sizeof(struct inodedep), M_INODEDEP, M_SOFTDEP_FLAGS); workitem_alloc(&inodedep->id_list, D_INODEDEP, mp); @@ -2412,6 +2414,7 @@ softdep_initialize() bioops.io_complete = softdep_disk_write_complete; bioops.io_deallocate = softdep_deallocate_dependencies; bioops.io_countdeps = softdep_count_dependencies; + softdep_ast_cleanup = softdep_ast_cleanup_proc; /* Initialize the callout with an mtx. */ callout_init_mtx(&softdep_callout, &lk, 0); @@ -2430,6 +2433,7 @@ softdep_uninitialize() bioops.io_complete = NULL; bioops.io_deallocate = NULL; bioops.io_countdeps = NULL; + softdep_ast_cleanup = NULL; callout_drain(&softdep_callout); } @@ -9126,13 +9130,12 @@ newdirrem(bp, dp, ip, isrmdir, prevdirre * the number of freefile and freeblks structures. */ ACQUIRE_LOCK(ip->i_ump); - while (!IS_SNAPSHOT(ip) && dep_current[D_DIRREM] > max_softdeps / 2 && - ip->i_ump->softdep_curdeps[D_DIRREM] > - (max_softdeps / 2) / stat_flush_threads) - (void) request_cleanup(ITOV(dp)->v_mount, FLUSH_BLOCKS); - FREE_LOCK(ip->i_ump); - dirrem = malloc(sizeof(struct dirrem), - M_DIRREM, M_SOFTDEP_FLAGS|M_ZERO); + if (!IS_SNAPSHOT(ip) && softdep_excess_dirrem(ip->i_ump)) + schedule_cleanup(ITOV(dp)->v_mount); + else + FREE_LOCK(ip->i_ump); + dirrem = malloc(sizeof(struct dirrem), M_DIRREM, M_SOFTDEP_FLAGS | + M_ZERO); workitem_alloc(&dirrem->dm_list, D_DIRREM, dvp->v_mount); LIST_INIT(&dirrem->dm_jremrefhd); LIST_INIT(&dirrem->dm_jwork); @@ -13269,6 +13272,92 @@ retry: return (1); } +static bool +softdep_excess_inodes(struct ufsmount *ump) +{ + + return (dep_current[D_INODEDEP] > max_softdeps && + ump->softdep_curdeps[D_INODEDEP] > max_softdeps / + stat_flush_threads); +} + +static bool +softdep_excess_dirrem(struct ufsmount *ump) +{ + + return (dep_current[D_DIRREM] > max_softdeps / 2 && + ump->softdep_curdeps[D_DIRREM] > (max_softdeps / 2) / + stat_flush_threads); +} + +static void +schedule_cleanup(struct mount *mp) +{ + struct ufsmount *ump; + struct thread *td; + + ump = VFSTOUFS(mp); + LOCK_OWNED(ump); + FREE_LOCK(ump); + td = curthread; + if ((td->td_pflags & TDP_KTHREAD) != 0 && + (td->td_proc->p_flag2 & P2_AST_SU) == 0) { + /* + * No ast is delivered to kernel threads, so nobody + * would deref the mp. Some kernel threads + * explicitely check for AST, e.g. NFS daemon does + * this in the serving loop. + */ + return; + } + if (td->td_su != NULL) + vfs_rel(td->td_su); + vfs_ref(mp); + td->td_su = mp; + thread_lock(td); + td->td_flags |= TDF_ASTPENDING; + thread_unlock(td); +} + +static void +softdep_ast_cleanup_proc(void) +{ + struct thread *td; + struct mount *mp; + struct ufsmount *ump; + int error; + bool req; + + td = curthread; + mp = td->td_su; + if (mp == NULL) + return; + td->td_su = NULL; + error = vfs_busy(mp, MBF_NOWAIT); + vfs_rel(mp); + if (error != 0) + return; + if (ffs_own_mount(mp) && MOUNTEDSOFTDEP(mp)) { + ump = VFSTOUFS(mp); + for (;;) { + req = false; + ACQUIRE_LOCK(ump); + if (softdep_excess_inodes(ump)) { + req = true; + request_cleanup(mp, FLUSH_INODES); + } + if (softdep_excess_dirrem(ump)) { + req = true; + request_cleanup(mp, FLUSH_BLOCKS); + } + FREE_LOCK(ump); + if ((td->td_pflags & TDP_KTHREAD) != 0 || !req) + break; + } + } + vfs_unbusy(mp); +} + /* * If memory utilization has gotten too high, deliberately slow things * down and speed up the I/O processing. @@ -13355,7 +13444,8 @@ request_cleanup(mp, resource) callout_reset(&softdep_callout, tickdelay > 2 ? tickdelay : 2, pause_timer, 0); - msleep((caddr_t)&proc_waiting, &lk, PPAUSE, "softupdate", 0); + if ((td->td_pflags & TDP_KTHREAD) == 0) + msleep((caddr_t)&proc_waiting, &lk, PPAUSE, "softupdate", 0); proc_waiting -= 1; FREE_GBLLOCK(&lk); ACQUIRE_LOCK(ump); From owner-svn-src-all@FreeBSD.ORG Wed May 27 09:21:48 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id AE4752F3; Wed, 27 May 2015 09:21:48 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.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 8D18FCF1; Wed, 27 May 2015 09:21:48 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4R9Lmit064980; Wed, 27 May 2015 09:21:48 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4R9LmY0064978; Wed, 27 May 2015 09:21:48 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201505270921.t4R9LmY0064978@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 27 May 2015 09:21:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283601 - in head/sys: kern sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 09:21:48 -0000 Author: kib Date: Wed May 27 09:21:47 2015 New Revision: 283601 URL: https://svnweb.freebsd.org/changeset/base/283601 Log: Add V_MNTREF flag to the vn_start_write(9) and vn_start_secondary_write(9) functions. The flag indicates that the caller already owns a reference on the mount point, and the functions can consume it. The reference is released by vn_finished_write(9) and vn_finished_secondary_write(9) in due course. Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 2 weeks Modified: head/sys/kern/vfs_vnops.c head/sys/sys/vnode.h Modified: head/sys/kern/vfs_vnops.c ============================================================================== --- head/sys/kern/vfs_vnops.c Wed May 27 09:20:42 2015 (r283600) +++ head/sys/kern/vfs_vnops.c Wed May 27 09:21:47 2015 (r283601) @@ -1646,16 +1646,18 @@ unlock: } int -vn_start_write(vp, mpp, flags) - struct vnode *vp; - struct mount **mpp; - int flags; +vn_start_write(struct vnode *vp, struct mount **mpp, int flags) { struct mount *mp; int error; - if (!vn_suspendable(vp, mpp)) + KASSERT((flags & V_MNTREF) == 0 || (*mpp != NULL && vp == NULL), + ("V_MNTREF requires mp")); + if (!vn_suspendable(vp, mpp)) { + if ((flags & V_MNTREF) != 0) + vfs_rel(*mpp); return (0); + } error = 0; /* @@ -1681,7 +1683,7 @@ vn_start_write(vp, mpp, flags) * emulate a vfs_ref(). */ MNT_ILOCK(mp); - if (vp == NULL) + if (vp == NULL && (flags & V_MNTREF) == 0) MNT_REF(mp); return (vn_start_write_locked(mp, flags)); @@ -1695,16 +1697,18 @@ vn_start_write(vp, mpp, flags) * time, these operations are halted until the suspension is over. */ int -vn_start_secondary_write(vp, mpp, flags) - struct vnode *vp; - struct mount **mpp; - int flags; +vn_start_secondary_write(struct vnode *vp, struct mount **mpp, int flags) { struct mount *mp; int error; - if (!vn_suspendable(vp, mpp)) + KASSERT((flags & V_MNTREF) == 0 || (*mpp != NULL && vp == NULL), + ("V_MNTREF requires mp")); + if (!vn_suspendable(vp, mpp)) { + if ((flags & V_MNTREF) != 0) + vfs_rel(*mpp); return (0); + } retry: if (vp != NULL) { @@ -1730,7 +1734,7 @@ vn_start_secondary_write(vp, mpp, flags) * emulate a vfs_ref(). */ MNT_ILOCK(mp); - if (vp == NULL) + if (vp == NULL && (flags & V_MNTREF) == 0) MNT_REF(mp); if ((mp->mnt_kern_flag & (MNTK_SUSPENDED | MNTK_SUSPEND2)) == 0) { mp->mnt_secondary_writes++; Modified: head/sys/sys/vnode.h ============================================================================== --- head/sys/sys/vnode.h Wed May 27 09:20:42 2015 (r283600) +++ head/sys/sys/vnode.h Wed May 27 09:21:47 2015 (r283601) @@ -397,6 +397,7 @@ extern int vttoif_tab[]; #define V_WAIT 0x0001 /* vn_start_write: sleep for suspend */ #define V_NOWAIT 0x0002 /* vn_start_write: don't sleep for suspend */ #define V_XSLEEP 0x0004 /* vn_start_write: just return after sleep */ +#define V_MNTREF 0x0010 /* vn_start_write: mp is already ref-ed */ #define VR_START_WRITE 0x0001 /* vfs_write_resume: start write atomically */ #define VR_NO_SUSPCLR 0x0002 /* vfs_write_resume: do not clear suspension */ From owner-svn-src-all@FreeBSD.ORG Wed May 27 09:22:52 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2C36C43F; Wed, 27 May 2015 09:22:52 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.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 0DE9DD1F; Wed, 27 May 2015 09:22:52 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4R9MpkU065212; Wed, 27 May 2015 09:22:51 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4R9MoZv065205; Wed, 27 May 2015 09:22:50 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201505270922.t4R9MoZv065205@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 27 May 2015 09:22:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283602 - in head/sys: cddl/contrib/opensolaris/uts/common/fs/zfs kern X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 09:22:52 -0000 Author: kib Date: Wed May 27 09:22:50 2015 New Revision: 283602 URL: https://svnweb.freebsd.org/changeset/base/283602 Log: Right now, dounmount() is called with unreferenced mount point. Nothing stops a parallel unmount to suceed before the given call to dounmount() checks and locks the covered vnode. Prevent dounmount() from acting on the freed (although type-stable) memory by changing the interface to require the mount point to be referenced. dounmount() consumes the reference on return, regardless of the sucessfull or erronous result. Tested by: pho Sponsored by: The FreeBSD Foundation MFC after: 2 weeks Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c head/sys/kern/vfs_mount.c head/sys/kern/vfs_subr.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c Wed May 27 09:21:47 2015 (r283601) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c Wed May 27 09:22:50 2015 (r283602) @@ -697,6 +697,7 @@ zfsctl_unmount_snap(zfs_snapentry_t *sep return (0); #else + vfs_ref(vn_mountedvfs(svp)); return (dounmount(vn_mountedvfs(svp), fflags, curthread)); #endif } Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Wed May 27 09:21:47 2015 (r283601) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Wed May 27 09:22:50 2015 (r283602) @@ -3481,6 +3481,7 @@ zfs_unmount_snap(const char *snapname) #ifdef illumos (void) dounmount(vfsp, MS_FORCE, kcred); #else + vfs_ref(vfsp); (void) dounmount(vfsp, MS_FORCE, curthread); #endif return (0); Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c Wed May 27 09:21:47 2015 (r283601) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c Wed May 27 09:22:50 2015 (r283602) @@ -2315,6 +2315,7 @@ bail: * unmount this file system. */ if (vn_vfswlock(zfsvfs->z_vfs->vfs_vnodecovered) == 0) + vfs_ref(zfsvfs->z_vfs); (void) dounmount(zfsvfs->z_vfs, MS_FORCE, curthread); } return (err); Modified: head/sys/kern/vfs_mount.c ============================================================================== --- head/sys/kern/vfs_mount.c Wed May 27 09:21:47 2015 (r283601) +++ head/sys/kern/vfs_mount.c Wed May 27 09:22:50 2015 (r283602) @@ -1128,12 +1128,7 @@ struct unmount_args { #endif /* ARGSUSED */ int -sys_unmount(td, uap) - struct thread *td; - register struct unmount_args /* { - char *path; - int flags; - } */ *uap; +sys_unmount(struct thread *td, struct unmount_args *uap) { struct nameidata nd; struct mount *mp; @@ -1164,8 +1159,10 @@ sys_unmount(td, uap) mtx_lock(&mountlist_mtx); TAILQ_FOREACH_REVERSE(mp, &mountlist, mntlist, mnt_list) { if (mp->mnt_stat.f_fsid.val[0] == id0 && - mp->mnt_stat.f_fsid.val[1] == id1) + mp->mnt_stat.f_fsid.val[1] == id1) { + vfs_ref(mp); break; + } } mtx_unlock(&mountlist_mtx); } else { @@ -1183,8 +1180,10 @@ sys_unmount(td, uap) } mtx_lock(&mountlist_mtx); TAILQ_FOREACH_REVERSE(mp, &mountlist, mntlist, mnt_list) { - if (strcmp(mp->mnt_stat.f_mntonname, pathbuf) == 0) + if (strcmp(mp->mnt_stat.f_mntonname, pathbuf) == 0) { + vfs_ref(mp); break; + } } mtx_unlock(&mountlist_mtx); } @@ -1202,8 +1201,10 @@ sys_unmount(td, uap) /* * Don't allow unmounting the root filesystem. */ - if (mp->mnt_flag & MNT_ROOTFS) + if (mp->mnt_flag & MNT_ROOTFS) { + vfs_rel(mp); return (EINVAL); + } error = dounmount(mp, uap->flags, td); return (error); } @@ -1212,10 +1213,7 @@ sys_unmount(td, uap) * Do the actual filesystem unmount. */ int -dounmount(mp, flags, td) - struct mount *mp; - int flags; - struct thread *td; +dounmount(struct mount *mp, int flags, struct thread *td) { struct vnode *coveredvp, *fsrootvp; int error; @@ -1235,6 +1233,7 @@ dounmount(mp, flags, td) if (coveredvp->v_mountedhere != mp || coveredvp->v_mountedhere->mnt_gen != mnt_gen_r) { VOP_UNLOCK(coveredvp, 0); + vfs_rel(mp); return (EBUSY); } } @@ -1243,13 +1242,14 @@ dounmount(mp, flags, td) * original mount is permitted to unmount this filesystem. */ error = vfs_suser(mp, td); - if (error) { + if (error != 0) { if (coveredvp) VOP_UNLOCK(coveredvp, 0); + vfs_rel(mp); return (error); } - vn_start_write(NULL, &mp, V_WAIT); + vn_start_write(NULL, &mp, V_WAIT | V_MNTREF); MNT_ILOCK(mp); if ((mp->mnt_kern_flag & MNTK_UNMOUNT) != 0 || !TAILQ_EMPTY(&mp->mnt_uppers)) { Modified: head/sys/kern/vfs_subr.c ============================================================================== --- head/sys/kern/vfs_subr.c Wed May 27 09:21:47 2015 (r283601) +++ head/sys/kern/vfs_subr.c Wed May 27 09:22:50 2015 (r283602) @@ -3502,8 +3502,9 @@ vfs_unmountall(void) */ while(!TAILQ_EMPTY(&mountlist)) { mp = TAILQ_LAST(&mountlist, mntlist); + vfs_ref(mp); error = dounmount(mp, MNT_FORCE, td); - if (error) { + if (error != 0) { TAILQ_REMOVE(&mountlist, mp, mnt_list); /* * XXX: Due to the way in which we mount the root From owner-svn-src-all@FreeBSD.ORG Wed May 27 09:49:05 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3452FB74; Wed, 27 May 2015 09:49:05 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.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 170BC282; Wed, 27 May 2015 09:49:05 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4R9n4pn076077; Wed, 27 May 2015 09:49:04 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4R9n44u076076; Wed, 27 May 2015 09:49:04 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201505270949.t4R9n44u076076@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 27 May 2015 09:49:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283604 - head/sys/ufs/ffs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 09:49:05 -0000 Author: kib Date: Wed May 27 09:49:04 2015 New Revision: 283604 URL: https://svnweb.freebsd.org/changeset/base/283604 Log: After r283600, NODELAY flag to inodedep_lookup() function is unused. Eliminate it, and simplify code by removing the local dflags variable always initialized to DEPALLOC. Noted by: mckusick Sponsored by: The FreeBSD Foundation MFC after: 2 weeks Modified: head/sys/ufs/ffs/ffs_softdep.c Modified: head/sys/ufs/ffs/ffs_softdep.c ============================================================================== --- head/sys/ufs/ffs/ffs_softdep.c Wed May 27 09:34:08 2015 (r283603) +++ head/sys/ufs/ffs/ffs_softdep.c Wed May 27 09:49:04 2015 (r283604) @@ -2063,7 +2063,6 @@ retry_flush: * allocates a new structure if an existing one is not found. */ #define DEPALLOC 0x0001 /* allocate structure if lookup fails */ -#define NODELAY 0x0002 /* cannot do background work */ /* * Structures and routines associated with pagedep caching. @@ -4635,14 +4634,10 @@ inodedep_lookup_ip(ip) struct inode *ip; { struct inodedep *inodedep; - int dflags; KASSERT(ip->i_nlink >= ip->i_effnlink, ("inodedep_lookup_ip: bad delta")); - dflags = DEPALLOC; - if (IS_SNAPSHOT(ip)) - dflags |= NODELAY; - (void) inodedep_lookup(UFSTOVFS(ip->i_ump), ip->i_number, dflags, + (void) inodedep_lookup(UFSTOVFS(ip->i_ump), ip->i_number, DEPALLOC, &inodedep); inodedep->id_nlinkdelta = ip->i_nlink - ip->i_effnlink; KASSERT((inodedep->id_state & UNLINKED) == 0, ("inode unlinked")); @@ -5042,7 +5037,7 @@ softdep_setup_inomapdep(bp, ip, newinum, M_BMSAFEMAP, M_SOFTDEP_FLAGS); workitem_alloc(&bmsafemap->sm_list, D_BMSAFEMAP, mp); ACQUIRE_LOCK(ip->i_ump); - if ((inodedep_lookup(mp, newinum, DEPALLOC | NODELAY, &inodedep))) + if ((inodedep_lookup(mp, newinum, DEPALLOC, &inodedep))) panic("softdep_setup_inomapdep: dependency %p for new" "inode already exists", inodedep); bmsafemap = bmsafemap_lookup(mp, bp, ino_to_cg(fs, newinum), bmsafemap); @@ -5339,7 +5334,7 @@ softdep_setup_allocdirect(ip, off, newbl if (freefrag && freefrag->ff_jdep != NULL && freefrag->ff_jdep->wk_type == D_JFREEFRAG) add_to_journal(freefrag->ff_jdep); - inodedep_lookup(mp, ip->i_number, DEPALLOC | NODELAY, &inodedep); + inodedep_lookup(mp, ip->i_number, DEPALLOC, &inodedep); adp->ad_inodedep = inodedep; WORKLIST_INSERT(&bp->b_dep, &newblk->nb_list); @@ -5697,7 +5692,7 @@ softdep_setup_allocext(ip, off, newblkno if (freefrag && freefrag->ff_jdep != NULL && freefrag->ff_jdep->wk_type == D_JFREEFRAG) add_to_journal(freefrag->ff_jdep); - inodedep_lookup(mp, ip->i_number, DEPALLOC | NODELAY, &inodedep); + inodedep_lookup(mp, ip->i_number, DEPALLOC, &inodedep); adp->ad_inodedep = inodedep; WORKLIST_INSERT(&bp->b_dep, &newblk->nb_list); @@ -5822,7 +5817,6 @@ softdep_setup_allocindir_page(ip, lbn, b struct allocindir *aip; struct pagedep *pagedep; struct mount *mp; - int dflags; mp = UFSTOVFS(ip->i_ump); KASSERT(MOUNTEDSOFTDEP(mp) != 0, @@ -5835,10 +5829,7 @@ softdep_setup_allocindir_page(ip, lbn, b "lbn %jd", ip->i_number, newblkno, oldblkno, lbn); ASSERT_VOP_LOCKED(ITOV(ip), "softdep_setup_allocindir_page"); aip = newallocindir(ip, ptrno, newblkno, oldblkno, lbn); - dflags = DEPALLOC; - if (IS_SNAPSHOT(ip)) - dflags |= NODELAY; - (void) inodedep_lookup(mp, ip->i_number, dflags, &inodedep); + (void) inodedep_lookup(mp, ip->i_number, DEPALLOC, &inodedep); /* * If we are allocating a directory page, then we must * allocate an associated pagedep to track additions and @@ -5868,7 +5859,6 @@ softdep_setup_allocindir_meta(nbp, ip, b struct inodedep *inodedep; struct allocindir *aip; ufs_lbn_t lbn; - int dflags; KASSERT(MOUNTEDSOFTDEP(UFSTOVFS(ip->i_ump)) != 0, ("softdep_setup_allocindir_meta called on non-softdep filesystem")); @@ -5878,10 +5868,8 @@ softdep_setup_allocindir_meta(nbp, ip, b lbn = nbp->b_lblkno; ASSERT_VOP_LOCKED(ITOV(ip), "softdep_setup_allocindir_meta"); aip = newallocindir(ip, ptrno, newblkno, 0, lbn); - dflags = DEPALLOC; - if (IS_SNAPSHOT(ip)) - dflags |= NODELAY; - inodedep_lookup(UFSTOVFS(ip->i_ump), ip->i_number, dflags, &inodedep); + inodedep_lookup(UFSTOVFS(ip->i_ump), ip->i_number, DEPALLOC, + &inodedep); WORKLIST_INSERT(&nbp->b_dep, &aip->ai_block.nb_list); if (setup_allocindir_phase2(bp, ip, inodedep, aip, lbn)) panic("softdep_setup_allocindir_meta: Block already existed"); @@ -6494,7 +6482,7 @@ softdep_journal_freeblocks(ip, cred, len struct mount *mp; ufs2_daddr_t extblocks, datablocks; ufs_lbn_t tmpval, lbn, lastlbn; - int frags, lastoff, iboff, allocblock, needj, dflags, error, i; + int frags, lastoff, iboff, allocblock, needj, error, i; fs = ip->i_fs; ump = ip->i_ump; @@ -6515,10 +6503,7 @@ softdep_journal_freeblocks(ip, cred, len * we don't need to journal the block frees. The canceled journals * for the allocations will suffice. */ - dflags = DEPALLOC; - if (IS_SNAPSHOT(ip)) - dflags |= NODELAY; - inodedep_lookup(mp, ip->i_number, dflags, &inodedep); + inodedep_lookup(mp, ip->i_number, DEPALLOC, &inodedep); if ((inodedep->id_state & (UNLINKED | DEPCOMPLETE)) == UNLINKED && length == 0) needj = 0; @@ -6648,7 +6633,7 @@ softdep_journal_freeblocks(ip, cred, len *((struct ufs2_dinode *)bp->b_data + ino_to_fsbo(fs, ip->i_number)) = *ip->i_din2; ACQUIRE_LOCK(ump); - (void) inodedep_lookup(mp, ip->i_number, dflags, &inodedep); + (void) inodedep_lookup(mp, ip->i_number, DEPALLOC, &inodedep); if ((inodedep->id_state & IOSTARTED) != 0) panic("softdep_setup_freeblocks: inode busy"); /* @@ -6741,7 +6726,7 @@ softdep_journal_freeblocks(ip, cred, len } ACQUIRE_LOCK(ump); - inodedep_lookup(mp, ip->i_number, dflags, &inodedep); + inodedep_lookup(mp, ip->i_number, DEPALLOC, &inodedep); TAILQ_INSERT_TAIL(&inodedep->id_freeblklst, freeblks, fb_next); freeblks->fb_state |= DEPCOMPLETE | ONDEPLIST; /* @@ -6832,7 +6817,7 @@ softdep_setup_freeblocks(ip, length, fla struct fs *fs; ufs2_daddr_t extblocks, datablocks; struct mount *mp; - int i, delay, error, dflags; + int i, delay, error; ufs_lbn_t tmpval; ufs_lbn_t lbn; @@ -6901,10 +6886,7 @@ softdep_setup_freeblocks(ip, length, fla * Find and eliminate any inode dependencies. */ ACQUIRE_LOCK(ump); - dflags = DEPALLOC; - if (IS_SNAPSHOT(ip)) - dflags |= NODELAY; - (void) inodedep_lookup(mp, ip->i_number, dflags, &inodedep); + (void) inodedep_lookup(mp, ip->i_number, DEPALLOC, &inodedep); if ((inodedep->id_state & IOSTARTED) != 0) panic("softdep_setup_freeblocks: inode busy"); /* @@ -8510,7 +8492,7 @@ softdep_setup_directory_add(bp, dp, diro dap->da_pagedep = pagedep; LIST_INSERT_HEAD(&pagedep->pd_diraddhd[DIRADDHASH(offset)], dap, da_pdlist); - inodedep_lookup(mp, newinum, DEPALLOC | NODELAY, &inodedep); + inodedep_lookup(mp, newinum, DEPALLOC, &inodedep); /* * If we're journaling, link the diradd into the jaddref so it * may be completed after the journal entry is written. Otherwise, @@ -9371,7 +9353,7 @@ softdep_setup_directory_change(bp, dp, i * inode is not yet written. If it is written, do the post-inode * write processing to put it on the id_pendinghd list. */ - inodedep_lookup(mp, newinum, DEPALLOC | NODELAY, &inodedep); + inodedep_lookup(mp, newinum, DEPALLOC, &inodedep); if (MOUNTEDSUJ(mp)) { jaddref = (struct jaddref *)TAILQ_LAST(&inodedep->id_inoreflst, inoreflst); @@ -9413,15 +9395,12 @@ softdep_change_linkcnt(ip) struct inode *ip; /* the inode with the increased link count */ { struct inodedep *inodedep; - int dflags; KASSERT(MOUNTEDSOFTDEP(UFSTOVFS(ip->i_ump)) != 0, ("softdep_change_linkcnt called on non-softdep filesystem")); ACQUIRE_LOCK(ip->i_ump); - dflags = DEPALLOC; - if (IS_SNAPSHOT(ip)) - dflags |= NODELAY; - inodedep_lookup(UFSTOVFS(ip->i_ump), ip->i_number, dflags, &inodedep); + inodedep_lookup(UFSTOVFS(ip->i_ump), ip->i_number, DEPALLOC, + &inodedep); if (ip->i_nlink < ip->i_effnlink) panic("softdep_change_linkcnt: bad delta"); inodedep->id_nlinkdelta = ip->i_nlink - ip->i_effnlink; From owner-svn-src-all@FreeBSD.ORG Wed May 27 09:50:19 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3DD133CD; Wed, 27 May 2015 09:50:19 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.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 E9CD438E; Wed, 27 May 2015 09:50:18 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4R9oI03078290; Wed, 27 May 2015 09:50:18 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4R9oIYZ078289; Wed, 27 May 2015 09:50:18 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201505270950.t4R9oIYZ078289@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 27 May 2015 09:50:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283605 - head/sys/amd64/amd64 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 09:50:19 -0000 Author: kib Date: Wed May 27 09:50:18 2015 New Revision: 283605 URL: https://svnweb.freebsd.org/changeset/base/283605 Log: Enabled rewritten PCID support by default. Sponsored by: The FreeBSD Foundation MFC after: 1 month Modified: head/sys/amd64/amd64/pmap.c Modified: head/sys/amd64/amd64/pmap.c ============================================================================== --- head/sys/amd64/amd64/pmap.c Wed May 27 09:49:04 2015 (r283604) +++ head/sys/amd64/amd64/pmap.c Wed May 27 09:50:18 2015 (r283605) @@ -381,7 +381,7 @@ caddr_t CADDR1 = 0; static int pmap_flags = PMAP_PDE_SUPERPAGE; /* flags for x86 pmaps */ -int pmap_pcid_enabled = 0; +int pmap_pcid_enabled = 1; SYSCTL_INT(_vm_pmap, OID_AUTO, pcid_enabled, CTLFLAG_RDTUN | CTLFLAG_NOFETCH, &pmap_pcid_enabled, 0, "Is TLB Context ID enabled ?"); int invpcid_works = 0; From owner-svn-src-all@FreeBSD.ORG Wed May 27 10:08:32 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 90072D8E; Wed, 27 May 2015 10:08:32 +0000 (UTC) (envelope-from pluknet@FreeBSD.org) Received: from svn.freebsd.org (svn.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 7E10AA05; Wed, 27 May 2015 10:08:32 +0000 (UTC) (envelope-from pluknet@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RA8Wug087407; Wed, 27 May 2015 10:08:32 GMT (envelope-from pluknet@FreeBSD.org) Received: (from pluknet@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RA8WOm087406; Wed, 27 May 2015 10:08:32 GMT (envelope-from pluknet@FreeBSD.org) Message-Id: <201505271008.t4RA8WOm087406@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: pluknet set sender to pluknet@FreeBSD.org using -f From: Sergey Kandaurov Date: Wed, 27 May 2015 10:08:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283606 - head/bin/ps X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 10:08:32 -0000 Author: pluknet Date: Wed May 27 10:08:31 2015 New Revision: 283606 URL: https://svnweb.freebsd.org/changeset/base/283606 Log: Document recent p_flag2 additions. Modified: head/bin/ps/ps.1 Modified: head/bin/ps/ps.1 ============================================================================== --- head/bin/ps/ps.1 Wed May 27 09:50:18 2015 (r283605) +++ head/bin/ps/ps.1 Wed May 27 10:08:31 2015 (r283606) @@ -29,7 +29,7 @@ .\" @(#)ps.1 8.3 (Berkeley) 4/18/94 .\" $FreeBSD$ .\" -.Dd May 22, 2015 +.Dd May 27, 2015 .Dt PS 1 .Os .Sh NAME @@ -350,6 +350,9 @@ the include file .In sys/proc.h : .Bl -column P2_INHERIT_PROTECTED 0x00000001 .It Dv "P2_INHERIT_PROTECTED" Ta No "0x00000001" Ta "New children get P_PROTECTED" +.It Dv "P2_NOTRACE" Ta No "0x00000002" Ta "No ptrace(2) attach or coredumps" +.It Dv "P2_NOTRACE_EXEC" Ta No "0x00000004" Ta "Keep P2_NOPTRACE on exec(2)" +.It Dv "P2_AST_SU" Ta No "0x00000008" Ta "Handles SU ast for kthreads" .El .It Cm label The MAC label of the process. From owner-svn-src-all@FreeBSD.ORG Wed May 27 11:12:21 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9081681C; Wed, 27 May 2015 11:12:21 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from cell.glebius.int.ru (glebius.int.ru [81.19.69.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "cell.glebius.int.ru", Issuer "cell.glebius.int.ru" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id F35A4C9D; Wed, 27 May 2015 11:12:20 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from cell.glebius.int.ru (localhost [127.0.0.1]) by cell.glebius.int.ru (8.14.9/8.14.9) with ESMTP id t4RBCGXS095574 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Wed, 27 May 2015 14:12:16 +0300 (MSK) (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by cell.glebius.int.ru (8.14.9/8.14.9/Submit) id t4RBCGX7095573; Wed, 27 May 2015 14:12:16 +0300 (MSK) (envelope-from glebius@FreeBSD.org) X-Authentication-Warning: cell.glebius.int.ru: glebius set sender to glebius@FreeBSD.org using -f Date: Wed, 27 May 2015 14:12:16 +0300 From: Gleb Smirnoff To: Adrian Chadd Cc: "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" Subject: Re: svn commit: r283568 - head/sys/net80211 Message-ID: <20150527111216.GD73119@FreeBSD.org> References: <201505261319.t4QDJ5Hj045298@svn.freebsd.org> <20150526154453.GA73119@FreeBSD.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 11:12:21 -0000 On Tue, May 26, 2015 at 11:25:32AM -0700, Adrian Chadd wrote: A> On 26 May 2015 at 08:44, Gleb Smirnoff wrote: A> > On Tue, May 26, 2015 at 08:25:01AM -0700, Adrian Chadd wrote: A> > A> Hi, A> > A> A> > A> We're going to have to move all of the counter API stuff into A> > A> ieee80211_freebsd.[ch]. A> > A> > Well, I put the function in the same file where if_get_counter pointer A> > is set, so that it can be static. You need distinctive border between A> > FreeBSD and non-FreeBSD stuff, which right now isn't yet clear. A> > A> > I don't mind moving, but looks like the ifnet attachment process, either A> > the current one or the future one, also needs to be moved to FreeBSD A> > part of the code. A> A> Yeah, the lines got .. blurred. I don't want to go full portability A> unless someone comes up with a very pressing need - eg, still assume A> ifnet ,still assume ioctl ,transmit/start, receive, mbufs, etc. But A> vnets and counter API should be easy to migrate out so A> netbsd/dragonflybsd can port things. Well, that's a good stuff to do goodness to others (Net/DragonFly), but in these two particular cases (vnet/counter), they can deal with the problem theirselves much easier: typedef counter_u64_t u_int #define counter_u64_add(foo) foo++ #define CURVNET_SET(foo) do {} while (0); #define CURVNET_RESTORE() do {} while (0); , than us modifing all the net80211 for the sake of hiding these APIs. -- Totus tuus, Glebius. From owner-svn-src-all@FreeBSD.ORG Wed May 27 12:57:34 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 763035F5; Wed, 27 May 2015 12:57:34 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from svn.freebsd.org (svn.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 61F6996C; Wed, 27 May 2015 12:57:34 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RCvYeF071598; Wed, 27 May 2015 12:57:34 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RCvW88071564; Wed, 27 May 2015 12:57:32 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201505271257.t4RCvW88071564@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Wed, 27 May 2015 12:57:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r283607 - in vendor/elftoolchain/dist: common elfcopy elfdump libdwarf libelftc readelf X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 12:57:34 -0000 Author: emaste Date: Wed May 27 12:57:31 2015 New Revision: 283607 URL: https://svnweb.freebsd.org/changeset/base/283607 Log: Import ELF Tool Chain revision 3223 From http://svn.code.sf.net/p/elftoolchain/code Modified: vendor/elftoolchain/dist/common/_elftc.h vendor/elftoolchain/dist/common/elfdefinitions.h vendor/elftoolchain/dist/elfcopy/elfcopy.h vendor/elftoolchain/dist/elfcopy/main.c vendor/elftoolchain/dist/elfcopy/sections.c vendor/elftoolchain/dist/elfcopy/symbols.c vendor/elftoolchain/dist/elfdump/elfdump.c vendor/elftoolchain/dist/libdwarf/libdwarf_reloc.c vendor/elftoolchain/dist/libelftc/libelftc_dem_gnu3.c vendor/elftoolchain/dist/libelftc/os.Linux.mk vendor/elftoolchain/dist/readelf/readelf.1 vendor/elftoolchain/dist/readelf/readelf.c Modified: vendor/elftoolchain/dist/common/_elftc.h ============================================================================== --- vendor/elftoolchain/dist/common/_elftc.h Wed May 27 10:08:31 2015 (r283606) +++ vendor/elftoolchain/dist/common/_elftc.h Wed May 27 12:57:31 2015 (r283607) @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: _elftc.h 3175 2015-03-27 17:21:24Z emaste $ + * $Id: _elftc.h 3209 2015-05-17 13:40:46Z kaiwang27 $ */ /** @@ -342,12 +342,13 @@ struct name { \ #if defined(__GLIBC__) || defined(__linux__) - +#ifndef _GNU_SOURCE /* * GLIBC based systems have a global 'char *' pointer referencing * the executable's name. */ extern const char *program_invocation_short_name; +#endif /* !_GNU_SOURCE */ #define ELFTC_GETPROGNAME() program_invocation_short_name Modified: vendor/elftoolchain/dist/common/elfdefinitions.h ============================================================================== --- vendor/elftoolchain/dist/common/elfdefinitions.h Wed May 27 10:08:31 2015 (r283606) +++ vendor/elftoolchain/dist/common/elfdefinitions.h Wed May 27 12:57:31 2015 (r283607) @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: elfdefinitions.h 3178 2015-03-30 18:29:13Z emaste $ + * $Id: elfdefinitions.h 3198 2015-05-14 18:36:19Z emaste $ */ /* @@ -565,6 +565,7 @@ _ELF_DEFINE_EM(EM_SPARC, 2, " _ELF_DEFINE_EM(EM_386, 3, "Intel 80386") \ _ELF_DEFINE_EM(EM_68K, 4, "Motorola 68000") \ _ELF_DEFINE_EM(EM_88K, 5, "Motorola 88000") \ +_ELF_DEFINE_EM(EM_IAMCU, 6, "Intel MCU") \ _ELF_DEFINE_EM(EM_860, 7, "Intel 80860") \ _ELF_DEFINE_EM(EM_MIPS, 8, "MIPS I Architecture") \ _ELF_DEFINE_EM(EM_S370, 9, "IBM System/370 Processor") \ Modified: vendor/elftoolchain/dist/elfcopy/elfcopy.h ============================================================================== --- vendor/elftoolchain/dist/elfcopy/elfcopy.h Wed May 27 10:08:31 2015 (r283606) +++ vendor/elftoolchain/dist/elfcopy/elfcopy.h Wed May 27 12:57:31 2015 (r283607) @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: elfcopy.h 3173 2015-03-27 16:46:13Z emaste $ + * $Id: elfcopy.h 3221 2015-05-24 23:42:43Z kaiwang27 $ */ #include @@ -237,6 +237,7 @@ struct elfcopy { uint64_t *secndx; /* section index map. */ uint64_t *symndx; /* symbol index map. */ unsigned char *v_rel; /* symbols needed by relocation. */ + unsigned char *v_grp; /* symbols refered by section group. */ unsigned char *v_secsym; /* sections with section symbol. */ STAILQ_HEAD(, segment) v_seg; /* list of segments. */ STAILQ_HEAD(, sec_action) v_sac;/* list of section operations. */ Modified: vendor/elftoolchain/dist/elfcopy/main.c ============================================================================== --- vendor/elftoolchain/dist/elfcopy/main.c Wed May 27 10:08:31 2015 (r283606) +++ vendor/elftoolchain/dist/elfcopy/main.c Wed May 27 12:57:31 2015 (r283607) @@ -39,7 +39,7 @@ #include "elfcopy.h" -ELFTC_VCSID("$Id: main.c 3174 2015-03-27 17:13:41Z emaste $"); +ELFTC_VCSID("$Id: main.c 3216 2015-05-23 21:16:36Z kaiwang27 $"); enum options { @@ -404,8 +404,19 @@ create_elf(struct elfcopy *ecp) * Insert SHDR table into the internal section list as a "pseudo" * section, so later it will get sorted and resynced just as "normal" * sections. + * + * Under FreeBSD, Binutils objcopy always put the section header + * at the end of all the sections. We want to do the same here. + * + * However, note that the behaviour is still different with Binutils: + * elfcopy checks the FreeBSD OSABI tag to tell whether it needs to + * move the section headers, while Binutils is probably configured + * this way when it's compiled on FreeBSD. */ - shtab = insert_shtab(ecp, 0); + if (oeh.e_ident[EI_OSABI] == ELFOSABI_FREEBSD) + shtab = insert_shtab(ecp, 1); + else + shtab = insert_shtab(ecp, 0); /* * Resync section offsets in the output object. This is needed @@ -485,6 +496,11 @@ free_elf(struct elfcopy *ecp) free(sec); } } + + if (ecp->secndx != NULL) { + free(ecp->secndx); + ecp->secndx = NULL; + } } /* Create a temporary file. */ Modified: vendor/elftoolchain/dist/elfcopy/sections.c ============================================================================== --- vendor/elftoolchain/dist/elfcopy/sections.c Wed May 27 10:08:31 2015 (r283606) +++ vendor/elftoolchain/dist/elfcopy/sections.c Wed May 27 12:57:31 2015 (r283607) @@ -34,7 +34,7 @@ #include "elfcopy.h" -ELFTC_VCSID("$Id: sections.c 3185 2015-04-11 08:56:34Z kaiwang27 $"); +ELFTC_VCSID("$Id: sections.c 3220 2015-05-24 23:42:39Z kaiwang27 $"); static void add_gnu_debuglink(struct elfcopy *ecp); static uint32_t calc_crc32(const char *p, size_t len, uint32_t crc); @@ -56,6 +56,7 @@ static void print_data(const char *d, si static void print_section(struct section *s); static void *read_section(struct section *s, size_t *size); static void update_reloc(struct elfcopy *ecp, struct section *s); +static void update_section_group(struct elfcopy *ecp, struct section *s); int is_remove_section(struct elfcopy *ecp, const char *name) @@ -552,6 +553,14 @@ copy_content(struct elfcopy *ecp) (s->type == SHT_REL || s->type == SHT_RELA)) filter_reloc(ecp, s); + /* + * The section indices in the SHT_GROUP section needs + * to be updated since we might have stripped some + * sections and changed section numbering. + */ + if (s->type == SHT_GROUP) + update_section_group(ecp, s); + if (is_modify_section(ecp, s->name)) modify_section(ecp, s); @@ -571,6 +580,68 @@ copy_content(struct elfcopy *ecp) } } + +/* + * Update section group section. The section indices in the SHT_GROUP + * section need update after section numbering changed. + */ +static void +update_section_group(struct elfcopy *ecp, struct section *s) +{ + GElf_Shdr ish; + Elf_Data *id; + uint32_t *ws, *wd; + uint64_t n; + size_t ishnum; + int i, j; + + if (!elf_getshnum(ecp->ein, &ishnum)) + errx(EXIT_FAILURE, "elf_getshnum failed: %s", + elf_errmsg(-1)); + + if (gelf_getshdr(s->is, &ish) == NULL) + errx(EXIT_FAILURE, "gelf_getehdr() failed: %s", + elf_errmsg(-1)); + + if ((id = elf_getdata(s->is, NULL)) == NULL) + errx(EXIT_FAILURE, "elf_getdata() failed: %s", + elf_errmsg(-1)); + + if (ish.sh_size == 0) + return; + + if (ish.sh_entsize == 0) + ish.sh_entsize = 4; + + ws = id->d_buf; + + /* We only support COMDAT section. */ + if ((*ws & GRP_COMDAT) == 0) + return; + + if ((s->buf = malloc(ish.sh_size)) == NULL) + err(EXIT_FAILURE, "malloc failed"); + + s->sz = ish.sh_size; + + wd = s->buf; + + /* Copy the flag word as-is. */ + *wd = *ws; + + /* Update the section indices. */ + n = ish.sh_size / ish.sh_entsize; + for(i = 1, j = 1; (uint64_t)i < n; i++) { + if (ws[i] != SHN_UNDEF && ws[i] < ishnum && + ecp->secndx[ws[i]] != 0) + wd[j++] = ecp->secndx[ws[i]]; + else + s->sz -= 4; + } + + s->nocopy = 1; +} + /* * Filter relocation entries, only keep those entries whose * symbol is in the keep list. @@ -1028,8 +1099,11 @@ copy_shdr(struct elfcopy *ecp, struct se osh.sh_flags |= SHF_WRITE; if (sec_flags & SF_CODE) osh.sh_flags |= SHF_EXECINSTR; - } else + } else { osh.sh_flags = ish.sh_flags; + if (ish.sh_type == SHT_REL || ish.sh_type == SHT_RELA) + osh.sh_flags |= SHF_INFO_LINK; + } } if (name == NULL) Modified: vendor/elftoolchain/dist/elfcopy/symbols.c ============================================================================== --- vendor/elftoolchain/dist/elfcopy/symbols.c Wed May 27 10:08:31 2015 (r283606) +++ vendor/elftoolchain/dist/elfcopy/symbols.c Wed May 27 12:57:31 2015 (r283607) @@ -33,7 +33,7 @@ #include "elfcopy.h" -ELFTC_VCSID("$Id: symbols.c 3191 2015-05-04 17:07:01Z jkoshy $"); +ELFTC_VCSID("$Id: symbols.c 3222 2015-05-24 23:47:23Z kaiwang27 $"); /* Symbol table buffer structure. */ struct symbuf { @@ -77,7 +77,8 @@ static int is_weak_symbol(unsigned char static int lookup_exact_string(hash_head *hash, const char *buf, const char *s); static int generate_symbols(struct elfcopy *ecp); -static void mark_symbols(struct elfcopy *ecp, size_t sc); +static void mark_reloc_symbols(struct elfcopy *ecp, size_t sc); +static void mark_section_group_symbols(struct elfcopy *ecp, size_t sc); static int match_wildcard(const char *name, const char *pattern); uint32_t str_hash(const char *s); @@ -160,6 +161,10 @@ is_needed_symbol(struct elfcopy *ecp, in if (BIT_ISSET(ecp->v_rel, i)) return (1); + /* Symbols refered by COMDAT sections are needed. */ + if (BIT_ISSET(ecp->v_grp, i)) + return (1); + /* * For relocatable files (.o files), global and weak symbols * are needed. @@ -207,7 +212,10 @@ is_remove_symbol(struct elfcopy *ecp, si return (1); if (ecp->v_rel == NULL) - mark_symbols(ecp, sc); + mark_reloc_symbols(ecp, sc); + + if (ecp->v_grp == NULL) + mark_section_group_symbols(ecp, sc); if (is_needed_symbol(ecp, i, s)) return (0); @@ -233,7 +241,7 @@ is_remove_symbol(struct elfcopy *ecp, si * Mark symbols refered by relocation entries. */ static void -mark_symbols(struct elfcopy *ecp, size_t sc) +mark_reloc_symbols(struct elfcopy *ecp, size_t sc) { const char *name; Elf_Data *d; @@ -311,6 +319,49 @@ mark_symbols(struct elfcopy *ecp, size_t elf_errmsg(elferr)); } +static void +mark_section_group_symbols(struct elfcopy *ecp, size_t sc) +{ + const char *name; + Elf_Scn *s; + GElf_Shdr sh; + size_t indx; + int elferr; + + ecp->v_grp = calloc((sc + 7) / 8, 1); + if (ecp->v_grp == NULL) + err(EXIT_FAILURE, "calloc failed"); + + if (elf_getshstrndx(ecp->ein, &indx) == 0) + errx(EXIT_FAILURE, "elf_getshstrndx failed: %s", + elf_errmsg(-1)); + + s = NULL; + while ((s = elf_nextscn(ecp->ein, s)) != NULL) { + if (gelf_getshdr(s, &sh) != &sh) + errx(EXIT_FAILURE, "elf_getshdr failed: %s", + elf_errmsg(-1)); + + if (sh.sh_type != SHT_GROUP) + continue; + + if ((name = elf_strptr(ecp->ein, indx, sh.sh_name)) == NULL) + errx(EXIT_FAILURE, "elf_strptr failed: %s", + elf_errmsg(-1)); + if (is_remove_section(ecp, name)) + continue; + + if (sh.sh_info > 0 && sh.sh_info < sc) + BIT_SET(ecp->v_grp, sh.sh_info); + else if (sh.sh_info != 0) + warnx("invalid symbox index"); + } + elferr = elf_errno(); + if (elferr != 0) + errx(EXIT_FAILURE, "elf_nextscn failed: %s", + elf_errmsg(elferr)); +} + static int generate_symbols(struct elfcopy *ecp) { @@ -351,6 +402,8 @@ generate_symbols(struct elfcopy *ecp) ecp->symtab->buf = sy_buf; ecp->strtab->buf = st_buf; + gsym = NULL; + /* * Create bit vector v_secsym, which is used to mark sections * that already have corresponding STT_SECTION symbols. @@ -384,7 +437,7 @@ generate_symbols(struct elfcopy *ecp) /* Symbol table should exist if this function is called. */ if (symndx == 0) { warnx("can't find .strtab section"); - return (0); + goto clean; } /* Locate .symtab of input object. */ @@ -413,7 +466,6 @@ generate_symbols(struct elfcopy *ecp) * output object, it is used by update_reloc() later to update * relocation information. */ - gsym = NULL; sc = ish.sh_size / ish.sh_entsize; if (sc > 0) { ecp->symndx = calloc(sc, sizeof(*ecp->symndx)); @@ -427,7 +479,7 @@ generate_symbols(struct elfcopy *ecp) if (elferr != 0) errx(EXIT_FAILURE, "elf_getdata failed: %s", elf_errmsg(elferr)); - return (0); + goto clean; } } else return (0); @@ -523,7 +575,7 @@ generate_symbols(struct elfcopy *ecp) * check if that only local symbol is the reserved symbol. */ if (sy_buf->nls <= 1 && sy_buf->ngs == 0) - return (0); + goto clean; /* * Create STT_SECTION symbols for sections that do not already @@ -550,6 +602,7 @@ generate_symbols(struct elfcopy *ecp) sym.st_value = s->vma; sym.st_size = 0; sym.st_info = GELF_ST_INFO(STB_LOCAL, STT_SECTION); + sym.st_other = STV_DEFAULT; /* * Don't let add_to_symtab() touch sym.st_shndx. * In this case, we know the index already. @@ -583,6 +636,12 @@ generate_symbols(struct elfcopy *ecp) } return (1); + +clean: + free(gsym); + free_symtab(ecp); + + return (0); } void @@ -624,7 +683,9 @@ create_symtab(struct elfcopy *ecp) if (((ecp->flags & SYMTAB_INTACT) == 0) && !generate_symbols(ecp)) { TAILQ_REMOVE(&ecp->v_sec, ecp->symtab, sec_list); TAILQ_REMOVE(&ecp->v_sec, ecp->strtab, sec_list); + free(ecp->symtab->buf); free(ecp->symtab); + free(ecp->strtab->buf); free(ecp->strtab); ecp->symtab = NULL; ecp->strtab = NULL; @@ -697,6 +758,23 @@ free_symtab(struct elfcopy *ecp) } } } + + if (ecp->symndx != NULL) { + free(ecp->symndx); + ecp->symndx = NULL; + } + if (ecp->v_rel != NULL) { + free(ecp->v_rel); + ecp->v_rel = NULL; + } + if (ecp->v_grp != NULL) { + free(ecp->v_grp); + ecp->v_grp = NULL; + } + if (ecp->v_secsym != NULL) { + free(ecp->v_secsym); + ecp->v_secsym = NULL; + } } void Modified: vendor/elftoolchain/dist/elfdump/elfdump.c ============================================================================== --- vendor/elftoolchain/dist/elfdump/elfdump.c Wed May 27 10:08:31 2015 (r283606) +++ vendor/elftoolchain/dist/elfdump/elfdump.c Wed May 27 12:57:31 2015 (r283607) @@ -50,7 +50,7 @@ #include "_elftc.h" -ELFTC_VCSID("$Id: elfdump.c 3189 2015-04-20 17:02:01Z emaste $"); +ELFTC_VCSID("$Id: elfdump.c 3198 2015-05-14 18:36:19Z emaste $"); #if defined(ELFTC_NEED_ELF_NOTE_DEFINITION) #include "native-elf-format.h" @@ -240,6 +240,7 @@ e_machines(unsigned int mach) case EM_386: return "EM_386"; case EM_68K: return "EM_68K"; case EM_88K: return "EM_88K"; + case EM_IAMCU: return "EM_IAMCU"; case EM_860: return "EM_860"; case EM_MIPS: return "EM_MIPS"; case EM_PPC: return "EM_PPC"; @@ -411,6 +412,7 @@ r_type(unsigned int mach, unsigned int t switch(mach) { case EM_NONE: return ""; case EM_386: + case EM_IAMCU: switch(type) { case 0: return "R_386_NONE"; case 1: return "R_386_32"; Modified: vendor/elftoolchain/dist/libdwarf/libdwarf_reloc.c ============================================================================== --- vendor/elftoolchain/dist/libdwarf/libdwarf_reloc.c Wed May 27 10:08:31 2015 (r283606) +++ vendor/elftoolchain/dist/libdwarf/libdwarf_reloc.c Wed May 27 12:57:31 2015 (r283607) @@ -26,7 +26,7 @@ #include "_libdwarf.h" -ELFTC_VCSID("$Id: libdwarf_reloc.c 3149 2015-02-15 19:00:06Z emaste $"); +ELFTC_VCSID("$Id: libdwarf_reloc.c 3198 2015-05-14 18:36:19Z emaste $"); Dwarf_Unsigned _dwarf_get_reloc_type(Dwarf_P_Debug dbg, int is64) @@ -75,6 +75,7 @@ _dwarf_get_reloc_size(Dwarf_Debug dbg, D return (4); break; case EM_386: + case EM_IAMCU: if (rel_type == R_386_32) return (4); break; Modified: vendor/elftoolchain/dist/libelftc/libelftc_dem_gnu3.c ============================================================================== --- vendor/elftoolchain/dist/libelftc/libelftc_dem_gnu3.c Wed May 27 10:08:31 2015 (r283606) +++ vendor/elftoolchain/dist/libelftc/libelftc_dem_gnu3.c Wed May 27 12:57:31 2015 (r283607) @@ -36,7 +36,7 @@ #include "_libelftc.h" -ELFTC_VCSID("$Id: libelftc_dem_gnu3.c 3194 2015-05-05 17:55:16Z emaste $"); +ELFTC_VCSID("$Id: libelftc_dem_gnu3.c 3212 2015-05-17 13:40:55Z kaiwang27 $"); /** * @file cpp_demangle.c @@ -50,7 +50,7 @@ ELFTC_VCSID("$Id: libelftc_dem_gnu3.c 31 enum type_qualifier { TYPE_PTR, TYPE_REF, TYPE_CMX, TYPE_IMG, TYPE_EXT, TYPE_RST, TYPE_VAT, - TYPE_CST + TYPE_CST, TYPE_VEC }; struct vector_type_qualifier { @@ -84,6 +84,7 @@ struct cpp_demangle_data { int func_type; const char *cur; /* current mangled name ptr */ const char *last_sname; /* last source name */ + int push_head; }; #define CPP_DEMANGLE_TRY_LIMIT 128 @@ -112,6 +113,8 @@ static int cpp_demangle_read_array(struc static int cpp_demangle_read_encoding(struct cpp_demangle_data *); static int cpp_demangle_read_expr_primary(struct cpp_demangle_data *); static int cpp_demangle_read_expression(struct cpp_demangle_data *); +static int cpp_demangle_read_expression_flat(struct cpp_demangle_data *, + char **); static int cpp_demangle_read_expression_binary(struct cpp_demangle_data *, const char *, size_t); static int cpp_demangle_read_expression_unary(struct cpp_demangle_data *, @@ -123,8 +126,12 @@ static int cpp_demangle_read_function(st static int cpp_demangle_local_source_name(struct cpp_demangle_data *ddata); static int cpp_demangle_read_local_name(struct cpp_demangle_data *); static int cpp_demangle_read_name(struct cpp_demangle_data *); +static int cpp_demangle_read_name_flat(struct cpp_demangle_data *, + char**); static int cpp_demangle_read_nested_name(struct cpp_demangle_data *); static int cpp_demangle_read_number(struct cpp_demangle_data *, long *); +static int cpp_demangle_read_number_as_string(struct cpp_demangle_data *, + char **); static int cpp_demangle_read_nv_offset(struct cpp_demangle_data *); static int cpp_demangle_read_offset(struct cpp_demangle_data *); static int cpp_demangle_read_offset_number(struct cpp_demangle_data *); @@ -138,6 +145,8 @@ static int cpp_demangle_read_tmpl_arg(st static int cpp_demangle_read_tmpl_args(struct cpp_demangle_data *); static int cpp_demangle_read_tmpl_param(struct cpp_demangle_data *); static int cpp_demangle_read_type(struct cpp_demangle_data *, int); +static int cpp_demangle_read_type_flat(struct cpp_demangle_data *, + char **); static int cpp_demangle_read_uqname(struct cpp_demangle_data *); static int cpp_demangle_read_v_offset(struct cpp_demangle_data *); static char *decode_fp_to_double(const char *, size_t); @@ -156,8 +165,6 @@ static int vector_type_qualifier_init(st static int vector_type_qualifier_push(struct vector_type_qualifier *, enum type_qualifier); -static int cpp_demangle_gnu3_push_head; - /** * @brief Decode the input string by IA-64 C++ ABI style. * @@ -190,7 +197,6 @@ cpp_demangle_gnu3(const char *org) if (!cpp_demangle_data_init(&ddata, org + 2)) return (NULL); - cpp_demangle_gnu3_push_head = 0; rtn = NULL; if (!cpp_demangle_read_encoding(&ddata)) @@ -277,6 +283,7 @@ cpp_demangle_data_init(struct cpp_demang d->func_type = 0; d->cur = cur; d->last_sname = NULL; + d->push_head = 0; return (1); @@ -309,7 +316,6 @@ cpp_demangle_push_fp(struct cpp_demangle fp = ddata->cur; while (*ddata->cur != 'E') ++ddata->cur; - ++ddata->cur; if ((f = decoder(fp, ddata->cur - fp)) == NULL) return (0); @@ -320,6 +326,8 @@ cpp_demangle_push_fp(struct cpp_demangle free(f); + ++ddata->cur; + return (rtn); } @@ -331,7 +339,7 @@ cpp_demangle_push_str(struct cpp_demangl if (ddata == NULL || str == NULL || len == 0) return (0); - if (cpp_demangle_gnu3_push_head > 0) + if (ddata->push_head > 0) return (vector_str_push(&ddata->output_tmp, str, len)); return (vector_str_push(&ddata->output, str, len)); @@ -403,7 +411,8 @@ cpp_demangle_push_type_qualifier(struct if (type_str != NULL) { if (!vector_str_push(&subst_v, "*", 1)) goto clean; - if (!cpp_demangle_push_subst_v(ddata, &subst_v)) + if (!cpp_demangle_push_subst_v(ddata, + &subst_v)) goto clean; } break; @@ -414,7 +423,8 @@ cpp_demangle_push_type_qualifier(struct if (type_str != NULL) { if (!vector_str_push(&subst_v, "&", 1)) goto clean; - if (!cpp_demangle_push_subst_v(ddata, &subst_v)) + if (!cpp_demangle_push_subst_v(ddata, + &subst_v)) goto clean; } break; @@ -425,7 +435,8 @@ cpp_demangle_push_type_qualifier(struct if (type_str != NULL) { if (!vector_str_push(&subst_v, " complex", 8)) goto clean; - if (!cpp_demangle_push_subst_v(ddata, &subst_v)) + if (!cpp_demangle_push_subst_v(ddata, + &subst_v)) goto clean; } break; @@ -434,23 +445,26 @@ cpp_demangle_push_type_qualifier(struct if (!cpp_demangle_push_str(ddata, " imaginary", 10)) goto clean; if (type_str != NULL) { - if (!vector_str_push(&subst_v, " imaginary", 10)) + if (!vector_str_push(&subst_v, " imaginary", + 10)) goto clean; - if (!cpp_demangle_push_subst_v(ddata, &subst_v)) + if (!cpp_demangle_push_subst_v(ddata, + &subst_v)) goto clean; } break; case TYPE_EXT: - if (e_idx > v->ext_name.size - 1) + if (v->ext_name.size == 0 || + e_idx > v->ext_name.size - 1) goto clean; - if ((e_len = strlen(v->ext_name.container[e_idx])) == 0) + if ((e_len = strlen(v->ext_name.container[e_idx])) == + 0) goto clean; - if ((buf = malloc(sizeof(char) * (e_len + 1))) == NULL) + if ((buf = malloc(e_len + 2)) == NULL) goto clean; - - memcpy(buf, " ", 1); - memcpy(buf + 1, v->ext_name.container[e_idx], e_len); + snprintf(buf, e_len + 2, " %s", + v->ext_name.container[e_idx]); if (!cpp_demangle_push_str(ddata, buf, e_len + 1)) { free(buf); @@ -463,7 +477,8 @@ cpp_demangle_push_type_qualifier(struct free(buf); goto clean; } - if (!cpp_demangle_push_subst_v(ddata, &subst_v)) { + if (!cpp_demangle_push_subst_v(ddata, + &subst_v)) { free(buf); goto clean; } @@ -478,7 +493,8 @@ cpp_demangle_push_type_qualifier(struct if (type_str != NULL) { if (!vector_str_push(&subst_v, " restrict", 9)) goto clean; - if (!cpp_demangle_push_subst_v(ddata, &subst_v)) + if (!cpp_demangle_push_subst_v(ddata, + &subst_v)) goto clean; } break; @@ -489,7 +505,8 @@ cpp_demangle_push_type_qualifier(struct if (type_str != NULL) { if (!vector_str_push(&subst_v, " volatile", 9)) goto clean; - if (!cpp_demangle_push_subst_v(ddata, &subst_v)) + if (!cpp_demangle_push_subst_v(ddata, + &subst_v)) goto clean; } break; @@ -500,11 +517,42 @@ cpp_demangle_push_type_qualifier(struct if (type_str != NULL) { if (!vector_str_push(&subst_v, " const", 6)) goto clean; - if (!cpp_demangle_push_subst_v(ddata, &subst_v)) + if (!cpp_demangle_push_subst_v(ddata, + &subst_v)) goto clean; } break; + case TYPE_VEC: + if (v->ext_name.size == 0 || + e_idx > v->ext_name.size - 1) + goto clean; + if ((e_len = strlen(v->ext_name.container[e_idx])) == + 0) + goto clean; + if ((buf = malloc(e_len + 12)) == NULL) + goto clean; + snprintf(buf, e_len + 12, " __vector(%s)", + v->ext_name.container[e_idx]); + if (!cpp_demangle_push_str(ddata, buf, e_len + 11)) { + free(buf); + goto clean; + } + if (type_str != NULL) { + if (!vector_str_push(&subst_v, buf, + e_len + 11)) { + free(buf); + goto clean; + } + if (!cpp_demangle_push_subst_v(ddata, + &subst_v)) { + free(buf); + goto clean; + } + } + free(buf); + ++e_idx; + break; }; --idx; } @@ -655,10 +703,14 @@ cpp_demangle_read_expr_primary(struct cp switch (*ddata->cur) { case 'b': + if (*(ddata->cur + 2) != 'E') + return (0); switch (*(++ddata->cur)) { case '0': + ddata->cur += 2; return (cpp_demangle_push_str(ddata, "false", 5)); case '1': + ddata->cur += 2; return (cpp_demangle_push_str(ddata, "true", 4)); default: return (0); @@ -707,7 +759,8 @@ cpp_demangle_read_expr_primary(struct cp ++ddata->cur; } ++ddata->cur; - return (cpp_demangle_push_str(ddata, num, ddata->cur - num)); + return (cpp_demangle_push_str(ddata, num, + ddata->cur - num - 1)); default: return (0); @@ -999,6 +1052,38 @@ cpp_demangle_read_expression(struct cpp_ } static int +cpp_demangle_read_expression_flat(struct cpp_demangle_data *ddata, char **str) +{ + struct vector_str *output; + size_t i, p_idx, idx, exp_len; + char *exp; + + output = ddata->push_head > 0 ? &ddata->output_tmp : + &ddata->output; + + p_idx = output->size; + + if (!cpp_demangle_read_expression(ddata)) + return (0); + + if ((exp = vector_str_substr(output, p_idx, output->size - 1, + &exp_len)) == NULL) + return (0); + + idx = output->size; + for (i = p_idx; i < idx; ++i) { + if (!vector_str_pop(output)) { + free(exp); + return (0); + } + } + + *str = exp; + + return (1); +} + +static int cpp_demangle_read_expression_binary(struct cpp_demangle_data *ddata, const char *name, size_t len) { @@ -1127,12 +1212,65 @@ cpp_demangle_read_function(struct cpp_de static int cpp_demangle_read_encoding(struct cpp_demangle_data *ddata) { + char *name, *type, *num_str; + long offset; + int rtn; if (ddata == NULL || *ddata->cur == '\0') return (0); /* special name */ switch (SIMPLE_HASH(*ddata->cur, *(ddata->cur + 1))) { + case SIMPLE_HASH('G', 'A'): + if (!cpp_demangle_push_str(ddata, "hidden alias for ", 17)) + return (0); + ddata->cur += 2; + if (*ddata->cur == '\0') + return (0); + return (cpp_demangle_read_encoding(ddata)); + + case SIMPLE_HASH('G', 'R'): + if (!cpp_demangle_push_str(ddata, "reference temporary #", 21)) + return (0); + ddata->cur += 2; + if (*ddata->cur == '\0') + return (0); + if (!cpp_demangle_read_name_flat(ddata, &name)) + return (0); + rtn = 0; + if (!cpp_demangle_read_number_as_string(ddata, &num_str)) + goto clean1; + if (!cpp_demangle_push_str(ddata, num_str, strlen(num_str))) + goto clean2; + if (!cpp_demangle_push_str(ddata, " for ", 5)) + goto clean2; + if (!cpp_demangle_push_str(ddata, name, strlen(name))) + goto clean2; + rtn = 1; + clean2: + free(num_str); + clean1: + free(name); + return (rtn); + + case SIMPLE_HASH('G', 'T'): + ddata->cur += 2; + if (*ddata->cur == '\0') + return (0); + switch (*ddata->cur) { + case 'n': + if (!cpp_demangle_push_str(ddata, + "non-transaction clone for ", 26)) + return (0); + case 't': + default: + if (!cpp_demangle_push_str(ddata, + "transaction clone for ", 22)) + return (0); + } + ++ddata->cur; + return (cpp_demangle_read_encoding(ddata)); + case SIMPLE_HASH('G', 'V'): /* sentry object for 1 time init */ if (!cpp_demangle_push_str(ddata, "guard variable for ", 20)) @@ -1154,14 +1292,49 @@ cpp_demangle_read_encoding(struct cpp_de return (0); return (cpp_demangle_read_encoding(ddata)); + case SIMPLE_HASH('T', 'C'): + /* construction vtable */ + if (!cpp_demangle_push_str(ddata, "construction vtable for ", + 24)) + return (0); + ddata->cur += 2; + if (*ddata->cur == '\0') + return (0); + if (!cpp_demangle_read_type_flat(ddata, &type)) + return (0); + rtn = 0; + if (!cpp_demangle_read_number(ddata, &offset)) + goto clean3; + if (*ddata->cur++ != '_') + goto clean3; + if (!cpp_demangle_read_type(ddata, 0)) + goto clean3; + if (!cpp_demangle_push_str(ddata, "-in-", 4)) + goto clean3; + if (!cpp_demangle_push_str(ddata, type, strlen(type))) + goto clean3; + rtn = 1; + clean3: + free(type); + return (rtn); + case SIMPLE_HASH('T', 'D'): /* typeinfo common proxy */ break; + case SIMPLE_HASH('T', 'F'): + /* typeinfo fn */ + if (!cpp_demangle_push_str(ddata, "typeinfo fn for ", 16)) + return (0); + ddata->cur += 2; + if (*ddata->cur == '\0') + return (0); + return (cpp_demangle_read_type(ddata, 0)); + case SIMPLE_HASH('T', 'h'): /* virtual function non-virtual override thunk */ - if (cpp_demangle_push_str(ddata, - "virtual function non-virtual override ", 38) == 0) + if (!cpp_demangle_push_str(ddata, + "virtual function non-virtual override ", 38)) return (0); ddata->cur += 2; if (*ddata->cur == '\0') @@ -1170,24 +1343,51 @@ cpp_demangle_read_encoding(struct cpp_de return (0); return (cpp_demangle_read_encoding(ddata)); + case SIMPLE_HASH('T', 'H'): + /* TLS init function */ + if (!cpp_demangle_push_str(ddata, "TLS init function for ", + 22)) + return (0); + ddata->cur += 2; + if (*ddata->cur == '\0') + return (0); + break; + case SIMPLE_HASH('T', 'I'): /* typeinfo structure */ - /* FALLTHROUGH */ + if (!cpp_demangle_push_str(ddata, "typeinfo for ", 13)) + return (0); + ddata->cur += 2; + if (*ddata->cur == '\0') + return (0); + return (cpp_demangle_read_type(ddata, 0)); + + case SIMPLE_HASH('T', 'J'): + /* java class */ + if (!cpp_demangle_push_str(ddata, "java Class for ", 15)) + return (0); + ddata->cur += 2; + if (*ddata->cur == '\0') + return (0); + return (cpp_demangle_read_type(ddata, 0)); + case SIMPLE_HASH('T', 'S'): /* RTTI name (NTBS) */ - if (!cpp_demangle_push_str(ddata, "typeinfo for ", 14)) + if (!cpp_demangle_push_str(ddata, "typeinfo name for ", 18)) return (0); ddata->cur += 2; if (*ddata->cur == '\0') return (0); - return (cpp_demangle_read_type(ddata, 1)); + return (cpp_demangle_read_type(ddata, 0)); case SIMPLE_HASH('T', 'T'): /* VTT table */ if (!cpp_demangle_push_str(ddata, "VTT for ", 8)) return (0); ddata->cur += 2; - return (cpp_demangle_read_type(ddata, 1)); + if (*ddata->cur == '\0') + return (0); + return (cpp_demangle_read_type(ddata, 0)); case SIMPLE_HASH('T', 'v'): /* virtual function virtual override thunk */ @@ -1208,7 +1408,17 @@ cpp_demangle_read_encoding(struct cpp_de ddata->cur += 2; if (*ddata->cur == '\0') return (0); - return (cpp_demangle_read_type(ddata, 1)); + return (cpp_demangle_read_type(ddata, 0)); + + case SIMPLE_HASH('T', 'W'): + /* TLS wrapper function */ + if (!cpp_demangle_push_str(ddata, "TLS wrapper function for ", + 25)) + return (0); + ddata->cur += 2; + if (*ddata->cur == '\0') + return (0); + break; }; return (cpp_demangle_read_name(ddata)); @@ -1270,8 +1480,7 @@ cpp_demangle_read_name(struct cpp_demang if (ddata == NULL || *ddata->cur == '\0') return (0); - output = cpp_demangle_gnu3_push_head > 0 ? - &ddata->output_tmp : &ddata->output; + output = ddata->push_head > 0 ? &ddata->output_tmp : &ddata->output; subst_str = NULL; @@ -1327,6 +1536,38 @@ clean: } static int +cpp_demangle_read_name_flat(struct cpp_demangle_data *ddata, char **str) +{ + struct vector_str *output; + size_t i, p_idx, idx, name_len; + char *name; + + output = ddata->push_head > 0 ? &ddata->output_tmp : + &ddata->output; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Wed May 27 12:58:23 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B735672E; Wed, 27 May 2015 12:58:23 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from svn.freebsd.org (svn.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 8BE27977; Wed, 27 May 2015 12:58:23 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RCwNJl071766; Wed, 27 May 2015 12:58:23 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RCwNJY071765; Wed, 27 May 2015 12:58:23 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201505271258.t4RCwNJY071765@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Wed, 27 May 2015 12:58:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r283608 - vendor/elftoolchain/elftoolchain-r3223 X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 12:58:23 -0000 Author: emaste Date: Wed May 27 12:58:22 2015 New Revision: 283608 URL: https://svnweb.freebsd.org/changeset/base/283608 Log: Tag elftoolchain-r3223 Added: - copied from r283607, vendor/elftoolchain/dist/ Directory Properties: vendor/elftoolchain/elftoolchain-r3223/ (props changed) From owner-svn-src-all@FreeBSD.ORG Wed May 27 13:09:16 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id EB927D32; Wed, 27 May 2015 13:09:15 +0000 (UTC) (envelope-from bjkfbsd@gmail.com) Received: from mail-wi0-x236.google.com (mail-wi0-x236.google.com [IPv6:2a00:1450:400c:c05::236]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 94B6EC10; Wed, 27 May 2015 13:09:15 +0000 (UTC) (envelope-from bjkfbsd@gmail.com) Received: by wicmx19 with SMTP id mx19so110746053wic.0; Wed, 27 May 2015 06:09:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=juPsOCPv4MNfMtQdnZYsnEe/47+sESD04osWu3YLc0g=; b=V2NelC7p5QglhD1IovdkAu7BqghtzLzH/JHBonewWUyuCPXKoiSh6aMuWU2WEW42k1 uCbZ4xASGfroGWO1FuWKKUaQ0Qj4+WBQSh55QSuNiMJFgHVb2XnrrTIXRLsYI30KCUw3 mtfsw2C93meL3kUKHzHzrNHlXiwdjlv5VL8SIOBCPSfW4Tt71PQzuiRsgubgAmeuqbMW t2P8EZKFpanULgopWuVHtkfLoo5irKE1ubzYnObD2wvFCAXqQQdel3p4nmE71895ByQP klOT+Vqi/f1oSrNucI6I6EwVZ+T76bqvAwjPKbVp00Jmm2dSRrVNZ1QMR1lDx9FLpepD eAGg== MIME-Version: 1.0 X-Received: by 10.195.13.113 with SMTP id ex17mr47191623wjd.17.1432732154042; Wed, 27 May 2015 06:09:14 -0700 (PDT) Received: by 10.27.77.201 with HTTP; Wed, 27 May 2015 06:09:13 -0700 (PDT) In-Reply-To: <201505270922.t4R9MoZv065205@svn.freebsd.org> References: <201505270922.t4R9MoZv065205@svn.freebsd.org> Date: Wed, 27 May 2015 09:09:13 -0400 Message-ID: Subject: Re: svn commit: r283602 - in head/sys: cddl/contrib/opensolaris/uts/common/fs/zfs kern From: Benjamin Kaduk To: Konstantin Belousov Cc: "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" Content-Type: text/plain; charset=UTF-8 X-Content-Filtered-By: Mailman/MimeDel 2.1.20 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 13:09:16 -0000 On Wed, May 27, 2015 at 5:22 AM, Konstantin Belousov wrote: > Author: kib > Date: Wed May 27 09:22:50 2015 > New Revision: 283602 > URL: https://svnweb.freebsd.org/changeset/base/283602 > > Log: > Right now, dounmount() is called with unreferenced mount point. > Nothing stops a parallel unmount to suceed before the given call to > dounmount() checks and locks the covered vnode. Prevent dounmount() > from acting on the freed (although type-stable) memory by changing the > interface to require the mount point to be referenced. dounmount() > consumes the reference on return, regardless of the sucessfull or > erronous result. > Should __FreeBSD_version get bumped? -Ben From owner-svn-src-all@FreeBSD.ORG Wed May 27 13:23:03 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A6EB83C3; Wed, 27 May 2015 13:23:03 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from svn.freebsd.org (svn.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 94330A3; Wed, 27 May 2015 13:23:03 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RDN3Bx088768; Wed, 27 May 2015 13:23:03 GMT (envelope-from hselasky@FreeBSD.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RDN38U088767; Wed, 27 May 2015 13:23:03 GMT (envelope-from hselasky@FreeBSD.org) Message-Id: <201505271323.t4RDN38U088767@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: hselasky set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky Date: Wed, 27 May 2015 13:23:03 +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: r283609 - stable/10/sys/dev/sound/pci/hda X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 13:23:03 -0000 Author: hselasky Date: Wed May 27 13:23:02 2015 New Revision: 283609 URL: https://svnweb.freebsd.org/changeset/base/283609 Log: MFC r283064: Fix an off-by-one error by adding proper range checks when parsing the HDA association descriptors. This fixes a crash during device probe for some HDA PCI devices. Modified: stable/10/sys/dev/sound/pci/hda/hdaa.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/sound/pci/hda/hdaa.c ============================================================================== --- stable/10/sys/dev/sound/pci/hda/hdaa.c Wed May 27 12:58:22 2015 (r283608) +++ stable/10/sys/dev/sound/pci/hda/hdaa.c Wed May 27 13:23:02 2015 (r283609) @@ -3203,7 +3203,7 @@ hdaa_audio_as_parse(struct hdaa_devinfo /* Scan associations skipping as=0. */ cnt = 0; - for (j = 1; j < 16; j++) { + for (j = 1; j < 16 && cnt < max; j++) { first = 16; hpredir = 0; for (i = devinfo->startnode; i < devinfo->endnode; i++) { From owner-svn-src-all@FreeBSD.ORG Wed May 27 13:25:26 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D96D852E; Wed, 27 May 2015 13:25:26 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from svn.freebsd.org (svn.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 C659EC7; Wed, 27 May 2015 13:25:26 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RDPQdM089181; Wed, 27 May 2015 13:25:26 GMT (envelope-from hselasky@FreeBSD.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RDPQ5d089180; Wed, 27 May 2015 13:25:26 GMT (envelope-from hselasky@FreeBSD.org) Message-Id: <201505271325.t4RDPQ5d089180@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: hselasky set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky Date: Wed, 27 May 2015 13:25: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: r283610 - stable/9/sys/dev/sound/pci/hda X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 13:25:27 -0000 Author: hselasky Date: Wed May 27 13:25:26 2015 New Revision: 283610 URL: https://svnweb.freebsd.org/changeset/base/283610 Log: MFC r283064: Fix an off-by-one error by adding proper range checks when parsing the HDA association descriptors. This fixes a crash during device probe for some HDA PCI devices. Modified: stable/9/sys/dev/sound/pci/hda/hdaa.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/dev/ (props changed) Modified: stable/9/sys/dev/sound/pci/hda/hdaa.c ============================================================================== --- stable/9/sys/dev/sound/pci/hda/hdaa.c Wed May 27 13:23:02 2015 (r283609) +++ stable/9/sys/dev/sound/pci/hda/hdaa.c Wed May 27 13:25:26 2015 (r283610) @@ -2809,7 +2809,7 @@ hdaa_audio_as_parse(struct hdaa_devinfo /* Scan associations skipping as=0. */ cnt = 0; - for (j = 1; j < 16; j++) { + for (j = 1; j < 16 && cnt < max; j++) { first = 16; hpredir = 0; for (i = devinfo->startnode; i < devinfo->endnode; i++) { From owner-svn-src-all@FreeBSD.ORG Wed May 27 13:27:40 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id ABE9D699; Wed, 27 May 2015 13:27:40 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from svn.freebsd.org (svn.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 99404EA; Wed, 27 May 2015 13:27:40 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RDRe0b089718; Wed, 27 May 2015 13:27:40 GMT (envelope-from hselasky@FreeBSD.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RDRegN089717; Wed, 27 May 2015 13:27:40 GMT (envelope-from hselasky@FreeBSD.org) Message-Id: <201505271327.t4RDRegN089717@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: hselasky set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky Date: Wed, 27 May 2015 13:27:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r283611 - stable/8/sys/dev/sound/pci/hda X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 13:27:40 -0000 Author: hselasky Date: Wed May 27 13:27:39 2015 New Revision: 283611 URL: https://svnweb.freebsd.org/changeset/base/283611 Log: MFC r283064: Fix an off-by-one error by adding proper range checks when parsing the HDA association descriptors. This fixes a crash during device probe for some HDA PCI devices. Modified: stable/8/sys/dev/sound/pci/hda/hdaa.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/dev/ (props changed) stable/8/sys/dev/sound/ (props changed) stable/8/sys/dev/sound/pci/ (props changed) Modified: stable/8/sys/dev/sound/pci/hda/hdaa.c ============================================================================== --- stable/8/sys/dev/sound/pci/hda/hdaa.c Wed May 27 13:25:26 2015 (r283610) +++ stable/8/sys/dev/sound/pci/hda/hdaa.c Wed May 27 13:27:39 2015 (r283611) @@ -2811,7 +2811,7 @@ hdaa_audio_as_parse(struct hdaa_devinfo /* Scan associations skipping as=0. */ cnt = 0; - for (j = 1; j < 16; j++) { + for (j = 1; j < 16 && cnt < max; j++) { first = 16; hpredir = 0; for (i = devinfo->startnode; i < devinfo->endnode; i++) { From owner-svn-src-all@FreeBSD.ORG Wed May 27 13:42:29 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B8E60B19; Wed, 27 May 2015 13:42:29 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.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 99CD47BB; Wed, 27 May 2015 13:42:29 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RDgTP0099183; Wed, 27 May 2015 13:42:29 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RDgSUG099180; Wed, 27 May 2015 13:42:28 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201505271342.t4RDgSUG099180@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Wed, 27 May 2015 13:42:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283612 - in head/sys/ofed: drivers/net/mlx4 include/linux/mlx4 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 13:42:29 -0000 Author: glebius Date: Wed May 27 13:42:28 2015 New Revision: 283612 URL: https://svnweb.freebsd.org/changeset/base/283612 Log: 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: head/sys/ofed/drivers/net/mlx4/en_netdev.c head/sys/ofed/drivers/net/mlx4/port.c head/sys/ofed/include/linux/mlx4/device.h Modified: head/sys/ofed/drivers/net/mlx4/en_netdev.c ============================================================================== --- head/sys/ofed/drivers/net/mlx4/en_netdev.c Wed May 27 13:27:39 2015 (r283611) +++ head/sys/ofed/drivers/net/mlx4/en_netdev.c Wed May 27 13:42:28 2015 (r283612) @@ -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: head/sys/ofed/drivers/net/mlx4/port.c ============================================================================== --- head/sys/ofed/drivers/net/mlx4/port.c Wed May 27 13:27:39 2015 (r283611) +++ head/sys/ofed/drivers/net/mlx4/port.c Wed May 27 13:42:28 2015 (r283612) @@ -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: head/sys/ofed/include/linux/mlx4/device.h ============================================================================== --- head/sys/ofed/include/linux/mlx4/device.h Wed May 27 13:27:39 2015 (r283611) +++ head/sys/ofed/include/linux/mlx4/device.h Wed May 27 13:42:28 2015 (r283612) @@ -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-all@FreeBSD.ORG Wed May 27 13:53:16 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 19E6620C; Wed, 27 May 2015 13:53:16 +0000 (UTC) (envelope-from lidl@pix.net) Received: from hydra.pix.net (hydra.pix.net [IPv6:2001:470:e254::4]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mail.pix.net", Issuer "Pix.Com Technologies, LLC CA" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id B57B0A69; Wed, 27 May 2015 13:53:15 +0000 (UTC) (envelope-from lidl@pix.net) Received: from torb.pix.net (verizon.pix.net [71.178.232.3]) (authenticated bits=0) by hydra.pix.net (8.15.1/8.15.1) with ESMTPA id t4RDrDa2097549; Wed, 27 May 2015 09:53:13 -0400 (EDT) (envelope-from lidl@pix.net) X-Authentication-Warning: hydra.pix.net: Host verizon.pix.net [71.178.232.3] claimed to be torb.pix.net Message-ID: <5565CC49.1020800@pix.net> Date: Wed, 27 May 2015 09:53:13 -0400 From: Kurt Lidl User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Bruce Evans , Eitan Adler CC: Adrian Chadd , "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" Subject: Re: svn commit: r281103 - head/sys/amd64/amd64 References: <201504050518.t355IFVJ001786@svn.freebsd.org> <20150405163305.A2515@besplex.bde.org> <20150406152653.K1066@besplex.bde.org> In-Reply-To: <20150406152653.K1066@besplex.bde.org> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 13:53:16 -0000 On 4/6/15 1:42 AM, Bruce Evans wrote: > On Mon, 6 Apr 2015, Eitan Adler wrote: > >> + a few people interested in the diff >> >> On 5 April 2015 at 02:55, Bruce Evans wrote: >>> On Sun, 5 Apr 2015, Eitan Adler wrote: >> >> I did not confirm the performance impact, but the submitter and others >> indicated they saw a difference. >> >> Do you have specific data that shows that there was an improvement? > > Only micro-benchmark output that indicates little difference. This > is probably very MD (depending on write combining hardware), so you > might only see a difference on some systems. > > I also have micro-benchmark output for network packets/second that > shows 10% differences for the change of adding 1 byte of padding > in code that is never executed. This seems to be due to different > cache misses. To eliminate differences from this (except ones > caused by actually running different code), create a reference > version by padding the functions or data to be changed so that > the change doesn't affect the address of anything except the > internals of the changed parts. > > I might try a makeworld run to see if changing the non-temporal > accesses in pagecopy and pagezero to cached. I ran a few (total of 12) buildworld runs after this discussion. I finally got around to posting the results to the original bug. The data is here: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=199151#c3 -Kurt From owner-svn-src-all@FreeBSD.ORG Wed May 27 13:54:39 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 121E33BE; Wed, 27 May 2015 13:54:39 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.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 F40A1A82; Wed, 27 May 2015 13:54:38 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RDsc0H005065; Wed, 27 May 2015 13:54:38 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RDscm8005063; Wed, 27 May 2015 13:54:38 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <201505271354.t4RDscm8005063@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Wed, 27 May 2015 13:54:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283613 - head/usr.sbin/pmcstat X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 13:54:39 -0000 Author: jhb Date: Wed May 27 13:54:37 2015 New Revision: 283613 URL: https://svnweb.freebsd.org/changeset/base/283613 Log: Use the cpuset API more consistently: - Fetch the root set from cpuset_getaffinity() instead of assuming all CPUs from 0 to hw.ncpu are the root set. - Use CPU_SETSIZE and CPU_FFS. - The original notion of halted CPUs the manpage and code refers to is gone. Use the term "available" instead. Differential Revision: https://reviews.freebsd.org/D2491 Reviewed by: emaste MFC after: 1 week Modified: head/usr.sbin/pmcstat/pmcstat.8 head/usr.sbin/pmcstat/pmcstat.c Modified: head/usr.sbin/pmcstat/pmcstat.8 ============================================================================== --- head/usr.sbin/pmcstat/pmcstat.8 Wed May 27 13:42:28 2015 (r283612) +++ head/usr.sbin/pmcstat/pmcstat.8 Wed May 27 13:54:37 2015 (r283613) @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 8, 2015 +.Dd May 27, 2015 .Dt PMCSTAT 8 .Os .Sh NAME @@ -246,8 +246,8 @@ Argument .Ar cpu-spec is a comma separated list of CPU numbers, or the literal .Sq * -denoting all unhalted CPUs. -The default is to allocate system mode PMCs on all unhalted +denoting all available CPUs. +The default is to allocate system mode PMCs on all available CPUs. .It Fl d Toggle between process mode PMCs measuring events for the target Modified: head/usr.sbin/pmcstat/pmcstat.c ============================================================================== --- head/usr.sbin/pmcstat/pmcstat.c Wed May 27 13:42:28 2015 (r283612) +++ head/usr.sbin/pmcstat/pmcstat.c Wed May 27 13:54:37 2015 (r283613) @@ -116,11 +116,10 @@ struct pmcstat_args args; static void pmcstat_clone_event_descriptor(struct pmcstat_ev *ev, const cpuset_t *cpumask) { - int cpu, mcpu; + int cpu; struct pmcstat_ev *ev_clone; - mcpu = sizeof(*cpumask) * NBBY; - for (cpu = 0; cpu < mcpu; cpu++) { + for (cpu = 0; cpu < CPU_SETSIZE; cpu++) { if (!CPU_ISSET(cpu, cpumask)) continue; @@ -161,6 +160,7 @@ pmcstat_get_cpumask(const char *cpuspec, CPU_SET(cpu, cpumask); s = end + strspn(end, ", \t"); } while (*s); + assert(!CPU_EMPTY(cpumask)); } void @@ -550,10 +550,10 @@ pmcstat_topexit(void) int main(int argc, char **argv) { - cpuset_t cpumask; + cpuset_t cpumask, rootmask; double interval; double duration; - int hcpu, option, npmc, ncpu; + int option, npmc; int c, check_driver_stats, current_sampling_count; int do_callchain, do_descendants, do_logproccsw, do_logprocexit; int do_print, do_read; @@ -618,14 +618,13 @@ main(int argc, char **argv) err(EX_OSERR, "ERROR: Cannot determine path of running kernel"); /* - * The initial CPU mask specifies all non-halted CPUS in the - * system. + * The initial CPU mask specifies the root mask of this process + * which is usually all CPUs in the system. */ - len = sizeof(int); - if (sysctlbyname("hw.ncpu", &ncpu, &len, NULL, 0) < 0) - err(EX_OSERR, "ERROR: Cannot determine the number of CPUs"); - for (hcpu = 0; hcpu < ncpu; hcpu++) - CPU_SET(hcpu, &cpumask); + if (cpuset_getaffinity(CPU_LEVEL_ROOT, CPU_WHICH_PID, -1, + sizeof(rootmask), &rootmask) == -1) + err(EX_OSERR, "ERROR: Cannot determine the root set of CPUs"); + CPU_COPY(&rootmask, &cpumask); while ((option = getopt(argc, argv, "CD:EF:G:M:NO:P:R:S:TWa:c:df:gk:l:m:n:o:p:qr:s:t:vw:z:")) != -1) @@ -642,11 +641,9 @@ main(int argc, char **argv) break; case 'c': /* CPU */ - - if (optarg[0] == '*' && optarg[1] == '\0') { - for (hcpu = 0; hcpu < ncpu; hcpu++) - CPU_SET(hcpu, &cpumask); - } else + if (optarg[0] == '*' && optarg[1] == '\0') + CPU_COPY(&rootmask, &cpumask); + else pmcstat_get_cpumask(optarg, &cpumask); args.pa_flags |= FLAGS_HAS_CPUMASK; @@ -771,13 +768,9 @@ main(int argc, char **argv) else ev->ev_count = -1; - if (option == 'S' || option == 's') { - hcpu = sizeof(cpumask) * NBBY; - for (hcpu--; hcpu >= 0; hcpu--) - if (CPU_ISSET(hcpu, &cpumask)) - break; - ev->ev_cpu = hcpu; - } else + if (option == 'S' || option == 's') + ev->ev_cpu = CPU_FFS(&cpumask); + else ev->ev_cpu = PMC_CPU_ANY; ev->ev_flags = 0; @@ -804,11 +797,9 @@ main(int argc, char **argv) STAILQ_INSERT_TAIL(&args.pa_events, ev, ev_next); if (option == 's' || option == 'S') { - hcpu = CPU_ISSET(ev->ev_cpu, &cpumask); CPU_CLR(ev->ev_cpu, &cpumask); pmcstat_clone_event_descriptor(ev, &cpumask); - if (hcpu != 0) - CPU_SET(ev->ev_cpu, &cpumask); + CPU_SET(ev->ev_cpu, &cpumask); } break; From owner-svn-src-all@FreeBSD.ORG Wed May 27 14:05:49 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3265E6E5; Wed, 27 May 2015 14:05:49 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.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 1E037D13; Wed, 27 May 2015 14:05:49 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RE5mcI010414; Wed, 27 May 2015 14:05:48 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RE5kVO010404; Wed, 27 May 2015 14:05:46 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201505271405.t4RE5kVO010404@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Wed, 27 May 2015 14:05:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283614 - head/sys/net80211 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 14:05:49 -0000 Author: glebius Date: Wed May 27 14:05:46 2015 New Revision: 283614 URL: https://svnweb.freebsd.org/changeset/base/283614 Log: Move counter.h include into ieee80211_freebsd.h. Should fix build. Submitted by: Zilvinas Valinskas Modified: head/sys/net80211/ieee80211_crypto.c head/sys/net80211/ieee80211_crypto_ccmp.c head/sys/net80211/ieee80211_crypto_none.c head/sys/net80211/ieee80211_crypto_tkip.c head/sys/net80211/ieee80211_crypto_wep.c head/sys/net80211/ieee80211_freebsd.h head/sys/net80211/ieee80211_hwmp.c head/sys/net80211/ieee80211_ratectl_none.c Modified: head/sys/net80211/ieee80211_crypto.c ============================================================================== --- head/sys/net80211/ieee80211_crypto.c Wed May 27 13:54:37 2015 (r283613) +++ head/sys/net80211/ieee80211_crypto.c Wed May 27 14:05:46 2015 (r283614) @@ -33,8 +33,6 @@ __FBSDID("$FreeBSD$"); #include "opt_wlan.h" #include -#include -#include #include #include #include Modified: head/sys/net80211/ieee80211_crypto_ccmp.c ============================================================================== --- head/sys/net80211/ieee80211_crypto_ccmp.c Wed May 27 13:54:37 2015 (r283613) +++ head/sys/net80211/ieee80211_crypto_ccmp.c Wed May 27 14:05:46 2015 (r283614) @@ -37,7 +37,6 @@ __FBSDID("$FreeBSD$"); #include #include -#include #include #include #include Modified: head/sys/net80211/ieee80211_crypto_none.c ============================================================================== --- head/sys/net80211/ieee80211_crypto_none.c Wed May 27 13:54:37 2015 (r283613) +++ head/sys/net80211/ieee80211_crypto_none.c Wed May 27 14:05:46 2015 (r283614) @@ -32,9 +32,8 @@ __FBSDID("$FreeBSD$"); #include "opt_wlan.h" #include -#include -#include #include +#include #include #include Modified: head/sys/net80211/ieee80211_crypto_tkip.c ============================================================================== --- head/sys/net80211/ieee80211_crypto_tkip.c Wed May 27 13:54:37 2015 (r283613) +++ head/sys/net80211/ieee80211_crypto_tkip.c Wed May 27 14:05:46 2015 (r283614) @@ -37,7 +37,6 @@ __FBSDID("$FreeBSD$"); #include #include -#include #include #include #include Modified: head/sys/net80211/ieee80211_crypto_wep.c ============================================================================== --- head/sys/net80211/ieee80211_crypto_wep.c Wed May 27 13:54:37 2015 (r283613) +++ head/sys/net80211/ieee80211_crypto_wep.c Wed May 27 14:05:46 2015 (r283614) @@ -33,7 +33,6 @@ __FBSDID("$FreeBSD$"); #include #include -#include #include #include #include Modified: head/sys/net80211/ieee80211_freebsd.h ============================================================================== --- head/sys/net80211/ieee80211_freebsd.h Wed May 27 13:54:37 2015 (r283613) +++ head/sys/net80211/ieee80211_freebsd.h Wed May 27 14:05:46 2015 (r283614) @@ -28,7 +28,9 @@ #define _NET80211_IEEE80211_FREEBSD_H_ #ifdef _KERNEL -#include +#include +#include +#include #include #include #include Modified: head/sys/net80211/ieee80211_hwmp.c ============================================================================== --- head/sys/net80211/ieee80211_hwmp.c Wed May 27 13:54:37 2015 (r283613) +++ head/sys/net80211/ieee80211_hwmp.c Wed May 27 14:05:46 2015 (r283614) @@ -41,7 +41,6 @@ __FBSDID("$FreeBSD$"); #include #include -#include #include #include #include Modified: head/sys/net80211/ieee80211_ratectl_none.c ============================================================================== --- head/sys/net80211/ieee80211_ratectl_none.c Wed May 27 13:54:37 2015 (r283613) +++ head/sys/net80211/ieee80211_ratectl_none.c Wed May 27 14:05:46 2015 (r283614) @@ -30,7 +30,6 @@ __FBSDID("$FreeBSD$"); #include #include -#include #include #include #include From owner-svn-src-all@FreeBSD.ORG Wed May 27 14:28:22 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 6CEFC3E4; Wed, 27 May 2015 14:28:22 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from svn.freebsd.org (svn.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 57D9634E; Wed, 27 May 2015 14:28:22 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RESMeO021578; Wed, 27 May 2015 14:28:22 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RESKUI021562; Wed, 27 May 2015 14:28:20 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201505271428.t4RESKUI021562@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Wed, 27 May 2015 14:28:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283616 - in head: contrib/elftoolchain/common contrib/elftoolchain/elfcopy contrib/elftoolchain/libdwarf contrib/elftoolchain/libelftc contrib/elftoolchain/readelf lib/libelftc X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 14:28:22 -0000 Author: emaste Date: Wed May 27 14:28:19 2015 New Revision: 283616 URL: https://svnweb.freebsd.org/changeset/base/283616 Log: Update to ELF Tool Chain r3223 Highlights (upstream revisions): - Fix SHT_GROUP handling in elfcopy/strip (3206 3220 3221) - Misc elfcopy / strip bug fixes (3215 3216 3217) - Many C++ demangler improvements (3199 3200 3201 3202 3203 3204 3205 3208 3210 3211 3212) - Improve GNU binutils compatibility in elfcopy / strip (3213 3214) - Add -g option to readelf(1): dump contents of section groups (3219) - Add EM_IAMCU 32-bit Intel MCU (3198) Also add a compat #define for building with older FreeBSD ELF headers. The GRP_COMDAT flag was added to elf_common.h in r283110, but it's not available during the bootstrap build. It is also convenient to be able to build on older hosts. Thanks to antoine@ for tracking down issues through multiple exp-runs and to kaiw@ for fixing. PR: 198611 (exp-run), 200350 Sponsored by: The FreeBSD Foundation Modified: head/contrib/elftoolchain/common/_elftc.h head/contrib/elftoolchain/common/elfdefinitions.h head/contrib/elftoolchain/elfcopy/elfcopy.h head/contrib/elftoolchain/elfcopy/main.c head/contrib/elftoolchain/elfcopy/sections.c head/contrib/elftoolchain/elfcopy/symbols.c head/contrib/elftoolchain/libdwarf/libdwarf_reloc.c head/contrib/elftoolchain/libelftc/libelftc_dem_gnu3.c head/contrib/elftoolchain/libelftc/os.Linux.mk head/contrib/elftoolchain/readelf/readelf.1 head/contrib/elftoolchain/readelf/readelf.c head/lib/libelftc/elftc_version.c Directory Properties: head/contrib/elftoolchain/ (props changed) Modified: head/contrib/elftoolchain/common/_elftc.h ============================================================================== --- head/contrib/elftoolchain/common/_elftc.h Wed May 27 14:16:42 2015 (r283615) +++ head/contrib/elftoolchain/common/_elftc.h Wed May 27 14:28:19 2015 (r283616) @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: _elftc.h 3175 2015-03-27 17:21:24Z emaste $ + * $Id: _elftc.h 3209 2015-05-17 13:40:46Z kaiwang27 $ */ /** @@ -342,12 +342,13 @@ struct name { \ #if defined(__GLIBC__) || defined(__linux__) - +#ifndef _GNU_SOURCE /* * GLIBC based systems have a global 'char *' pointer referencing * the executable's name. */ extern const char *program_invocation_short_name; +#endif /* !_GNU_SOURCE */ #define ELFTC_GETPROGNAME() program_invocation_short_name Modified: head/contrib/elftoolchain/common/elfdefinitions.h ============================================================================== --- head/contrib/elftoolchain/common/elfdefinitions.h Wed May 27 14:16:42 2015 (r283615) +++ head/contrib/elftoolchain/common/elfdefinitions.h Wed May 27 14:28:19 2015 (r283616) @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: elfdefinitions.h 3178 2015-03-30 18:29:13Z emaste $ + * $Id: elfdefinitions.h 3198 2015-05-14 18:36:19Z emaste $ */ /* @@ -565,6 +565,7 @@ _ELF_DEFINE_EM(EM_SPARC, 2, " _ELF_DEFINE_EM(EM_386, 3, "Intel 80386") \ _ELF_DEFINE_EM(EM_68K, 4, "Motorola 68000") \ _ELF_DEFINE_EM(EM_88K, 5, "Motorola 88000") \ +_ELF_DEFINE_EM(EM_IAMCU, 6, "Intel MCU") \ _ELF_DEFINE_EM(EM_860, 7, "Intel 80860") \ _ELF_DEFINE_EM(EM_MIPS, 8, "MIPS I Architecture") \ _ELF_DEFINE_EM(EM_S370, 9, "IBM System/370 Processor") \ Modified: head/contrib/elftoolchain/elfcopy/elfcopy.h ============================================================================== --- head/contrib/elftoolchain/elfcopy/elfcopy.h Wed May 27 14:16:42 2015 (r283615) +++ head/contrib/elftoolchain/elfcopy/elfcopy.h Wed May 27 14:28:19 2015 (r283616) @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: elfcopy.h 3173 2015-03-27 16:46:13Z emaste $ + * $Id: elfcopy.h 3221 2015-05-24 23:42:43Z kaiwang27 $ */ #include @@ -237,6 +237,7 @@ struct elfcopy { uint64_t *secndx; /* section index map. */ uint64_t *symndx; /* symbol index map. */ unsigned char *v_rel; /* symbols needed by relocation. */ + unsigned char *v_grp; /* symbols refered by section group. */ unsigned char *v_secsym; /* sections with section symbol. */ STAILQ_HEAD(, segment) v_seg; /* list of segments. */ STAILQ_HEAD(, sec_action) v_sac;/* list of section operations. */ Modified: head/contrib/elftoolchain/elfcopy/main.c ============================================================================== --- head/contrib/elftoolchain/elfcopy/main.c Wed May 27 14:16:42 2015 (r283615) +++ head/contrib/elftoolchain/elfcopy/main.c Wed May 27 14:28:19 2015 (r283616) @@ -39,7 +39,7 @@ #include "elfcopy.h" -ELFTC_VCSID("$Id: main.c 3174 2015-03-27 17:13:41Z emaste $"); +ELFTC_VCSID("$Id: main.c 3216 2015-05-23 21:16:36Z kaiwang27 $"); enum options { @@ -404,8 +404,19 @@ create_elf(struct elfcopy *ecp) * Insert SHDR table into the internal section list as a "pseudo" * section, so later it will get sorted and resynced just as "normal" * sections. + * + * Under FreeBSD, Binutils objcopy always put the section header + * at the end of all the sections. We want to do the same here. + * + * However, note that the behaviour is still different with Binutils: + * elfcopy checks the FreeBSD OSABI tag to tell whether it needs to + * move the section headers, while Binutils is probably configured + * this way when it's compiled on FreeBSD. */ - shtab = insert_shtab(ecp, 0); + if (oeh.e_ident[EI_OSABI] == ELFOSABI_FREEBSD) + shtab = insert_shtab(ecp, 1); + else + shtab = insert_shtab(ecp, 0); /* * Resync section offsets in the output object. This is needed @@ -485,6 +496,11 @@ free_elf(struct elfcopy *ecp) free(sec); } } + + if (ecp->secndx != NULL) { + free(ecp->secndx); + ecp->secndx = NULL; + } } /* Create a temporary file. */ Modified: head/contrib/elftoolchain/elfcopy/sections.c ============================================================================== --- head/contrib/elftoolchain/elfcopy/sections.c Wed May 27 14:16:42 2015 (r283615) +++ head/contrib/elftoolchain/elfcopy/sections.c Wed May 27 14:28:19 2015 (r283616) @@ -34,7 +34,7 @@ #include "elfcopy.h" -ELFTC_VCSID("$Id: sections.c 3185 2015-04-11 08:56:34Z kaiwang27 $"); +ELFTC_VCSID("$Id: sections.c 3220 2015-05-24 23:42:39Z kaiwang27 $"); static void add_gnu_debuglink(struct elfcopy *ecp); static uint32_t calc_crc32(const char *p, size_t len, uint32_t crc); @@ -56,6 +56,7 @@ static void print_data(const char *d, si static void print_section(struct section *s); static void *read_section(struct section *s, size_t *size); static void update_reloc(struct elfcopy *ecp, struct section *s); +static void update_section_group(struct elfcopy *ecp, struct section *s); int is_remove_section(struct elfcopy *ecp, const char *name) @@ -552,6 +553,14 @@ copy_content(struct elfcopy *ecp) (s->type == SHT_REL || s->type == SHT_RELA)) filter_reloc(ecp, s); + /* + * The section indices in the SHT_GROUP section needs + * to be updated since we might have stripped some + * sections and changed section numbering. + */ + if (s->type == SHT_GROUP) + update_section_group(ecp, s); + if (is_modify_section(ecp, s->name)) modify_section(ecp, s); @@ -571,6 +580,71 @@ copy_content(struct elfcopy *ecp) } } + +/* + * Update section group section. The section indices in the SHT_GROUP + * section need update after section numbering changed. + */ +static void +update_section_group(struct elfcopy *ecp, struct section *s) +{ + GElf_Shdr ish; + Elf_Data *id; + uint32_t *ws, *wd; + uint64_t n; + size_t ishnum; + int i, j; + + if (!elf_getshnum(ecp->ein, &ishnum)) + errx(EXIT_FAILURE, "elf_getshnum failed: %s", + elf_errmsg(-1)); + + if (gelf_getshdr(s->is, &ish) == NULL) + errx(EXIT_FAILURE, "gelf_getehdr() failed: %s", + elf_errmsg(-1)); + + if ((id = elf_getdata(s->is, NULL)) == NULL) + errx(EXIT_FAILURE, "elf_getdata() failed: %s", + elf_errmsg(-1)); + + if (ish.sh_size == 0) + return; + + if (ish.sh_entsize == 0) + ish.sh_entsize = 4; + + ws = id->d_buf; + + /* We only support COMDAT section. */ +#ifndef GRP_COMDAT +#define GRP_COMDAT 0x1 +#endif + if ((*ws & GRP_COMDAT) == 0) + return; + + if ((s->buf = malloc(ish.sh_size)) == NULL) + err(EXIT_FAILURE, "malloc failed"); + + s->sz = ish.sh_size; + + wd = s->buf; + + /* Copy the flag word as-is. */ + *wd = *ws; + + /* Update the section indices. */ + n = ish.sh_size / ish.sh_entsize; + for(i = 1, j = 1; (uint64_t)i < n; i++) { + if (ws[i] != SHN_UNDEF && ws[i] < ishnum && + ecp->secndx[ws[i]] != 0) + wd[j++] = ecp->secndx[ws[i]]; + else + s->sz -= 4; + } + + s->nocopy = 1; +} + /* * Filter relocation entries, only keep those entries whose * symbol is in the keep list. @@ -1028,8 +1102,11 @@ copy_shdr(struct elfcopy *ecp, struct se osh.sh_flags |= SHF_WRITE; if (sec_flags & SF_CODE) osh.sh_flags |= SHF_EXECINSTR; - } else + } else { osh.sh_flags = ish.sh_flags; + if (ish.sh_type == SHT_REL || ish.sh_type == SHT_RELA) + osh.sh_flags |= SHF_INFO_LINK; + } } if (name == NULL) Modified: head/contrib/elftoolchain/elfcopy/symbols.c ============================================================================== --- head/contrib/elftoolchain/elfcopy/symbols.c Wed May 27 14:16:42 2015 (r283615) +++ head/contrib/elftoolchain/elfcopy/symbols.c Wed May 27 14:28:19 2015 (r283616) @@ -33,7 +33,7 @@ #include "elfcopy.h" -ELFTC_VCSID("$Id: symbols.c 3191 2015-05-04 17:07:01Z jkoshy $"); +ELFTC_VCSID("$Id: symbols.c 3222 2015-05-24 23:47:23Z kaiwang27 $"); /* Symbol table buffer structure. */ struct symbuf { @@ -77,7 +77,8 @@ static int is_weak_symbol(unsigned char static int lookup_exact_string(hash_head *hash, const char *buf, const char *s); static int generate_symbols(struct elfcopy *ecp); -static void mark_symbols(struct elfcopy *ecp, size_t sc); +static void mark_reloc_symbols(struct elfcopy *ecp, size_t sc); +static void mark_section_group_symbols(struct elfcopy *ecp, size_t sc); static int match_wildcard(const char *name, const char *pattern); uint32_t str_hash(const char *s); @@ -160,6 +161,10 @@ is_needed_symbol(struct elfcopy *ecp, in if (BIT_ISSET(ecp->v_rel, i)) return (1); + /* Symbols refered by COMDAT sections are needed. */ + if (BIT_ISSET(ecp->v_grp, i)) + return (1); + /* * For relocatable files (.o files), global and weak symbols * are needed. @@ -207,7 +212,10 @@ is_remove_symbol(struct elfcopy *ecp, si return (1); if (ecp->v_rel == NULL) - mark_symbols(ecp, sc); + mark_reloc_symbols(ecp, sc); + + if (ecp->v_grp == NULL) + mark_section_group_symbols(ecp, sc); if (is_needed_symbol(ecp, i, s)) return (0); @@ -233,7 +241,7 @@ is_remove_symbol(struct elfcopy *ecp, si * Mark symbols refered by relocation entries. */ static void -mark_symbols(struct elfcopy *ecp, size_t sc) +mark_reloc_symbols(struct elfcopy *ecp, size_t sc) { const char *name; Elf_Data *d; @@ -311,6 +319,49 @@ mark_symbols(struct elfcopy *ecp, size_t elf_errmsg(elferr)); } +static void +mark_section_group_symbols(struct elfcopy *ecp, size_t sc) +{ + const char *name; + Elf_Scn *s; + GElf_Shdr sh; + size_t indx; + int elferr; + + ecp->v_grp = calloc((sc + 7) / 8, 1); + if (ecp->v_grp == NULL) + err(EXIT_FAILURE, "calloc failed"); + + if (elf_getshstrndx(ecp->ein, &indx) == 0) + errx(EXIT_FAILURE, "elf_getshstrndx failed: %s", + elf_errmsg(-1)); + + s = NULL; + while ((s = elf_nextscn(ecp->ein, s)) != NULL) { + if (gelf_getshdr(s, &sh) != &sh) + errx(EXIT_FAILURE, "elf_getshdr failed: %s", + elf_errmsg(-1)); + + if (sh.sh_type != SHT_GROUP) + continue; + + if ((name = elf_strptr(ecp->ein, indx, sh.sh_name)) == NULL) + errx(EXIT_FAILURE, "elf_strptr failed: %s", + elf_errmsg(-1)); + if (is_remove_section(ecp, name)) + continue; + + if (sh.sh_info > 0 && sh.sh_info < sc) + BIT_SET(ecp->v_grp, sh.sh_info); + else if (sh.sh_info != 0) + warnx("invalid symbox index"); + } + elferr = elf_errno(); + if (elferr != 0) + errx(EXIT_FAILURE, "elf_nextscn failed: %s", + elf_errmsg(elferr)); +} + static int generate_symbols(struct elfcopy *ecp) { @@ -351,6 +402,8 @@ generate_symbols(struct elfcopy *ecp) ecp->symtab->buf = sy_buf; ecp->strtab->buf = st_buf; + gsym = NULL; + /* * Create bit vector v_secsym, which is used to mark sections * that already have corresponding STT_SECTION symbols. @@ -384,7 +437,7 @@ generate_symbols(struct elfcopy *ecp) /* Symbol table should exist if this function is called. */ if (symndx == 0) { warnx("can't find .strtab section"); - return (0); + goto clean; } /* Locate .symtab of input object. */ @@ -413,7 +466,6 @@ generate_symbols(struct elfcopy *ecp) * output object, it is used by update_reloc() later to update * relocation information. */ - gsym = NULL; sc = ish.sh_size / ish.sh_entsize; if (sc > 0) { ecp->symndx = calloc(sc, sizeof(*ecp->symndx)); @@ -427,7 +479,7 @@ generate_symbols(struct elfcopy *ecp) if (elferr != 0) errx(EXIT_FAILURE, "elf_getdata failed: %s", elf_errmsg(elferr)); - return (0); + goto clean; } } else return (0); @@ -523,7 +575,7 @@ generate_symbols(struct elfcopy *ecp) * check if that only local symbol is the reserved symbol. */ if (sy_buf->nls <= 1 && sy_buf->ngs == 0) - return (0); + goto clean; /* * Create STT_SECTION symbols for sections that do not already @@ -550,6 +602,7 @@ generate_symbols(struct elfcopy *ecp) sym.st_value = s->vma; sym.st_size = 0; sym.st_info = GELF_ST_INFO(STB_LOCAL, STT_SECTION); + sym.st_other = STV_DEFAULT; /* * Don't let add_to_symtab() touch sym.st_shndx. * In this case, we know the index already. @@ -583,6 +636,12 @@ generate_symbols(struct elfcopy *ecp) } return (1); + +clean: + free(gsym); + free_symtab(ecp); + + return (0); } void @@ -624,7 +683,9 @@ create_symtab(struct elfcopy *ecp) if (((ecp->flags & SYMTAB_INTACT) == 0) && !generate_symbols(ecp)) { TAILQ_REMOVE(&ecp->v_sec, ecp->symtab, sec_list); TAILQ_REMOVE(&ecp->v_sec, ecp->strtab, sec_list); + free(ecp->symtab->buf); free(ecp->symtab); + free(ecp->strtab->buf); free(ecp->strtab); ecp->symtab = NULL; ecp->strtab = NULL; @@ -697,6 +758,23 @@ free_symtab(struct elfcopy *ecp) } } } + + if (ecp->symndx != NULL) { + free(ecp->symndx); + ecp->symndx = NULL; + } + if (ecp->v_rel != NULL) { + free(ecp->v_rel); + ecp->v_rel = NULL; + } + if (ecp->v_grp != NULL) { + free(ecp->v_grp); + ecp->v_grp = NULL; + } + if (ecp->v_secsym != NULL) { + free(ecp->v_secsym); + ecp->v_secsym = NULL; + } } void Modified: head/contrib/elftoolchain/libdwarf/libdwarf_reloc.c ============================================================================== --- head/contrib/elftoolchain/libdwarf/libdwarf_reloc.c Wed May 27 14:16:42 2015 (r283615) +++ head/contrib/elftoolchain/libdwarf/libdwarf_reloc.c Wed May 27 14:28:19 2015 (r283616) @@ -26,7 +26,7 @@ #include "_libdwarf.h" -ELFTC_VCSID("$Id: libdwarf_reloc.c 3149 2015-02-15 19:00:06Z emaste $"); +ELFTC_VCSID("$Id: libdwarf_reloc.c 3198 2015-05-14 18:36:19Z emaste $"); Dwarf_Unsigned _dwarf_get_reloc_type(Dwarf_P_Debug dbg, int is64) @@ -75,6 +75,7 @@ _dwarf_get_reloc_size(Dwarf_Debug dbg, D return (4); break; case EM_386: + case EM_IAMCU: if (rel_type == R_386_32) return (4); break; Modified: head/contrib/elftoolchain/libelftc/libelftc_dem_gnu3.c ============================================================================== --- head/contrib/elftoolchain/libelftc/libelftc_dem_gnu3.c Wed May 27 14:16:42 2015 (r283615) +++ head/contrib/elftoolchain/libelftc/libelftc_dem_gnu3.c Wed May 27 14:28:19 2015 (r283616) @@ -36,7 +36,7 @@ #include "_libelftc.h" -ELFTC_VCSID("$Id: libelftc_dem_gnu3.c 3194 2015-05-05 17:55:16Z emaste $"); +ELFTC_VCSID("$Id: libelftc_dem_gnu3.c 3212 2015-05-17 13:40:55Z kaiwang27 $"); /** * @file cpp_demangle.c @@ -50,7 +50,7 @@ ELFTC_VCSID("$Id: libelftc_dem_gnu3.c 31 enum type_qualifier { TYPE_PTR, TYPE_REF, TYPE_CMX, TYPE_IMG, TYPE_EXT, TYPE_RST, TYPE_VAT, - TYPE_CST + TYPE_CST, TYPE_VEC }; struct vector_type_qualifier { @@ -84,6 +84,7 @@ struct cpp_demangle_data { int func_type; const char *cur; /* current mangled name ptr */ const char *last_sname; /* last source name */ + int push_head; }; #define CPP_DEMANGLE_TRY_LIMIT 128 @@ -112,6 +113,8 @@ static int cpp_demangle_read_array(struc static int cpp_demangle_read_encoding(struct cpp_demangle_data *); static int cpp_demangle_read_expr_primary(struct cpp_demangle_data *); static int cpp_demangle_read_expression(struct cpp_demangle_data *); +static int cpp_demangle_read_expression_flat(struct cpp_demangle_data *, + char **); static int cpp_demangle_read_expression_binary(struct cpp_demangle_data *, const char *, size_t); static int cpp_demangle_read_expression_unary(struct cpp_demangle_data *, @@ -123,8 +126,12 @@ static int cpp_demangle_read_function(st static int cpp_demangle_local_source_name(struct cpp_demangle_data *ddata); static int cpp_demangle_read_local_name(struct cpp_demangle_data *); static int cpp_demangle_read_name(struct cpp_demangle_data *); +static int cpp_demangle_read_name_flat(struct cpp_demangle_data *, + char**); static int cpp_demangle_read_nested_name(struct cpp_demangle_data *); static int cpp_demangle_read_number(struct cpp_demangle_data *, long *); +static int cpp_demangle_read_number_as_string(struct cpp_demangle_data *, + char **); static int cpp_demangle_read_nv_offset(struct cpp_demangle_data *); static int cpp_demangle_read_offset(struct cpp_demangle_data *); static int cpp_demangle_read_offset_number(struct cpp_demangle_data *); @@ -138,6 +145,8 @@ static int cpp_demangle_read_tmpl_arg(st static int cpp_demangle_read_tmpl_args(struct cpp_demangle_data *); static int cpp_demangle_read_tmpl_param(struct cpp_demangle_data *); static int cpp_demangle_read_type(struct cpp_demangle_data *, int); +static int cpp_demangle_read_type_flat(struct cpp_demangle_data *, + char **); static int cpp_demangle_read_uqname(struct cpp_demangle_data *); static int cpp_demangle_read_v_offset(struct cpp_demangle_data *); static char *decode_fp_to_double(const char *, size_t); @@ -156,8 +165,6 @@ static int vector_type_qualifier_init(st static int vector_type_qualifier_push(struct vector_type_qualifier *, enum type_qualifier); -static int cpp_demangle_gnu3_push_head; - /** * @brief Decode the input string by IA-64 C++ ABI style. * @@ -190,7 +197,6 @@ cpp_demangle_gnu3(const char *org) if (!cpp_demangle_data_init(&ddata, org + 2)) return (NULL); - cpp_demangle_gnu3_push_head = 0; rtn = NULL; if (!cpp_demangle_read_encoding(&ddata)) @@ -277,6 +283,7 @@ cpp_demangle_data_init(struct cpp_demang d->func_type = 0; d->cur = cur; d->last_sname = NULL; + d->push_head = 0; return (1); @@ -309,7 +316,6 @@ cpp_demangle_push_fp(struct cpp_demangle fp = ddata->cur; while (*ddata->cur != 'E') ++ddata->cur; - ++ddata->cur; if ((f = decoder(fp, ddata->cur - fp)) == NULL) return (0); @@ -320,6 +326,8 @@ cpp_demangle_push_fp(struct cpp_demangle free(f); + ++ddata->cur; + return (rtn); } @@ -331,7 +339,7 @@ cpp_demangle_push_str(struct cpp_demangl if (ddata == NULL || str == NULL || len == 0) return (0); - if (cpp_demangle_gnu3_push_head > 0) + if (ddata->push_head > 0) return (vector_str_push(&ddata->output_tmp, str, len)); return (vector_str_push(&ddata->output, str, len)); @@ -403,7 +411,8 @@ cpp_demangle_push_type_qualifier(struct if (type_str != NULL) { if (!vector_str_push(&subst_v, "*", 1)) goto clean; - if (!cpp_demangle_push_subst_v(ddata, &subst_v)) + if (!cpp_demangle_push_subst_v(ddata, + &subst_v)) goto clean; } break; @@ -414,7 +423,8 @@ cpp_demangle_push_type_qualifier(struct if (type_str != NULL) { if (!vector_str_push(&subst_v, "&", 1)) goto clean; - if (!cpp_demangle_push_subst_v(ddata, &subst_v)) + if (!cpp_demangle_push_subst_v(ddata, + &subst_v)) goto clean; } break; @@ -425,7 +435,8 @@ cpp_demangle_push_type_qualifier(struct if (type_str != NULL) { if (!vector_str_push(&subst_v, " complex", 8)) goto clean; - if (!cpp_demangle_push_subst_v(ddata, &subst_v)) + if (!cpp_demangle_push_subst_v(ddata, + &subst_v)) goto clean; } break; @@ -434,23 +445,26 @@ cpp_demangle_push_type_qualifier(struct if (!cpp_demangle_push_str(ddata, " imaginary", 10)) goto clean; if (type_str != NULL) { - if (!vector_str_push(&subst_v, " imaginary", 10)) + if (!vector_str_push(&subst_v, " imaginary", + 10)) goto clean; - if (!cpp_demangle_push_subst_v(ddata, &subst_v)) + if (!cpp_demangle_push_subst_v(ddata, + &subst_v)) goto clean; } break; case TYPE_EXT: - if (e_idx > v->ext_name.size - 1) + if (v->ext_name.size == 0 || + e_idx > v->ext_name.size - 1) goto clean; - if ((e_len = strlen(v->ext_name.container[e_idx])) == 0) + if ((e_len = strlen(v->ext_name.container[e_idx])) == + 0) goto clean; - if ((buf = malloc(sizeof(char) * (e_len + 1))) == NULL) + if ((buf = malloc(e_len + 2)) == NULL) goto clean; - - memcpy(buf, " ", 1); - memcpy(buf + 1, v->ext_name.container[e_idx], e_len); + snprintf(buf, e_len + 2, " %s", + v->ext_name.container[e_idx]); if (!cpp_demangle_push_str(ddata, buf, e_len + 1)) { free(buf); @@ -463,7 +477,8 @@ cpp_demangle_push_type_qualifier(struct free(buf); goto clean; } - if (!cpp_demangle_push_subst_v(ddata, &subst_v)) { + if (!cpp_demangle_push_subst_v(ddata, + &subst_v)) { free(buf); goto clean; } @@ -478,7 +493,8 @@ cpp_demangle_push_type_qualifier(struct if (type_str != NULL) { if (!vector_str_push(&subst_v, " restrict", 9)) goto clean; - if (!cpp_demangle_push_subst_v(ddata, &subst_v)) + if (!cpp_demangle_push_subst_v(ddata, + &subst_v)) goto clean; } break; @@ -489,7 +505,8 @@ cpp_demangle_push_type_qualifier(struct if (type_str != NULL) { if (!vector_str_push(&subst_v, " volatile", 9)) goto clean; - if (!cpp_demangle_push_subst_v(ddata, &subst_v)) + if (!cpp_demangle_push_subst_v(ddata, + &subst_v)) goto clean; } break; @@ -500,11 +517,42 @@ cpp_demangle_push_type_qualifier(struct if (type_str != NULL) { if (!vector_str_push(&subst_v, " const", 6)) goto clean; - if (!cpp_demangle_push_subst_v(ddata, &subst_v)) + if (!cpp_demangle_push_subst_v(ddata, + &subst_v)) goto clean; } break; + case TYPE_VEC: + if (v->ext_name.size == 0 || + e_idx > v->ext_name.size - 1) + goto clean; + if ((e_len = strlen(v->ext_name.container[e_idx])) == + 0) + goto clean; + if ((buf = malloc(e_len + 12)) == NULL) + goto clean; + snprintf(buf, e_len + 12, " __vector(%s)", + v->ext_name.container[e_idx]); + if (!cpp_demangle_push_str(ddata, buf, e_len + 11)) { + free(buf); + goto clean; + } + if (type_str != NULL) { + if (!vector_str_push(&subst_v, buf, + e_len + 11)) { + free(buf); + goto clean; + } + if (!cpp_demangle_push_subst_v(ddata, + &subst_v)) { + free(buf); + goto clean; + } + } + free(buf); + ++e_idx; + break; }; --idx; } @@ -655,10 +703,14 @@ cpp_demangle_read_expr_primary(struct cp switch (*ddata->cur) { case 'b': + if (*(ddata->cur + 2) != 'E') + return (0); switch (*(++ddata->cur)) { case '0': + ddata->cur += 2; return (cpp_demangle_push_str(ddata, "false", 5)); case '1': + ddata->cur += 2; return (cpp_demangle_push_str(ddata, "true", 4)); default: return (0); @@ -707,7 +759,8 @@ cpp_demangle_read_expr_primary(struct cp ++ddata->cur; } ++ddata->cur; - return (cpp_demangle_push_str(ddata, num, ddata->cur - num)); + return (cpp_demangle_push_str(ddata, num, + ddata->cur - num - 1)); default: return (0); @@ -999,6 +1052,38 @@ cpp_demangle_read_expression(struct cpp_ } static int +cpp_demangle_read_expression_flat(struct cpp_demangle_data *ddata, char **str) +{ + struct vector_str *output; + size_t i, p_idx, idx, exp_len; + char *exp; + + output = ddata->push_head > 0 ? &ddata->output_tmp : + &ddata->output; + + p_idx = output->size; + + if (!cpp_demangle_read_expression(ddata)) + return (0); + + if ((exp = vector_str_substr(output, p_idx, output->size - 1, + &exp_len)) == NULL) + return (0); + + idx = output->size; + for (i = p_idx; i < idx; ++i) { + if (!vector_str_pop(output)) { + free(exp); + return (0); + } + } + + *str = exp; + + return (1); +} + +static int cpp_demangle_read_expression_binary(struct cpp_demangle_data *ddata, const char *name, size_t len) { @@ -1127,12 +1212,65 @@ cpp_demangle_read_function(struct cpp_de static int cpp_demangle_read_encoding(struct cpp_demangle_data *ddata) { + char *name, *type, *num_str; + long offset; + int rtn; if (ddata == NULL || *ddata->cur == '\0') return (0); /* special name */ switch (SIMPLE_HASH(*ddata->cur, *(ddata->cur + 1))) { + case SIMPLE_HASH('G', 'A'): + if (!cpp_demangle_push_str(ddata, "hidden alias for ", 17)) + return (0); + ddata->cur += 2; + if (*ddata->cur == '\0') + return (0); + return (cpp_demangle_read_encoding(ddata)); + + case SIMPLE_HASH('G', 'R'): + if (!cpp_demangle_push_str(ddata, "reference temporary #", 21)) + return (0); + ddata->cur += 2; + if (*ddata->cur == '\0') + return (0); + if (!cpp_demangle_read_name_flat(ddata, &name)) + return (0); + rtn = 0; + if (!cpp_demangle_read_number_as_string(ddata, &num_str)) + goto clean1; + if (!cpp_demangle_push_str(ddata, num_str, strlen(num_str))) + goto clean2; + if (!cpp_demangle_push_str(ddata, " for ", 5)) + goto clean2; + if (!cpp_demangle_push_str(ddata, name, strlen(name))) + goto clean2; + rtn = 1; + clean2: + free(num_str); + clean1: + free(name); + return (rtn); + + case SIMPLE_HASH('G', 'T'): + ddata->cur += 2; + if (*ddata->cur == '\0') + return (0); + switch (*ddata->cur) { + case 'n': + if (!cpp_demangle_push_str(ddata, + "non-transaction clone for ", 26)) + return (0); + case 't': + default: + if (!cpp_demangle_push_str(ddata, + "transaction clone for ", 22)) + return (0); + } + ++ddata->cur; + return (cpp_demangle_read_encoding(ddata)); + case SIMPLE_HASH('G', 'V'): /* sentry object for 1 time init */ if (!cpp_demangle_push_str(ddata, "guard variable for ", 20)) @@ -1154,14 +1292,49 @@ cpp_demangle_read_encoding(struct cpp_de return (0); return (cpp_demangle_read_encoding(ddata)); + case SIMPLE_HASH('T', 'C'): + /* construction vtable */ + if (!cpp_demangle_push_str(ddata, "construction vtable for ", + 24)) + return (0); + ddata->cur += 2; + if (*ddata->cur == '\0') + return (0); + if (!cpp_demangle_read_type_flat(ddata, &type)) + return (0); + rtn = 0; + if (!cpp_demangle_read_number(ddata, &offset)) + goto clean3; + if (*ddata->cur++ != '_') + goto clean3; + if (!cpp_demangle_read_type(ddata, 0)) + goto clean3; + if (!cpp_demangle_push_str(ddata, "-in-", 4)) + goto clean3; + if (!cpp_demangle_push_str(ddata, type, strlen(type))) + goto clean3; + rtn = 1; + clean3: + free(type); + return (rtn); + case SIMPLE_HASH('T', 'D'): /* typeinfo common proxy */ break; + case SIMPLE_HASH('T', 'F'): + /* typeinfo fn */ + if (!cpp_demangle_push_str(ddata, "typeinfo fn for ", 16)) + return (0); + ddata->cur += 2; + if (*ddata->cur == '\0') + return (0); + return (cpp_demangle_read_type(ddata, 0)); + case SIMPLE_HASH('T', 'h'): /* virtual function non-virtual override thunk */ - if (cpp_demangle_push_str(ddata, - "virtual function non-virtual override ", 38) == 0) + if (!cpp_demangle_push_str(ddata, + "virtual function non-virtual override ", 38)) return (0); ddata->cur += 2; if (*ddata->cur == '\0') @@ -1170,24 +1343,51 @@ cpp_demangle_read_encoding(struct cpp_de return (0); return (cpp_demangle_read_encoding(ddata)); + case SIMPLE_HASH('T', 'H'): + /* TLS init function */ + if (!cpp_demangle_push_str(ddata, "TLS init function for ", + 22)) + return (0); + ddata->cur += 2; + if (*ddata->cur == '\0') + return (0); + break; + case SIMPLE_HASH('T', 'I'): /* typeinfo structure */ - /* FALLTHROUGH */ + if (!cpp_demangle_push_str(ddata, "typeinfo for ", 13)) + return (0); + ddata->cur += 2; + if (*ddata->cur == '\0') + return (0); + return (cpp_demangle_read_type(ddata, 0)); + + case SIMPLE_HASH('T', 'J'): + /* java class */ + if (!cpp_demangle_push_str(ddata, "java Class for ", 15)) + return (0); + ddata->cur += 2; + if (*ddata->cur == '\0') + return (0); + return (cpp_demangle_read_type(ddata, 0)); + case SIMPLE_HASH('T', 'S'): /* RTTI name (NTBS) */ - if (!cpp_demangle_push_str(ddata, "typeinfo for ", 14)) + if (!cpp_demangle_push_str(ddata, "typeinfo name for ", 18)) return (0); ddata->cur += 2; if (*ddata->cur == '\0') return (0); - return (cpp_demangle_read_type(ddata, 1)); + return (cpp_demangle_read_type(ddata, 0)); case SIMPLE_HASH('T', 'T'): /* VTT table */ if (!cpp_demangle_push_str(ddata, "VTT for ", 8)) return (0); ddata->cur += 2; - return (cpp_demangle_read_type(ddata, 1)); + if (*ddata->cur == '\0') + return (0); + return (cpp_demangle_read_type(ddata, 0)); case SIMPLE_HASH('T', 'v'): /* virtual function virtual override thunk */ @@ -1208,7 +1408,17 @@ cpp_demangle_read_encoding(struct cpp_de ddata->cur += 2; if (*ddata->cur == '\0') return (0); - return (cpp_demangle_read_type(ddata, 1)); + return (cpp_demangle_read_type(ddata, 0)); + + case SIMPLE_HASH('T', 'W'): + /* TLS wrapper function */ + if (!cpp_demangle_push_str(ddata, "TLS wrapper function for ", + 25)) + return (0); + ddata->cur += 2; + if (*ddata->cur == '\0') + return (0); + break; }; return (cpp_demangle_read_name(ddata)); @@ -1270,8 +1480,7 @@ cpp_demangle_read_name(struct cpp_demang if (ddata == NULL || *ddata->cur == '\0') return (0); - output = cpp_demangle_gnu3_push_head > 0 ? - &ddata->output_tmp : &ddata->output; + output = ddata->push_head > 0 ? &ddata->output_tmp : &ddata->output; subst_str = NULL; @@ -1327,6 +1536,38 @@ clean: } static int +cpp_demangle_read_name_flat(struct cpp_demangle_data *ddata, char **str) +{ + struct vector_str *output; + size_t i, p_idx, idx, name_len; + char *name; + + output = ddata->push_head > 0 ? &ddata->output_tmp : + &ddata->output; + + p_idx = output->size; + + if (!cpp_demangle_read_name(ddata)) + return (0); + + if ((name = vector_str_substr(output, p_idx, output->size - 1, + &name_len)) == NULL) + return (0); + + idx = output->size; + for (i = p_idx; i < idx; ++i) { + if (!vector_str_pop(output)) { + free(name); + return (0); + } + } + + *str = name; + + return (1); +} + +static int *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Wed May 27 14:29:40 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8C8BD5B0; Wed, 27 May 2015 14:29:40 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.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 79D9636C; Wed, 27 May 2015 14:29:40 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RETeUh021848; Wed, 27 May 2015 14:29:40 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RETebp021847; Wed, 27 May 2015 14:29:40 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <201505271429.t4RETebp021847@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Wed, 27 May 2015 14:29: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: r283617 - stable/10/sys/dev/virtio/network X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 14:29:40 -0000 Author: jhb Date: Wed May 27 14:29:39 2015 New Revision: 283617 URL: https://svnweb.freebsd.org/changeset/base/283617 Log: MFC 282241: Don't free mbufs when stopping an interface in netmap mode. Currently if you ifconfig down a vtnet interface while it is being used via netmap, the kernel panics due to trying to treat the cookie values in the virtio rings as mbufs to be freed. When netmap is enabled, these cookie values are pointers to something else. Note that other netmap-aware drivers don't seem to need this as they store the mbuf pointers in the software rings that mirror the hardware descriptor rings, and since netmap doesn't touch those, the software state always has NULL mbuf pointers causing the loops to free mbufs to not do anything. However, vtnet reuses the same state area for both netmap and non-netmap mode, so it needs to explicitly avoid looking at the rings and treating the cookie values as mbufs if netmap is enabled. Sponsored by: Norse Corp, Inc. Modified: stable/10/sys/dev/virtio/network/if_vtnet.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/virtio/network/if_vtnet.c ============================================================================== --- stable/10/sys/dev/virtio/network/if_vtnet.c Wed May 27 14:28:19 2015 (r283616) +++ stable/10/sys/dev/virtio/network/if_vtnet.c Wed May 27 14:29:39 2015 (r283617) @@ -2756,6 +2756,11 @@ vtnet_drain_rxtx_queues(struct vtnet_sof struct vtnet_txq *txq; int i; +#ifdef DEV_NETMAP + if (nm_native_on(NA(sc->vtnet_ifp))) + return; +#endif /* DEV_NETMAP */ + for (i = 0; i < sc->vtnet_act_vq_pairs; i++) { rxq = &sc->vtnet_rxqs[i]; vtnet_rxq_free_mbufs(rxq); From owner-svn-src-all@FreeBSD.ORG Wed May 27 15:21:41 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1E464B38; Wed, 27 May 2015 15:21:41 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail105.syd.optusnet.com.au (mail105.syd.optusnet.com.au [211.29.132.249]) by mx1.freebsd.org (Postfix) with ESMTP id BDCAD3B4; Wed, 27 May 2015 15:21:40 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from c211-30-166-197.carlnfd1.nsw.optusnet.com.au (c211-30-166-197.carlnfd1.nsw.optusnet.com.au [211.30.166.197]) by mail105.syd.optusnet.com.au (Postfix) with ESMTPS id AE9D71046EDC; Thu, 28 May 2015 01:21:31 +1000 (AEST) Date: Thu, 28 May 2015 01:21:31 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Kurt Lidl cc: Bruce Evans , Eitan Adler , Adrian Chadd , "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" Subject: Re: svn commit: r281103 - head/sys/amd64/amd64 In-Reply-To: <5565CC49.1020800@pix.net> Message-ID: <20150528002223.O3265@besplex.bde.org> References: <201504050518.t355IFVJ001786@svn.freebsd.org> <20150405163305.A2515@besplex.bde.org> <20150406152653.K1066@besplex.bde.org> <5565CC49.1020800@pix.net> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Optus-CM-Score: 0 X-Optus-CM-Analysis: v=2.1 cv=QeFf4Krv c=1 sm=1 tr=0 a=KA6XNC2GZCFrdESI5ZmdjQ==:117 a=PO7r1zJSAAAA:8 a=kj9zAlcOel0A:10 a=JzwRw_2MAAAA:8 a=6I5d2MoRAAAA:8 a=FlN6N8JoDbLK7ldWeMkA:9 a=CjuIK1q_8ugA:10 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 15:21:41 -0000 On Wed, 27 May 2015, Kurt Lidl wrote: > On 4/6/15 1:42 AM, Bruce Evans wrote: >> On Mon, 6 Apr 2015, Eitan Adler wrote: >> >>> + a few people interested in the diff >>> >>> On 5 April 2015 at 02:55, Bruce Evans wrote: >>>> On Sun, 5 Apr 2015, Eitan Adler wrote: >>> >>> I did not confirm the performance impact, but the submitter and others >>> indicated they saw a difference. >>> >>> Do you have specific data that shows that there was an improvement? >> >> Only micro-benchmark output that indicates little difference. This >> is probably very MD (depending on write combining hardware), so you >> might only see a difference on some systems. >> >> I also have micro-benchmark output for network packets/second that >> shows 10% differences for the change of adding 1 byte of padding >> in code that is never executed. This seems to be due to different >> cache misses. To eliminate differences from this (except ones >> caused by actually running different code), create a reference >> version by padding the functions or data to be changed so that >> the change doesn't affect the address of anything except the >> internals of the changed parts. >> >> I might try a makeworld run to see if changing the non-temporal >> accesses in pagecopy and pagezero to cached. > > I ran a few (total of 12) buildworld runs after this discussion. > I finally got around to posting the results to the original bug. > > The data is here: > > https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=199151#c3 I can't read that, but ran many related benchmarks on a new system. Haswell CPUs have very fast "rep movsb" for large copies within the L1 cache. These run at 32 bytes/cycle. Nothing except copying through AVX registers can get anywhere near this. The next best is copying through SSE registers at 16 bytes/cycle. However, the L1 cache is not very large, and "rep movsb" has a large setup overhead -- about 23 cycles. 1 4K page is barely large enough for the setup overhead to not dominate. It takes 23 cycles to set up, then only 128 more cycles at 32 bytes/cycle to do the work. Page zeroing and copying is rarely within the L1 cache. Within the L2 cache, the speed of "rep movsb" drops to only about 8 bytes/cycle. Copying through SSE registers can easily keep up with this, perhaps even in a non-unrolled loop. Copying through 64-bit integer registers as for page zeroing and copying on amd64 can not so easily keep up with this. I think a non-unrolled loop runs at about 2 cycles/iteration. That only does 4 bytes/cycle with 64-bit registers, and only 2 bytes/cycle with 32-bit registers. amd64 uses 4-way unrolling. Apparently, the load/store instructions run at at most 1 pair per cycle, giving a maximum of 8 bytes per cycle; then any loop overhead the throughpoint to less than 8 bytes/cycle, so more unrolling helps a little. Page zeroing and copying might also rarely be within the L2 or L3 cache. Then the speed on Hasell drops to that of main memory, which is about 1.25 bytes/cycle on my system. Almost any method can keep up with this in theory, but in practice nontemporal stores through SSE registers (movntps is best for portability) are fastest (not counting their advantage of not thrashing the caches), and "rep movsb" is almost as good, and 128-bit accesses through SSE registers are almost as good as "rep movsb". However, in tests of makeworld on i386 systems with non-bloated workds it was better by 1-2% to not use nontemporal stores at all. i386 only uses them for pagezero, and only uses 32-bit movnti for them. Replacing this with simple memcpy (which uses "rep stosl", which runs at the same speed as "rep movsb") gave the 1-2% improvement. I also tried using 32-bit movnti for pagecopy -- this gave a 1-2% unimprovement. Perhaps the 32-bit accesses are too small, but "rep movsb" is so fast that it is hard to beat. (This was with current kernels and an old userland. My version uses movntps for i386 pagecopy and pagezero, and this gives improvements in the 1-2% range on older CPUs.) For nontemporal stores to be a pessimization, the page zeroing and copying must often give more hits later when nontemporal stores are not used. This is possible with cache sizes of several MB and my non-bloated world where the compiler's size is 5MB instead of 50MB as in -current. The cache size on my CPU is 8MB. This is shared with 4 real cores and 4 HTT cores so it is only 1MB per CPU and only about 512K per runnable thread with -j16. Even 5MB is more than enough bloat to thrash 512K. However, there is apparently enough locality for caching to help even for zeroed pages. If the zeroing happens on demand, than it is likely for the page to be accessed soon, so caching it helps. If the zeroing happens in advance, then under load perhaps zeroed pages get used soon enough that any caching of them helps. Bruce From owner-svn-src-all@FreeBSD.ORG Wed May 27 17:33:31 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 81F40646; Wed, 27 May 2015 17:33:31 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.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 705A6A80; Wed, 27 May 2015 17:33:31 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RHXVKq019319; Wed, 27 May 2015 17:33:31 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RHXVO3019318; Wed, 27 May 2015 17:33:31 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201505271733.t4RHXVO3019318@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Wed, 27 May 2015 17:33:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283618 - head/release X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 17:33:31 -0000 Author: gjb Date: Wed May 27 17:33:30 2015 New Revision: 283618 URL: https://svnweb.freebsd.org/changeset/base/283618 Log: Invert the build date and svn revision to match the namimg convention that has been in use for a while. MFC after: 3 days Sponsored by: The FreeBSD Foundation Modified: head/release/Makefile.mirrors Modified: head/release/Makefile.mirrors ============================================================================== --- head/release/Makefile.mirrors Wed May 27 14:29:39 2015 (r283617) +++ head/release/Makefile.mirrors Wed May 27 17:33:30 2015 (r283618) @@ -49,7 +49,7 @@ BUILDDATE!= cd ${.CURDIR} && date -j -f BUILDDATE!= date +%Y%m%d . endif . endif -_SNAP_SUFFIX:= -r${SVNREVISION}-${BUILDDATE} +_SNAP_SUFFIX:= ${BUILDDATE}-r${SVNREVISION} .else # release SNAPSHOT= From owner-svn-src-all@FreeBSD.ORG Wed May 27 17:42:24 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 6B575BC2; Wed, 27 May 2015 17:42:24 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.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 3FF60CE7; Wed, 27 May 2015 17:42:24 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RHgO3w024222; Wed, 27 May 2015 17:42:24 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RHgOZg024221; Wed, 27 May 2015 17:42:24 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201505271742.t4RHgOZg024221@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Wed, 27 May 2015 17:42:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r283619 - vendor/llvm/llvm-3.6.x X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 17:42:24 -0000 Author: dim Date: Wed May 27 17:42:23 2015 New Revision: 283619 URL: https://svnweb.freebsd.org/changeset/base/283619 Log: Make a branch for keeping llvm 3.6.x up-to-date, so we can import trunk snapshots into dist. Added: - copied from r283618, vendor/llvm/dist/ Directory Properties: vendor/llvm/llvm-3.6.x/ (props changed) From owner-svn-src-all@FreeBSD.ORG Wed May 27 17:44:13 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A335DD45; Wed, 27 May 2015 17:44:13 +0000 (UTC) (envelope-from erj@FreeBSD.org) Received: from svn.freebsd.org (svn.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 8F067D03; Wed, 27 May 2015 17:44:13 +0000 (UTC) (envelope-from erj@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RHiDqb024532; Wed, 27 May 2015 17:44:13 GMT (envelope-from erj@FreeBSD.org) Received: (from erj@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RHiC04024525; Wed, 27 May 2015 17:44:12 GMT (envelope-from erj@FreeBSD.org) Message-Id: <201505271744.t4RHiC04024525@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: erj set sender to erj@FreeBSD.org using -f From: Eric Joyner Date: Wed, 27 May 2015 17:44:12 +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: r283620 - in stable/10/sys: amd64/conf conf dev/ixgbe modules modules/ix modules/ixv X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 17:44:13 -0000 Author: erj Date: Wed May 27 17:44:11 2015 New Revision: 283620 URL: https://svnweb.freebsd.org/changeset/base/283620 Log: MFC ixgbe commits for 10.2: - r280182 - Split the driver into independent pf/vf loadables - r280197 - Resolve build issues - r280204 - Fix multiple same-name devclasses - r280228 - Fix i386 LINT build issues / remove unused variable - r280252 - Fix building ixgbe with gcc - r280962 - Make changes to busdma code similar to r257541 - r281772 & r281773 - Remove unused variable - partial r282280 - stats counter update (ix-only) - r282289 - Add X550 support - r282290 - Add X550 makefile updates - r282293 - Add ixgbe_x550.c to conf/files - r282299 - Fix gcc compile (extraneous extern declaration) Finally, add ix_txrx.c to conf/files because it's required for compile in stable/10. Approved by: jfv (mentor) Added: stable/10/sys/dev/ixgbe/if_ix.c - copied, changed from r280182, head/sys/dev/ixgbe/if_ix.c stable/10/sys/dev/ixgbe/if_ixv.c - copied, changed from r280182, head/sys/dev/ixgbe/if_ixv.c stable/10/sys/dev/ixgbe/ix_txrx.c - copied, changed from r280182, head/sys/dev/ixgbe/ix_txrx.c stable/10/sys/dev/ixgbe/ixgbe_x550.c - copied unchanged from r282289, head/sys/dev/ixgbe/ixgbe_x550.c stable/10/sys/dev/ixgbe/ixgbe_x550.h - copied unchanged from r282289, head/sys/dev/ixgbe/ixgbe_x550.h stable/10/sys/modules/ix/ - copied from r280182, head/sys/modules/ix/ stable/10/sys/modules/ixv/ - copied from r280182, head/sys/modules/ixv/ Deleted: stable/10/sys/dev/ixgbe/ixgbe.c stable/10/sys/dev/ixgbe/ixv.c stable/10/sys/dev/ixgbe/ixv.h Modified: stable/10/sys/amd64/conf/GENERIC stable/10/sys/conf/NOTES stable/10/sys/conf/files stable/10/sys/dev/ixgbe/LICENSE stable/10/sys/dev/ixgbe/ixgbe.h stable/10/sys/dev/ixgbe/ixgbe_82598.c stable/10/sys/dev/ixgbe/ixgbe_82598.h stable/10/sys/dev/ixgbe/ixgbe_82599.c stable/10/sys/dev/ixgbe/ixgbe_82599.h stable/10/sys/dev/ixgbe/ixgbe_api.c stable/10/sys/dev/ixgbe/ixgbe_api.h stable/10/sys/dev/ixgbe/ixgbe_common.c stable/10/sys/dev/ixgbe/ixgbe_common.h stable/10/sys/dev/ixgbe/ixgbe_dcb.c stable/10/sys/dev/ixgbe/ixgbe_dcb.h stable/10/sys/dev/ixgbe/ixgbe_dcb_82598.c stable/10/sys/dev/ixgbe/ixgbe_dcb_82598.h stable/10/sys/dev/ixgbe/ixgbe_dcb_82599.c stable/10/sys/dev/ixgbe/ixgbe_dcb_82599.h stable/10/sys/dev/ixgbe/ixgbe_mbx.c stable/10/sys/dev/ixgbe/ixgbe_mbx.h stable/10/sys/dev/ixgbe/ixgbe_osdep.h stable/10/sys/dev/ixgbe/ixgbe_phy.c stable/10/sys/dev/ixgbe/ixgbe_phy.h stable/10/sys/dev/ixgbe/ixgbe_type.h stable/10/sys/dev/ixgbe/ixgbe_vf.c stable/10/sys/dev/ixgbe/ixgbe_vf.h stable/10/sys/dev/ixgbe/ixgbe_x540.c stable/10/sys/dev/ixgbe/ixgbe_x540.h stable/10/sys/modules/Makefile stable/10/sys/modules/ix/Makefile stable/10/sys/modules/ixv/Makefile Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/amd64/conf/GENERIC ============================================================================== --- stable/10/sys/amd64/conf/GENERIC Wed May 27 17:42:23 2015 (r283619) +++ stable/10/sys/amd64/conf/GENERIC Wed May 27 17:44:11 2015 (r283620) @@ -211,7 +211,8 @@ device bxe # Broadcom NetXtreme II BC device de # DEC/Intel DC21x4x (``Tulip'') device em # Intel PRO/1000 Gigabit Ethernet Family device igb # Intel PRO/1000 PCIE Server Gigabit Family -device ixgbe # Intel PRO/10GbE PCIE Ethernet Family +device ix # Intel PRO/10GbE PCIE PF Ethernet +device ixv # Intel PRO/10GbE PCIE VF Ethernet device ixl # Intel XL710 40Gbe PCIE Ethernet device ixlv # Intel XL710 40Gbe VF PCIE Ethernet device le # AMD Am7900 LANCE and Am79C9xx PCnet Modified: stable/10/sys/conf/NOTES ============================================================================== --- stable/10/sys/conf/NOTES Wed May 27 17:42:23 2015 (r283619) +++ stable/10/sys/conf/NOTES Wed May 27 17:44:11 2015 (r283620) @@ -2089,7 +2089,8 @@ device de # DEC/Intel DC21x4x (``Tulip device em # Intel Pro/1000 Gigabit Ethernet device igb # Intel Pro/1000 PCIE Gigabit Ethernet device ixgb # Intel Pro/10Gbe PCI-X Ethernet -device ixgbe # Intel Pro/10Gbe PCIE Ethernet +device ix # Intel Pro/10Gbe PCIE Ethernet +device ixv # Intel Pro/10Gbe PCIE Ethernet VF device le # AMD Am7900 LANCE and Am79C9xx PCnet device mxge # Myricom Myri-10G 10GbE NIC device nxge # Neterion Xframe 10GbE Server/Storage Adapter Modified: stable/10/sys/conf/files ============================================================================== --- stable/10/sys/conf/files Wed May 27 17:42:23 2015 (r283619) +++ stable/10/sys/conf/files Wed May 27 17:44:11 2015 (r283620) @@ -1716,31 +1716,35 @@ iwn6050.fw optional iwn6050fw | iwnfw dev/ixgb/if_ixgb.c optional ixgb dev/ixgb/ixgb_ee.c optional ixgb dev/ixgb/ixgb_hw.c optional ixgb -dev/ixgbe/ixgbe.c optional ixgbe inet \ +dev/ixgbe/if_ix.c optional ix inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe -DSMP" -dev/ixgbe/ixv.c optional ixgbe inet \ +dev/ixgbe/if_ixv.c optional ixv inet \ + compile-with "${NORMAL_C} -I$S/dev/ixgbe -DSMP" +dev/ixgbe/ix_txrx.c optional ixv inet \ + compile-with "${NORMAL_C} -I$S/dev/ixgbe" +dev/ixgbe/ixgbe_phy.c optional ix ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" -dev/ixgbe/ixgbe_phy.c optional ixgbe inet \ +dev/ixgbe/ixgbe_api.c optional ix ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" -dev/ixgbe/ixgbe_api.c optional ixgbe inet \ +dev/ixgbe/ixgbe_common.c optional ix ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" -dev/ixgbe/ixgbe_common.c optional ixgbe inet \ +dev/ixgbe/ixgbe_mbx.c optional ix ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" -dev/ixgbe/ixgbe_mbx.c optional ixgbe inet \ +dev/ixgbe/ixgbe_vf.c optional ix ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" -dev/ixgbe/ixgbe_vf.c optional ixgbe inet \ +dev/ixgbe/ixgbe_82598.c optional ix ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" -dev/ixgbe/ixgbe_82598.c optional ixgbe inet \ +dev/ixgbe/ixgbe_82599.c optional ix ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" -dev/ixgbe/ixgbe_82599.c optional ixgbe inet \ +dev/ixgbe/ixgbe_x540.c optional ix ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" -dev/ixgbe/ixgbe_x540.c optional ixgbe inet \ +dev/ixgbe/ixgbe_x550.c optional ix ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" -dev/ixgbe/ixgbe_dcb.c optional ixgbe inet \ +dev/ixgbe/ixgbe_dcb.c optional ix ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" -dev/ixgbe/ixgbe_dcb_82598.c optional ixgbe inet \ +dev/ixgbe/ixgbe_dcb_82598.c optional ix ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" -dev/ixgbe/ixgbe_dcb_82599.c optional ixgbe inet \ +dev/ixgbe/ixgbe_dcb_82599.c optional ix ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixl/if_ixl.c optional ixl inet \ compile-with "${NORMAL_C} -I$S/dev/ixl" Modified: stable/10/sys/dev/ixgbe/LICENSE ============================================================================== --- stable/10/sys/dev/ixgbe/LICENSE Wed May 27 17:42:23 2015 (r283619) +++ stable/10/sys/dev/ixgbe/LICENSE Wed May 27 17:44:11 2015 (r283620) @@ -1,6 +1,6 @@ /****************************************************************************** - Copyright (c) 2001-2013, Intel Corporation + Copyright (c) 2001-2015, Intel Corporation All rights reserved. Redistribution and use in source and binary forms, with or without Copied and modified: stable/10/sys/dev/ixgbe/if_ix.c (from r280182, head/sys/dev/ixgbe/if_ix.c) ============================================================================== --- head/sys/dev/ixgbe/if_ix.c Tue Mar 17 18:32:28 2015 (r280182, copy source) +++ stable/10/sys/dev/ixgbe/if_ix.c Wed May 27 17:44:11 2015 (r283620) @@ -36,15 +36,10 @@ #ifndef IXGBE_STANDALONE_BUILD #include "opt_inet.h" #include "opt_inet6.h" -#include "opt_rss.h" #endif #include "ixgbe.h" -#ifdef RSS -#include -#endif - /********************************************************************* * Set this to one to display debug statistics *********************************************************************/ @@ -53,7 +48,7 @@ int ixgbe_display_debug_stat /********************************************************************* * Driver version *********************************************************************/ -char ixgbe_driver_version[] = "2.7.4"; +char ixgbe_driver_version[] = "2.8.3"; /********************************************************************* * PCI Device ID Table @@ -116,6 +111,8 @@ static int ixgbe_probe(device_t); static int ixgbe_attach(device_t); static int ixgbe_detach(device_t); static int ixgbe_shutdown(device_t); +static int ixgbe_suspend(device_t); +static int ixgbe_resume(device_t); static int ixgbe_ioctl(struct ifnet *, u_long, caddr_t); static void ixgbe_init(void *); static void ixgbe_init_locked(struct adapter *); @@ -135,7 +132,12 @@ static int ixgbe_setup_msix(struct adapt static void ixgbe_free_pci_resources(struct adapter *); static void ixgbe_local_timer(void *); static int ixgbe_setup_interface(device_t, struct adapter *); +static void ixgbe_config_dmac(struct adapter *); +static void ixgbe_config_delay_values(struct adapter *); static void ixgbe_config_link(struct adapter *); +static void ixgbe_check_eee_support(struct adapter *); +static void ixgbe_check_wol_support(struct adapter *); +static int ixgbe_setup_low_power_mode(struct adapter *); static void ixgbe_rearm_queues(struct adapter *, u64); static void ixgbe_initialize_transmit_units(struct adapter *); @@ -149,9 +151,6 @@ static void ixgbe_update_stats_count static void ixgbe_set_promisc(struct adapter *); static void ixgbe_set_multi(struct adapter *); static void ixgbe_update_link_status(struct adapter *); -static int ixgbe_set_flowcntl(SYSCTL_HANDLER_ARGS); -static int ixgbe_set_advertise(SYSCTL_HANDLER_ARGS); -static int ixgbe_set_thermal_test(SYSCTL_HANDLER_ARGS); static void ixgbe_set_ivar(struct adapter *, u8, u8, s8); static void ixgbe_configure_ivars(struct adapter *); static u8 * ixgbe_mc_array_itr(struct ixgbe_hw *, u8 **, u32 *); @@ -160,7 +159,22 @@ static void ixgbe_setup_vlan_hw_support( static void ixgbe_register_vlan(void *, struct ifnet *, u16); static void ixgbe_unregister_vlan(void *, struct ifnet *, u16); -static void ixgbe_add_hw_stats(struct adapter *adapter); +static void ixgbe_add_device_sysctls(struct adapter *); +static void ixgbe_add_hw_stats(struct adapter *); + +/* Sysctl handlers */ +static int ixgbe_set_flowcntl(SYSCTL_HANDLER_ARGS); +static int ixgbe_set_advertise(SYSCTL_HANDLER_ARGS); +static int ixgbe_sysctl_thermal_test(SYSCTL_HANDLER_ARGS); +static int ixgbe_sysctl_dmac(SYSCTL_HANDLER_ARGS); +static int ixgbe_sysctl_phy_temp(SYSCTL_HANDLER_ARGS); +static int ixgbe_sysctl_phy_overtemp_occurred(SYSCTL_HANDLER_ARGS); +static int ixgbe_sysctl_wol_enable(SYSCTL_HANDLER_ARGS); +static int ixgbe_sysctl_wufc(SYSCTL_HANDLER_ARGS); +static int ixgbe_sysctl_eee_enable(SYSCTL_HANDLER_ARGS); +static int ixgbe_sysctl_eee_negotiated(SYSCTL_HANDLER_ARGS); +static int ixgbe_sysctl_eee_rx_lpi_status(SYSCTL_HANDLER_ARGS); +static int ixgbe_sysctl_eee_tx_lpi_status(SYSCTL_HANDLER_ARGS); /* Support for pluggable optic modules */ static bool ixgbe_sfp_probe(struct adapter *); @@ -178,37 +192,36 @@ static void ixgbe_handle_que(void *, int static void ixgbe_handle_link(void *, int); static void ixgbe_handle_msf(void *, int); static void ixgbe_handle_mod(void *, int); +static void ixgbe_handle_phy(void *, int); #ifdef IXGBE_FDIR static void ixgbe_reinit_fdir(void *, int); #endif - -/* Missing shared code prototype */ -extern void ixgbe_stop_mac_link_on_d3_82599(struct ixgbe_hw *hw); - /********************************************************************* * FreeBSD Device Interface Entry Points *********************************************************************/ -static device_method_t ixgbe_methods[] = { +static device_method_t ix_methods[] = { /* Device interface */ DEVMETHOD(device_probe, ixgbe_probe), DEVMETHOD(device_attach, ixgbe_attach), DEVMETHOD(device_detach, ixgbe_detach), DEVMETHOD(device_shutdown, ixgbe_shutdown), + DEVMETHOD(device_suspend, ixgbe_suspend), + DEVMETHOD(device_resume, ixgbe_resume), DEVMETHOD_END }; -static driver_t ixgbe_driver = { - "ix", ixgbe_methods, sizeof(struct adapter), +static driver_t ix_driver = { + "ix", ix_methods, sizeof(struct adapter), }; -devclass_t ixgbe_devclass; -DRIVER_MODULE(ixgbe, pci, ixgbe_driver, ixgbe_devclass, 0, 0); +devclass_t ix_devclass; +DRIVER_MODULE(ix, pci, ix_driver, ix_devclass, 0, 0); -MODULE_DEPEND(ixgbe, pci, 1, 1, 1); -MODULE_DEPEND(ixgbe, ether, 1, 1, 1); +MODULE_DEPEND(ix, pci, 1, 1, 1); +MODULE_DEPEND(ix, ether, 1, 1, 1); /* ** TUNEABLE PARAMETERS: @@ -403,32 +416,6 @@ ixgbe_attach(device_t dev) /* Core Lock Init*/ IXGBE_CORE_LOCK_INIT(adapter, device_get_nameunit(dev)); - /* SYSCTL APIs */ - SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), - SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), - OID_AUTO, "fc", CTLTYPE_INT | CTLFLAG_RW, - adapter, 0, ixgbe_set_flowcntl, "I", IXGBE_SYSCTL_DESC_SET_FC); - - SYSCTL_ADD_INT(device_get_sysctl_ctx(dev), - SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), - OID_AUTO, "enable_aim", CTLFLAG_RW, - &ixgbe_enable_aim, 1, "Interrupt Moderation"); - - /* - ** Allow a kind of speed control by forcing the autoneg - ** advertised speed list to only a certain value, this - ** supports 1G on 82599 devices, and 100Mb on x540. - */ - SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), - SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), - OID_AUTO, "advertise_speed", CTLTYPE_INT | CTLFLAG_RW, - adapter, 0, ixgbe_set_advertise, "I", IXGBE_SYSCTL_DESC_ADV_SPEED); - - SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), - SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), - OID_AUTO, "ts", CTLTYPE_INT | CTLFLAG_RW, adapter, - 0, ixgbe_set_thermal_test, "I", "Thermal Test"); - /* Set up the timer callout */ callout_init_mtx(&adapter->timer, &adapter->core_mtx, 0); @@ -558,22 +545,26 @@ ixgbe_attach(device_t dev) adapter->vlan_detach = EVENTHANDLER_REGISTER(vlan_unconfig, ixgbe_unregister_vlan, adapter, EVENTHANDLER_PRI_FIRST); - /* - ** Check PCIE slot type/speed/width - */ + /* Check PCIE slot type/speed/width */ ixgbe_get_slot_info(hw); /* Set an initial default flow control value */ adapter->fc = ixgbe_fc_full; + /* Check for certain supported features */ + ixgbe_check_wol_support(adapter); + ixgbe_check_eee_support(adapter); + + /* Add sysctls */ + ixgbe_add_device_sysctls(adapter); + ixgbe_add_hw_stats(adapter); + /* let hardware know driver is loaded */ ctrl_ext = IXGBE_READ_REG(hw, IXGBE_CTRL_EXT); ctrl_ext |= IXGBE_CTRL_EXT_DRV_LOAD; IXGBE_WRITE_REG(hw, IXGBE_CTRL_EXT, ctrl_ext); - ixgbe_add_hw_stats(adapter); - #ifdef DEV_NETMAP ixgbe_netmap_attach(adapter); #endif /* DEV_NETMAP */ @@ -617,8 +608,9 @@ ixgbe_detach(device_t dev) return (EBUSY); } + /* Stop the adapter */ IXGBE_CORE_LOCK(adapter); - ixgbe_stop(adapter); + ixgbe_setup_low_power_mode(adapter); IXGBE_CORE_UNLOCK(adapter); for (int i = 0; i < adapter->num_queues; i++, que++, txr++) { @@ -636,6 +628,7 @@ ixgbe_detach(device_t dev) taskqueue_drain(adapter->tq, &adapter->link_task); taskqueue_drain(adapter->tq, &adapter->mod_task); taskqueue_drain(adapter->tq, &adapter->msf_task); + taskqueue_drain(adapter->tq, &adapter->phy_task); #ifdef IXGBE_FDIR taskqueue_drain(adapter->tq, &adapter->fdir_task); #endif @@ -680,9 +673,77 @@ static int ixgbe_shutdown(device_t dev) { struct adapter *adapter = device_get_softc(dev); + int error = 0; + + INIT_DEBUGOUT("ixgbe_shutdown: begin"); + + IXGBE_CORE_LOCK(adapter); + error = ixgbe_setup_low_power_mode(adapter); + IXGBE_CORE_UNLOCK(adapter); + + return (error); +} + +/** + * Methods for going from: + * D0 -> D3: ixgbe_suspend + * D3 -> D0: ixgbe_resume + */ +static int +ixgbe_suspend(device_t dev) +{ + struct adapter *adapter = device_get_softc(dev); + int error = 0; + + INIT_DEBUGOUT("ixgbe_suspend: begin"); + + IXGBE_CORE_LOCK(adapter); + + error = ixgbe_setup_low_power_mode(adapter); + + /* Save state and power down */ + pci_save_state(dev); + pci_set_powerstate(dev, PCI_POWERSTATE_D3); + + IXGBE_CORE_UNLOCK(adapter); + + return (error); +} + +static int +ixgbe_resume(device_t dev) +{ + struct adapter *adapter = device_get_softc(dev); + struct ifnet *ifp = adapter->ifp; + struct ixgbe_hw *hw = &adapter->hw; + u32 wus; + + INIT_DEBUGOUT("ixgbe_resume: begin"); + IXGBE_CORE_LOCK(adapter); - ixgbe_stop(adapter); + + pci_set_powerstate(dev, PCI_POWERSTATE_D0); + pci_restore_state(dev); + + /* Read & clear WUS register */ + wus = IXGBE_READ_REG(hw, IXGBE_WUS); + if (wus) + device_printf(dev, "Woken up by (WUS): %#010x\n", + IXGBE_READ_REG(hw, IXGBE_WUS)); + IXGBE_WRITE_REG(hw, IXGBE_WUS, 0xffffffff); + /* And clear WUFC until next low-power transition */ + IXGBE_WRITE_REG(hw, IXGBE_WUFC, 0); + + /* + * Required after D3->D0 transition; + * will re-advertise all previous advertised speeds + */ + if (ifp->if_flags & IFF_UP) + ixgbe_init_locked(adapter); + IXGBE_CORE_UNLOCK(adapter); + + INIT_DEBUGOUT("ixgbe_resume: end"); return (0); } @@ -735,13 +796,13 @@ ixgbe_ioctl(struct ifnet * ifp, u_long c break; case SIOCSIFMTU: IOCTL_DEBUGOUT("ioctl: SIOCSIFMTU (Set Interface MTU)"); - if (ifr->ifr_mtu > IXGBE_MAX_FRAME_SIZE - ETHER_HDR_LEN) { + if (ifr->ifr_mtu > IXGBE_MAX_MTU) { error = EINVAL; } else { IXGBE_CORE_LOCK(adapter); ifp->if_mtu = ifr->ifr_mtu; adapter->max_frame_size = - ifp->if_mtu + ETHER_HDR_LEN + ETHER_CRC_LEN; + ifp->if_mtu + IXGBE_MTU_HDR; ixgbe_init_locked(adapter); IXGBE_CORE_UNLOCK(adapter); } @@ -890,7 +951,7 @@ ixgbe_init_locked(struct adapter *adapte /* Prepare transmit descriptors and buffers */ if (ixgbe_setup_transmit_structures(adapter)) { - device_printf(dev,"Could not setup transmit structures\n"); + device_printf(dev, "Could not setup transmit structures\n"); ixgbe_stop(adapter); return; } @@ -916,7 +977,7 @@ ixgbe_init_locked(struct adapter *adapte /* Prepare receive descriptors and buffers */ if (ixgbe_setup_receive_structures(adapter)) { - device_printf(dev,"Could not setup receive structures\n"); + device_printf(dev, "Could not setup receive structures\n"); ixgbe_stop(adapter); return; } @@ -931,11 +992,16 @@ ixgbe_init_locked(struct adapter *adapte /* Add for Module detection */ if (hw->mac.type == ixgbe_mac_82599EB) - gpie |= IXGBE_SDP2_GPIEN_BY_MAC(hw); + gpie |= IXGBE_SDP2_GPIEN; - /* Thermal Failure Detection */ - if (hw->mac.type == ixgbe_mac_X540) - gpie |= IXGBE_SDP0_GPIEN_BY_MAC(hw); + /* + * Thermal Failure Detection (X540) + * Link Detection (X552) + */ + if (hw->mac.type == ixgbe_mac_X540 || + hw->device_id == IXGBE_DEV_ID_X550EM_X_SFP || + hw->device_id == IXGBE_DEV_ID_X550EM_X_10G_T) + gpie |= IXGBE_SDP0_GPIEN_X540; if (adapter->msix > 1) { /* Enable Enhanced MSIX mode */ @@ -947,6 +1013,7 @@ ixgbe_init_locked(struct adapter *adapte /* Set MTU size */ if (ifp->if_mtu > ETHERMTU) { + /* aka IXGBE_MAXFRS on 82599 and newer */ mhadd = IXGBE_READ_REG(hw, IXGBE_MHADD); mhadd &= ~IXGBE_MHADD_MFS_MASK; mhadd |= adapter->max_frame_size << IXGBE_MHADD_MFS_SHIFT; @@ -954,7 +1021,6 @@ ixgbe_init_locked(struct adapter *adapte } /* Now enable all the queues */ - for (int i = 0; i < adapter->num_queues; i++) { txdctl = IXGBE_READ_REG(hw, IXGBE_TXDCTL(i)); txdctl |= IXGBE_TXDCTL_ENABLE; @@ -1071,55 +1137,25 @@ ixgbe_init_locked(struct adapter *adapte /* Set moderation on the Link interrupt */ IXGBE_WRITE_REG(hw, IXGBE_EITR(adapter->vector), IXGBE_LINK_ITR); + /* Configure Energy Efficient Ethernet for supported devices */ + if (adapter->eee_support) + ixgbe_setup_eee(hw, adapter->eee_enabled); + /* Config/Enable Link */ ixgbe_config_link(adapter); /* Hardware Packet Buffer & Flow Control setup */ - { - u32 rxpb, frame, size, tmp; - - frame = adapter->max_frame_size; - - /* Calculate High Water */ - switch (hw->mac.type) { - case ixgbe_mac_X540: - case ixgbe_mac_X550: - case ixgbe_mac_X550EM_a: - case ixgbe_mac_X550EM_x: - tmp = IXGBE_DV_X540(frame, frame); - break; - default: - tmp = IXGBE_DV(frame, frame); - break; - } - size = IXGBE_BT2KB(tmp); - rxpb = IXGBE_READ_REG(hw, IXGBE_RXPBSIZE(0)) >> 10; - hw->fc.high_water[0] = rxpb - size; + ixgbe_config_delay_values(adapter); - /* Now calculate Low Water */ - switch (hw->mac.type) { - case ixgbe_mac_X540: - case ixgbe_mac_X550: - case ixgbe_mac_X550EM_a: - case ixgbe_mac_X550EM_x: - tmp = IXGBE_LOW_DV_X540(frame); - break; - default: - tmp = IXGBE_LOW_DV(frame); - break; - } - hw->fc.low_water[0] = IXGBE_BT2KB(tmp); - - hw->fc.requested_mode = adapter->fc; - hw->fc.pause_time = IXGBE_FC_PAUSE; - hw->fc.send_xon = TRUE; - } /* Initialize the FC settings */ ixgbe_start_hw(hw); /* Set up VLAN support and filter */ ixgbe_setup_vlan_hw_support(adapter); + /* Setup DMA Coalescing */ + ixgbe_config_dmac(adapter); + /* And now turn on interrupts */ ixgbe_enable_intr(adapter); @@ -1140,6 +1176,46 @@ ixgbe_init(void *arg) return; } +static void +ixgbe_config_delay_values(struct adapter *adapter) +{ + struct ixgbe_hw *hw = &adapter->hw; + u32 rxpb, frame, size, tmp; + + frame = adapter->max_frame_size; + + /* Calculate High Water */ + switch (hw->mac.type) { + case ixgbe_mac_X540: + case ixgbe_mac_X550: + case ixgbe_mac_X550EM_x: + tmp = IXGBE_DV_X540(frame, frame); + break; + default: + tmp = IXGBE_DV(frame, frame); + break; + } + size = IXGBE_BT2KB(tmp); + rxpb = IXGBE_READ_REG(hw, IXGBE_RXPBSIZE(0)) >> 10; + hw->fc.high_water[0] = rxpb - size; + + /* Now calculate Low Water */ + switch (hw->mac.type) { + case ixgbe_mac_X540: + case ixgbe_mac_X550: + case ixgbe_mac_X550EM_x: + tmp = IXGBE_LOW_DV_X540(frame); + break; + default: + tmp = IXGBE_LOW_DV(frame); + break; + } + hw->fc.low_water[0] = IXGBE_BT2KB(tmp); + + hw->fc.requested_mode = adapter->fc; + hw->fc.pause_time = IXGBE_FC_PAUSE; + hw->fc.send_xon = TRUE; +} /* ** @@ -1270,6 +1346,11 @@ ixgbe_legacy_irq(void *arg) if (reg_eicr & IXGBE_EICR_LSC) taskqueue_enqueue(adapter->tq, &adapter->link_task); + /* External PHY interrupt */ + if (hw->device_id == IXGBE_DEV_ID_X550EM_X_10G_T && + (reg_eicr & IXGBE_EICR_GPI_SDP0_X540)) + taskqueue_enqueue(adapter->tq, &adapter->phy_task); + if (more) taskqueue_enqueue(que->tq, &que->que_task); else @@ -1378,9 +1459,9 @@ ixgbe_msix_link(void *arg) { struct adapter *adapter = arg; struct ixgbe_hw *hw = &adapter->hw; - u32 reg_eicr; + u32 reg_eicr, mod_mask; - ++adapter->vector_irq; + ++adapter->link_irq; /* First get the cause */ reg_eicr = IXGBE_READ_REG(hw, IXGBE_EICS); @@ -1408,42 +1489,46 @@ ixgbe_msix_link(void *arg) device_printf(adapter->dev, "\nCRITICAL: ECC ERROR!! " "Please Reboot!!\n"); IXGBE_WRITE_REG(hw, IXGBE_EICR, IXGBE_EICR_ECC); - } else + } - if (ixgbe_is_sfp(hw)) { - if (reg_eicr & IXGBE_EICR_GPI_SDP1) { - IXGBE_WRITE_REG(hw, IXGBE_EICR, IXGBE_EICR_GPI_SDP1_BY_MAC(hw)); - taskqueue_enqueue(adapter->tq, &adapter->msf_task); - } else if (reg_eicr & IXGBE_EICR_GPI_SDP2) { - IXGBE_WRITE_REG(hw, IXGBE_EICR, IXGBE_EICR_GPI_SDP2_BY_MAC(hw)); - taskqueue_enqueue(adapter->tq, &adapter->mod_task); - } + /* Check for over temp condition */ + if (reg_eicr & IXGBE_EICR_TS) { + device_printf(adapter->dev, "\nCRITICAL: OVER TEMP!! " + "PHY IS SHUT DOWN!!\n"); + device_printf(adapter->dev, "System shutdown required!\n"); + IXGBE_WRITE_REG(hw, IXGBE_EICR, IXGBE_EICR_TS); + } + } + + /* Pluggable optics-related interrupt */ + if (hw->device_id == IXGBE_DEV_ID_X550EM_X_SFP) + mod_mask = IXGBE_EICR_GPI_SDP0_X540; + else + mod_mask = IXGBE_EICR_GPI_SDP2_BY_MAC(hw); + + if (ixgbe_is_sfp(hw)) { + if (reg_eicr & IXGBE_EICR_GPI_SDP1_BY_MAC(hw)) { + IXGBE_WRITE_REG(hw, IXGBE_EICR, IXGBE_EICR_GPI_SDP1_BY_MAC(hw)); + taskqueue_enqueue(adapter->tq, &adapter->msf_task); + } else if (reg_eicr & mod_mask) { + IXGBE_WRITE_REG(hw, IXGBE_EICR, mod_mask); + taskqueue_enqueue(adapter->tq, &adapter->mod_task); } - } + } /* Check for fan failure */ if ((hw->device_id == IXGBE_DEV_ID_82598AT) && - (reg_eicr & IXGBE_EICR_GPI_SDP1_BY_MAC(hw))) { + (reg_eicr & IXGBE_EICR_GPI_SDP1)) { + IXGBE_WRITE_REG(hw, IXGBE_EICR, IXGBE_EICR_GPI_SDP1); device_printf(adapter->dev, "\nCRITICAL: FAN FAILURE!! " "REPLACE IMMEDIATELY!!\n"); - IXGBE_WRITE_REG(hw, IXGBE_EICR, IXGBE_EICR_GPI_SDP1_BY_MAC(hw)); } - /* Check for over temp condition */ - switch (hw->mac.type) { - case ixgbe_mac_X540: - case ixgbe_mac_X550: - case ixgbe_mac_X550EM_a: - if (reg_eicr & IXGBE_EICR_TS) { - device_printf(adapter->dev, "\nCRITICAL: OVER TEMP!! " - "PHY IS SHUT DOWN!!\n"); - device_printf(adapter->dev, "System shutdown required\n"); - IXGBE_WRITE_REG(hw, IXGBE_EICR, IXGBE_EICR_TS); - } - break; - default: - /* Other MACs have no thermal sensor interrupt */ - break; + /* External PHY interrupt */ + if (hw->device_id == IXGBE_DEV_ID_X550EM_X_10G_T && + (reg_eicr & IXGBE_EICR_GPI_SDP0_X540)) { + IXGBE_WRITE_REG(hw, IXGBE_EICR, IXGBE_EICR_GPI_SDP0_X540); + taskqueue_enqueue(adapter->tq, &adapter->phy_task); } IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMS, IXGBE_EIMS_OTHER); @@ -1542,20 +1627,26 @@ ixgbe_media_status(struct ifnet * ifp, s if (layer & IXGBE_PHYSICAL_LAYER_10GBASE_KR) switch (adapter->link_speed) { case IXGBE_LINK_SPEED_10GB_FULL: - ifmr->ifm_active |= IFM_10_T | IFM_FDX; + ifmr->ifm_active |= IFM_10G_SR | IFM_FDX; + break; + case IXGBE_LINK_SPEED_2_5GB_FULL: + ifmr->ifm_active |= IFM_2500_SX | IFM_FDX; break; case IXGBE_LINK_SPEED_1GB_FULL: - ifmr->ifm_active |= IFM_10_5 | IFM_FDX; + ifmr->ifm_active |= IFM_1000_CX | IFM_FDX; break; } - if (layer & IXGBE_PHYSICAL_LAYER_10GBASE_KX4 + else if (layer & IXGBE_PHYSICAL_LAYER_10GBASE_KX4 || layer & IXGBE_PHYSICAL_LAYER_1000BASE_KX) switch (adapter->link_speed) { case IXGBE_LINK_SPEED_10GB_FULL: - ifmr->ifm_active |= IFM_10_2 | IFM_FDX; + ifmr->ifm_active |= IFM_10G_CX4 | IFM_FDX; + break; + case IXGBE_LINK_SPEED_2_5GB_FULL: + ifmr->ifm_active |= IFM_2500_SX | IFM_FDX; break; case IXGBE_LINK_SPEED_1GB_FULL: - ifmr->ifm_active |= IFM_10_5 | IFM_FDX; + ifmr->ifm_active |= IFM_1000_CX | IFM_FDX; break; } @@ -1564,10 +1655,12 @@ ixgbe_media_status(struct ifnet * ifp, s ifmr->ifm_active |= IFM_UNKNOWN; #if __FreeBSD_version >= 900025 - /* Flow control setting */ - if (adapter->fc == ixgbe_fc_rx_pause || adapter->fc == ixgbe_fc_full) + /* Display current flow control setting used on link */ + if (hw->fc.current_mode == ixgbe_fc_rx_pause || + hw->fc.current_mode == ixgbe_fc_full) ifmr->ifm_active |= IFM_ETH_RXPAUSE; - if (adapter->fc == ixgbe_fc_tx_pause || adapter->fc == ixgbe_fc_full) + if (hw->fc.current_mode == ixgbe_fc_tx_pause || + hw->fc.current_mode == ixgbe_fc_full) ifmr->ifm_active |= IFM_ETH_TXPAUSE; #endif @@ -1597,21 +1690,22 @@ ixgbe_media_change(struct ifnet * ifp) if (IFM_TYPE(ifm->ifm_media) != IFM_ETHER) return (EINVAL); + if (hw->phy.media_type == ixgbe_media_type_backplane) + return (EPERM); + /* ** We don't actually need to check against the supported ** media types of the adapter; ifmedia will take care of ** that for us. - ** NOTE: this relies on falling thru the switch - ** to get all the values set, it can be confusing. */ switch (IFM_SUBTYPE(ifm->ifm_media)) { case IFM_AUTO: case IFM_10G_T: speed |= IXGBE_LINK_SPEED_100_FULL; case IFM_10G_LRM: - case IFM_10G_SR: /* KR, too */ + case IFM_10G_SR: /* KR, too */ case IFM_10G_LR: - case IFM_10G_CX4: /* KX4 for now */ + case IFM_10G_CX4: /* KX4 */ speed |= IXGBE_LINK_SPEED_1GB_FULL; case IFM_10G_TWINAX: speed |= IXGBE_LINK_SPEED_10GB_FULL; @@ -1620,7 +1714,7 @@ ixgbe_media_change(struct ifnet * ifp) speed |= IXGBE_LINK_SPEED_100_FULL; case IFM_1000_LX: case IFM_1000_SX: - case IFM_1000_CX: /* KX until there's real support */ + case IFM_1000_CX: /* KX */ speed |= IXGBE_LINK_SPEED_1GB_FULL; break; case IFM_100_TX: @@ -1640,7 +1734,7 @@ ixgbe_media_change(struct ifnet * ifp) return (0); invalid: - device_printf(adapter->dev, "Invalid media type\n"); + device_printf(adapter->dev, "Invalid media type!\n"); return (EINVAL); } @@ -1865,7 +1959,6 @@ ixgbe_update_link_status(struct adapter struct ifnet *ifp = adapter->ifp; device_t dev = adapter->dev; - if (adapter->link_up){ if (adapter->link_active == FALSE) { if (bootverbose) @@ -1875,6 +1968,8 @@ ixgbe_update_link_status(struct adapter adapter->link_active = TRUE; /* Update any Flow Control changes */ ixgbe_fc_enable(&adapter->hw); + /* Update DMA coalescing config */ + ixgbe_config_dmac(adapter); if_link_state_change(ifp, LINK_STATE_UP); } } else { /* Link down */ @@ -1961,7 +2056,7 @@ ixgbe_identify_hardware(struct adapter * /* We need this here to set the num_segs below */ ixgbe_set_mac_type(hw); - /* Pick up the 82599 and VF settings */ + /* Pick up the 82599 settings */ if (hw->mac.type != ixgbe_mac_82598EB) { hw->phy.smart_speed = ixgbe_smart_speed; adapter->num_segs = IXGBE_82599_SCATTER; @@ -2071,6 +2166,7 @@ ixgbe_allocate_legacy(struct adapter *ad TASK_INIT(&adapter->link_task, 0, ixgbe_handle_link, adapter); TASK_INIT(&adapter->mod_task, 0, ixgbe_handle_mod, adapter); TASK_INIT(&adapter->msf_task, 0, ixgbe_handle_msf, adapter); + TASK_INIT(&adapter->phy_task, 0, ixgbe_handle_phy, adapter); #ifdef IXGBE_FDIR TASK_INIT(&adapter->fdir_task, 0, ixgbe_reinit_fdir, adapter); #endif @@ -2111,30 +2207,6 @@ ixgbe_allocate_msix(struct adapter *adap int error, rid, vector = 0; int cpu_id = 0; -#ifdef RSS - /* - * If we're doing RSS, the number of queues needs to - * match the number of RSS buckets that are configured. - * - * + If there's more queues than RSS buckets, we'll end - * up with queues that get no traffic. - * - * + If there's more RSS buckets than queues, we'll end - * up having multiple RSS buckets map to the same queue, - * so there'll be some contention. - */ - if (adapter->num_queues != rss_getnumbuckets()) { - device_printf(dev, - "%s: number of queues (%d) != number of RSS buckets (%d)" - "; performance will be impacted.\n", - __func__, - adapter->num_queues, - rss_getnumbuckets()); - } -#endif - - - for (int i = 0; i < adapter->num_queues; i++, vector++, que++, txr++) { rid = vector + 1; que->res = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid, @@ -2158,14 +2230,6 @@ ixgbe_allocate_msix(struct adapter *adap #endif que->msix = vector; adapter->active_queues |= (u64)(1 << que->msix); -#ifdef RSS - /* - * The queue ID is used as the RSS layer bucket ID. - * We look up the queue ID -> RSS CPU ID and select - * that. - */ - cpu_id = rss_getcpu(i % rss_getnumbuckets()); -#else /* * Bind the msix vector, and thus the * rings to the corresponding cpu. @@ -2175,39 +2239,18 @@ ixgbe_allocate_msix(struct adapter *adap */ if (adapter->num_queues > 1) cpu_id = i; -#endif + if (adapter->num_queues > 1) bus_bind_intr(dev, que->res, cpu_id); -#ifdef RSS - device_printf(dev, - "Bound RSS bucket %d to CPU %d\n", - i, cpu_id); -#else -#if 0 // This is too noisy - device_printf(dev, - "Bound queue %d to cpu %d\n", - i, cpu_id); -#endif -#endif - - #ifndef IXGBE_LEGACY_TX TASK_INIT(&txr->txq_task, 0, ixgbe_deferred_mq_start, txr); #endif TASK_INIT(&que->que_task, 0, ixgbe_handle_que, que); que->tq = taskqueue_create_fast("ixgbe_que", M_NOWAIT, taskqueue_thread_enqueue, &que->tq); -#ifdef RSS - taskqueue_start_threads_pinned(&que->tq, 1, PI_NET, - cpu_id, - "%s (bucket %d)", - device_get_nameunit(adapter->dev), - cpu_id); -#else taskqueue_start_threads(&que->tq, 1, PI_NET, "%s que", device_get_nameunit(adapter->dev)); -#endif } /* and Link */ @@ -2236,6 +2279,7 @@ ixgbe_allocate_msix(struct adapter *adap TASK_INIT(&adapter->link_task, 0, ixgbe_handle_link, adapter); TASK_INIT(&adapter->mod_task, 0, ixgbe_handle_mod, adapter); TASK_INIT(&adapter->msf_task, 0, ixgbe_handle_msf, adapter); + TASK_INIT(&adapter->phy_task, 0, ixgbe_handle_phy, adapter); #ifdef IXGBE_FDIR TASK_INIT(&adapter->fdir_task, 0, ixgbe_reinit_fdir, adapter); #endif @@ -2282,12 +2326,6 @@ ixgbe_setup_msix(struct adapter *adapter /* Figure out a reasonable auto config value */ queues = (mp_ncpus > (msgs-1)) ? (msgs-1) : mp_ncpus; -#ifdef RSS - /* If we're doing RSS, clamp at the number of RSS buckets */ - if (queues > rss_getnumbuckets()) - queues = rss_getnumbuckets(); -#endif - if (ixgbe_num_queues != 0) queues = ixgbe_num_queues; @@ -2461,6 +2499,12 @@ ixgbe_setup_interface(device_t dev, stru #if __FreeBSD_version >= 1100036 if_setgetcounterfn(ifp, ixgbe_get_counter); #endif +#if __FreeBSD_version >= 1100045 + /* TSO parameters */ + ifp->if_hw_tsomax = 65518; + ifp->if_hw_tsomaxsegcount = IXGBE_82599_SCATTER; + ifp->if_hw_tsomaxsegsize = 2048; +#endif #ifndef IXGBE_LEGACY_TX ifp->if_transmit = ixgbe_mq_start; ifp->if_qflush = ixgbe_qflush; @@ -2544,10 +2588,6 @@ ixgbe_add_media_types(struct adapter *ad ifmedia_add(&adapter->media, IFM_ETHER | IFM_10G_CX4, 0, NULL); if (layer & IXGBE_PHYSICAL_LAYER_1000BASE_SX) ifmedia_add(&adapter->media, IFM_ETHER | IFM_1000_SX, 0, NULL); -#if 0 - if (layer & IXGBE_PHYSICAL_LAYER_1000BASE_LX) - ifmedia_add(&adapter->media, IFM_ETHER | IFM_1000_LX, 0, NULL); -#endif /* ** Other (no matching FreeBSD media type): @@ -2556,25 +2596,24 @@ ixgbe_add_media_types(struct adapter *ad */ if (layer & IXGBE_PHYSICAL_LAYER_10GBASE_KR) { device_printf(dev, "Media supported: 10GbaseKR\n"); - device_printf(dev, "10GbaseKR mapped to 10baseT\n"); - ifmedia_add(&adapter->media, IFM_ETHER | IFM_10_T, 0, NULL); + device_printf(dev, "10GbaseKR mapped to 10GbaseSR\n"); + ifmedia_add(&adapter->media, IFM_ETHER | IFM_10G_SR, 0, NULL); } if (layer & IXGBE_PHYSICAL_LAYER_10GBASE_KX4) { device_printf(dev, "Media supported: 10GbaseKX4\n"); - device_printf(dev, "10GbaseKX4 mapped to 10base2\n"); - ifmedia_add(&adapter->media, IFM_ETHER | IFM_10_2, 0, NULL); + device_printf(dev, "10GbaseKX4 mapped to 10GbaseCX4\n"); + ifmedia_add(&adapter->media, IFM_ETHER | IFM_10G_CX4, 0, NULL); } if (layer & IXGBE_PHYSICAL_LAYER_1000BASE_KX) { device_printf(dev, "Media supported: 1000baseKX\n"); - device_printf(dev, "1000baseKX mapped to 10base5\n"); - ifmedia_add(&adapter->media, IFM_ETHER | IFM_10_5, 0, NULL); + device_printf(dev, "1000baseKX mapped to 1000baseCX\n"); + ifmedia_add(&adapter->media, IFM_ETHER | IFM_1000_CX, 0, NULL); } if (layer & IXGBE_PHYSICAL_LAYER_1000BASE_BX) { /* Someday, someone will care about you... */ device_printf(dev, "Media supported: 1000baseBX\n"); } - /* Very old */ if (hw->device_id == IXGBE_DEV_ID_82598AT) { ifmedia_add(&adapter->media, IFM_ETHER | IFM_1000_T | IFM_FDX, 0, NULL); @@ -2702,38 +2741,36 @@ ixgbe_initialise_rss_mapping(struct adap { struct ixgbe_hw *hw = &adapter->hw; uint32_t reta; - int i, j, queue_id; + int i, j, queue_id, table_size; + int index_mult; uint32_t rss_key[10]; uint32_t mrqc; -#ifdef RSS - uint32_t rss_hash_config; -#endif /* Setup RSS */ reta = 0; -#ifdef RSS - /* Fetch the configured RSS key */ - rss_getkey((uint8_t *) &rss_key); -#else /* set up random bits */ arc4rand(&rss_key, sizeof(rss_key), 0); -#endif + + /* Set multiplier for RETA setup and table size based on MAC */ + index_mult = 0x1; + table_size = 128; + switch (adapter->hw.mac.type) { + case ixgbe_mac_82598EB: + index_mult = 0x11; + break; + case ixgbe_mac_X550: + case ixgbe_mac_X550EM_x: + table_size = 512; + break; + default: + break; + } /* Set up the redirection table */ - for (i = 0, j = 0; i < 128; i++, j++) { + for (i = 0, j = 0; i < table_size; i++, j++) { if (j == adapter->num_queues) j = 0; -#ifdef RSS - /* - * Fetch the RSS bucket id for the given indirection entry. - * Cap it at the number of configured buckets (which is - * num_queues.) - */ - queue_id = rss_get_indirection_to_bucket(i); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Wed May 27 17:44:15 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1DA18D46; Wed, 27 May 2015 17:44:15 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.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 E6B48D04; Wed, 27 May 2015 17:44:14 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RHiET7024573; Wed, 27 May 2015 17:44:14 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RHiEmG024572; Wed, 27 May 2015 17:44:14 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201505271744.t4RHiEmG024572@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Wed, 27 May 2015 17:44:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r283621 - vendor/clang/clang-3.6.x X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 17:44:15 -0000 Author: dim Date: Wed May 27 17:44:14 2015 New Revision: 283621 URL: https://svnweb.freebsd.org/changeset/base/283621 Log: Make a branch for keeping clang 3.6.x up-to-date, so we can import trunk snapshots into dist. Added: - copied from r283619, vendor/clang/dist/ Directory Properties: vendor/clang/clang-3.6.x/ (props changed) From owner-svn-src-all@FreeBSD.ORG Wed May 27 17:51:08 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 99215280; Wed, 27 May 2015 17:51:08 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.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 6D458EB0; Wed, 27 May 2015 17:51:08 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RHp8ua026284; Wed, 27 May 2015 17:51:08 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RHp7Rr026275; Wed, 27 May 2015 17:51:07 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <201505271751.t4RHp7Rr026275@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Wed, 27 May 2015 17:51:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283622 - head/lib/libutil X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 17:51:08 -0000 Author: jhb Date: Wed May 27 17:51:06 2015 New Revision: 283622 URL: https://svnweb.freebsd.org/changeset/base/283622 Log: Add to the SYNOPSIS of the kinfo_get*() functions since these functions all return types that are defined in that header. MFC after: 1 week Modified: head/lib/libutil/kinfo_getallproc.3 head/lib/libutil/kinfo_getfile.3 head/lib/libutil/kinfo_getproc.3 head/lib/libutil/kinfo_getvmmap.3 Modified: head/lib/libutil/kinfo_getallproc.3 ============================================================================== --- head/lib/libutil/kinfo_getallproc.3 Wed May 27 17:44:14 2015 (r283621) +++ head/lib/libutil/kinfo_getallproc.3 Wed May 27 17:51:06 2015 (r283622) @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd July 9, 2009 +.Dd May 27, 2015 .Dt KINFO_GETALLPROC 3 .Os .Sh NAME @@ -35,6 +35,7 @@ .Lb libutil .Sh SYNOPSIS .In sys/types.h +.In sys/user.h .In libutil.h .Ft struct kinfo_proc * .Fn kinfo_getallproc "int *cntp" Modified: head/lib/libutil/kinfo_getfile.3 ============================================================================== --- head/lib/libutil/kinfo_getfile.3 Wed May 27 17:44:14 2015 (r283621) +++ head/lib/libutil/kinfo_getfile.3 Wed May 27 17:51:06 2015 (r283622) @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd December 6, 2008 +.Dd May 27, 2015 .Dt KINFO_GETFILE 3 .Os .Sh NAME @@ -35,6 +35,7 @@ .Lb libutil .Sh SYNOPSIS .In sys/types.h +.In sys/user.h .In libutil.h .Ft struct kinfo_file * .Fn kinfo_getfile "pid_t pid" "int *cntp" Modified: head/lib/libutil/kinfo_getproc.3 ============================================================================== --- head/lib/libutil/kinfo_getproc.3 Wed May 27 17:44:14 2015 (r283621) +++ head/lib/libutil/kinfo_getproc.3 Wed May 27 17:51:06 2015 (r283622) @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 1, 2013 +.Dd May 27, 2015 .Dt KINFO_GETPROC 3 .Os .Sh NAME @@ -35,6 +35,7 @@ .Lb libutil .Sh SYNOPSIS .In sys/types.h +.In sys/user.h .In libutil.h .Ft struct kinfo_proc * .Fn kinfo_getproc "pid_t pid" Modified: head/lib/libutil/kinfo_getvmmap.3 ============================================================================== --- head/lib/libutil/kinfo_getvmmap.3 Wed May 27 17:44:14 2015 (r283621) +++ head/lib/libutil/kinfo_getvmmap.3 Wed May 27 17:51:06 2015 (r283622) @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd December 6, 2008 +.Dd May 27, 2015 .Dt KINFO_GETVMMAP 3 .Os .Sh NAME @@ -35,6 +35,7 @@ .Lb libutil .Sh SYNOPSIS .In sys/types.h +.In sys/user.h .In libutil.h .Ft struct kinfo_vmentry * .Fn kinfo_getvmmap "pid_t pid" "int *cntp" From owner-svn-src-all@FreeBSD.ORG Wed May 27 18:07:33 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8439B32B; Wed, 27 May 2015 18:07:33 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.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 73439300; Wed, 27 May 2015 18:07:33 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RI7XeW038605; Wed, 27 May 2015 18:07:33 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RI7XXg038604; Wed, 27 May 2015 18:07:33 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201505271807.t4RI7XXg038604@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 27 May 2015 18:07:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283623 - head/sys/sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 18:07:33 -0000 Author: kib Date: Wed May 27 18:07:32 2015 New Revision: 283623 URL: https://svnweb.freebsd.org/changeset/base/283623 Log: Bump __FreeBSD_version for the r283602, which changed dounmount() to require referenced struct mount *. Sponsored by: The FreeBSD Foundation Modified: head/sys/sys/param.h Modified: head/sys/sys/param.h ============================================================================== --- head/sys/sys/param.h Wed May 27 17:51:06 2015 (r283622) +++ head/sys/sys/param.h Wed May 27 18:07:32 2015 (r283623) @@ -58,7 +58,7 @@ * in the range 5 to 9. */ #undef __FreeBSD_version -#define __FreeBSD_version 1100074 /* Master, propagated to newvers */ +#define __FreeBSD_version 1100075 /* Master, propagated to newvers */ /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, From owner-svn-src-all@FreeBSD.ORG Wed May 27 18:11:08 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 91A27521; Wed, 27 May 2015 18:11:08 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.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 7E59D671; Wed, 27 May 2015 18:11:08 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RIB8oo040200; Wed, 27 May 2015 18:11:08 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RIB6iJ040178; Wed, 27 May 2015 18:11:06 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <201505271811.t4RIB6iJ040178@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Wed, 27 May 2015 18:11:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283624 - in head: lib/libutil sys/sys sys/vm usr.bin/vmstat X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 18:11:08 -0000 Author: jhb Date: Wed May 27 18:11:05 2015 New Revision: 283624 URL: https://svnweb.freebsd.org/changeset/base/283624 Log: Export a list of VM objects in the system via a sysctl. The list can be examined via 'vmstat -o'. It can be used to determine which files are using physical pages of memory and how much each is using. Differential Revision: https://reviews.freebsd.org/D2277 Reviewed by: alc, kib MFC after: 2 weeks Sponsored by: Norse Corp, Inc. (forward porting to HEAD/10) Added: head/lib/libutil/kinfo_getvmobject.3 (contents, props changed) head/lib/libutil/kinfo_getvmobject.c (contents, props changed) Modified: head/lib/libutil/Makefile head/lib/libutil/libutil.h head/sys/sys/user.h head/sys/vm/vm_object.c head/usr.bin/vmstat/vmstat.8 head/usr.bin/vmstat/vmstat.c Modified: head/lib/libutil/Makefile ============================================================================== --- head/lib/libutil/Makefile Wed May 27 18:07:32 2015 (r283623) +++ head/lib/libutil/Makefile Wed May 27 18:11:05 2015 (r283624) @@ -10,7 +10,8 @@ SHLIB_MAJOR= 9 SRCS= _secure_path.c auth.c expand_number.c flopen.c fparseln.c gr_util.c \ hexdump.c humanize_number.c kinfo_getfile.c kinfo_getfile.c \ - kinfo_getallproc.c kinfo_getproc.c kinfo_getvmmap.c kld.c \ + kinfo_getallproc.c kinfo_getproc.c kinfo_getvmmap.c \ + kinfo_getvmobject.c kld.c \ login_auth.c login_cap.c \ login_class.c login_crypt.c login_ok.c login_times.c login_tty.c \ pidfile.c property.c pty.c pw_util.c quotafile.c realhostname.c \ @@ -27,7 +28,8 @@ CFLAGS+= -I${.CURDIR} -I${.CURDIR}/../li MAN+= expand_number.3 flopen.3 fparseln.3 hexdump.3 \ humanize_number.3 kinfo_getallproc.3 kinfo_getfile.3 \ - kinfo_getproc.3 kinfo_getvmmap.3 kld.3 login_auth.3 login_cap.3 \ + kinfo_getproc.3 kinfo_getvmmap.3 kinfo_getvmobject.3 kld.3 \ + login_auth.3 login_cap.3 \ login_class.3 login_ok.3 login_times.3 login_tty.3 pidfile.3 \ property.3 pty.3 quotafile.3 realhostname.3 realhostname_sa.3 \ _secure_path.3 trimdomain.3 uucplock.3 pw_util.3 Added: head/lib/libutil/kinfo_getvmobject.3 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/lib/libutil/kinfo_getvmobject.3 Wed May 27 18:11:05 2015 (r283624) @@ -0,0 +1,74 @@ +.\" +.\" Copyright (c) 2015 John Baldwin +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" $FreeBSD$ +.\" +.Dd May 27, 2015 +.Dt KINFO_GETVMOBJECT 3 +.Os +.Sh NAME +.Nm kinfo_getvmobject +.Nd function for getting system-wide memory information +.Sh LIBRARY +.Lb libutil +.Sh SYNOPSIS +.In sys/types.h +.In sys/user.h +.In libutil.h +.Ft struct kinfo_vmobject * +.Fn kinfo_getvmobject "int *cntp" +.Sh DESCRIPTION +This function is used to obtain information about the objects using memory +in the system. +.Pp +The +.Ar cntp +argument allows the caller to know how many records are returned. +.Pp +This function is a wrapper around the +.Dq vm.objects +.Xr sysctl 3 +MIB. +While the kernel returns a packed structure, this function expands the +data into a fixed record format. +.Sh RETURN VALUES +On success the +.Fn kinfo_getvmobject +function returns a pointer to an array of +.Vt struct kinfo_vmobject +structures as defined by +.In sys/user.h . +The array is allocated by an internal call to +.Xr malloc 3 +and must be freed by the caller with a call to +.Xr free 3 . +On failure the +.Fn kinfo_getvmobject +function returns +.Dv NULL . +.Sh SEE ALSO +.Xr free 3 , +.Xr kinfo_getvmmap 3 , +.Xr malloc 3 Added: head/lib/libutil/kinfo_getvmobject.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/lib/libutil/kinfo_getvmobject.c Wed May 27 18:11:05 2015 (r283624) @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2013 Hudson River Trading LLC + * Written by: John H. Baldwin + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include + +#include "libutil.h" + +struct kinfo_vmobject * +kinfo_getvmobject(int *cntp) +{ + char *buf, *bp, *ep; + struct kinfo_vmobject *kvo, *list, *kp; + size_t len; + int cnt, i; + + buf = NULL; + for (i = 0; i < 3; i++) { + if (sysctlbyname("vm.objects", NULL, &len, NULL, 0) < 0) + return (NULL); + buf = reallocf(buf, len); + if (buf == NULL) + return (NULL); + if (sysctlbyname("vm.objects", buf, &len, NULL, 0) == 0) + goto unpack; + if (errno != ENOMEM) { + free(buf); + return (NULL); + } + } + free(buf); + return (NULL); + +unpack: + /* Count items */ + cnt = 0; + bp = buf; + ep = buf + len; + while (bp < ep) { + kvo = (struct kinfo_vmobject *)(uintptr_t)bp; + bp += kvo->kvo_structsize; + cnt++; + } + + list = calloc(cnt, sizeof(*list)); + if (list == NULL) { + free(buf); + return (NULL); + } + + /* Unpack */ + bp = buf; + kp = list; + while (bp < ep) { + kvo = (struct kinfo_vmobject *)(uintptr_t)bp; + memcpy(kp, kvo, kvo->kvo_structsize); + bp += kvo->kvo_structsize; + kp->kvo_structsize = sizeof(*kp); + kp++; + } + free(buf); + *cntp = cnt; + return (list); +} Modified: head/lib/libutil/libutil.h ============================================================================== --- head/lib/libutil/libutil.h Wed May 27 18:07:32 2015 (r283623) +++ head/lib/libutil/libutil.h Wed May 27 18:11:05 2015 (r283624) @@ -102,6 +102,8 @@ struct kinfo_file * kinfo_getfile(pid_t _pid, int *_cntp); struct kinfo_vmentry * kinfo_getvmmap(pid_t _pid, int *_cntp); +struct kinfo_vmobject * + kinfo_getvmobject(int *_cntp); struct kinfo_proc * kinfo_getallproc(int *_cntp); struct kinfo_proc * Modified: head/sys/sys/user.h ============================================================================== --- head/sys/sys/user.h Wed May 27 18:07:32 2015 (r283623) +++ head/sys/sys/user.h Wed May 27 18:11:05 2015 (r283624) @@ -486,6 +486,27 @@ struct kinfo_vmentry { }; /* + * The "vm.objects" sysctl provides a list of all VM objects in the system + * via an array of these entries. + */ +struct kinfo_vmobject { + int kvo_structsize; /* Variable size of record. */ + int kvo_type; /* Object type: KVME_TYPE_*. */ + uint64_t kvo_size; /* Object size in pages. */ + uint64_t kvo_vn_fileid; /* inode number if vnode. */ + uint32_t kvo_vn_fsid; /* dev_t of vnode location. */ + int kvo_ref_count; /* Reference count. */ + int kvo_shadow_count; /* Shadow count. */ + int kvo_memattr; /* Memory attribute. */ + uint64_t kvo_resident; /* Number of resident pages. */ + uint64_t kvo_active; /* Number of active pages. */ + uint64_t kvo_inactive; /* Number of inactive pages. */ + uint64_t _kvo_qspare[8]; + uint32_t _kvo_ispare[8]; + char kvo_path[PATH_MAX]; /* Pathname, if any. */ +}; + +/* * The KERN_PROC_KSTACK sysctl allows a process to dump the kernel stacks of * another process as a series of entries. Each stack is represented by a * series of symbol names and offsets as generated by stack_sbuf_print(9). Modified: head/sys/vm/vm_object.c ============================================================================== --- head/sys/vm/vm_object.c Wed May 27 18:07:32 2015 (r283623) +++ head/sys/vm/vm_object.c Wed May 27 18:11:05 2015 (r283624) @@ -79,6 +79,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -2286,6 +2287,142 @@ next_page: } } +static int +sysctl_vm_object_list(SYSCTL_HANDLER_ARGS) +{ + struct kinfo_vmobject kvo; + char *fullpath, *freepath; + struct vnode *vp; + struct vattr va; + vm_object_t obj; + vm_page_t m; + int count, error; + + if (req->oldptr == NULL) { + /* + * If an old buffer has not been provided, generate an + * estimate of the space needed for a subsequent call. + */ + mtx_lock(&vm_object_list_mtx); + count = 0; + TAILQ_FOREACH(obj, &vm_object_list, object_list) { + if (obj->type == OBJT_DEAD) + continue; + count++; + } + mtx_unlock(&vm_object_list_mtx); + return (SYSCTL_OUT(req, NULL, sizeof(struct kinfo_vmobject) * + count * 11 / 10)); + } + + error = 0; + + /* + * VM objects are type stable and are never removed from the + * list once added. This allows us to safely read obj->object_list + * after reacquiring the VM object lock. + */ + mtx_lock(&vm_object_list_mtx); + TAILQ_FOREACH(obj, &vm_object_list, object_list) { + if (obj->type == OBJT_DEAD) + continue; + VM_OBJECT_RLOCK(obj); + if (obj->type == OBJT_DEAD) { + VM_OBJECT_RUNLOCK(obj); + continue; + } + mtx_unlock(&vm_object_list_mtx); + kvo.kvo_size = ptoa(obj->size); + kvo.kvo_resident = obj->resident_page_count; + kvo.kvo_ref_count = obj->ref_count; + kvo.kvo_shadow_count = obj->shadow_count; + kvo.kvo_memattr = obj->memattr; + kvo.kvo_active = 0; + kvo.kvo_inactive = 0; + TAILQ_FOREACH(m, &obj->memq, listq) { + /* + * A page may belong to the object but be + * dequeued and set to PQ_NONE while the + * object lock is not held. This makes the + * reads of m->queue below racy, and we do not + * count pages set to PQ_NONE. However, this + * sysctl is only meant to give an + * approximation of the system anyway. + */ + if (m->queue == PQ_ACTIVE) + kvo.kvo_active++; + else if (m->queue == PQ_INACTIVE) + kvo.kvo_inactive++; + } + + kvo.kvo_vn_fileid = 0; + kvo.kvo_vn_fsid = 0; + freepath = NULL; + fullpath = ""; + vp = NULL; + switch (obj->type) { + case OBJT_DEFAULT: + kvo.kvo_type = KVME_TYPE_DEFAULT; + break; + case OBJT_VNODE: + kvo.kvo_type = KVME_TYPE_VNODE; + vp = obj->handle; + vref(vp); + break; + case OBJT_SWAP: + kvo.kvo_type = KVME_TYPE_SWAP; + break; + case OBJT_DEVICE: + kvo.kvo_type = KVME_TYPE_DEVICE; + break; + case OBJT_PHYS: + kvo.kvo_type = KVME_TYPE_PHYS; + break; + case OBJT_DEAD: + kvo.kvo_type = KVME_TYPE_DEAD; + break; + case OBJT_SG: + kvo.kvo_type = KVME_TYPE_SG; + break; + case OBJT_MGTDEVICE: + kvo.kvo_type = KVME_TYPE_MGTDEVICE; + break; + default: + kvo.kvo_type = KVME_TYPE_UNKNOWN; + break; + } + VM_OBJECT_RUNLOCK(obj); + if (vp != NULL) { + vn_fullpath(curthread, vp, &fullpath, &freepath); + vn_lock(vp, LK_SHARED | LK_RETRY); + if (VOP_GETATTR(vp, &va, curthread->td_ucred) == 0) { + kvo.kvo_vn_fileid = va.va_fileid; + kvo.kvo_vn_fsid = va.va_fsid; + } + vput(vp); + } + + strlcpy(kvo.kvo_path, fullpath, sizeof(kvo.kvo_path)); + if (freepath != NULL) + free(freepath, M_TEMP); + + /* Pack record size down */ + kvo.kvo_structsize = offsetof(struct kinfo_vmobject, kvo_path) + + strlen(kvo.kvo_path) + 1; + kvo.kvo_structsize = roundup(kvo.kvo_structsize, + sizeof(uint64_t)); + error = SYSCTL_OUT(req, &kvo, kvo.kvo_structsize); + mtx_lock(&vm_object_list_mtx); + if (error) + break; + } + mtx_unlock(&vm_object_list_mtx); + return (error); +} +SYSCTL_PROC(_vm, OID_AUTO, objects, CTLTYPE_STRUCT | CTLFLAG_RW | CTLFLAG_SKIP | + CTLFLAG_MPSAFE, NULL, 0, sysctl_vm_object_list, "S,kinfo_vmobject", + "List of VM objects"); + #include "opt_ddb.h" #ifdef DDB #include Modified: head/usr.bin/vmstat/vmstat.8 ============================================================================== --- head/usr.bin/vmstat/vmstat.8 Wed May 27 18:07:32 2015 (r283623) +++ head/usr.bin/vmstat/vmstat.8 Wed May 27 18:11:05 2015 (r283624) @@ -37,7 +37,7 @@ .Sh SYNOPSIS .Nm .\" .Op Fl fimst -.Op Fl afHhimPsz +.Op Fl afHhimoPsz .Op Fl M Ar core Op Fl N Ar system .Op Fl c Ar count .Op Fl n Ar devs @@ -119,6 +119,9 @@ Report on the usage of kernel dynamic me by type. .It Fl n Change the maximum number of disks to display from the default of 2. +.It Fl o +Display a list of virtual memory objects in the system and the resident +memory used by each object. .It Fl P Report per-cpu system/user/idle cpu statistics. .It Fl p Modified: head/usr.bin/vmstat/vmstat.c ============================================================================== --- head/usr.bin/vmstat/vmstat.c Wed May 27 18:07:32 2015 (r283623) +++ head/usr.bin/vmstat/vmstat.c Wed May 27 18:11:05 2015 (r283624) @@ -53,6 +53,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -143,12 +144,14 @@ static kvm_t *kd; #define TIMESTAT 0x10 #define VMSTAT 0x20 #define ZMEMSTAT 0x40 +#define OBJSTAT 0x80 static void cpustats(void); static void pcpustats(int, u_long, int); static void devstats(void); static void doforkst(void); static void dointr(unsigned int, int); +static void doobjstat(void); static void dosum(void); static void dovmstat(unsigned int, int); static void domemstat_malloc(void); @@ -181,7 +184,7 @@ main(int argc, char *argv[]) interval = reps = todo = 0; maxshowdevs = 2; hflag = isatty(1); - while ((c = getopt(argc, argv, "ac:fhHiM:mN:n:Pp:stw:z")) != -1) { + while ((c = getopt(argc, argv, "ac:fhHiM:mN:n:oPp:stw:z")) != -1) { switch (c) { case 'a': aflag++; @@ -220,6 +223,9 @@ main(int argc, char *argv[]) errx(1, "number of devices %d is < 0", maxshowdevs); break; + case 'o': + todo |= OBJSTAT; + break; case 'p': if (devstat_buildmatch(optarg, &matches, &num_matches) != 0) errx(1, "%s", devstat_errbuf); @@ -320,6 +326,8 @@ retry_nlist: domemstat_zone(); if (todo & SUMSTAT) dosum(); + if (todo & OBJSTAT) + doobjstat(); #ifdef notyet if (todo & TIMESTAT) dotimes(); @@ -1396,6 +1404,129 @@ domemstat_zone(void) printf("\n"); } +static void +display_object(struct kinfo_vmobject *kvo) +{ + const char *str; + + printf("%5jd ", (uintmax_t)kvo->kvo_resident); + printf("%5jd ", (uintmax_t)kvo->kvo_active); + printf("%5jd ", (uintmax_t)kvo->kvo_inactive); + printf("%3d ", kvo->kvo_ref_count); + printf("%3d ", kvo->kvo_shadow_count); + switch (kvo->kvo_memattr) { +#ifdef VM_MEMATTR_UNCACHEABLE + case VM_MEMATTR_UNCACHEABLE: + str = "UC"; + break; +#endif +#ifdef VM_MEMATTR_WRITE_COMBINING + case VM_MEMATTR_WRITE_COMBINING: + str = "WC"; + break; +#endif +#ifdef VM_MEMATTR_WRITE_THROUGH + case VM_MEMATTR_WRITE_THROUGH: + str = "WT"; + break; +#endif +#ifdef VM_MEMATTR_WRITE_PROTECTED + case VM_MEMATTR_WRITE_PROTECTED: + str = "WP"; + break; +#endif +#ifdef VM_MEMATTR_WRITE_BACK + case VM_MEMATTR_WRITE_BACK: + str = "WB"; + break; +#endif +#ifdef VM_MEMATTR_WEAK_UNCACHEABLE + case VM_MEMATTR_WEAK_UNCACHEABLE: + str = "UC-"; + break; +#endif +#ifdef VM_MEMATTR_WB_WA: + case VM_MEMATTR_WB_WA: + str = "WB"; + break; +#endif +#ifdef VM_MEMATTR_NOCACHE + case VM_MEMATTR_NOCACHE: + str = "NC"; + break; +#endif +#ifdef VM_MEMATTR_DEVICE + case VM_MEMATTR_DEVICE: + str = "DEV"; + break; +#endif +#ifdef VM_MEMATTR_CACHEABLE + case VM_MEMATTR_CACHEABLE: + str = "C"; + break; +#endif +#ifdef VM_MEMATTR_PREFETCHABLE + case VM_MEMATTR_PREFETCHABLE: + str = "PRE"; + break; +#endif + default: + str = "??"; + break; + } + printf("%-3s ", str); + switch (kvo->kvo_type) { + case KVME_TYPE_NONE: + str = "--"; + break; + case KVME_TYPE_DEFAULT: + str = "df"; + break; + case KVME_TYPE_VNODE: + str = "vn"; + break; + case KVME_TYPE_SWAP: + str = "sw"; + break; + case KVME_TYPE_DEVICE: + str = "dv"; + break; + case KVME_TYPE_PHYS: + str = "ph"; + break; + case KVME_TYPE_DEAD: + str = "dd"; + break; + case KVME_TYPE_SG: + str = "sg"; + break; + case KVME_TYPE_UNKNOWN: + default: + str = "??"; + break; + } + printf("%-2s ", str); + printf("%-s\n", kvo->kvo_path); +} + +static void +doobjstat(void) +{ + struct kinfo_vmobject *kvo; + int cnt, i; + + kvo = kinfo_getvmobject(&cnt); + if (kvo == NULL) { + warn("Failed to fetch VM object list"); + return; + } + printf("%5s %5s %5s %3s %3s %3s %2s %s\n", "RES", "ACT", "INACT", + "REF", "SHD", "CM", "TP", "PATH"); + for (i = 0; i < cnt; i++) + display_object(&kvo[i]); + free(kvo); +} + /* * kread reads something from the kernel, given its nlist index. */ @@ -1448,7 +1579,7 @@ static void usage(void) { (void)fprintf(stderr, "%s%s", - "usage: vmstat [-afHhimPsz] [-M core [-N system]] [-c count] [-n devs]\n", + "usage: vmstat [-afHhimoPsz] [-M core [-N system]] [-c count] [-n devs]\n", " [-p type,if,pass] [-w wait] [disks] [wait [count]]\n"); exit(1); } From owner-svn-src-all@FreeBSD.ORG Wed May 27 18:11:53 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 22DE56C9; Wed, 27 May 2015 18:11:53 +0000 (UTC) (envelope-from bjkfbsd@gmail.com) Received: from mail-wi0-x231.google.com (mail-wi0-x231.google.com [IPv6:2a00:1450:400c:c05::231]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id AEF8975A; Wed, 27 May 2015 18:11:52 +0000 (UTC) (envelope-from bjkfbsd@gmail.com) Received: by wicmc15 with SMTP id mc15so101803187wic.1; Wed, 27 May 2015 11:11:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=psXUkqOmvbqDBhToDbVgJANMqs94LGWI7h/jI+zTdOY=; b=pKlGqJccIq2gMA5hDKzgtcqq0ugYSx8/J9n20LI2N29PpRYjgrE5DwZhgmNCiN0Dis ksnIXwVcSdYOQ+5ZD5MWZLRwSLtlc1f2sbGPPkHRTb6736B7O2/TkLC7PlSoj+oWgeRn tF1jGAeAWgZbqS3gNVLKEmxxiRIYLZmWXhlr9z96QPtB8N3akf/iF6XR2Kmp9JDUSLQS CWpRbduFVIHHiTg3M4vOrEsvvNmU7YsUPyxVfVzMYVm0lJJio1UpUVK7ZZQiWPOJ8TGK Dr78aDKMlAsaBUD68/s2BJlpFHFPxquRkW0o0xRMWZe7Hl1zYXkRnEcqv2+YchJzfD3Z Va2Q== MIME-Version: 1.0 X-Received: by 10.180.231.4 with SMTP id tc4mr8528924wic.27.1432750311203; Wed, 27 May 2015 11:11:51 -0700 (PDT) Received: by 10.27.77.201 with HTTP; Wed, 27 May 2015 11:11:51 -0700 (PDT) In-Reply-To: <201505271807.t4RI7XXg038604@svn.freebsd.org> References: <201505271807.t4RI7XXg038604@svn.freebsd.org> Date: Wed, 27 May 2015 14:11:51 -0400 Message-ID: Subject: Re: svn commit: r283623 - head/sys/sys From: Benjamin Kaduk To: Konstantin Belousov Cc: "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" Content-Type: text/plain; charset=UTF-8 X-Content-Filtered-By: Mailman/MimeDel 2.1.20 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 18:11:53 -0000 On Wed, May 27, 2015 at 2:07 PM, Konstantin Belousov wrote: > Author: kib > Date: Wed May 27 18:07:32 2015 > New Revision: 283623 > URL: https://svnweb.freebsd.org/changeset/base/283623 > > Log: > Bump __FreeBSD_version for the r283602, which changed dounmount() to > require referenced struct mount *. > Thank you! -Ben From owner-svn-src-all@FreeBSD.ORG Wed May 27 18:44:45 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id AC784EA6; Wed, 27 May 2015 18:44:45 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.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 91DFFEDE; Wed, 27 May 2015 18:44:45 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RIijZY058286; Wed, 27 May 2015 18:44:45 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RIifnj058208; Wed, 27 May 2015 18:44:41 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201505271844.t4RIifnj058208@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Wed, 27 May 2015 18:44:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r283625 - in vendor/llvm/dist: . autoconf autoconf/m4 bindings/go/llvm bindings/ocaml/linker bindings/ocaml/llvm cmake cmake/modules cmake/platforms docs docs/CommandGuide docs/Frontend... X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 18:44:45 -0000 Author: dim Date: Wed May 27 18:44:32 2015 New Revision: 283625 URL: https://svnweb.freebsd.org/changeset/base/283625 Log: Vendor import of llvm trunk r238337: https://llvm.org/svn/llvm-project/llvm/trunk@238337 Added: vendor/llvm/dist/docs/BitSets.rst vendor/llvm/dist/docs/BuildingLLVMWithAutotools.rst vendor/llvm/dist/docs/Frontend/ vendor/llvm/dist/docs/Frontend/PerformanceTips.rst vendor/llvm/dist/docs/LibFuzzer.rst vendor/llvm/dist/examples/Kaleidoscope/Orc/ vendor/llvm/dist/examples/Kaleidoscope/Orc/CMakeLists.txt (contents, props changed) vendor/llvm/dist/examples/Kaleidoscope/Orc/fully_lazy/ vendor/llvm/dist/examples/Kaleidoscope/Orc/fully_lazy/CMakeLists.txt (contents, props changed) vendor/llvm/dist/examples/Kaleidoscope/Orc/fully_lazy/Makefile (contents, props changed) vendor/llvm/dist/examples/Kaleidoscope/Orc/fully_lazy/README.txt (contents, props changed) vendor/llvm/dist/examples/Kaleidoscope/Orc/fully_lazy/toy.cpp (contents, props changed) vendor/llvm/dist/examples/Kaleidoscope/Orc/initial/ vendor/llvm/dist/examples/Kaleidoscope/Orc/initial/CMakeLists.txt (contents, props changed) vendor/llvm/dist/examples/Kaleidoscope/Orc/initial/Makefile (contents, props changed) vendor/llvm/dist/examples/Kaleidoscope/Orc/initial/README.txt (contents, props changed) vendor/llvm/dist/examples/Kaleidoscope/Orc/initial/toy.cpp (contents, props changed) vendor/llvm/dist/examples/Kaleidoscope/Orc/lazy_codegen/ vendor/llvm/dist/examples/Kaleidoscope/Orc/lazy_codegen/CMakeLists.txt (contents, props changed) vendor/llvm/dist/examples/Kaleidoscope/Orc/lazy_codegen/Makefile (contents, props changed) vendor/llvm/dist/examples/Kaleidoscope/Orc/lazy_codegen/README.txt (contents, props changed) vendor/llvm/dist/examples/Kaleidoscope/Orc/lazy_codegen/toy.cpp (contents, props changed) vendor/llvm/dist/examples/Kaleidoscope/Orc/lazy_irgen/ vendor/llvm/dist/examples/Kaleidoscope/Orc/lazy_irgen/CMakeLists.txt (contents, props changed) vendor/llvm/dist/examples/Kaleidoscope/Orc/lazy_irgen/Makefile (contents, props changed) vendor/llvm/dist/examples/Kaleidoscope/Orc/lazy_irgen/README.txt (contents, props changed) vendor/llvm/dist/examples/Kaleidoscope/Orc/lazy_irgen/toy.cpp (contents, props changed) vendor/llvm/dist/include/llvm/ADT/EpochTracker.h (contents, props changed) vendor/llvm/dist/include/llvm/Analysis/IteratedDominanceFrontier.h (contents, props changed) vendor/llvm/dist/include/llvm/Analysis/LoopAccessAnalysis.h (contents, props changed) vendor/llvm/dist/include/llvm/Analysis/TargetLibraryInfo.def vendor/llvm/dist/include/llvm/Analysis/TargetLibraryInfo.h (contents, props changed) vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfoImpl.h (contents, props changed) vendor/llvm/dist/include/llvm/CodeGen/BasicTTIImpl.h (contents, props changed) vendor/llvm/dist/include/llvm/CodeGen/DwarfStringPoolEntry.h (contents, props changed) vendor/llvm/dist/include/llvm/CodeGen/MIR/ vendor/llvm/dist/include/llvm/CodeGen/WinEHFuncInfo.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARF/ vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFAcceleratorTable.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFCompileUnit.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFContext.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFDebugAbbrev.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFDebugArangeSet.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFDebugAranges.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFDebugFrame.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFDebugInfoEntry.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFDebugLoc.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFDebugRangeList.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFFormValue.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFRelocMap.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFSection.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFTypeUnit.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFUnit.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/ vendor/llvm/dist/include/llvm/DebugInfo/PDB/ConcreteSymbolEnumerator.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/DIA/ vendor/llvm/dist/include/llvm/DebugInfo/PDB/DIA/DIADataStream.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/DIA/DIAEnumDebugStreams.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/DIA/DIAEnumLineNumbers.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/DIA/DIAEnumSourceFiles.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/DIA/DIAEnumSymbols.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/DIA/DIALineNumber.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/DIA/DIARawSymbol.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/DIA/DIASession.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/DIA/DIASourceFile.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/DIA/DIASupport.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/IPDBDataStream.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/IPDBEnumChildren.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/IPDBLineNumber.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/IPDBRawSymbol.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/IPDBSession.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/IPDBSourceFile.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDB.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBContext.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBExtras.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymDumper.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbol.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolAnnotation.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolBlock.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolCompiland.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolCompilandDetails.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolCustom.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolData.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolExe.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolFunc.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugEnd.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolFuncDebugStart.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolLabel.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolPublicSymbol.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolThunk.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolTypeArray.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolTypeBaseClass.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolTypeBuiltin.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolTypeCustom.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolTypeDimension.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolTypeEnum.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolTypeFriend.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionArg.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolTypeFunctionSig.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolTypeManaged.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolTypePointer.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolTypeTypedef.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolTypeUDT.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTable.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolTypeVTableShape.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolUnknown.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBSymbolUsingNamespace.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/PDBTypes.h (contents, props changed) vendor/llvm/dist/include/llvm/ExecutionEngine/JITSymbolFlags.h (contents, props changed) vendor/llvm/dist/include/llvm/ExecutionEngine/ObjectMemoryBuffer.h (contents, props changed) vendor/llvm/dist/include/llvm/ExecutionEngine/Orc/ vendor/llvm/dist/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h (contents, props changed) vendor/llvm/dist/include/llvm/ExecutionEngine/Orc/CompileUtils.h (contents, props changed) vendor/llvm/dist/include/llvm/ExecutionEngine/Orc/ExecutionUtils.h (contents, props changed) vendor/llvm/dist/include/llvm/ExecutionEngine/Orc/IRCompileLayer.h (contents, props changed) vendor/llvm/dist/include/llvm/ExecutionEngine/Orc/IRTransformLayer.h (contents, props changed) vendor/llvm/dist/include/llvm/ExecutionEngine/Orc/IndirectionUtils.h (contents, props changed) vendor/llvm/dist/include/llvm/ExecutionEngine/Orc/JITSymbol.h (contents, props changed) vendor/llvm/dist/include/llvm/ExecutionEngine/Orc/LambdaResolver.h (contents, props changed) vendor/llvm/dist/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h (contents, props changed) vendor/llvm/dist/include/llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h (contents, props changed) vendor/llvm/dist/include/llvm/ExecutionEngine/Orc/OrcTargetSupport.h (contents, props changed) vendor/llvm/dist/include/llvm/ExecutionEngine/OrcMCJITReplacement.h (contents, props changed) vendor/llvm/dist/include/llvm/IR/DebugInfoFlags.def vendor/llvm/dist/include/llvm/IR/DebugInfoMetadata.h (contents, props changed) vendor/llvm/dist/include/llvm/IR/IntrinsicsBPF.td vendor/llvm/dist/include/llvm/IR/IntrinsicsSystemZ.td vendor/llvm/dist/include/llvm/Passes/ vendor/llvm/dist/include/llvm/Passes/PassBuilder.h (contents, props changed) vendor/llvm/dist/include/llvm/Support/COM.h (contents, props changed) vendor/llvm/dist/include/llvm/Support/Dwarf.def vendor/llvm/dist/include/llvm/Support/MipsABIFlags.h (contents, props changed) vendor/llvm/dist/include/llvm/Support/TargetParser.h (contents, props changed) vendor/llvm/dist/include/llvm/Transforms/IPO/LowerBitSets.h (contents, props changed) vendor/llvm/dist/include/llvm/Transforms/InstCombine/ vendor/llvm/dist/include/llvm/Transforms/InstCombine/InstCombine.h (contents, props changed) vendor/llvm/dist/include/llvm/Transforms/InstCombine/InstCombineWorklist.h (contents, props changed) vendor/llvm/dist/include/llvm/Transforms/Scalar/ vendor/llvm/dist/include/llvm/Transforms/Scalar/EarlyCSE.h (contents, props changed) vendor/llvm/dist/include/llvm/Transforms/Scalar/LowerExpectIntrinsic.h (contents, props changed) vendor/llvm/dist/include/llvm/Transforms/Scalar/SimplifyCFG.h (contents, props changed) vendor/llvm/dist/lib/Analysis/DivergenceAnalysis.cpp (contents, props changed) vendor/llvm/dist/lib/Analysis/IteratedDominanceFrontier.cpp (contents, props changed) vendor/llvm/dist/lib/Analysis/LoopAccessAnalysis.cpp (contents, props changed) vendor/llvm/dist/lib/Analysis/MemDerefPrinter.cpp (contents, props changed) vendor/llvm/dist/lib/Analysis/TargetLibraryInfo.cpp (contents, props changed) vendor/llvm/dist/lib/CodeGen/AsmPrinter/DebugLocStream.h (contents, props changed) vendor/llvm/dist/lib/CodeGen/CoreCLRGC.cpp (contents, props changed) vendor/llvm/dist/lib/CodeGen/GCRootLowering.cpp (contents, props changed) vendor/llvm/dist/lib/CodeGen/MIR/ vendor/llvm/dist/lib/CodeGen/ShadowStackGCLowering.cpp (contents, props changed) vendor/llvm/dist/lib/CodeGen/ShrinkWrap.cpp (contents, props changed) vendor/llvm/dist/lib/CodeGen/WinEHPrepare.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/DWARF/ vendor/llvm/dist/lib/DebugInfo/DWARF/CMakeLists.txt (contents, props changed) vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFAbbreviationDeclaration.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFAcceleratorTable.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFCompileUnit.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFContext.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFDebugAbbrev.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFDebugArangeSet.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFDebugAranges.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFDebugFrame.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFDebugInfoEntry.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFDebugLine.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFDebugLoc.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFDebugRangeList.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFFormValue.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFTypeUnit.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFUnit.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/DWARF/LLVMBuild.txt (contents, props changed) vendor/llvm/dist/lib/DebugInfo/DWARF/Makefile (contents, props changed) vendor/llvm/dist/lib/DebugInfo/DWARF/SyntaxHighlighting.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/DWARF/SyntaxHighlighting.h (contents, props changed) vendor/llvm/dist/lib/DebugInfo/DWARF/module.modulemap vendor/llvm/dist/lib/DebugInfo/PDB/ vendor/llvm/dist/lib/DebugInfo/PDB/CMakeLists.txt (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/DIA/ vendor/llvm/dist/lib/DebugInfo/PDB/DIA/DIADataStream.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/DIA/DIAEnumDebugStreams.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/DIA/DIAEnumLineNumbers.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/DIA/DIAEnumSourceFiles.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/DIA/DIAEnumSymbols.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/DIA/DIALineNumber.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/DIA/DIARawSymbol.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/DIA/DIASession.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/DIA/DIASourceFile.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/IPDBSourceFile.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/LLVMBuild.txt (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/Makefile (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDB.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBContext.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBExtras.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBInterfaceAnchors.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymDumper.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbol.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolAnnotation.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolBlock.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolCompiland.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolCompilandDetails.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolCompilandEnv.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolCustom.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolData.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolExe.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolFunc.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolFuncDebugEnd.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolFuncDebugStart.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolLabel.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolPublicSymbol.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolThunk.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolTypeArray.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolTypeBaseClass.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolTypeBuiltin.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolTypeCustom.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolTypeDimension.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolTypeEnum.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolTypeFriend.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolTypeFunctionArg.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolTypeFunctionSig.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolTypeManaged.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolTypePointer.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolTypeTypedef.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolTypeUDT.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolTypeVTable.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolTypeVTableShape.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolUnknown.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/PDBSymbolUsingNamespace.cpp (contents, props changed) vendor/llvm/dist/lib/ExecutionEngine/Orc/ vendor/llvm/dist/lib/ExecutionEngine/Orc/CMakeLists.txt (contents, props changed) vendor/llvm/dist/lib/ExecutionEngine/Orc/ExecutionUtils.cpp (contents, props changed) vendor/llvm/dist/lib/ExecutionEngine/Orc/IndirectionUtils.cpp (contents, props changed) vendor/llvm/dist/lib/ExecutionEngine/Orc/LLVMBuild.txt (contents, props changed) vendor/llvm/dist/lib/ExecutionEngine/Orc/Makefile (contents, props changed) vendor/llvm/dist/lib/ExecutionEngine/Orc/OrcMCJITReplacement.cpp (contents, props changed) vendor/llvm/dist/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h (contents, props changed) vendor/llvm/dist/lib/ExecutionEngine/Orc/OrcTargetSupport.cpp (contents, props changed) vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldCOFF.cpp (contents, props changed) vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldCOFF.h (contents, props changed) vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldCOFFX86_64.h (contents, props changed) vendor/llvm/dist/lib/ExecutionEngine/SectionMemoryManager.cpp (contents, props changed) vendor/llvm/dist/lib/Fuzzer/ vendor/llvm/dist/lib/Fuzzer/CMakeLists.txt (contents, props changed) vendor/llvm/dist/lib/Fuzzer/FuzzerCrossOver.cpp (contents, props changed) vendor/llvm/dist/lib/Fuzzer/FuzzerDriver.cpp (contents, props changed) vendor/llvm/dist/lib/Fuzzer/FuzzerFlags.def vendor/llvm/dist/lib/Fuzzer/FuzzerIO.cpp (contents, props changed) vendor/llvm/dist/lib/Fuzzer/FuzzerInterface.cpp (contents, props changed) vendor/llvm/dist/lib/Fuzzer/FuzzerInterface.h (contents, props changed) vendor/llvm/dist/lib/Fuzzer/FuzzerInternal.h (contents, props changed) vendor/llvm/dist/lib/Fuzzer/FuzzerLoop.cpp (contents, props changed) vendor/llvm/dist/lib/Fuzzer/FuzzerMain.cpp (contents, props changed) vendor/llvm/dist/lib/Fuzzer/FuzzerMutate.cpp (contents, props changed) vendor/llvm/dist/lib/Fuzzer/FuzzerSHA1.cpp (contents, props changed) vendor/llvm/dist/lib/Fuzzer/FuzzerSanitizerOptions.cpp (contents, props changed) vendor/llvm/dist/lib/Fuzzer/FuzzerTraceState.cpp (contents, props changed) vendor/llvm/dist/lib/Fuzzer/FuzzerUtil.cpp (contents, props changed) vendor/llvm/dist/lib/Fuzzer/README.txt (contents, props changed) vendor/llvm/dist/lib/Fuzzer/cxx_fuzzer_tokens.txt (contents, props changed) vendor/llvm/dist/lib/Fuzzer/pull_and_push_fuzz_corpus.sh (contents, props changed) vendor/llvm/dist/lib/Fuzzer/test/ vendor/llvm/dist/lib/Fuzzer/test/CMakeLists.txt (contents, props changed) vendor/llvm/dist/lib/Fuzzer/test/CounterTest.cpp (contents, props changed) vendor/llvm/dist/lib/Fuzzer/test/CxxTokensTest.cpp (contents, props changed) vendor/llvm/dist/lib/Fuzzer/test/DFSanMemcmpTest.cpp (contents, props changed) vendor/llvm/dist/lib/Fuzzer/test/DFSanSimpleCmpTest.cpp (contents, props changed) vendor/llvm/dist/lib/Fuzzer/test/FourIndependentBranchesTest.cpp (contents, props changed) vendor/llvm/dist/lib/Fuzzer/test/FullCoverageSetTest.cpp (contents, props changed) vendor/llvm/dist/lib/Fuzzer/test/FuzzerUnittest.cpp (contents, props changed) vendor/llvm/dist/lib/Fuzzer/test/InfiniteTest.cpp (contents, props changed) vendor/llvm/dist/lib/Fuzzer/test/NullDerefTest.cpp (contents, props changed) vendor/llvm/dist/lib/Fuzzer/test/SimpleTest.cpp (contents, props changed) vendor/llvm/dist/lib/Fuzzer/test/TimeoutTest.cpp (contents, props changed) vendor/llvm/dist/lib/Fuzzer/test/UserSuppliedFuzzerTest.cpp (contents, props changed) vendor/llvm/dist/lib/Fuzzer/test/dfsan/ vendor/llvm/dist/lib/Fuzzer/test/dfsan/CMakeLists.txt (contents, props changed) vendor/llvm/dist/lib/Fuzzer/test/fuzzer.test vendor/llvm/dist/lib/Fuzzer/test/lit.cfg vendor/llvm/dist/lib/Fuzzer/test/lit.site.cfg.in (contents, props changed) vendor/llvm/dist/lib/Fuzzer/test/unit/ vendor/llvm/dist/lib/Fuzzer/test/unit/lit.cfg vendor/llvm/dist/lib/Fuzzer/test/unit/lit.site.cfg.in (contents, props changed) vendor/llvm/dist/lib/IR/DebugInfoMetadata.cpp (contents, props changed) vendor/llvm/dist/lib/IR/MetadataImpl.h (contents, props changed) vendor/llvm/dist/lib/IR/Operator.cpp (contents, props changed) vendor/llvm/dist/lib/MC/MCInstrDesc.cpp (contents, props changed) vendor/llvm/dist/lib/Passes/ vendor/llvm/dist/lib/Passes/CMakeLists.txt (contents, props changed) vendor/llvm/dist/lib/Passes/LLVMBuild.txt (contents, props changed) vendor/llvm/dist/lib/Passes/Makefile (contents, props changed) vendor/llvm/dist/lib/Passes/PassBuilder.cpp (contents, props changed) vendor/llvm/dist/lib/Passes/PassRegistry.def vendor/llvm/dist/lib/Support/COM.cpp (contents, props changed) vendor/llvm/dist/lib/Support/TargetParser.cpp (contents, props changed) vendor/llvm/dist/lib/Support/Unix/COM.inc (contents, props changed) vendor/llvm/dist/lib/Support/Windows/COM.inc (contents, props changed) vendor/llvm/dist/lib/Target/AArch64/AArch64TargetTransformInfo.h (contents, props changed) vendor/llvm/dist/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.h (contents, props changed) vendor/llvm/dist/lib/Target/ARM/ARMTargetTransformInfo.h (contents, props changed) vendor/llvm/dist/lib/Target/ARM/ThumbRegisterInfo.cpp (contents, props changed) vendor/llvm/dist/lib/Target/ARM/ThumbRegisterInfo.h (contents, props changed) vendor/llvm/dist/lib/Target/BPF/ vendor/llvm/dist/lib/Target/BPF/BPF.h (contents, props changed) vendor/llvm/dist/lib/Target/BPF/BPF.td vendor/llvm/dist/lib/Target/BPF/BPFAsmPrinter.cpp (contents, props changed) vendor/llvm/dist/lib/Target/BPF/BPFCallingConv.td vendor/llvm/dist/lib/Target/BPF/BPFFrameLowering.cpp (contents, props changed) vendor/llvm/dist/lib/Target/BPF/BPFFrameLowering.h (contents, props changed) vendor/llvm/dist/lib/Target/BPF/BPFISelDAGToDAG.cpp (contents, props changed) vendor/llvm/dist/lib/Target/BPF/BPFISelLowering.cpp (contents, props changed) vendor/llvm/dist/lib/Target/BPF/BPFISelLowering.h (contents, props changed) vendor/llvm/dist/lib/Target/BPF/BPFInstrFormats.td vendor/llvm/dist/lib/Target/BPF/BPFInstrInfo.cpp (contents, props changed) vendor/llvm/dist/lib/Target/BPF/BPFInstrInfo.h (contents, props changed) vendor/llvm/dist/lib/Target/BPF/BPFInstrInfo.td vendor/llvm/dist/lib/Target/BPF/BPFMCInstLower.cpp (contents, props changed) vendor/llvm/dist/lib/Target/BPF/BPFMCInstLower.h (contents, props changed) vendor/llvm/dist/lib/Target/BPF/BPFRegisterInfo.cpp (contents, props changed) vendor/llvm/dist/lib/Target/BPF/BPFRegisterInfo.h (contents, props changed) vendor/llvm/dist/lib/Target/BPF/BPFRegisterInfo.td vendor/llvm/dist/lib/Target/BPF/BPFSubtarget.cpp (contents, props changed) vendor/llvm/dist/lib/Target/BPF/BPFSubtarget.h (contents, props changed) vendor/llvm/dist/lib/Target/BPF/BPFTargetMachine.cpp (contents, props changed) vendor/llvm/dist/lib/Target/BPF/BPFTargetMachine.h (contents, props changed) vendor/llvm/dist/lib/Target/BPF/CMakeLists.txt (contents, props changed) vendor/llvm/dist/lib/Target/BPF/InstPrinter/ vendor/llvm/dist/lib/Target/BPF/InstPrinter/BPFInstPrinter.cpp (contents, props changed) vendor/llvm/dist/lib/Target/BPF/InstPrinter/BPFInstPrinter.h (contents, props changed) vendor/llvm/dist/lib/Target/BPF/InstPrinter/CMakeLists.txt (contents, props changed) vendor/llvm/dist/lib/Target/BPF/InstPrinter/LLVMBuild.txt (contents, props changed) vendor/llvm/dist/lib/Target/BPF/InstPrinter/Makefile (contents, props changed) vendor/llvm/dist/lib/Target/BPF/LLVMBuild.txt (contents, props changed) vendor/llvm/dist/lib/Target/BPF/MCTargetDesc/ vendor/llvm/dist/lib/Target/BPF/MCTargetDesc/BPFAsmBackend.cpp (contents, props changed) vendor/llvm/dist/lib/Target/BPF/MCTargetDesc/BPFELFObjectWriter.cpp (contents, props changed) vendor/llvm/dist/lib/Target/BPF/MCTargetDesc/BPFMCAsmInfo.h (contents, props changed) vendor/llvm/dist/lib/Target/BPF/MCTargetDesc/BPFMCCodeEmitter.cpp (contents, props changed) vendor/llvm/dist/lib/Target/BPF/MCTargetDesc/BPFMCTargetDesc.cpp (contents, props changed) vendor/llvm/dist/lib/Target/BPF/MCTargetDesc/BPFMCTargetDesc.h (contents, props changed) vendor/llvm/dist/lib/Target/BPF/MCTargetDesc/CMakeLists.txt (contents, props changed) vendor/llvm/dist/lib/Target/BPF/MCTargetDesc/LLVMBuild.txt (contents, props changed) vendor/llvm/dist/lib/Target/BPF/MCTargetDesc/Makefile (contents, props changed) vendor/llvm/dist/lib/Target/BPF/Makefile (contents, props changed) vendor/llvm/dist/lib/Target/BPF/TargetInfo/ vendor/llvm/dist/lib/Target/BPF/TargetInfo/BPFTargetInfo.cpp (contents, props changed) vendor/llvm/dist/lib/Target/BPF/TargetInfo/CMakeLists.txt (contents, props changed) vendor/llvm/dist/lib/Target/BPF/TargetInfo/LLVMBuild.txt (contents, props changed) vendor/llvm/dist/lib/Target/BPF/TargetInfo/Makefile (contents, props changed) vendor/llvm/dist/lib/Target/Hexagon/HexagonExpandCondsets.cpp (contents, props changed) vendor/llvm/dist/lib/Target/Hexagon/HexagonInstrInfoVector.td vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonFixupKinds.h (contents, props changed) vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonMCInstrInfo.cpp (contents, props changed) vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonMCInstrInfo.h (contents, props changed) vendor/llvm/dist/lib/Target/Mips/MicroMips32r6InstrFormats.td vendor/llvm/dist/lib/Target/Mips/MicroMips32r6InstrInfo.td vendor/llvm/dist/lib/Target/NVPTX/NVPTXTargetTransformInfo.h (contents, props changed) vendor/llvm/dist/lib/Target/PowerPC/PPCEarlyReturn.cpp (contents, props changed) vendor/llvm/dist/lib/Target/PowerPC/PPCInstrHTM.td vendor/llvm/dist/lib/Target/PowerPC/PPCInstrQPX.td vendor/llvm/dist/lib/Target/PowerPC/PPCLoopDataPrefetch.cpp (contents, props changed) vendor/llvm/dist/lib/Target/PowerPC/PPCLoopPreIncPrep.cpp (contents, props changed) vendor/llvm/dist/lib/Target/PowerPC/PPCTLSDynamicCall.cpp (contents, props changed) vendor/llvm/dist/lib/Target/PowerPC/PPCTOCRegDeps.cpp (contents, props changed) vendor/llvm/dist/lib/Target/PowerPC/PPCTargetTransformInfo.h (contents, props changed) vendor/llvm/dist/lib/Target/PowerPC/PPCVSXCopy.cpp (contents, props changed) vendor/llvm/dist/lib/Target/PowerPC/PPCVSXFMAMutate.cpp (contents, props changed) vendor/llvm/dist/lib/Target/PowerPC/PPCVSXSwapRemoval.cpp (contents, props changed) vendor/llvm/dist/lib/Target/R600/AMDGPUTargetTransformInfo.h (contents, props changed) vendor/llvm/dist/lib/Target/R600/SIFixControlFlowLiveIntervals.cpp (contents, props changed) vendor/llvm/dist/lib/Target/SystemZ/SystemZInstrVector.td vendor/llvm/dist/lib/Target/SystemZ/SystemZLDCleanup.cpp (contents, props changed) vendor/llvm/dist/lib/Target/SystemZ/SystemZTargetTransformInfo.cpp (contents, props changed) vendor/llvm/dist/lib/Target/SystemZ/SystemZTargetTransformInfo.h (contents, props changed) vendor/llvm/dist/lib/Target/X86/X86CallFrameOptimization.cpp (contents, props changed) vendor/llvm/dist/lib/Target/X86/X86ExpandPseudo.cpp (contents, props changed) vendor/llvm/dist/lib/Target/X86/X86TargetTransformInfo.h (contents, props changed) vendor/llvm/dist/lib/Target/X86/X86WinEHState.cpp (contents, props changed) vendor/llvm/dist/lib/Target/XCore/XCoreTargetTransformInfo.h (contents, props changed) vendor/llvm/dist/lib/Transforms/IPO/LowerBitSets.cpp (contents, props changed) vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineInternal.h (contents, props changed) vendor/llvm/dist/lib/Transforms/ObjCARC/ARCInstKind.cpp (contents, props changed) vendor/llvm/dist/lib/Transforms/ObjCARC/ARCInstKind.h (contents, props changed) vendor/llvm/dist/lib/Transforms/ObjCARC/BlotMapVector.h (contents, props changed) vendor/llvm/dist/lib/Transforms/ObjCARC/PtrState.cpp (contents, props changed) vendor/llvm/dist/lib/Transforms/ObjCARC/PtrState.h (contents, props changed) vendor/llvm/dist/lib/Transforms/Scalar/BDCE.cpp (contents, props changed) vendor/llvm/dist/lib/Transforms/Scalar/Float2Int.cpp (contents, props changed) vendor/llvm/dist/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp (contents, props changed) vendor/llvm/dist/lib/Transforms/Scalar/LoopDistribute.cpp (contents, props changed) vendor/llvm/dist/lib/Transforms/Scalar/LoopInterchange.cpp (contents, props changed) vendor/llvm/dist/lib/Transforms/Scalar/LowerExpectIntrinsic.cpp (contents, props changed) vendor/llvm/dist/lib/Transforms/Scalar/NaryReassociate.cpp (contents, props changed) vendor/llvm/dist/lib/Transforms/Scalar/PlaceSafepoints.cpp (contents, props changed) vendor/llvm/dist/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp (contents, props changed) vendor/llvm/dist/lib/Transforms/Scalar/SpeculativeExecution.cpp (contents, props changed) vendor/llvm/dist/lib/Transforms/Scalar/StraightLineStrengthReduce.cpp (contents, props changed) vendor/llvm/dist/lib/Transforms/Utils/LoopUtils.cpp (contents, props changed) vendor/llvm/dist/test/Analysis/AssumptionCache/ vendor/llvm/dist/test/Analysis/AssumptionCache/basic.ll vendor/llvm/dist/test/Analysis/BasicAA/struct-geps.ll vendor/llvm/dist/test/Analysis/BlockFrequencyInfo/loops_with_profile_info.ll vendor/llvm/dist/test/Analysis/BranchProbabilityInfo/pr22718.ll vendor/llvm/dist/test/Analysis/CFLAliasAnalysis/asm-global-bugfix.ll vendor/llvm/dist/test/Analysis/CFLAliasAnalysis/branch-alias.ll vendor/llvm/dist/test/Analysis/CFLAliasAnalysis/stratified-attrs-indexing.ll vendor/llvm/dist/test/Analysis/CostModel/X86/masked-intrinsic-cost.ll vendor/llvm/dist/test/Analysis/Delinearization/divide_by_one.ll vendor/llvm/dist/test/Analysis/Delinearization/type_mismatch.ll vendor/llvm/dist/test/Analysis/DependenceAnalysis/Constraints.ll vendor/llvm/dist/test/Analysis/DependenceAnalysis/PR21585.ll vendor/llvm/dist/test/Analysis/DependenceAnalysis/UsefulGEP.ll vendor/llvm/dist/test/Analysis/DivergenceAnalysis/ vendor/llvm/dist/test/Analysis/DivergenceAnalysis/NVPTX/ vendor/llvm/dist/test/Analysis/DivergenceAnalysis/NVPTX/diverge.ll vendor/llvm/dist/test/Analysis/DivergenceAnalysis/NVPTX/lit.local.cfg vendor/llvm/dist/test/Analysis/Lint/cppeh-catch-intrinsics-clean.ll vendor/llvm/dist/test/Analysis/Lint/cppeh-catch-intrinsics.ll vendor/llvm/dist/test/Analysis/LoopAccessAnalysis/ vendor/llvm/dist/test/Analysis/LoopAccessAnalysis/backward-dep-different-types.ll vendor/llvm/dist/test/Analysis/LoopAccessAnalysis/resort-to-memchecks-only.ll vendor/llvm/dist/test/Analysis/LoopAccessAnalysis/safe-no-checks.ll vendor/llvm/dist/test/Analysis/LoopAccessAnalysis/store-to-invariant-check1.ll vendor/llvm/dist/test/Analysis/LoopAccessAnalysis/store-to-invariant-check2.ll vendor/llvm/dist/test/Analysis/LoopAccessAnalysis/store-to-invariant-check3.ll vendor/llvm/dist/test/Analysis/LoopAccessAnalysis/underlying-objects-1.ll vendor/llvm/dist/test/Analysis/LoopAccessAnalysis/underlying-objects-2.ll vendor/llvm/dist/test/Analysis/LoopAccessAnalysis/unsafe-and-rt-checks.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/ext-antecedent.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/incorrect-nsw.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/infer-prestart-no-wrap.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/infer-via-ranges.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/latch-dominating-conditions.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/min-max-exprs.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/nowrap-preinc-limits.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/pr22641.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/pr22674.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/range-signedness.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/scev-expander-incorrect-nowrap.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/scev-prestart-nowrap.ll vendor/llvm/dist/test/Analysis/TypeBasedAliasAnalysis/cyclic.ll vendor/llvm/dist/test/Analysis/ValueTracking/ vendor/llvm/dist/test/Analysis/ValueTracking/memory-dereferenceable.ll vendor/llvm/dist/test/Analysis/ValueTracking/pr23011.ll vendor/llvm/dist/test/Assembler/alloca-invalid-type-2.ll vendor/llvm/dist/test/Assembler/alloca-invalid-type.ll vendor/llvm/dist/test/Assembler/alloca-size-one.ll vendor/llvm/dist/test/Assembler/call-invalid-1.ll vendor/llvm/dist/test/Assembler/debug-info.ll vendor/llvm/dist/test/Assembler/drop-debug-info.ll vendor/llvm/dist/test/Assembler/extractvalue-no-idx.ll vendor/llvm/dist/test/Assembler/generic-debug-node.ll vendor/llvm/dist/test/Assembler/getelementptr_invalid_ptr.ll vendor/llvm/dist/test/Assembler/getelementptr_vec_idx4.ll vendor/llvm/dist/test/Assembler/gv-invalid-type.ll vendor/llvm/dist/test/Assembler/insertvalue-invalid-type-1.ll vendor/llvm/dist/test/Assembler/insertvalue-invalid-type.ll vendor/llvm/dist/test/Assembler/invalid-datalayout14.ll vendor/llvm/dist/test/Assembler/invalid-datalayout15.ll vendor/llvm/dist/test/Assembler/invalid-datalayout16.ll vendor/llvm/dist/test/Assembler/invalid-datalayout17.ll vendor/llvm/dist/test/Assembler/invalid-datalayout18.ll vendor/llvm/dist/test/Assembler/invalid-datalayout19.ll vendor/llvm/dist/test/Assembler/invalid-datalayout20.ll vendor/llvm/dist/test/Assembler/invalid-datalayout21.ll vendor/llvm/dist/test/Assembler/invalid-datalayout22.ll vendor/llvm/dist/test/Assembler/invalid-datalayout23.ll vendor/llvm/dist/test/Assembler/invalid-datalayout24.ll vendor/llvm/dist/test/Assembler/invalid-debug-info-version.ll vendor/llvm/dist/test/Assembler/invalid-generic-debug-node-tag-bad.ll vendor/llvm/dist/test/Assembler/invalid-generic-debug-node-tag-missing.ll vendor/llvm/dist/test/Assembler/invalid-generic-debug-node-tag-overflow.ll vendor/llvm/dist/test/Assembler/invalid-generic-debug-node-tag-wrong-type.ll vendor/llvm/dist/test/Assembler/invalid-gep-mismatched-explicit-type.ll vendor/llvm/dist/test/Assembler/invalid-gep-missing-explicit-type.ll vendor/llvm/dist/test/Assembler/invalid-label.ll vendor/llvm/dist/test/Assembler/invalid-landingpad.ll vendor/llvm/dist/test/Assembler/invalid-load-mismatched-explicit-type.ll vendor/llvm/dist/test/Assembler/invalid-load-missing-explicit-type.ll vendor/llvm/dist/test/Assembler/invalid-mdcompileunit-language-bad.ll vendor/llvm/dist/test/Assembler/invalid-mdcompileunit-language-overflow.ll vendor/llvm/dist/test/Assembler/invalid-mdcompileunit-missing-language.ll vendor/llvm/dist/test/Assembler/invalid-mdcompileunit-null-file.ll vendor/llvm/dist/test/Assembler/invalid-mdcompositetype-missing-tag.ll vendor/llvm/dist/test/Assembler/invalid-mdderivedtype-missing-basetype.ll vendor/llvm/dist/test/Assembler/invalid-mdderivedtype-missing-tag.ll vendor/llvm/dist/test/Assembler/invalid-mdenumerator-missing-name.ll vendor/llvm/dist/test/Assembler/invalid-mdenumerator-missing-value.ll vendor/llvm/dist/test/Assembler/invalid-mdexpression-large.ll vendor/llvm/dist/test/Assembler/invalid-mdexpression-verify.ll vendor/llvm/dist/test/Assembler/invalid-mdfile-missing-directory.ll vendor/llvm/dist/test/Assembler/invalid-mdfile-missing-filename.ll vendor/llvm/dist/test/Assembler/invalid-mdglobalvariable-empty-name.ll vendor/llvm/dist/test/Assembler/invalid-mdglobalvariable-missing-name.ll vendor/llvm/dist/test/Assembler/invalid-mdimportedentity-missing-scope.ll vendor/llvm/dist/test/Assembler/invalid-mdimportedentity-missing-tag.ll vendor/llvm/dist/test/Assembler/invalid-mdlexicalblock-missing-scope.ll vendor/llvm/dist/test/Assembler/invalid-mdlexicalblock-null-scope.ll vendor/llvm/dist/test/Assembler/invalid-mdlexicalblockfile-missing-discriminator.ll vendor/llvm/dist/test/Assembler/invalid-mdlexicalblockfile-missing-scope.ll vendor/llvm/dist/test/Assembler/invalid-mdlexicalblockfile-null-scope.ll vendor/llvm/dist/test/Assembler/invalid-mdlocalvariable-missing-scope.ll vendor/llvm/dist/test/Assembler/invalid-mdlocalvariable-missing-tag.ll vendor/llvm/dist/test/Assembler/invalid-mdlocalvariable-null-scope.ll vendor/llvm/dist/test/Assembler/invalid-mdlocation-missing-scope-2.ll vendor/llvm/dist/test/Assembler/invalid-mdlocation-missing-scope.ll vendor/llvm/dist/test/Assembler/invalid-mdlocation-null-scope.ll vendor/llvm/dist/test/Assembler/invalid-mdnamespace-missing-namespace.ll vendor/llvm/dist/test/Assembler/invalid-mdnode-badref.ll vendor/llvm/dist/test/Assembler/invalid-mdsubrange-count-large.ll vendor/llvm/dist/test/Assembler/invalid-mdsubrange-count-missing.ll vendor/llvm/dist/test/Assembler/invalid-mdsubrange-count-negative.ll vendor/llvm/dist/test/Assembler/invalid-mdsubrange-lowerBound-max.ll vendor/llvm/dist/test/Assembler/invalid-mdsubrange-lowerBound-min.ll vendor/llvm/dist/test/Assembler/invalid-mdsubroutinetype-missing-types.ll vendor/llvm/dist/test/Assembler/invalid-mdtemplatetypeparameter-missing-type.ll vendor/llvm/dist/test/Assembler/invalid-mdtemplatevalueparameter-missing-value.ll vendor/llvm/dist/test/Assembler/invalid_cast4.ll vendor/llvm/dist/test/Assembler/large-comdat.ll vendor/llvm/dist/test/Assembler/mdcompileunit.ll vendor/llvm/dist/test/Assembler/mdexpression.ll vendor/llvm/dist/test/Assembler/mdfile-escaped-chars.ll vendor/llvm/dist/test/Assembler/mdglobalvariable.ll vendor/llvm/dist/test/Assembler/mdimportedentity.ll vendor/llvm/dist/test/Assembler/mdlexicalblock.ll vendor/llvm/dist/test/Assembler/mdlocalvariable.ll vendor/llvm/dist/test/Assembler/mdnamespace.ll vendor/llvm/dist/test/Assembler/mdobjcproperty.ll vendor/llvm/dist/test/Assembler/mdsubprogram.ll vendor/llvm/dist/test/Assembler/mdsubrange-empty-array.ll vendor/llvm/dist/test/Assembler/mdsubroutinetype.ll vendor/llvm/dist/test/Assembler/mdtemplateparameter.ll vendor/llvm/dist/test/Assembler/mdtype-large-values.ll vendor/llvm/dist/test/Assembler/metadata-function-local.ll vendor/llvm/dist/test/Assembler/metadata-null-operands.ll vendor/llvm/dist/test/Assembler/unsized-recursive-type.ll vendor/llvm/dist/test/Bitcode/DICompileUnit-no-DWOId.ll vendor/llvm/dist/test/Bitcode/DICompileUnit-no-DWOId.ll.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/ vendor/llvm/dist/test/Bitcode/Inputs/invalid-GCTable-overflow.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-abbrev-fixed-size-too-big.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-abbrev-no-operands.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-abbrev-vbr-size-too-big.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-abbrev.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-align.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-array-element-type.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-array-op-not-2nd-to-last.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-array-operand-encoding.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-array-type.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-bad-abbrev-number.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-bitwidth.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-call-mismatched-explicit-type.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-call-non-function-explicit-type.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-code-len-width.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-extract-0-indices.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-extractval-array-idx.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-extractval-struct-idx.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-extractval-too-many-idxs.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-fixme-streaming-blob.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-fp-shift.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-function-argument-type.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-function-comdat-id.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-fwdref-type-mismatch-2.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-fwdref-type-mismatch.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-gep-mismatched-explicit-type.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-gep-operator-mismatched-explicit-type.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-global-var-comdat-id.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-insert-0-indices.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-inserted-value-type-mismatch.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-insertval-array-idx.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-insertval-struct-idx.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-insertval-too-many-idxs.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-invoke-mismatched-explicit-type.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-invoke-non-function-explicit-type.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-load-mismatched-explicit-type.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-load-pointer-type.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-load-ptr-type.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-no-proper-module.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-non-vector-extractelement.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-non-vector-insertelement.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-non-vector-shufflevector.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-pointer-element-type.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-pr20485.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-too-big-fwdref.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-type-table-forward-ref.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-unexpected-eof.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/Inputs/invalid-vector-element-type.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/cmpxchg.3.6.ll vendor/llvm/dist/test/Bitcode/cmpxchg.3.6.ll.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/debug-loc-again.ll vendor/llvm/dist/test/Bitcode/drop-debug-info.3.5.ll vendor/llvm/dist/test/Bitcode/drop-debug-info.3.5.ll.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/invalid.test vendor/llvm/dist/test/Bitcode/weak-macho-3.5.ll vendor/llvm/dist/test/Bitcode/weak-macho-3.5.ll.bc (contents, props changed) vendor/llvm/dist/test/BugPoint/replace-funcs-with-null.ll vendor/llvm/dist/test/CodeGen/AArch64/aarch64-dynamic-stack-layout.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-codegen-prepare-extload.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-ldp-aa.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-misaligned-memcpy-inline.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-neon-v8.1a.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-shrink-wrapping.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-stp-aa.ll vendor/llvm/dist/test/CodeGen/AArch64/bitcast.ll vendor/llvm/dist/test/CodeGen/AArch64/concat_vector-scalar-combine.ll vendor/llvm/dist/test/CodeGen/AArch64/concat_vector-truncate-combine.ll vendor/llvm/dist/test/CodeGen/AArch64/concat_vector-truncated-scalar-combine.ll vendor/llvm/dist/test/CodeGen/AArch64/f16-instructions.ll vendor/llvm/dist/test/CodeGen/AArch64/fast-isel-address-extends.ll vendor/llvm/dist/test/CodeGen/AArch64/fast-isel-int-ext5.ll vendor/llvm/dist/test/CodeGen/AArch64/fold-constants.ll vendor/llvm/dist/test/CodeGen/AArch64/fp16-v16-instructions.ll vendor/llvm/dist/test/CodeGen/AArch64/fp16-vector-nvcast.ll vendor/llvm/dist/test/CodeGen/AArch64/function-subtarget-features.ll vendor/llvm/dist/test/CodeGen/AArch64/global-merge-group-by-use.ll vendor/llvm/dist/test/CodeGen/AArch64/global-merge-ignore-single-use.ll vendor/llvm/dist/test/CodeGen/AArch64/inline-asm-globaladdress.ll vendor/llvm/dist/test/CodeGen/AArch64/large_shift.ll vendor/llvm/dist/test/CodeGen/AArch64/machine-sink-kill-flags.ll vendor/llvm/dist/test/CodeGen/AArch64/merge-store.ll vendor/llvm/dist/test/CodeGen/AArch64/minmax.ll vendor/llvm/dist/test/CodeGen/AArch64/or-combine.ll vendor/llvm/dist/test/CodeGen/AArch64/print-mrs-system-register.ll vendor/llvm/dist/test/CodeGen/AArch64/remat-float0.ll vendor/llvm/dist/test/CodeGen/AArch64/stackmap-liveness.ll vendor/llvm/dist/test/CodeGen/AArch64/tailcall-mem-intrinsics.ll vendor/llvm/dist/test/CodeGen/AArch64/tailcall_misched_graph.ll vendor/llvm/dist/test/CodeGen/AArch64/vcvt-oversize.ll vendor/llvm/dist/test/CodeGen/ARM/Windows/stack-probe-non-default.ll vendor/llvm/dist/test/CodeGen/ARM/aggregate-padding.ll vendor/llvm/dist/test/CodeGen/ARM/byval-align.ll vendor/llvm/dist/test/CodeGen/ARM/combine-movc-sub.ll vendor/llvm/dist/test/CodeGen/ARM/debug-info-no-frame.ll vendor/llvm/dist/test/CodeGen/ARM/disable-fp-elim.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-remat-same-constant.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-shift-materialize.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-update-valuemap-for-extract.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-vaddd.ll vendor/llvm/dist/test/CodeGen/ARM/fp16-promote.ll vendor/llvm/dist/test/CodeGen/ARM/ifcvt-dead-def.ll vendor/llvm/dist/test/CodeGen/ARM/ifcvt-iter-indbr.ll vendor/llvm/dist/test/CodeGen/ARM/ifcvt-regmask-noreturn.ll vendor/llvm/dist/test/CodeGen/ARM/krait-cpu-div-attribute.ll vendor/llvm/dist/test/CodeGen/ARM/movcc-double.ll vendor/llvm/dist/test/CodeGen/ARM/neon-v8.1a.ll vendor/llvm/dist/test/CodeGen/ARM/noopt-dmb-v7.ll vendor/llvm/dist/test/CodeGen/ARM/print-memb-operand.ll vendor/llvm/dist/test/CodeGen/ARM/regpair_hint_phys.ll vendor/llvm/dist/test/CodeGen/ARM/sched-it-debug-nodes.ll vendor/llvm/dist/test/CodeGen/ARM/t2abs-killflags.ll vendor/llvm/dist/test/CodeGen/ARM/tail-dup-kill-flags.ll vendor/llvm/dist/test/CodeGen/ARM/thumb-alignment.ll vendor/llvm/dist/test/CodeGen/ARM/thumb-big-stack.ll vendor/llvm/dist/test/CodeGen/ARM/thumb2-size-reduction-internal-flags.ll vendor/llvm/dist/test/CodeGen/ARM/vector-load.ll vendor/llvm/dist/test/CodeGen/ARM/vector-store.ll vendor/llvm/dist/test/CodeGen/BPF/ vendor/llvm/dist/test/CodeGen/BPF/alu8.ll vendor/llvm/dist/test/CodeGen/BPF/atomics.ll vendor/llvm/dist/test/CodeGen/BPF/basictest.ll vendor/llvm/dist/test/CodeGen/BPF/byval.ll vendor/llvm/dist/test/CodeGen/BPF/cc_args.ll vendor/llvm/dist/test/CodeGen/BPF/cc_ret.ll vendor/llvm/dist/test/CodeGen/BPF/cmp.ll vendor/llvm/dist/test/CodeGen/BPF/ex1.ll vendor/llvm/dist/test/CodeGen/BPF/intrinsics.ll vendor/llvm/dist/test/CodeGen/BPF/lit.local.cfg vendor/llvm/dist/test/CodeGen/BPF/load.ll vendor/llvm/dist/test/CodeGen/BPF/loops.ll vendor/llvm/dist/test/CodeGen/BPF/many_args1.ll vendor/llvm/dist/test/CodeGen/BPF/many_args2.ll vendor/llvm/dist/test/CodeGen/BPF/sanity.ll vendor/llvm/dist/test/CodeGen/BPF/setcc.ll vendor/llvm/dist/test/CodeGen/BPF/shifts.ll vendor/llvm/dist/test/CodeGen/BPF/sockex2.ll vendor/llvm/dist/test/CodeGen/BPF/struct_ret1.ll vendor/llvm/dist/test/CodeGen/BPF/struct_ret2.ll vendor/llvm/dist/test/CodeGen/BPF/vararg1.ll vendor/llvm/dist/test/CodeGen/Generic/icmp-illegal.ll vendor/llvm/dist/test/CodeGen/Generic/overloaded-intrinsic-name.ll vendor/llvm/dist/test/CodeGen/Hexagon/alu64.ll vendor/llvm/dist/test/CodeGen/Hexagon/brev_ld.ll vendor/llvm/dist/test/CodeGen/Hexagon/brev_st.ll vendor/llvm/dist/test/CodeGen/Hexagon/calling-conv-2.ll vendor/llvm/dist/test/CodeGen/Hexagon/calling-conv.ll vendor/llvm/dist/test/CodeGen/Hexagon/circ_ld.ll vendor/llvm/dist/test/CodeGen/Hexagon/circ_ldd_bug.ll vendor/llvm/dist/test/CodeGen/Hexagon/circ_ldw.ll vendor/llvm/dist/test/CodeGen/Hexagon/circ_st.ll vendor/llvm/dist/test/CodeGen/Hexagon/clr_set_toggle.ll vendor/llvm/dist/test/CodeGen/Hexagon/expand-condsets-basic.ll vendor/llvm/dist/test/CodeGen/Hexagon/expand-condsets-rm-segment.ll vendor/llvm/dist/test/CodeGen/Hexagon/expand-condsets-undef.ll vendor/llvm/dist/test/CodeGen/Hexagon/hwloop-crit-edge.ll vendor/llvm/dist/test/CodeGen/Hexagon/hwloop-loop1.ll vendor/llvm/dist/test/CodeGen/Hexagon/hwloop-missed.ll vendor/llvm/dist/test/CodeGen/Hexagon/hwloop-ph-deadcode.ll vendor/llvm/dist/test/CodeGen/Hexagon/hwloop-pos-ivbump1.ll vendor/llvm/dist/test/CodeGen/Hexagon/hwloop-preheader.ll vendor/llvm/dist/test/CodeGen/Hexagon/hwloop-range.ll vendor/llvm/dist/test/CodeGen/Hexagon/hwloop-recursion.ll vendor/llvm/dist/test/CodeGen/Hexagon/hwloop-wrap.ll vendor/llvm/dist/test/CodeGen/Hexagon/hwloop-wrap2.ll vendor/llvm/dist/test/CodeGen/Hexagon/hwloop1.ll vendor/llvm/dist/test/CodeGen/Hexagon/hwloop2.ll vendor/llvm/dist/test/CodeGen/Hexagon/hwloop3.ll vendor/llvm/dist/test/CodeGen/Hexagon/hwloop4.ll vendor/llvm/dist/test/CodeGen/Hexagon/hwloop5.ll vendor/llvm/dist/test/CodeGen/Hexagon/intrinsics/ vendor/llvm/dist/test/CodeGen/Hexagon/intrinsics/alu32_alu.ll vendor/llvm/dist/test/CodeGen/Hexagon/intrinsics/alu32_perm.ll vendor/llvm/dist/test/CodeGen/Hexagon/intrinsics/cr.ll vendor/llvm/dist/test/CodeGen/Hexagon/intrinsics/xtype_alu.ll vendor/llvm/dist/test/CodeGen/Hexagon/intrinsics/xtype_bit.ll vendor/llvm/dist/test/CodeGen/Hexagon/intrinsics/xtype_complex.ll vendor/llvm/dist/test/CodeGen/Hexagon/intrinsics/xtype_fp.ll vendor/llvm/dist/test/CodeGen/Hexagon/intrinsics/xtype_mpy.ll vendor/llvm/dist/test/CodeGen/Hexagon/intrinsics/xtype_perm.ll vendor/llvm/dist/test/CodeGen/Hexagon/intrinsics/xtype_pred.ll vendor/llvm/dist/test/CodeGen/Hexagon/intrinsics/xtype_shift.ll vendor/llvm/dist/test/CodeGen/Hexagon/mem-fi-add.ll vendor/llvm/dist/test/CodeGen/Hexagon/remove-endloop.ll vendor/llvm/dist/test/CodeGen/Hexagon/shrink-frame-basic.ll vendor/llvm/dist/test/CodeGen/Hexagon/stack-align1.ll vendor/llvm/dist/test/CodeGen/Hexagon/stack-align2.ll vendor/llvm/dist/test/CodeGen/Hexagon/stack-alloca1.ll vendor/llvm/dist/test/CodeGen/Hexagon/stack-alloca2.ll vendor/llvm/dist/test/CodeGen/Hexagon/tail-call-mem-intrinsics.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/ vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-anyextend.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-apint-truncate.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-bad-bitcast.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-bitcast-1.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-bitcast.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-cst-v4i32.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-cst-v4i8.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-cst.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-extract.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-fma.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-illegal-type.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-insert-extract-elt.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-load-1.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-load.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-loadv4i16.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-mul-v2i16.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-mul-v2i32.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-mul-v4i16.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-mul-v4i8.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-mul-v8i8.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-no-tfrs-1.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-no-tfrs.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-packhl.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-shift-imm.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-shuffle.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-splat.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-store-v2i16.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-truncate.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-vaddb-1.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-vaddb.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-vaddh-1.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-vaddh.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-vaddw.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-vaslw.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-vshifts.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-vsplatb.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-vsplath.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-vsubb-1.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-vsubb.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-vsubh-1.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-vsubh.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-vsubw.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-xor.ll vendor/llvm/dist/test/CodeGen/Hexagon/vect/vect-zeroextend.ll vendor/llvm/dist/test/CodeGen/MIR/ vendor/llvm/dist/test/CodeGen/Mips/Fast-ISel/constexpr-address.ll vendor/llvm/dist/test/CodeGen/Mips/Fast-ISel/fastalloca.ll vendor/llvm/dist/test/CodeGen/Mips/Fast-ISel/logopm.ll vendor/llvm/dist/test/CodeGen/Mips/Fast-ISel/overflt.ll vendor/llvm/dist/test/CodeGen/Mips/Fast-ISel/retabi.ll vendor/llvm/dist/test/CodeGen/Mips/Fast-ISel/shftopm.ll vendor/llvm/dist/test/CodeGen/Mips/dagcombine_crash.ll vendor/llvm/dist/test/CodeGen/Mips/delay-slot-fill-forward.ll vendor/llvm/dist/test/CodeGen/Mips/delay-slot-kill.ll vendor/llvm/dist/test/CodeGen/Mips/emergency-spill-slot-near-fp.ll vendor/llvm/dist/test/CodeGen/Mips/fp16-promote.ll vendor/llvm/dist/test/CodeGen/Mips/inlineasm_constraint_R.ll vendor/llvm/dist/test/CodeGen/Mips/inlineasm_constraint_ZC.ll vendor/llvm/dist/test/CodeGen/Mips/inlineasm_constraint_m.ll vendor/llvm/dist/test/CodeGen/Mips/insn-zero-size-bb.ll vendor/llvm/dist/test/CodeGen/Mips/micromips-addu16.ll vendor/llvm/dist/test/CodeGen/Mips/micromips-and16.ll vendor/llvm/dist/test/CodeGen/Mips/micromips-compact-jump.ll vendor/llvm/dist/test/CodeGen/Mips/micromips-gp-rc.ll vendor/llvm/dist/test/CodeGen/Mips/micromips-not16.ll vendor/llvm/dist/test/CodeGen/Mips/micromips-or16.ll vendor/llvm/dist/test/CodeGen/Mips/micromips-subu16.ll vendor/llvm/dist/test/CodeGen/Mips/micromips-sw-lw-16.ll vendor/llvm/dist/test/CodeGen/Mips/micromips-xor16.ll vendor/llvm/dist/test/CodeGen/NVPTX/bug22246.ll vendor/llvm/dist/test/CodeGen/NVPTX/bug22322.ll vendor/llvm/dist/test/CodeGen/NVPTX/function-align.ll vendor/llvm/dist/test/CodeGen/NVPTX/nounroll.ll vendor/llvm/dist/test/CodeGen/NVPTX/sm-version-32.ll vendor/llvm/dist/test/CodeGen/NVPTX/sm-version-37.ll vendor/llvm/dist/test/CodeGen/NVPTX/sm-version-50.ll vendor/llvm/dist/test/CodeGen/NVPTX/sm-version-52.ll vendor/llvm/dist/test/CodeGen/NVPTX/sm-version-53.ll vendor/llvm/dist/test/CodeGen/PowerPC/MergeConsecutiveStores.ll vendor/llvm/dist/test/CodeGen/PowerPC/crypto_bifs.ll vendor/llvm/dist/test/CodeGen/PowerPC/div-e-32.ll vendor/llvm/dist/test/CodeGen/PowerPC/div-e-all.ll vendor/llvm/dist/test/CodeGen/PowerPC/ec-input.ll vendor/llvm/dist/test/CodeGen/PowerPC/extra-toc-reg-deps.ll vendor/llvm/dist/test/CodeGen/PowerPC/f32-to-i64.ll vendor/llvm/dist/test/CodeGen/PowerPC/fast-isel-icmp-split.ll vendor/llvm/dist/test/CodeGen/PowerPC/fast-isel-load-store-vsx.ll vendor/llvm/dist/test/CodeGen/PowerPC/flt-preinc.ll vendor/llvm/dist/test/CodeGen/PowerPC/fp-int-conversions-direct-moves.ll vendor/llvm/dist/test/CodeGen/PowerPC/htm.ll vendor/llvm/dist/test/CodeGen/PowerPC/ldtoc-inv.ll vendor/llvm/dist/test/CodeGen/PowerPC/loop-data-prefetch-inner.ll vendor/llvm/dist/test/CodeGen/PowerPC/loop-data-prefetch.ll vendor/llvm/dist/test/CodeGen/PowerPC/loop-prep-all.ll vendor/llvm/dist/test/CodeGen/PowerPC/memcpy-vec.ll vendor/llvm/dist/test/CodeGen/PowerPC/memset-nc-le.ll vendor/llvm/dist/test/CodeGen/PowerPC/memset-nc.ll vendor/llvm/dist/test/CodeGen/PowerPC/no-pref-jumps.ll vendor/llvm/dist/test/CodeGen/PowerPC/optnone-crbits-i1-ret.ll vendor/llvm/dist/test/CodeGen/PowerPC/p8-isel-sched.ll vendor/llvm/dist/test/CodeGen/PowerPC/pip-inner.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc-crbits-onoff.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc-empty-fs.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-fastcc-fast-isel.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-fastcc.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-func-desc-hoist.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-i128-abi.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-icbt-pwr7.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-icbt-pwr8.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-r2-alloc.ll vendor/llvm/dist/test/CodeGen/PowerPC/pr22711.ll vendor/llvm/dist/test/CodeGen/PowerPC/preinc-ld-sel-crash.ll vendor/llvm/dist/test/CodeGen/PowerPC/preincprep-invoke.ll vendor/llvm/dist/test/CodeGen/PowerPC/qpx-bv-sint.ll vendor/llvm/dist/test/CodeGen/PowerPC/qpx-bv.ll vendor/llvm/dist/test/CodeGen/PowerPC/qpx-func-clobber.ll vendor/llvm/dist/test/CodeGen/PowerPC/qpx-load.ll vendor/llvm/dist/test/CodeGen/PowerPC/qpx-recipest.ll vendor/llvm/dist/test/CodeGen/PowerPC/qpx-rounding-ops.ll vendor/llvm/dist/test/CodeGen/PowerPC/qpx-s-load.ll vendor/llvm/dist/test/CodeGen/PowerPC/qpx-s-sel.ll vendor/llvm/dist/test/CodeGen/PowerPC/qpx-s-store.ll vendor/llvm/dist/test/CodeGen/PowerPC/qpx-sel.ll vendor/llvm/dist/test/CodeGen/PowerPC/qpx-split-vsetcc.ll vendor/llvm/dist/test/CodeGen/PowerPC/qpx-store.ll vendor/llvm/dist/test/CodeGen/PowerPC/qpx-unalperm.ll vendor/llvm/dist/test/CodeGen/PowerPC/swaps-le-1.ll vendor/llvm/dist/test/CodeGen/PowerPC/swaps-le-2.ll vendor/llvm/dist/test/CodeGen/PowerPC/tls-cse.ll vendor/llvm/dist/test/CodeGen/PowerPC/vec_add_sub_doubleword.ll vendor/llvm/dist/test/CodeGen/PowerPC/vec_add_sub_quadword.ll vendor/llvm/dist/test/CodeGen/PowerPC/vec_clz.ll vendor/llvm/dist/test/CodeGen/PowerPC/vec_cmpd.ll vendor/llvm/dist/test/CodeGen/PowerPC/vec_minmax.ll vendor/llvm/dist/test/CodeGen/PowerPC/vec_mul_even_odd.ll vendor/llvm/dist/test/CodeGen/PowerPC/vec_popcnt.ll vendor/llvm/dist/test/CodeGen/PowerPC/vec_rotate_shift.ll vendor/llvm/dist/test/CodeGen/PowerPC/vec_shuffle_p8vector.ll vendor/llvm/dist/test/CodeGen/PowerPC/vec_shuffle_p8vector_le.ll vendor/llvm/dist/test/CodeGen/PowerPC/vec_veqv_vnand_vorc.ll vendor/llvm/dist/test/CodeGen/PowerPC/vsx-elementary-arith.ll vendor/llvm/dist/test/CodeGen/PowerPC/vsx-infl-copy1.ll vendor/llvm/dist/test/CodeGen/PowerPC/vsx-infl-copy2.ll vendor/llvm/dist/test/CodeGen/PowerPC/vsx-recip-est.ll vendor/llvm/dist/test/CodeGen/PowerPC/vsx-spill-norwstore.ll vendor/llvm/dist/test/CodeGen/PowerPC/vsx_scalar_ld_st.ll vendor/llvm/dist/test/CodeGen/PowerPC/xxleqv_xxlnand_xxlorc.ll vendor/llvm/dist/test/CodeGen/R600/coalescer_remat.ll vendor/llvm/dist/test/CodeGen/R600/commute-compares.ll vendor/llvm/dist/test/CodeGen/R600/cvt_flr_i32_f32.ll vendor/llvm/dist/test/CodeGen/R600/cvt_rpi_i32_f32.ll vendor/llvm/dist/test/CodeGen/R600/debug.ll vendor/llvm/dist/test/CodeGen/R600/ffloor.f64.ll vendor/llvm/dist/test/CodeGen/R600/fma-combine.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.fract.f64.ll vendor/llvm/dist/test/CodeGen/R600/llvm.round.f64.ll vendor/llvm/dist/test/CodeGen/R600/mad-combine.ll vendor/llvm/dist/test/CodeGen/R600/madak.ll vendor/llvm/dist/test/CodeGen/R600/madmk.ll vendor/llvm/dist/test/CodeGen/R600/merge-stores.ll vendor/llvm/dist/test/CodeGen/R600/sdivrem64.ll vendor/llvm/dist/test/CodeGen/R600/si-spill-cf.ll vendor/llvm/dist/test/CodeGen/SystemZ/ctpop-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-move-10.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-move-11.ll vendor/llvm/dist/test/CodeGen/SystemZ/frame-19.ll vendor/llvm/dist/test/CodeGen/SystemZ/frame-20.ll vendor/llvm/dist/test/CodeGen/SystemZ/htm-intrinsics.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-50.ll vendor/llvm/dist/test/CodeGen/SystemZ/risbg-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/tail-call-mem-intrinsics.ll vendor/llvm/dist/test/CodeGen/SystemZ/tls-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/tls-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/tls-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/tls-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/tls-06.ll vendor/llvm/dist/test/CodeGen/SystemZ/tls-07.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-abi-align.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-abs-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-abs-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-abs-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-abs-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-abs-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-add-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-and-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-and-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-and-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-args-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-args-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-args-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-args-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-args-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-args-error-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-args-error-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-args-error-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-args-error-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-args-error-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-args-error-06.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-args-error-07.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-args-error-08.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-cmp-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-cmp-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-cmp-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-cmp-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-cmp-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-cmp-06.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-combine-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-combine-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-const-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-const-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-const-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-const-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-const-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-const-06.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-const-07.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-const-08.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-const-09.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-const-10.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-const-11.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-const-12.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-const-13.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-const-14.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-const-15.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-const-16.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-const-17.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-const-18.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-conv-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-conv-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-ctlz-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-ctpop-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-cttz-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-div-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-extract-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-extract-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-intrinsics.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-log-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-max-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-max-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-max-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-max-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-min-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-min-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-min-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-min-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-move-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-move-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-move-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-move-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-move-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-move-06.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-move-07.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-move-08.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-move-09.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-move-10.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-move-11.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-move-12.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-move-13.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-move-14.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-move-15.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-move-16.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-move-17.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-mul-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-mul-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-neg-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-or-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-or-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-perm-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-perm-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-perm-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-perm-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-perm-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-perm-06.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-perm-07.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-perm-08.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-perm-09.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-perm-10.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-perm-11.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-round-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-shift-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-shift-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-shift-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-shift-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-shift-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-shift-06.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-shift-07.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-sqrt-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-sub-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/vec-xor-01.ll vendor/llvm/dist/test/CodeGen/Thumb/stack-access.ll vendor/llvm/dist/test/CodeGen/Thumb2/cbnz.ll vendor/llvm/dist/test/CodeGen/Thumb2/ifcvt-compare.ll vendor/llvm/dist/test/CodeGen/WinEH/ vendor/llvm/dist/test/CodeGen/WinEH/cppeh-alloca-sink.ll vendor/llvm/dist/test/CodeGen/WinEH/cppeh-catch-all.ll vendor/llvm/dist/test/CodeGen/WinEH/cppeh-catch-and-throw.ll vendor/llvm/dist/test/CodeGen/WinEH/cppeh-catch-scalar.ll vendor/llvm/dist/test/CodeGen/WinEH/cppeh-catch-unwind.ll vendor/llvm/dist/test/CodeGen/WinEH/cppeh-cleanup-invoke.ll vendor/llvm/dist/test/CodeGen/WinEH/cppeh-demote-liveout.ll vendor/llvm/dist/test/CodeGen/WinEH/cppeh-frame-vars.ll vendor/llvm/dist/test/CodeGen/WinEH/cppeh-inalloca.ll vendor/llvm/dist/test/CodeGen/WinEH/cppeh-min-unwind.ll vendor/llvm/dist/test/CodeGen/WinEH/cppeh-mixed-catch-and-cleanup.ll vendor/llvm/dist/test/CodeGen/WinEH/cppeh-multi-catch.ll vendor/llvm/dist/test/CodeGen/WinEH/cppeh-nested-1.ll vendor/llvm/dist/test/CodeGen/WinEH/cppeh-nested-2.ll vendor/llvm/dist/test/CodeGen/WinEH/cppeh-nested-3.ll vendor/llvm/dist/test/CodeGen/WinEH/cppeh-nested-rethrow.ll vendor/llvm/dist/test/CodeGen/WinEH/cppeh-nonalloca-frame-values.ll vendor/llvm/dist/test/CodeGen/WinEH/cppeh-prepared-catch-all.ll vendor/llvm/dist/test/CodeGen/WinEH/cppeh-prepared-catch-reordered.ll vendor/llvm/dist/test/CodeGen/WinEH/cppeh-prepared-catch.ll (contents, props changed) vendor/llvm/dist/test/CodeGen/WinEH/cppeh-prepared-cleanups.ll (contents, props changed) vendor/llvm/dist/test/CodeGen/WinEH/cppeh-shared-empty-catch.ll vendor/llvm/dist/test/CodeGen/WinEH/cppeh-similar-catch-blocks.ll vendor/llvm/dist/test/CodeGen/WinEH/cppeh-state-calc-1.ll (contents, props changed) vendor/llvm/dist/test/CodeGen/WinEH/lit.local.cfg vendor/llvm/dist/test/CodeGen/WinEH/seh-catch-all.ll vendor/llvm/dist/test/CodeGen/WinEH/seh-inlined-finally.ll vendor/llvm/dist/test/CodeGen/WinEH/seh-outlined-finally.ll vendor/llvm/dist/test/CodeGen/WinEH/seh-prepared-basic.ll vendor/llvm/dist/test/CodeGen/WinEH/seh-resume-phi.ll vendor/llvm/dist/test/CodeGen/WinEH/seh-simple.ll vendor/llvm/dist/test/CodeGen/X86/GC/dynamic-frame-size.ll vendor/llvm/dist/test/CodeGen/X86/add32ri8.ll vendor/llvm/dist/test/CodeGen/X86/avx-insertelt.ll vendor/llvm/dist/test/CodeGen/X86/avx512-bugfix-23634.ll vendor/llvm/dist/test/CodeGen/X86/avx512-calling-conv.ll vendor/llvm/dist/test/CodeGen/X86/avx512-intel-ocl.ll vendor/llvm/dist/test/CodeGen/X86/avx512-mask-bugfix.ll (contents, props changed) vendor/llvm/dist/test/CodeGen/X86/avx512-round.ll vendor/llvm/dist/test/CodeGen/X86/avx512-scalar.ll vendor/llvm/dist/test/CodeGen/X86/avx512dqvl-intrinsics.ll vendor/llvm/dist/test/CodeGen/X86/bitcast-mmx.ll vendor/llvm/dist/test/CodeGen/X86/branchfolding-landingpads.ll vendor/llvm/dist/test/CodeGen/X86/cmov-double.ll vendor/llvm/dist/test/CodeGen/X86/cmovcmov.ll vendor/llvm/dist/test/CodeGen/X86/cmp-fast-isel.ll vendor/llvm/dist/test/CodeGen/X86/coalescer-subreg.ll vendor/llvm/dist/test/CodeGen/X86/code_placement_outline_optional_branches.ll vendor/llvm/dist/test/CodeGen/X86/commute-clmul.ll vendor/llvm/dist/test/CodeGen/X86/commute-fcmp.ll vendor/llvm/dist/test/CodeGen/X86/commute-xop.ll vendor/llvm/dist/test/CodeGen/X86/constant-hoisting-optnone.ll vendor/llvm/dist/test/CodeGen/X86/copy-propagation.ll vendor/llvm/dist/test/CodeGen/X86/dbg-combine.ll vendor/llvm/dist/test/CodeGen/X86/dwarf-eh-prepare.ll vendor/llvm/dist/test/CodeGen/X86/eh-label.ll vendor/llvm/dist/test/CodeGen/X86/exception-label.ll vendor/llvm/dist/test/CodeGen/X86/exedeps-movq.ll vendor/llvm/dist/test/CodeGen/X86/extractelement-index.ll vendor/llvm/dist/test/CodeGen/X86/extractelement-legalization-store-ordering.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-constrain-store-indexreg.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-double-half-convertion.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-float-half-convertion.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-fptrunc-fpext.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-int-float-conversion.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-movsbl-indexreg.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-sext.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-trunc-kill-subreg.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-vecload.ll vendor/llvm/dist/test/CodeGen/X86/fastmath-float-half-conversion.ll vendor/llvm/dist/test/CodeGen/X86/fcmove.ll vendor/llvm/dist/test/CodeGen/X86/fdiv-combine.ll vendor/llvm/dist/test/CodeGen/X86/float-conv-elim.ll vendor/llvm/dist/test/CodeGen/X86/fold-load-unops.ll vendor/llvm/dist/test/CodeGen/X86/fold-vector-bv-crash.ll vendor/llvm/dist/test/CodeGen/X86/fold-vector-shuffle-crash.ll vendor/llvm/dist/test/CodeGen/X86/fold-vector-trunc-sitofp.ll vendor/llvm/dist/test/CodeGen/X86/fp-double-rounding.ll vendor/llvm/dist/test/CodeGen/X86/frameescape.ll vendor/llvm/dist/test/CodeGen/X86/function-subtarget-features-2.ll vendor/llvm/dist/test/CodeGen/X86/function-subtarget-features.ll vendor/llvm/dist/test/CodeGen/X86/global-sections-comdat.ll vendor/llvm/dist/test/CodeGen/X86/huge-stack-offset.ll vendor/llvm/dist/test/CodeGen/X86/i1narrowfail.ll vendor/llvm/dist/test/CodeGen/X86/imul.ll vendor/llvm/dist/test/CodeGen/X86/init-priority.ll vendor/llvm/dist/test/CodeGen/X86/inline-asm-duplicated-constraint.ll vendor/llvm/dist/test/CodeGen/X86/insertps-O0-bug.ll vendor/llvm/dist/test/CodeGen/X86/licm-regpressure.ll vendor/llvm/dist/test/CodeGen/X86/llc-override-mcpu-mattr.ll vendor/llvm/dist/test/CodeGen/X86/logical-load-fold.ll vendor/llvm/dist/test/CodeGen/X86/masked_gather_scatter.ll vendor/llvm/dist/test/CodeGen/X86/merge-consecutive-stores-i1.ll vendor/llvm/dist/test/CodeGen/X86/mmx-arg-passing-x86-64.ll vendor/llvm/dist/test/CodeGen/X86/mmx-bitcast.ll vendor/llvm/dist/test/CodeGen/X86/mmx-fold-load.ll vendor/llvm/dist/test/CodeGen/X86/mmx-intrinsics.ll vendor/llvm/dist/test/CodeGen/X86/non-unique-sections.ll vendor/llvm/dist/test/CodeGen/X86/pr21792.ll vendor/llvm/dist/test/CodeGen/X86/pr23103.ll vendor/llvm/dist/test/CodeGen/X86/pr23246.ll vendor/llvm/dist/test/CodeGen/X86/pr23273.ll vendor/llvm/dist/test/CodeGen/X86/seh-catch-all.ll vendor/llvm/dist/test/CodeGen/X86/seh-except-finally.ll vendor/llvm/dist/test/CodeGen/X86/seh-filter.ll vendor/llvm/dist/test/CodeGen/X86/seh-finally.ll vendor/llvm/dist/test/CodeGen/X86/seh-safe-div.ll vendor/llvm/dist/test/CodeGen/X86/selectiondag-crash.ll vendor/llvm/dist/test/CodeGen/X86/shift-avx2-crash.ll (contents, props changed) vendor/llvm/dist/test/CodeGen/X86/sibcall-win64.ll vendor/llvm/dist/test/CodeGen/X86/sink-cheap-instructions.ll vendor/llvm/dist/test/CodeGen/X86/splat-const.ll vendor/llvm/dist/test/CodeGen/X86/sret-implicit.ll vendor/llvm/dist/test/CodeGen/X86/sse-scalar-fp-arith-unary.ll vendor/llvm/dist/test/CodeGen/X86/sse2-intrinsics-x86-upgrade.ll vendor/llvm/dist/test/CodeGen/X86/stack-folding-3dnow.ll vendor/llvm/dist/test/CodeGen/X86/stack-folding-fp-avx1.ll vendor/llvm/dist/test/CodeGen/X86/stack-folding-fp-sse42.ll vendor/llvm/dist/test/CodeGen/X86/stack-folding-int-avx1.ll vendor/llvm/dist/test/CodeGen/X86/stack-folding-int-avx2.ll vendor/llvm/dist/test/CodeGen/X86/stack-folding-int-sse42.ll vendor/llvm/dist/test/CodeGen/X86/stack-folding-mmx.ll vendor/llvm/dist/test/CodeGen/X86/stack-folding-xop.ll vendor/llvm/dist/test/CodeGen/X86/statepoint-allocas.ll vendor/llvm/dist/test/CodeGen/X86/statepoint-gctransition-call-lowering.ll vendor/llvm/dist/test/CodeGen/X86/statepoint-invoke.ll vendor/llvm/dist/test/CodeGen/X86/switch.ll vendor/llvm/dist/test/CodeGen/X86/tail-call-win64.ll vendor/llvm/dist/test/CodeGen/X86/tailcall-mem-intrinsics.ll vendor/llvm/dist/test/CodeGen/X86/twoaddr-coalesce-3.ll vendor/llvm/dist/test/CodeGen/X86/vec_extract-mmx.ll vendor/llvm/dist/test/CodeGen/X86/vec_fp_to_int.ll vendor/llvm/dist/test/CodeGen/X86/vec_insert-mmx.ll vendor/llvm/dist/test/CodeGen/X86/vec_int_to_fp.ll vendor/llvm/dist/test/CodeGen/X86/vec_partial.ll vendor/llvm/dist/test/CodeGen/X86/vec_reassociate.ll vendor/llvm/dist/test/CodeGen/X86/vec_shift7.ll vendor/llvm/dist/test/CodeGen/X86/vector-shuffle-mmx.ll vendor/llvm/dist/test/CodeGen/X86/win32-eh.ll vendor/llvm/dist/test/CodeGen/X86/win64_frame.ll vendor/llvm/dist/test/CodeGen/X86/win64_nonvol.ll vendor/llvm/dist/test/CodeGen/X86/win_eh_prepare.ll vendor/llvm/dist/test/CodeGen/X86/x32-lea-1.ll vendor/llvm/dist/test/CodeGen/X86/x86-32-vector-calling-conv.ll vendor/llvm/dist/test/CodeGen/X86/x86-64-baseptr.ll vendor/llvm/dist/test/CodeGen/X86/x86-fold-pshufb.ll vendor/llvm/dist/test/CodeGen/X86/x86-framelowering-trap.ll vendor/llvm/dist/test/CodeGen/X86/x86-shrink-wrapping.ll vendor/llvm/dist/test/CodeGen/X86/x86-upgrade-avx2-vbroadcast.ll vendor/llvm/dist/test/DebugInfo/AArch64/constant-dbgloc.ll vendor/llvm/dist/test/DebugInfo/AArch64/frameindices.ll vendor/llvm/dist/test/DebugInfo/ARM/constant-dbgloc.ll vendor/llvm/dist/test/DebugInfo/ARM/header.ll vendor/llvm/dist/test/DebugInfo/ARM/line.test vendor/llvm/dist/test/DebugInfo/ARM/multiple-constant-uses-drops-dbgloc.ll vendor/llvm/dist/test/DebugInfo/ARM/single-constant-use-preserves-dbgloc.ll vendor/llvm/dist/test/DebugInfo/Inputs/line.ll vendor/llvm/dist/test/DebugInfo/Mips/InlinedFnLocalVar.ll vendor/llvm/dist/test/DebugInfo/PDB/ vendor/llvm/dist/test/DebugInfo/PDB/Inputs/ vendor/llvm/dist/test/DebugInfo/PDB/Inputs/empty.cpp (contents, props changed) vendor/llvm/dist/test/DebugInfo/PDB/Inputs/empty.pdb (contents, props changed) vendor/llvm/dist/test/DebugInfo/PDB/Inputs/symbolformat-fpo.cpp (contents, props changed) vendor/llvm/dist/test/DebugInfo/PDB/Inputs/symbolformat.cpp (contents, props changed) vendor/llvm/dist/test/DebugInfo/PDB/Inputs/symbolformat.pdb (contents, props changed) vendor/llvm/dist/test/DebugInfo/PDB/lit.local.cfg vendor/llvm/dist/test/DebugInfo/PDB/pdbdump-flags.test vendor/llvm/dist/test/DebugInfo/PDB/pdbdump-symbol-format.test vendor/llvm/dist/test/DebugInfo/PowerPC/line.test vendor/llvm/dist/test/DebugInfo/X86/InlinedFnLocalVar.ll vendor/llvm/dist/test/DebugInfo/X86/arange-and-stub.ll vendor/llvm/dist/test/DebugInfo/X86/deleted-bit-piece.ll vendor/llvm/dist/test/DebugInfo/X86/empty.ll vendor/llvm/dist/test/DebugInfo/X86/float_const.ll vendor/llvm/dist/test/DebugInfo/X86/frame-register.ll vendor/llvm/dist/test/DebugInfo/X86/header.ll vendor/llvm/dist/test/DebugInfo/X86/inlined-formal-parameter.ll vendor/llvm/dist/test/DebugInfo/X86/line.test vendor/llvm/dist/test/DebugInfo/X86/mi-print.ll vendor/llvm/dist/test/DebugInfo/X86/missing-file-line.ll vendor/llvm/dist/test/DebugInfo/X86/nophysreg.ll vendor/llvm/dist/test/DebugInfo/X86/sroasplit-1.ll vendor/llvm/dist/test/DebugInfo/X86/sroasplit-2.ll vendor/llvm/dist/test/DebugInfo/X86/sroasplit-3.ll vendor/llvm/dist/test/DebugInfo/X86/sroasplit-4.ll vendor/llvm/dist/test/DebugInfo/X86/sroasplit-5.ll vendor/llvm/dist/test/DebugInfo/X86/union-const.ll vendor/llvm/dist/test/DebugInfo/accel-table-hash-collisions.ll vendor/llvm/dist/test/DebugInfo/constant-sdnodes-have-dbg-location.ll vendor/llvm/dist/test/DebugInfo/constantfp-sdnodes-have-dbg-location.ll vendor/llvm/dist/test/DebugInfo/debuginfofinder-forward-declaration.ll vendor/llvm/dist/test/DebugInfo/piece-verifier.ll vendor/llvm/dist/test/ExecutionEngine/OrcLazy/ vendor/llvm/dist/test/ExecutionEngine/OrcLazy/anonymous_globals.ll vendor/llvm/dist/test/ExecutionEngine/OrcLazy/hello.ll vendor/llvm/dist/test/ExecutionEngine/OrcLazy/lit.local.cfg vendor/llvm/dist/test/ExecutionEngine/OrcLazy/private_linkage.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/ vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/2002-12-16-ArgTest.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/2003-01-04-ArgumentBug.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/2003-01-04-LoopTest.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/2003-01-04-PhiTest.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/2003-01-09-SARTest.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/2003-01-10-FUCOM.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/2003-01-15-AlignmentTest.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/2003-05-06-LivenessClobber.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/2003-05-07-ArgumentTest.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/2003-05-11-PHIRegAllocBug.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/2003-06-04-bzip2-bug.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/2003-06-05-PHIBug.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/2003-08-15-AllocaAssertion.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/2003-08-21-EnvironmentTest.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/2003-08-23-RegisterAllocatePhysReg.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/2003-10-18-PHINode-ConstantExpr-CondCode-Failure.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/2005-12-02-TailCallBug.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/2007-12-10-APIntLoadStore.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/2008-06-05-APInt-OverAShr.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/2013-04-04-RelocAddend.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/Inputs/ vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/Inputs/cross-module-b.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/Inputs/multi-module-b.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/Inputs/multi-module-c.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/Inputs/multi-module-eh-b.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/cross-module-a.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/cross-module-sm-pic-a.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/eh-lg-pic.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/eh-sm-pic.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/eh.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/fpbitcast.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/hello.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/hello2.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/lit.local.cfg vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/load-object-a.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/multi-module-a.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/multi-module-eh-a.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/multi-module-sm-pic-a.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/non-extern-addend.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/pr13727.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/remote/ vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/remote/Inputs/ vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/remote/Inputs/cross-module-b.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/remote/Inputs/multi-module-b.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/remote/Inputs/multi-module-c.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/remote/cross-module-a.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/remote/cross-module-sm-pic-a.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/remote/lit.local.cfg vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/remote/multi-module-a.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/remote/multi-module-sm-pic-a.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/remote/simpletest-remote.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/remote/stubs-remote.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/remote/stubs-sm-pic.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/remote/test-common-symbols-remote.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/remote/test-data-align-remote.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/remote/test-fp-no-external-funcs-remote.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/remote/test-global-init-nonzero-remote.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/remote/test-global-init-nonzero-sm-pic.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/remote/test-ptr-reloc-remote.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/remote/test-ptr-reloc-sm-pic.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/simplesttest.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/simpletest.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/stubs-sm-pic.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/stubs.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/test-arith.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/test-branch.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/test-call-no-external-funcs.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/test-call.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/test-cast.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/test-common-symbols-alignment.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/test-common-symbols.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/test-constantexpr.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/test-data-align.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/test-fp-no-external-funcs.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/test-fp.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/test-global-ctors.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/test-global-init-nonzero-sm-pic.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/test-global-init-nonzero.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/test-global.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/test-loadstore.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/test-local.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/test-logical.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/test-loop.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/test-phi.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/test-ptr-reloc-sm-pic.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/test-ptr-reloc.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/test-ret.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/test-return.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/test-setcond-fp.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/test-setcond-int.ll vendor/llvm/dist/test/ExecutionEngine/OrcMCJIT/test-shift.ll vendor/llvm/dist/test/ExecutionEngine/RuntimeDyld/X86/COFF_x86_64 vendor/llvm/dist/test/ExecutionEngine/RuntimeDyld/X86/ELF_x64-64_PIC_relocations.s (contents, props changed) vendor/llvm/dist/test/ExecutionEngine/RuntimeDyld/X86/Inputs/ vendor/llvm/dist/test/ExecutionEngine/RuntimeDyld/X86/Inputs/ExternalGlobal.ll vendor/llvm/dist/test/Feature/seh-nounwind.ll vendor/llvm/dist/test/FileCheck/same.txt (contents, props changed) vendor/llvm/dist/test/Instrumentation/AddressSanitizer/X86/asm_cpuid.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/do-not-instrument-promotable-allocas.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/experiment-call.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/experiment.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/instrument-stack.ll vendor/llvm/dist/test/Instrumentation/InstrProfiling/linkage.ll vendor/llvm/dist/test/Instrumentation/MemorySanitizer/store-long-origin.ll vendor/llvm/dist/test/Instrumentation/SanitizerCoverage/cmp-tracing.ll vendor/llvm/dist/test/Instrumentation/ThreadSanitizer/capture.ll vendor/llvm/dist/test/Instrumentation/ThreadSanitizer/unaligned.ll vendor/llvm/dist/test/LTO/ARM/ vendor/llvm/dist/test/LTO/ARM/inline-asm.ll vendor/llvm/dist/test/LTO/ARM/lit.local.cfg vendor/llvm/dist/test/LTO/ARM/runtime-library-subtarget.ll vendor/llvm/dist/test/LTO/X86/ vendor/llvm/dist/test/LTO/X86/Inputs/ vendor/llvm/dist/test/LTO/X86/Inputs/bcsection.macho.s (contents, props changed) vendor/llvm/dist/test/LTO/X86/Inputs/bcsection.s (contents, props changed) vendor/llvm/dist/test/LTO/X86/Inputs/invalid.ll.bc (contents, props changed) vendor/llvm/dist/test/LTO/X86/Inputs/list-symbols.ll vendor/llvm/dist/test/LTO/X86/attrs.ll vendor/llvm/dist/test/LTO/X86/bcsection.ll vendor/llvm/dist/test/LTO/X86/cfi_endproc.ll vendor/llvm/dist/test/LTO/X86/current-section.ll vendor/llvm/dist/test/LTO/X86/diagnostic-handler-remarks.ll vendor/llvm/dist/test/LTO/X86/invalid.ll vendor/llvm/dist/test/LTO/X86/keep-used-puts-during-instcombine.ll vendor/llvm/dist/test/LTO/X86/linkonce_odr_func.ll vendor/llvm/dist/test/LTO/X86/list-symbols.ll vendor/llvm/dist/test/LTO/X86/lit.local.cfg vendor/llvm/dist/test/LTO/X86/no-undefined-puts-when-implemented.ll vendor/llvm/dist/test/LTO/X86/private-symbol.ll vendor/llvm/dist/test/LTO/X86/runtime-library.ll vendor/llvm/dist/test/LTO/X86/set-merged.ll vendor/llvm/dist/test/LTO/X86/symver-asm.ll vendor/llvm/dist/test/LTO/X86/triple-init.ll vendor/llvm/dist/test/Linker/Inputs/apple-version/ vendor/llvm/dist/test/Linker/Inputs/apple-version/1.ll vendor/llvm/dist/test/Linker/Inputs/apple-version/2.ll vendor/llvm/dist/test/Linker/Inputs/apple-version/3.ll vendor/llvm/dist/test/Linker/Inputs/apple-version/4.ll vendor/llvm/dist/test/Linker/Inputs/drop-debug.bc (contents, props changed) vendor/llvm/dist/test/Linker/Inputs/metadata-function.ll vendor/llvm/dist/test/Linker/Inputs/override-different-linkage.ll vendor/llvm/dist/test/Linker/Inputs/override-with-internal-linkage-2.ll vendor/llvm/dist/test/Linker/Inputs/override-with-internal-linkage.ll vendor/llvm/dist/test/Linker/Inputs/override.ll vendor/llvm/dist/test/Linker/Inputs/pr22807-1.ll vendor/llvm/dist/test/Linker/Inputs/pr22807-2.ll vendor/llvm/dist/test/Linker/Inputs/subprogram-linkonce-weak-odr.ll vendor/llvm/dist/test/Linker/Inputs/subprogram-linkonce-weak.ll vendor/llvm/dist/test/Linker/Inputs/targettriple-c.ll vendor/llvm/dist/test/Linker/apple-version.ll vendor/llvm/dist/test/Linker/broken.ll vendor/llvm/dist/test/Linker/drop-debug.ll vendor/llvm/dist/test/Linker/metadata-function.ll vendor/llvm/dist/test/Linker/override-different-linkage.ll vendor/llvm/dist/test/Linker/override-with-internal-linkage-2.ll vendor/llvm/dist/test/Linker/override-with-internal-linkage.ll vendor/llvm/dist/test/Linker/override.ll vendor/llvm/dist/test/Linker/pr22807.ll vendor/llvm/dist/test/Linker/subprogram-linkonce-weak-odr.ll vendor/llvm/dist/test/Linker/subprogram-linkonce-weak.ll vendor/llvm/dist/test/MC/AArch64/arm64-fp-encoding-error.s (contents, props changed) vendor/llvm/dist/test/MC/AArch64/armv8.1a-lor.s (contents, props changed) vendor/llvm/dist/test/MC/AArch64/armv8.1a-pan.s (contents, props changed) vendor/llvm/dist/test/MC/AArch64/armv8.1a-rdma.s (contents, props changed) vendor/llvm/dist/test/MC/AArch64/armv8.1a-vhe.s (contents, props changed) vendor/llvm/dist/test/MC/AArch64/expr-shr.s (contents, props changed) vendor/llvm/dist/test/MC/ARM/Windows/invalid-relocation.s (contents, props changed) vendor/llvm/dist/test/MC/ARM/arm11-hint-instr.s (contents, props changed) vendor/llvm/dist/test/MC/ARM/basic-arm-instructions-v8.1a.s (contents, props changed) vendor/llvm/dist/test/MC/ARM/directive-arch-armv6k.s (contents, props changed) vendor/llvm/dist/test/MC/ARM/directive-fpu-diagnostics.s (contents, props changed) vendor/llvm/dist/test/MC/ARM/eh-link.s (contents, props changed) vendor/llvm/dist/test/MC/ARM/thumb1-relax-adr.s (contents, props changed) vendor/llvm/dist/test/MC/ARM/thumb1-relax-bcc.s (contents, props changed) vendor/llvm/dist/test/MC/ARM/thumb1-relax-br.s (contents, props changed) vendor/llvm/dist/test/MC/ARM/thumb1-relax-ldrlit.s (contents, props changed) vendor/llvm/dist/test/MC/ARM/thumb2-bxj-v8.s (contents, props changed) vendor/llvm/dist/test/MC/ARM/thumb2-dsp-diag.s (contents, props changed) vendor/llvm/dist/test/MC/AsmParser/at-pseudo-variable-bad.s (contents, props changed) vendor/llvm/dist/test/MC/AsmParser/at-pseudo-variable.s (contents, props changed) vendor/llvm/dist/test/MC/AsmParser/expr-shr.s (contents, props changed) vendor/llvm/dist/test/MC/AsmParser/ifnes.s (contents, props changed) vendor/llvm/dist/test/MC/COFF/cross-section-relative.ll vendor/llvm/dist/test/MC/COFF/pr23025.s (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/AArch64/armv8.1a-lor.txt (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/AArch64/armv8.1a-pan.txt (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/AArch64/armv8.1a-rdma.txt (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/AArch64/armv8.1a-vhe.txt (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/ARM/armv8.1a.txt (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/ARM/invalid-armv8.1a.txt (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/ARM/invalid-thumbv8.1a.txt (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/ARM/thumb-v8.1a.txt (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/Hexagon/xtype_complex.txt (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/Mips/micromips32r6.txt (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/Mips/mips32r3/ vendor/llvm/dist/test/MC/Disassembler/Mips/mips32r3/valid-mips32r3-le.txt (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/Mips/mips32r3/valid-mips32r3.txt (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/Mips/mips32r3/valid-xfail-mips32r3.txt (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/Mips/mips32r5/ vendor/llvm/dist/test/MC/Disassembler/Mips/mips32r5/valid-mips32r5-le.txt (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/Mips/mips32r5/valid-mips32r5.txt (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/Mips/mips32r5/valid-xfail-mips32r5.txt (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/Mips/mips64r3/ vendor/llvm/dist/test/MC/Disassembler/Mips/mips64r3/valid-mips64r3-el.txt (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/Mips/mips64r3/valid-mips64r3.txt (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/Mips/mips64r3/valid-xfail-mips64r3.txt (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/Mips/mips64r5/ vendor/llvm/dist/test/MC/Disassembler/Mips/mips64r5/valid-mips64r5-el.txt (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/Mips/mips64r5/valid-mips64r5.txt (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/Mips/mips64r5/valid-xfail-mips64r5.txt (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/PowerPC/dcbt.txt (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/PowerPC/ppc64-encoding-p8vector.txt (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/PowerPC/qpx.txt (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/Sparc/sparc-special-registers.txt (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/SystemZ/insns-z13-bad.txt (contents, props changed) vendor/llvm/dist/test/MC/Disassembler/SystemZ/insns-z13.txt (contents, props changed) vendor/llvm/dist/test/MC/ELF/alias-to-local.s (contents, props changed) vendor/llvm/dist/test/MC/ELF/common-error1.s (contents, props changed) vendor/llvm/dist/test/MC/ELF/common-error2.s (contents, props changed) vendor/llvm/dist/test/MC/ELF/pr19582.s (contents, props changed) vendor/llvm/dist/test/MC/ELF/section-unique-err1.s (contents, props changed) vendor/llvm/dist/test/MC/ELF/section-unique-err2.s (contents, props changed) vendor/llvm/dist/test/MC/ELF/section-unique-err3.s (contents, props changed) vendor/llvm/dist/test/MC/ELF/section-unique-err4.s (contents, props changed) vendor/llvm/dist/test/MC/ELF/section-unique.s (contents, props changed) vendor/llvm/dist/test/MC/ELF/size.s (contents, props changed) vendor/llvm/dist/test/MC/ELF/symver-msvc.s (contents, props changed) vendor/llvm/dist/test/MC/ELF/weak-diff.s (contents, props changed) vendor/llvm/dist/test/MC/MachO/AArch64/classrefs.s (contents, props changed) vendor/llvm/dist/test/MC/MachO/AArch64/cstexpr-gotpcrel.ll vendor/llvm/dist/test/MC/MachO/AArch64/ld64-workaround.s (contents, props changed) vendor/llvm/dist/test/MC/MachO/AArch64/mergeable.s (contents, props changed) vendor/llvm/dist/test/MC/MachO/ARM/cstexpr-gotpcrel.ll vendor/llvm/dist/test/MC/MachO/cstexpr-gotpcrel-32.ll vendor/llvm/dist/test/MC/MachO/cstexpr-gotpcrel-64.ll vendor/llvm/dist/test/MC/MachO/x86_64-mergeable.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/asciiz-directive-bad.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/asciiz-directive.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/insn-directive.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/micromips-branch-fixup.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/micromips32r6/ vendor/llvm/dist/test/MC/Mips/micromips32r6/valid.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/mips32r3/ vendor/llvm/dist/test/MC/Mips/mips32r3/abiflags.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/mips32r3/invalid-mips64r2.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/mips32r3/invalid.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/mips32r3/valid-xfail.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/mips32r3/valid.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/mips32r5/ vendor/llvm/dist/test/MC/Mips/mips32r5/abiflags.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/mips32r5/invalid-mips64r2.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/mips32r5/invalid.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/mips32r5/valid-xfail.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/mips32r5/valid.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/mips64r3/ vendor/llvm/dist/test/MC/Mips/mips64r3/abi-bad.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/mips64r3/abiflags.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/mips64r3/invalid.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/mips64r3/valid-xfail.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/mips64r3/valid.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/mips64r5/ vendor/llvm/dist/test/MC/Mips/mips64r5/abi-bad.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/mips64r5/abiflags.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/mips64r5/invalid.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/mips64r5/valid-xfail.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/mips64r5/valid.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/module-directive-bad.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/set-at-noat-bad-syntax.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/set-defined-symbol.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/set-nomacro-micromips.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/set-nomacro.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/sort-relocation-table.s (contents, props changed) vendor/llvm/dist/test/MC/Mips/target-soft-float.s (contents, props changed) vendor/llvm/dist/test/MC/PowerPC/dcbt.s (contents, props changed) vendor/llvm/dist/test/MC/PowerPC/htm.s (contents, props changed) vendor/llvm/dist/test/MC/PowerPC/ppc64-encoding-p8vector.s (contents, props changed) vendor/llvm/dist/test/MC/PowerPC/qpx.s (contents, props changed) vendor/llvm/dist/test/MC/R600/ds-err.s (contents, props changed) vendor/llvm/dist/test/MC/R600/ds.s (contents, props changed) vendor/llvm/dist/test/MC/R600/mubuf.s (contents, props changed) vendor/llvm/dist/test/MC/R600/smrd.s (contents, props changed) vendor/llvm/dist/test/MC/R600/sop1-err.s (contents, props changed) vendor/llvm/dist/test/MC/R600/sop1.s (contents, props changed) vendor/llvm/dist/test/MC/R600/sop2.s (contents, props changed) vendor/llvm/dist/test/MC/R600/sopc.s (contents, props changed) vendor/llvm/dist/test/MC/R600/sopk.s (contents, props changed) vendor/llvm/dist/test/MC/R600/vop1.s (contents, props changed) vendor/llvm/dist/test/MC/R600/vop2-err.s (contents, props changed) vendor/llvm/dist/test/MC/R600/vop2.s (contents, props changed) vendor/llvm/dist/test/MC/R600/vop3-errs.s (contents, props changed) vendor/llvm/dist/test/MC/R600/vop3.s (contents, props changed) vendor/llvm/dist/test/MC/R600/vopc.s (contents, props changed) vendor/llvm/dist/test/MC/Sparc/sparc-assembly-exprs.s (contents, props changed) vendor/llvm/dist/test/MC/Sparc/sparc-little-endian.s (contents, props changed) vendor/llvm/dist/test/MC/Sparc/sparc-special-registers.s (contents, props changed) vendor/llvm/dist/test/MC/Sparc/sparc-synthetic-instructions.s (contents, props changed) vendor/llvm/dist/test/MC/Sparc/sparcv9-atomic-instructions.s (contents, props changed) vendor/llvm/dist/test/MC/SystemZ/fixups.s (contents, props changed) vendor/llvm/dist/test/MC/SystemZ/insn-bad-z13.s (contents, props changed) vendor/llvm/dist/test/MC/SystemZ/insn-bad-zEC12.s (contents, props changed) vendor/llvm/dist/test/MC/SystemZ/insn-good-z13.s (contents, props changed) vendor/llvm/dist/test/MC/SystemZ/insn-good-zEC12.s (contents, props changed) vendor/llvm/dist/test/MC/X86/AlignedBundling/section-alignment.s (contents, props changed) vendor/llvm/dist/test/MC/X86/avx512-err.s (contents, props changed) vendor/llvm/dist/test/MC/X86/expand-var.s (contents, props changed) vendor/llvm/dist/test/MC/X86/i386-darwin-frame-register.ll vendor/llvm/dist/test/MC/X86/intel-syntax-x86-64-avx512f_vl.s (contents, props changed) vendor/llvm/dist/test/MC/X86/invalid-sleb.s (contents, props changed) vendor/llvm/dist/test/Object/Inputs/archive-test.a-irix6-mips64el (contents, props changed) vendor/llvm/dist/test/Object/Inputs/macho-empty-kext-bundle-x86-64 (contents, props changed) vendor/llvm/dist/test/Object/Inputs/macho-invalid-bad-symbol-index (contents, props changed) vendor/llvm/dist/test/Object/Inputs/macho-invalid-no-size-for-sections (contents, props changed) vendor/llvm/dist/test/Object/Inputs/macho-invalid-section-index-getSectionRawName (contents, props changed) vendor/llvm/dist/test/Object/Inputs/macho-invalid-symbol-name-past-eof (contents, props changed) vendor/llvm/dist/test/Object/Inputs/macho-invalid-too-small-load-command (contents, props changed) vendor/llvm/dist/test/Object/Inputs/macho-invalid-too-small-segment-load-command (contents, props changed) vendor/llvm/dist/test/Object/Inputs/macho-invalid-zero-ncmds (contents, props changed) vendor/llvm/dist/test/Object/Inputs/macho64-invalid-incomplete-load-command (contents, props changed) vendor/llvm/dist/test/Object/Inputs/macho64-invalid-no-size-for-sections (contents, props changed) vendor/llvm/dist/test/Object/Inputs/macho64-invalid-too-small-load-command (contents, props changed) vendor/llvm/dist/test/Object/Inputs/macho64-invalid-too-small-segment-load-command (contents, props changed) vendor/llvm/dist/test/Object/Inputs/sectionGroup.elf.x86-64 (contents, props changed) vendor/llvm/dist/test/Object/Mips/abi-flags.yaml vendor/llvm/dist/test/Object/Mips/elf-abi.yaml vendor/llvm/dist/test/Object/Mips/elf-flags.yaml vendor/llvm/dist/test/Object/Mips/elf-mips64-rel.yaml vendor/llvm/dist/test/Object/elf-unknown-type.test vendor/llvm/dist/test/Object/kext.test vendor/llvm/dist/test/Object/macho-invalid.test vendor/llvm/dist/test/Object/nm-irix6.test vendor/llvm/dist/test/Object/obj2yaml-sectiongroup.test vendor/llvm/dist/test/Object/yaml2obj-elf-rel-noref.yaml vendor/llvm/dist/test/Other/Inputs/utf8-bom-response (contents, props changed) vendor/llvm/dist/test/Other/Inputs/utf8-response vendor/llvm/dist/test/Other/opt-override-mcpu-mattr.ll vendor/llvm/dist/test/TableGen/AsmPredicateCondsEmission.td vendor/llvm/dist/test/Transforms/BDCE/ vendor/llvm/dist/test/Transforms/BDCE/basic.ll vendor/llvm/dist/test/Transforms/BDCE/dce-pure.ll vendor/llvm/dist/test/Transforms/BDCE/order.ll vendor/llvm/dist/test/Transforms/CodeGenPrepare/R600/ vendor/llvm/dist/test/Transforms/CodeGenPrepare/R600/lit.local.cfg vendor/llvm/dist/test/Transforms/CodeGenPrepare/R600/no-sink-addrspacecast.ll vendor/llvm/dist/test/Transforms/CodeGenPrepare/X86/memset_chk-simplify-nobuiltin.ll vendor/llvm/dist/test/Transforms/CodeGenPrepare/overflow-intrinsics.ll vendor/llvm/dist/test/Transforms/CodeGenPrepare/statepoint-relocate.ll vendor/llvm/dist/test/Transforms/ConstProp/InsertElement.ll vendor/llvm/dist/test/Transforms/ConstProp/convert-from-fp16.ll vendor/llvm/dist/test/Transforms/CorrelatedValuePropagation/select.ll vendor/llvm/dist/test/Transforms/DeadArgElim/aggregates.ll vendor/llvm/dist/test/Transforms/EarlyCSE/AArch64/ vendor/llvm/dist/test/Transforms/EarlyCSE/AArch64/intrinsics.ll vendor/llvm/dist/test/Transforms/EarlyCSE/AArch64/lit.local.cfg vendor/llvm/dist/test/Transforms/EarlyCSE/conditional.ll vendor/llvm/dist/test/Transforms/EarlyCSE/edge.ll vendor/llvm/dist/test/Transforms/EarlyCSE/read-reg.ll vendor/llvm/dist/test/Transforms/Float2Int/ vendor/llvm/dist/test/Transforms/Float2Int/basic.ll vendor/llvm/dist/test/Transforms/Float2Int/float2int-optnone.ll vendor/llvm/dist/test/Transforms/Float2Int/toolarge.ll vendor/llvm/dist/test/Transforms/FunctionAttrs/readnone.ll vendor/llvm/dist/test/Transforms/GVN/basic-undef-test.ll vendor/llvm/dist/test/Transforms/GVN/pre-no-cost-phi.ll vendor/llvm/dist/test/Transforms/GVN/volatile.ll vendor/llvm/dist/test/Transforms/IRCE/ vendor/llvm/dist/test/Transforms/IRCE/bug-loop-varying-upper-limit.ll vendor/llvm/dist/test/Transforms/IRCE/bug-mismatched-types.ll vendor/llvm/dist/test/Transforms/IRCE/decrementing-loop.ll vendor/llvm/dist/test/Transforms/IRCE/low-becount.ll vendor/llvm/dist/test/Transforms/IRCE/multiple-access-no-preloop.ll vendor/llvm/dist/test/Transforms/IRCE/not-likely-taken.ll vendor/llvm/dist/test/Transforms/IRCE/only-lower-check.ll vendor/llvm/dist/test/Transforms/IRCE/only-upper-check.ll vendor/llvm/dist/test/Transforms/IRCE/single-access-no-preloop.ll vendor/llvm/dist/test/Transforms/IRCE/single-access-with-preloop.ll vendor/llvm/dist/test/Transforms/IRCE/unhandled.ll vendor/llvm/dist/test/Transforms/IRCE/with-parent-loops.ll (contents, props changed) vendor/llvm/dist/test/Transforms/IndVarSimplify/lftr-udiv-tripcount.ll vendor/llvm/dist/test/Transforms/Inline/alloca-dbgdeclare.ll vendor/llvm/dist/test/Transforms/Inline/crash-lifetime-marker.ll vendor/llvm/dist/test/Transforms/Inline/debug-info-duplicate-calls.ll vendor/llvm/dist/test/Transforms/Inline/frameescape.ll vendor/llvm/dist/test/Transforms/Inline/inline-fast-math-flags.ll vendor/llvm/dist/test/Transforms/Inline/inline-fp.ll vendor/llvm/dist/test/Transforms/Inline/pr22285.ll vendor/llvm/dist/test/Transforms/Inline/store-sroa.ll vendor/llvm/dist/test/Transforms/Inline/vector-bonus.ll vendor/llvm/dist/test/Transforms/InstCombine/aligned-altivec.ll vendor/llvm/dist/test/Transforms/InstCombine/aligned-qpx.ll vendor/llvm/dist/test/Transforms/InstCombine/branch.ll vendor/llvm/dist/test/Transforms/InstCombine/constant-fold-hang.ll vendor/llvm/dist/test/Transforms/InstCombine/default-alignment.ll vendor/llvm/dist/test/Transforms/InstCombine/demand_shrink_nsw.ll vendor/llvm/dist/test/Transforms/InstCombine/dom-conditions.ll vendor/llvm/dist/test/Transforms/InstCombine/gc.relocate.ll vendor/llvm/dist/test/Transforms/InstCombine/gep-sext.ll vendor/llvm/dist/test/Transforms/InstCombine/inline-intrinsic-assert.ll vendor/llvm/dist/test/Transforms/InstCombine/max-of-nots.ll vendor/llvm/dist/test/Transforms/InstCombine/mem-gep-zidx.ll vendor/llvm/dist/test/Transforms/InstCombine/memchr.ll vendor/llvm/dist/test/Transforms/InstCombine/minmax-fold.ll vendor/llvm/dist/test/Transforms/InstCombine/objsize-noverify.ll vendor/llvm/dist/test/Transforms/InstCombine/select-cmp-cttz-ctlz.ll vendor/llvm/dist/test/Transforms/InstCombine/select-crash-noverify.ll vendor/llvm/dist/test/Transforms/InstCombine/switch-truncate-crash.ll vendor/llvm/dist/test/Transforms/InstCombine/type_pun.ll vendor/llvm/dist/test/Transforms/InstCombine/unpack-fca.ll vendor/llvm/dist/test/Transforms/InstCombine/x86-insertps.ll vendor/llvm/dist/test/Transforms/InstCombine/x86-vperm2.ll vendor/llvm/dist/test/Transforms/InstSimplify/floating-point-compare.ll vendor/llvm/dist/test/Transforms/JumpThreading/thread-cmp.ll vendor/llvm/dist/test/Transforms/LICM/constexpr.ll vendor/llvm/dist/test/Transforms/LICM/pr23608.ll vendor/llvm/dist/test/Transforms/LoopDistribute/ vendor/llvm/dist/test/Transforms/LoopDistribute/basic-with-memchecks.ll vendor/llvm/dist/test/Transforms/LoopDistribute/basic.ll vendor/llvm/dist/test/Transforms/LoopDistribute/crash-in-memcheck-generation.ll vendor/llvm/dist/test/Transforms/LoopDistribute/no-if-convert.ll vendor/llvm/dist/test/Transforms/LoopDistribute/outside-use.ll vendor/llvm/dist/test/Transforms/LoopDistribute/program-order.ll vendor/llvm/dist/test/Transforms/LoopInterchange/ vendor/llvm/dist/test/Transforms/LoopInterchange/currentLimitation.ll vendor/llvm/dist/test/Transforms/LoopInterchange/interchange.ll vendor/llvm/dist/test/Transforms/LoopInterchange/profitability.ll vendor/llvm/dist/test/Transforms/LoopInterchange/reductions.ll vendor/llvm/dist/test/Transforms/LoopRotate/pr22337.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/negative-scale.ll vendor/llvm/dist/test/Transforms/LoopUnroll/AArch64/ vendor/llvm/dist/test/Transforms/LoopUnroll/AArch64/lit.local.cfg vendor/llvm/dist/test/Transforms/LoopUnroll/AArch64/partial.ll vendor/llvm/dist/test/Transforms/LoopUnroll/AArch64/runtime-loop.ll vendor/llvm/dist/test/Transforms/LoopUnroll/PowerPC/a2-high-cost-trip-count-computation.ll vendor/llvm/dist/test/Transforms/LoopUnroll/full-unroll-bad-geps.ll vendor/llvm/dist/test/Transforms/LoopUnroll/full-unroll-heuristics.ll vendor/llvm/dist/test/Transforms/LoopUnroll/high-cost-trip-count-computation.ll vendor/llvm/dist/test/Transforms/LoopUnroll/runtime-loop4.ll vendor/llvm/dist/test/Transforms/LoopUnroll/runtime-loop5.ll vendor/llvm/dist/test/Transforms/LoopUnroll/unroll-cleanup.ll vendor/llvm/dist/test/Transforms/LoopVectorize/AArch64/arbitrary-induction-step.ll vendor/llvm/dist/test/Transforms/LoopVectorize/PowerPC/large-loop-rdx.ll vendor/llvm/dist/test/Transforms/LoopVectorize/PowerPC/small-loop-rdx.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/veclib-calls.ll vendor/llvm/dist/test/Transforms/LoopVectorize/unroll.ll vendor/llvm/dist/test/Transforms/LowerBitSets/ vendor/llvm/dist/test/Transforms/LowerBitSets/constant.ll vendor/llvm/dist/test/Transforms/LowerBitSets/layout.ll vendor/llvm/dist/test/Transforms/LowerBitSets/simple.ll vendor/llvm/dist/test/Transforms/LowerBitSets/single-offset.ll vendor/llvm/dist/test/Transforms/LowerSwitch/fold-popular-case-to-unreachable-default.ll vendor/llvm/dist/test/Transforms/MemCpyOpt/memset-memcpy-redundant-memset.ll vendor/llvm/dist/test/Transforms/MemCpyOpt/memset-memcpy-to-2x-memset.ll vendor/llvm/dist/test/Transforms/MergeFunc/alloca.ll vendor/llvm/dist/test/Transforms/NaryReassociate/ vendor/llvm/dist/test/Transforms/NaryReassociate/NVPTX/ vendor/llvm/dist/test/Transforms/NaryReassociate/NVPTX/lit.local.cfg vendor/llvm/dist/test/Transforms/NaryReassociate/NVPTX/nary-gep.ll vendor/llvm/dist/test/Transforms/NaryReassociate/NVPTX/nary-slsr.ll vendor/llvm/dist/test/Transforms/NaryReassociate/nary-add.ll vendor/llvm/dist/test/Transforms/PlaceSafepoints/ vendor/llvm/dist/test/Transforms/PlaceSafepoints/basic.ll vendor/llvm/dist/test/Transforms/PlaceSafepoints/call-in-loop.ll vendor/llvm/dist/test/Transforms/PlaceSafepoints/call_gc_result.ll vendor/llvm/dist/test/Transforms/PlaceSafepoints/finite-loops.ll vendor/llvm/dist/test/Transforms/PlaceSafepoints/invokes.ll vendor/llvm/dist/test/Transforms/PlaceSafepoints/memset.ll vendor/llvm/dist/test/Transforms/PlaceSafepoints/patchable-statepoints.ll vendor/llvm/dist/test/Transforms/PlaceSafepoints/split-backedge.ll vendor/llvm/dist/test/Transforms/PlaceSafepoints/statepoint-calling-conventions.ll vendor/llvm/dist/test/Transforms/PlaceSafepoints/statepoint-coreclr.ll vendor/llvm/dist/test/Transforms/PlaceSafepoints/statepoint-format.ll vendor/llvm/dist/test/Transforms/PlaceSafepoints/statepoint-frameescape.ll vendor/llvm/dist/test/Transforms/PruneEH/seh-nounwind.ll vendor/llvm/dist/test/Transforms/Reassociate/crash2.ll vendor/llvm/dist/test/Transforms/Reassociate/min_int.ll vendor/llvm/dist/test/Transforms/RewriteStatepointsForGC/ vendor/llvm/dist/test/Transforms/RewriteStatepointsForGC/base-pointers-1.ll vendor/llvm/dist/test/Transforms/RewriteStatepointsForGC/base-pointers-10.ll vendor/llvm/dist/test/Transforms/RewriteStatepointsForGC/base-pointers-11.ll vendor/llvm/dist/test/Transforms/RewriteStatepointsForGC/base-pointers-2.ll vendor/llvm/dist/test/Transforms/RewriteStatepointsForGC/base-pointers-3.ll vendor/llvm/dist/test/Transforms/RewriteStatepointsForGC/base-pointers-4.ll vendor/llvm/dist/test/Transforms/RewriteStatepointsForGC/base-pointers-5.ll vendor/llvm/dist/test/Transforms/RewriteStatepointsForGC/base-pointers-6.ll vendor/llvm/dist/test/Transforms/RewriteStatepointsForGC/base-pointers-7.ll vendor/llvm/dist/test/Transforms/RewriteStatepointsForGC/base-pointers-8.ll vendor/llvm/dist/test/Transforms/RewriteStatepointsForGC/base-pointers-9.ll vendor/llvm/dist/test/Transforms/RewriteStatepointsForGC/base-pointers.ll vendor/llvm/dist/test/Transforms/RewriteStatepointsForGC/basics.ll vendor/llvm/dist/test/Transforms/RewriteStatepointsForGC/constants.ll vendor/llvm/dist/test/Transforms/RewriteStatepointsForGC/gc_relocate_creation.ll vendor/llvm/dist/test/Transforms/RewriteStatepointsForGC/live-vector.ll vendor/llvm/dist/test/Transforms/RewriteStatepointsForGC/liveness-basics.ll vendor/llvm/dist/test/Transforms/RewriteStatepointsForGC/preprocess.ll vendor/llvm/dist/test/Transforms/RewriteStatepointsForGC/relocate_invoke_result.ll vendor/llvm/dist/test/Transforms/RewriteStatepointsForGC/relocation.ll vendor/llvm/dist/test/Transforms/RewriteStatepointsForGC/rematerialize-derived-pointers.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/atomics.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/crash_cmpop.ll vendor/llvm/dist/test/Transforms/SROA/ppcf128-no-fold.ll vendor/llvm/dist/test/Transforms/SampleProfile/Inputs/entry_counts.prof vendor/llvm/dist/test/Transforms/SampleProfile/entry_counts.ll vendor/llvm/dist/test/Transforms/SeparateConstOffsetFromGEP/NVPTX/value-tracking-domtree.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/AArch64/ vendor/llvm/dist/test/Transforms/SimplifyCFG/AArch64/lit.local.cfg vendor/llvm/dist/test/Transforms/SimplifyCFG/AArch64/prefer-fma.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/PowerPC/ vendor/llvm/dist/test/Transforms/SimplifyCFG/PowerPC/cttz-ctlz-spec.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/PowerPC/lit.local.cfg vendor/llvm/dist/test/Transforms/SimplifyCFG/R600/ vendor/llvm/dist/test/Transforms/SimplifyCFG/R600/cttz-ctlz.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/R600/lit.local.cfg vendor/llvm/dist/test/Transforms/SimplifyCFG/X86/speculate-cttz-ctlz.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/clamp.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/duplicate-landingpad.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/seh-nounwind.ll vendor/llvm/dist/test/Transforms/SpeculativeExecution/ vendor/llvm/dist/test/Transforms/SpeculativeExecution/spec.ll vendor/llvm/dist/test/Transforms/StraightLineStrengthReduce/ vendor/llvm/dist/test/Transforms/StraightLineStrengthReduce/NVPTX/ vendor/llvm/dist/test/Transforms/StraightLineStrengthReduce/NVPTX/lit.local.cfg vendor/llvm/dist/test/Transforms/StraightLineStrengthReduce/NVPTX/reassociate-geps-and-slsr.ll vendor/llvm/dist/test/Transforms/StraightLineStrengthReduce/X86/ vendor/llvm/dist/test/Transforms/StraightLineStrengthReduce/X86/lit.local.cfg vendor/llvm/dist/test/Transforms/StraightLineStrengthReduce/X86/no-slsr.ll vendor/llvm/dist/test/Transforms/StraightLineStrengthReduce/slsr-add.ll vendor/llvm/dist/test/Transforms/StraightLineStrengthReduce/slsr-gep.ll vendor/llvm/dist/test/Transforms/StraightLineStrengthReduce/slsr-mul.ll vendor/llvm/dist/test/Transforms/StructurizeCFG/nested-loop-order.ll vendor/llvm/dist/test/Transforms/StructurizeCFG/post-order-traversal-bug.ll vendor/llvm/dist/test/Verifier/comdat3.ll vendor/llvm/dist/test/Verifier/dbg-typerefs.ll vendor/llvm/dist/test/Verifier/dbg.ll vendor/llvm/dist/test/Verifier/frameescape.ll vendor/llvm/dist/test/Verifier/function-metadata-bad.ll vendor/llvm/dist/test/Verifier/function-metadata-good.ll vendor/llvm/dist/test/Verifier/gc_relocate_addrspace.ll vendor/llvm/dist/test/Verifier/gc_relocate_operand.ll vendor/llvm/dist/test/Verifier/gc_relocate_return.ll vendor/llvm/dist/test/Verifier/ident-meta4.ll vendor/llvm/dist/test/Verifier/invalid-patchable-statepoint.ll vendor/llvm/dist/test/Verifier/invalid-statepoint.ll vendor/llvm/dist/test/Verifier/invalid-statepoint2.ll vendor/llvm/dist/test/Verifier/llvm.dbg.declare-address.ll vendor/llvm/dist/test/Verifier/llvm.dbg.declare-expression.ll vendor/llvm/dist/test/Verifier/llvm.dbg.declare-variable.ll vendor/llvm/dist/test/Verifier/llvm.dbg.intrinsic-dbg-attachment.ll vendor/llvm/dist/test/Verifier/llvm.dbg.value-expression.ll vendor/llvm/dist/test/Verifier/llvm.dbg.value-value.ll vendor/llvm/dist/test/Verifier/llvm.dbg.value-variable.ll vendor/llvm/dist/test/Verifier/mdcompositetype-templateparams-tuple.ll vendor/llvm/dist/test/Verifier/mdcompositetype-templateparams.ll vendor/llvm/dist/test/Verifier/memcpy.ll vendor/llvm/dist/test/Verifier/module-flags-2.ll vendor/llvm/dist/test/Verifier/module-flags-3.ll vendor/llvm/dist/test/Verifier/recursive-struct-param.ll vendor/llvm/dist/test/YAMLParser/bool.test vendor/llvm/dist/test/YAMLParser/construct-bool.test vendor/llvm/dist/test/YAMLParser/construct-custom.test vendor/llvm/dist/test/YAMLParser/construct-float.test vendor/llvm/dist/test/YAMLParser/construct-int.test vendor/llvm/dist/test/YAMLParser/construct-map.test vendor/llvm/dist/test/YAMLParser/construct-merge.test vendor/llvm/dist/test/YAMLParser/construct-null.test vendor/llvm/dist/test/YAMLParser/construct-omap.test vendor/llvm/dist/test/YAMLParser/construct-pairs.test vendor/llvm/dist/test/YAMLParser/construct-seq.test vendor/llvm/dist/test/YAMLParser/construct-set.test vendor/llvm/dist/test/YAMLParser/construct-str-ascii.test vendor/llvm/dist/test/YAMLParser/construct-str.test vendor/llvm/dist/test/YAMLParser/construct-timestamp.test vendor/llvm/dist/test/YAMLParser/construct-value.test vendor/llvm/dist/test/YAMLParser/duplicate-key.former-loader-error.test vendor/llvm/dist/test/YAMLParser/duplicate-mapping-key.former-loader-error.test vendor/llvm/dist/test/YAMLParser/duplicate-merge-key.former-loader-error.test vendor/llvm/dist/test/YAMLParser/duplicate-value-key.former-loader-error.test vendor/llvm/dist/test/YAMLParser/emit-block-scalar-in-simple-key-context-bug.test vendor/llvm/dist/test/YAMLParser/empty-document-bug.test vendor/llvm/dist/test/YAMLParser/float.test vendor/llvm/dist/test/YAMLParser/int.test vendor/llvm/dist/test/YAMLParser/invalid-single-quote-bug.test vendor/llvm/dist/test/YAMLParser/merge.test vendor/llvm/dist/test/YAMLParser/more-floats.test vendor/llvm/dist/test/YAMLParser/negative-float-bug.test vendor/llvm/dist/test/YAMLParser/null.test vendor/llvm/dist/test/YAMLParser/resolver.test vendor/llvm/dist/test/YAMLParser/run-parser-crash-bug.test vendor/llvm/dist/test/YAMLParser/scan-document-end-bug.test vendor/llvm/dist/test/YAMLParser/scan-line-break-bug.test vendor/llvm/dist/test/YAMLParser/single-dot-is-not-float-bug.test vendor/llvm/dist/test/YAMLParser/sloppy-indentation.test vendor/llvm/dist/test/YAMLParser/spec-02-01.test vendor/llvm/dist/test/YAMLParser/spec-02-02.test vendor/llvm/dist/test/YAMLParser/spec-02-03.test vendor/llvm/dist/test/YAMLParser/spec-02-04.test vendor/llvm/dist/test/YAMLParser/spec-02-05.test vendor/llvm/dist/test/YAMLParser/spec-02-06.test vendor/llvm/dist/test/YAMLParser/spec-02-07.test vendor/llvm/dist/test/YAMLParser/spec-02-08.test vendor/llvm/dist/test/YAMLParser/spec-02-09.test vendor/llvm/dist/test/YAMLParser/spec-02-10.test vendor/llvm/dist/test/YAMLParser/spec-02-11.test vendor/llvm/dist/test/YAMLParser/spec-02-12.test vendor/llvm/dist/test/YAMLParser/spec-02-13.test vendor/llvm/dist/test/YAMLParser/spec-02-14.test vendor/llvm/dist/test/YAMLParser/spec-02-15.test vendor/llvm/dist/test/YAMLParser/spec-02-16.test vendor/llvm/dist/test/YAMLParser/spec-02-17.test vendor/llvm/dist/test/YAMLParser/spec-02-18.test vendor/llvm/dist/test/YAMLParser/spec-02-19.test vendor/llvm/dist/test/YAMLParser/spec-02-20.test vendor/llvm/dist/test/YAMLParser/spec-02-21.test vendor/llvm/dist/test/YAMLParser/spec-02-22.test vendor/llvm/dist/test/YAMLParser/spec-02-23.test vendor/llvm/dist/test/YAMLParser/spec-02-24.test vendor/llvm/dist/test/YAMLParser/spec-02-25.test vendor/llvm/dist/test/YAMLParser/spec-02-26.test vendor/llvm/dist/test/YAMLParser/spec-02-27.test vendor/llvm/dist/test/YAMLParser/spec-02-28.test vendor/llvm/dist/test/YAMLParser/spec-05-01-utf8.test vendor/llvm/dist/test/YAMLParser/spec-05-02-utf8.test vendor/llvm/dist/test/YAMLParser/spec-05-03.test vendor/llvm/dist/test/YAMLParser/spec-05-04.test vendor/llvm/dist/test/YAMLParser/spec-05-05.test vendor/llvm/dist/test/YAMLParser/spec-05-06.test vendor/llvm/dist/test/YAMLParser/spec-05-07.test vendor/llvm/dist/test/YAMLParser/spec-05-08.test vendor/llvm/dist/test/YAMLParser/spec-05-09.test vendor/llvm/dist/test/YAMLParser/spec-05-10.test vendor/llvm/dist/test/YAMLParser/spec-05-11.test vendor/llvm/dist/test/YAMLParser/spec-05-12.test vendor/llvm/dist/test/YAMLParser/spec-05-13.test vendor/llvm/dist/test/YAMLParser/spec-05-14.test vendor/llvm/dist/test/YAMLParser/spec-05-15.test vendor/llvm/dist/test/YAMLParser/spec-06-01.test vendor/llvm/dist/test/YAMLParser/spec-06-02.test vendor/llvm/dist/test/YAMLParser/spec-06-03.test vendor/llvm/dist/test/YAMLParser/spec-06-04.test vendor/llvm/dist/test/YAMLParser/spec-06-05.test vendor/llvm/dist/test/YAMLParser/spec-06-06.test vendor/llvm/dist/test/YAMLParser/spec-06-07.test vendor/llvm/dist/test/YAMLParser/spec-06-08.test vendor/llvm/dist/test/YAMLParser/spec-07-01.test vendor/llvm/dist/test/YAMLParser/spec-07-02.test vendor/llvm/dist/test/YAMLParser/spec-07-03.test vendor/llvm/dist/test/YAMLParser/spec-07-04.test vendor/llvm/dist/test/YAMLParser/spec-07-05.test vendor/llvm/dist/test/YAMLParser/spec-07-06.test vendor/llvm/dist/test/YAMLParser/spec-07-07a.test vendor/llvm/dist/test/YAMLParser/spec-07-07b.test vendor/llvm/dist/test/YAMLParser/spec-07-08.test vendor/llvm/dist/test/YAMLParser/spec-07-09.test vendor/llvm/dist/test/YAMLParser/spec-07-10.test vendor/llvm/dist/test/YAMLParser/spec-07-11.test vendor/llvm/dist/test/YAMLParser/spec-07-12a.test vendor/llvm/dist/test/YAMLParser/spec-07-12b.test vendor/llvm/dist/test/YAMLParser/spec-07-13.test vendor/llvm/dist/test/YAMLParser/spec-08-01.test vendor/llvm/dist/test/YAMLParser/spec-08-02.test vendor/llvm/dist/test/YAMLParser/spec-08-03.test vendor/llvm/dist/test/YAMLParser/spec-08-04.test vendor/llvm/dist/test/YAMLParser/spec-08-05.test vendor/llvm/dist/test/YAMLParser/spec-08-06.test vendor/llvm/dist/test/YAMLParser/spec-08-07.test vendor/llvm/dist/test/YAMLParser/spec-08-08.test vendor/llvm/dist/test/YAMLParser/spec-08-09.test vendor/llvm/dist/test/YAMLParser/spec-08-10.test vendor/llvm/dist/test/YAMLParser/spec-08-11.test vendor/llvm/dist/test/YAMLParser/spec-08-12.test vendor/llvm/dist/test/YAMLParser/spec-08-13.test vendor/llvm/dist/test/YAMLParser/spec-08-14.test vendor/llvm/dist/test/YAMLParser/spec-08-15.test vendor/llvm/dist/test/YAMLParser/spec-09-01.test vendor/llvm/dist/test/YAMLParser/spec-09-02.test vendor/llvm/dist/test/YAMLParser/spec-09-03.test vendor/llvm/dist/test/YAMLParser/spec-09-04.test vendor/llvm/dist/test/YAMLParser/spec-09-05.test vendor/llvm/dist/test/YAMLParser/spec-09-06.test vendor/llvm/dist/test/YAMLParser/spec-09-07.test vendor/llvm/dist/test/YAMLParser/spec-09-08.test vendor/llvm/dist/test/YAMLParser/spec-09-09.test vendor/llvm/dist/test/YAMLParser/spec-09-10.test vendor/llvm/dist/test/YAMLParser/spec-09-11.test vendor/llvm/dist/test/YAMLParser/spec-09-12.test vendor/llvm/dist/test/YAMLParser/spec-09-13.test vendor/llvm/dist/test/YAMLParser/spec-09-14.test vendor/llvm/dist/test/YAMLParser/spec-09-15.test vendor/llvm/dist/test/YAMLParser/spec-09-16.test vendor/llvm/dist/test/YAMLParser/spec-09-17.test vendor/llvm/dist/test/YAMLParser/spec-09-18.test vendor/llvm/dist/test/YAMLParser/spec-09-19.test vendor/llvm/dist/test/YAMLParser/spec-09-20.test vendor/llvm/dist/test/YAMLParser/spec-09-21.test vendor/llvm/dist/test/YAMLParser/spec-09-22.test vendor/llvm/dist/test/YAMLParser/spec-09-23.test vendor/llvm/dist/test/YAMLParser/spec-09-24.test vendor/llvm/dist/test/YAMLParser/spec-09-25.test vendor/llvm/dist/test/YAMLParser/spec-09-26.test vendor/llvm/dist/test/YAMLParser/spec-09-29.test vendor/llvm/dist/test/YAMLParser/spec-09-30.test vendor/llvm/dist/test/YAMLParser/spec-09-31.test vendor/llvm/dist/test/YAMLParser/spec-09-32.test vendor/llvm/dist/test/YAMLParser/spec-09-33.test vendor/llvm/dist/test/YAMLParser/spec-10-01.test vendor/llvm/dist/test/YAMLParser/spec-10-02.test vendor/llvm/dist/test/YAMLParser/spec-10-03.test vendor/llvm/dist/test/YAMLParser/spec-10-04.test vendor/llvm/dist/test/YAMLParser/spec-10-05.test vendor/llvm/dist/test/YAMLParser/spec-10-06.test vendor/llvm/dist/test/YAMLParser/spec-10-07.test vendor/llvm/dist/test/YAMLParser/spec-10-08.test vendor/llvm/dist/test/YAMLParser/spec-10-09.test vendor/llvm/dist/test/YAMLParser/spec-10-10.test vendor/llvm/dist/test/YAMLParser/spec-10-11.test vendor/llvm/dist/test/YAMLParser/spec-10-12.test vendor/llvm/dist/test/YAMLParser/spec-10-13.test vendor/llvm/dist/test/YAMLParser/spec-10-14.test vendor/llvm/dist/test/YAMLParser/spec-10-15.test vendor/llvm/dist/test/YAMLParser/str.test vendor/llvm/dist/test/YAMLParser/timestamp-bugs.test vendor/llvm/dist/test/YAMLParser/timestamp.test vendor/llvm/dist/test/YAMLParser/utf8-implicit.test vendor/llvm/dist/test/YAMLParser/utf8.test vendor/llvm/dist/test/YAMLParser/value.test vendor/llvm/dist/test/YAMLParser/yaml.test vendor/llvm/dist/test/tools/dsymutil/Inputs/basic-lto-dw4.macho.x86_64 (contents, props changed) vendor/llvm/dist/test/tools/dsymutil/Inputs/basic-lto-dw4.macho.x86_64.o (contents, props changed) vendor/llvm/dist/test/tools/dsymutil/X86/ vendor/llvm/dist/test/tools/dsymutil/X86/basic-linking-x86.test vendor/llvm/dist/test/tools/dsymutil/X86/basic-lto-dw4-linking-x86.test vendor/llvm/dist/test/tools/dsymutil/X86/basic-lto-linking-x86.test vendor/llvm/dist/test/tools/dsymutil/X86/lit.local.cfg vendor/llvm/dist/test/tools/dsymutil/basic-linking.test vendor/llvm/dist/test/tools/gold/Inputs/drop-debug.bc (contents, props changed) vendor/llvm/dist/test/tools/gold/drop-debug.ll vendor/llvm/dist/test/tools/gold/opt-level.ll vendor/llvm/dist/test/tools/gold/remarks.ll vendor/llvm/dist/test/tools/llvm-cov/Inputs/binary-formats.macho32b (contents, props changed) vendor/llvm/dist/test/tools/llvm-cov/Inputs/binary-formats.macho32l (contents, props changed) vendor/llvm/dist/test/tools/llvm-cov/Inputs/binary-formats.macho64l (contents, props changed) vendor/llvm/dist/test/tools/llvm-cov/Inputs/binary-formats.proftext vendor/llvm/dist/test/tools/llvm-cov/Inputs/lineExecutionCounts.proftext vendor/llvm/dist/test/tools/llvm-cov/Inputs/regionMarkers.proftext vendor/llvm/dist/test/tools/llvm-cov/Inputs/universal-binary (contents, props changed) vendor/llvm/dist/test/tools/llvm-cov/Inputs/universal-binary.proftext vendor/llvm/dist/test/tools/llvm-cov/binary-formats.c (contents, props changed) vendor/llvm/dist/test/tools/llvm-cov/universal-binary.c (contents, props changed) vendor/llvm/dist/test/tools/llvm-cxxdump/ vendor/llvm/dist/test/tools/llvm-cxxdump/Inputs/ vendor/llvm/dist/test/tools/llvm-cxxdump/Inputs/eh.obj.coff-i386 (contents, props changed) vendor/llvm/dist/test/tools/llvm-cxxdump/Inputs/trivial.obj.coff-i386 (contents, props changed) vendor/llvm/dist/test/tools/llvm-cxxdump/Inputs/trivial.obj.elf-i386 (contents, props changed) vendor/llvm/dist/test/tools/llvm-cxxdump/eh.test vendor/llvm/dist/test/tools/llvm-cxxdump/trivial.test vendor/llvm/dist/test/tools/llvm-objdump/AArch64/Inputs/link-opt-hints.macho-aarch64 (contents, props changed) vendor/llvm/dist/test/tools/llvm-objdump/AArch64/Inputs/print-mrs.obj.macho-aarch64 (contents, props changed) vendor/llvm/dist/test/tools/llvm-objdump/AArch64/macho-link-opt-hints.test vendor/llvm/dist/test/tools/llvm-objdump/AArch64/macho-print-mrs.test vendor/llvm/dist/test/tools/llvm-objdump/ARM/Inputs/data-in-code.macho-arm (contents, props changed) vendor/llvm/dist/test/tools/llvm-objdump/ARM/macho-data-in-code.test vendor/llvm/dist/test/tools/llvm-objdump/Inputs/common-symbol-elf (contents, props changed) vendor/llvm/dist/test/tools/llvm-objdump/Inputs/proc-specific-section-elf (contents, props changed) vendor/llvm/dist/test/tools/llvm-objdump/X86/Inputs/Objc1.32bit.exe.macho-i386 (contents, props changed) vendor/llvm/dist/test/tools/llvm-objdump/X86/Inputs/Objc1.32bit.obj.macho-i386 (contents, props changed) vendor/llvm/dist/test/tools/llvm-objdump/X86/Inputs/Objc2.32bit.exe.macho-i386 (contents, props changed) vendor/llvm/dist/test/tools/llvm-objdump/X86/Inputs/Objc2.32bit.obj.macho-i386 (contents, props changed) vendor/llvm/dist/test/tools/llvm-objdump/X86/Inputs/Objc2.64bit.exe.macho-x86_64 (contents, props changed) vendor/llvm/dist/test/tools/llvm-objdump/X86/Inputs/Objc2.64bit.obj.macho-x86_64 (contents, props changed) vendor/llvm/dist/test/tools/llvm-objdump/X86/Inputs/dylibModInit.macho-x86_64 (contents, props changed) vendor/llvm/dist/test/tools/llvm-objdump/X86/macho-archive-headers.test vendor/llvm/dist/test/tools/llvm-objdump/X86/macho-cstring-dump.test vendor/llvm/dist/test/tools/llvm-objdump/X86/macho-dis-no-leading-addr.test vendor/llvm/dist/test/tools/llvm-objdump/X86/macho-dis-symname.test vendor/llvm/dist/test/tools/llvm-objdump/X86/macho-dylib.test vendor/llvm/dist/test/tools/llvm-objdump/X86/macho-indirect-symbols.test vendor/llvm/dist/test/tools/llvm-objdump/X86/macho-info-plist.test vendor/llvm/dist/test/tools/llvm-objdump/X86/macho-literal-pointers-i386.test vendor/llvm/dist/test/tools/llvm-objdump/X86/macho-literal-pointers-x86_64.test vendor/llvm/dist/test/tools/llvm-objdump/X86/macho-literals.test vendor/llvm/dist/test/tools/llvm-objdump/X86/macho-nontext-disasm.test vendor/llvm/dist/test/tools/llvm-objdump/X86/macho-objc-meta-data.test vendor/llvm/dist/test/tools/llvm-objdump/X86/macho-relocations.test vendor/llvm/dist/test/tools/llvm-objdump/X86/macho-section-contents.test vendor/llvm/dist/test/tools/llvm-objdump/X86/macho-section-headers.test vendor/llvm/dist/test/tools/llvm-objdump/X86/macho-section.test vendor/llvm/dist/test/tools/llvm-objdump/X86/macho-symbol-table.test vendor/llvm/dist/test/tools/llvm-objdump/X86/macho-unwind-info.test vendor/llvm/dist/test/tools/llvm-objdump/common-symbol-elf.test vendor/llvm/dist/test/tools/llvm-objdump/macho-sections.test vendor/llvm/dist/test/tools/llvm-objdump/proc-specific-section-elf.test vendor/llvm/dist/test/tools/llvm-pdbdump/ vendor/llvm/dist/test/tools/llvm-pdbdump/Inputs/ vendor/llvm/dist/test/tools/llvm-pdbdump/Inputs/ClassLayoutTest.cpp (contents, props changed) vendor/llvm/dist/test/tools/llvm-pdbdump/Inputs/ClassLayoutTest.pdb (contents, props changed) vendor/llvm/dist/test/tools/llvm-pdbdump/Inputs/FilterTest.cpp (contents, props changed) vendor/llvm/dist/test/tools/llvm-pdbdump/Inputs/FilterTest.pdb (contents, props changed) vendor/llvm/dist/test/tools/llvm-pdbdump/Inputs/LoadAddressTest.cpp (contents, props changed) vendor/llvm/dist/test/tools/llvm-pdbdump/Inputs/LoadAddressTest.pdb (contents, props changed) vendor/llvm/dist/test/tools/llvm-pdbdump/class-layout.test vendor/llvm/dist/test/tools/llvm-pdbdump/enum-layout.test vendor/llvm/dist/test/tools/llvm-pdbdump/lit.local.cfg vendor/llvm/dist/test/tools/llvm-pdbdump/load-address.test vendor/llvm/dist/test/tools/llvm-pdbdump/regex-filter.test vendor/llvm/dist/test/tools/llvm-readobj/Inputs/abiflags.obj.elf-mips (contents, props changed) vendor/llvm/dist/test/tools/llvm-readobj/Inputs/abiflags.obj.elf-mipsel (contents, props changed) vendor/llvm/dist/test/tools/llvm-readobj/Inputs/dtflags.elf-x86-64 (contents, props changed) vendor/llvm/dist/test/tools/llvm-readobj/Inputs/macho-universal-archive.x86_64.i386 (contents, props changed) vendor/llvm/dist/test/tools/llvm-readobj/Inputs/macho-universal.x86_64.i386 (contents, props changed) vendor/llvm/dist/test/tools/llvm-readobj/Inputs/mips-options.elf-mips64el (contents, props changed) vendor/llvm/dist/test/tools/llvm-readobj/Inputs/trivial.exe.coff-arm (contents, props changed) vendor/llvm/dist/test/tools/llvm-readobj/coff-arm-baserelocs.test vendor/llvm/dist/test/tools/llvm-readobj/elf-dtflags.test vendor/llvm/dist/test/tools/llvm-readobj/macho-universal-x86_64.i386.test vendor/llvm/dist/test/tools/llvm-readobj/mips-abiflags.test vendor/llvm/dist/test/tools/llvm-readobj/mips-options.test vendor/llvm/dist/test/tools/llvm-symbolizer/pdb/ vendor/llvm/dist/test/tools/llvm-symbolizer/pdb/Inputs/ vendor/llvm/dist/test/tools/llvm-symbolizer/pdb/Inputs/test.cpp (contents, props changed) vendor/llvm/dist/test/tools/llvm-symbolizer/pdb/Inputs/test.exe (contents, props changed) vendor/llvm/dist/test/tools/llvm-symbolizer/pdb/Inputs/test.exe.input vendor/llvm/dist/test/tools/llvm-symbolizer/pdb/Inputs/test.pdb (contents, props changed) vendor/llvm/dist/test/tools/llvm-symbolizer/pdb/lit.local.cfg vendor/llvm/dist/test/tools/llvm-symbolizer/pdb/pdb.test vendor/llvm/dist/test/tools/lto/ vendor/llvm/dist/test/tools/lto/lit.local.cfg vendor/llvm/dist/test/tools/lto/opt-level.ll vendor/llvm/dist/tools/lli/OrcLazyJIT.cpp (contents, props changed) vendor/llvm/dist/tools/lli/OrcLazyJIT.h (contents, props changed) vendor/llvm/dist/tools/llvm-cxxdump/ vendor/llvm/dist/tools/llvm-cxxdump/CMakeLists.txt (contents, props changed) vendor/llvm/dist/tools/llvm-cxxdump/Error.cpp (contents, props changed) vendor/llvm/dist/tools/llvm-cxxdump/Error.h (contents, props changed) vendor/llvm/dist/tools/llvm-cxxdump/LLVMBuild.txt (contents, props changed) vendor/llvm/dist/tools/llvm-cxxdump/Makefile (contents, props changed) vendor/llvm/dist/tools/llvm-cxxdump/llvm-cxxdump.cpp (contents, props changed) vendor/llvm/dist/tools/llvm-cxxdump/llvm-cxxdump.h (contents, props changed) vendor/llvm/dist/tools/llvm-pdbdump/ vendor/llvm/dist/tools/llvm-pdbdump/BuiltinDumper.cpp (contents, props changed) vendor/llvm/dist/tools/llvm-pdbdump/BuiltinDumper.h (contents, props changed) vendor/llvm/dist/tools/llvm-pdbdump/CMakeLists.txt (contents, props changed) vendor/llvm/dist/tools/llvm-pdbdump/ClassDefinitionDumper.cpp (contents, props changed) vendor/llvm/dist/tools/llvm-pdbdump/ClassDefinitionDumper.h (contents, props changed) vendor/llvm/dist/tools/llvm-pdbdump/CompilandDumper.cpp (contents, props changed) vendor/llvm/dist/tools/llvm-pdbdump/CompilandDumper.h (contents, props changed) vendor/llvm/dist/tools/llvm-pdbdump/EnumDumper.cpp (contents, props changed) vendor/llvm/dist/tools/llvm-pdbdump/EnumDumper.h (contents, props changed) vendor/llvm/dist/tools/llvm-pdbdump/ExternalSymbolDumper.cpp (contents, props changed) vendor/llvm/dist/tools/llvm-pdbdump/ExternalSymbolDumper.h (contents, props changed) vendor/llvm/dist/tools/llvm-pdbdump/FunctionDumper.cpp (contents, props changed) vendor/llvm/dist/tools/llvm-pdbdump/FunctionDumper.h (contents, props changed) vendor/llvm/dist/tools/llvm-pdbdump/LLVMBuild.txt (contents, props changed) vendor/llvm/dist/tools/llvm-pdbdump/LinePrinter.cpp (contents, props changed) vendor/llvm/dist/tools/llvm-pdbdump/LinePrinter.h (contents, props changed) vendor/llvm/dist/tools/llvm-pdbdump/Makefile (contents, props changed) vendor/llvm/dist/tools/llvm-pdbdump/TypeDumper.cpp (contents, props changed) vendor/llvm/dist/tools/llvm-pdbdump/TypeDumper.h (contents, props changed) vendor/llvm/dist/tools/llvm-pdbdump/TypedefDumper.cpp (contents, props changed) vendor/llvm/dist/tools/llvm-pdbdump/TypedefDumper.h (contents, props changed) vendor/llvm/dist/tools/llvm-pdbdump/VariableDumper.cpp (contents, props changed) vendor/llvm/dist/tools/llvm-pdbdump/VariableDumper.h (contents, props changed) vendor/llvm/dist/tools/llvm-pdbdump/llvm-pdbdump.cpp (contents, props changed) vendor/llvm/dist/tools/llvm-pdbdump/llvm-pdbdump.h (contents, props changed) vendor/llvm/dist/unittests/Analysis/AliasAnalysisTest.cpp (contents, props changed) vendor/llvm/dist/unittests/AsmParser/ vendor/llvm/dist/unittests/AsmParser/AsmParserTest.cpp (contents, props changed) vendor/llvm/dist/unittests/AsmParser/CMakeLists.txt (contents, props changed) vendor/llvm/dist/unittests/AsmParser/Makefile (contents, props changed) vendor/llvm/dist/unittests/DebugInfo/DWARF/ vendor/llvm/dist/unittests/DebugInfo/DWARF/CMakeLists.txt (contents, props changed) vendor/llvm/dist/unittests/DebugInfo/DWARF/DWARFFormValueTest.cpp (contents, props changed) vendor/llvm/dist/unittests/DebugInfo/DWARF/Makefile (contents, props changed) vendor/llvm/dist/unittests/DebugInfo/PDB/ vendor/llvm/dist/unittests/DebugInfo/PDB/CMakeLists.txt (contents, props changed) vendor/llvm/dist/unittests/DebugInfo/PDB/Makefile (contents, props changed) vendor/llvm/dist/unittests/DebugInfo/PDB/PDBApiTest.cpp (contents, props changed) vendor/llvm/dist/unittests/ExecutionEngine/Orc/ vendor/llvm/dist/unittests/ExecutionEngine/Orc/CMakeLists.txt (contents, props changed) vendor/llvm/dist/unittests/ExecutionEngine/Orc/IndirectionUtilsTest.cpp (contents, props changed) vendor/llvm/dist/unittests/ExecutionEngine/Orc/LazyEmittingLayerTest.cpp (contents, props changed) vendor/llvm/dist/unittests/ExecutionEngine/Orc/Makefile (contents, props changed) vendor/llvm/dist/unittests/ExecutionEngine/Orc/OrcTestCommon.cpp (contents, props changed) vendor/llvm/dist/unittests/ExecutionEngine/Orc/OrcTestCommon.h (contents, props changed) vendor/llvm/dist/unittests/ProfileData/ vendor/llvm/dist/unittests/ProfileData/CMakeLists.txt (contents, props changed) vendor/llvm/dist/unittests/ProfileData/CoverageMappingTest.cpp (contents, props changed) vendor/llvm/dist/unittests/ProfileData/InstrProfTest.cpp (contents, props changed) vendor/llvm/dist/unittests/ProfileData/Makefile (contents, props changed) vendor/llvm/dist/unittests/Support/DwarfTest.cpp (contents, props changed) vendor/llvm/dist/unittests/Support/EndianStreamTest.cpp (contents, props changed) vendor/llvm/dist/unittests/Support/TargetRegistry.cpp (contents, props changed) vendor/llvm/dist/unittests/Support/raw_pwrite_stream_test.cpp (contents, props changed) vendor/llvm/dist/unittests/Transforms/IPO/ vendor/llvm/dist/unittests/Transforms/IPO/CMakeLists.txt (contents, props changed) vendor/llvm/dist/unittests/Transforms/IPO/LowerBitSets.cpp (contents, props changed) vendor/llvm/dist/unittests/Transforms/IPO/Makefile (contents, props changed) vendor/llvm/dist/unittests/Transforms/Utils/ValueMapperTest.cpp (contents, props changed) vendor/llvm/dist/utils/create_ladder_graph.py (contents, props changed) vendor/llvm/dist/utils/vim/ftdetect/ vendor/llvm/dist/utils/vim/ftdetect/llvm-lit.vim vendor/llvm/dist/utils/vim/ftdetect/llvm.vim vendor/llvm/dist/utils/vim/ftdetect/tablegen.vim vendor/llvm/dist/utils/vim/ftplugin/ vendor/llvm/dist/utils/vim/ftplugin/llvm.vim vendor/llvm/dist/utils/vim/ftplugin/tablegen.vim vendor/llvm/dist/utils/vim/indent/ vendor/llvm/dist/utils/vim/indent/llvm.vim vendor/llvm/dist/utils/vim/syntax/ vendor/llvm/dist/utils/vim/syntax/llvm.vim vendor/llvm/dist/utils/vim/syntax/tablegen.vim Deleted: vendor/llvm/dist/autoconf/m4/func_isinf.m4 vendor/llvm/dist/autoconf/m4/func_isnan.m4 vendor/llvm/dist/docs/doxygen.css vendor/llvm/dist/docs/doxygen.footer vendor/llvm/dist/docs/doxygen.header vendor/llvm/dist/include/llvm/Analysis/ConstantsScanner.h vendor/llvm/dist/include/llvm/Analysis/FunctionTargetTransformInfo.h vendor/llvm/dist/include/llvm/CodeGen/ForwardControlFlowIntegrity.h vendor/llvm/dist/include/llvm/CodeGen/JumpInstrTables.h vendor/llvm/dist/include/llvm/CodeGen/StackMapLivenessAnalysis.h vendor/llvm/dist/include/llvm/DebugInfo/DWARFAbbreviationDeclaration.h vendor/llvm/dist/include/llvm/DebugInfo/DWARFAcceleratorTable.h vendor/llvm/dist/include/llvm/DebugInfo/DWARFCompileUnit.h vendor/llvm/dist/include/llvm/DebugInfo/DWARFContext.h vendor/llvm/dist/include/llvm/DebugInfo/DWARFDebugAbbrev.h vendor/llvm/dist/include/llvm/DebugInfo/DWARFDebugArangeSet.h vendor/llvm/dist/include/llvm/DebugInfo/DWARFDebugAranges.h vendor/llvm/dist/include/llvm/DebugInfo/DWARFDebugFrame.h vendor/llvm/dist/include/llvm/DebugInfo/DWARFDebugInfoEntry.h vendor/llvm/dist/include/llvm/DebugInfo/DWARFDebugLine.h vendor/llvm/dist/include/llvm/DebugInfo/DWARFDebugLoc.h vendor/llvm/dist/include/llvm/DebugInfo/DWARFDebugRangeList.h vendor/llvm/dist/include/llvm/DebugInfo/DWARFFormValue.h vendor/llvm/dist/include/llvm/DebugInfo/DWARFRelocMap.h vendor/llvm/dist/include/llvm/DebugInfo/DWARFSection.h vendor/llvm/dist/include/llvm/DebugInfo/DWARFTypeUnit.h vendor/llvm/dist/include/llvm/DebugInfo/DWARFUnit.h vendor/llvm/dist/include/llvm/PassManager.h vendor/llvm/dist/include/llvm/Target/TargetLibraryInfo.h vendor/llvm/dist/lib/Analysis/FunctionTargetTransformInfo.cpp vendor/llvm/dist/lib/Analysis/JumpInstrTableInfo.cpp vendor/llvm/dist/lib/Bitcode/Reader/BitcodeReader.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/DebugLocList.h vendor/llvm/dist/lib/CodeGen/ForwardControlFlowIntegrity.cpp vendor/llvm/dist/lib/CodeGen/JumpInstrTables.cpp vendor/llvm/dist/lib/CodeGen/PrologEpilogInserter.h vendor/llvm/dist/lib/DebugInfo/DIContext.cpp vendor/llvm/dist/lib/DebugInfo/DWARFAbbreviationDeclaration.cpp vendor/llvm/dist/lib/DebugInfo/DWARFAcceleratorTable.cpp vendor/llvm/dist/lib/DebugInfo/DWARFCompileUnit.cpp vendor/llvm/dist/lib/DebugInfo/DWARFContext.cpp vendor/llvm/dist/lib/DebugInfo/DWARFDebugAbbrev.cpp vendor/llvm/dist/lib/DebugInfo/DWARFDebugArangeSet.cpp vendor/llvm/dist/lib/DebugInfo/DWARFDebugAranges.cpp vendor/llvm/dist/lib/DebugInfo/DWARFDebugFrame.cpp vendor/llvm/dist/lib/DebugInfo/DWARFDebugInfoEntry.cpp vendor/llvm/dist/lib/DebugInfo/DWARFDebugLine.cpp vendor/llvm/dist/lib/DebugInfo/DWARFDebugLoc.cpp vendor/llvm/dist/lib/DebugInfo/DWARFDebugRangeList.cpp vendor/llvm/dist/lib/DebugInfo/DWARFFormValue.cpp vendor/llvm/dist/lib/DebugInfo/DWARFTypeUnit.cpp vendor/llvm/dist/lib/DebugInfo/DWARFUnit.cpp vendor/llvm/dist/lib/DebugInfo/SyntaxHighlighting.cpp vendor/llvm/dist/lib/DebugInfo/SyntaxHighlighting.h vendor/llvm/dist/lib/DebugInfo/module.modulemap vendor/llvm/dist/lib/ExecutionEngine/EventListenerCommon.h vendor/llvm/dist/lib/ExecutionEngine/MCJIT/SectionMemoryManager.cpp vendor/llvm/dist/lib/IR/AsmWriter.h vendor/llvm/dist/lib/IR/LeaksContext.h vendor/llvm/dist/lib/IR/UseListOrder.cpp vendor/llvm/dist/lib/Support/IsInf.cpp vendor/llvm/dist/lib/Support/IsNAN.cpp vendor/llvm/dist/lib/Target/ARM/ARMFPUName.def vendor/llvm/dist/lib/Target/ARM/ARMFPUName.h vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMArchName.def vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMArchName.h vendor/llvm/dist/lib/Target/ARM/Thumb1RegisterInfo.cpp vendor/llvm/dist/lib/Target/ARM/Thumb1RegisterInfo.h vendor/llvm/dist/lib/Target/ARM/Thumb2RegisterInfo.cpp vendor/llvm/dist/lib/Target/ARM/Thumb2RegisterInfo.h vendor/llvm/dist/lib/Target/Hexagon/HexagonCallingConvLower.cpp vendor/llvm/dist/lib/Target/Hexagon/HexagonCallingConvLower.h vendor/llvm/dist/lib/Target/Hexagon/HexagonSplitTFRCondSets.cpp vendor/llvm/dist/lib/Target/Hexagon/HexagonVarargsCallingConvention.h vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonMCInst.cpp vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonMCInst.h vendor/llvm/dist/lib/Target/Mips/Mips16HardFloat.h vendor/llvm/dist/lib/Target/Mips/MipsModuleISelDAGToDAG.h vendor/llvm/dist/lib/Target/Mips/MipsOs16.h vendor/llvm/dist/lib/Target/NVPTX/NVPTXutil.cpp vendor/llvm/dist/lib/Target/NVPTX/NVPTXutil.h vendor/llvm/dist/lib/Target/TargetLibraryInfo.cpp vendor/llvm/dist/lib/Target/XCore/XCoreTargetTransformInfo.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombine.h vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineWorklist.h vendor/llvm/dist/lib/Transforms/ObjCARC/ObjCARCUtil.cpp vendor/llvm/dist/lib/Transforms/Utils/LowerExpectIntrinsic.cpp vendor/llvm/dist/test/Assembler/functionlocal-metadata.ll vendor/llvm/dist/test/Bitcode/drop-debug-info.ll vendor/llvm/dist/test/CodeGen/AArch64/fp16-instructions.ll vendor/llvm/dist/test/CodeGen/ARM/darwin-section-order.ll vendor/llvm/dist/test/CodeGen/ARM/odr_comdat.ll vendor/llvm/dist/test/CodeGen/Hexagon/cmp-not.ll vendor/llvm/dist/test/CodeGen/NVPTX/ptx-version-30.ll vendor/llvm/dist/test/CodeGen/NVPTX/ptx-version-31.ll vendor/llvm/dist/test/CodeGen/PowerPC/cttz-ctlz-spec.ll vendor/llvm/dist/test/CodeGen/R600/128bit-kernel-args.ll vendor/llvm/dist/test/CodeGen/R600/64bit-kernel-args.ll vendor/llvm/dist/test/CodeGen/R600/cttz-ctlz.ll vendor/llvm/dist/test/CodeGen/R600/llvm.floor.ll vendor/llvm/dist/test/CodeGen/R600/llvm.trunc.ll vendor/llvm/dist/test/CodeGen/R600/misaligned-load.ll vendor/llvm/dist/test/CodeGen/X86/2006-10-07-ScalarSSEMiscompile.ll vendor/llvm/dist/test/CodeGen/X86/2007-04-25-MMX-PADDQ.ll vendor/llvm/dist/test/CodeGen/X86/2007-06-15-IntToMMX.ll vendor/llvm/dist/test/CodeGen/X86/2008-10-06-MMXISelBug.ll vendor/llvm/dist/test/CodeGen/X86/2009-06-05-ScalarToVectorByteMMX.ll vendor/llvm/dist/test/CodeGen/X86/2009-06-07-ExpandMMXBitcast.ll vendor/llvm/dist/test/CodeGen/X86/2009-08-02-mmx-scalar-to-vector.ll vendor/llvm/dist/test/CodeGen/X86/2010-04-23-mmx-movdq2q.ll vendor/llvm/dist/test/CodeGen/X86/2013-02-12-ShuffleToZext.ll vendor/llvm/dist/test/CodeGen/X86/avx1-stack-reload-folding.ll vendor/llvm/dist/test/CodeGen/X86/avx2-pmovx-256-old-shuffle.ll vendor/llvm/dist/test/CodeGen/X86/cfi_enforcing.ll vendor/llvm/dist/test/CodeGen/X86/cfi_invoke.ll vendor/llvm/dist/test/CodeGen/X86/cfi_non_default_function.ll vendor/llvm/dist/test/CodeGen/X86/cfi_simple_indirect_call.ll vendor/llvm/dist/test/CodeGen/X86/cttz-ctlz.ll vendor/llvm/dist/test/CodeGen/X86/frameallocate.ll vendor/llvm/dist/test/CodeGen/X86/imul64-lea.ll vendor/llvm/dist/test/CodeGen/X86/jump_table_alias.ll vendor/llvm/dist/test/CodeGen/X86/jump_table_align.ll vendor/llvm/dist/test/CodeGen/X86/jump_table_bitcast.ll vendor/llvm/dist/test/CodeGen/X86/jump_tables.ll vendor/llvm/dist/test/CodeGen/X86/mmx-arg-passing2.ll vendor/llvm/dist/test/CodeGen/X86/mmx-bitcast-to-i64.ll vendor/llvm/dist/test/CodeGen/X86/mmx-builtins.ll vendor/llvm/dist/test/CodeGen/X86/mmx-emms.ll vendor/llvm/dist/test/CodeGen/X86/mmx-insert-element.ll vendor/llvm/dist/test/CodeGen/X86/mmx-pinsrw.ll vendor/llvm/dist/test/CodeGen/X86/mmx-punpckhdq.ll vendor/llvm/dist/test/CodeGen/X86/mmx-s2v.ll vendor/llvm/dist/test/CodeGen/X86/mmx-shift.ll vendor/llvm/dist/test/CodeGen/X86/mmx-shuffle.ll vendor/llvm/dist/test/CodeGen/X86/odr_comdat.ll vendor/llvm/dist/test/CodeGen/X86/palignr-2.ll vendor/llvm/dist/test/CodeGen/X86/vec_clear.ll vendor/llvm/dist/test/DebugInfo/2010-03-30-InvalidDbgInfoCrash.ll vendor/llvm/dist/test/DebugInfo/ARM/sectionorder.ll vendor/llvm/dist/test/DebugInfo/X86/2010-08-10-DbgConstant.ll vendor/llvm/dist/test/DebugInfo/duplicate_inline.ll vendor/llvm/dist/test/ExecutionEngine/2002-12-16-ArgTest.ll vendor/llvm/dist/test/ExecutionEngine/2003-01-04-ArgumentBug.ll vendor/llvm/dist/test/ExecutionEngine/2003-01-04-LoopTest.ll vendor/llvm/dist/test/ExecutionEngine/2003-01-04-PhiTest.ll vendor/llvm/dist/test/ExecutionEngine/2003-01-09-SARTest.ll vendor/llvm/dist/test/ExecutionEngine/2003-01-10-FUCOM.ll vendor/llvm/dist/test/ExecutionEngine/2003-01-15-AlignmentTest.ll vendor/llvm/dist/test/ExecutionEngine/2003-05-06-LivenessClobber.ll vendor/llvm/dist/test/ExecutionEngine/2003-05-07-ArgumentTest.ll vendor/llvm/dist/test/ExecutionEngine/2003-08-15-AllocaAssertion.ll vendor/llvm/dist/test/ExecutionEngine/2003-08-21-EnvironmentTest.ll vendor/llvm/dist/test/ExecutionEngine/2003-08-23-RegisterAllocatePhysReg.ll vendor/llvm/dist/test/ExecutionEngine/2003-10-18-PHINode-ConstantExpr-CondCode-Failure.ll vendor/llvm/dist/test/ExecutionEngine/2005-12-02-TailCallBug.ll vendor/llvm/dist/test/ExecutionEngine/2007-12-10-APIntLoadStore.ll vendor/llvm/dist/test/ExecutionEngine/2008-06-05-APInt-OverAShr.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/2010-01-15-UndefValue.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/hello-sm-pic.ll vendor/llvm/dist/test/ExecutionEngine/fpbitcast.ll vendor/llvm/dist/test/ExecutionEngine/hello.ll vendor/llvm/dist/test/ExecutionEngine/hello2.ll vendor/llvm/dist/test/ExecutionEngine/simplesttest.ll vendor/llvm/dist/test/ExecutionEngine/simpletest.ll vendor/llvm/dist/test/ExecutionEngine/stubs.ll vendor/llvm/dist/test/ExecutionEngine/test-arith.ll vendor/llvm/dist/test/ExecutionEngine/test-branch.ll vendor/llvm/dist/test/ExecutionEngine/test-call-no-external-funcs.ll vendor/llvm/dist/test/ExecutionEngine/test-call.ll vendor/llvm/dist/test/ExecutionEngine/test-cast.ll vendor/llvm/dist/test/ExecutionEngine/test-common-symbols.ll vendor/llvm/dist/test/ExecutionEngine/test-constantexpr.ll vendor/llvm/dist/test/ExecutionEngine/test-fp-no-external-funcs.ll vendor/llvm/dist/test/ExecutionEngine/test-fp.ll vendor/llvm/dist/test/ExecutionEngine/test-global-init-nonzero.ll vendor/llvm/dist/test/ExecutionEngine/test-global.ll vendor/llvm/dist/test/ExecutionEngine/test-loadstore.ll vendor/llvm/dist/test/ExecutionEngine/test-local.ll vendor/llvm/dist/test/ExecutionEngine/test-logical.ll vendor/llvm/dist/test/ExecutionEngine/test-loop.ll vendor/llvm/dist/test/ExecutionEngine/test-phi.ll vendor/llvm/dist/test/ExecutionEngine/test-ret.ll vendor/llvm/dist/test/ExecutionEngine/test-return.ll vendor/llvm/dist/test/ExecutionEngine/test-setcond-fp.ll vendor/llvm/dist/test/ExecutionEngine/test-setcond-int.ll vendor/llvm/dist/test/ExecutionEngine/test-shift.ll vendor/llvm/dist/test/LTO/Inputs/bcsection.macho.s vendor/llvm/dist/test/LTO/Inputs/bcsection.s vendor/llvm/dist/test/LTO/Inputs/invalid.ll.bc vendor/llvm/dist/test/LTO/Inputs/list-symbols.ll vendor/llvm/dist/test/LTO/attrs.ll vendor/llvm/dist/test/LTO/bcsection.ll vendor/llvm/dist/test/LTO/cfi_endproc.ll vendor/llvm/dist/test/LTO/current-section.ll vendor/llvm/dist/test/LTO/diagnostic-handler-remarks.ll vendor/llvm/dist/test/LTO/invalid.ll vendor/llvm/dist/test/LTO/jump-table-type.ll vendor/llvm/dist/test/LTO/keep-used-puts-during-instcombine.ll vendor/llvm/dist/test/LTO/linkonce_odr_func.ll vendor/llvm/dist/test/LTO/list-symbols.ll vendor/llvm/dist/test/LTO/lit.local.cfg vendor/llvm/dist/test/LTO/no-undefined-puts-when-implemented.ll vendor/llvm/dist/test/LTO/private-symbol.ll vendor/llvm/dist/test/LTO/runtime-library.ll vendor/llvm/dist/test/LTO/symver-asm.ll vendor/llvm/dist/test/LTO/triple-init.ll vendor/llvm/dist/test/Linker/2011-08-22-ResolveAlias.ll vendor/llvm/dist/test/Linker/2011-08-22-ResolveAlias2.ll vendor/llvm/dist/test/Linker/comdat3.ll vendor/llvm/dist/test/MC/COFF/weak-symbol.ll vendor/llvm/dist/test/MC/Mips/micromips-branch16.s vendor/llvm/dist/test/MC/Mips/micromips-branch7.s vendor/llvm/dist/test/MC/Mips/micromips-expressions.s vendor/llvm/dist/test/Object/Inputs/macho-zero-ncmds vendor/llvm/dist/test/Object/objdump-macho-quirks.test vendor/llvm/dist/test/Transforms/Inline/alloca-merge-align-nodl.ll vendor/llvm/dist/test/Transforms/InstCombine/2012-09-24-MemcpyFromGlobalCrash.ll vendor/llvm/dist/test/Transforms/InstCombine/descale-zero.ll vendor/llvm/dist/test/Transforms/ObjCARC/arc-annotations.ll vendor/llvm/dist/test/Transforms/PruneEH/2003-11-21-PHIUpdate.ll vendor/llvm/dist/test/Transforms/Scalarizer/no-data-layout.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/trivial-throw.ll vendor/llvm/dist/test/Verifier/frameallocate.ll vendor/llvm/dist/test/YAMLParser/bool.data vendor/llvm/dist/test/YAMLParser/construct-bool.data vendor/llvm/dist/test/YAMLParser/construct-custom.data vendor/llvm/dist/test/YAMLParser/construct-float.data vendor/llvm/dist/test/YAMLParser/construct-int.data vendor/llvm/dist/test/YAMLParser/construct-map.data vendor/llvm/dist/test/YAMLParser/construct-merge.data vendor/llvm/dist/test/YAMLParser/construct-null.data vendor/llvm/dist/test/YAMLParser/construct-omap.data vendor/llvm/dist/test/YAMLParser/construct-pairs.data vendor/llvm/dist/test/YAMLParser/construct-seq.data vendor/llvm/dist/test/YAMLParser/construct-set.data vendor/llvm/dist/test/YAMLParser/construct-str-ascii.data vendor/llvm/dist/test/YAMLParser/construct-str.data vendor/llvm/dist/test/YAMLParser/construct-timestamp.data vendor/llvm/dist/test/YAMLParser/construct-value.data vendor/llvm/dist/test/YAMLParser/duplicate-key.former-loader-error.data vendor/llvm/dist/test/YAMLParser/duplicate-mapping-key.former-loader-error.data vendor/llvm/dist/test/YAMLParser/duplicate-merge-key.former-loader-error.data vendor/llvm/dist/test/YAMLParser/duplicate-value-key.former-loader-error.data vendor/llvm/dist/test/YAMLParser/emit-block-scalar-in-simple-key-context-bug.data vendor/llvm/dist/test/YAMLParser/empty-document-bug.data vendor/llvm/dist/test/YAMLParser/float.data vendor/llvm/dist/test/YAMLParser/int.data vendor/llvm/dist/test/YAMLParser/invalid-single-quote-bug.data vendor/llvm/dist/test/YAMLParser/merge.data vendor/llvm/dist/test/YAMLParser/more-floats.data vendor/llvm/dist/test/YAMLParser/negative-float-bug.data vendor/llvm/dist/test/YAMLParser/null.data vendor/llvm/dist/test/YAMLParser/resolver.data vendor/llvm/dist/test/YAMLParser/run-parser-crash-bug.data vendor/llvm/dist/test/YAMLParser/scan-document-end-bug.data vendor/llvm/dist/test/YAMLParser/scan-line-break-bug.data vendor/llvm/dist/test/YAMLParser/single-dot-is-not-float-bug.data vendor/llvm/dist/test/YAMLParser/sloppy-indentation.data vendor/llvm/dist/test/YAMLParser/spec-02-01.data vendor/llvm/dist/test/YAMLParser/spec-02-02.data vendor/llvm/dist/test/YAMLParser/spec-02-03.data vendor/llvm/dist/test/YAMLParser/spec-02-04.data vendor/llvm/dist/test/YAMLParser/spec-02-05.data vendor/llvm/dist/test/YAMLParser/spec-02-06.data vendor/llvm/dist/test/YAMLParser/spec-02-07.data vendor/llvm/dist/test/YAMLParser/spec-02-08.data vendor/llvm/dist/test/YAMLParser/spec-02-09.data vendor/llvm/dist/test/YAMLParser/spec-02-10.data vendor/llvm/dist/test/YAMLParser/spec-02-11.data vendor/llvm/dist/test/YAMLParser/spec-02-12.data vendor/llvm/dist/test/YAMLParser/spec-02-13.data vendor/llvm/dist/test/YAMLParser/spec-02-14.data vendor/llvm/dist/test/YAMLParser/spec-02-15.data vendor/llvm/dist/test/YAMLParser/spec-02-16.data vendor/llvm/dist/test/YAMLParser/spec-02-17.data vendor/llvm/dist/test/YAMLParser/spec-02-18.data vendor/llvm/dist/test/YAMLParser/spec-02-19.data vendor/llvm/dist/test/YAMLParser/spec-02-20.data vendor/llvm/dist/test/YAMLParser/spec-02-21.data vendor/llvm/dist/test/YAMLParser/spec-02-22.data vendor/llvm/dist/test/YAMLParser/spec-02-23.data vendor/llvm/dist/test/YAMLParser/spec-02-24.data vendor/llvm/dist/test/YAMLParser/spec-02-25.data vendor/llvm/dist/test/YAMLParser/spec-02-26.data vendor/llvm/dist/test/YAMLParser/spec-02-27.data vendor/llvm/dist/test/YAMLParser/spec-02-28.data vendor/llvm/dist/test/YAMLParser/spec-05-01-utf8.data vendor/llvm/dist/test/YAMLParser/spec-05-02-utf8.data vendor/llvm/dist/test/YAMLParser/spec-05-03.data vendor/llvm/dist/test/YAMLParser/spec-05-04.data vendor/llvm/dist/test/YAMLParser/spec-05-05.data vendor/llvm/dist/test/YAMLParser/spec-05-06.data vendor/llvm/dist/test/YAMLParser/spec-05-07.data vendor/llvm/dist/test/YAMLParser/spec-05-08.data vendor/llvm/dist/test/YAMLParser/spec-05-09.data vendor/llvm/dist/test/YAMLParser/spec-05-10.data vendor/llvm/dist/test/YAMLParser/spec-05-11.data vendor/llvm/dist/test/YAMLParser/spec-05-12.data vendor/llvm/dist/test/YAMLParser/spec-05-13.data vendor/llvm/dist/test/YAMLParser/spec-05-14.data vendor/llvm/dist/test/YAMLParser/spec-05-15.data vendor/llvm/dist/test/YAMLParser/spec-06-01.data vendor/llvm/dist/test/YAMLParser/spec-06-02.data vendor/llvm/dist/test/YAMLParser/spec-06-03.data vendor/llvm/dist/test/YAMLParser/spec-06-04.data vendor/llvm/dist/test/YAMLParser/spec-06-05.data vendor/llvm/dist/test/YAMLParser/spec-06-06.data vendor/llvm/dist/test/YAMLParser/spec-06-07.data vendor/llvm/dist/test/YAMLParser/spec-06-08.data vendor/llvm/dist/test/YAMLParser/spec-07-01.data vendor/llvm/dist/test/YAMLParser/spec-07-02.data vendor/llvm/dist/test/YAMLParser/spec-07-03.data vendor/llvm/dist/test/YAMLParser/spec-07-04.data vendor/llvm/dist/test/YAMLParser/spec-07-05.data vendor/llvm/dist/test/YAMLParser/spec-07-06.data vendor/llvm/dist/test/YAMLParser/spec-07-07a.data vendor/llvm/dist/test/YAMLParser/spec-07-07b.data vendor/llvm/dist/test/YAMLParser/spec-07-08.data vendor/llvm/dist/test/YAMLParser/spec-07-09.data vendor/llvm/dist/test/YAMLParser/spec-07-10.data vendor/llvm/dist/test/YAMLParser/spec-07-11.data vendor/llvm/dist/test/YAMLParser/spec-07-12a.data vendor/llvm/dist/test/YAMLParser/spec-07-12b.data vendor/llvm/dist/test/YAMLParser/spec-07-13.data vendor/llvm/dist/test/YAMLParser/spec-08-01.data vendor/llvm/dist/test/YAMLParser/spec-08-02.data vendor/llvm/dist/test/YAMLParser/spec-08-03.data vendor/llvm/dist/test/YAMLParser/spec-08-04.data vendor/llvm/dist/test/YAMLParser/spec-08-05.data vendor/llvm/dist/test/YAMLParser/spec-08-06.data vendor/llvm/dist/test/YAMLParser/spec-08-07.data vendor/llvm/dist/test/YAMLParser/spec-08-08.data vendor/llvm/dist/test/YAMLParser/spec-08-09.data vendor/llvm/dist/test/YAMLParser/spec-08-10.data vendor/llvm/dist/test/YAMLParser/spec-08-11.data vendor/llvm/dist/test/YAMLParser/spec-08-12.data vendor/llvm/dist/test/YAMLParser/spec-08-13.data vendor/llvm/dist/test/YAMLParser/spec-08-14.data vendor/llvm/dist/test/YAMLParser/spec-08-15.data vendor/llvm/dist/test/YAMLParser/spec-09-01.data vendor/llvm/dist/test/YAMLParser/spec-09-02.data vendor/llvm/dist/test/YAMLParser/spec-09-03.data vendor/llvm/dist/test/YAMLParser/spec-09-04.data vendor/llvm/dist/test/YAMLParser/spec-09-05.data vendor/llvm/dist/test/YAMLParser/spec-09-06.data vendor/llvm/dist/test/YAMLParser/spec-09-07.data vendor/llvm/dist/test/YAMLParser/spec-09-08.data vendor/llvm/dist/test/YAMLParser/spec-09-09.data vendor/llvm/dist/test/YAMLParser/spec-09-10.data vendor/llvm/dist/test/YAMLParser/spec-09-11.data vendor/llvm/dist/test/YAMLParser/spec-09-12.data vendor/llvm/dist/test/YAMLParser/spec-09-13.data vendor/llvm/dist/test/YAMLParser/spec-09-14.data vendor/llvm/dist/test/YAMLParser/spec-09-15.data vendor/llvm/dist/test/YAMLParser/spec-09-16.data vendor/llvm/dist/test/YAMLParser/spec-09-17.data vendor/llvm/dist/test/YAMLParser/spec-09-18.data vendor/llvm/dist/test/YAMLParser/spec-09-19.data vendor/llvm/dist/test/YAMLParser/spec-09-20.data vendor/llvm/dist/test/YAMLParser/spec-09-21.data vendor/llvm/dist/test/YAMLParser/spec-09-22.data vendor/llvm/dist/test/YAMLParser/spec-09-23.data vendor/llvm/dist/test/YAMLParser/spec-09-24.data vendor/llvm/dist/test/YAMLParser/spec-09-25.data vendor/llvm/dist/test/YAMLParser/spec-09-26.data vendor/llvm/dist/test/YAMLParser/spec-09-27.data vendor/llvm/dist/test/YAMLParser/spec-09-28.data vendor/llvm/dist/test/YAMLParser/spec-09-29.data vendor/llvm/dist/test/YAMLParser/spec-09-30.data vendor/llvm/dist/test/YAMLParser/spec-09-31.data vendor/llvm/dist/test/YAMLParser/spec-09-32.data vendor/llvm/dist/test/YAMLParser/spec-09-33.data vendor/llvm/dist/test/YAMLParser/spec-10-01.data vendor/llvm/dist/test/YAMLParser/spec-10-02.data vendor/llvm/dist/test/YAMLParser/spec-10-03.data vendor/llvm/dist/test/YAMLParser/spec-10-04.data vendor/llvm/dist/test/YAMLParser/spec-10-05.data vendor/llvm/dist/test/YAMLParser/spec-10-06.data vendor/llvm/dist/test/YAMLParser/spec-10-07.data vendor/llvm/dist/test/YAMLParser/spec-10-08.data vendor/llvm/dist/test/YAMLParser/spec-10-09.data vendor/llvm/dist/test/YAMLParser/spec-10-10.data vendor/llvm/dist/test/YAMLParser/spec-10-11.data vendor/llvm/dist/test/YAMLParser/spec-10-12.data vendor/llvm/dist/test/YAMLParser/spec-10-13.data vendor/llvm/dist/test/YAMLParser/spec-10-14.data vendor/llvm/dist/test/YAMLParser/spec-10-15.data vendor/llvm/dist/test/YAMLParser/str.data vendor/llvm/dist/test/YAMLParser/timestamp-bugs.data vendor/llvm/dist/test/YAMLParser/timestamp.data vendor/llvm/dist/test/YAMLParser/utf8-implicit.data vendor/llvm/dist/test/YAMLParser/utf8.data vendor/llvm/dist/test/YAMLParser/value.data vendor/llvm/dist/test/YAMLParser/yaml.data vendor/llvm/dist/test/tools/gold/option.ll vendor/llvm/dist/test/tools/llvm-cov/Inputs/lineExecutionCounts.profdata vendor/llvm/dist/test/tools/llvm-cov/Inputs/regionMarkers.profdata vendor/llvm/dist/test/tools/llvm-vtabledump/Inputs/trivial.obj.coff-i386 vendor/llvm/dist/test/tools/llvm-vtabledump/Inputs/trivial.obj.elf-i386 vendor/llvm/dist/test/tools/llvm-vtabledump/trivial.test vendor/llvm/dist/tools/llvm-cov/CoverageSummary.cpp vendor/llvm/dist/tools/llvm-cov/CoverageSummary.h vendor/llvm/dist/tools/llvm-vtabledump/CMakeLists.txt vendor/llvm/dist/tools/llvm-vtabledump/Error.cpp vendor/llvm/dist/tools/llvm-vtabledump/Error.h vendor/llvm/dist/tools/llvm-vtabledump/LLVMBuild.txt vendor/llvm/dist/tools/llvm-vtabledump/Makefile vendor/llvm/dist/tools/llvm-vtabledump/llvm-vtabledump.cpp vendor/llvm/dist/tools/llvm-vtabledump/llvm-vtabledump.h vendor/llvm/dist/tools/opt/PassRegistry.def vendor/llvm/dist/tools/opt/Passes.cpp vendor/llvm/dist/tools/opt/Passes.h vendor/llvm/dist/unittests/DebugInfo/DWARFFormValueTest.cpp vendor/llvm/dist/utils/vim/llvm.vim vendor/llvm/dist/utils/vim/tablegen.vim Modified: vendor/llvm/dist/.gitignore vendor/llvm/dist/CMakeLists.txt vendor/llvm/dist/CODE_OWNERS.TXT vendor/llvm/dist/LICENSE.TXT vendor/llvm/dist/Makefile.config.in vendor/llvm/dist/Makefile.rules vendor/llvm/dist/README.txt vendor/llvm/dist/autoconf/config.sub vendor/llvm/dist/autoconf/configure.ac vendor/llvm/dist/bindings/go/llvm/DIBuilderBindings.cpp vendor/llvm/dist/bindings/go/llvm/DIBuilderBindings.h vendor/llvm/dist/bindings/go/llvm/IRBindings.cpp vendor/llvm/dist/bindings/go/llvm/InstrumentationBindings.cpp vendor/llvm/dist/bindings/go/llvm/InstrumentationBindings.h vendor/llvm/dist/bindings/go/llvm/SupportBindings.cpp vendor/llvm/dist/bindings/go/llvm/dibuilder.go vendor/llvm/dist/bindings/go/llvm/linker.go vendor/llvm/dist/bindings/go/llvm/transforms_instrumentation.go vendor/llvm/dist/bindings/ocaml/linker/linker_ocaml.c vendor/llvm/dist/bindings/ocaml/linker/llvm_linker.ml vendor/llvm/dist/bindings/ocaml/linker/llvm_linker.mli vendor/llvm/dist/bindings/ocaml/llvm/llvm.ml vendor/llvm/dist/bindings/ocaml/llvm/llvm.mli vendor/llvm/dist/bindings/ocaml/llvm/llvm_ocaml.c vendor/llvm/dist/cmake/config-ix.cmake vendor/llvm/dist/cmake/modules/AddLLVM.cmake vendor/llvm/dist/cmake/modules/CheckAtomic.cmake vendor/llvm/dist/cmake/modules/CrossCompile.cmake vendor/llvm/dist/cmake/modules/HandleLLVMOptions.cmake vendor/llvm/dist/cmake/modules/HandleLLVMStdlib.cmake vendor/llvm/dist/cmake/modules/LLVM-Config.cmake vendor/llvm/dist/cmake/modules/LLVMConfig.cmake.in vendor/llvm/dist/cmake/modules/LLVMProcessSources.cmake vendor/llvm/dist/cmake/modules/Makefile vendor/llvm/dist/cmake/modules/TableGen.cmake vendor/llvm/dist/cmake/platforms/iOS.cmake vendor/llvm/dist/configure vendor/llvm/dist/docs/BitCodeFormat.rst vendor/llvm/dist/docs/BranchWeightMetadata.rst vendor/llvm/dist/docs/Bugpoint.rst vendor/llvm/dist/docs/CMake.rst vendor/llvm/dist/docs/CodeGenerator.rst vendor/llvm/dist/docs/CodingStandards.rst vendor/llvm/dist/docs/CommandGuide/FileCheck.rst vendor/llvm/dist/docs/CommandGuide/lit.rst vendor/llvm/dist/docs/CommandGuide/llvm-cov.rst vendor/llvm/dist/docs/CommandGuide/llvm-profdata.rst vendor/llvm/dist/docs/CompilerWriterInfo.rst vendor/llvm/dist/docs/DeveloperPolicy.rst vendor/llvm/dist/docs/ExceptionHandling.rst vendor/llvm/dist/docs/ExtendingLLVM.rst vendor/llvm/dist/docs/Extensions.rst vendor/llvm/dist/docs/FAQ.rst vendor/llvm/dist/docs/GarbageCollection.rst vendor/llvm/dist/docs/GetElementPtr.rst vendor/llvm/dist/docs/GettingStarted.rst vendor/llvm/dist/docs/GettingStartedVS.rst vendor/llvm/dist/docs/HowToBuildOnARM.rst vendor/llvm/dist/docs/HowToSetUpLLVMStyleRTTI.rst vendor/llvm/dist/docs/LangRef.rst vendor/llvm/dist/docs/Lexicon.rst vendor/llvm/dist/docs/Makefile vendor/llvm/dist/docs/MergeFunctions.rst vendor/llvm/dist/docs/Passes.rst vendor/llvm/dist/docs/Phabricator.rst vendor/llvm/dist/docs/ProgrammersManual.rst vendor/llvm/dist/docs/R600Usage.rst vendor/llvm/dist/docs/ReleaseNotes.rst vendor/llvm/dist/docs/SourceLevelDebugging.rst vendor/llvm/dist/docs/StackMaps.rst vendor/llvm/dist/docs/Statepoints.rst vendor/llvm/dist/docs/TestingGuide.rst vendor/llvm/dist/docs/Vectorizers.rst vendor/llvm/dist/docs/WritingAnLLVMPass.rst vendor/llvm/dist/docs/YamlIO.rst vendor/llvm/dist/docs/conf.py vendor/llvm/dist/docs/doxygen.cfg.in vendor/llvm/dist/docs/index.rst vendor/llvm/dist/docs/tutorial/LangImpl1.rst vendor/llvm/dist/docs/tutorial/LangImpl3.rst vendor/llvm/dist/docs/tutorial/LangImpl5.rst vendor/llvm/dist/docs/tutorial/LangImpl7.rst vendor/llvm/dist/docs/tutorial/LangImpl8.rst vendor/llvm/dist/docs/tutorial/LangImpl9.rst vendor/llvm/dist/docs/tutorial/OCamlLangImpl3.rst vendor/llvm/dist/docs/tutorial/OCamlLangImpl5.rst vendor/llvm/dist/examples/BrainF/BrainF.cpp vendor/llvm/dist/examples/ExceptionDemo/CMakeLists.txt vendor/llvm/dist/examples/ExceptionDemo/ExceptionDemo.cpp vendor/llvm/dist/examples/HowToUseJIT/HowToUseJIT.cpp vendor/llvm/dist/examples/Kaleidoscope/CMakeLists.txt vendor/llvm/dist/examples/Kaleidoscope/Chapter3/toy.cpp vendor/llvm/dist/examples/Kaleidoscope/Chapter4/CMakeLists.txt vendor/llvm/dist/examples/Kaleidoscope/Chapter4/toy.cpp vendor/llvm/dist/examples/Kaleidoscope/Chapter5/CMakeLists.txt vendor/llvm/dist/examples/Kaleidoscope/Chapter5/toy.cpp vendor/llvm/dist/examples/Kaleidoscope/Chapter6/CMakeLists.txt vendor/llvm/dist/examples/Kaleidoscope/Chapter6/toy.cpp vendor/llvm/dist/examples/Kaleidoscope/Chapter7/CMakeLists.txt vendor/llvm/dist/examples/Kaleidoscope/Chapter7/Makefile vendor/llvm/dist/examples/Kaleidoscope/Chapter7/toy.cpp vendor/llvm/dist/examples/Kaleidoscope/Chapter8/CMakeLists.txt vendor/llvm/dist/examples/Kaleidoscope/Chapter8/Makefile vendor/llvm/dist/examples/Kaleidoscope/Chapter8/toy.cpp vendor/llvm/dist/examples/Kaleidoscope/MCJIT/cached/toy-jit.cpp vendor/llvm/dist/examples/Kaleidoscope/MCJIT/cached/toy.cpp vendor/llvm/dist/examples/Kaleidoscope/MCJIT/complete/toy.cpp vendor/llvm/dist/examples/Kaleidoscope/MCJIT/initial/toy.cpp vendor/llvm/dist/examples/Kaleidoscope/MCJIT/lazy/toy-jit.cpp vendor/llvm/dist/examples/Kaleidoscope/MCJIT/lazy/toy.cpp vendor/llvm/dist/examples/ParallelJIT/ParallelJIT.cpp vendor/llvm/dist/include/llvm-c/Core.h vendor/llvm/dist/include/llvm-c/Linker.h vendor/llvm/dist/include/llvm-c/Transforms/Scalar.h vendor/llvm/dist/include/llvm-c/lto.h vendor/llvm/dist/include/llvm/ADT/APFloat.h vendor/llvm/dist/include/llvm/ADT/APInt.h vendor/llvm/dist/include/llvm/ADT/APSInt.h vendor/llvm/dist/include/llvm/ADT/ArrayRef.h vendor/llvm/dist/include/llvm/ADT/BitVector.h vendor/llvm/dist/include/llvm/ADT/DeltaAlgorithm.h vendor/llvm/dist/include/llvm/ADT/DenseMap.h vendor/llvm/dist/include/llvm/ADT/DepthFirstIterator.h vendor/llvm/dist/include/llvm/ADT/EquivalenceClasses.h vendor/llvm/dist/include/llvm/ADT/FoldingSet.h vendor/llvm/dist/include/llvm/ADT/Hashing.h vendor/llvm/dist/include/llvm/ADT/ImmutableList.h vendor/llvm/dist/include/llvm/ADT/ImmutableMap.h vendor/llvm/dist/include/llvm/ADT/ImmutableSet.h vendor/llvm/dist/include/llvm/ADT/IndexedMap.h vendor/llvm/dist/include/llvm/ADT/IntervalMap.h vendor/llvm/dist/include/llvm/ADT/IntrusiveRefCntPtr.h vendor/llvm/dist/include/llvm/ADT/MapVector.h vendor/llvm/dist/include/llvm/ADT/None.h vendor/llvm/dist/include/llvm/ADT/Optional.h vendor/llvm/dist/include/llvm/ADT/PointerUnion.h vendor/llvm/dist/include/llvm/ADT/PostOrderIterator.h vendor/llvm/dist/include/llvm/ADT/STLExtras.h vendor/llvm/dist/include/llvm/ADT/ScopedHashTable.h vendor/llvm/dist/include/llvm/ADT/SmallBitVector.h vendor/llvm/dist/include/llvm/ADT/SmallPtrSet.h vendor/llvm/dist/include/llvm/ADT/SmallVector.h vendor/llvm/dist/include/llvm/ADT/SparseBitVector.h vendor/llvm/dist/include/llvm/ADT/SparseMultiSet.h vendor/llvm/dist/include/llvm/ADT/SparseSet.h vendor/llvm/dist/include/llvm/ADT/StringMap.h vendor/llvm/dist/include/llvm/ADT/StringRef.h vendor/llvm/dist/include/llvm/ADT/TinyPtrVector.h vendor/llvm/dist/include/llvm/ADT/Triple.h vendor/llvm/dist/include/llvm/ADT/Twine.h vendor/llvm/dist/include/llvm/ADT/edit_distance.h vendor/llvm/dist/include/llvm/ADT/ilist.h vendor/llvm/dist/include/llvm/ADT/iterator.h vendor/llvm/dist/include/llvm/Analysis/AliasAnalysis.h vendor/llvm/dist/include/llvm/Analysis/AliasSetTracker.h vendor/llvm/dist/include/llvm/Analysis/AssumptionCache.h vendor/llvm/dist/include/llvm/Analysis/BlockFrequencyInfo.h vendor/llvm/dist/include/llvm/Analysis/BlockFrequencyInfoImpl.h vendor/llvm/dist/include/llvm/Analysis/CGSCCPassManager.h vendor/llvm/dist/include/llvm/Analysis/CallGraph.h vendor/llvm/dist/include/llvm/Analysis/ConstantFolding.h vendor/llvm/dist/include/llvm/Analysis/DependenceAnalysis.h vendor/llvm/dist/include/llvm/Analysis/DominanceFrontierImpl.h vendor/llvm/dist/include/llvm/Analysis/IVUsers.h vendor/llvm/dist/include/llvm/Analysis/InlineCost.h vendor/llvm/dist/include/llvm/Analysis/InstructionSimplify.h vendor/llvm/dist/include/llvm/Analysis/IntervalIterator.h vendor/llvm/dist/include/llvm/Analysis/JumpInstrTableInfo.h vendor/llvm/dist/include/llvm/Analysis/LazyValueInfo.h vendor/llvm/dist/include/llvm/Analysis/LibCallAliasAnalysis.h vendor/llvm/dist/include/llvm/Analysis/LibCallSemantics.h vendor/llvm/dist/include/llvm/Analysis/Loads.h vendor/llvm/dist/include/llvm/Analysis/LoopInfo.h vendor/llvm/dist/include/llvm/Analysis/LoopInfoImpl.h vendor/llvm/dist/include/llvm/Analysis/MemoryBuiltins.h vendor/llvm/dist/include/llvm/Analysis/MemoryDependenceAnalysis.h vendor/llvm/dist/include/llvm/Analysis/PHITransAddr.h vendor/llvm/dist/include/llvm/Analysis/Passes.h vendor/llvm/dist/include/llvm/Analysis/PostDominators.h vendor/llvm/dist/include/llvm/Analysis/RegionInfo.h vendor/llvm/dist/include/llvm/Analysis/RegionInfoImpl.h vendor/llvm/dist/include/llvm/Analysis/RegionIterator.h vendor/llvm/dist/include/llvm/Analysis/ScalarEvolution.h vendor/llvm/dist/include/llvm/Analysis/ScalarEvolutionExpander.h vendor/llvm/dist/include/llvm/Analysis/SparsePropagation.h vendor/llvm/dist/include/llvm/Analysis/TargetFolder.h vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfo.h vendor/llvm/dist/include/llvm/Analysis/ValueTracking.h vendor/llvm/dist/include/llvm/Bitcode/BitCodes.h vendor/llvm/dist/include/llvm/Bitcode/BitcodeWriterPass.h vendor/llvm/dist/include/llvm/Bitcode/BitstreamReader.h vendor/llvm/dist/include/llvm/Bitcode/LLVMBitCodes.h vendor/llvm/dist/include/llvm/Bitcode/ReaderWriter.h vendor/llvm/dist/include/llvm/CodeGen/AsmPrinter.h vendor/llvm/dist/include/llvm/CodeGen/CallingConvLower.h vendor/llvm/dist/include/llvm/CodeGen/CommandFlags.h vendor/llvm/dist/include/llvm/CodeGen/DIE.h vendor/llvm/dist/include/llvm/CodeGen/FunctionLoweringInfo.h vendor/llvm/dist/include/llvm/CodeGen/GCMetadata.h vendor/llvm/dist/include/llvm/CodeGen/GCMetadataPrinter.h vendor/llvm/dist/include/llvm/CodeGen/GCStrategy.h vendor/llvm/dist/include/llvm/CodeGen/GCs.h vendor/llvm/dist/include/llvm/CodeGen/ISDOpcodes.h vendor/llvm/dist/include/llvm/CodeGen/LatencyPriorityQueue.h vendor/llvm/dist/include/llvm/CodeGen/LexicalScopes.h vendor/llvm/dist/include/llvm/CodeGen/LinkAllCodegenComponents.h vendor/llvm/dist/include/llvm/CodeGen/LiveInterval.h vendor/llvm/dist/include/llvm/CodeGen/LiveIntervalAnalysis.h vendor/llvm/dist/include/llvm/CodeGen/LiveIntervalUnion.h vendor/llvm/dist/include/llvm/CodeGen/LivePhysRegs.h vendor/llvm/dist/include/llvm/CodeGen/LiveRangeEdit.h vendor/llvm/dist/include/llvm/CodeGen/LiveStackAnalysis.h vendor/llvm/dist/include/llvm/CodeGen/MachineBasicBlock.h vendor/llvm/dist/include/llvm/CodeGen/MachineBlockFrequencyInfo.h vendor/llvm/dist/include/llvm/CodeGen/MachineDominanceFrontier.h vendor/llvm/dist/include/llvm/CodeGen/MachineDominators.h vendor/llvm/dist/include/llvm/CodeGen/MachineFrameInfo.h vendor/llvm/dist/include/llvm/CodeGen/MachineFunction.h vendor/llvm/dist/include/llvm/CodeGen/MachineFunctionAnalysis.h vendor/llvm/dist/include/llvm/CodeGen/MachineInstr.h vendor/llvm/dist/include/llvm/CodeGen/MachineInstrBuilder.h vendor/llvm/dist/include/llvm/CodeGen/MachineLoopInfo.h vendor/llvm/dist/include/llvm/CodeGen/MachineMemOperand.h vendor/llvm/dist/include/llvm/CodeGen/MachineModuleInfo.h vendor/llvm/dist/include/llvm/CodeGen/MachineModuleInfoImpls.h vendor/llvm/dist/include/llvm/CodeGen/MachineOperand.h vendor/llvm/dist/include/llvm/CodeGen/MachinePassRegistry.h vendor/llvm/dist/include/llvm/CodeGen/MachinePostDominators.h vendor/llvm/dist/include/llvm/CodeGen/MachineRegionInfo.h vendor/llvm/dist/include/llvm/CodeGen/MachineRegisterInfo.h vendor/llvm/dist/include/llvm/CodeGen/MachineSSAUpdater.h vendor/llvm/dist/include/llvm/CodeGen/MachineScheduler.h vendor/llvm/dist/include/llvm/CodeGen/MachineValueType.h vendor/llvm/dist/include/llvm/CodeGen/PBQP/Graph.h vendor/llvm/dist/include/llvm/CodeGen/PBQP/ReductionRules.h vendor/llvm/dist/include/llvm/CodeGen/Passes.h vendor/llvm/dist/include/llvm/CodeGen/RegAllocPBQP.h vendor/llvm/dist/include/llvm/CodeGen/RegisterPressure.h vendor/llvm/dist/include/llvm/CodeGen/RegisterScavenging.h vendor/llvm/dist/include/llvm/CodeGen/ResourcePriorityQueue.h vendor/llvm/dist/include/llvm/CodeGen/RuntimeLibcalls.h vendor/llvm/dist/include/llvm/CodeGen/ScheduleDAG.h vendor/llvm/dist/include/llvm/CodeGen/ScheduleDAGInstrs.h vendor/llvm/dist/include/llvm/CodeGen/SelectionDAG.h vendor/llvm/dist/include/llvm/CodeGen/SelectionDAGISel.h vendor/llvm/dist/include/llvm/CodeGen/SelectionDAGNodes.h vendor/llvm/dist/include/llvm/CodeGen/SlotIndexes.h vendor/llvm/dist/include/llvm/CodeGen/StackMaps.h vendor/llvm/dist/include/llvm/CodeGen/TargetLoweringObjectFileImpl.h vendor/llvm/dist/include/llvm/CodeGen/TargetSchedule.h vendor/llvm/dist/include/llvm/CodeGen/ValueTypes.h vendor/llvm/dist/include/llvm/CodeGen/ValueTypes.td vendor/llvm/dist/include/llvm/CodeGen/VirtRegMap.h vendor/llvm/dist/include/llvm/Config/config.h.cmake vendor/llvm/dist/include/llvm/Config/config.h.in vendor/llvm/dist/include/llvm/Config/llvm-config.h.cmake vendor/llvm/dist/include/llvm/Config/llvm-config.h.in vendor/llvm/dist/include/llvm/DebugInfo/DIContext.h vendor/llvm/dist/include/llvm/ExecutionEngine/ExecutionEngine.h vendor/llvm/dist/include/llvm/ExecutionEngine/RTDyldMemoryManager.h vendor/llvm/dist/include/llvm/ExecutionEngine/RuntimeDyld.h vendor/llvm/dist/include/llvm/ExecutionEngine/RuntimeDyldChecker.h vendor/llvm/dist/include/llvm/ExecutionEngine/SectionMemoryManager.h vendor/llvm/dist/include/llvm/IR/Argument.h vendor/llvm/dist/include/llvm/IR/Attributes.h vendor/llvm/dist/include/llvm/IR/BasicBlock.h vendor/llvm/dist/include/llvm/IR/CFG.h vendor/llvm/dist/include/llvm/IR/CallSite.h vendor/llvm/dist/include/llvm/IR/Comdat.h vendor/llvm/dist/include/llvm/IR/Constant.h vendor/llvm/dist/include/llvm/IR/ConstantFolder.h vendor/llvm/dist/include/llvm/IR/ConstantRange.h vendor/llvm/dist/include/llvm/IR/Constants.h vendor/llvm/dist/include/llvm/IR/DIBuilder.h vendor/llvm/dist/include/llvm/IR/DataLayout.h vendor/llvm/dist/include/llvm/IR/DebugInfo.h vendor/llvm/dist/include/llvm/IR/DebugLoc.h vendor/llvm/dist/include/llvm/IR/DerivedTypes.h vendor/llvm/dist/include/llvm/IR/DiagnosticInfo.h vendor/llvm/dist/include/llvm/IR/Function.h vendor/llvm/dist/include/llvm/IR/GVMaterializer.h vendor/llvm/dist/include/llvm/IR/GetElementPtrTypeIterator.h vendor/llvm/dist/include/llvm/IR/GlobalAlias.h vendor/llvm/dist/include/llvm/IR/GlobalObject.h vendor/llvm/dist/include/llvm/IR/GlobalValue.h vendor/llvm/dist/include/llvm/IR/GlobalVariable.h vendor/llvm/dist/include/llvm/IR/IRBuilder.h vendor/llvm/dist/include/llvm/IR/IRPrintingPasses.h vendor/llvm/dist/include/llvm/IR/InlineAsm.h vendor/llvm/dist/include/llvm/IR/InstIterator.h vendor/llvm/dist/include/llvm/IR/InstVisitor.h vendor/llvm/dist/include/llvm/IR/InstrTypes.h vendor/llvm/dist/include/llvm/IR/Instruction.h vendor/llvm/dist/include/llvm/IR/Instructions.h vendor/llvm/dist/include/llvm/IR/IntrinsicInst.h vendor/llvm/dist/include/llvm/IR/Intrinsics.h vendor/llvm/dist/include/llvm/IR/Intrinsics.td vendor/llvm/dist/include/llvm/IR/IntrinsicsHexagon.td vendor/llvm/dist/include/llvm/IR/IntrinsicsPowerPC.td vendor/llvm/dist/include/llvm/IR/IntrinsicsX86.td vendor/llvm/dist/include/llvm/IR/LLVMContext.h vendor/llvm/dist/include/llvm/IR/LegacyPassManager.h vendor/llvm/dist/include/llvm/IR/LegacyPassNameParser.h vendor/llvm/dist/include/llvm/IR/MDBuilder.h vendor/llvm/dist/include/llvm/IR/Metadata.def vendor/llvm/dist/include/llvm/IR/Metadata.h vendor/llvm/dist/include/llvm/IR/Module.h vendor/llvm/dist/include/llvm/IR/NoFolder.h vendor/llvm/dist/include/llvm/IR/Operator.h vendor/llvm/dist/include/llvm/IR/PassManager.h vendor/llvm/dist/include/llvm/IR/PassManagerInternal.h vendor/llvm/dist/include/llvm/IR/PatternMatch.h vendor/llvm/dist/include/llvm/IR/PredIteratorCache.h vendor/llvm/dist/include/llvm/IR/Statepoint.h vendor/llvm/dist/include/llvm/IR/Type.h vendor/llvm/dist/include/llvm/IR/TypeBuilder.h vendor/llvm/dist/include/llvm/IR/Use.h vendor/llvm/dist/include/llvm/IR/UseListOrder.h vendor/llvm/dist/include/llvm/IR/User.h vendor/llvm/dist/include/llvm/IR/Value.h vendor/llvm/dist/include/llvm/IR/ValueHandle.h vendor/llvm/dist/include/llvm/IR/ValueMap.h vendor/llvm/dist/include/llvm/IR/Verifier.h vendor/llvm/dist/include/llvm/InitializePasses.h vendor/llvm/dist/include/llvm/LTO/LTOCodeGenerator.h vendor/llvm/dist/include/llvm/LineEditor/LineEditor.h vendor/llvm/dist/include/llvm/LinkAllPasses.h vendor/llvm/dist/include/llvm/Linker/Linker.h vendor/llvm/dist/include/llvm/MC/ConstantPools.h vendor/llvm/dist/include/llvm/MC/MCAsmBackend.h vendor/llvm/dist/include/llvm/MC/MCAsmInfo.h vendor/llvm/dist/include/llvm/MC/MCAsmInfoELF.h vendor/llvm/dist/include/llvm/MC/MCAsmLayout.h vendor/llvm/dist/include/llvm/MC/MCAssembler.h vendor/llvm/dist/include/llvm/MC/MCCodeEmitter.h vendor/llvm/dist/include/llvm/MC/MCCodeGenInfo.h vendor/llvm/dist/include/llvm/MC/MCContext.h vendor/llvm/dist/include/llvm/MC/MCDisassembler.h vendor/llvm/dist/include/llvm/MC/MCDwarf.h vendor/llvm/dist/include/llvm/MC/MCELF.h vendor/llvm/dist/include/llvm/MC/MCELFObjectWriter.h vendor/llvm/dist/include/llvm/MC/MCELFStreamer.h vendor/llvm/dist/include/llvm/MC/MCExpr.h vendor/llvm/dist/include/llvm/MC/MCFixup.h vendor/llvm/dist/include/llvm/MC/MCFixupKindInfo.h vendor/llvm/dist/include/llvm/MC/MCInst.h vendor/llvm/dist/include/llvm/MC/MCInstBuilder.h vendor/llvm/dist/include/llvm/MC/MCInstPrinter.h vendor/llvm/dist/include/llvm/MC/MCInstrAnalysis.h vendor/llvm/dist/include/llvm/MC/MCInstrDesc.h vendor/llvm/dist/include/llvm/MC/MCInstrInfo.h vendor/llvm/dist/include/llvm/MC/MCInstrItineraries.h vendor/llvm/dist/include/llvm/MC/MCLabel.h vendor/llvm/dist/include/llvm/MC/MCLinkerOptimizationHint.h vendor/llvm/dist/include/llvm/MC/MCMachObjectWriter.h vendor/llvm/dist/include/llvm/MC/MCObjectFileInfo.h vendor/llvm/dist/include/llvm/MC/MCObjectStreamer.h vendor/llvm/dist/include/llvm/MC/MCObjectWriter.h vendor/llvm/dist/include/llvm/MC/MCParser/AsmLexer.h vendor/llvm/dist/include/llvm/MC/MCParser/MCAsmLexer.h vendor/llvm/dist/include/llvm/MC/MCParser/MCAsmParser.h vendor/llvm/dist/include/llvm/MC/MCParser/MCAsmParserExtension.h vendor/llvm/dist/include/llvm/MC/MCParser/MCParsedAsmOperand.h vendor/llvm/dist/include/llvm/MC/MCRelocationInfo.h vendor/llvm/dist/include/llvm/MC/MCSection.h vendor/llvm/dist/include/llvm/MC/MCSectionCOFF.h vendor/llvm/dist/include/llvm/MC/MCSectionELF.h vendor/llvm/dist/include/llvm/MC/MCSectionMachO.h vendor/llvm/dist/include/llvm/MC/MCStreamer.h vendor/llvm/dist/include/llvm/MC/MCSubtargetInfo.h vendor/llvm/dist/include/llvm/MC/MCSymbol.h vendor/llvm/dist/include/llvm/MC/MCSymbolizer.h vendor/llvm/dist/include/llvm/MC/MCTargetAsmParser.h vendor/llvm/dist/include/llvm/MC/MCValue.h vendor/llvm/dist/include/llvm/MC/MCWinCOFFObjectWriter.h vendor/llvm/dist/include/llvm/MC/MCWinCOFFStreamer.h vendor/llvm/dist/include/llvm/MC/MCWinEH.h vendor/llvm/dist/include/llvm/MC/SectionKind.h vendor/llvm/dist/include/llvm/MC/SubtargetFeature.h vendor/llvm/dist/include/llvm/Object/Archive.h vendor/llvm/dist/include/llvm/Object/Binary.h vendor/llvm/dist/include/llvm/Object/COFF.h vendor/llvm/dist/include/llvm/Object/ELF.h vendor/llvm/dist/include/llvm/Object/ELFObjectFile.h vendor/llvm/dist/include/llvm/Object/ELFTypes.h vendor/llvm/dist/include/llvm/Object/ELFYAML.h vendor/llvm/dist/include/llvm/Object/IRObjectFile.h vendor/llvm/dist/include/llvm/Object/MachO.h vendor/llvm/dist/include/llvm/Object/MachOUniversal.h vendor/llvm/dist/include/llvm/Object/ObjectFile.h vendor/llvm/dist/include/llvm/Object/SymbolicFile.h vendor/llvm/dist/include/llvm/Option/Arg.h vendor/llvm/dist/include/llvm/Option/ArgList.h vendor/llvm/dist/include/llvm/Option/OptSpecifier.h vendor/llvm/dist/include/llvm/Option/OptTable.h vendor/llvm/dist/include/llvm/Option/Option.h vendor/llvm/dist/include/llvm/Pass.h vendor/llvm/dist/include/llvm/PassAnalysisSupport.h vendor/llvm/dist/include/llvm/PassInfo.h vendor/llvm/dist/include/llvm/ProfileData/CoverageMapping.h vendor/llvm/dist/include/llvm/ProfileData/CoverageMappingReader.h vendor/llvm/dist/include/llvm/ProfileData/InstrProfReader.h vendor/llvm/dist/include/llvm/ProfileData/InstrProfWriter.h vendor/llvm/dist/include/llvm/ProfileData/SampleProf.h vendor/llvm/dist/include/llvm/Support/ARMBuildAttributes.h vendor/llvm/dist/include/llvm/Support/AlignOf.h vendor/llvm/dist/include/llvm/Support/Allocator.h vendor/llvm/dist/include/llvm/Support/BranchProbability.h vendor/llvm/dist/include/llvm/Support/COFF.h vendor/llvm/dist/include/llvm/Support/CommandLine.h vendor/llvm/dist/include/llvm/Support/Compiler.h vendor/llvm/dist/include/llvm/Support/Compression.h vendor/llvm/dist/include/llvm/Support/ConvertUTF.h vendor/llvm/dist/include/llvm/Support/CrashRecoveryContext.h vendor/llvm/dist/include/llvm/Support/DataExtractor.h vendor/llvm/dist/include/llvm/Support/Debug.h vendor/llvm/dist/include/llvm/Support/Dwarf.h vendor/llvm/dist/include/llvm/Support/ELF.h vendor/llvm/dist/include/llvm/Support/ELFRelocs/Mips.def vendor/llvm/dist/include/llvm/Support/Endian.h vendor/llvm/dist/include/llvm/Support/EndianStream.h vendor/llvm/dist/include/llvm/Support/ErrorOr.h vendor/llvm/dist/include/llvm/Support/FileOutputBuffer.h vendor/llvm/dist/include/llvm/Support/FileSystem.h vendor/llvm/dist/include/llvm/Support/FileUtilities.h vendor/llvm/dist/include/llvm/Support/Format.h vendor/llvm/dist/include/llvm/Support/FormattedStream.h vendor/llvm/dist/include/llvm/Support/GCOV.h vendor/llvm/dist/include/llvm/Support/GenericDomTree.h vendor/llvm/dist/include/llvm/Support/GenericDomTreeConstruction.h vendor/llvm/dist/include/llvm/Support/GraphWriter.h vendor/llvm/dist/include/llvm/Support/LockFileManager.h vendor/llvm/dist/include/llvm/Support/MathExtras.h vendor/llvm/dist/include/llvm/Support/MemoryBuffer.h vendor/llvm/dist/include/llvm/Support/Mutex.h vendor/llvm/dist/include/llvm/Support/MutexGuard.h vendor/llvm/dist/include/llvm/Support/OnDiskHashTable.h vendor/llvm/dist/include/llvm/Support/Options.h vendor/llvm/dist/include/llvm/Support/PrettyStackTrace.h vendor/llvm/dist/include/llvm/Support/Program.h vendor/llvm/dist/include/llvm/Support/RWMutex.h vendor/llvm/dist/include/llvm/Support/RandomNumberGenerator.h vendor/llvm/dist/include/llvm/Support/Regex.h vendor/llvm/dist/include/llvm/Support/Registry.h vendor/llvm/dist/include/llvm/Support/ScaledNumber.h vendor/llvm/dist/include/llvm/Support/Signals.h vendor/llvm/dist/include/llvm/Support/SourceMgr.h vendor/llvm/dist/include/llvm/Support/SpecialCaseList.h vendor/llvm/dist/include/llvm/Support/StreamingMemoryObject.h vendor/llvm/dist/include/llvm/Support/StringPool.h vendor/llvm/dist/include/llvm/Support/SwapByteOrder.h vendor/llvm/dist/include/llvm/Support/SystemUtils.h vendor/llvm/dist/include/llvm/Support/TargetRegistry.h vendor/llvm/dist/include/llvm/Support/Timer.h vendor/llvm/dist/include/llvm/Support/ToolOutputFile.h vendor/llvm/dist/include/llvm/Support/UnicodeCharRanges.h vendor/llvm/dist/include/llvm/Support/UniqueLock.h vendor/llvm/dist/include/llvm/Support/Watchdog.h vendor/llvm/dist/include/llvm/Support/YAMLParser.h vendor/llvm/dist/include/llvm/Support/YAMLTraits.h vendor/llvm/dist/include/llvm/Support/circular_raw_ostream.h vendor/llvm/dist/include/llvm/Support/raw_os_ostream.h vendor/llvm/dist/include/llvm/Support/raw_ostream.h vendor/llvm/dist/include/llvm/Support/type_traits.h vendor/llvm/dist/include/llvm/TableGen/Record.h vendor/llvm/dist/include/llvm/TableGen/SetTheory.h vendor/llvm/dist/include/llvm/TableGen/TableGenBackend.h vendor/llvm/dist/include/llvm/Target/Target.td vendor/llvm/dist/include/llvm/Target/TargetCallingConv.h vendor/llvm/dist/include/llvm/Target/TargetFrameLowering.h vendor/llvm/dist/include/llvm/Target/TargetInstrInfo.h vendor/llvm/dist/include/llvm/Target/TargetIntrinsicInfo.h vendor/llvm/dist/include/llvm/Target/TargetLowering.h vendor/llvm/dist/include/llvm/Target/TargetLoweringObjectFile.h vendor/llvm/dist/include/llvm/Target/TargetMachine.h vendor/llvm/dist/include/llvm/Target/TargetOptions.h vendor/llvm/dist/include/llvm/Target/TargetRegisterInfo.h vendor/llvm/dist/include/llvm/Target/TargetSelectionDAG.td vendor/llvm/dist/include/llvm/Target/TargetSelectionDAGInfo.h vendor/llvm/dist/include/llvm/Target/TargetSubtargetInfo.h vendor/llvm/dist/include/llvm/Transforms/IPO.h vendor/llvm/dist/include/llvm/Transforms/IPO/PassManagerBuilder.h vendor/llvm/dist/include/llvm/Transforms/Instrumentation.h vendor/llvm/dist/include/llvm/Transforms/Scalar.h vendor/llvm/dist/include/llvm/Transforms/Utils/BasicBlockUtils.h vendor/llvm/dist/include/llvm/Transforms/Utils/BuildLibCalls.h vendor/llvm/dist/include/llvm/Transforms/Utils/Cloning.h vendor/llvm/dist/include/llvm/Transforms/Utils/Local.h vendor/llvm/dist/include/llvm/Transforms/Utils/LoopUtils.h vendor/llvm/dist/include/llvm/Transforms/Utils/ModuleUtils.h vendor/llvm/dist/include/llvm/Transforms/Utils/SSAUpdater.h vendor/llvm/dist/include/llvm/Transforms/Utils/SimplifyLibCalls.h vendor/llvm/dist/include/llvm/Transforms/Utils/SymbolRewriter.h vendor/llvm/dist/include/llvm/Transforms/Utils/UnrollLoop.h vendor/llvm/dist/include/llvm/Transforms/Utils/VectorUtils.h vendor/llvm/dist/include/llvm/module.modulemap vendor/llvm/dist/lib/Analysis/AliasAnalysis.cpp vendor/llvm/dist/lib/Analysis/AliasAnalysisCounter.cpp vendor/llvm/dist/lib/Analysis/AliasAnalysisEvaluator.cpp vendor/llvm/dist/lib/Analysis/AliasDebugger.cpp vendor/llvm/dist/lib/Analysis/AliasSetTracker.cpp vendor/llvm/dist/lib/Analysis/Analysis.cpp vendor/llvm/dist/lib/Analysis/AssumptionCache.cpp vendor/llvm/dist/lib/Analysis/BasicAliasAnalysis.cpp vendor/llvm/dist/lib/Analysis/BlockFrequencyInfo.cpp vendor/llvm/dist/lib/Analysis/BlockFrequencyInfoImpl.cpp vendor/llvm/dist/lib/Analysis/BranchProbabilityInfo.cpp vendor/llvm/dist/lib/Analysis/CFGPrinter.cpp vendor/llvm/dist/lib/Analysis/CFLAliasAnalysis.cpp vendor/llvm/dist/lib/Analysis/CMakeLists.txt vendor/llvm/dist/lib/Analysis/CodeMetrics.cpp vendor/llvm/dist/lib/Analysis/ConstantFolding.cpp vendor/llvm/dist/lib/Analysis/CostModel.cpp vendor/llvm/dist/lib/Analysis/Delinearization.cpp vendor/llvm/dist/lib/Analysis/DependenceAnalysis.cpp vendor/llvm/dist/lib/Analysis/IPA/CallGraphSCCPass.cpp vendor/llvm/dist/lib/Analysis/IPA/GlobalsModRef.cpp vendor/llvm/dist/lib/Analysis/IPA/InlineCost.cpp vendor/llvm/dist/lib/Analysis/IVUsers.cpp vendor/llvm/dist/lib/Analysis/InstructionSimplify.cpp vendor/llvm/dist/lib/Analysis/LLVMBuild.txt vendor/llvm/dist/lib/Analysis/LazyValueInfo.cpp vendor/llvm/dist/lib/Analysis/LibCallAliasAnalysis.cpp vendor/llvm/dist/lib/Analysis/LibCallSemantics.cpp vendor/llvm/dist/lib/Analysis/Lint.cpp vendor/llvm/dist/lib/Analysis/Loads.cpp vendor/llvm/dist/lib/Analysis/LoopInfo.cpp vendor/llvm/dist/lib/Analysis/LoopPass.cpp vendor/llvm/dist/lib/Analysis/MemDepPrinter.cpp vendor/llvm/dist/lib/Analysis/MemoryBuiltins.cpp vendor/llvm/dist/lib/Analysis/MemoryDependenceAnalysis.cpp vendor/llvm/dist/lib/Analysis/ModuleDebugInfoPrinter.cpp vendor/llvm/dist/lib/Analysis/NoAliasAnalysis.cpp vendor/llvm/dist/lib/Analysis/PHITransAddr.cpp vendor/llvm/dist/lib/Analysis/RegionPass.cpp vendor/llvm/dist/lib/Analysis/RegionPrinter.cpp vendor/llvm/dist/lib/Analysis/ScalarEvolution.cpp vendor/llvm/dist/lib/Analysis/ScalarEvolutionAliasAnalysis.cpp vendor/llvm/dist/lib/Analysis/ScalarEvolutionExpander.cpp vendor/llvm/dist/lib/Analysis/ScopedNoAliasAA.cpp vendor/llvm/dist/lib/Analysis/TargetTransformInfo.cpp vendor/llvm/dist/lib/Analysis/TypeBasedAliasAnalysis.cpp vendor/llvm/dist/lib/Analysis/ValueTracking.cpp vendor/llvm/dist/lib/AsmParser/CMakeLists.txt vendor/llvm/dist/lib/AsmParser/LLLexer.cpp vendor/llvm/dist/lib/AsmParser/LLLexer.h vendor/llvm/dist/lib/AsmParser/LLParser.cpp vendor/llvm/dist/lib/AsmParser/LLParser.h vendor/llvm/dist/lib/AsmParser/LLToken.h vendor/llvm/dist/lib/AsmParser/Parser.cpp vendor/llvm/dist/lib/Bitcode/Reader/BitcodeReader.cpp vendor/llvm/dist/lib/Bitcode/Reader/BitstreamReader.cpp vendor/llvm/dist/lib/Bitcode/Reader/CMakeLists.txt vendor/llvm/dist/lib/Bitcode/Writer/BitcodeWriter.cpp vendor/llvm/dist/lib/Bitcode/Writer/BitcodeWriterPass.cpp vendor/llvm/dist/lib/Bitcode/Writer/ValueEnumerator.cpp vendor/llvm/dist/lib/Bitcode/Writer/ValueEnumerator.h vendor/llvm/dist/lib/CMakeLists.txt vendor/llvm/dist/lib/CodeGen/AggressiveAntiDepBreaker.cpp vendor/llvm/dist/lib/CodeGen/AggressiveAntiDepBreaker.h vendor/llvm/dist/lib/CodeGen/Analysis.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/ARMException.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/AddressPool.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/AddressPool.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/AsmPrinter.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/AsmPrinterHandler.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/ByteStreamer.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/DIE.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/DIEHash.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/DbgValueHistoryCalculator.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/DbgValueHistoryCalculator.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/DebugLocEntry.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfAccelTable.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfAccelTable.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfCFIException.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfDebug.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfDebug.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfException.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfExpression.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfExpression.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfFile.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfFile.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfStringPool.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfUnit.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfUnit.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/EHStreamer.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/EHStreamer.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/ErlangGCPrinter.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/OcamlGCPrinter.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/Win64Exception.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/Win64Exception.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/WinCodeViewLineTables.h vendor/llvm/dist/lib/CodeGen/AtomicExpandPass.cpp vendor/llvm/dist/lib/CodeGen/BasicTargetTransformInfo.cpp vendor/llvm/dist/lib/CodeGen/BranchFolding.cpp vendor/llvm/dist/lib/CodeGen/CMakeLists.txt vendor/llvm/dist/lib/CodeGen/CodeGen.cpp vendor/llvm/dist/lib/CodeGen/CodeGenPrepare.cpp vendor/llvm/dist/lib/CodeGen/CriticalAntiDepBreaker.h vendor/llvm/dist/lib/CodeGen/DeadMachineInstructionElim.cpp vendor/llvm/dist/lib/CodeGen/DwarfEHPrepare.cpp vendor/llvm/dist/lib/CodeGen/EarlyIfConversion.cpp vendor/llvm/dist/lib/CodeGen/ErlangGC.cpp vendor/llvm/dist/lib/CodeGen/ExecutionDepsFix.cpp vendor/llvm/dist/lib/CodeGen/GCMetadata.cpp vendor/llvm/dist/lib/CodeGen/GCMetadataPrinter.cpp vendor/llvm/dist/lib/CodeGen/GCStrategy.cpp vendor/llvm/dist/lib/CodeGen/GlobalMerge.cpp vendor/llvm/dist/lib/CodeGen/IfConversion.cpp vendor/llvm/dist/lib/CodeGen/InlineSpiller.cpp vendor/llvm/dist/lib/CodeGen/InterferenceCache.cpp vendor/llvm/dist/lib/CodeGen/InterferenceCache.h vendor/llvm/dist/lib/CodeGen/LLVMTargetMachine.cpp vendor/llvm/dist/lib/CodeGen/LatencyPriorityQueue.cpp vendor/llvm/dist/lib/CodeGen/LexicalScopes.cpp vendor/llvm/dist/lib/CodeGen/LiveDebugVariables.cpp vendor/llvm/dist/lib/CodeGen/LiveDebugVariables.h vendor/llvm/dist/lib/CodeGen/LiveInterval.cpp vendor/llvm/dist/lib/CodeGen/LiveIntervalAnalysis.cpp vendor/llvm/dist/lib/CodeGen/LivePhysRegs.cpp vendor/llvm/dist/lib/CodeGen/LiveRangeCalc.cpp vendor/llvm/dist/lib/CodeGen/LiveRangeCalc.h vendor/llvm/dist/lib/CodeGen/LiveRangeEdit.cpp vendor/llvm/dist/lib/CodeGen/LiveStackAnalysis.cpp vendor/llvm/dist/lib/CodeGen/LiveVariables.cpp vendor/llvm/dist/lib/CodeGen/LocalStackSlotAllocation.cpp vendor/llvm/dist/lib/CodeGen/MachineBasicBlock.cpp vendor/llvm/dist/lib/CodeGen/MachineBlockPlacement.cpp vendor/llvm/dist/lib/CodeGen/MachineCSE.cpp vendor/llvm/dist/lib/CodeGen/MachineCombiner.cpp vendor/llvm/dist/lib/CodeGen/MachineCopyPropagation.cpp vendor/llvm/dist/lib/CodeGen/MachineDominators.cpp vendor/llvm/dist/lib/CodeGen/MachineFunction.cpp vendor/llvm/dist/lib/CodeGen/MachineFunctionPass.cpp vendor/llvm/dist/lib/CodeGen/MachineInstr.cpp vendor/llvm/dist/lib/CodeGen/MachineLICM.cpp vendor/llvm/dist/lib/CodeGen/MachineLoopInfo.cpp vendor/llvm/dist/lib/CodeGen/MachineModuleInfo.cpp vendor/llvm/dist/lib/CodeGen/MachineModuleInfoImpls.cpp vendor/llvm/dist/lib/CodeGen/MachineRegisterInfo.cpp vendor/llvm/dist/lib/CodeGen/MachineScheduler.cpp vendor/llvm/dist/lib/CodeGen/MachineSink.cpp vendor/llvm/dist/lib/CodeGen/MachineTraceMetrics.cpp vendor/llvm/dist/lib/CodeGen/MachineVerifier.cpp vendor/llvm/dist/lib/CodeGen/OcamlGC.cpp vendor/llvm/dist/lib/CodeGen/PHIElimination.cpp vendor/llvm/dist/lib/CodeGen/Passes.cpp vendor/llvm/dist/lib/CodeGen/PeepholeOptimizer.cpp vendor/llvm/dist/lib/CodeGen/PostRASchedulerList.cpp vendor/llvm/dist/lib/CodeGen/PrologEpilogInserter.cpp vendor/llvm/dist/lib/CodeGen/RegAllocBase.cpp vendor/llvm/dist/lib/CodeGen/RegAllocFast.cpp vendor/llvm/dist/lib/CodeGen/RegAllocGreedy.cpp vendor/llvm/dist/lib/CodeGen/RegAllocPBQP.cpp vendor/llvm/dist/lib/CodeGen/RegisterClassInfo.cpp vendor/llvm/dist/lib/CodeGen/RegisterCoalescer.cpp vendor/llvm/dist/lib/CodeGen/RegisterPressure.cpp vendor/llvm/dist/lib/CodeGen/ScheduleDAG.cpp vendor/llvm/dist/lib/CodeGen/ScheduleDAGInstrs.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/DAGCombiner.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/FastISel.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/InstrEmitter.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeTypes.h vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/ResourcePriorityQueue.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/SDNodeDbgValue.h vendor/llvm/dist/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.h vendor/llvm/dist/lib/CodeGen/SelectionDAG/ScheduleDAGVLIW.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAG.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/StatepointLowering.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/StatepointLowering.h vendor/llvm/dist/lib/CodeGen/SelectionDAG/TargetLowering.cpp vendor/llvm/dist/lib/CodeGen/ShadowStackGC.cpp vendor/llvm/dist/lib/CodeGen/SjLjEHPrepare.cpp vendor/llvm/dist/lib/CodeGen/SlotIndexes.cpp vendor/llvm/dist/lib/CodeGen/SpillPlacement.h vendor/llvm/dist/lib/CodeGen/SplitKit.cpp vendor/llvm/dist/lib/CodeGen/SplitKit.h vendor/llvm/dist/lib/CodeGen/StackColoring.cpp vendor/llvm/dist/lib/CodeGen/StackMapLivenessAnalysis.cpp vendor/llvm/dist/lib/CodeGen/StackMaps.cpp vendor/llvm/dist/lib/CodeGen/StackProtector.cpp vendor/llvm/dist/lib/CodeGen/StackSlotColoring.cpp vendor/llvm/dist/lib/CodeGen/StatepointExampleGC.cpp vendor/llvm/dist/lib/CodeGen/TailDuplication.cpp vendor/llvm/dist/lib/CodeGen/TargetFrameLoweringImpl.cpp vendor/llvm/dist/lib/CodeGen/TargetInstrInfo.cpp vendor/llvm/dist/lib/CodeGen/TargetLoweringBase.cpp vendor/llvm/dist/lib/CodeGen/TargetLoweringObjectFileImpl.cpp vendor/llvm/dist/lib/CodeGen/TargetOptionsImpl.cpp vendor/llvm/dist/lib/CodeGen/TargetSchedule.cpp vendor/llvm/dist/lib/CodeGen/TwoAddressInstructionPass.cpp vendor/llvm/dist/lib/CodeGen/UnreachableBlockElim.cpp vendor/llvm/dist/lib/CodeGen/VirtRegMap.cpp vendor/llvm/dist/lib/DebugInfo/CMakeLists.txt vendor/llvm/dist/lib/DebugInfo/LLVMBuild.txt vendor/llvm/dist/lib/DebugInfo/Makefile vendor/llvm/dist/lib/ExecutionEngine/CMakeLists.txt vendor/llvm/dist/lib/ExecutionEngine/ExecutionEngine.cpp vendor/llvm/dist/lib/ExecutionEngine/ExecutionEngineBindings.cpp vendor/llvm/dist/lib/ExecutionEngine/GDBRegistrationListener.cpp vendor/llvm/dist/lib/ExecutionEngine/IntelJITEvents/IntelJITEventListener.cpp vendor/llvm/dist/lib/ExecutionEngine/IntelJITEvents/LLVMBuild.txt vendor/llvm/dist/lib/ExecutionEngine/IntelJITEvents/jitprofiling.c vendor/llvm/dist/lib/ExecutionEngine/Interpreter/CMakeLists.txt vendor/llvm/dist/lib/ExecutionEngine/Interpreter/Execution.cpp vendor/llvm/dist/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp vendor/llvm/dist/lib/ExecutionEngine/Interpreter/Interpreter.h vendor/llvm/dist/lib/ExecutionEngine/LLVMBuild.txt vendor/llvm/dist/lib/ExecutionEngine/MCJIT/CMakeLists.txt vendor/llvm/dist/lib/ExecutionEngine/MCJIT/MCJIT.cpp vendor/llvm/dist/lib/ExecutionEngine/MCJIT/MCJIT.h vendor/llvm/dist/lib/ExecutionEngine/Makefile vendor/llvm/dist/lib/ExecutionEngine/OProfileJIT/OProfileJITEventListener.cpp vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/CMakeLists.txt vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldChecker.cpp vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldCheckerImpl.h vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.h vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.h vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOAArch64.h vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOARM.h vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOI386.h vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOX86_64.h vendor/llvm/dist/lib/ExecutionEngine/TargetSelect.cpp vendor/llvm/dist/lib/IR/AsmWriter.cpp vendor/llvm/dist/lib/IR/AttributeImpl.h vendor/llvm/dist/lib/IR/Attributes.cpp vendor/llvm/dist/lib/IR/AutoUpgrade.cpp vendor/llvm/dist/lib/IR/BasicBlock.cpp vendor/llvm/dist/lib/IR/CMakeLists.txt vendor/llvm/dist/lib/IR/ConstantFold.cpp vendor/llvm/dist/lib/IR/ConstantFold.h vendor/llvm/dist/lib/IR/ConstantRange.cpp vendor/llvm/dist/lib/IR/Constants.cpp vendor/llvm/dist/lib/IR/ConstantsContext.h vendor/llvm/dist/lib/IR/Core.cpp vendor/llvm/dist/lib/IR/DIBuilder.cpp vendor/llvm/dist/lib/IR/DataLayout.cpp vendor/llvm/dist/lib/IR/DebugInfo.cpp vendor/llvm/dist/lib/IR/DebugLoc.cpp vendor/llvm/dist/lib/IR/DiagnosticInfo.cpp vendor/llvm/dist/lib/IR/Dominators.cpp vendor/llvm/dist/lib/IR/Function.cpp vendor/llvm/dist/lib/IR/GCOV.cpp vendor/llvm/dist/lib/IR/Globals.cpp vendor/llvm/dist/lib/IR/IRBuilder.cpp vendor/llvm/dist/lib/IR/IRPrintingPasses.cpp vendor/llvm/dist/lib/IR/InlineAsm.cpp vendor/llvm/dist/lib/IR/Instruction.cpp vendor/llvm/dist/lib/IR/Instructions.cpp vendor/llvm/dist/lib/IR/LLVMContext.cpp vendor/llvm/dist/lib/IR/LLVMContextImpl.cpp vendor/llvm/dist/lib/IR/LLVMContextImpl.h vendor/llvm/dist/lib/IR/LegacyPassManager.cpp vendor/llvm/dist/lib/IR/MDBuilder.cpp vendor/llvm/dist/lib/IR/Mangler.cpp vendor/llvm/dist/lib/IR/Metadata.cpp vendor/llvm/dist/lib/IR/MetadataTracking.cpp vendor/llvm/dist/lib/IR/Module.cpp vendor/llvm/dist/lib/IR/Pass.cpp vendor/llvm/dist/lib/IR/Statepoint.cpp vendor/llvm/dist/lib/IR/Type.cpp vendor/llvm/dist/lib/IR/TypeFinder.cpp vendor/llvm/dist/lib/IR/Value.cpp vendor/llvm/dist/lib/IR/ValueSymbolTable.cpp vendor/llvm/dist/lib/IR/ValueTypes.cpp vendor/llvm/dist/lib/IR/Verifier.cpp vendor/llvm/dist/lib/IRReader/CMakeLists.txt vendor/llvm/dist/lib/LLVMBuild.txt vendor/llvm/dist/lib/LTO/CMakeLists.txt vendor/llvm/dist/lib/LTO/LLVMBuild.txt vendor/llvm/dist/lib/LTO/LTOCodeGenerator.cpp vendor/llvm/dist/lib/LTO/LTOModule.cpp vendor/llvm/dist/lib/LineEditor/CMakeLists.txt vendor/llvm/dist/lib/Linker/CMakeLists.txt vendor/llvm/dist/lib/Linker/LinkModules.cpp vendor/llvm/dist/lib/MC/CMakeLists.txt vendor/llvm/dist/lib/MC/ConstantPools.cpp vendor/llvm/dist/lib/MC/ELFObjectWriter.cpp vendor/llvm/dist/lib/MC/MCAsmInfo.cpp vendor/llvm/dist/lib/MC/MCAsmInfoCOFF.cpp vendor/llvm/dist/lib/MC/MCAsmInfoDarwin.cpp vendor/llvm/dist/lib/MC/MCAsmInfoELF.cpp vendor/llvm/dist/lib/MC/MCAsmStreamer.cpp vendor/llvm/dist/lib/MC/MCAssembler.cpp vendor/llvm/dist/lib/MC/MCCodeGenInfo.cpp vendor/llvm/dist/lib/MC/MCContext.cpp vendor/llvm/dist/lib/MC/MCDisassembler/Disassembler.cpp vendor/llvm/dist/lib/MC/MCDisassembler/MCExternalSymbolizer.cpp vendor/llvm/dist/lib/MC/MCDwarf.cpp vendor/llvm/dist/lib/MC/MCELF.cpp vendor/llvm/dist/lib/MC/MCELFObjectTargetWriter.cpp vendor/llvm/dist/lib/MC/MCELFStreamer.cpp vendor/llvm/dist/lib/MC/MCExpr.cpp vendor/llvm/dist/lib/MC/MCInst.cpp vendor/llvm/dist/lib/MC/MCInstPrinter.cpp vendor/llvm/dist/lib/MC/MCLinkerOptimizationHint.cpp vendor/llvm/dist/lib/MC/MCMachOStreamer.cpp vendor/llvm/dist/lib/MC/MCNullStreamer.cpp vendor/llvm/dist/lib/MC/MCObjectFileInfo.cpp vendor/llvm/dist/lib/MC/MCObjectStreamer.cpp vendor/llvm/dist/lib/MC/MCObjectWriter.cpp vendor/llvm/dist/lib/MC/MCParser/AsmLexer.cpp vendor/llvm/dist/lib/MC/MCParser/AsmParser.cpp vendor/llvm/dist/lib/MC/MCParser/CMakeLists.txt vendor/llvm/dist/lib/MC/MCParser/COFFAsmParser.cpp vendor/llvm/dist/lib/MC/MCParser/DarwinAsmParser.cpp vendor/llvm/dist/lib/MC/MCParser/ELFAsmParser.cpp vendor/llvm/dist/lib/MC/MCSection.cpp vendor/llvm/dist/lib/MC/MCSectionELF.cpp vendor/llvm/dist/lib/MC/MCSectionMachO.cpp vendor/llvm/dist/lib/MC/MCStreamer.cpp vendor/llvm/dist/lib/MC/MCSubtargetInfo.cpp vendor/llvm/dist/lib/MC/MCSymbol.cpp vendor/llvm/dist/lib/MC/MCValue.cpp vendor/llvm/dist/lib/MC/MCWin64EH.cpp vendor/llvm/dist/lib/MC/MCWinEH.cpp vendor/llvm/dist/lib/MC/MachObjectWriter.cpp vendor/llvm/dist/lib/MC/SubtargetFeature.cpp vendor/llvm/dist/lib/MC/WinCOFFObjectWriter.cpp vendor/llvm/dist/lib/MC/WinCOFFStreamer.cpp vendor/llvm/dist/lib/Makefile vendor/llvm/dist/lib/Object/Archive.cpp vendor/llvm/dist/lib/Object/Binary.cpp vendor/llvm/dist/lib/Object/CMakeLists.txt vendor/llvm/dist/lib/Object/COFFObjectFile.cpp vendor/llvm/dist/lib/Object/ELFYAML.cpp vendor/llvm/dist/lib/Object/IRObjectFile.cpp vendor/llvm/dist/lib/Object/MachOObjectFile.cpp vendor/llvm/dist/lib/Object/ObjectFile.cpp vendor/llvm/dist/lib/Object/RecordStreamer.cpp vendor/llvm/dist/lib/Object/RecordStreamer.h vendor/llvm/dist/lib/Object/SymbolicFile.cpp vendor/llvm/dist/lib/Option/Arg.cpp vendor/llvm/dist/lib/Option/ArgList.cpp vendor/llvm/dist/lib/Option/CMakeLists.txt vendor/llvm/dist/lib/Option/OptTable.cpp vendor/llvm/dist/lib/Option/Option.cpp vendor/llvm/dist/lib/ProfileData/CMakeLists.txt vendor/llvm/dist/lib/ProfileData/CoverageMapping.cpp vendor/llvm/dist/lib/ProfileData/CoverageMappingReader.cpp vendor/llvm/dist/lib/ProfileData/CoverageMappingWriter.cpp vendor/llvm/dist/lib/ProfileData/InstrProf.cpp vendor/llvm/dist/lib/ProfileData/InstrProfReader.cpp vendor/llvm/dist/lib/ProfileData/InstrProfWriter.cpp vendor/llvm/dist/lib/Support/APFloat.cpp vendor/llvm/dist/lib/Support/APInt.cpp vendor/llvm/dist/lib/Support/Allocator.cpp vendor/llvm/dist/lib/Support/CMakeLists.txt vendor/llvm/dist/lib/Support/CommandLine.cpp vendor/llvm/dist/lib/Support/Compression.cpp vendor/llvm/dist/lib/Support/ConvertUTFWrapper.cpp vendor/llvm/dist/lib/Support/CrashRecoveryContext.cpp vendor/llvm/dist/lib/Support/DAGDeltaAlgorithm.cpp vendor/llvm/dist/lib/Support/DataStream.cpp vendor/llvm/dist/lib/Support/Debug.cpp vendor/llvm/dist/lib/Support/Dwarf.cpp vendor/llvm/dist/lib/Support/FileOutputBuffer.cpp vendor/llvm/dist/lib/Support/FoldingSet.cpp vendor/llvm/dist/lib/Support/FormattedStream.cpp vendor/llvm/dist/lib/Support/GraphWriter.cpp vendor/llvm/dist/lib/Support/Host.cpp vendor/llvm/dist/lib/Support/LockFileManager.cpp vendor/llvm/dist/lib/Support/MemoryBuffer.cpp vendor/llvm/dist/lib/Support/Path.cpp vendor/llvm/dist/lib/Support/PrettyStackTrace.cpp vendor/llvm/dist/lib/Support/Process.cpp vendor/llvm/dist/lib/Support/Program.cpp vendor/llvm/dist/lib/Support/RandomNumberGenerator.cpp vendor/llvm/dist/lib/Support/Regex.cpp vendor/llvm/dist/lib/Support/ScaledNumber.cpp vendor/llvm/dist/lib/Support/SmallPtrSet.cpp vendor/llvm/dist/lib/Support/SourceMgr.cpp vendor/llvm/dist/lib/Support/SpecialCaseList.cpp vendor/llvm/dist/lib/Support/StreamingMemoryObject.cpp vendor/llvm/dist/lib/Support/StringExtras.cpp vendor/llvm/dist/lib/Support/StringMap.cpp vendor/llvm/dist/lib/Support/SystemUtils.cpp vendor/llvm/dist/lib/Support/TargetRegistry.cpp vendor/llvm/dist/lib/Support/Timer.cpp vendor/llvm/dist/lib/Support/Triple.cpp vendor/llvm/dist/lib/Support/Twine.cpp vendor/llvm/dist/lib/Support/Unix/Host.inc vendor/llvm/dist/lib/Support/Unix/Process.inc vendor/llvm/dist/lib/Support/Unix/Program.inc vendor/llvm/dist/lib/Support/Unix/Signals.inc vendor/llvm/dist/lib/Support/Valgrind.cpp vendor/llvm/dist/lib/Support/Windows/Path.inc vendor/llvm/dist/lib/Support/Windows/Process.inc vendor/llvm/dist/lib/Support/Windows/Program.inc vendor/llvm/dist/lib/Support/Windows/Signals.inc vendor/llvm/dist/lib/Support/Windows/TimeValue.inc vendor/llvm/dist/lib/Support/Windows/WindowsSupport.h vendor/llvm/dist/lib/Support/YAMLParser.cpp vendor/llvm/dist/lib/Support/YAMLTraits.cpp vendor/llvm/dist/lib/Support/raw_ostream.cpp vendor/llvm/dist/lib/Support/regcomp.c vendor/llvm/dist/lib/TableGen/CMakeLists.txt vendor/llvm/dist/lib/TableGen/Error.cpp vendor/llvm/dist/lib/TableGen/Main.cpp vendor/llvm/dist/lib/TableGen/Record.cpp vendor/llvm/dist/lib/TableGen/SetTheory.cpp vendor/llvm/dist/lib/TableGen/TGLexer.h vendor/llvm/dist/lib/TableGen/TGParser.cpp vendor/llvm/dist/lib/TableGen/TGParser.h vendor/llvm/dist/lib/TableGen/TableGenBackend.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64.h vendor/llvm/dist/lib/Target/AArch64/AArch64.td vendor/llvm/dist/lib/Target/AArch64/AArch64A53Fix835769.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64A57FPLoadBalancing.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64AddressTypePromotion.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64AdvSIMDScalarPass.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64AsmPrinter.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64BranchRelaxation.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64CallingConvention.h vendor/llvm/dist/lib/Target/AArch64/AArch64CallingConvention.td vendor/llvm/dist/lib/Target/AArch64/AArch64CleanupLocalDynamicTLSPass.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64CollectLOH.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64ConditionOptimizer.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64ConditionalCompares.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64FastISel.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64FrameLowering.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64FrameLowering.h vendor/llvm/dist/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64ISelLowering.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64ISelLowering.h vendor/llvm/dist/lib/Target/AArch64/AArch64InstrFormats.td vendor/llvm/dist/lib/Target/AArch64/AArch64InstrInfo.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64InstrInfo.h vendor/llvm/dist/lib/Target/AArch64/AArch64InstrInfo.td vendor/llvm/dist/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64MCInstLower.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64PBQPRegAlloc.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64PromoteConstant.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64RegisterInfo.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64RegisterInfo.h vendor/llvm/dist/lib/Target/AArch64/AArch64SchedA57.td vendor/llvm/dist/lib/Target/AArch64/AArch64SelectionDAGInfo.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64StorePairSuppress.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64Subtarget.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64Subtarget.h vendor/llvm/dist/lib/Target/AArch64/AArch64TargetMachine.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64TargetMachine.h vendor/llvm/dist/lib/Target/AArch64/AArch64TargetObjectFile.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64TargetObjectFile.h vendor/llvm/dist/lib/Target/AArch64/AArch64TargetTransformInfo.cpp vendor/llvm/dist/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp vendor/llvm/dist/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp vendor/llvm/dist/lib/Target/AArch64/Disassembler/AArch64ExternalSymbolizer.cpp vendor/llvm/dist/lib/Target/AArch64/InstPrinter/AArch64InstPrinter.cpp vendor/llvm/dist/lib/Target/AArch64/InstPrinter/AArch64InstPrinter.h vendor/llvm/dist/lib/Target/AArch64/MCTargetDesc/AArch64AddressingModes.h vendor/llvm/dist/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp vendor/llvm/dist/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp vendor/llvm/dist/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp vendor/llvm/dist/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.h vendor/llvm/dist/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp vendor/llvm/dist/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.h vendor/llvm/dist/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp vendor/llvm/dist/lib/Target/AArch64/MCTargetDesc/AArch64MCExpr.cpp vendor/llvm/dist/lib/Target/AArch64/MCTargetDesc/AArch64MCExpr.h vendor/llvm/dist/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.cpp vendor/llvm/dist/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.h vendor/llvm/dist/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp vendor/llvm/dist/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.cpp vendor/llvm/dist/lib/Target/AArch64/Utils/AArch64BaseInfo.cpp vendor/llvm/dist/lib/Target/AArch64/Utils/AArch64BaseInfo.h vendor/llvm/dist/lib/Target/ARM/A15SDOptimizer.cpp vendor/llvm/dist/lib/Target/ARM/ARM.h vendor/llvm/dist/lib/Target/ARM/ARM.td vendor/llvm/dist/lib/Target/ARM/ARMAsmPrinter.cpp vendor/llvm/dist/lib/Target/ARM/ARMAsmPrinter.h vendor/llvm/dist/lib/Target/ARM/ARMBaseInstrInfo.cpp vendor/llvm/dist/lib/Target/ARM/ARMBaseInstrInfo.h vendor/llvm/dist/lib/Target/ARM/ARMBaseRegisterInfo.cpp vendor/llvm/dist/lib/Target/ARM/ARMBaseRegisterInfo.h vendor/llvm/dist/lib/Target/ARM/ARMCallingConv.h vendor/llvm/dist/lib/Target/ARM/ARMCallingConv.td vendor/llvm/dist/lib/Target/ARM/ARMConstantIslandPass.cpp vendor/llvm/dist/lib/Target/ARM/ARMConstantPoolValue.h vendor/llvm/dist/lib/Target/ARM/ARMExpandPseudoInsts.cpp vendor/llvm/dist/lib/Target/ARM/ARMFastISel.cpp vendor/llvm/dist/lib/Target/ARM/ARMFrameLowering.cpp vendor/llvm/dist/lib/Target/ARM/ARMFrameLowering.h vendor/llvm/dist/lib/Target/ARM/ARMHazardRecognizer.cpp vendor/llvm/dist/lib/Target/ARM/ARMISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/ARM/ARMISelLowering.cpp vendor/llvm/dist/lib/Target/ARM/ARMISelLowering.h vendor/llvm/dist/lib/Target/ARM/ARMInstrFormats.td vendor/llvm/dist/lib/Target/ARM/ARMInstrInfo.cpp vendor/llvm/dist/lib/Target/ARM/ARMInstrInfo.td vendor/llvm/dist/lib/Target/ARM/ARMInstrNEON.td vendor/llvm/dist/lib/Target/ARM/ARMInstrThumb.td vendor/llvm/dist/lib/Target/ARM/ARMInstrThumb2.td vendor/llvm/dist/lib/Target/ARM/ARMInstrVFP.td vendor/llvm/dist/lib/Target/ARM/ARMLoadStoreOptimizer.cpp vendor/llvm/dist/lib/Target/ARM/ARMMCInstLower.cpp vendor/llvm/dist/lib/Target/ARM/ARMMachineFunctionInfo.cpp vendor/llvm/dist/lib/Target/ARM/ARMMachineFunctionInfo.h vendor/llvm/dist/lib/Target/ARM/ARMOptimizeBarriersPass.cpp vendor/llvm/dist/lib/Target/ARM/ARMRegisterInfo.cpp vendor/llvm/dist/lib/Target/ARM/ARMRegisterInfo.h vendor/llvm/dist/lib/Target/ARM/ARMRegisterInfo.td vendor/llvm/dist/lib/Target/ARM/ARMSelectionDAGInfo.cpp vendor/llvm/dist/lib/Target/ARM/ARMSelectionDAGInfo.h vendor/llvm/dist/lib/Target/ARM/ARMSubtarget.cpp vendor/llvm/dist/lib/Target/ARM/ARMSubtarget.h vendor/llvm/dist/lib/Target/ARM/ARMTargetMachine.cpp vendor/llvm/dist/lib/Target/ARM/ARMTargetMachine.h vendor/llvm/dist/lib/Target/ARM/ARMTargetObjectFile.cpp vendor/llvm/dist/lib/Target/ARM/ARMTargetTransformInfo.cpp vendor/llvm/dist/lib/Target/ARM/AsmParser/ARMAsmParser.cpp vendor/llvm/dist/lib/Target/ARM/CMakeLists.txt vendor/llvm/dist/lib/Target/ARM/Disassembler/ARMDisassembler.cpp vendor/llvm/dist/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp vendor/llvm/dist/lib/Target/ARM/InstPrinter/ARMInstPrinter.h vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.h vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMAsmBackendDarwin.h vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMAsmBackendELF.h vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMAsmBackendWinCOFF.h vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMMCExpr.cpp vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMMCExpr.h vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMTargetStreamer.cpp vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMUnwindOpAsm.cpp vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMWinCOFFObjectWriter.cpp vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMWinCOFFStreamer.cpp vendor/llvm/dist/lib/Target/ARM/MLxExpansionPass.cpp vendor/llvm/dist/lib/Target/ARM/README-Thumb.txt vendor/llvm/dist/lib/Target/ARM/TargetInfo/ARMTargetInfo.cpp vendor/llvm/dist/lib/Target/ARM/Thumb1FrameLowering.cpp vendor/llvm/dist/lib/Target/ARM/Thumb1FrameLowering.h vendor/llvm/dist/lib/Target/ARM/Thumb1InstrInfo.cpp vendor/llvm/dist/lib/Target/ARM/Thumb1InstrInfo.h vendor/llvm/dist/lib/Target/ARM/Thumb2ITBlockPass.cpp vendor/llvm/dist/lib/Target/ARM/Thumb2InstrInfo.cpp vendor/llvm/dist/lib/Target/ARM/Thumb2InstrInfo.h vendor/llvm/dist/lib/Target/ARM/Thumb2SizeReduction.cpp vendor/llvm/dist/lib/Target/CMakeLists.txt vendor/llvm/dist/lib/Target/CppBackend/CPPBackend.cpp vendor/llvm/dist/lib/Target/CppBackend/CPPTargetMachine.h vendor/llvm/dist/lib/Target/CppBackend/TargetInfo/CppBackendTargetInfo.cpp vendor/llvm/dist/lib/Target/Hexagon/CMakeLists.txt vendor/llvm/dist/lib/Target/Hexagon/Disassembler/HexagonDisassembler.cpp vendor/llvm/dist/lib/Target/Hexagon/Hexagon.h vendor/llvm/dist/lib/Target/Hexagon/Hexagon.td vendor/llvm/dist/lib/Target/Hexagon/HexagonAsmPrinter.cpp vendor/llvm/dist/lib/Target/Hexagon/HexagonAsmPrinter.h vendor/llvm/dist/lib/Target/Hexagon/HexagonCFGOptimizer.cpp vendor/llvm/dist/lib/Target/Hexagon/HexagonCopyToCombine.cpp vendor/llvm/dist/lib/Target/Hexagon/HexagonExpandPredSpillCode.cpp vendor/llvm/dist/lib/Target/Hexagon/HexagonFixupHwLoops.cpp vendor/llvm/dist/lib/Target/Hexagon/HexagonFrameLowering.cpp vendor/llvm/dist/lib/Target/Hexagon/HexagonFrameLowering.h vendor/llvm/dist/lib/Target/Hexagon/HexagonHardwareLoops.cpp vendor/llvm/dist/lib/Target/Hexagon/HexagonISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/Hexagon/HexagonISelLowering.cpp vendor/llvm/dist/lib/Target/Hexagon/HexagonISelLowering.h vendor/llvm/dist/lib/Target/Hexagon/HexagonInstrFormats.td vendor/llvm/dist/lib/Target/Hexagon/HexagonInstrFormatsV4.td vendor/llvm/dist/lib/Target/Hexagon/HexagonInstrInfo.cpp vendor/llvm/dist/lib/Target/Hexagon/HexagonInstrInfo.h vendor/llvm/dist/lib/Target/Hexagon/HexagonInstrInfo.td vendor/llvm/dist/lib/Target/Hexagon/HexagonInstrInfoV3.td vendor/llvm/dist/lib/Target/Hexagon/HexagonInstrInfoV4.td vendor/llvm/dist/lib/Target/Hexagon/HexagonInstrInfoV5.td vendor/llvm/dist/lib/Target/Hexagon/HexagonIntrinsics.td vendor/llvm/dist/lib/Target/Hexagon/HexagonIntrinsicsDerived.td vendor/llvm/dist/lib/Target/Hexagon/HexagonIntrinsicsV3.td vendor/llvm/dist/lib/Target/Hexagon/HexagonIntrinsicsV4.td vendor/llvm/dist/lib/Target/Hexagon/HexagonIntrinsicsV5.td vendor/llvm/dist/lib/Target/Hexagon/HexagonMCInstLower.cpp vendor/llvm/dist/lib/Target/Hexagon/HexagonMachineFunctionInfo.h vendor/llvm/dist/lib/Target/Hexagon/HexagonMachineScheduler.cpp vendor/llvm/dist/lib/Target/Hexagon/HexagonMachineScheduler.h vendor/llvm/dist/lib/Target/Hexagon/HexagonNewValueJump.cpp vendor/llvm/dist/lib/Target/Hexagon/HexagonOperands.td vendor/llvm/dist/lib/Target/Hexagon/HexagonPeephole.cpp vendor/llvm/dist/lib/Target/Hexagon/HexagonRegisterInfo.cpp vendor/llvm/dist/lib/Target/Hexagon/HexagonRegisterInfo.h vendor/llvm/dist/lib/Target/Hexagon/HexagonRegisterInfo.td vendor/llvm/dist/lib/Target/Hexagon/HexagonSplitConst32AndConst64.cpp vendor/llvm/dist/lib/Target/Hexagon/HexagonSubtarget.cpp vendor/llvm/dist/lib/Target/Hexagon/HexagonSubtarget.h vendor/llvm/dist/lib/Target/Hexagon/HexagonTargetMachine.cpp vendor/llvm/dist/lib/Target/Hexagon/HexagonTargetMachine.h vendor/llvm/dist/lib/Target/Hexagon/HexagonTargetObjectFile.cpp vendor/llvm/dist/lib/Target/Hexagon/HexagonTargetObjectFile.h vendor/llvm/dist/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/CMakeLists.txt vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonAsmBackend.cpp vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonBaseInfo.h vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonELFObjectWriter.cpp vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonInstPrinter.cpp vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonInstPrinter.h vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonMCCodeEmitter.cpp vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonMCCodeEmitter.h vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.cpp vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.h vendor/llvm/dist/lib/Target/Hexagon/Makefile vendor/llvm/dist/lib/Target/LLVMBuild.txt vendor/llvm/dist/lib/Target/MSP430/InstPrinter/MSP430InstPrinter.cpp vendor/llvm/dist/lib/Target/MSP430/InstPrinter/MSP430InstPrinter.h vendor/llvm/dist/lib/Target/MSP430/MCTargetDesc/MSP430MCTargetDesc.cpp vendor/llvm/dist/lib/Target/MSP430/MCTargetDesc/MSP430MCTargetDesc.h vendor/llvm/dist/lib/Target/MSP430/MSP430AsmPrinter.cpp vendor/llvm/dist/lib/Target/MSP430/MSP430FrameLowering.cpp vendor/llvm/dist/lib/Target/MSP430/MSP430FrameLowering.h vendor/llvm/dist/lib/Target/MSP430/MSP430ISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/MSP430/MSP430ISelLowering.cpp vendor/llvm/dist/lib/Target/MSP430/MSP430ISelLowering.h vendor/llvm/dist/lib/Target/MSP430/MSP430MCInstLower.cpp vendor/llvm/dist/lib/Target/MSP430/MSP430RegisterInfo.h vendor/llvm/dist/lib/Target/MSP430/MSP430Subtarget.cpp vendor/llvm/dist/lib/Target/MSP430/MSP430Subtarget.h vendor/llvm/dist/lib/Target/MSP430/MSP430TargetMachine.cpp vendor/llvm/dist/lib/Target/MSP430/MSP430TargetMachine.h vendor/llvm/dist/lib/Target/MSP430/README.txt vendor/llvm/dist/lib/Target/Mips/AsmParser/MipsAsmParser.cpp vendor/llvm/dist/lib/Target/Mips/Disassembler/MipsDisassembler.cpp vendor/llvm/dist/lib/Target/Mips/InstPrinter/MipsInstPrinter.cpp vendor/llvm/dist/lib/Target/Mips/InstPrinter/MipsInstPrinter.h vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsABIFlagsSection.cpp vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsABIFlagsSection.h vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsABIInfo.cpp vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsABIInfo.h vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.h vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.h vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsFixupKinds.h vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.h vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsMCExpr.h vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsMCNaCl.h vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.h vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsNaClELFStreamer.cpp vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsOptionRecord.cpp vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsTargetStreamer.cpp vendor/llvm/dist/lib/Target/Mips/MicroMipsInstrFPU.td vendor/llvm/dist/lib/Target/Mips/MicroMipsInstrFormats.td vendor/llvm/dist/lib/Target/Mips/MicroMipsInstrInfo.td vendor/llvm/dist/lib/Target/Mips/Mips.h vendor/llvm/dist/lib/Target/Mips/Mips.td vendor/llvm/dist/lib/Target/Mips/Mips16FrameLowering.cpp vendor/llvm/dist/lib/Target/Mips/Mips16FrameLowering.h vendor/llvm/dist/lib/Target/Mips/Mips16HardFloat.cpp vendor/llvm/dist/lib/Target/Mips/Mips16ISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/Mips/Mips16ISelLowering.cpp vendor/llvm/dist/lib/Target/Mips/Mips16InstrInfo.cpp vendor/llvm/dist/lib/Target/Mips/Mips16InstrInfo.h vendor/llvm/dist/lib/Target/Mips/Mips16RegisterInfo.cpp vendor/llvm/dist/lib/Target/Mips/Mips16RegisterInfo.h vendor/llvm/dist/lib/Target/Mips/Mips32r6InstrFormats.td vendor/llvm/dist/lib/Target/Mips/Mips32r6InstrInfo.td vendor/llvm/dist/lib/Target/Mips/Mips64InstrInfo.td vendor/llvm/dist/lib/Target/Mips/MipsAsmPrinter.cpp vendor/llvm/dist/lib/Target/Mips/MipsAsmPrinter.h vendor/llvm/dist/lib/Target/Mips/MipsCCState.h vendor/llvm/dist/lib/Target/Mips/MipsCallingConv.td vendor/llvm/dist/lib/Target/Mips/MipsCondMov.td vendor/llvm/dist/lib/Target/Mips/MipsConstantIslandPass.cpp vendor/llvm/dist/lib/Target/Mips/MipsDelaySlotFiller.cpp vendor/llvm/dist/lib/Target/Mips/MipsFastISel.cpp vendor/llvm/dist/lib/Target/Mips/MipsFrameLowering.cpp vendor/llvm/dist/lib/Target/Mips/MipsFrameLowering.h vendor/llvm/dist/lib/Target/Mips/MipsISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/Mips/MipsISelDAGToDAG.h vendor/llvm/dist/lib/Target/Mips/MipsISelLowering.cpp vendor/llvm/dist/lib/Target/Mips/MipsISelLowering.h vendor/llvm/dist/lib/Target/Mips/MipsInstrFPU.td vendor/llvm/dist/lib/Target/Mips/MipsInstrFormats.td vendor/llvm/dist/lib/Target/Mips/MipsInstrInfo.h vendor/llvm/dist/lib/Target/Mips/MipsInstrInfo.td vendor/llvm/dist/lib/Target/Mips/MipsLongBranch.cpp vendor/llvm/dist/lib/Target/Mips/MipsMCInstLower.cpp vendor/llvm/dist/lib/Target/Mips/MipsMSAInstrInfo.td vendor/llvm/dist/lib/Target/Mips/MipsMachineFunction.cpp vendor/llvm/dist/lib/Target/Mips/MipsMachineFunction.h vendor/llvm/dist/lib/Target/Mips/MipsModuleISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/Mips/MipsOptimizePICCall.cpp vendor/llvm/dist/lib/Target/Mips/MipsOptionRecord.h vendor/llvm/dist/lib/Target/Mips/MipsOs16.cpp vendor/llvm/dist/lib/Target/Mips/MipsRegisterInfo.cpp vendor/llvm/dist/lib/Target/Mips/MipsRegisterInfo.h vendor/llvm/dist/lib/Target/Mips/MipsRegisterInfo.td vendor/llvm/dist/lib/Target/Mips/MipsSEFrameLowering.cpp vendor/llvm/dist/lib/Target/Mips/MipsSEFrameLowering.h vendor/llvm/dist/lib/Target/Mips/MipsSEISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/Mips/MipsSEISelDAGToDAG.h vendor/llvm/dist/lib/Target/Mips/MipsSEISelLowering.cpp vendor/llvm/dist/lib/Target/Mips/MipsSEInstrInfo.cpp vendor/llvm/dist/lib/Target/Mips/MipsSEInstrInfo.h vendor/llvm/dist/lib/Target/Mips/MipsSERegisterInfo.cpp vendor/llvm/dist/lib/Target/Mips/MipsSERegisterInfo.h vendor/llvm/dist/lib/Target/Mips/MipsSchedule.td vendor/llvm/dist/lib/Target/Mips/MipsSubtarget.cpp vendor/llvm/dist/lib/Target/Mips/MipsSubtarget.h vendor/llvm/dist/lib/Target/Mips/MipsTargetMachine.cpp vendor/llvm/dist/lib/Target/Mips/MipsTargetMachine.h vendor/llvm/dist/lib/Target/Mips/MipsTargetObjectFile.cpp vendor/llvm/dist/lib/Target/Mips/MipsTargetObjectFile.h vendor/llvm/dist/lib/Target/Mips/MipsTargetStreamer.h vendor/llvm/dist/lib/Target/NVPTX/CMakeLists.txt vendor/llvm/dist/lib/Target/NVPTX/InstPrinter/NVPTXInstPrinter.cpp vendor/llvm/dist/lib/Target/NVPTX/InstPrinter/NVPTXInstPrinter.h vendor/llvm/dist/lib/Target/NVPTX/LLVMBuild.txt vendor/llvm/dist/lib/Target/NVPTX/MCTargetDesc/NVPTXMCAsmInfo.cpp vendor/llvm/dist/lib/Target/NVPTX/MCTargetDesc/NVPTXMCTargetDesc.cpp vendor/llvm/dist/lib/Target/NVPTX/MCTargetDesc/NVPTXMCTargetDesc.h vendor/llvm/dist/lib/Target/NVPTX/NVPTX.h vendor/llvm/dist/lib/Target/NVPTX/NVPTX.td vendor/llvm/dist/lib/Target/NVPTX/NVPTXAllocaHoisting.cpp vendor/llvm/dist/lib/Target/NVPTX/NVPTXAllocaHoisting.h vendor/llvm/dist/lib/Target/NVPTX/NVPTXAsmPrinter.cpp vendor/llvm/dist/lib/Target/NVPTX/NVPTXAsmPrinter.h vendor/llvm/dist/lib/Target/NVPTX/NVPTXAssignValidGlobalNames.cpp vendor/llvm/dist/lib/Target/NVPTX/NVPTXFavorNonGenericAddrSpaces.cpp vendor/llvm/dist/lib/Target/NVPTX/NVPTXFrameLowering.cpp vendor/llvm/dist/lib/Target/NVPTX/NVPTXFrameLowering.h vendor/llvm/dist/lib/Target/NVPTX/NVPTXGenericToNVVM.cpp vendor/llvm/dist/lib/Target/NVPTX/NVPTXISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/NVPTX/NVPTXISelDAGToDAG.h vendor/llvm/dist/lib/Target/NVPTX/NVPTXISelLowering.cpp vendor/llvm/dist/lib/Target/NVPTX/NVPTXISelLowering.h vendor/llvm/dist/lib/Target/NVPTX/NVPTXInstrInfo.cpp vendor/llvm/dist/lib/Target/NVPTX/NVPTXInstrInfo.h vendor/llvm/dist/lib/Target/NVPTX/NVPTXInstrInfo.td vendor/llvm/dist/lib/Target/NVPTX/NVPTXLowerAggrCopies.cpp vendor/llvm/dist/lib/Target/NVPTX/NVPTXLowerAggrCopies.h vendor/llvm/dist/lib/Target/NVPTX/NVPTXLowerStructArgs.cpp vendor/llvm/dist/lib/Target/NVPTX/NVPTXMCExpr.cpp vendor/llvm/dist/lib/Target/NVPTX/NVPTXMCExpr.h vendor/llvm/dist/lib/Target/NVPTX/NVPTXPrologEpilogPass.cpp vendor/llvm/dist/lib/Target/NVPTX/NVPTXRegisterInfo.cpp vendor/llvm/dist/lib/Target/NVPTX/NVPTXRegisterInfo.h vendor/llvm/dist/lib/Target/NVPTX/NVPTXReplaceImageHandles.cpp vendor/llvm/dist/lib/Target/NVPTX/NVPTXSection.h vendor/llvm/dist/lib/Target/NVPTX/NVPTXSubtarget.cpp vendor/llvm/dist/lib/Target/NVPTX/NVPTXSubtarget.h vendor/llvm/dist/lib/Target/NVPTX/NVPTXTargetMachine.cpp vendor/llvm/dist/lib/Target/NVPTX/NVPTXTargetMachine.h vendor/llvm/dist/lib/Target/NVPTX/NVPTXTargetObjectFile.h vendor/llvm/dist/lib/Target/NVPTX/NVPTXTargetTransformInfo.cpp vendor/llvm/dist/lib/Target/NVPTX/NVPTXUtilities.cpp vendor/llvm/dist/lib/Target/NVPTX/NVPTXVector.td vendor/llvm/dist/lib/Target/NVPTX/NVVMReflect.cpp vendor/llvm/dist/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp vendor/llvm/dist/lib/Target/PowerPC/CMakeLists.txt vendor/llvm/dist/lib/Target/PowerPC/Disassembler/PPCDisassembler.cpp vendor/llvm/dist/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp vendor/llvm/dist/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.h vendor/llvm/dist/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp vendor/llvm/dist/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp vendor/llvm/dist/lib/Target/PowerPC/MCTargetDesc/PPCMCAsmInfo.cpp vendor/llvm/dist/lib/Target/PowerPC/MCTargetDesc/PPCMCCodeEmitter.cpp vendor/llvm/dist/lib/Target/PowerPC/MCTargetDesc/PPCMCExpr.h vendor/llvm/dist/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp vendor/llvm/dist/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.h vendor/llvm/dist/lib/Target/PowerPC/MCTargetDesc/PPCMachObjectWriter.cpp vendor/llvm/dist/lib/Target/PowerPC/PPC.h vendor/llvm/dist/lib/Target/PowerPC/PPC.td vendor/llvm/dist/lib/Target/PowerPC/PPCAsmPrinter.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCCTRLoops.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCCallingConv.td vendor/llvm/dist/lib/Target/PowerPC/PPCFastISel.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCFrameLowering.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCFrameLowering.h vendor/llvm/dist/lib/Target/PowerPC/PPCHazardRecognizers.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCISelLowering.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCISelLowering.h vendor/llvm/dist/lib/Target/PowerPC/PPCInstr64Bit.td vendor/llvm/dist/lib/Target/PowerPC/PPCInstrAltivec.td vendor/llvm/dist/lib/Target/PowerPC/PPCInstrFormats.td vendor/llvm/dist/lib/Target/PowerPC/PPCInstrInfo.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCInstrInfo.h vendor/llvm/dist/lib/Target/PowerPC/PPCInstrInfo.td vendor/llvm/dist/lib/Target/PowerPC/PPCInstrVSX.td vendor/llvm/dist/lib/Target/PowerPC/PPCMCInstLower.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCMachineFunctionInfo.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCMachineFunctionInfo.h vendor/llvm/dist/lib/Target/PowerPC/PPCRegisterInfo.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCRegisterInfo.h vendor/llvm/dist/lib/Target/PowerPC/PPCRegisterInfo.td vendor/llvm/dist/lib/Target/PowerPC/PPCSchedule.td vendor/llvm/dist/lib/Target/PowerPC/PPCSchedule440.td vendor/llvm/dist/lib/Target/PowerPC/PPCScheduleA2.td vendor/llvm/dist/lib/Target/PowerPC/PPCScheduleE500mc.td vendor/llvm/dist/lib/Target/PowerPC/PPCScheduleE5500.td vendor/llvm/dist/lib/Target/PowerPC/PPCScheduleP7.td vendor/llvm/dist/lib/Target/PowerPC/PPCScheduleP8.td vendor/llvm/dist/lib/Target/PowerPC/PPCSubtarget.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCSubtarget.h vendor/llvm/dist/lib/Target/PowerPC/PPCTargetMachine.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCTargetMachine.h vendor/llvm/dist/lib/Target/PowerPC/PPCTargetObjectFile.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCTargetObjectFile.h vendor/llvm/dist/lib/Target/PowerPC/PPCTargetStreamer.h vendor/llvm/dist/lib/Target/PowerPC/PPCTargetTransformInfo.cpp vendor/llvm/dist/lib/Target/PowerPC/README.txt vendor/llvm/dist/lib/Target/PowerPC/README_ALTIVEC.txt vendor/llvm/dist/lib/Target/PowerPC/TargetInfo/PowerPCTargetInfo.cpp vendor/llvm/dist/lib/Target/R600/AMDGPU.h vendor/llvm/dist/lib/Target/R600/AMDGPU.td vendor/llvm/dist/lib/Target/R600/AMDGPUAsmPrinter.cpp vendor/llvm/dist/lib/Target/R600/AMDGPUAsmPrinter.h vendor/llvm/dist/lib/Target/R600/AMDGPUFrameLowering.cpp vendor/llvm/dist/lib/Target/R600/AMDGPUFrameLowering.h vendor/llvm/dist/lib/Target/R600/AMDGPUISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/R600/AMDGPUISelLowering.cpp vendor/llvm/dist/lib/Target/R600/AMDGPUISelLowering.h vendor/llvm/dist/lib/Target/R600/AMDGPUInstrInfo.cpp vendor/llvm/dist/lib/Target/R600/AMDGPUInstrInfo.h vendor/llvm/dist/lib/Target/R600/AMDGPUInstrInfo.td vendor/llvm/dist/lib/Target/R600/AMDGPUInstructions.td vendor/llvm/dist/lib/Target/R600/AMDGPUMCInstLower.cpp vendor/llvm/dist/lib/Target/R600/AMDGPUMachineFunction.cpp vendor/llvm/dist/lib/Target/R600/AMDGPUPromoteAlloca.cpp vendor/llvm/dist/lib/Target/R600/AMDGPURegisterInfo.cpp vendor/llvm/dist/lib/Target/R600/AMDGPURegisterInfo.h vendor/llvm/dist/lib/Target/R600/AMDGPUSubtarget.cpp vendor/llvm/dist/lib/Target/R600/AMDGPUSubtarget.h vendor/llvm/dist/lib/Target/R600/AMDGPUTargetMachine.cpp vendor/llvm/dist/lib/Target/R600/AMDGPUTargetMachine.h vendor/llvm/dist/lib/Target/R600/AMDGPUTargetTransformInfo.cpp vendor/llvm/dist/lib/Target/R600/AMDILCFGStructurizer.cpp vendor/llvm/dist/lib/Target/R600/AsmParser/AMDGPUAsmParser.cpp vendor/llvm/dist/lib/Target/R600/CIInstructions.td vendor/llvm/dist/lib/Target/R600/CMakeLists.txt vendor/llvm/dist/lib/Target/R600/CaymanInstructions.td vendor/llvm/dist/lib/Target/R600/EvergreenInstructions.td vendor/llvm/dist/lib/Target/R600/InstPrinter/AMDGPUInstPrinter.cpp vendor/llvm/dist/lib/Target/R600/InstPrinter/AMDGPUInstPrinter.h vendor/llvm/dist/lib/Target/R600/MCTargetDesc/AMDGPUAsmBackend.cpp vendor/llvm/dist/lib/Target/R600/MCTargetDesc/AMDGPUELFObjectWriter.cpp vendor/llvm/dist/lib/Target/R600/MCTargetDesc/AMDGPUMCTargetDesc.cpp vendor/llvm/dist/lib/Target/R600/MCTargetDesc/AMDGPUMCTargetDesc.h vendor/llvm/dist/lib/Target/R600/MCTargetDesc/R600MCCodeEmitter.cpp vendor/llvm/dist/lib/Target/R600/MCTargetDesc/SIMCCodeEmitter.cpp vendor/llvm/dist/lib/Target/R600/Processors.td vendor/llvm/dist/lib/Target/R600/R600ClauseMergePass.cpp vendor/llvm/dist/lib/Target/R600/R600ControlFlowFinalizer.cpp vendor/llvm/dist/lib/Target/R600/R600ISelLowering.cpp vendor/llvm/dist/lib/Target/R600/R600ISelLowering.h vendor/llvm/dist/lib/Target/R600/R600InstrInfo.cpp vendor/llvm/dist/lib/Target/R600/R600Instructions.td vendor/llvm/dist/lib/Target/R600/R600MachineScheduler.cpp vendor/llvm/dist/lib/Target/R600/R600OptimizeVectorRegisters.cpp vendor/llvm/dist/lib/Target/R600/R600Packetizer.cpp vendor/llvm/dist/lib/Target/R600/R600RegisterInfo.cpp vendor/llvm/dist/lib/Target/R600/R600RegisterInfo.h vendor/llvm/dist/lib/Target/R600/R600TextureIntrinsicsReplacer.cpp vendor/llvm/dist/lib/Target/R600/R700Instructions.td vendor/llvm/dist/lib/Target/R600/SIAnnotateControlFlow.cpp vendor/llvm/dist/lib/Target/R600/SIDefines.h vendor/llvm/dist/lib/Target/R600/SIFixSGPRCopies.cpp vendor/llvm/dist/lib/Target/R600/SIFixSGPRLiveRanges.cpp vendor/llvm/dist/lib/Target/R600/SIFoldOperands.cpp vendor/llvm/dist/lib/Target/R600/SIISelLowering.cpp vendor/llvm/dist/lib/Target/R600/SIISelLowering.h vendor/llvm/dist/lib/Target/R600/SIInsertWaits.cpp vendor/llvm/dist/lib/Target/R600/SIInstrFormats.td vendor/llvm/dist/lib/Target/R600/SIInstrInfo.cpp vendor/llvm/dist/lib/Target/R600/SIInstrInfo.h vendor/llvm/dist/lib/Target/R600/SIInstrInfo.td vendor/llvm/dist/lib/Target/R600/SIInstructions.td vendor/llvm/dist/lib/Target/R600/SILoadStoreOptimizer.cpp vendor/llvm/dist/lib/Target/R600/SIMachineFunctionInfo.cpp vendor/llvm/dist/lib/Target/R600/SIPrepareScratchRegs.cpp vendor/llvm/dist/lib/Target/R600/SIRegisterInfo.cpp vendor/llvm/dist/lib/Target/R600/SIRegisterInfo.h vendor/llvm/dist/lib/Target/R600/SIRegisterInfo.td vendor/llvm/dist/lib/Target/R600/SIShrinkInstructions.cpp vendor/llvm/dist/lib/Target/R600/SITypeRewriter.cpp vendor/llvm/dist/lib/Target/R600/VIInstrFormats.td vendor/llvm/dist/lib/Target/R600/VIInstructions.td vendor/llvm/dist/lib/Target/README.txt vendor/llvm/dist/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp vendor/llvm/dist/lib/Target/Sparc/DelaySlotFiller.cpp vendor/llvm/dist/lib/Target/Sparc/Disassembler/SparcDisassembler.cpp vendor/llvm/dist/lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp vendor/llvm/dist/lib/Target/Sparc/InstPrinter/SparcInstPrinter.h vendor/llvm/dist/lib/Target/Sparc/MCTargetDesc/SparcAsmBackend.cpp vendor/llvm/dist/lib/Target/Sparc/MCTargetDesc/SparcELFObjectWriter.cpp vendor/llvm/dist/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.cpp vendor/llvm/dist/lib/Target/Sparc/MCTargetDesc/SparcMCCodeEmitter.cpp vendor/llvm/dist/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.h vendor/llvm/dist/lib/Target/Sparc/MCTargetDesc/SparcMCTargetDesc.cpp vendor/llvm/dist/lib/Target/Sparc/MCTargetDesc/SparcMCTargetDesc.h vendor/llvm/dist/lib/Target/Sparc/Sparc.td vendor/llvm/dist/lib/Target/Sparc/SparcAsmPrinter.cpp vendor/llvm/dist/lib/Target/Sparc/SparcFrameLowering.cpp vendor/llvm/dist/lib/Target/Sparc/SparcFrameLowering.h vendor/llvm/dist/lib/Target/Sparc/SparcISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/Sparc/SparcISelLowering.cpp vendor/llvm/dist/lib/Target/Sparc/SparcISelLowering.h vendor/llvm/dist/lib/Target/Sparc/SparcInstr64Bit.td vendor/llvm/dist/lib/Target/Sparc/SparcInstrAliases.td vendor/llvm/dist/lib/Target/Sparc/SparcInstrFormats.td vendor/llvm/dist/lib/Target/Sparc/SparcInstrInfo.cpp vendor/llvm/dist/lib/Target/Sparc/SparcInstrInfo.h vendor/llvm/dist/lib/Target/Sparc/SparcInstrInfo.td vendor/llvm/dist/lib/Target/Sparc/SparcMCInstLower.cpp vendor/llvm/dist/lib/Target/Sparc/SparcRegisterInfo.cpp vendor/llvm/dist/lib/Target/Sparc/SparcRegisterInfo.h vendor/llvm/dist/lib/Target/Sparc/SparcRegisterInfo.td vendor/llvm/dist/lib/Target/Sparc/SparcSelectionDAGInfo.h vendor/llvm/dist/lib/Target/Sparc/SparcSubtarget.cpp vendor/llvm/dist/lib/Target/Sparc/SparcSubtarget.h vendor/llvm/dist/lib/Target/Sparc/SparcTargetMachine.cpp vendor/llvm/dist/lib/Target/Sparc/SparcTargetMachine.h vendor/llvm/dist/lib/Target/Sparc/TargetInfo/SparcTargetInfo.cpp vendor/llvm/dist/lib/Target/SystemZ/AsmParser/SystemZAsmParser.cpp vendor/llvm/dist/lib/Target/SystemZ/CMakeLists.txt vendor/llvm/dist/lib/Target/SystemZ/Disassembler/SystemZDisassembler.cpp vendor/llvm/dist/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.cpp vendor/llvm/dist/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.h vendor/llvm/dist/lib/Target/SystemZ/LLVMBuild.txt vendor/llvm/dist/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmBackend.cpp vendor/llvm/dist/lib/Target/SystemZ/MCTargetDesc/SystemZMCCodeEmitter.cpp vendor/llvm/dist/lib/Target/SystemZ/MCTargetDesc/SystemZMCFixups.h vendor/llvm/dist/lib/Target/SystemZ/MCTargetDesc/SystemZMCObjectWriter.cpp vendor/llvm/dist/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.cpp vendor/llvm/dist/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.h vendor/llvm/dist/lib/Target/SystemZ/SystemZ.h vendor/llvm/dist/lib/Target/SystemZ/SystemZ.td vendor/llvm/dist/lib/Target/SystemZ/SystemZAsmPrinter.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZAsmPrinter.h vendor/llvm/dist/lib/Target/SystemZ/SystemZCallingConv.h vendor/llvm/dist/lib/Target/SystemZ/SystemZCallingConv.td vendor/llvm/dist/lib/Target/SystemZ/SystemZConstantPoolValue.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZConstantPoolValue.h vendor/llvm/dist/lib/Target/SystemZ/SystemZElimCompare.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZFrameLowering.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZFrameLowering.h vendor/llvm/dist/lib/Target/SystemZ/SystemZISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZISelLowering.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZISelLowering.h vendor/llvm/dist/lib/Target/SystemZ/SystemZInstrFP.td vendor/llvm/dist/lib/Target/SystemZ/SystemZInstrFormats.td vendor/llvm/dist/lib/Target/SystemZ/SystemZInstrInfo.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZInstrInfo.h vendor/llvm/dist/lib/Target/SystemZ/SystemZInstrInfo.td vendor/llvm/dist/lib/Target/SystemZ/SystemZMCInstLower.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZMachineFunctionInfo.h vendor/llvm/dist/lib/Target/SystemZ/SystemZOperands.td vendor/llvm/dist/lib/Target/SystemZ/SystemZOperators.td vendor/llvm/dist/lib/Target/SystemZ/SystemZPatterns.td vendor/llvm/dist/lib/Target/SystemZ/SystemZProcessors.td vendor/llvm/dist/lib/Target/SystemZ/SystemZRegisterInfo.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZRegisterInfo.h vendor/llvm/dist/lib/Target/SystemZ/SystemZRegisterInfo.td vendor/llvm/dist/lib/Target/SystemZ/SystemZSelectionDAGInfo.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZShortenInst.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZSubtarget.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZSubtarget.h vendor/llvm/dist/lib/Target/SystemZ/SystemZTargetMachine.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZTargetMachine.h vendor/llvm/dist/lib/Target/Target.cpp vendor/llvm/dist/lib/Target/TargetLoweringObjectFile.cpp vendor/llvm/dist/lib/Target/TargetMachine.cpp vendor/llvm/dist/lib/Target/TargetMachineC.cpp vendor/llvm/dist/lib/Target/TargetSubtargetInfo.cpp vendor/llvm/dist/lib/Target/X86/AsmParser/X86AsmInstrumentation.cpp vendor/llvm/dist/lib/Target/X86/AsmParser/X86AsmParser.cpp vendor/llvm/dist/lib/Target/X86/AsmParser/X86AsmParserCommon.h vendor/llvm/dist/lib/Target/X86/AsmParser/X86Operand.h vendor/llvm/dist/lib/Target/X86/CMakeLists.txt vendor/llvm/dist/lib/Target/X86/Disassembler/X86Disassembler.cpp vendor/llvm/dist/lib/Target/X86/Disassembler/X86DisassemblerDecoder.cpp vendor/llvm/dist/lib/Target/X86/Disassembler/X86DisassemblerDecoderCommon.h vendor/llvm/dist/lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp vendor/llvm/dist/lib/Target/X86/InstPrinter/X86ATTInstPrinter.h vendor/llvm/dist/lib/Target/X86/InstPrinter/X86InstComments.cpp vendor/llvm/dist/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp vendor/llvm/dist/lib/Target/X86/InstPrinter/X86IntelInstPrinter.h vendor/llvm/dist/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp vendor/llvm/dist/lib/Target/X86/MCTargetDesc/X86BaseInfo.h vendor/llvm/dist/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp vendor/llvm/dist/lib/Target/X86/MCTargetDesc/X86ELFRelocationInfo.cpp vendor/llvm/dist/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp vendor/llvm/dist/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp vendor/llvm/dist/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.cpp vendor/llvm/dist/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h vendor/llvm/dist/lib/Target/X86/MCTargetDesc/X86MachORelocationInfo.cpp vendor/llvm/dist/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp vendor/llvm/dist/lib/Target/X86/MCTargetDesc/X86WinCOFFObjectWriter.cpp vendor/llvm/dist/lib/Target/X86/MCTargetDesc/X86WinCOFFStreamer.cpp vendor/llvm/dist/lib/Target/X86/README-SSE.txt vendor/llvm/dist/lib/Target/X86/Utils/X86ShuffleDecode.cpp vendor/llvm/dist/lib/Target/X86/Utils/X86ShuffleDecode.h vendor/llvm/dist/lib/Target/X86/X86.h vendor/llvm/dist/lib/Target/X86/X86.td vendor/llvm/dist/lib/Target/X86/X86AsmPrinter.cpp vendor/llvm/dist/lib/Target/X86/X86AsmPrinter.h vendor/llvm/dist/lib/Target/X86/X86CallingConv.td vendor/llvm/dist/lib/Target/X86/X86FastISel.cpp vendor/llvm/dist/lib/Target/X86/X86FixupLEAs.cpp vendor/llvm/dist/lib/Target/X86/X86FloatingPoint.cpp vendor/llvm/dist/lib/Target/X86/X86FrameLowering.cpp vendor/llvm/dist/lib/Target/X86/X86FrameLowering.h vendor/llvm/dist/lib/Target/X86/X86ISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/X86/X86ISelLowering.cpp vendor/llvm/dist/lib/Target/X86/X86ISelLowering.h vendor/llvm/dist/lib/Target/X86/X86InstrAVX512.td vendor/llvm/dist/lib/Target/X86/X86InstrArithmetic.td vendor/llvm/dist/lib/Target/X86/X86InstrCompiler.td vendor/llvm/dist/lib/Target/X86/X86InstrControl.td vendor/llvm/dist/lib/Target/X86/X86InstrExtension.td vendor/llvm/dist/lib/Target/X86/X86InstrFMA.td vendor/llvm/dist/lib/Target/X86/X86InstrFPStack.td vendor/llvm/dist/lib/Target/X86/X86InstrFormats.td vendor/llvm/dist/lib/Target/X86/X86InstrFragmentsSIMD.td vendor/llvm/dist/lib/Target/X86/X86InstrInfo.cpp vendor/llvm/dist/lib/Target/X86/X86InstrInfo.h vendor/llvm/dist/lib/Target/X86/X86InstrInfo.td vendor/llvm/dist/lib/Target/X86/X86InstrMMX.td vendor/llvm/dist/lib/Target/X86/X86InstrSGX.td vendor/llvm/dist/lib/Target/X86/X86InstrSSE.td vendor/llvm/dist/lib/Target/X86/X86InstrShiftRotate.td vendor/llvm/dist/lib/Target/X86/X86InstrSystem.td vendor/llvm/dist/lib/Target/X86/X86InstrXOP.td vendor/llvm/dist/lib/Target/X86/X86IntrinsicsInfo.h vendor/llvm/dist/lib/Target/X86/X86MCInstLower.cpp vendor/llvm/dist/lib/Target/X86/X86MachineFunctionInfo.h vendor/llvm/dist/lib/Target/X86/X86PadShortFunction.cpp vendor/llvm/dist/lib/Target/X86/X86RegisterInfo.cpp vendor/llvm/dist/lib/Target/X86/X86RegisterInfo.h vendor/llvm/dist/lib/Target/X86/X86RegisterInfo.td vendor/llvm/dist/lib/Target/X86/X86SchedHaswell.td vendor/llvm/dist/lib/Target/X86/X86SelectionDAGInfo.cpp vendor/llvm/dist/lib/Target/X86/X86Subtarget.cpp vendor/llvm/dist/lib/Target/X86/X86Subtarget.h vendor/llvm/dist/lib/Target/X86/X86TargetMachine.cpp vendor/llvm/dist/lib/Target/X86/X86TargetMachine.h vendor/llvm/dist/lib/Target/X86/X86TargetObjectFile.cpp vendor/llvm/dist/lib/Target/X86/X86TargetObjectFile.h vendor/llvm/dist/lib/Target/X86/X86TargetTransformInfo.cpp vendor/llvm/dist/lib/Target/X86/X86VZeroUpper.cpp vendor/llvm/dist/lib/Target/XCore/CMakeLists.txt vendor/llvm/dist/lib/Target/XCore/Disassembler/XCoreDisassembler.cpp vendor/llvm/dist/lib/Target/XCore/InstPrinter/XCoreInstPrinter.cpp vendor/llvm/dist/lib/Target/XCore/InstPrinter/XCoreInstPrinter.h vendor/llvm/dist/lib/Target/XCore/MCTargetDesc/XCoreMCTargetDesc.cpp vendor/llvm/dist/lib/Target/XCore/MCTargetDesc/XCoreMCTargetDesc.h vendor/llvm/dist/lib/Target/XCore/TargetInfo/XCoreTargetInfo.cpp vendor/llvm/dist/lib/Target/XCore/XCore.h vendor/llvm/dist/lib/Target/XCore/XCoreAsmPrinter.cpp vendor/llvm/dist/lib/Target/XCore/XCoreFrameLowering.cpp vendor/llvm/dist/lib/Target/XCore/XCoreFrameLowering.h vendor/llvm/dist/lib/Target/XCore/XCoreISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/XCore/XCoreISelLowering.cpp vendor/llvm/dist/lib/Target/XCore/XCoreISelLowering.h vendor/llvm/dist/lib/Target/XCore/XCoreInstrInfo.td vendor/llvm/dist/lib/Target/XCore/XCoreLowerThreadLocal.cpp vendor/llvm/dist/lib/Target/XCore/XCoreMCInstLower.cpp vendor/llvm/dist/lib/Target/XCore/XCoreRegisterInfo.cpp vendor/llvm/dist/lib/Target/XCore/XCoreRegisterInfo.h vendor/llvm/dist/lib/Target/XCore/XCoreSubtarget.cpp vendor/llvm/dist/lib/Target/XCore/XCoreSubtarget.h vendor/llvm/dist/lib/Target/XCore/XCoreTargetMachine.cpp vendor/llvm/dist/lib/Target/XCore/XCoreTargetMachine.h vendor/llvm/dist/lib/Target/XCore/XCoreTargetObjectFile.cpp vendor/llvm/dist/lib/Target/XCore/XCoreTargetObjectFile.h vendor/llvm/dist/lib/Target/XCore/XCoreTargetStreamer.h vendor/llvm/dist/lib/Transforms/IPO/ArgumentPromotion.cpp vendor/llvm/dist/lib/Transforms/IPO/CMakeLists.txt vendor/llvm/dist/lib/Transforms/IPO/ConstantMerge.cpp vendor/llvm/dist/lib/Transforms/IPO/DeadArgumentElimination.cpp vendor/llvm/dist/lib/Transforms/IPO/FunctionAttrs.cpp vendor/llvm/dist/lib/Transforms/IPO/GlobalDCE.cpp vendor/llvm/dist/lib/Transforms/IPO/GlobalOpt.cpp vendor/llvm/dist/lib/Transforms/IPO/IPO.cpp vendor/llvm/dist/lib/Transforms/IPO/Inliner.cpp vendor/llvm/dist/lib/Transforms/IPO/LLVMBuild.txt vendor/llvm/dist/lib/Transforms/IPO/LoopExtractor.cpp vendor/llvm/dist/lib/Transforms/IPO/MergeFunctions.cpp vendor/llvm/dist/lib/Transforms/IPO/PartialInlining.cpp vendor/llvm/dist/lib/Transforms/IPO/PassManagerBuilder.cpp vendor/llvm/dist/lib/Transforms/IPO/PruneEH.cpp vendor/llvm/dist/lib/Transforms/IPO/StripSymbols.cpp vendor/llvm/dist/lib/Transforms/InstCombine/CMakeLists.txt vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineAddSub.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineCalls.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineCasts.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineCompares.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombinePHI.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineSelect.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineShifts.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineVectorOps.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstructionCombining.cpp vendor/llvm/dist/lib/Transforms/InstCombine/LLVMBuild.txt vendor/llvm/dist/lib/Transforms/Instrumentation/AddressSanitizer.cpp vendor/llvm/dist/lib/Transforms/Instrumentation/BoundsChecking.cpp vendor/llvm/dist/lib/Transforms/Instrumentation/CMakeLists.txt vendor/llvm/dist/lib/Transforms/Instrumentation/DataFlowSanitizer.cpp vendor/llvm/dist/lib/Transforms/Instrumentation/GCOVProfiling.cpp vendor/llvm/dist/lib/Transforms/Instrumentation/InstrProfiling.cpp vendor/llvm/dist/lib/Transforms/Instrumentation/LLVMBuild.txt vendor/llvm/dist/lib/Transforms/Instrumentation/MemorySanitizer.cpp vendor/llvm/dist/lib/Transforms/Instrumentation/SanitizerCoverage.cpp vendor/llvm/dist/lib/Transforms/Instrumentation/ThreadSanitizer.cpp vendor/llvm/dist/lib/Transforms/ObjCARC/ARCRuntimeEntryPoints.h vendor/llvm/dist/lib/Transforms/ObjCARC/CMakeLists.txt vendor/llvm/dist/lib/Transforms/ObjCARC/DependencyAnalysis.cpp vendor/llvm/dist/lib/Transforms/ObjCARC/DependencyAnalysis.h vendor/llvm/dist/lib/Transforms/ObjCARC/ObjCARC.h vendor/llvm/dist/lib/Transforms/ObjCARC/ObjCARCAPElim.cpp vendor/llvm/dist/lib/Transforms/ObjCARC/ObjCARCAliasAnalysis.cpp vendor/llvm/dist/lib/Transforms/ObjCARC/ObjCARCAliasAnalysis.h vendor/llvm/dist/lib/Transforms/ObjCARC/ObjCARCContract.cpp vendor/llvm/dist/lib/Transforms/ObjCARC/ObjCARCExpand.cpp vendor/llvm/dist/lib/Transforms/ObjCARC/ObjCARCOpts.cpp vendor/llvm/dist/lib/Transforms/ObjCARC/ProvenanceAnalysis.cpp vendor/llvm/dist/lib/Transforms/ObjCARC/ProvenanceAnalysis.h vendor/llvm/dist/lib/Transforms/ObjCARC/ProvenanceAnalysisEvaluator.cpp vendor/llvm/dist/lib/Transforms/Scalar/ADCE.cpp vendor/llvm/dist/lib/Transforms/Scalar/AlignmentFromAssumptions.cpp vendor/llvm/dist/lib/Transforms/Scalar/CMakeLists.txt vendor/llvm/dist/lib/Transforms/Scalar/ConstantHoisting.cpp vendor/llvm/dist/lib/Transforms/Scalar/ConstantProp.cpp vendor/llvm/dist/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp vendor/llvm/dist/lib/Transforms/Scalar/DCE.cpp vendor/llvm/dist/lib/Transforms/Scalar/DeadStoreElimination.cpp vendor/llvm/dist/lib/Transforms/Scalar/EarlyCSE.cpp vendor/llvm/dist/lib/Transforms/Scalar/GVN.cpp vendor/llvm/dist/lib/Transforms/Scalar/IndVarSimplify.cpp vendor/llvm/dist/lib/Transforms/Scalar/JumpThreading.cpp vendor/llvm/dist/lib/Transforms/Scalar/LICM.cpp vendor/llvm/dist/lib/Transforms/Scalar/LLVMBuild.txt vendor/llvm/dist/lib/Transforms/Scalar/LoadCombine.cpp vendor/llvm/dist/lib/Transforms/Scalar/LoopDeletion.cpp vendor/llvm/dist/lib/Transforms/Scalar/LoopIdiomRecognize.cpp vendor/llvm/dist/lib/Transforms/Scalar/LoopInstSimplify.cpp vendor/llvm/dist/lib/Transforms/Scalar/LoopRerollPass.cpp vendor/llvm/dist/lib/Transforms/Scalar/LoopRotation.cpp vendor/llvm/dist/lib/Transforms/Scalar/LoopStrengthReduce.cpp vendor/llvm/dist/lib/Transforms/Scalar/LoopUnrollPass.cpp vendor/llvm/dist/lib/Transforms/Scalar/LoopUnswitch.cpp vendor/llvm/dist/lib/Transforms/Scalar/MemCpyOptimizer.cpp vendor/llvm/dist/lib/Transforms/Scalar/MergedLoadStoreMotion.cpp vendor/llvm/dist/lib/Transforms/Scalar/PartiallyInlineLibCalls.cpp vendor/llvm/dist/lib/Transforms/Scalar/Reassociate.cpp vendor/llvm/dist/lib/Transforms/Scalar/SCCP.cpp vendor/llvm/dist/lib/Transforms/Scalar/SROA.cpp vendor/llvm/dist/lib/Transforms/Scalar/SampleProfile.cpp vendor/llvm/dist/lib/Transforms/Scalar/Scalar.cpp vendor/llvm/dist/lib/Transforms/Scalar/ScalarReplAggregates.cpp vendor/llvm/dist/lib/Transforms/Scalar/Scalarizer.cpp vendor/llvm/dist/lib/Transforms/Scalar/SeparateConstOffsetFromGEP.cpp vendor/llvm/dist/lib/Transforms/Scalar/SimplifyCFGPass.cpp vendor/llvm/dist/lib/Transforms/Scalar/Sink.cpp vendor/llvm/dist/lib/Transforms/Scalar/StructurizeCFG.cpp vendor/llvm/dist/lib/Transforms/Scalar/TailRecursionElimination.cpp vendor/llvm/dist/lib/Transforms/Utils/ASanStackFrameLayout.cpp vendor/llvm/dist/lib/Transforms/Utils/AddDiscriminators.cpp vendor/llvm/dist/lib/Transforms/Utils/BasicBlockUtils.cpp vendor/llvm/dist/lib/Transforms/Utils/BreakCriticalEdges.cpp vendor/llvm/dist/lib/Transforms/Utils/BuildLibCalls.cpp vendor/llvm/dist/lib/Transforms/Utils/CMakeLists.txt vendor/llvm/dist/lib/Transforms/Utils/CloneFunction.cpp vendor/llvm/dist/lib/Transforms/Utils/CloneModule.cpp vendor/llvm/dist/lib/Transforms/Utils/CodeExtractor.cpp vendor/llvm/dist/lib/Transforms/Utils/CtorUtils.cpp vendor/llvm/dist/lib/Transforms/Utils/DemoteRegToStack.cpp vendor/llvm/dist/lib/Transforms/Utils/GlobalStatus.cpp vendor/llvm/dist/lib/Transforms/Utils/InlineFunction.cpp vendor/llvm/dist/lib/Transforms/Utils/IntegerDivision.cpp vendor/llvm/dist/lib/Transforms/Utils/LCSSA.cpp vendor/llvm/dist/lib/Transforms/Utils/LLVMBuild.txt vendor/llvm/dist/lib/Transforms/Utils/Local.cpp vendor/llvm/dist/lib/Transforms/Utils/LoopSimplify.cpp vendor/llvm/dist/lib/Transforms/Utils/LoopUnroll.cpp vendor/llvm/dist/lib/Transforms/Utils/LoopUnrollRuntime.cpp vendor/llvm/dist/lib/Transforms/Utils/LowerSwitch.cpp vendor/llvm/dist/lib/Transforms/Utils/ModuleUtils.cpp vendor/llvm/dist/lib/Transforms/Utils/PromoteMemoryToRegister.cpp vendor/llvm/dist/lib/Transforms/Utils/SSAUpdater.cpp vendor/llvm/dist/lib/Transforms/Utils/SimplifyCFG.cpp vendor/llvm/dist/lib/Transforms/Utils/SimplifyIndVar.cpp vendor/llvm/dist/lib/Transforms/Utils/SimplifyInstructions.cpp vendor/llvm/dist/lib/Transforms/Utils/SimplifyLibCalls.cpp vendor/llvm/dist/lib/Transforms/Utils/SymbolRewriter.cpp vendor/llvm/dist/lib/Transforms/Utils/ValueMapper.cpp vendor/llvm/dist/lib/Transforms/Vectorize/BBVectorize.cpp vendor/llvm/dist/lib/Transforms/Vectorize/CMakeLists.txt vendor/llvm/dist/lib/Transforms/Vectorize/LLVMBuild.txt vendor/llvm/dist/lib/Transforms/Vectorize/LoopVectorize.cpp vendor/llvm/dist/lib/Transforms/Vectorize/SLPVectorizer.cpp vendor/llvm/dist/lib/Transforms/Vectorize/Vectorize.cpp vendor/llvm/dist/projects/CMakeLists.txt vendor/llvm/dist/test/Analysis/BasicAA/2003-02-26-AccessSizeTest.ll vendor/llvm/dist/test/Analysis/BasicAA/2003-03-04-GEPCrash.ll vendor/llvm/dist/test/Analysis/BasicAA/2003-04-22-GEPProblem.ll vendor/llvm/dist/test/Analysis/BasicAA/2003-04-25-GEPCrash.ll vendor/llvm/dist/test/Analysis/BasicAA/2003-05-21-GEP-Problem.ll vendor/llvm/dist/test/Analysis/BasicAA/2003-06-01-AliasCrash.ll vendor/llvm/dist/test/Analysis/BasicAA/2003-07-03-BasicAACrash.ll vendor/llvm/dist/test/Analysis/BasicAA/2003-09-19-LocalArgument.ll vendor/llvm/dist/test/Analysis/BasicAA/2003-11-04-SimpleCases.ll vendor/llvm/dist/test/Analysis/BasicAA/2003-12-11-ConstExprGEP.ll vendor/llvm/dist/test/Analysis/BasicAA/2004-07-28-MustAliasbug.ll vendor/llvm/dist/test/Analysis/BasicAA/2006-03-03-BadArraySubscript.ll vendor/llvm/dist/test/Analysis/BasicAA/2006-11-03-BasicAAVectorCrash.ll vendor/llvm/dist/test/Analysis/BasicAA/2007-01-13-BasePointerBadNoAlias.ll vendor/llvm/dist/test/Analysis/BasicAA/2007-08-01-NoAliasAndGEP.ll vendor/llvm/dist/test/Analysis/BasicAA/2007-08-05-GetOverloadedModRef.ll vendor/llvm/dist/test/Analysis/BasicAA/2007-10-24-ArgumentsGlobals.ll vendor/llvm/dist/test/Analysis/BasicAA/2007-11-05-SizeCrash.ll vendor/llvm/dist/test/Analysis/BasicAA/2007-12-08-OutOfBoundsCrash.ll vendor/llvm/dist/test/Analysis/BasicAA/2008-04-15-Byval.ll vendor/llvm/dist/test/Analysis/BasicAA/2008-06-02-GEPTailCrash.ll vendor/llvm/dist/test/Analysis/BasicAA/2008-11-23-NoaliasRet.ll vendor/llvm/dist/test/Analysis/BasicAA/2009-03-04-GEPNoalias.ll vendor/llvm/dist/test/Analysis/BasicAA/2009-10-13-AtomicModRef.ll vendor/llvm/dist/test/Analysis/BasicAA/2009-10-13-GEP-BaseNoAlias.ll vendor/llvm/dist/test/Analysis/BasicAA/2010-09-15-GEP-SignedArithmetic.ll vendor/llvm/dist/test/Analysis/BasicAA/2014-03-18-Maxlookup-reached.ll vendor/llvm/dist/test/Analysis/BasicAA/aligned-overread.ll vendor/llvm/dist/test/Analysis/BasicAA/args-rets-allocas-loads.ll vendor/llvm/dist/test/Analysis/BasicAA/byval.ll vendor/llvm/dist/test/Analysis/BasicAA/cas.ll vendor/llvm/dist/test/Analysis/BasicAA/constant-over-index.ll vendor/llvm/dist/test/Analysis/BasicAA/cs-cs.ll vendor/llvm/dist/test/Analysis/BasicAA/dag.ll vendor/llvm/dist/test/Analysis/BasicAA/featuretest.ll vendor/llvm/dist/test/Analysis/BasicAA/full-store-partial-alias.ll vendor/llvm/dist/test/Analysis/BasicAA/gcsetest.ll vendor/llvm/dist/test/Analysis/BasicAA/gep-alias.ll vendor/llvm/dist/test/Analysis/BasicAA/global-size.ll vendor/llvm/dist/test/Analysis/BasicAA/intrinsics.ll vendor/llvm/dist/test/Analysis/BasicAA/invariant_load.ll vendor/llvm/dist/test/Analysis/BasicAA/memset_pattern.ll vendor/llvm/dist/test/Analysis/BasicAA/modref.ll vendor/llvm/dist/test/Analysis/BasicAA/must-and-partial.ll vendor/llvm/dist/test/Analysis/BasicAA/no-escape-call.ll vendor/llvm/dist/test/Analysis/BasicAA/noalias-bugs.ll vendor/llvm/dist/test/Analysis/BasicAA/noalias-geps.ll vendor/llvm/dist/test/Analysis/BasicAA/noalias-param.ll vendor/llvm/dist/test/Analysis/BasicAA/nocapture.ll vendor/llvm/dist/test/Analysis/BasicAA/phi-aa.ll vendor/llvm/dist/test/Analysis/BasicAA/phi-spec-order.ll vendor/llvm/dist/test/Analysis/BasicAA/phi-speculation.ll vendor/llvm/dist/test/Analysis/BasicAA/pr18573.ll vendor/llvm/dist/test/Analysis/BasicAA/store-promote.ll vendor/llvm/dist/test/Analysis/BasicAA/tailcall-modref.ll vendor/llvm/dist/test/Analysis/BasicAA/underlying-value.ll vendor/llvm/dist/test/Analysis/BasicAA/unreachable-block.ll vendor/llvm/dist/test/Analysis/BasicAA/zext.ll vendor/llvm/dist/test/Analysis/BlockFrequencyInfo/bad_input.ll vendor/llvm/dist/test/Analysis/BlockFrequencyInfo/basic.ll vendor/llvm/dist/test/Analysis/BranchProbabilityInfo/basic.ll vendor/llvm/dist/test/Analysis/BranchProbabilityInfo/loop.ll vendor/llvm/dist/test/Analysis/BranchProbabilityInfo/pr18705.ll vendor/llvm/dist/test/Analysis/CFLAliasAnalysis/const-expr-gep.ll vendor/llvm/dist/test/Analysis/CFLAliasAnalysis/constant-over-index.ll vendor/llvm/dist/test/Analysis/CFLAliasAnalysis/full-store-partial-alias.ll vendor/llvm/dist/test/Analysis/CFLAliasAnalysis/gep-signed-arithmetic.ll vendor/llvm/dist/test/Analysis/CFLAliasAnalysis/multilevel-combine.ll vendor/llvm/dist/test/Analysis/CFLAliasAnalysis/multilevel.ll vendor/llvm/dist/test/Analysis/CFLAliasAnalysis/must-and-partial.ll vendor/llvm/dist/test/Analysis/CFLAliasAnalysis/simple.ll vendor/llvm/dist/test/Analysis/CallGraph/2008-09-09-DirectCall.ll vendor/llvm/dist/test/Analysis/CostModel/AArch64/store.ll vendor/llvm/dist/test/Analysis/CostModel/ARM/gep.ll vendor/llvm/dist/test/Analysis/CostModel/ARM/insertelement.ll vendor/llvm/dist/test/Analysis/CostModel/PowerPC/load_store.ll vendor/llvm/dist/test/Analysis/CostModel/X86/gep.ll vendor/llvm/dist/test/Analysis/CostModel/X86/intrinsic-cost.ll vendor/llvm/dist/test/Analysis/CostModel/X86/load_store.ll vendor/llvm/dist/test/Analysis/CostModel/X86/loop_v2.ll vendor/llvm/dist/test/Analysis/CostModel/X86/testshiftlshr.ll vendor/llvm/dist/test/Analysis/CostModel/X86/testshiftshl.ll vendor/llvm/dist/test/Analysis/CostModel/X86/vectorized-loop.ll vendor/llvm/dist/test/Analysis/CostModel/X86/vselect-cost.ll vendor/llvm/dist/test/Analysis/CostModel/no_info.ll vendor/llvm/dist/test/Analysis/Delinearization/a.ll vendor/llvm/dist/test/Analysis/Delinearization/gcd_multiply_expr.ll vendor/llvm/dist/test/Analysis/Delinearization/himeno_1.ll vendor/llvm/dist/test/Analysis/Delinearization/himeno_2.ll vendor/llvm/dist/test/Analysis/Delinearization/iv_times_constant_in_subscript.ll vendor/llvm/dist/test/Analysis/Delinearization/multidim_ivs_and_integer_offsets_3d.ll vendor/llvm/dist/test/Analysis/Delinearization/multidim_ivs_and_integer_offsets_nts_3d.ll vendor/llvm/dist/test/Analysis/Delinearization/multidim_ivs_and_parameteric_offsets_3d.ll vendor/llvm/dist/test/Analysis/Delinearization/multidim_only_ivs_2d.ll vendor/llvm/dist/test/Analysis/Delinearization/multidim_only_ivs_2d_nested.ll vendor/llvm/dist/test/Analysis/Delinearization/multidim_only_ivs_3d.ll vendor/llvm/dist/test/Analysis/Delinearization/multidim_only_ivs_3d_cast.ll vendor/llvm/dist/test/Analysis/Delinearization/multidim_two_accesses_different_delinearization.ll vendor/llvm/dist/test/Analysis/Delinearization/undef.ll vendor/llvm/dist/test/Analysis/DependenceAnalysis/Banerjee.ll vendor/llvm/dist/test/Analysis/DependenceAnalysis/Coupled.ll vendor/llvm/dist/test/Analysis/DependenceAnalysis/ExactRDIV.ll vendor/llvm/dist/test/Analysis/DependenceAnalysis/ExactSIV.ll vendor/llvm/dist/test/Analysis/DependenceAnalysis/GCD.ll vendor/llvm/dist/test/Analysis/DependenceAnalysis/Invariant.ll vendor/llvm/dist/test/Analysis/DependenceAnalysis/NonCanonicalizedSubscript.ll vendor/llvm/dist/test/Analysis/DependenceAnalysis/Preliminary.ll vendor/llvm/dist/test/Analysis/DependenceAnalysis/Propagating.ll vendor/llvm/dist/test/Analysis/DependenceAnalysis/Separability.ll vendor/llvm/dist/test/Analysis/DependenceAnalysis/StrongSIV.ll vendor/llvm/dist/test/Analysis/DependenceAnalysis/SymbolicRDIV.ll vendor/llvm/dist/test/Analysis/DependenceAnalysis/SymbolicSIV.ll vendor/llvm/dist/test/Analysis/DependenceAnalysis/WeakCrossingSIV.ll vendor/llvm/dist/test/Analysis/DependenceAnalysis/WeakZeroDstSIV.ll vendor/llvm/dist/test/Analysis/DependenceAnalysis/WeakZeroSrcSIV.ll vendor/llvm/dist/test/Analysis/DependenceAnalysis/ZIV.ll vendor/llvm/dist/test/Analysis/Dominators/invoke.ll vendor/llvm/dist/test/Analysis/GlobalsModRef/2008-09-03-ReadGlobals.ll vendor/llvm/dist/test/Analysis/GlobalsModRef/aliastest.ll vendor/llvm/dist/test/Analysis/GlobalsModRef/chaining-analysis.ll vendor/llvm/dist/test/Analysis/GlobalsModRef/indirect-global.ll vendor/llvm/dist/test/Analysis/GlobalsModRef/modreftest.ll vendor/llvm/dist/test/Analysis/GlobalsModRef/pr12351.ll vendor/llvm/dist/test/Analysis/GlobalsModRef/volatile-instrs.ll vendor/llvm/dist/test/Analysis/LazyCallGraph/basic.ll vendor/llvm/dist/test/Analysis/LoopInfo/2003-05-15-NestingProblem.ll vendor/llvm/dist/test/Analysis/MemoryDependenceAnalysis/memdep_requires_dominator_tree.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/2007-07-15-NegativeStride.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/2008-07-12-UnneededSelect1.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/2008-11-18-LessThanOrEqual.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/2008-12-08-FiniteSGE.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/2009-01-02-SignedNegativeStride.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/2009-05-09-PointerEdgeCount.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/2009-07-04-GroupConstantsWidthMismatch.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/2012-03-26-LoadConstant.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/SolveQuadraticEquation.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/avoid-infinite-recursion-0.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/avoid-smax-0.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/avoid-smax-1.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/fold.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/load-with-range-metadata.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/load.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/max-trip-count-address-space.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/max-trip-count.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/nsw-offset-assume.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/nsw-offset.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/nsw.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/pr22179.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/scev-aa.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/sext-inreg.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/sext-iv-0.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/sext-iv-1.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/sext-iv-2.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/sle.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/trip-count.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/trip-count11.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/trip-count12.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/trip-count2.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/trip-count3.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/trip-count4.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/trip-count5.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/trip-count6.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/trip-count7.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/zext-signed-addrec.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/zext-wrap.ll vendor/llvm/dist/test/Analysis/ScopedNoAliasAA/basic-domains.ll vendor/llvm/dist/test/Analysis/ScopedNoAliasAA/basic.ll vendor/llvm/dist/test/Analysis/ScopedNoAliasAA/basic2.ll vendor/llvm/dist/test/Analysis/TypeBasedAliasAnalysis/PR17620.ll vendor/llvm/dist/test/Analysis/TypeBasedAliasAnalysis/aliastest.ll vendor/llvm/dist/test/Analysis/TypeBasedAliasAnalysis/argument-promotion.ll vendor/llvm/dist/test/Analysis/TypeBasedAliasAnalysis/dse.ll vendor/llvm/dist/test/Analysis/TypeBasedAliasAnalysis/dynamic-indices.ll vendor/llvm/dist/test/Analysis/TypeBasedAliasAnalysis/gvn-nonlocal-type-mismatch.ll vendor/llvm/dist/test/Analysis/TypeBasedAliasAnalysis/licm.ll vendor/llvm/dist/test/Analysis/TypeBasedAliasAnalysis/placement-tbaa.ll vendor/llvm/dist/test/Analysis/TypeBasedAliasAnalysis/precedence.ll vendor/llvm/dist/test/Analysis/TypeBasedAliasAnalysis/sink.ll vendor/llvm/dist/test/Analysis/TypeBasedAliasAnalysis/tbaa-path.ll vendor/llvm/dist/test/Assembler/2002-04-29-NameBinding.ll vendor/llvm/dist/test/Assembler/2002-07-25-ReturnPtrFunction.ll vendor/llvm/dist/test/Assembler/2002-08-15-ConstantExprProblem.ll vendor/llvm/dist/test/Assembler/2002-08-15-UnresolvedGlobalReference.ll vendor/llvm/dist/test/Assembler/2002-08-16-ConstExprInlined.ll vendor/llvm/dist/test/Assembler/2002-08-19-BytecodeReader.ll vendor/llvm/dist/test/Assembler/2003-05-15-AssemblerProblem.ll vendor/llvm/dist/test/Assembler/2003-08-20-ConstantExprGEP-Fold.ll vendor/llvm/dist/test/Assembler/2004-01-11-getelementptrfolding.ll vendor/llvm/dist/test/Assembler/2004-04-04-GetElementPtrIndexTypes.ll vendor/llvm/dist/test/Assembler/2004-06-07-VerifierBug.ll vendor/llvm/dist/test/Assembler/2007-01-05-Cmp-ConstExpr.ll vendor/llvm/dist/test/Assembler/2007-04-20-AlignedLoad.ll vendor/llvm/dist/test/Assembler/2007-12-11-AddressSpaces.ll vendor/llvm/dist/test/Assembler/2008-01-11-VarargAttrs.ll vendor/llvm/dist/test/Assembler/2009-07-24-ZeroArgGEP.ll vendor/llvm/dist/test/Assembler/2010-02-05-FunctionLocalMetadataBecomesNull.ll vendor/llvm/dist/test/Assembler/ConstantExprFold.ll vendor/llvm/dist/test/Assembler/ConstantExprNoFold.ll vendor/llvm/dist/test/Assembler/alias-use-list-order.ll vendor/llvm/dist/test/Assembler/align-inst-load.ll vendor/llvm/dist/test/Assembler/align-inst.ll vendor/llvm/dist/test/Assembler/atomic.ll vendor/llvm/dist/test/Assembler/auto_upgrade_intrinsics.ll vendor/llvm/dist/test/Assembler/fast-math-flags.ll vendor/llvm/dist/test/Assembler/flags.ll vendor/llvm/dist/test/Assembler/getelementptr.ll vendor/llvm/dist/test/Assembler/getelementptr_struct.ll vendor/llvm/dist/test/Assembler/getelementptr_vec_idx1.ll vendor/llvm/dist/test/Assembler/getelementptr_vec_idx2.ll vendor/llvm/dist/test/Assembler/getelementptr_vec_idx3.ll vendor/llvm/dist/test/Assembler/getelementptr_vec_struct.ll vendor/llvm/dist/test/Assembler/half-constprop.ll vendor/llvm/dist/test/Assembler/half-conv.ll vendor/llvm/dist/test/Assembler/insertextractvalue.ll vendor/llvm/dist/test/Assembler/invalid-mdlocation-field-bad.ll vendor/llvm/dist/test/Assembler/invalid-mdlocation-field-twice.ll vendor/llvm/dist/test/Assembler/invalid-mdlocation-overflow-column.ll vendor/llvm/dist/test/Assembler/invalid-mdlocation-overflow-line.ll vendor/llvm/dist/test/Assembler/mdlocation.ll vendor/llvm/dist/test/Assembler/metadata.ll vendor/llvm/dist/test/Assembler/musttail-invalid-1.ll vendor/llvm/dist/test/Assembler/musttail-invalid-2.ll vendor/llvm/dist/test/Assembler/musttail.ll vendor/llvm/dist/test/Assembler/numbered-values.ll vendor/llvm/dist/test/Assembler/unnamed.ll vendor/llvm/dist/test/Assembler/upgrade-loop-metadata.ll vendor/llvm/dist/test/Assembler/uselistorder.ll vendor/llvm/dist/test/Assembler/uselistorder_bb.ll vendor/llvm/dist/test/Bindings/OCaml/core.ml vendor/llvm/dist/test/Bindings/OCaml/linker.ml vendor/llvm/dist/test/Bitcode/arm32_neon_vcnt_upgrade.ll vendor/llvm/dist/test/Bitcode/attributes.ll vendor/llvm/dist/test/Bitcode/case-ranges-3.3.ll vendor/llvm/dist/test/Bitcode/constantsTest.3.2.ll vendor/llvm/dist/test/Bitcode/function-encoding-rel-operands.ll vendor/llvm/dist/test/Bitcode/highLevelStructure.3.2.ll vendor/llvm/dist/test/Bitcode/invalid.ll vendor/llvm/dist/test/Bitcode/linkage-types-3.2.ll vendor/llvm/dist/test/Bitcode/memInstructions.3.2.ll vendor/llvm/dist/test/Bitcode/metadata-2.ll vendor/llvm/dist/test/Bitcode/miscInstructions.3.2.ll vendor/llvm/dist/test/Bitcode/old-aliases.ll vendor/llvm/dist/test/Bitcode/pr18704.ll vendor/llvm/dist/test/Bitcode/upgrade-loop-metadata.ll vendor/llvm/dist/test/Bitcode/use-list-order.ll vendor/llvm/dist/test/BugPoint/metadata.ll vendor/llvm/dist/test/CMakeLists.txt vendor/llvm/dist/test/CodeGen/AArch64/128bit_load_store.ll vendor/llvm/dist/test/CodeGen/AArch64/PBQP-chain.ll vendor/llvm/dist/test/CodeGen/AArch64/PBQP-coalesce-benefit.ll vendor/llvm/dist/test/CodeGen/AArch64/PBQP-csr.ll vendor/llvm/dist/test/CodeGen/AArch64/Redundantstore.ll vendor/llvm/dist/test/CodeGen/AArch64/a57-csel.ll vendor/llvm/dist/test/CodeGen/AArch64/aarch64-2014-08-11-MachineCombinerCrash.ll vendor/llvm/dist/test/CodeGen/AArch64/aarch64-2014-12-02-combine-soften.ll vendor/llvm/dist/test/CodeGen/AArch64/aarch64-a57-fp-load-balancing.ll vendor/llvm/dist/test/CodeGen/AArch64/aarch64-address-type-promotion-assertion.ll vendor/llvm/dist/test/CodeGen/AArch64/aarch64-address-type-promotion.ll vendor/llvm/dist/test/CodeGen/AArch64/aarch64-be-bv.ll vendor/llvm/dist/test/CodeGen/AArch64/aarch64-fix-cortex-a53-835769.ll vendor/llvm/dist/test/CodeGen/AArch64/aarch64-gep-opt.ll vendor/llvm/dist/test/CodeGen/AArch64/aarch64-smull.ll vendor/llvm/dist/test/CodeGen/AArch64/addsub-shifted.ll vendor/llvm/dist/test/CodeGen/AArch64/addsub.ll vendor/llvm/dist/test/CodeGen/AArch64/addsub_ext.ll vendor/llvm/dist/test/CodeGen/AArch64/alloca.ll vendor/llvm/dist/test/CodeGen/AArch64/analyzecmp.ll vendor/llvm/dist/test/CodeGen/AArch64/and-mask-removal.ll vendor/llvm/dist/test/CodeGen/AArch64/argument-blocks.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-2011-03-17-AsmPrinterCrash.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-2011-03-21-Unaligned-Frame-Index.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-2011-04-21-CPSRBug.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-2011-10-18-LdStOptBug.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-2012-01-11-ComparisonDAGCrash.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-2012-05-22-LdStOptBug.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-2012-06-06-FPToUI.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-2012-07-11-InstrEmitterBug.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-AdvSIMD-Scalar.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-aapcs.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-abi-varargs.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-abi.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-abi_align.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-addr-mode-folding.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-addr-type-promotion.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-addrmode.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-alloc-no-stack-realign.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-alloca-frame-pointer-offset.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-andCmpBrToTBZ.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-anyregcc-crash.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-anyregcc.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-atomic-128.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-atomic.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-basic-pic.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-bcc.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-big-endian-bitconverts.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-big-endian-varargs.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-big-endian-vector-caller.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-big-stack.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-bitfield-extract.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-blockaddress.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-call-tailcalls.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-cast-opt.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-ccmp-heuristics.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-ccmp.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-code-model-large-abs.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-collect-loh-garbage-crash.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-collect-loh-str.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-collect-loh.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-complex-copy-noneon.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-const-addr.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-convert-v4f64.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-cse.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-dagcombiner-dead-indexed-load.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-dagcombiner-load-slicing.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-dup.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-early-ifcvt.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-elf-globals.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-ext.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-extend.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-extern-weak.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-extload-knownzero.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-fast-isel-addr-offset.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-fast-isel-alloca.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-fast-isel-br.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-fast-isel-call.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-fast-isel-conversion.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-fast-isel-fcmp.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-fast-isel-gv.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-fast-isel-icmp.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-fast-isel-indirectbr.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-fast-isel-intrinsic.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-fast-isel-materialize.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-fast-isel-rem.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-fast-isel-ret.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-fast-isel-store.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-fast-isel.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-fastisel-gep-promote-before-add.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-fcopysign.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-fixed-point-scalar-cvt-dagcombine.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-fmax.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-fmuladd.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-fold-address.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-fold-lsl.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-fp128-folding.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-fp128.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-hello.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-i16-subreg-extract.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-indexed-memory.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-indexed-vector-ldst-2.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-indexed-vector-ldst.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-inline-asm.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-join-reserved.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-large-frame.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-ld1.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-ldp.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-ldur.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-memcpy-inline.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-memset-inline.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-misched-basic-A53.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-misched-basic-A57.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-neon-copy.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-neon-select_cc.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-neon-simd-ldst-one.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-neon-v1i1-setcc.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-patchpoint-scratch-regs.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-patchpoint-webkit_jscc.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-patchpoint.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-pic-local-symbol.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-platform-reg.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-popcnt.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-prefetch.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-promote-const.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-redzone.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-register-offset-addressing.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-regress-interphase-shift.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-return-vector.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-rev.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-scaled_iv.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-scvt.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-sitofp-combine-chains.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-smaxv.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-sminv.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-spill-lr.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-spill.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-st1.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-stack-no-frame.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-stackmap-nops.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-stackmap.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-stp.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-strict-align.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-stur.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-this-return.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-tls-darwin.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-tls-dynamic-together.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-tls-dynamics.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-tls-execs.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-triv-disjoint-mem-access.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-trn.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-trunc-store.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-umaxv.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-uminv.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-unaligned_ldst.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-uzp.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-vabs.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-vadd.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-vaddv.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-vbitwise.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-vcmp.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-vcnt.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-vcvt.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-vector-imm.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-vector-ldst.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-vext.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-vhadd.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-vhsub.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-virtual_base.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-vmax.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-vmul.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-volatile.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-vqadd.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-vqsub.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-vshift.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-vshr.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-vshuffle.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-vsqrt.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-vsra.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-vsub.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-weak-reference.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-xaluo.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-zextload-unscaled.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-zip.ll vendor/llvm/dist/test/CodeGen/AArch64/assertion-rc-mismatch.ll vendor/llvm/dist/test/CodeGen/AArch64/atomic-ops-not-barriers.ll vendor/llvm/dist/test/CodeGen/AArch64/atomic-ops.ll vendor/llvm/dist/test/CodeGen/AArch64/basic-pic.ll vendor/llvm/dist/test/CodeGen/AArch64/bitfield-insert-0.ll vendor/llvm/dist/test/CodeGen/AArch64/bitfield-insert.ll vendor/llvm/dist/test/CodeGen/AArch64/bitfield.ll vendor/llvm/dist/test/CodeGen/AArch64/blockaddress.ll vendor/llvm/dist/test/CodeGen/AArch64/bool-loads.ll vendor/llvm/dist/test/CodeGen/AArch64/br-to-eh-lpad.ll vendor/llvm/dist/test/CodeGen/AArch64/breg.ll vendor/llvm/dist/test/CodeGen/AArch64/callee-save.ll vendor/llvm/dist/test/CodeGen/AArch64/cmpwithshort.ll vendor/llvm/dist/test/CodeGen/AArch64/code-model-large-abs.ll vendor/llvm/dist/test/CodeGen/AArch64/combine-comparisons-by-cse.ll vendor/llvm/dist/test/CodeGen/AArch64/compare-branch.ll vendor/llvm/dist/test/CodeGen/AArch64/complex-copy-noneon.ll vendor/llvm/dist/test/CodeGen/AArch64/complex-int-to-fp.ll vendor/llvm/dist/test/CodeGen/AArch64/cpus.ll vendor/llvm/dist/test/CodeGen/AArch64/dag-combine-invaraints.ll vendor/llvm/dist/test/CodeGen/AArch64/dp-3source.ll vendor/llvm/dist/test/CodeGen/AArch64/dp1.ll vendor/llvm/dist/test/CodeGen/AArch64/dp2.ll vendor/llvm/dist/test/CodeGen/AArch64/eliminate-trunc.ll vendor/llvm/dist/test/CodeGen/AArch64/extern-weak.ll vendor/llvm/dist/test/CodeGen/AArch64/f16-convert.ll vendor/llvm/dist/test/CodeGen/AArch64/fast-isel-addressing-modes.ll vendor/llvm/dist/test/CodeGen/AArch64/fast-isel-branch-cond-split.ll vendor/llvm/dist/test/CodeGen/AArch64/fast-isel-branch_weights.ll vendor/llvm/dist/test/CodeGen/AArch64/fast-isel-call-return.ll vendor/llvm/dist/test/CodeGen/AArch64/fast-isel-cbz.ll vendor/llvm/dist/test/CodeGen/AArch64/fast-isel-cmp-branch.ll vendor/llvm/dist/test/CodeGen/AArch64/fast-isel-folding.ll vendor/llvm/dist/test/CodeGen/AArch64/fast-isel-gep.ll vendor/llvm/dist/test/CodeGen/AArch64/fast-isel-int-ext.ll vendor/llvm/dist/test/CodeGen/AArch64/fast-isel-int-ext2.ll vendor/llvm/dist/test/CodeGen/AArch64/fast-isel-int-ext3.ll vendor/llvm/dist/test/CodeGen/AArch64/fast-isel-int-ext4.ll vendor/llvm/dist/test/CodeGen/AArch64/fast-isel-logic-op.ll vendor/llvm/dist/test/CodeGen/AArch64/fast-isel-memcpy.ll vendor/llvm/dist/test/CodeGen/AArch64/fast-isel-mul.ll vendor/llvm/dist/test/CodeGen/AArch64/fast-isel-runtime-libcall.ll vendor/llvm/dist/test/CodeGen/AArch64/fast-isel-sdiv.ll vendor/llvm/dist/test/CodeGen/AArch64/fast-isel-select.ll vendor/llvm/dist/test/CodeGen/AArch64/fast-isel-shift.ll vendor/llvm/dist/test/CodeGen/AArch64/fast-isel-sqrt.ll vendor/llvm/dist/test/CodeGen/AArch64/fast-isel-tbz.ll vendor/llvm/dist/test/CodeGen/AArch64/fast-isel-trunc.ll vendor/llvm/dist/test/CodeGen/AArch64/fast-isel-vector-arithmetic.ll vendor/llvm/dist/test/CodeGen/AArch64/fast-isel-vret.ll vendor/llvm/dist/test/CodeGen/AArch64/floatdp_1source.ll vendor/llvm/dist/test/CodeGen/AArch64/floatdp_2source.ll vendor/llvm/dist/test/CodeGen/AArch64/fp128-folding.ll vendor/llvm/dist/test/CodeGen/AArch64/fp16-v4-instructions.ll vendor/llvm/dist/test/CodeGen/AArch64/fp16-v8-instructions.ll vendor/llvm/dist/test/CodeGen/AArch64/fp16-vector-load-store.ll vendor/llvm/dist/test/CodeGen/AArch64/fpimm.ll vendor/llvm/dist/test/CodeGen/AArch64/frameaddr.ll vendor/llvm/dist/test/CodeGen/AArch64/free-zext.ll vendor/llvm/dist/test/CodeGen/AArch64/func-argpassing.ll vendor/llvm/dist/test/CodeGen/AArch64/func-calls.ll vendor/llvm/dist/test/CodeGen/AArch64/funcptr_cast.ll vendor/llvm/dist/test/CodeGen/AArch64/ghc-cc.ll vendor/llvm/dist/test/CodeGen/AArch64/global-alignment.ll vendor/llvm/dist/test/CodeGen/AArch64/global-merge-1.ll vendor/llvm/dist/test/CodeGen/AArch64/global-merge-2.ll vendor/llvm/dist/test/CodeGen/AArch64/global-merge-3.ll vendor/llvm/dist/test/CodeGen/AArch64/global-merge-4.ll vendor/llvm/dist/test/CodeGen/AArch64/half.ll vendor/llvm/dist/test/CodeGen/AArch64/i1-contents.ll vendor/llvm/dist/test/CodeGen/AArch64/i128-align.ll vendor/llvm/dist/test/CodeGen/AArch64/intrinsics-memory-barrier.ll vendor/llvm/dist/test/CodeGen/AArch64/ldst-opt.ll vendor/llvm/dist/test/CodeGen/AArch64/ldst-regoffset.ll vendor/llvm/dist/test/CodeGen/AArch64/ldst-unscaledimm.ll vendor/llvm/dist/test/CodeGen/AArch64/ldst-unsignedimm.ll vendor/llvm/dist/test/CodeGen/AArch64/lit.local.cfg vendor/llvm/dist/test/CodeGen/AArch64/literal_pools_float.ll vendor/llvm/dist/test/CodeGen/AArch64/local_vars.ll vendor/llvm/dist/test/CodeGen/AArch64/logical_shifted_reg.ll vendor/llvm/dist/test/CodeGen/AArch64/machine-copy-prop.ll vendor/llvm/dist/test/CodeGen/AArch64/machine_cse.ll vendor/llvm/dist/test/CodeGen/AArch64/mul_pow2.ll vendor/llvm/dist/test/CodeGen/AArch64/neon-fpround_f128.ll vendor/llvm/dist/test/CodeGen/AArch64/neon-scalar-copy.ll vendor/llvm/dist/test/CodeGen/AArch64/neon-truncStore-extLoad.ll vendor/llvm/dist/test/CodeGen/AArch64/nzcv-save.ll vendor/llvm/dist/test/CodeGen/AArch64/paired-load.ll vendor/llvm/dist/test/CodeGen/AArch64/pic-eh-stubs.ll vendor/llvm/dist/test/CodeGen/AArch64/ragreedy-csr.ll vendor/llvm/dist/test/CodeGen/AArch64/regress-tail-livereg.ll vendor/llvm/dist/test/CodeGen/AArch64/regress-tblgen-chains.ll vendor/llvm/dist/test/CodeGen/AArch64/regress-w29-reserved-with-fp.ll vendor/llvm/dist/test/CodeGen/AArch64/remat.ll vendor/llvm/dist/test/CodeGen/AArch64/rm_redundant_cmp.ll vendor/llvm/dist/test/CodeGen/AArch64/sibling-call.ll vendor/llvm/dist/test/CodeGen/AArch64/stack-guard-remat-bitcast.ll vendor/llvm/dist/test/CodeGen/AArch64/stack_guard_remat.ll vendor/llvm/dist/test/CodeGen/AArch64/tail-call.ll vendor/llvm/dist/test/CodeGen/AArch64/tailcall-explicit-sret.ll vendor/llvm/dist/test/CodeGen/AArch64/tbz-tbnz.ll vendor/llvm/dist/test/CodeGen/AArch64/tst-br.ll vendor/llvm/dist/test/CodeGen/AArch64/zero-reg.ll vendor/llvm/dist/test/CodeGen/ARM/2006-11-10-CycleInDAG.ll vendor/llvm/dist/test/CodeGen/ARM/2007-01-19-InfiniteLoop.ll vendor/llvm/dist/test/CodeGen/ARM/2007-03-07-CombinerCrash.ll vendor/llvm/dist/test/CodeGen/ARM/2007-03-13-InstrSched.ll vendor/llvm/dist/test/CodeGen/ARM/2007-03-21-JoinIntervalsCrash.ll vendor/llvm/dist/test/CodeGen/ARM/2007-03-27-RegScavengerAssert.ll vendor/llvm/dist/test/CodeGen/ARM/2007-04-02-RegScavengerAssert.ll vendor/llvm/dist/test/CodeGen/ARM/2007-04-03-PEIBug.ll vendor/llvm/dist/test/CodeGen/ARM/2007-04-03-UndefinedSymbol.ll vendor/llvm/dist/test/CodeGen/ARM/2007-04-30-CombinerCrash.ll vendor/llvm/dist/test/CodeGen/ARM/2007-05-03-BadPostIndexedLd.ll vendor/llvm/dist/test/CodeGen/ARM/2007-05-07-tailmerge-1.ll vendor/llvm/dist/test/CodeGen/ARM/2007-05-09-tailmerge-2.ll vendor/llvm/dist/test/CodeGen/ARM/2007-05-22-tailmerge-3.ll vendor/llvm/dist/test/CodeGen/ARM/2007-05-23-BadPreIndexedStore.ll vendor/llvm/dist/test/CodeGen/ARM/2007-08-15-ReuseBug.ll vendor/llvm/dist/test/CodeGen/ARM/2008-02-04-LocalRegAllocBug.ll vendor/llvm/dist/test/CodeGen/ARM/2008-02-29-RegAllocLocal.ll vendor/llvm/dist/test/CodeGen/ARM/2008-03-05-SxtInRegBug.ll vendor/llvm/dist/test/CodeGen/ARM/2008-03-07-RegScavengerAssert.ll vendor/llvm/dist/test/CodeGen/ARM/2008-04-04-ScavengerAssert.ll vendor/llvm/dist/test/CodeGen/ARM/2008-04-10-ScavengerAssert.ll vendor/llvm/dist/test/CodeGen/ARM/2008-05-19-LiveIntervalsBug.ll vendor/llvm/dist/test/CodeGen/ARM/2008-05-19-ScavengerAssert.ll vendor/llvm/dist/test/CodeGen/ARM/2008-07-24-CodeGenPrepCrash.ll vendor/llvm/dist/test/CodeGen/ARM/2008-08-07-AsmPrintBug.ll vendor/llvm/dist/test/CodeGen/ARM/2009-02-16-SpillerBug.ll vendor/llvm/dist/test/CodeGen/ARM/2009-02-22-SoftenFloatVaArg.ll vendor/llvm/dist/test/CodeGen/ARM/2009-02-27-SpillerBug.ll vendor/llvm/dist/test/CodeGen/ARM/2009-03-07-SpillerBug.ll vendor/llvm/dist/test/CodeGen/ARM/2009-03-09-AddrModeBug.ll vendor/llvm/dist/test/CodeGen/ARM/2009-04-06-AsmModifier.ll vendor/llvm/dist/test/CodeGen/ARM/2009-04-08-AggregateAddr.ll vendor/llvm/dist/test/CodeGen/ARM/2009-04-08-FREM.ll vendor/llvm/dist/test/CodeGen/ARM/2009-04-08-FloatUndef.ll vendor/llvm/dist/test/CodeGen/ARM/2009-04-09-RegScavengerAsm.ll vendor/llvm/dist/test/CodeGen/ARM/2009-05-07-RegAllocLocal.ll vendor/llvm/dist/test/CodeGen/ARM/2009-05-11-CodePlacementCrash.ll vendor/llvm/dist/test/CodeGen/ARM/2009-06-02-ISelCrash.ll vendor/llvm/dist/test/CodeGen/ARM/2009-06-04-MissingLiveIn.ll vendor/llvm/dist/test/CodeGen/ARM/2009-06-22-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/ARM/2009-06-30-RegScavengerAssert.ll vendor/llvm/dist/test/CodeGen/ARM/2009-06-30-RegScavengerAssert2.ll vendor/llvm/dist/test/CodeGen/ARM/2009-06-30-RegScavengerAssert3.ll vendor/llvm/dist/test/CodeGen/ARM/2009-06-30-RegScavengerAssert4.ll vendor/llvm/dist/test/CodeGen/ARM/2009-06-30-RegScavengerAssert5.ll vendor/llvm/dist/test/CodeGen/ARM/2009-07-01-CommuteBug.ll vendor/llvm/dist/test/CodeGen/ARM/2009-07-18-RewriterBug.ll vendor/llvm/dist/test/CodeGen/ARM/2009-07-22-ScavengerAssert.ll vendor/llvm/dist/test/CodeGen/ARM/2009-07-22-SchedulerAssert.ll vendor/llvm/dist/test/CodeGen/ARM/2009-07-29-VFP3Registers.ll vendor/llvm/dist/test/CodeGen/ARM/2009-08-02-RegScavengerAssert-Neon.ll vendor/llvm/dist/test/CodeGen/ARM/2009-08-15-RegScavenger-EarlyClobber.ll vendor/llvm/dist/test/CodeGen/ARM/2009-08-21-PostRAKill.ll vendor/llvm/dist/test/CodeGen/ARM/2009-08-21-PostRAKill2.ll vendor/llvm/dist/test/CodeGen/ARM/2009-08-21-PostRAKill3.ll vendor/llvm/dist/test/CodeGen/ARM/2009-08-31-LSDA-Name.ll vendor/llvm/dist/test/CodeGen/ARM/2009-08-31-TwoRegShuffle.ll vendor/llvm/dist/test/CodeGen/ARM/2009-09-09-fpcmp-ole.ll vendor/llvm/dist/test/CodeGen/ARM/2009-09-13-InvalidSubreg.ll vendor/llvm/dist/test/CodeGen/ARM/2009-09-13-InvalidSuperReg.ll vendor/llvm/dist/test/CodeGen/ARM/2009-09-23-LiveVariablesBug.ll vendor/llvm/dist/test/CodeGen/ARM/2009-09-24-spill-align.ll vendor/llvm/dist/test/CodeGen/ARM/2009-09-28-LdStOptiBug.ll vendor/llvm/dist/test/CodeGen/ARM/2009-10-02-NEONSubregsBug.ll vendor/llvm/dist/test/CodeGen/ARM/2009-10-16-Scope.ll vendor/llvm/dist/test/CodeGen/ARM/2009-10-27-double-align.ll vendor/llvm/dist/test/CodeGen/ARM/2009-11-01-NeonMoves.ll vendor/llvm/dist/test/CodeGen/ARM/2009-11-02-NegativeLane.ll vendor/llvm/dist/test/CodeGen/ARM/2009-11-07-SubRegAsmPrinting.ll vendor/llvm/dist/test/CodeGen/ARM/2009-11-13-ScavengerAssert.ll vendor/llvm/dist/test/CodeGen/ARM/2009-11-13-ScavengerAssert2.ll vendor/llvm/dist/test/CodeGen/ARM/2009-11-13-VRRewriterCrash.ll vendor/llvm/dist/test/CodeGen/ARM/2009-12-02-vtrn-undef.ll vendor/llvm/dist/test/CodeGen/ARM/2010-03-04-eabi-fp-spill.ll vendor/llvm/dist/test/CodeGen/ARM/2010-03-04-stm-undef-addr.ll vendor/llvm/dist/test/CodeGen/ARM/2010-04-15-ScavengerDebugValue.ll vendor/llvm/dist/test/CodeGen/ARM/2010-05-17-FastAllocCrash.ll vendor/llvm/dist/test/CodeGen/ARM/2010-05-18-LocalAllocCrash.ll vendor/llvm/dist/test/CodeGen/ARM/2010-05-18-PostIndexBug.ll vendor/llvm/dist/test/CodeGen/ARM/2010-05-19-Shuffles.ll vendor/llvm/dist/test/CodeGen/ARM/2010-05-21-BuildVector.ll vendor/llvm/dist/test/CodeGen/ARM/2010-06-11-vmovdrr-bitcast.ll vendor/llvm/dist/test/CodeGen/ARM/2010-06-21-LdStMultipleBug.ll vendor/llvm/dist/test/CodeGen/ARM/2010-06-21-nondarwin-tc.ll vendor/llvm/dist/test/CodeGen/ARM/2010-06-25-Thumb2ITInvalidIterator.ll vendor/llvm/dist/test/CodeGen/ARM/2010-06-29-SubregImpDefs.ll vendor/llvm/dist/test/CodeGen/ARM/2010-07-26-GlobalMerge.ll vendor/llvm/dist/test/CodeGen/ARM/2010-08-04-EHCrash.ll vendor/llvm/dist/test/CodeGen/ARM/2010-08-04-StackVariable.ll vendor/llvm/dist/test/CodeGen/ARM/2010-11-15-SpillEarlyClobber.ll vendor/llvm/dist/test/CodeGen/ARM/2010-12-08-tpsoft.ll vendor/llvm/dist/test/CodeGen/ARM/2010-12-15-elf-lcomm.ll vendor/llvm/dist/test/CodeGen/ARM/2010-12-17-LocalStackSlotCrash.ll vendor/llvm/dist/test/CodeGen/ARM/2011-01-19-MergedGlobalDbg.ll vendor/llvm/dist/test/CodeGen/ARM/2011-02-04-AntidepMultidef.ll vendor/llvm/dist/test/CodeGen/ARM/2011-02-07-AntidepClobber.ll vendor/llvm/dist/test/CodeGen/ARM/2011-03-10-DAGCombineCrash.ll vendor/llvm/dist/test/CodeGen/ARM/2011-03-15-LdStMultipleBug.ll vendor/llvm/dist/test/CodeGen/ARM/2011-04-07-schediv.ll vendor/llvm/dist/test/CodeGen/ARM/2011-04-11-MachineLICMBug.ll vendor/llvm/dist/test/CodeGen/ARM/2011-04-12-FastRegAlloc.ll vendor/llvm/dist/test/CodeGen/ARM/2011-04-15-AndVFlagPeepholeBug.ll vendor/llvm/dist/test/CodeGen/ARM/2011-04-15-RegisterCmpPeephole.ll vendor/llvm/dist/test/CodeGen/ARM/2011-04-26-SchedTweak.ll vendor/llvm/dist/test/CodeGen/ARM/2011-06-29-MergeGlobalsAlign.ll vendor/llvm/dist/test/CodeGen/ARM/2011-08-02-MergedGlobalDbg.ll vendor/llvm/dist/test/CodeGen/ARM/2011-08-29-SchedCycle.ll vendor/llvm/dist/test/CodeGen/ARM/2011-08-29-ldr_pre_imm.ll vendor/llvm/dist/test/CodeGen/ARM/2011-09-09-OddVectorDivision.ll vendor/llvm/dist/test/CodeGen/ARM/2011-09-28-CMovCombineBug.ll vendor/llvm/dist/test/CodeGen/ARM/2011-10-26-ExpandUnalignedLoadCrash.ll vendor/llvm/dist/test/CodeGen/ARM/2011-11-07-PromoteVectorLoadStore.ll vendor/llvm/dist/test/CodeGen/ARM/2011-11-09-BitcastVectorDouble.ll vendor/llvm/dist/test/CodeGen/ARM/2011-11-09-IllegalVectorFPIntConvert.ll vendor/llvm/dist/test/CodeGen/ARM/2011-11-14-EarlyClobber.ll vendor/llvm/dist/test/CodeGen/ARM/2011-11-28-DAGCombineBug.ll vendor/llvm/dist/test/CodeGen/ARM/2011-11-29-128bitArithmetics.ll vendor/llvm/dist/test/CodeGen/ARM/2011-11-30-MergeAlignment.ll vendor/llvm/dist/test/CodeGen/ARM/2011-12-14-machine-sink.ll vendor/llvm/dist/test/CodeGen/ARM/2011-12-19-sjlj-clobber.ll vendor/llvm/dist/test/CodeGen/ARM/2012-01-23-PostRA-LICM.ll vendor/llvm/dist/test/CodeGen/ARM/2012-01-24-RegSequenceLiveRange.ll vendor/llvm/dist/test/CodeGen/ARM/2012-01-26-CopyPropKills.ll vendor/llvm/dist/test/CodeGen/ARM/2012-02-01-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/ARM/2012-03-13-DAGCombineBug.ll vendor/llvm/dist/test/CodeGen/ARM/2012-06-12-SchedMemLatency.ll vendor/llvm/dist/test/CodeGen/ARM/2012-08-04-DtripleSpillReload.ll vendor/llvm/dist/test/CodeGen/ARM/2012-08-08-legalize-unaligned.ll vendor/llvm/dist/test/CodeGen/ARM/2012-08-09-neon-extload.ll vendor/llvm/dist/test/CodeGen/ARM/2012-08-23-legalize-vmull.ll vendor/llvm/dist/test/CodeGen/ARM/2012-08-27-CopyPhysRegCrash.ll vendor/llvm/dist/test/CodeGen/ARM/2012-10-04-AAPCS-byval-align8.ll vendor/llvm/dist/test/CodeGen/ARM/2012-10-04-FixedFrame-vs-byval.ll vendor/llvm/dist/test/CodeGen/ARM/2012-10-18-PR14099-ByvalFrameAddress.ll vendor/llvm/dist/test/CodeGen/ARM/2013-01-21-PR14992.ll vendor/llvm/dist/test/CodeGen/ARM/2013-04-05-Small-ByVal-Structs-PR15293.ll vendor/llvm/dist/test/CodeGen/ARM/2013-04-16-AAPCS-C5-vs-VFP.ll vendor/llvm/dist/test/CodeGen/ARM/2013-04-18-load-overlap-PR14824.ll vendor/llvm/dist/test/CodeGen/ARM/2013-04-21-AAPCS-VA-C.1.cp.ll vendor/llvm/dist/test/CodeGen/ARM/2013-05-02-AAPCS-ByVal-Structs-C4-C5-VFP.ll vendor/llvm/dist/test/CodeGen/ARM/2013-05-02-AAPCS-ByVal-Structs-C4-C5-VFP2.ll vendor/llvm/dist/test/CodeGen/ARM/2013-05-07-ByteLoadSameAddress.ll vendor/llvm/dist/test/CodeGen/ARM/2013-05-13-AAPCS-byval-padding.ll vendor/llvm/dist/test/CodeGen/ARM/2013-05-31-char-shift-crash.ll vendor/llvm/dist/test/CodeGen/ARM/2013-07-29-vector-or-combine.ll vendor/llvm/dist/test/CodeGen/ARM/2013-10-11-select-stalls.ll vendor/llvm/dist/test/CodeGen/ARM/2014-01-09-pseudo_expand_implicit_reg.ll vendor/llvm/dist/test/CodeGen/ARM/2014-02-21-byval-reg-split-alignment.ll vendor/llvm/dist/test/CodeGen/ARM/2014-07-18-earlyclobber-str-post.ll vendor/llvm/dist/test/CodeGen/ARM/2014-08-04-muls-it.ll vendor/llvm/dist/test/CodeGen/ARM/2015-01-21-thumbv4t-ldstr-opt.ll vendor/llvm/dist/test/CodeGen/ARM/MergeConsecutiveStores.ll vendor/llvm/dist/test/CodeGen/ARM/Windows/chkstk-movw-movt-isel.ll vendor/llvm/dist/test/CodeGen/ARM/Windows/dllimport.ll vendor/llvm/dist/test/CodeGen/ARM/Windows/frame-register.ll vendor/llvm/dist/test/CodeGen/ARM/Windows/long-calls.ll vendor/llvm/dist/test/CodeGen/ARM/Windows/movw-movt-relocations.ll vendor/llvm/dist/test/CodeGen/ARM/Windows/pic.ll vendor/llvm/dist/test/CodeGen/ARM/Windows/read-only-data.ll vendor/llvm/dist/test/CodeGen/ARM/Windows/vla.ll vendor/llvm/dist/test/CodeGen/ARM/a15-partial-update.ll vendor/llvm/dist/test/CodeGen/ARM/addrmode.ll vendor/llvm/dist/test/CodeGen/ARM/aliases.ll vendor/llvm/dist/test/CodeGen/ARM/alloc-no-stack-realign.ll vendor/llvm/dist/test/CodeGen/ARM/arguments.ll vendor/llvm/dist/test/CodeGen/ARM/arm-and-tst-peephole.ll vendor/llvm/dist/test/CodeGen/ARM/arm-asm.ll vendor/llvm/dist/test/CodeGen/ARM/arm-modifier.ll vendor/llvm/dist/test/CodeGen/ARM/arm-negative-stride.ll vendor/llvm/dist/test/CodeGen/ARM/arm-ttype-target2.ll vendor/llvm/dist/test/CodeGen/ARM/atomic-64bit.ll vendor/llvm/dist/test/CodeGen/ARM/atomic-load-store.ll vendor/llvm/dist/test/CodeGen/ARM/atomic-op.ll vendor/llvm/dist/test/CodeGen/ARM/atomic-ops-v8.ll vendor/llvm/dist/test/CodeGen/ARM/available_externally.ll vendor/llvm/dist/test/CodeGen/ARM/avoid-cpsr-rmw.ll vendor/llvm/dist/test/CodeGen/ARM/bfi.ll vendor/llvm/dist/test/CodeGen/ARM/bfx.ll vendor/llvm/dist/test/CodeGen/ARM/big-endian-neon-bitconv.ll vendor/llvm/dist/test/CodeGen/ARM/big-endian-neon-extend.ll vendor/llvm/dist/test/CodeGen/ARM/big-endian-neon-trunc-store.ll vendor/llvm/dist/test/CodeGen/ARM/big-endian-ret-f64.ll vendor/llvm/dist/test/CodeGen/ARM/big-endian-vector-caller.ll vendor/llvm/dist/test/CodeGen/ARM/bswap16.ll vendor/llvm/dist/test/CodeGen/ARM/build-attributes.ll vendor/llvm/dist/test/CodeGen/ARM/bx_fold.ll vendor/llvm/dist/test/CodeGen/ARM/cache-intrinsic.ll vendor/llvm/dist/test/CodeGen/ARM/call-tc.ll vendor/llvm/dist/test/CodeGen/ARM/call.ll vendor/llvm/dist/test/CodeGen/ARM/call_nolink.ll vendor/llvm/dist/test/CodeGen/ARM/coalesce-dbgvalue.ll vendor/llvm/dist/test/CodeGen/ARM/coalesce-subregs.ll vendor/llvm/dist/test/CodeGen/ARM/code-placement.ll vendor/llvm/dist/test/CodeGen/ARM/commute-movcc.ll vendor/llvm/dist/test/CodeGen/ARM/compare-call.ll vendor/llvm/dist/test/CodeGen/ARM/copy-paired-reg.ll vendor/llvm/dist/test/CodeGen/ARM/crash-O0.ll vendor/llvm/dist/test/CodeGen/ARM/crash-greedy-v6.ll vendor/llvm/dist/test/CodeGen/ARM/crash.ll vendor/llvm/dist/test/CodeGen/ARM/cse-call.ll vendor/llvm/dist/test/CodeGen/ARM/cse-ldrlit.ll vendor/llvm/dist/test/CodeGen/ARM/cse-libcalls.ll vendor/llvm/dist/test/CodeGen/ARM/dagcombine-anyexttozeroext.ll vendor/llvm/dist/test/CodeGen/ARM/debug-frame-large-stack.ll vendor/llvm/dist/test/CodeGen/ARM/debug-frame-vararg.ll vendor/llvm/dist/test/CodeGen/ARM/debug-frame.ll vendor/llvm/dist/test/CodeGen/ARM/debug-info-arg.ll vendor/llvm/dist/test/CodeGen/ARM/debug-info-blocks.ll vendor/llvm/dist/test/CodeGen/ARM/debug-info-branch-folding.ll vendor/llvm/dist/test/CodeGen/ARM/debug-info-d16-reg.ll vendor/llvm/dist/test/CodeGen/ARM/debug-info-qreg.ll vendor/llvm/dist/test/CodeGen/ARM/debug-info-s16-reg.ll vendor/llvm/dist/test/CodeGen/ARM/debug-info-sreg2.ll vendor/llvm/dist/test/CodeGen/ARM/debug-segmented-stacks.ll vendor/llvm/dist/test/CodeGen/ARM/div.ll vendor/llvm/dist/test/CodeGen/ARM/divmod.ll vendor/llvm/dist/test/CodeGen/ARM/dwarf-eh.ll vendor/llvm/dist/test/CodeGen/ARM/dyn-stackalloc.ll vendor/llvm/dist/test/CodeGen/ARM/ehabi.ll vendor/llvm/dist/test/CodeGen/ARM/emit-big-cst.ll vendor/llvm/dist/test/CodeGen/ARM/extload-knownzero.ll vendor/llvm/dist/test/CodeGen/ARM/extloadi1.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-GEP-coalesce.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-align.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-binary.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-br-const.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-br-phi.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-call-multi-reg-return.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-call.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-cmp-imm.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-conversion.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-crash.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-deadcode.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-ext.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-fold.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-frameaddr.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-icmp.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-indirectbr.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-intrinsic.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-ldr-str-arm.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-ldr-str-thumb-neg-index.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-ldrh-strh-arm.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-load-store-verify.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-mvn.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-pic.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-pred.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-redefinition.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-ret.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-select.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-shifter.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-static.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-vararg.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel.ll vendor/llvm/dist/test/CodeGen/ARM/fastisel-gep-promote-before-add.ll vendor/llvm/dist/test/CodeGen/ARM/fcopysign.ll vendor/llvm/dist/test/CodeGen/ARM/flag-crash.ll vendor/llvm/dist/test/CodeGen/ARM/fnegs.ll vendor/llvm/dist/test/CodeGen/ARM/fold-stack-adjust.ll vendor/llvm/dist/test/CodeGen/ARM/fp.ll vendor/llvm/dist/test/CodeGen/ARM/fp16.ll vendor/llvm/dist/test/CodeGen/ARM/fpcmp-opt.ll vendor/llvm/dist/test/CodeGen/ARM/fpmem.ll vendor/llvm/dist/test/CodeGen/ARM/fptoint.ll vendor/llvm/dist/test/CodeGen/ARM/frame-register.ll vendor/llvm/dist/test/CodeGen/ARM/fusedMAC.ll vendor/llvm/dist/test/CodeGen/ARM/ghc-tcreturn-lowered.ll vendor/llvm/dist/test/CodeGen/ARM/global-merge-1.ll vendor/llvm/dist/test/CodeGen/ARM/global-merge-addrspace.ll vendor/llvm/dist/test/CodeGen/ARM/global-merge.ll vendor/llvm/dist/test/CodeGen/ARM/globals.ll vendor/llvm/dist/test/CodeGen/ARM/gv-stubs-crash.ll vendor/llvm/dist/test/CodeGen/ARM/half.ll vendor/llvm/dist/test/CodeGen/ARM/hello.ll vendor/llvm/dist/test/CodeGen/ARM/hidden-vis-2.ll vendor/llvm/dist/test/CodeGen/ARM/hidden-vis-3.ll vendor/llvm/dist/test/CodeGen/ARM/ifconv-kills.ll vendor/llvm/dist/test/CodeGen/ARM/ifconv-regmask.ll vendor/llvm/dist/test/CodeGen/ARM/ifcvt-branch-weight-bug.ll vendor/llvm/dist/test/CodeGen/ARM/ifcvt-branch-weight.ll vendor/llvm/dist/test/CodeGen/ARM/ifcvt11.ll vendor/llvm/dist/test/CodeGen/ARM/ifcvt3.ll vendor/llvm/dist/test/CodeGen/ARM/ifcvt5.ll vendor/llvm/dist/test/CodeGen/ARM/ifcvt6.ll vendor/llvm/dist/test/CodeGen/ARM/ifcvt7.ll vendor/llvm/dist/test/CodeGen/ARM/illegal-vector-bitcast.ll vendor/llvm/dist/test/CodeGen/ARM/indirect-reg-input.ll vendor/llvm/dist/test/CodeGen/ARM/indirectbr-2.ll vendor/llvm/dist/test/CodeGen/ARM/indirectbr.ll vendor/llvm/dist/test/CodeGen/ARM/inline-diagnostics.ll vendor/llvm/dist/test/CodeGen/ARM/inlineasm-64bit.ll vendor/llvm/dist/test/CodeGen/ARM/interrupt-attr.ll vendor/llvm/dist/test/CodeGen/ARM/intrinsics-crypto.ll vendor/llvm/dist/test/CodeGen/ARM/intrinsics-memory-barrier.ll vendor/llvm/dist/test/CodeGen/ARM/invoke-donothing-assert.ll vendor/llvm/dist/test/CodeGen/ARM/isel-v8i32-crash.ll vendor/llvm/dist/test/CodeGen/ARM/large-stack.ll vendor/llvm/dist/test/CodeGen/ARM/ldm.ll vendor/llvm/dist/test/CodeGen/ARM/ldr.ll vendor/llvm/dist/test/CodeGen/ARM/ldr_ext.ll vendor/llvm/dist/test/CodeGen/ARM/ldr_frame.ll vendor/llvm/dist/test/CodeGen/ARM/ldr_post.ll vendor/llvm/dist/test/CodeGen/ARM/ldr_pre.ll vendor/llvm/dist/test/CodeGen/ARM/ldrd-memoper.ll vendor/llvm/dist/test/CodeGen/ARM/ldrd.ll vendor/llvm/dist/test/CodeGen/ARM/ldst-f32-2-i32.ll vendor/llvm/dist/test/CodeGen/ARM/ldstrex-m.ll vendor/llvm/dist/test/CodeGen/ARM/ldstrex.ll vendor/llvm/dist/test/CodeGen/ARM/load-global.ll vendor/llvm/dist/test/CodeGen/ARM/load.ll vendor/llvm/dist/test/CodeGen/ARM/load_i1_select.ll vendor/llvm/dist/test/CodeGen/ARM/long.ll vendor/llvm/dist/test/CodeGen/ARM/longMAC.ll vendor/llvm/dist/test/CodeGen/ARM/lsr-code-insertion.ll vendor/llvm/dist/test/CodeGen/ARM/lsr-icmp-imm.ll vendor/llvm/dist/test/CodeGen/ARM/lsr-scale-addr-mode.ll vendor/llvm/dist/test/CodeGen/ARM/lsr-unfolded-offset.ll vendor/llvm/dist/test/CodeGen/ARM/machine-cse-cmp.ll vendor/llvm/dist/test/CodeGen/ARM/machine-licm.ll vendor/llvm/dist/test/CodeGen/ARM/memcpy-inline.ll vendor/llvm/dist/test/CodeGen/ARM/memfunc.ll vendor/llvm/dist/test/CodeGen/ARM/memset-inline.ll vendor/llvm/dist/test/CodeGen/ARM/minsize-litpools.ll vendor/llvm/dist/test/CodeGen/ARM/misched-copy-arm.ll vendor/llvm/dist/test/CodeGen/ARM/mult-alt-generic-arm.ll vendor/llvm/dist/test/CodeGen/ARM/negative-offset.ll vendor/llvm/dist/test/CodeGen/ARM/neon-spfp.ll vendor/llvm/dist/test/CodeGen/ARM/neon_cmp.ll vendor/llvm/dist/test/CodeGen/ARM/neon_div.ll vendor/llvm/dist/test/CodeGen/ARM/neon_fpconv.ll vendor/llvm/dist/test/CodeGen/ARM/neon_ld1.ll vendor/llvm/dist/test/CodeGen/ARM/neon_ld2.ll vendor/llvm/dist/test/CodeGen/ARM/neon_spill.ll vendor/llvm/dist/test/CodeGen/ARM/no-fpu.ll vendor/llvm/dist/test/CodeGen/ARM/no-tail-call.ll vendor/llvm/dist/test/CodeGen/ARM/none-macho.ll vendor/llvm/dist/test/CodeGen/ARM/nop_concat_vectors.ll vendor/llvm/dist/test/CodeGen/ARM/null-streamer.ll vendor/llvm/dist/test/CodeGen/ARM/optimize-dmbs-v7.ll vendor/llvm/dist/test/CodeGen/ARM/optselect-regclass.ll vendor/llvm/dist/test/CodeGen/ARM/phi.ll vendor/llvm/dist/test/CodeGen/ARM/popcnt.ll vendor/llvm/dist/test/CodeGen/ARM/pr13249.ll vendor/llvm/dist/test/CodeGen/ARM/pr18364-movw.ll vendor/llvm/dist/test/CodeGen/ARM/pr3502.ll vendor/llvm/dist/test/CodeGen/ARM/prefetch.ll vendor/llvm/dist/test/CodeGen/ARM/private.ll vendor/llvm/dist/test/CodeGen/ARM/reg_sequence.ll vendor/llvm/dist/test/CodeGen/ARM/saxpy10-a9.ll vendor/llvm/dist/test/CodeGen/ARM/section-name.ll vendor/llvm/dist/test/CodeGen/ARM/segmented-stacks.ll vendor/llvm/dist/test/CodeGen/ARM/select_xform.ll vendor/llvm/dist/test/CodeGen/ARM/shifter_operand.ll vendor/llvm/dist/test/CodeGen/ARM/sjlj-prepare-critical-edge.ll vendor/llvm/dist/test/CodeGen/ARM/smul.ll vendor/llvm/dist/test/CodeGen/ARM/space-directive.ll vendor/llvm/dist/test/CodeGen/ARM/spill-q.ll vendor/llvm/dist/test/CodeGen/ARM/ssp-data-layout.ll vendor/llvm/dist/test/CodeGen/ARM/stack-alignment.ll vendor/llvm/dist/test/CodeGen/ARM/stack-protector-bmovpcb_call.ll vendor/llvm/dist/test/CodeGen/ARM/stack_guard_remat.ll vendor/llvm/dist/test/CodeGen/ARM/stm.ll vendor/llvm/dist/test/CodeGen/ARM/str_post.ll vendor/llvm/dist/test/CodeGen/ARM/str_pre-2.ll vendor/llvm/dist/test/CodeGen/ARM/str_pre.ll vendor/llvm/dist/test/CodeGen/ARM/struct-byval-frame-index.ll vendor/llvm/dist/test/CodeGen/ARM/struct_byval.ll vendor/llvm/dist/test/CodeGen/ARM/sub-cmp-peephole.ll vendor/llvm/dist/test/CodeGen/ARM/swift-atomics.ll vendor/llvm/dist/test/CodeGen/ARM/swift-vldm.ll vendor/llvm/dist/test/CodeGen/ARM/tail-dup.ll vendor/llvm/dist/test/CodeGen/ARM/test-sharedidx.ll vendor/llvm/dist/test/CodeGen/ARM/this-return.ll vendor/llvm/dist/test/CodeGen/ARM/thumb1-varalloc.ll vendor/llvm/dist/test/CodeGen/ARM/thumb1_return_sequence.ll vendor/llvm/dist/test/CodeGen/ARM/thumb_indirect_calls.ll vendor/llvm/dist/test/CodeGen/ARM/tls1.ll vendor/llvm/dist/test/CodeGen/ARM/tls2.ll vendor/llvm/dist/test/CodeGen/ARM/tls3.ll vendor/llvm/dist/test/CodeGen/ARM/trunc_ldr.ll vendor/llvm/dist/test/CodeGen/ARM/truncstore-dag-combine.ll vendor/llvm/dist/test/CodeGen/ARM/twoaddrinstr.ll vendor/llvm/dist/test/CodeGen/ARM/uint64tof64.ll vendor/llvm/dist/test/CodeGen/ARM/umulo-32.ll vendor/llvm/dist/test/CodeGen/ARM/unaligned_load_store.ll vendor/llvm/dist/test/CodeGen/ARM/unaligned_load_store_vector.ll vendor/llvm/dist/test/CodeGen/ARM/undef-sext.ll vendor/llvm/dist/test/CodeGen/ARM/vaba.ll vendor/llvm/dist/test/CodeGen/ARM/vabd.ll vendor/llvm/dist/test/CodeGen/ARM/vabs.ll vendor/llvm/dist/test/CodeGen/ARM/vadd.ll vendor/llvm/dist/test/CodeGen/ARM/varargs-spill-stack-align-nacl.ll vendor/llvm/dist/test/CodeGen/ARM/vargs.ll vendor/llvm/dist/test/CodeGen/ARM/vargs_align.ll vendor/llvm/dist/test/CodeGen/ARM/vbits.ll vendor/llvm/dist/test/CodeGen/ARM/vbsl-constant.ll vendor/llvm/dist/test/CodeGen/ARM/vbsl.ll vendor/llvm/dist/test/CodeGen/ARM/vceq.ll vendor/llvm/dist/test/CodeGen/ARM/vcge.ll vendor/llvm/dist/test/CodeGen/ARM/vcgt.ll vendor/llvm/dist/test/CodeGen/ARM/vcnt.ll vendor/llvm/dist/test/CodeGen/ARM/vcombine.ll vendor/llvm/dist/test/CodeGen/ARM/vcvt-cost.ll vendor/llvm/dist/test/CodeGen/ARM/vcvt-v8.ll vendor/llvm/dist/test/CodeGen/ARM/vcvt.ll vendor/llvm/dist/test/CodeGen/ARM/vcvt_combine.ll vendor/llvm/dist/test/CodeGen/ARM/vdiv_combine.ll vendor/llvm/dist/test/CodeGen/ARM/vdup.ll vendor/llvm/dist/test/CodeGen/ARM/vector-DAGCombine.ll vendor/llvm/dist/test/CodeGen/ARM/vector-extend-narrow.ll vendor/llvm/dist/test/CodeGen/ARM/vector-promotion.ll vendor/llvm/dist/test/CodeGen/ARM/vector-spilling.ll vendor/llvm/dist/test/CodeGen/ARM/vext.ll vendor/llvm/dist/test/CodeGen/ARM/vfcmp.ll vendor/llvm/dist/test/CodeGen/ARM/vfp-libcalls.ll vendor/llvm/dist/test/CodeGen/ARM/vfp-regs-dwarf.ll vendor/llvm/dist/test/CodeGen/ARM/vfp.ll vendor/llvm/dist/test/CodeGen/ARM/vget_lane.ll vendor/llvm/dist/test/CodeGen/ARM/vhadd.ll vendor/llvm/dist/test/CodeGen/ARM/vhsub.ll vendor/llvm/dist/test/CodeGen/ARM/vicmp.ll vendor/llvm/dist/test/CodeGen/ARM/vld1.ll vendor/llvm/dist/test/CodeGen/ARM/vld2.ll vendor/llvm/dist/test/CodeGen/ARM/vld3.ll vendor/llvm/dist/test/CodeGen/ARM/vld4.ll vendor/llvm/dist/test/CodeGen/ARM/vlddup.ll vendor/llvm/dist/test/CodeGen/ARM/vldlane.ll vendor/llvm/dist/test/CodeGen/ARM/vldm-liveness.ll vendor/llvm/dist/test/CodeGen/ARM/vldm-sched-a9.ll vendor/llvm/dist/test/CodeGen/ARM/vminmax.ll vendor/llvm/dist/test/CodeGen/ARM/vminmaxnm.ll vendor/llvm/dist/test/CodeGen/ARM/vmla.ll vendor/llvm/dist/test/CodeGen/ARM/vmls.ll vendor/llvm/dist/test/CodeGen/ARM/vmov.ll vendor/llvm/dist/test/CodeGen/ARM/vmul.ll vendor/llvm/dist/test/CodeGen/ARM/vneg.ll vendor/llvm/dist/test/CodeGen/ARM/vpadal.ll vendor/llvm/dist/test/CodeGen/ARM/vpadd.ll vendor/llvm/dist/test/CodeGen/ARM/vpminmax.ll vendor/llvm/dist/test/CodeGen/ARM/vqadd.ll vendor/llvm/dist/test/CodeGen/ARM/vqdmul.ll vendor/llvm/dist/test/CodeGen/ARM/vqshl.ll vendor/llvm/dist/test/CodeGen/ARM/vqshrn.ll vendor/llvm/dist/test/CodeGen/ARM/vqsub.ll vendor/llvm/dist/test/CodeGen/ARM/vrec.ll vendor/llvm/dist/test/CodeGen/ARM/vrev.ll vendor/llvm/dist/test/CodeGen/ARM/vselect_imax.ll vendor/llvm/dist/test/CodeGen/ARM/vshift.ll vendor/llvm/dist/test/CodeGen/ARM/vshiftins.ll vendor/llvm/dist/test/CodeGen/ARM/vshl.ll vendor/llvm/dist/test/CodeGen/ARM/vshll.ll vendor/llvm/dist/test/CodeGen/ARM/vshrn.ll vendor/llvm/dist/test/CodeGen/ARM/vsra.ll vendor/llvm/dist/test/CodeGen/ARM/vst1.ll vendor/llvm/dist/test/CodeGen/ARM/vst2.ll vendor/llvm/dist/test/CodeGen/ARM/vst3.ll vendor/llvm/dist/test/CodeGen/ARM/vst4.ll vendor/llvm/dist/test/CodeGen/ARM/vstlane.ll vendor/llvm/dist/test/CodeGen/ARM/vsub.ll vendor/llvm/dist/test/CodeGen/ARM/vtbl.ll vendor/llvm/dist/test/CodeGen/ARM/vtrn.ll vendor/llvm/dist/test/CodeGen/ARM/vuzp.ll vendor/llvm/dist/test/CodeGen/ARM/vzip.ll vendor/llvm/dist/test/CodeGen/ARM/warn-stack.ll vendor/llvm/dist/test/CodeGen/ARM/weak2.ll vendor/llvm/dist/test/CodeGen/ARM/wrong-t2stmia-size-opt.ll vendor/llvm/dist/test/CodeGen/ARM/zextload_demandedbits.ll vendor/llvm/dist/test/CodeGen/CPP/2009-05-01-Long-Double.ll vendor/llvm/dist/test/CodeGen/CPP/2009-05-04-CondBr.ll vendor/llvm/dist/test/CodeGen/Generic/2003-05-28-ManyArgs.ll vendor/llvm/dist/test/CodeGen/Generic/2003-05-30-BadFoldGEP.ll vendor/llvm/dist/test/CodeGen/Generic/2003-07-06-BadIntCmp.ll vendor/llvm/dist/test/CodeGen/Generic/2003-07-07-BadLongConst.ll vendor/llvm/dist/test/CodeGen/Generic/2003-07-08-BadCastToBool.ll vendor/llvm/dist/test/CodeGen/Generic/2003-07-29-BadConstSbyte.ll vendor/llvm/dist/test/CodeGen/Generic/2004-05-09-LiveVarPartialRegister.ll vendor/llvm/dist/test/CodeGen/Generic/2005-04-09-GlobalInPHI.ll vendor/llvm/dist/test/CodeGen/Generic/2005-12-01-Crash.ll vendor/llvm/dist/test/CodeGen/Generic/2006-02-12-InsertLibcall.ll vendor/llvm/dist/test/CodeGen/Generic/2006-03-01-dagcombineinfloop.ll vendor/llvm/dist/test/CodeGen/Generic/2006-04-26-SetCCAnd.ll vendor/llvm/dist/test/CodeGen/Generic/2006-05-06-GEP-Cast-Sink-Crash.ll vendor/llvm/dist/test/CodeGen/Generic/2006-06-13-ComputeMaskedBitsCrash.ll vendor/llvm/dist/test/CodeGen/Generic/2006-06-28-SimplifySetCCCrash.ll vendor/llvm/dist/test/CodeGen/Generic/2006-09-02-LocalAllocCrash.ll vendor/llvm/dist/test/CodeGen/Generic/2006-11-20-DAGCombineCrash.ll vendor/llvm/dist/test/CodeGen/Generic/2007-01-15-LoadSelectCycle.ll vendor/llvm/dist/test/CodeGen/Generic/2007-05-03-EHTypeInfo.ll vendor/llvm/dist/test/CodeGen/Generic/2008-01-25-dag-combine-mul.ll vendor/llvm/dist/test/CodeGen/Generic/2008-01-30-LoadCrash.ll vendor/llvm/dist/test/CodeGen/Generic/2008-02-04-Ctlz.ll vendor/llvm/dist/test/CodeGen/Generic/2008-02-20-MatchingMem.ll vendor/llvm/dist/test/CodeGen/Generic/2008-02-25-NegateZero.ll vendor/llvm/dist/test/CodeGen/Generic/2008-08-07-PtrToInt-SmallerInt.ll vendor/llvm/dist/test/CodeGen/Generic/2009-03-29-SoftFloatVectorExtract.ll vendor/llvm/dist/test/CodeGen/Generic/2009-04-28-i128-cmp-crash.ll vendor/llvm/dist/test/CodeGen/Generic/2011-07-07-ScheduleDAGCrash.ll vendor/llvm/dist/test/CodeGen/Generic/2012-06-08-APIntCrash.ll vendor/llvm/dist/test/CodeGen/Generic/2014-02-05-OpaqueConstants.ll vendor/llvm/dist/test/CodeGen/Generic/APIntLoadStore.ll vendor/llvm/dist/test/CodeGen/Generic/ConstantExprLowering.ll vendor/llvm/dist/test/CodeGen/Generic/MachineBranchProb.ll vendor/llvm/dist/test/CodeGen/Generic/PBQP.ll vendor/llvm/dist/test/CodeGen/Generic/add-with-overflow-128.ll vendor/llvm/dist/test/CodeGen/Generic/add-with-overflow-24.ll vendor/llvm/dist/test/CodeGen/Generic/add-with-overflow.ll vendor/llvm/dist/test/CodeGen/Generic/annotate.ll vendor/llvm/dist/test/CodeGen/Generic/badFoldGEP.ll vendor/llvm/dist/test/CodeGen/Generic/badarg6.ll vendor/llvm/dist/test/CodeGen/Generic/builtin-expect.ll vendor/llvm/dist/test/CodeGen/Generic/cast-fp.ll vendor/llvm/dist/test/CodeGen/Generic/constindices.ll vendor/llvm/dist/test/CodeGen/Generic/crash.ll vendor/llvm/dist/test/CodeGen/Generic/dag-combine-crash.ll vendor/llvm/dist/test/CodeGen/Generic/dbg_value.ll vendor/llvm/dist/test/CodeGen/Generic/empty-load-store.ll vendor/llvm/dist/test/CodeGen/Generic/empty-phi.ll vendor/llvm/dist/test/CodeGen/Generic/fastcall.ll vendor/llvm/dist/test/CodeGen/Generic/fp-to-int-invalid.ll vendor/llvm/dist/test/CodeGen/Generic/fwdtwice.ll vendor/llvm/dist/test/CodeGen/Generic/global-ret0.ll vendor/llvm/dist/test/CodeGen/Generic/hello.ll vendor/llvm/dist/test/CodeGen/Generic/inline-asm-mem-clobber.ll vendor/llvm/dist/test/CodeGen/Generic/invalid-memcpy.ll vendor/llvm/dist/test/CodeGen/Generic/negintconst.ll vendor/llvm/dist/test/CodeGen/Generic/pr2625.ll vendor/llvm/dist/test/CodeGen/Generic/print-add.ll vendor/llvm/dist/test/CodeGen/Generic/print-arith-fp.ll vendor/llvm/dist/test/CodeGen/Generic/print-arith-int.ll vendor/llvm/dist/test/CodeGen/Generic/print-int.ll vendor/llvm/dist/test/CodeGen/Generic/print-mul-exp.ll vendor/llvm/dist/test/CodeGen/Generic/print-mul.ll vendor/llvm/dist/test/CodeGen/Generic/print-shift.ll vendor/llvm/dist/test/CodeGen/Generic/ptr-annotate.ll vendor/llvm/dist/test/CodeGen/Generic/select.ll vendor/llvm/dist/test/CodeGen/Generic/stop-after.ll vendor/llvm/dist/test/CodeGen/Generic/undef-phi.ll vendor/llvm/dist/test/CodeGen/Generic/v-split.ll vendor/llvm/dist/test/CodeGen/Generic/vector-casts.ll vendor/llvm/dist/test/CodeGen/Generic/vector-identity-shuffle.ll vendor/llvm/dist/test/CodeGen/Generic/vector.ll vendor/llvm/dist/test/CodeGen/Hexagon/BranchPredict.ll vendor/llvm/dist/test/CodeGen/Hexagon/absaddr-store.ll vendor/llvm/dist/test/CodeGen/Hexagon/absimm.ll vendor/llvm/dist/test/CodeGen/Hexagon/adde.ll vendor/llvm/dist/test/CodeGen/Hexagon/always-ext.ll vendor/llvm/dist/test/CodeGen/Hexagon/block-addr.ll vendor/llvm/dist/test/CodeGen/Hexagon/cext-check.ll vendor/llvm/dist/test/CodeGen/Hexagon/cext-valid-packet2.ll vendor/llvm/dist/test/CodeGen/Hexagon/cmp-to-predreg.ll vendor/llvm/dist/test/CodeGen/Hexagon/cmp_pred.ll vendor/llvm/dist/test/CodeGen/Hexagon/cmp_pred2.ll vendor/llvm/dist/test/CodeGen/Hexagon/cmp_pred_reg.ll vendor/llvm/dist/test/CodeGen/Hexagon/cmpb_pred.ll vendor/llvm/dist/test/CodeGen/Hexagon/combine.ll vendor/llvm/dist/test/CodeGen/Hexagon/combine_ir.ll vendor/llvm/dist/test/CodeGen/Hexagon/convertdptoint.ll vendor/llvm/dist/test/CodeGen/Hexagon/convertdptoll.ll vendor/llvm/dist/test/CodeGen/Hexagon/convertsptoint.ll vendor/llvm/dist/test/CodeGen/Hexagon/convertsptoll.ll vendor/llvm/dist/test/CodeGen/Hexagon/ctlz-cttz-ctpop.ll vendor/llvm/dist/test/CodeGen/Hexagon/dadd.ll vendor/llvm/dist/test/CodeGen/Hexagon/dmul.ll vendor/llvm/dist/test/CodeGen/Hexagon/double.ll vendor/llvm/dist/test/CodeGen/Hexagon/doubleconvert-ieee-rnd-near.ll vendor/llvm/dist/test/CodeGen/Hexagon/dsub.ll vendor/llvm/dist/test/CodeGen/Hexagon/dualstore.ll vendor/llvm/dist/test/CodeGen/Hexagon/extload-combine.ll vendor/llvm/dist/test/CodeGen/Hexagon/fadd.ll vendor/llvm/dist/test/CodeGen/Hexagon/fcmp.ll vendor/llvm/dist/test/CodeGen/Hexagon/float.ll vendor/llvm/dist/test/CodeGen/Hexagon/floatconvert-ieee-rnd-near.ll vendor/llvm/dist/test/CodeGen/Hexagon/fmul.ll vendor/llvm/dist/test/CodeGen/Hexagon/frame.ll vendor/llvm/dist/test/CodeGen/Hexagon/fsub.ll vendor/llvm/dist/test/CodeGen/Hexagon/fusedandshift.ll vendor/llvm/dist/test/CodeGen/Hexagon/gp-plus-offset-load.ll vendor/llvm/dist/test/CodeGen/Hexagon/gp-plus-offset-store.ll vendor/llvm/dist/test/CodeGen/Hexagon/gp-rel.ll vendor/llvm/dist/test/CodeGen/Hexagon/hwloop-cleanup.ll vendor/llvm/dist/test/CodeGen/Hexagon/hwloop-const.ll vendor/llvm/dist/test/CodeGen/Hexagon/hwloop-dbg.ll vendor/llvm/dist/test/CodeGen/Hexagon/hwloop-le.ll vendor/llvm/dist/test/CodeGen/Hexagon/hwloop-lt.ll vendor/llvm/dist/test/CodeGen/Hexagon/hwloop-lt1.ll vendor/llvm/dist/test/CodeGen/Hexagon/hwloop-ne.ll vendor/llvm/dist/test/CodeGen/Hexagon/i16_VarArg.ll vendor/llvm/dist/test/CodeGen/Hexagon/i1_VarArg.ll vendor/llvm/dist/test/CodeGen/Hexagon/i8_VarArg.ll vendor/llvm/dist/test/CodeGen/Hexagon/idxload-with-zero-offset.ll vendor/llvm/dist/test/CodeGen/Hexagon/macint.ll vendor/llvm/dist/test/CodeGen/Hexagon/memops.ll vendor/llvm/dist/test/CodeGen/Hexagon/memops1.ll vendor/llvm/dist/test/CodeGen/Hexagon/memops2.ll vendor/llvm/dist/test/CodeGen/Hexagon/memops3.ll vendor/llvm/dist/test/CodeGen/Hexagon/misaligned-access.ll vendor/llvm/dist/test/CodeGen/Hexagon/mpy.ll vendor/llvm/dist/test/CodeGen/Hexagon/newvaluejump.ll vendor/llvm/dist/test/CodeGen/Hexagon/newvaluejump2.ll vendor/llvm/dist/test/CodeGen/Hexagon/newvaluestore.ll vendor/llvm/dist/test/CodeGen/Hexagon/opt-fabs.ll vendor/llvm/dist/test/CodeGen/Hexagon/opt-fneg.ll vendor/llvm/dist/test/CodeGen/Hexagon/postinc-load.ll vendor/llvm/dist/test/CodeGen/Hexagon/postinc-store.ll vendor/llvm/dist/test/CodeGen/Hexagon/pred-absolute-store.ll vendor/llvm/dist/test/CodeGen/Hexagon/pred-gp.ll vendor/llvm/dist/test/CodeGen/Hexagon/pred-instrs.ll vendor/llvm/dist/test/CodeGen/Hexagon/remove_lsr.ll vendor/llvm/dist/test/CodeGen/Hexagon/static.ll vendor/llvm/dist/test/CodeGen/Hexagon/struct_args.ll vendor/llvm/dist/test/CodeGen/Hexagon/struct_args_large.ll vendor/llvm/dist/test/CodeGen/Hexagon/sube.ll vendor/llvm/dist/test/CodeGen/Hexagon/tfr-to-combine.ll vendor/llvm/dist/test/CodeGen/Hexagon/union-1.ll vendor/llvm/dist/test/CodeGen/Hexagon/vaddh.ll vendor/llvm/dist/test/CodeGen/Hexagon/validate-offset.ll vendor/llvm/dist/test/CodeGen/Hexagon/zextloadi1.ll vendor/llvm/dist/test/CodeGen/Inputs/DbgValueOtherTargets.ll vendor/llvm/dist/test/CodeGen/MSP430/2009-05-10-CyclicDAG.ll vendor/llvm/dist/test/CodeGen/MSP430/2009-05-17-Rot.ll vendor/llvm/dist/test/CodeGen/MSP430/2009-05-17-Shift.ll vendor/llvm/dist/test/CodeGen/MSP430/2009-08-25-DynamicStackAlloc.ll vendor/llvm/dist/test/CodeGen/MSP430/2009-09-18-AbsoluteAddr.ll vendor/llvm/dist/test/CodeGen/MSP430/2009-10-10-OrImpDef.ll vendor/llvm/dist/test/CodeGen/MSP430/2009-11-08-InvalidResNo.ll vendor/llvm/dist/test/CodeGen/MSP430/2009-12-22-InlineAsm.ll vendor/llvm/dist/test/CodeGen/MSP430/2010-05-01-CombinerAnd.ll vendor/llvm/dist/test/CodeGen/MSP430/AddrMode-bis-rx.ll vendor/llvm/dist/test/CodeGen/MSP430/AddrMode-bis-xr.ll vendor/llvm/dist/test/CodeGen/MSP430/AddrMode-mov-rx.ll vendor/llvm/dist/test/CodeGen/MSP430/AddrMode-mov-xr.ll vendor/llvm/dist/test/CodeGen/MSP430/Inst16mi.ll vendor/llvm/dist/test/CodeGen/MSP430/Inst16mm.ll vendor/llvm/dist/test/CodeGen/MSP430/Inst16mr.ll vendor/llvm/dist/test/CodeGen/MSP430/Inst16rm.ll vendor/llvm/dist/test/CodeGen/MSP430/Inst8mi.ll vendor/llvm/dist/test/CodeGen/MSP430/Inst8mm.ll vendor/llvm/dist/test/CodeGen/MSP430/Inst8mr.ll vendor/llvm/dist/test/CodeGen/MSP430/Inst8rm.ll vendor/llvm/dist/test/CodeGen/MSP430/bit.ll vendor/llvm/dist/test/CodeGen/MSP430/byval.ll vendor/llvm/dist/test/CodeGen/MSP430/indirectbr.ll vendor/llvm/dist/test/CodeGen/MSP430/indirectbr2.ll vendor/llvm/dist/test/CodeGen/MSP430/inline-asm.ll vendor/llvm/dist/test/CodeGen/MSP430/jumptable.ll vendor/llvm/dist/test/CodeGen/MSP430/memset.ll vendor/llvm/dist/test/CodeGen/MSP430/misched-msp430.ll vendor/llvm/dist/test/CodeGen/MSP430/mult-alt-generic-msp430.ll vendor/llvm/dist/test/CodeGen/MSP430/postinc.ll vendor/llvm/dist/test/CodeGen/Mips/2008-07-03-SRet.ll vendor/llvm/dist/test/CodeGen/Mips/2008-07-15-InternalConstant.ll vendor/llvm/dist/test/CodeGen/Mips/2008-07-15-SmallSection.ll vendor/llvm/dist/test/CodeGen/Mips/2008-08-01-AsmInline.ll vendor/llvm/dist/test/CodeGen/Mips/2008-08-03-ReturnDouble.ll vendor/llvm/dist/test/CodeGen/Mips/2008-10-13-LegalizerBug.ll vendor/llvm/dist/test/CodeGen/Mips/2008-11-10-xint_to_fp.ll vendor/llvm/dist/test/CodeGen/Mips/2009-11-16-CstPoolLoad.ll vendor/llvm/dist/test/CodeGen/Mips/2010-07-20-Switch.ll vendor/llvm/dist/test/CodeGen/Mips/2012-12-12-ExpandMemcpy.ll vendor/llvm/dist/test/CodeGen/Mips/Fast-ISel/br1.ll vendor/llvm/dist/test/CodeGen/Mips/Fast-ISel/callabi.ll vendor/llvm/dist/test/CodeGen/Mips/Fast-ISel/fpcmpa.ll vendor/llvm/dist/test/CodeGen/Mips/Fast-ISel/fpext.ll vendor/llvm/dist/test/CodeGen/Mips/Fast-ISel/fpintconv.ll vendor/llvm/dist/test/CodeGen/Mips/Fast-ISel/fptrunc.ll vendor/llvm/dist/test/CodeGen/Mips/Fast-ISel/icmpa.ll vendor/llvm/dist/test/CodeGen/Mips/Fast-ISel/loadstore2.ll vendor/llvm/dist/test/CodeGen/Mips/Fast-ISel/loadstoreconv.ll vendor/llvm/dist/test/CodeGen/Mips/Fast-ISel/loadstrconst.ll vendor/llvm/dist/test/CodeGen/Mips/Fast-ISel/nullvoid.ll vendor/llvm/dist/test/CodeGen/Mips/Fast-ISel/shift.ll vendor/llvm/dist/test/CodeGen/Mips/Fast-ISel/simplestore.ll vendor/llvm/dist/test/CodeGen/Mips/Fast-ISel/simplestorefp1.ll vendor/llvm/dist/test/CodeGen/Mips/Fast-ISel/simplestorei.ll vendor/llvm/dist/test/CodeGen/Mips/abiflags32.ll vendor/llvm/dist/test/CodeGen/Mips/addi.ll vendor/llvm/dist/test/CodeGen/Mips/addressing-mode.ll vendor/llvm/dist/test/CodeGen/Mips/align16.ll vendor/llvm/dist/test/CodeGen/Mips/alloca.ll vendor/llvm/dist/test/CodeGen/Mips/alloca16.ll vendor/llvm/dist/test/CodeGen/Mips/analyzebranch.ll vendor/llvm/dist/test/CodeGen/Mips/and1.ll vendor/llvm/dist/test/CodeGen/Mips/atomic.ll vendor/llvm/dist/test/CodeGen/Mips/atomicops.ll vendor/llvm/dist/test/CodeGen/Mips/beqzc.ll vendor/llvm/dist/test/CodeGen/Mips/beqzc1.ll vendor/llvm/dist/test/CodeGen/Mips/biggot.ll vendor/llvm/dist/test/CodeGen/Mips/blockaddr.ll vendor/llvm/dist/test/CodeGen/Mips/brconeq.ll vendor/llvm/dist/test/CodeGen/Mips/brconeqk.ll vendor/llvm/dist/test/CodeGen/Mips/brconeqz.ll vendor/llvm/dist/test/CodeGen/Mips/brconge.ll vendor/llvm/dist/test/CodeGen/Mips/brcongt.ll vendor/llvm/dist/test/CodeGen/Mips/brconle.ll vendor/llvm/dist/test/CodeGen/Mips/brconlt.ll vendor/llvm/dist/test/CodeGen/Mips/brconne.ll vendor/llvm/dist/test/CodeGen/Mips/brconnek.ll vendor/llvm/dist/test/CodeGen/Mips/brconnez.ll vendor/llvm/dist/test/CodeGen/Mips/brdelayslot.ll vendor/llvm/dist/test/CodeGen/Mips/brind.ll vendor/llvm/dist/test/CodeGen/Mips/brsize3.ll vendor/llvm/dist/test/CodeGen/Mips/brsize3a.ll vendor/llvm/dist/test/CodeGen/Mips/cache-intrinsic.ll vendor/llvm/dist/test/CodeGen/Mips/cconv/arguments-float.ll vendor/llvm/dist/test/CodeGen/Mips/cconv/arguments-fp128.ll vendor/llvm/dist/test/CodeGen/Mips/cconv/arguments-hard-float-varargs.ll vendor/llvm/dist/test/CodeGen/Mips/cconv/arguments-hard-float.ll vendor/llvm/dist/test/CodeGen/Mips/cconv/arguments-hard-fp128.ll vendor/llvm/dist/test/CodeGen/Mips/cconv/arguments-small-structures-bigger-than-32bits.ll vendor/llvm/dist/test/CodeGen/Mips/cconv/arguments-struct.ll vendor/llvm/dist/test/CodeGen/Mips/cconv/arguments-varargs-small-structs-byte.ll vendor/llvm/dist/test/CodeGen/Mips/cconv/arguments-varargs-small-structs-combinations.ll vendor/llvm/dist/test/CodeGen/Mips/cconv/arguments-varargs-small-structs-multiple-args.ll vendor/llvm/dist/test/CodeGen/Mips/cconv/arguments-varargs.ll vendor/llvm/dist/test/CodeGen/Mips/cconv/arguments.ll vendor/llvm/dist/test/CodeGen/Mips/cconv/callee-saved-float.ll vendor/llvm/dist/test/CodeGen/Mips/cconv/callee-saved.ll vendor/llvm/dist/test/CodeGen/Mips/cconv/memory-layout.ll vendor/llvm/dist/test/CodeGen/Mips/cconv/reserved-space.ll vendor/llvm/dist/test/CodeGen/Mips/cconv/return-float.ll vendor/llvm/dist/test/CodeGen/Mips/cconv/return-hard-float.ll vendor/llvm/dist/test/CodeGen/Mips/cconv/return-hard-fp128.ll vendor/llvm/dist/test/CodeGen/Mips/cconv/return-hard-struct-f128.ll vendor/llvm/dist/test/CodeGen/Mips/cconv/return-struct.ll vendor/llvm/dist/test/CodeGen/Mips/cconv/return.ll vendor/llvm/dist/test/CodeGen/Mips/cconv/stack-alignment.ll vendor/llvm/dist/test/CodeGen/Mips/cfi_offset.ll vendor/llvm/dist/test/CodeGen/Mips/check-adde-redundant-moves.ll vendor/llvm/dist/test/CodeGen/Mips/ci2.ll vendor/llvm/dist/test/CodeGen/Mips/cmov.ll vendor/llvm/dist/test/CodeGen/Mips/cmplarge.ll vendor/llvm/dist/test/CodeGen/Mips/const1.ll vendor/llvm/dist/test/CodeGen/Mips/const4a.ll vendor/llvm/dist/test/CodeGen/Mips/const6.ll vendor/llvm/dist/test/CodeGen/Mips/const6a.ll vendor/llvm/dist/test/CodeGen/Mips/ctlz.ll vendor/llvm/dist/test/CodeGen/Mips/disable-tail-merge.ll vendor/llvm/dist/test/CodeGen/Mips/div.ll vendor/llvm/dist/test/CodeGen/Mips/div_rem.ll vendor/llvm/dist/test/CodeGen/Mips/divrem.ll vendor/llvm/dist/test/CodeGen/Mips/divu.ll vendor/llvm/dist/test/CodeGen/Mips/divu_remu.ll vendor/llvm/dist/test/CodeGen/Mips/dsp-patterns.ll vendor/llvm/dist/test/CodeGen/Mips/dsp-vec-load-store.ll vendor/llvm/dist/test/CodeGen/Mips/eh-return32.ll vendor/llvm/dist/test/CodeGen/Mips/eh-return64.ll vendor/llvm/dist/test/CodeGen/Mips/eh.ll vendor/llvm/dist/test/CodeGen/Mips/ehframe-indirect.ll vendor/llvm/dist/test/CodeGen/Mips/emit-big-cst.ll vendor/llvm/dist/test/CodeGen/Mips/ex2.ll vendor/llvm/dist/test/CodeGen/Mips/extins.ll vendor/llvm/dist/test/CodeGen/Mips/f16abs.ll vendor/llvm/dist/test/CodeGen/Mips/fastcc.ll vendor/llvm/dist/test/CodeGen/Mips/fcopysign-f32-f64.ll vendor/llvm/dist/test/CodeGen/Mips/fcopysign.ll vendor/llvm/dist/test/CodeGen/Mips/fixdfsf.ll vendor/llvm/dist/test/CodeGen/Mips/fmadd1.ll vendor/llvm/dist/test/CodeGen/Mips/fp-indexed-ls.ll vendor/llvm/dist/test/CodeGen/Mips/fp-spill-reload.ll vendor/llvm/dist/test/CodeGen/Mips/fp16instrinsmc.ll vendor/llvm/dist/test/CodeGen/Mips/fp16static.ll vendor/llvm/dist/test/CodeGen/Mips/fpbr.ll vendor/llvm/dist/test/CodeGen/Mips/fpneeded.ll vendor/llvm/dist/test/CodeGen/Mips/fpnotneeded.ll vendor/llvm/dist/test/CodeGen/Mips/fpxx.ll vendor/llvm/dist/test/CodeGen/Mips/global-address.ll vendor/llvm/dist/test/CodeGen/Mips/gpreg-lazy-binding.ll vendor/llvm/dist/test/CodeGen/Mips/gprestore.ll vendor/llvm/dist/test/CodeGen/Mips/helloworld.ll vendor/llvm/dist/test/CodeGen/Mips/hf16_1.ll vendor/llvm/dist/test/CodeGen/Mips/hf16call32.ll vendor/llvm/dist/test/CodeGen/Mips/hf16call32_body.ll vendor/llvm/dist/test/CodeGen/Mips/hf1_body.ll vendor/llvm/dist/test/CodeGen/Mips/hfptrcall.ll vendor/llvm/dist/test/CodeGen/Mips/i32k.ll vendor/llvm/dist/test/CodeGen/Mips/inlineasm-assembler-directives.ll vendor/llvm/dist/test/CodeGen/Mips/inlineasm-cnstrnt-reg64.ll vendor/llvm/dist/test/CodeGen/Mips/inlineasm-operand-code.ll vendor/llvm/dist/test/CodeGen/Mips/inlineasm64.ll vendor/llvm/dist/test/CodeGen/Mips/inlineasm_constraint.ll vendor/llvm/dist/test/CodeGen/Mips/inlineasmmemop.ll vendor/llvm/dist/test/CodeGen/Mips/internalfunc.ll vendor/llvm/dist/test/CodeGen/Mips/jtstat.ll vendor/llvm/dist/test/CodeGen/Mips/l3mc.ll vendor/llvm/dist/test/CodeGen/Mips/largeimm1.ll vendor/llvm/dist/test/CodeGen/Mips/largeimmprinting.ll vendor/llvm/dist/test/CodeGen/Mips/lb1.ll vendor/llvm/dist/test/CodeGen/Mips/lbu1.ll vendor/llvm/dist/test/CodeGen/Mips/lcb2.ll vendor/llvm/dist/test/CodeGen/Mips/lcb3c.ll vendor/llvm/dist/test/CodeGen/Mips/lcb4a.ll vendor/llvm/dist/test/CodeGen/Mips/lcb5.ll vendor/llvm/dist/test/CodeGen/Mips/lh1.ll vendor/llvm/dist/test/CodeGen/Mips/lhu1.ll vendor/llvm/dist/test/CodeGen/Mips/llcarry.ll vendor/llvm/dist/test/CodeGen/Mips/llvm-ir/add.ll vendor/llvm/dist/test/CodeGen/Mips/llvm-ir/and.ll vendor/llvm/dist/test/CodeGen/Mips/llvm-ir/ashr.ll vendor/llvm/dist/test/CodeGen/Mips/llvm-ir/call.ll vendor/llvm/dist/test/CodeGen/Mips/llvm-ir/indirectbr.ll vendor/llvm/dist/test/CodeGen/Mips/llvm-ir/lshr.ll vendor/llvm/dist/test/CodeGen/Mips/llvm-ir/mul.ll vendor/llvm/dist/test/CodeGen/Mips/llvm-ir/or.ll vendor/llvm/dist/test/CodeGen/Mips/llvm-ir/ret.ll vendor/llvm/dist/test/CodeGen/Mips/llvm-ir/sdiv.ll vendor/llvm/dist/test/CodeGen/Mips/llvm-ir/select.ll vendor/llvm/dist/test/CodeGen/Mips/llvm-ir/shl.ll vendor/llvm/dist/test/CodeGen/Mips/llvm-ir/srem.ll vendor/llvm/dist/test/CodeGen/Mips/llvm-ir/sub.ll vendor/llvm/dist/test/CodeGen/Mips/llvm-ir/udiv.ll vendor/llvm/dist/test/CodeGen/Mips/llvm-ir/urem.ll vendor/llvm/dist/test/CodeGen/Mips/llvm-ir/xor.ll vendor/llvm/dist/test/CodeGen/Mips/load-store-left-right.ll vendor/llvm/dist/test/CodeGen/Mips/longbranch.ll vendor/llvm/dist/test/CodeGen/Mips/machineverifier.ll vendor/llvm/dist/test/CodeGen/Mips/mbrsize4a.ll vendor/llvm/dist/test/CodeGen/Mips/memcpy.ll vendor/llvm/dist/test/CodeGen/Mips/micromips-addiu.ll vendor/llvm/dist/test/CodeGen/Mips/micromips-andi.ll vendor/llvm/dist/test/CodeGen/Mips/micromips-compact-branches.ll vendor/llvm/dist/test/CodeGen/Mips/micromips-delay-slot-jr.ll vendor/llvm/dist/test/CodeGen/Mips/micromips-delay-slot.ll vendor/llvm/dist/test/CodeGen/Mips/micromips-jal.ll vendor/llvm/dist/test/CodeGen/Mips/micromips-load-effective-address.ll vendor/llvm/dist/test/CodeGen/Mips/micromips-rdhwr-directives.ll vendor/llvm/dist/test/CodeGen/Mips/micromips-shift.ll vendor/llvm/dist/test/CodeGen/Mips/mips16_32_8.ll vendor/llvm/dist/test/CodeGen/Mips/mips16_fpret.ll vendor/llvm/dist/test/CodeGen/Mips/mips16ex.ll vendor/llvm/dist/test/CodeGen/Mips/mips16fpe.ll vendor/llvm/dist/test/CodeGen/Mips/mips64-f128-call.ll vendor/llvm/dist/test/CodeGen/Mips/mips64-f128.ll vendor/llvm/dist/test/CodeGen/Mips/mips64-libcall.ll vendor/llvm/dist/test/CodeGen/Mips/mips64-sret.ll vendor/llvm/dist/test/CodeGen/Mips/mips64directive.ll vendor/llvm/dist/test/CodeGen/Mips/mips64ext.ll vendor/llvm/dist/test/CodeGen/Mips/mips64extins.ll vendor/llvm/dist/test/CodeGen/Mips/mips64fpimm0.ll vendor/llvm/dist/test/CodeGen/Mips/mips64fpldst.ll vendor/llvm/dist/test/CodeGen/Mips/mips64instrs.ll vendor/llvm/dist/test/CodeGen/Mips/mips64intldst.ll vendor/llvm/dist/test/CodeGen/Mips/mips64shift.ll vendor/llvm/dist/test/CodeGen/Mips/mips64signextendsesf.ll vendor/llvm/dist/test/CodeGen/Mips/mips64sinttofpsf.ll vendor/llvm/dist/test/CodeGen/Mips/mipslopat.ll vendor/llvm/dist/test/CodeGen/Mips/misha.ll vendor/llvm/dist/test/CodeGen/Mips/mno-ldc1-sdc1.ll vendor/llvm/dist/test/CodeGen/Mips/msa/2r.ll vendor/llvm/dist/test/CodeGen/Mips/msa/2r_vector_scalar.ll vendor/llvm/dist/test/CodeGen/Mips/msa/2rf.ll vendor/llvm/dist/test/CodeGen/Mips/msa/2rf_exup.ll vendor/llvm/dist/test/CodeGen/Mips/msa/2rf_float_int.ll vendor/llvm/dist/test/CodeGen/Mips/msa/2rf_fq.ll vendor/llvm/dist/test/CodeGen/Mips/msa/2rf_int_float.ll vendor/llvm/dist/test/CodeGen/Mips/msa/2rf_tq.ll vendor/llvm/dist/test/CodeGen/Mips/msa/3r-a.ll vendor/llvm/dist/test/CodeGen/Mips/msa/3r-b.ll vendor/llvm/dist/test/CodeGen/Mips/msa/3r-c.ll vendor/llvm/dist/test/CodeGen/Mips/msa/3r-d.ll vendor/llvm/dist/test/CodeGen/Mips/msa/3r-i.ll vendor/llvm/dist/test/CodeGen/Mips/msa/3r-m.ll vendor/llvm/dist/test/CodeGen/Mips/msa/3r-p.ll vendor/llvm/dist/test/CodeGen/Mips/msa/3r-s.ll vendor/llvm/dist/test/CodeGen/Mips/msa/3r-v.ll vendor/llvm/dist/test/CodeGen/Mips/msa/3r_4r.ll vendor/llvm/dist/test/CodeGen/Mips/msa/3r_4r_widen.ll vendor/llvm/dist/test/CodeGen/Mips/msa/3r_splat.ll vendor/llvm/dist/test/CodeGen/Mips/msa/3rf.ll vendor/llvm/dist/test/CodeGen/Mips/msa/3rf_4rf.ll vendor/llvm/dist/test/CodeGen/Mips/msa/3rf_4rf_q.ll vendor/llvm/dist/test/CodeGen/Mips/msa/3rf_exdo.ll vendor/llvm/dist/test/CodeGen/Mips/msa/3rf_float_int.ll vendor/llvm/dist/test/CodeGen/Mips/msa/3rf_int_float.ll vendor/llvm/dist/test/CodeGen/Mips/msa/3rf_q.ll vendor/llvm/dist/test/CodeGen/Mips/msa/arithmetic.ll vendor/llvm/dist/test/CodeGen/Mips/msa/arithmetic_float.ll vendor/llvm/dist/test/CodeGen/Mips/msa/basic_operations.ll vendor/llvm/dist/test/CodeGen/Mips/msa/basic_operations_float.ll vendor/llvm/dist/test/CodeGen/Mips/msa/bit.ll vendor/llvm/dist/test/CodeGen/Mips/msa/bitcast.ll vendor/llvm/dist/test/CodeGen/Mips/msa/bitwise.ll vendor/llvm/dist/test/CodeGen/Mips/msa/compare.ll vendor/llvm/dist/test/CodeGen/Mips/msa/compare_float.ll vendor/llvm/dist/test/CodeGen/Mips/msa/elm_copy.ll vendor/llvm/dist/test/CodeGen/Mips/msa/elm_insv.ll vendor/llvm/dist/test/CodeGen/Mips/msa/elm_move.ll vendor/llvm/dist/test/CodeGen/Mips/msa/elm_shift_slide.ll vendor/llvm/dist/test/CodeGen/Mips/msa/frameindex.ll vendor/llvm/dist/test/CodeGen/Mips/msa/i10.ll vendor/llvm/dist/test/CodeGen/Mips/msa/i5-a.ll vendor/llvm/dist/test/CodeGen/Mips/msa/i5-b.ll vendor/llvm/dist/test/CodeGen/Mips/msa/i5-c.ll vendor/llvm/dist/test/CodeGen/Mips/msa/i5-m.ll vendor/llvm/dist/test/CodeGen/Mips/msa/i5-s.ll vendor/llvm/dist/test/CodeGen/Mips/msa/i5_ld_st.ll vendor/llvm/dist/test/CodeGen/Mips/msa/i8.ll vendor/llvm/dist/test/CodeGen/Mips/msa/inline-asm.ll vendor/llvm/dist/test/CodeGen/Mips/msa/llvm-stress-s1704963983.ll vendor/llvm/dist/test/CodeGen/Mips/msa/llvm-stress-s1935737938.ll vendor/llvm/dist/test/CodeGen/Mips/msa/llvm-stress-s2704903805.ll vendor/llvm/dist/test/CodeGen/Mips/msa/llvm-stress-s3861334421.ll vendor/llvm/dist/test/CodeGen/Mips/msa/llvm-stress-s3926023935.ll vendor/llvm/dist/test/CodeGen/Mips/msa/llvm-stress-s3997499501.ll vendor/llvm/dist/test/CodeGen/Mips/msa/llvm-stress-s525530439.ll vendor/llvm/dist/test/CodeGen/Mips/msa/llvm-stress-s997348632.ll vendor/llvm/dist/test/CodeGen/Mips/msa/shuffle.ll vendor/llvm/dist/test/CodeGen/Mips/msa/spill.ll vendor/llvm/dist/test/CodeGen/Mips/msa/vec.ll vendor/llvm/dist/test/CodeGen/Mips/msa/vecs10.ll vendor/llvm/dist/test/CodeGen/Mips/mul.ll vendor/llvm/dist/test/CodeGen/Mips/mulll.ll vendor/llvm/dist/test/CodeGen/Mips/mulull.ll vendor/llvm/dist/test/CodeGen/Mips/nacl-align.ll vendor/llvm/dist/test/CodeGen/Mips/nacl-branch-delay.ll vendor/llvm/dist/test/CodeGen/Mips/nacl-reserved-regs.ll vendor/llvm/dist/test/CodeGen/Mips/named-register-n32.ll vendor/llvm/dist/test/CodeGen/Mips/neg1.ll vendor/llvm/dist/test/CodeGen/Mips/no-odd-spreg-msa.ll vendor/llvm/dist/test/CodeGen/Mips/nomips16.ll vendor/llvm/dist/test/CodeGen/Mips/not1.ll vendor/llvm/dist/test/CodeGen/Mips/o32_cc_byval.ll vendor/llvm/dist/test/CodeGen/Mips/o32_cc_vararg.ll vendor/llvm/dist/test/CodeGen/Mips/octeon.ll vendor/llvm/dist/test/CodeGen/Mips/optimize-pic-o0.ll vendor/llvm/dist/test/CodeGen/Mips/or1.ll vendor/llvm/dist/test/CodeGen/Mips/prevent-hoisting.ll vendor/llvm/dist/test/CodeGen/Mips/private.ll vendor/llvm/dist/test/CodeGen/Mips/ra-allocatable.ll vendor/llvm/dist/test/CodeGen/Mips/rdhwr-directives.ll vendor/llvm/dist/test/CodeGen/Mips/rem.ll vendor/llvm/dist/test/CodeGen/Mips/remat-immed-load.ll vendor/llvm/dist/test/CodeGen/Mips/remu.ll vendor/llvm/dist/test/CodeGen/Mips/return-vector.ll vendor/llvm/dist/test/CodeGen/Mips/s2rem.ll vendor/llvm/dist/test/CodeGen/Mips/sb1.ll vendor/llvm/dist/test/CodeGen/Mips/sel1c.ll vendor/llvm/dist/test/CodeGen/Mips/sel2c.ll vendor/llvm/dist/test/CodeGen/Mips/selTBteqzCmpi.ll vendor/llvm/dist/test/CodeGen/Mips/selTBtnezCmpi.ll vendor/llvm/dist/test/CodeGen/Mips/selTBtnezSlti.ll vendor/llvm/dist/test/CodeGen/Mips/select.ll vendor/llvm/dist/test/CodeGen/Mips/seleq.ll vendor/llvm/dist/test/CodeGen/Mips/seleqk.ll vendor/llvm/dist/test/CodeGen/Mips/selgek.ll vendor/llvm/dist/test/CodeGen/Mips/selgt.ll vendor/llvm/dist/test/CodeGen/Mips/selle.ll vendor/llvm/dist/test/CodeGen/Mips/selltk.ll vendor/llvm/dist/test/CodeGen/Mips/selne.ll vendor/llvm/dist/test/CodeGen/Mips/selnek.ll vendor/llvm/dist/test/CodeGen/Mips/selpat.ll vendor/llvm/dist/test/CodeGen/Mips/seteq.ll vendor/llvm/dist/test/CodeGen/Mips/seteqz.ll vendor/llvm/dist/test/CodeGen/Mips/setge.ll vendor/llvm/dist/test/CodeGen/Mips/setgek.ll vendor/llvm/dist/test/CodeGen/Mips/setle.ll vendor/llvm/dist/test/CodeGen/Mips/setlt.ll vendor/llvm/dist/test/CodeGen/Mips/setltk.ll vendor/llvm/dist/test/CodeGen/Mips/setne.ll vendor/llvm/dist/test/CodeGen/Mips/setuge.ll vendor/llvm/dist/test/CodeGen/Mips/setugt.ll vendor/llvm/dist/test/CodeGen/Mips/setule.ll vendor/llvm/dist/test/CodeGen/Mips/setult.ll vendor/llvm/dist/test/CodeGen/Mips/setultk.ll vendor/llvm/dist/test/CodeGen/Mips/sh1.ll vendor/llvm/dist/test/CodeGen/Mips/simplebr.ll vendor/llvm/dist/test/CodeGen/Mips/sitofp-selectcc-opt.ll vendor/llvm/dist/test/CodeGen/Mips/sll1.ll vendor/llvm/dist/test/CodeGen/Mips/sll2.ll vendor/llvm/dist/test/CodeGen/Mips/small-section-reserve-gp.ll vendor/llvm/dist/test/CodeGen/Mips/spill-copy-acreg.ll vendor/llvm/dist/test/CodeGen/Mips/sr1.ll vendor/llvm/dist/test/CodeGen/Mips/sra1.ll vendor/llvm/dist/test/CodeGen/Mips/sra2.ll vendor/llvm/dist/test/CodeGen/Mips/srl1.ll vendor/llvm/dist/test/CodeGen/Mips/srl2.ll vendor/llvm/dist/test/CodeGen/Mips/stackcoloring.ll vendor/llvm/dist/test/CodeGen/Mips/start-asm-file.ll vendor/llvm/dist/test/CodeGen/Mips/stchar.ll vendor/llvm/dist/test/CodeGen/Mips/stldst.ll vendor/llvm/dist/test/CodeGen/Mips/sub1.ll vendor/llvm/dist/test/CodeGen/Mips/sub2.ll vendor/llvm/dist/test/CodeGen/Mips/swzero.ll vendor/llvm/dist/test/CodeGen/Mips/tail16.ll vendor/llvm/dist/test/CodeGen/Mips/tailcall.ll vendor/llvm/dist/test/CodeGen/Mips/tls.ll vendor/llvm/dist/test/CodeGen/Mips/tls16.ll vendor/llvm/dist/test/CodeGen/Mips/tls16_2.ll vendor/llvm/dist/test/CodeGen/Mips/uitofp.ll vendor/llvm/dist/test/CodeGen/Mips/ul1.ll vendor/llvm/dist/test/CodeGen/Mips/unalignedload.ll vendor/llvm/dist/test/CodeGen/Mips/vector-load-store.ll vendor/llvm/dist/test/CodeGen/Mips/vector-setcc.ll vendor/llvm/dist/test/CodeGen/Mips/xor1.ll vendor/llvm/dist/test/CodeGen/Mips/zeroreg.ll vendor/llvm/dist/test/CodeGen/NVPTX/access-non-generic.ll vendor/llvm/dist/test/CodeGen/NVPTX/addrspacecast-gvar.ll vendor/llvm/dist/test/CodeGen/NVPTX/addrspacecast.ll vendor/llvm/dist/test/CodeGen/NVPTX/bug21465.ll vendor/llvm/dist/test/CodeGen/NVPTX/call-with-alloca-buffer.ll vendor/llvm/dist/test/CodeGen/NVPTX/fp16.ll vendor/llvm/dist/test/CodeGen/NVPTX/generic-to-nvvm.ll vendor/llvm/dist/test/CodeGen/NVPTX/half.ll vendor/llvm/dist/test/CodeGen/NVPTX/i1-global.ll vendor/llvm/dist/test/CodeGen/NVPTX/i8-param.ll vendor/llvm/dist/test/CodeGen/NVPTX/ld-addrspace.ll vendor/llvm/dist/test/CodeGen/NVPTX/ld-generic.ll vendor/llvm/dist/test/CodeGen/NVPTX/ldu-reg-plus-offset.ll vendor/llvm/dist/test/CodeGen/NVPTX/load-sext-i1.ll vendor/llvm/dist/test/CodeGen/NVPTX/machine-sink.ll vendor/llvm/dist/test/CodeGen/NVPTX/misaligned-vector-ldst.ll vendor/llvm/dist/test/CodeGen/NVPTX/noduplicate-syncthreads.ll vendor/llvm/dist/test/CodeGen/NVPTX/nvvm-reflect.ll vendor/llvm/dist/test/CodeGen/NVPTX/pr13291-i1-store.ll vendor/llvm/dist/test/CodeGen/NVPTX/pr16278.ll vendor/llvm/dist/test/CodeGen/NVPTX/pr17529.ll vendor/llvm/dist/test/CodeGen/NVPTX/refl1.ll vendor/llvm/dist/test/CodeGen/NVPTX/sched1.ll vendor/llvm/dist/test/CodeGen/NVPTX/sched2.ll vendor/llvm/dist/test/CodeGen/NVPTX/shift-parts.ll vendor/llvm/dist/test/CodeGen/NVPTX/simple-call.ll vendor/llvm/dist/test/CodeGen/NVPTX/sm-version-30.ll vendor/llvm/dist/test/CodeGen/NVPTX/sm-version-35.ll vendor/llvm/dist/test/CodeGen/NVPTX/symbol-naming.ll vendor/llvm/dist/test/CodeGen/NVPTX/vector-compare.ll vendor/llvm/dist/test/CodeGen/NVPTX/vector-loads.ll vendor/llvm/dist/test/CodeGen/NVPTX/vector-select.ll vendor/llvm/dist/test/CodeGen/NVPTX/weak-global.ll vendor/llvm/dist/test/CodeGen/PowerPC/2005-11-30-vastart-crash.ll vendor/llvm/dist/test/CodeGen/PowerPC/2006-01-20-ShiftPartsCrash.ll vendor/llvm/dist/test/CodeGen/PowerPC/2006-04-05-splat-ish.ll vendor/llvm/dist/test/CodeGen/PowerPC/2006-05-12-rlwimi-crash.ll vendor/llvm/dist/test/CodeGen/PowerPC/2006-07-07-ComputeMaskedBits.ll vendor/llvm/dist/test/CodeGen/PowerPC/2006-07-19-stwbrx-crash.ll vendor/llvm/dist/test/CodeGen/PowerPC/2006-08-15-SelectionCrash.ll vendor/llvm/dist/test/CodeGen/PowerPC/2006-10-13-Miscompile.ll vendor/llvm/dist/test/CodeGen/PowerPC/2006-10-17-brcc-miscompile.ll vendor/llvm/dist/test/CodeGen/PowerPC/2006-12-07-LargeAlloca.ll vendor/llvm/dist/test/CodeGen/PowerPC/2006-12-07-SelectCrash.ll vendor/llvm/dist/test/CodeGen/PowerPC/2007-01-15-AsmDialect.ll vendor/llvm/dist/test/CodeGen/PowerPC/2007-01-31-InlineAsmAddrMode.ll vendor/llvm/dist/test/CodeGen/PowerPC/2007-02-23-lr-saved-twice.ll vendor/llvm/dist/test/CodeGen/PowerPC/2007-03-24-cntlzd.ll vendor/llvm/dist/test/CodeGen/PowerPC/2007-03-30-SpillerCrash.ll vendor/llvm/dist/test/CodeGen/PowerPC/2007-04-30-InlineAsmEarlyClobber.ll vendor/llvm/dist/test/CodeGen/PowerPC/2007-05-03-InlineAsm-S-Constraint.ll vendor/llvm/dist/test/CodeGen/PowerPC/2007-05-14-InlineAsmSelectCrash.ll vendor/llvm/dist/test/CodeGen/PowerPC/2007-05-22-tailmerge-3.ll vendor/llvm/dist/test/CodeGen/PowerPC/2007-06-28-BCCISelBug.ll vendor/llvm/dist/test/CodeGen/PowerPC/2007-08-04-CoalescerAssert.ll vendor/llvm/dist/test/CodeGen/PowerPC/2007-09-07-LoadStoreIdxForms.ll vendor/llvm/dist/test/CodeGen/PowerPC/2007-09-08-unaligned.ll vendor/llvm/dist/test/CodeGen/PowerPC/2007-10-18-PtrArithmetic.ll vendor/llvm/dist/test/CodeGen/PowerPC/2007-10-21-LocalRegAllocAssert.ll vendor/llvm/dist/test/CodeGen/PowerPC/2007-10-21-LocalRegAllocAssert2.ll vendor/llvm/dist/test/CodeGen/PowerPC/2007-11-16-landingpad-split.ll vendor/llvm/dist/test/CodeGen/PowerPC/2007-11-19-VectorSplitting.ll vendor/llvm/dist/test/CodeGen/PowerPC/2008-02-05-LiveIntervalsAssert.ll vendor/llvm/dist/test/CodeGen/PowerPC/2008-02-09-LocalRegAllocAssert.ll vendor/llvm/dist/test/CodeGen/PowerPC/2008-03-05-RegScavengerAssert.ll vendor/llvm/dist/test/CodeGen/PowerPC/2008-03-17-RegScavengerCrash.ll vendor/llvm/dist/test/CodeGen/PowerPC/2008-03-24-AddressRegImm.ll vendor/llvm/dist/test/CodeGen/PowerPC/2008-03-26-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/PowerPC/2008-04-23-CoalescerCrash.ll vendor/llvm/dist/test/CodeGen/PowerPC/2008-06-21-F128LoadStore.ll vendor/llvm/dist/test/CodeGen/PowerPC/2008-06-23-LiveVariablesCrash.ll vendor/llvm/dist/test/CodeGen/PowerPC/2008-07-15-Bswap.ll vendor/llvm/dist/test/CodeGen/PowerPC/2008-07-15-SignExtendInreg.ll vendor/llvm/dist/test/CodeGen/PowerPC/2008-07-24-PPC64-CCBug.ll vendor/llvm/dist/test/CodeGen/PowerPC/2008-09-12-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/PowerPC/2008-10-28-UnprocessedNode.ll vendor/llvm/dist/test/CodeGen/PowerPC/2008-10-31-PPCF128Libcalls.ll vendor/llvm/dist/test/CodeGen/PowerPC/2009-01-16-DeclareISelBug.ll vendor/llvm/dist/test/CodeGen/PowerPC/2009-03-17-LSRBug.ll vendor/llvm/dist/test/CodeGen/PowerPC/2009-08-17-inline-asm-addr-mode-breakage.ll vendor/llvm/dist/test/CodeGen/PowerPC/2009-11-15-ProcImpDefsBug.ll vendor/llvm/dist/test/CodeGen/PowerPC/2010-02-12-saveCR.ll vendor/llvm/dist/test/CodeGen/PowerPC/2010-03-09-indirect-call.ll vendor/llvm/dist/test/CodeGen/PowerPC/2010-12-18-PPCStackRefs.ll vendor/llvm/dist/test/CodeGen/PowerPC/2011-12-05-NoSpillDupCR.ll vendor/llvm/dist/test/CodeGen/PowerPC/2011-12-06-SpillAndRestoreCR.ll vendor/llvm/dist/test/CodeGen/PowerPC/2011-12-08-DemandedBitsMiscompile.ll vendor/llvm/dist/test/CodeGen/PowerPC/2012-09-16-TOC-entry-check.ll vendor/llvm/dist/test/CodeGen/PowerPC/2013-05-15-preinc-fold.ll vendor/llvm/dist/test/CodeGen/PowerPC/2013-07-01-PHIElimBug.ll vendor/llvm/dist/test/CodeGen/PowerPC/Atomics-64.ll vendor/llvm/dist/test/CodeGen/PowerPC/a2-fp-basic.ll vendor/llvm/dist/test/CodeGen/PowerPC/add-fi.ll vendor/llvm/dist/test/CodeGen/PowerPC/addi-licm.ll vendor/llvm/dist/test/CodeGen/PowerPC/addi-reassoc.ll vendor/llvm/dist/test/CodeGen/PowerPC/alias.ll vendor/llvm/dist/test/CodeGen/PowerPC/and-branch.ll vendor/llvm/dist/test/CodeGen/PowerPC/and-elim.ll vendor/llvm/dist/test/CodeGen/PowerPC/anon_aggr.ll vendor/llvm/dist/test/CodeGen/PowerPC/asm-constraints.ll vendor/llvm/dist/test/CodeGen/PowerPC/atomic-2.ll vendor/llvm/dist/test/CodeGen/PowerPC/atomics-fences.ll vendor/llvm/dist/test/CodeGen/PowerPC/atomics-indexed.ll vendor/llvm/dist/test/CodeGen/PowerPC/atomics.ll vendor/llvm/dist/test/CodeGen/PowerPC/bdzlr.ll vendor/llvm/dist/test/CodeGen/PowerPC/bperm.ll vendor/llvm/dist/test/CodeGen/PowerPC/branch-opt.ll vendor/llvm/dist/test/CodeGen/PowerPC/bswap-load-store.ll vendor/llvm/dist/test/CodeGen/PowerPC/buildvec_canonicalize.ll vendor/llvm/dist/test/CodeGen/PowerPC/byval-aliased.ll vendor/llvm/dist/test/CodeGen/PowerPC/cmpb-ppc32.ll vendor/llvm/dist/test/CodeGen/PowerPC/cmpb.ll vendor/llvm/dist/test/CodeGen/PowerPC/code-align.ll vendor/llvm/dist/test/CodeGen/PowerPC/compare-simm.ll vendor/llvm/dist/test/CodeGen/PowerPC/complex-return.ll vendor/llvm/dist/test/CodeGen/PowerPC/cr-spills.ll vendor/llvm/dist/test/CodeGen/PowerPC/cr1eq-no-extra-moves.ll vendor/llvm/dist/test/CodeGen/PowerPC/cr1eq.ll vendor/llvm/dist/test/CodeGen/PowerPC/cr_spilling.ll vendor/llvm/dist/test/CodeGen/PowerPC/crbit-asm.ll vendor/llvm/dist/test/CodeGen/PowerPC/crbits.ll vendor/llvm/dist/test/CodeGen/PowerPC/crsave.ll vendor/llvm/dist/test/CodeGen/PowerPC/ctrloop-cpsgn.ll vendor/llvm/dist/test/CodeGen/PowerPC/ctrloop-fp64.ll vendor/llvm/dist/test/CodeGen/PowerPC/ctrloop-i64.ll vendor/llvm/dist/test/CodeGen/PowerPC/ctrloop-le.ll vendor/llvm/dist/test/CodeGen/PowerPC/ctrloop-lt.ll vendor/llvm/dist/test/CodeGen/PowerPC/ctrloop-ne.ll vendor/llvm/dist/test/CodeGen/PowerPC/ctrloop-s000.ll vendor/llvm/dist/test/CodeGen/PowerPC/ctrloop-sh.ll vendor/llvm/dist/test/CodeGen/PowerPC/ctrloop-sums.ll vendor/llvm/dist/test/CodeGen/PowerPC/ctrloops.ll vendor/llvm/dist/test/CodeGen/PowerPC/cttz.ll vendor/llvm/dist/test/CodeGen/PowerPC/dbg.ll vendor/llvm/dist/test/CodeGen/PowerPC/dcbt-sched.ll vendor/llvm/dist/test/CodeGen/PowerPC/delete-node.ll vendor/llvm/dist/test/CodeGen/PowerPC/dyn-alloca-aligned.ll vendor/llvm/dist/test/CodeGen/PowerPC/early-ret.ll vendor/llvm/dist/test/CodeGen/PowerPC/empty-functions.ll vendor/llvm/dist/test/CodeGen/PowerPC/emptystruct.ll vendor/llvm/dist/test/CodeGen/PowerPC/eqv-andc-orc-nor.ll vendor/llvm/dist/test/CodeGen/PowerPC/fast-isel-GEP-coalesce.ll vendor/llvm/dist/test/CodeGen/PowerPC/fast-isel-binary.ll vendor/llvm/dist/test/CodeGen/PowerPC/fast-isel-br-const.ll vendor/llvm/dist/test/CodeGen/PowerPC/fast-isel-call.ll vendor/llvm/dist/test/CodeGen/PowerPC/fast-isel-cmp-imm.ll vendor/llvm/dist/test/CodeGen/PowerPC/fast-isel-const.ll vendor/llvm/dist/test/CodeGen/PowerPC/fast-isel-conversion-p5.ll vendor/llvm/dist/test/CodeGen/PowerPC/fast-isel-conversion.ll vendor/llvm/dist/test/CodeGen/PowerPC/fast-isel-crash.ll vendor/llvm/dist/test/CodeGen/PowerPC/fast-isel-ext.ll vendor/llvm/dist/test/CodeGen/PowerPC/fast-isel-fold.ll vendor/llvm/dist/test/CodeGen/PowerPC/fast-isel-indirectbr.ll vendor/llvm/dist/test/CodeGen/PowerPC/fast-isel-load-store.ll vendor/llvm/dist/test/CodeGen/PowerPC/fast-isel-redefinition.ll vendor/llvm/dist/test/CodeGen/PowerPC/fast-isel-ret.ll vendor/llvm/dist/test/CodeGen/PowerPC/fast-isel-shifter.ll vendor/llvm/dist/test/CodeGen/PowerPC/fastisel-gep-promote-before-add.ll vendor/llvm/dist/test/CodeGen/PowerPC/floatPSA.ll vendor/llvm/dist/test/CodeGen/PowerPC/fma-assoc.ll vendor/llvm/dist/test/CodeGen/PowerPC/fma-ext.ll vendor/llvm/dist/test/CodeGen/PowerPC/fp-to-int-ext.ll vendor/llvm/dist/test/CodeGen/PowerPC/frounds.ll vendor/llvm/dist/test/CodeGen/PowerPC/glob-comp-aa-crash.ll vendor/llvm/dist/test/CodeGen/PowerPC/hello.ll vendor/llvm/dist/test/CodeGen/PowerPC/hidden-vis-2.ll vendor/llvm/dist/test/CodeGen/PowerPC/hidden-vis.ll vendor/llvm/dist/test/CodeGen/PowerPC/i64_fp_round.ll vendor/llvm/dist/test/CodeGen/PowerPC/ia-mem-r0.ll vendor/llvm/dist/test/CodeGen/PowerPC/indexed-load.ll vendor/llvm/dist/test/CodeGen/PowerPC/indirectbr.ll vendor/llvm/dist/test/CodeGen/PowerPC/inlineasm-i64-reg.ll vendor/llvm/dist/test/CodeGen/PowerPC/isel-rc-nox0.ll vendor/llvm/dist/test/CodeGen/PowerPC/lbz-from-ld-shift.ll vendor/llvm/dist/test/CodeGen/PowerPC/lbzux.ll vendor/llvm/dist/test/CodeGen/PowerPC/ld-st-upd.ll vendor/llvm/dist/test/CodeGen/PowerPC/lha.ll vendor/llvm/dist/test/CodeGen/PowerPC/load-constant-addr.ll vendor/llvm/dist/test/CodeGen/PowerPC/load-shift-combine.ll vendor/llvm/dist/test/CodeGen/PowerPC/long-compare.ll vendor/llvm/dist/test/CodeGen/PowerPC/lsa.ll vendor/llvm/dist/test/CodeGen/PowerPC/lsr-postinc-pos.ll vendor/llvm/dist/test/CodeGen/PowerPC/mask64.ll vendor/llvm/dist/test/CodeGen/PowerPC/mature-mc-support.ll vendor/llvm/dist/test/CodeGen/PowerPC/mcm-1.ll vendor/llvm/dist/test/CodeGen/PowerPC/mcm-10.ll vendor/llvm/dist/test/CodeGen/PowerPC/mcm-11.ll vendor/llvm/dist/test/CodeGen/PowerPC/mcm-2.ll vendor/llvm/dist/test/CodeGen/PowerPC/mcm-3.ll vendor/llvm/dist/test/CodeGen/PowerPC/mcm-5.ll vendor/llvm/dist/test/CodeGen/PowerPC/mcm-6.ll vendor/llvm/dist/test/CodeGen/PowerPC/mcm-7.ll vendor/llvm/dist/test/CodeGen/PowerPC/mcm-8.ll vendor/llvm/dist/test/CodeGen/PowerPC/mcm-9.ll vendor/llvm/dist/test/CodeGen/PowerPC/mcm-default.ll vendor/llvm/dist/test/CodeGen/PowerPC/mcm-obj-2.ll vendor/llvm/dist/test/CodeGen/PowerPC/mcm-obj.ll vendor/llvm/dist/test/CodeGen/PowerPC/mem-rr-addr-mode.ll vendor/llvm/dist/test/CodeGen/PowerPC/mem_update.ll vendor/llvm/dist/test/CodeGen/PowerPC/misched-inorder-latency.ll vendor/llvm/dist/test/CodeGen/PowerPC/misched.ll vendor/llvm/dist/test/CodeGen/PowerPC/mult-alt-generic-powerpc.ll vendor/llvm/dist/test/CodeGen/PowerPC/mult-alt-generic-powerpc64.ll vendor/llvm/dist/test/CodeGen/PowerPC/named-reg-alloc-r2-64.ll vendor/llvm/dist/test/CodeGen/PowerPC/named-reg-alloc-r2.ll vendor/llvm/dist/test/CodeGen/PowerPC/no-extra-fp-conv-ldst.ll vendor/llvm/dist/test/CodeGen/PowerPC/novrsave.ll vendor/llvm/dist/test/CodeGen/PowerPC/or-addressing-mode.ll vendor/llvm/dist/test/CodeGen/PowerPC/post-ra-ec.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc-prologue.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc32-cyclecounter.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc32-i1-vaarg.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc32-lshrti3.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc32-pic-large.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc32-pic.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc440-fp-basic.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-abi-extend.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-align-long-double.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-anyregcc-crash.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-anyregcc.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-byval-align.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-calls.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-elf-abi.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-gep-opt.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-linux-func-size.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-nonfunc-calls.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-patchpoint.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-smallarg.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-stackmap-nops.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-stackmap.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-toc.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-zext.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64le-aggregates.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64le-calls.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64le-localentry.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64le-smallarg.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppcf128-1.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppcf128-3.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppcf128-endian.ll vendor/llvm/dist/test/CodeGen/PowerPC/pr13891.ll vendor/llvm/dist/test/CodeGen/PowerPC/pr15031.ll vendor/llvm/dist/test/CodeGen/PowerPC/pr15630.ll vendor/llvm/dist/test/CodeGen/PowerPC/pr16556-2.ll vendor/llvm/dist/test/CodeGen/PowerPC/pr17168.ll vendor/llvm/dist/test/CodeGen/PowerPC/pr17354.ll vendor/llvm/dist/test/CodeGen/PowerPC/pr18663.ll vendor/llvm/dist/test/CodeGen/PowerPC/pr20442.ll vendor/llvm/dist/test/CodeGen/PowerPC/private.ll vendor/llvm/dist/test/CodeGen/PowerPC/pwr7-gt-nop.ll vendor/llvm/dist/test/CodeGen/PowerPC/quadint-return.ll vendor/llvm/dist/test/CodeGen/PowerPC/reg-coalesce-simple.ll vendor/llvm/dist/test/CodeGen/PowerPC/reloc-align.ll vendor/llvm/dist/test/CodeGen/PowerPC/remat-imm.ll vendor/llvm/dist/test/CodeGen/PowerPC/resolvefi-basereg.ll vendor/llvm/dist/test/CodeGen/PowerPC/resolvefi-disp.ll vendor/llvm/dist/test/CodeGen/PowerPC/retaddr2.ll vendor/llvm/dist/test/CodeGen/PowerPC/return-val-i128.ll vendor/llvm/dist/test/CodeGen/PowerPC/rlwimi-and.ll vendor/llvm/dist/test/CodeGen/PowerPC/rlwimi-commute.ll vendor/llvm/dist/test/CodeGen/PowerPC/rlwimi-dyn-and.ll vendor/llvm/dist/test/CodeGen/PowerPC/rm-zext.ll vendor/llvm/dist/test/CodeGen/PowerPC/rotl-2.ll vendor/llvm/dist/test/CodeGen/PowerPC/rotl-64.ll vendor/llvm/dist/test/CodeGen/PowerPC/rotl.ll vendor/llvm/dist/test/CodeGen/PowerPC/rs-undef-use.ll vendor/llvm/dist/test/CodeGen/PowerPC/s000-alias-misched.ll vendor/llvm/dist/test/CodeGen/PowerPC/sdag-ppcf128.ll vendor/llvm/dist/test/CodeGen/PowerPC/seteq-0.ll vendor/llvm/dist/test/CodeGen/PowerPC/sjlj.ll vendor/llvm/dist/test/CodeGen/PowerPC/small-arguments.ll vendor/llvm/dist/test/CodeGen/PowerPC/split-index-tc.ll vendor/llvm/dist/test/CodeGen/PowerPC/stack-protector.ll vendor/llvm/dist/test/CodeGen/PowerPC/stack-realign.ll vendor/llvm/dist/test/CodeGen/PowerPC/std-unal-fi.ll vendor/llvm/dist/test/CodeGen/PowerPC/stdux-constuse.ll vendor/llvm/dist/test/CodeGen/PowerPC/stfiwx.ll vendor/llvm/dist/test/CodeGen/PowerPC/store-load-fwd.ll vendor/llvm/dist/test/CodeGen/PowerPC/store-update.ll vendor/llvm/dist/test/CodeGen/PowerPC/structsinmem.ll vendor/llvm/dist/test/CodeGen/PowerPC/structsinregs.ll vendor/llvm/dist/test/CodeGen/PowerPC/stwu-gta.ll vendor/llvm/dist/test/CodeGen/PowerPC/stwu8.ll vendor/llvm/dist/test/CodeGen/PowerPC/stwux.ll vendor/llvm/dist/test/CodeGen/PowerPC/subreg-postra-2.ll vendor/llvm/dist/test/CodeGen/PowerPC/subreg-postra.ll vendor/llvm/dist/test/CodeGen/PowerPC/subsumes-pred-regs.ll vendor/llvm/dist/test/CodeGen/PowerPC/tls-pic.ll vendor/llvm/dist/test/CodeGen/PowerPC/tls-store2.ll vendor/llvm/dist/test/CodeGen/PowerPC/tls.ll vendor/llvm/dist/test/CodeGen/PowerPC/toc-load-sched-bug.ll vendor/llvm/dist/test/CodeGen/PowerPC/trampoline.ll vendor/llvm/dist/test/CodeGen/PowerPC/unal-altivec-wint.ll vendor/llvm/dist/test/CodeGen/PowerPC/unal-altivec.ll vendor/llvm/dist/test/CodeGen/PowerPC/unal-altivec2.ll vendor/llvm/dist/test/CodeGen/PowerPC/unaligned.ll vendor/llvm/dist/test/CodeGen/PowerPC/unwind-dw2-g.ll vendor/llvm/dist/test/CodeGen/PowerPC/vaddsplat.ll vendor/llvm/dist/test/CodeGen/PowerPC/varargs-struct-float.ll vendor/llvm/dist/test/CodeGen/PowerPC/vcmp-fold.ll vendor/llvm/dist/test/CodeGen/PowerPC/vec-abi-align.ll vendor/llvm/dist/test/CodeGen/PowerPC/vec_auto_constant.ll vendor/llvm/dist/test/CodeGen/PowerPC/vec_br_cmp.ll vendor/llvm/dist/test/CodeGen/PowerPC/vec_buildvector_loadstore.ll vendor/llvm/dist/test/CodeGen/PowerPC/vec_constants.ll vendor/llvm/dist/test/CodeGen/PowerPC/vec_conv.ll vendor/llvm/dist/test/CodeGen/PowerPC/vec_fneg.ll vendor/llvm/dist/test/CodeGen/PowerPC/vec_misaligned.ll vendor/llvm/dist/test/CodeGen/PowerPC/vec_mul.ll vendor/llvm/dist/test/CodeGen/PowerPC/vec_perf_shuffle.ll vendor/llvm/dist/test/CodeGen/PowerPC/vec_shuffle.ll vendor/llvm/dist/test/CodeGen/PowerPC/vec_shuffle_le.ll vendor/llvm/dist/test/CodeGen/PowerPC/vec_splat.ll vendor/llvm/dist/test/CodeGen/PowerPC/vec_splat_constant.ll vendor/llvm/dist/test/CodeGen/PowerPC/vec_zero.ll vendor/llvm/dist/test/CodeGen/PowerPC/vector-identity-shuffle.ll vendor/llvm/dist/test/CodeGen/PowerPC/vector.ll vendor/llvm/dist/test/CodeGen/PowerPC/vperm-lowering.ll vendor/llvm/dist/test/CodeGen/PowerPC/vsx-div.ll vendor/llvm/dist/test/CodeGen/PowerPC/vsx-fma-m.ll vendor/llvm/dist/test/CodeGen/PowerPC/vsx-ldst-builtin-le.ll vendor/llvm/dist/test/CodeGen/PowerPC/vsx-ldst.ll vendor/llvm/dist/test/CodeGen/PowerPC/vsx-minmax.ll vendor/llvm/dist/test/CodeGen/PowerPC/vsx-p8.ll vendor/llvm/dist/test/CodeGen/PowerPC/vsx.ll vendor/llvm/dist/test/CodeGen/PowerPC/vsx_insert_extract_le.ll vendor/llvm/dist/test/CodeGen/PowerPC/vsx_shuffle_le.ll vendor/llvm/dist/test/CodeGen/PowerPC/weak_def_can_be_hidden.ll vendor/llvm/dist/test/CodeGen/PowerPC/zero-not-run.ll vendor/llvm/dist/test/CodeGen/PowerPC/zext-free.ll vendor/llvm/dist/test/CodeGen/R600/32-bit-local-address-space.ll vendor/llvm/dist/test/CodeGen/R600/add-debug.ll vendor/llvm/dist/test/CodeGen/R600/add.ll vendor/llvm/dist/test/CodeGen/R600/add_i64.ll vendor/llvm/dist/test/CodeGen/R600/address-space.ll vendor/llvm/dist/test/CodeGen/R600/and.ll vendor/llvm/dist/test/CodeGen/R600/array-ptr-calc-i32.ll vendor/llvm/dist/test/CodeGen/R600/array-ptr-calc-i64.ll vendor/llvm/dist/test/CodeGen/R600/atomic_cmp_swap_local.ll vendor/llvm/dist/test/CodeGen/R600/atomic_load_add.ll vendor/llvm/dist/test/CodeGen/R600/atomic_load_sub.ll vendor/llvm/dist/test/CodeGen/R600/bfe_uint.ll vendor/llvm/dist/test/CodeGen/R600/big_alu.ll vendor/llvm/dist/test/CodeGen/R600/bitcast.ll vendor/llvm/dist/test/CodeGen/R600/bswap.ll vendor/llvm/dist/test/CodeGen/R600/call.ll vendor/llvm/dist/test/CodeGen/R600/call_fs.ll vendor/llvm/dist/test/CodeGen/R600/codegen-prepare-addrmode-sext.ll vendor/llvm/dist/test/CodeGen/R600/combine_vloads.ll vendor/llvm/dist/test/CodeGen/R600/commute_modifiers.ll vendor/llvm/dist/test/CodeGen/R600/concat_vectors.ll vendor/llvm/dist/test/CodeGen/R600/copy-illegal-type.ll vendor/llvm/dist/test/CodeGen/R600/copy-to-reg.ll vendor/llvm/dist/test/CodeGen/R600/ctlz_zero_undef.ll vendor/llvm/dist/test/CodeGen/R600/ctpop.ll vendor/llvm/dist/test/CodeGen/R600/ctpop64.ll vendor/llvm/dist/test/CodeGen/R600/cttz_zero_undef.ll vendor/llvm/dist/test/CodeGen/R600/cvt_f32_ubyte.ll vendor/llvm/dist/test/CodeGen/R600/dagcombiner-bug-illegal-vec4-int-to-fp.ll vendor/llvm/dist/test/CodeGen/R600/disconnected-predset-break-bug.ll vendor/llvm/dist/test/CodeGen/R600/dot4-folding.ll vendor/llvm/dist/test/CodeGen/R600/ds-negative-offset-addressing-mode-loop.ll vendor/llvm/dist/test/CodeGen/R600/ds_read2.ll vendor/llvm/dist/test/CodeGen/R600/ds_read2_offset_order.ll vendor/llvm/dist/test/CodeGen/R600/ds_read2st64.ll vendor/llvm/dist/test/CodeGen/R600/ds_write2.ll vendor/llvm/dist/test/CodeGen/R600/ds_write2st64.ll vendor/llvm/dist/test/CodeGen/R600/elf.ll vendor/llvm/dist/test/CodeGen/R600/empty-function.ll vendor/llvm/dist/test/CodeGen/R600/endcf-loop-header.ll vendor/llvm/dist/test/CodeGen/R600/extload-private.ll vendor/llvm/dist/test/CodeGen/R600/extload.ll vendor/llvm/dist/test/CodeGen/R600/extract_vector_elt_i16.ll vendor/llvm/dist/test/CodeGen/R600/fabs.f64.ll vendor/llvm/dist/test/CodeGen/R600/fabs.ll vendor/llvm/dist/test/CodeGen/R600/fadd.ll vendor/llvm/dist/test/CodeGen/R600/fadd64.ll vendor/llvm/dist/test/CodeGen/R600/fceil64.ll vendor/llvm/dist/test/CodeGen/R600/fcmp-cnd.ll vendor/llvm/dist/test/CodeGen/R600/fcmp-cnde-int-args.ll vendor/llvm/dist/test/CodeGen/R600/fcmp.ll vendor/llvm/dist/test/CodeGen/R600/fcmp64.ll vendor/llvm/dist/test/CodeGen/R600/fconst64.ll vendor/llvm/dist/test/CodeGen/R600/fcopysign.f32.ll vendor/llvm/dist/test/CodeGen/R600/fcopysign.f64.ll vendor/llvm/dist/test/CodeGen/R600/fdiv.f64.ll vendor/llvm/dist/test/CodeGen/R600/fdiv.ll vendor/llvm/dist/test/CodeGen/R600/fetch-limits.r600.ll vendor/llvm/dist/test/CodeGen/R600/fetch-limits.r700+.ll vendor/llvm/dist/test/CodeGen/R600/ffloor.ll vendor/llvm/dist/test/CodeGen/R600/flat-address-space.ll vendor/llvm/dist/test/CodeGen/R600/floor.ll vendor/llvm/dist/test/CodeGen/R600/fma.f64.ll vendor/llvm/dist/test/CodeGen/R600/fma.ll vendor/llvm/dist/test/CodeGen/R600/fmax3.f64.ll vendor/llvm/dist/test/CodeGen/R600/fmax3.ll vendor/llvm/dist/test/CodeGen/R600/fmax_legacy.f64.ll vendor/llvm/dist/test/CodeGen/R600/fmax_legacy.ll vendor/llvm/dist/test/CodeGen/R600/fmaxnum.ll vendor/llvm/dist/test/CodeGen/R600/fmin3.ll vendor/llvm/dist/test/CodeGen/R600/fmin_legacy.f64.ll vendor/llvm/dist/test/CodeGen/R600/fmin_legacy.ll vendor/llvm/dist/test/CodeGen/R600/fminnum.ll vendor/llvm/dist/test/CodeGen/R600/fmul.ll vendor/llvm/dist/test/CodeGen/R600/fmul64.ll vendor/llvm/dist/test/CodeGen/R600/fmuladd.ll vendor/llvm/dist/test/CodeGen/R600/fneg-fabs.f64.ll vendor/llvm/dist/test/CodeGen/R600/fneg-fabs.ll vendor/llvm/dist/test/CodeGen/R600/fneg.f64.ll vendor/llvm/dist/test/CodeGen/R600/fneg.ll vendor/llvm/dist/test/CodeGen/R600/fp-classify.ll vendor/llvm/dist/test/CodeGen/R600/fp16_to_fp.ll vendor/llvm/dist/test/CodeGen/R600/fp32_to_fp16.ll vendor/llvm/dist/test/CodeGen/R600/fp_to_sint.f64.ll vendor/llvm/dist/test/CodeGen/R600/fp_to_sint.ll vendor/llvm/dist/test/CodeGen/R600/fp_to_uint.f64.ll vendor/llvm/dist/test/CodeGen/R600/fp_to_uint.ll vendor/llvm/dist/test/CodeGen/R600/fpext.ll vendor/llvm/dist/test/CodeGen/R600/fptrunc.ll vendor/llvm/dist/test/CodeGen/R600/frem.ll vendor/llvm/dist/test/CodeGen/R600/fsqrt.ll vendor/llvm/dist/test/CodeGen/R600/fsub.ll vendor/llvm/dist/test/CodeGen/R600/fsub64.ll vendor/llvm/dist/test/CodeGen/R600/ftrunc.f64.ll vendor/llvm/dist/test/CodeGen/R600/gep-address-space.ll vendor/llvm/dist/test/CodeGen/R600/global-directive.ll vendor/llvm/dist/test/CodeGen/R600/global-extload-i1.ll vendor/llvm/dist/test/CodeGen/R600/global-extload-i16.ll vendor/llvm/dist/test/CodeGen/R600/global-extload-i32.ll vendor/llvm/dist/test/CodeGen/R600/global-extload-i8.ll vendor/llvm/dist/test/CodeGen/R600/global-zero-initializer.ll vendor/llvm/dist/test/CodeGen/R600/global_atomics.ll vendor/llvm/dist/test/CodeGen/R600/gv-const-addrspace-fail.ll vendor/llvm/dist/test/CodeGen/R600/gv-const-addrspace.ll vendor/llvm/dist/test/CodeGen/R600/half.ll vendor/llvm/dist/test/CodeGen/R600/hsa.ll vendor/llvm/dist/test/CodeGen/R600/i1-copy-phi.ll vendor/llvm/dist/test/CodeGen/R600/i8-to-double-to-float.ll vendor/llvm/dist/test/CodeGen/R600/icmp-select-sete-reverse-args.ll vendor/llvm/dist/test/CodeGen/R600/imm.ll vendor/llvm/dist/test/CodeGen/R600/indirect-private-64.ll vendor/llvm/dist/test/CodeGen/R600/inline-asm.ll vendor/llvm/dist/test/CodeGen/R600/insert_vector_elt.ll vendor/llvm/dist/test/CodeGen/R600/jump-address.ll vendor/llvm/dist/test/CodeGen/R600/kcache-fold.ll vendor/llvm/dist/test/CodeGen/R600/kernel-args.ll vendor/llvm/dist/test/CodeGen/R600/large-alloca.ll vendor/llvm/dist/test/CodeGen/R600/large-constant-initializer.ll vendor/llvm/dist/test/CodeGen/R600/lds-initializer.ll vendor/llvm/dist/test/CodeGen/R600/lds-oqap-crash.ll vendor/llvm/dist/test/CodeGen/R600/lds-output-queue.ll vendor/llvm/dist/test/CodeGen/R600/lds-size.ll vendor/llvm/dist/test/CodeGen/R600/lds-zero-initializer.ll vendor/llvm/dist/test/CodeGen/R600/legalizedag-bug-expand-setcc.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.abs.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.barrier.global.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.barrier.local.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.bfe.i32.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.bfe.u32.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.bfm.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.brev.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.class.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.cube.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.cvt_f32_ubyte.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.div_fixup.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.div_fmas.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.div_scale.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.flbit.i32.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.fract.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.imax.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.imin.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.kill.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.rsq.clamped.f64.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.rsq.clamped.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.tex.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.trig_preop.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.umad24.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.umax.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.umin.ll vendor/llvm/dist/test/CodeGen/R600/llvm.SI.fs.interp.ll vendor/llvm/dist/test/CodeGen/R600/llvm.SI.imageload.ll vendor/llvm/dist/test/CodeGen/R600/llvm.SI.load.dword.ll vendor/llvm/dist/test/CodeGen/R600/llvm.SI.sendmsg.ll vendor/llvm/dist/test/CodeGen/R600/llvm.SI.tid.ll vendor/llvm/dist/test/CodeGen/R600/llvm.amdgpu.dp4.ll vendor/llvm/dist/test/CodeGen/R600/llvm.memcpy.ll vendor/llvm/dist/test/CodeGen/R600/llvm.rint.f64.ll vendor/llvm/dist/test/CodeGen/R600/llvm.round.ll vendor/llvm/dist/test/CodeGen/R600/llvm.sqrt.ll vendor/llvm/dist/test/CodeGen/R600/load-i1.ll vendor/llvm/dist/test/CodeGen/R600/load-input-fold.ll vendor/llvm/dist/test/CodeGen/R600/load.ll vendor/llvm/dist/test/CodeGen/R600/load.vec.ll vendor/llvm/dist/test/CodeGen/R600/load64.ll vendor/llvm/dist/test/CodeGen/R600/local-64.ll vendor/llvm/dist/test/CodeGen/R600/local-atomics.ll vendor/llvm/dist/test/CodeGen/R600/local-atomics64.ll vendor/llvm/dist/test/CodeGen/R600/local-memory-two-objects.ll vendor/llvm/dist/test/CodeGen/R600/local-memory.ll vendor/llvm/dist/test/CodeGen/R600/loop-address.ll vendor/llvm/dist/test/CodeGen/R600/loop-idiom.ll vendor/llvm/dist/test/CodeGen/R600/m0-spill.ll vendor/llvm/dist/test/CodeGen/R600/mad-sub.ll vendor/llvm/dist/test/CodeGen/R600/max.ll vendor/llvm/dist/test/CodeGen/R600/max3.ll vendor/llvm/dist/test/CodeGen/R600/min.ll vendor/llvm/dist/test/CodeGen/R600/min3.ll vendor/llvm/dist/test/CodeGen/R600/missing-store.ll vendor/llvm/dist/test/CodeGen/R600/mubuf.ll vendor/llvm/dist/test/CodeGen/R600/mul.ll vendor/llvm/dist/test/CodeGen/R600/no-initializer-constant-addrspace.ll vendor/llvm/dist/test/CodeGen/R600/no-shrink-extloads.ll vendor/llvm/dist/test/CodeGen/R600/operand-folding.ll vendor/llvm/dist/test/CodeGen/R600/operand-spacing.ll vendor/llvm/dist/test/CodeGen/R600/or.ll vendor/llvm/dist/test/CodeGen/R600/parallelandifcollapse.ll vendor/llvm/dist/test/CodeGen/R600/parallelorifcollapse.ll vendor/llvm/dist/test/CodeGen/R600/private-memory-atomics.ll vendor/llvm/dist/test/CodeGen/R600/private-memory-broken.ll vendor/llvm/dist/test/CodeGen/R600/private-memory.ll vendor/llvm/dist/test/CodeGen/R600/pv-packing.ll vendor/llvm/dist/test/CodeGen/R600/pv.ll vendor/llvm/dist/test/CodeGen/R600/r600-export-fix.ll vendor/llvm/dist/test/CodeGen/R600/r600cfg.ll vendor/llvm/dist/test/CodeGen/R600/register-count-comments.ll vendor/llvm/dist/test/CodeGen/R600/reorder-stores.ll vendor/llvm/dist/test/CodeGen/R600/rotl.i64.ll vendor/llvm/dist/test/CodeGen/R600/rotr.i64.ll vendor/llvm/dist/test/CodeGen/R600/rsq.ll vendor/llvm/dist/test/CodeGen/R600/s_movk_i32.ll vendor/llvm/dist/test/CodeGen/R600/saddo.ll vendor/llvm/dist/test/CodeGen/R600/salu-to-valu.ll vendor/llvm/dist/test/CodeGen/R600/scalar_to_vector.ll vendor/llvm/dist/test/CodeGen/R600/schedule-fs-loop-nested.ll vendor/llvm/dist/test/CodeGen/R600/schedule-fs-loop.ll vendor/llvm/dist/test/CodeGen/R600/schedule-global-loads.ll vendor/llvm/dist/test/CodeGen/R600/schedule-if-2.ll vendor/llvm/dist/test/CodeGen/R600/schedule-if.ll vendor/llvm/dist/test/CodeGen/R600/schedule-kernel-arg-loads.ll vendor/llvm/dist/test/CodeGen/R600/schedule-vs-if-nested-loop-failure.ll vendor/llvm/dist/test/CodeGen/R600/schedule-vs-if-nested-loop.ll vendor/llvm/dist/test/CodeGen/R600/scratch-buffer.ll vendor/llvm/dist/test/CodeGen/R600/sdiv.ll vendor/llvm/dist/test/CodeGen/R600/sdivrem24.ll vendor/llvm/dist/test/CodeGen/R600/select64.ll vendor/llvm/dist/test/CodeGen/R600/selectcc-cnd.ll vendor/llvm/dist/test/CodeGen/R600/selectcc-cnde-int.ll vendor/llvm/dist/test/CodeGen/R600/selectcc-icmp-select-float.ll vendor/llvm/dist/test/CodeGen/R600/selectcc-opt.ll vendor/llvm/dist/test/CodeGen/R600/setcc-opt.ll vendor/llvm/dist/test/CodeGen/R600/setcc.ll vendor/llvm/dist/test/CodeGen/R600/sext-in-reg.ll vendor/llvm/dist/test/CodeGen/R600/sgpr-control-flow.ll vendor/llvm/dist/test/CodeGen/R600/sgpr-copy-duplicate-operand.ll vendor/llvm/dist/test/CodeGen/R600/sgpr-copy.ll vendor/llvm/dist/test/CodeGen/R600/shl.ll vendor/llvm/dist/test/CodeGen/R600/shl_add_constant.ll vendor/llvm/dist/test/CodeGen/R600/shl_add_ptr.ll vendor/llvm/dist/test/CodeGen/R600/si-annotate-cf.ll vendor/llvm/dist/test/CodeGen/R600/si-lod-bias.ll vendor/llvm/dist/test/CodeGen/R600/si-sgpr-spill.ll vendor/llvm/dist/test/CodeGen/R600/si-triv-disjoint-mem-access.ll vendor/llvm/dist/test/CodeGen/R600/si-vector-hang.ll vendor/llvm/dist/test/CodeGen/R600/sign_extend.ll vendor/llvm/dist/test/CodeGen/R600/simplify-demanded-bits-build-pair.ll vendor/llvm/dist/test/CodeGen/R600/sint_to_fp.f64.ll vendor/llvm/dist/test/CodeGen/R600/sint_to_fp.ll vendor/llvm/dist/test/CodeGen/R600/smrd.ll vendor/llvm/dist/test/CodeGen/R600/split-scalar-i64-add.ll vendor/llvm/dist/test/CodeGen/R600/sra.ll vendor/llvm/dist/test/CodeGen/R600/srem.ll vendor/llvm/dist/test/CodeGen/R600/srl.ll vendor/llvm/dist/test/CodeGen/R600/ssubo.ll vendor/llvm/dist/test/CodeGen/R600/store-barrier.ll vendor/llvm/dist/test/CodeGen/R600/store-v3i64.ll vendor/llvm/dist/test/CodeGen/R600/store-vector-ptrs.ll vendor/llvm/dist/test/CodeGen/R600/store.ll vendor/llvm/dist/test/CodeGen/R600/store.r600.ll vendor/llvm/dist/test/CodeGen/R600/sub.ll vendor/llvm/dist/test/CodeGen/R600/subreg-coalescer-crash.ll vendor/llvm/dist/test/CodeGen/R600/swizzle-export.ll vendor/llvm/dist/test/CodeGen/R600/trunc-cmp-constant.ll vendor/llvm/dist/test/CodeGen/R600/trunc.ll vendor/llvm/dist/test/CodeGen/R600/tti-unroll-prefs.ll vendor/llvm/dist/test/CodeGen/R600/uaddo.ll vendor/llvm/dist/test/CodeGen/R600/udiv.ll vendor/llvm/dist/test/CodeGen/R600/udivrem.ll vendor/llvm/dist/test/CodeGen/R600/udivrem24.ll vendor/llvm/dist/test/CodeGen/R600/udivrem64.ll vendor/llvm/dist/test/CodeGen/R600/uint_to_fp.f64.ll vendor/llvm/dist/test/CodeGen/R600/uint_to_fp.ll vendor/llvm/dist/test/CodeGen/R600/unaligned-load-store.ll vendor/llvm/dist/test/CodeGen/R600/unhandled-loop-condition-assertion.ll vendor/llvm/dist/test/CodeGen/R600/unroll.ll vendor/llvm/dist/test/CodeGen/R600/urem.ll vendor/llvm/dist/test/CodeGen/R600/use-sgpr-multiple-times.ll vendor/llvm/dist/test/CodeGen/R600/usubo.ll vendor/llvm/dist/test/CodeGen/R600/v_cndmask.ll vendor/llvm/dist/test/CodeGen/R600/valu-i1.ll vendor/llvm/dist/test/CodeGen/R600/vector-alloca.ll vendor/llvm/dist/test/CodeGen/R600/vertex-fetch-encoding.ll vendor/llvm/dist/test/CodeGen/R600/vop-shrink.ll vendor/llvm/dist/test/CodeGen/R600/vselect.ll vendor/llvm/dist/test/CodeGen/R600/vtx-fetch-branch.ll vendor/llvm/dist/test/CodeGen/R600/vtx-schedule.ll vendor/llvm/dist/test/CodeGen/R600/wait.ll vendor/llvm/dist/test/CodeGen/R600/work-item-intrinsics.ll vendor/llvm/dist/test/CodeGen/R600/wrong-transalu-pos-fix.ll vendor/llvm/dist/test/CodeGen/R600/xor.ll vendor/llvm/dist/test/CodeGen/R600/zero_extend.ll vendor/llvm/dist/test/CodeGen/SPARC/2008-10-10-InlineAsmMemoryOperand.ll vendor/llvm/dist/test/CodeGen/SPARC/2008-10-10-InlineAsmRegOperand.ll vendor/llvm/dist/test/CodeGen/SPARC/2009-08-28-PIC.ll vendor/llvm/dist/test/CodeGen/SPARC/2011-01-11-CC.ll vendor/llvm/dist/test/CodeGen/SPARC/2011-01-11-Call.ll vendor/llvm/dist/test/CodeGen/SPARC/2011-01-19-DelaySlot.ll vendor/llvm/dist/test/CodeGen/SPARC/2011-01-22-SRet.ll vendor/llvm/dist/test/CodeGen/SPARC/64abi.ll vendor/llvm/dist/test/CodeGen/SPARC/64bit.ll vendor/llvm/dist/test/CodeGen/SPARC/atomics.ll vendor/llvm/dist/test/CodeGen/SPARC/basictest.ll vendor/llvm/dist/test/CodeGen/SPARC/empty-functions.ll vendor/llvm/dist/test/CodeGen/SPARC/exception.ll vendor/llvm/dist/test/CodeGen/SPARC/float.ll vendor/llvm/dist/test/CodeGen/SPARC/fp128.ll vendor/llvm/dist/test/CodeGen/SPARC/globals.ll vendor/llvm/dist/test/CodeGen/SPARC/inlineasm.ll vendor/llvm/dist/test/CodeGen/SPARC/leafproc.ll vendor/llvm/dist/test/CodeGen/SPARC/mult-alt-generic-sparc.ll vendor/llvm/dist/test/CodeGen/SPARC/obj-relocs.ll vendor/llvm/dist/test/CodeGen/SPARC/private.ll vendor/llvm/dist/test/CodeGen/SPARC/setjmp.ll vendor/llvm/dist/test/CodeGen/SPARC/spillsize.ll vendor/llvm/dist/test/CodeGen/SPARC/tls.ll vendor/llvm/dist/test/CodeGen/SPARC/varargs.ll vendor/llvm/dist/test/CodeGen/SystemZ/Large/branch-range-01.py vendor/llvm/dist/test/CodeGen/SystemZ/Large/branch-range-02.py vendor/llvm/dist/test/CodeGen/SystemZ/Large/branch-range-03.py vendor/llvm/dist/test/CodeGen/SystemZ/Large/branch-range-04.py vendor/llvm/dist/test/CodeGen/SystemZ/Large/branch-range-05.py vendor/llvm/dist/test/CodeGen/SystemZ/Large/branch-range-06.py vendor/llvm/dist/test/CodeGen/SystemZ/Large/branch-range-07.py vendor/llvm/dist/test/CodeGen/SystemZ/Large/branch-range-08.py vendor/llvm/dist/test/CodeGen/SystemZ/Large/branch-range-09.py vendor/llvm/dist/test/CodeGen/SystemZ/Large/branch-range-10.py vendor/llvm/dist/test/CodeGen/SystemZ/Large/branch-range-11.py vendor/llvm/dist/test/CodeGen/SystemZ/Large/branch-range-12.py vendor/llvm/dist/test/CodeGen/SystemZ/Large/lit.local.cfg vendor/llvm/dist/test/CodeGen/SystemZ/Large/spill-01.py vendor/llvm/dist/test/CodeGen/SystemZ/Large/spill-02.py vendor/llvm/dist/test/CodeGen/SystemZ/addr-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/addr-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/addr-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/alias-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/alloca-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/alloca-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/and-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/and-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/and-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/and-06.ll vendor/llvm/dist/test/CodeGen/SystemZ/and-08.ll vendor/llvm/dist/test/CodeGen/SystemZ/asm-18.ll vendor/llvm/dist/test/CodeGen/SystemZ/atomic-load-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/atomic-load-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/atomic-load-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/atomic-load-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/atomicrmw-add-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/atomicrmw-add-06.ll vendor/llvm/dist/test/CodeGen/SystemZ/atomicrmw-and-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/atomicrmw-and-06.ll vendor/llvm/dist/test/CodeGen/SystemZ/atomicrmw-minmax-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/atomicrmw-minmax-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/atomicrmw-or-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/atomicrmw-or-06.ll vendor/llvm/dist/test/CodeGen/SystemZ/atomicrmw-sub-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/atomicrmw-sub-06.ll vendor/llvm/dist/test/CodeGen/SystemZ/atomicrmw-xchg-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/atomicrmw-xchg-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/atomicrmw-xor-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/atomicrmw-xor-06.ll vendor/llvm/dist/test/CodeGen/SystemZ/branch-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/branch-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/branch-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/branch-06.ll vendor/llvm/dist/test/CodeGen/SystemZ/branch-08.ll vendor/llvm/dist/test/CodeGen/SystemZ/bswap-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/bswap-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/bswap-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/bswap-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/cmpxchg-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/cmpxchg-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/cond-load-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/cond-load-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/cond-store-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/cond-store-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/cond-store-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/cond-store-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/cond-store-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/cond-store-06.ll vendor/llvm/dist/test/CodeGen/SystemZ/cond-store-07.ll vendor/llvm/dist/test/CodeGen/SystemZ/cond-store-08.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-abs-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-abs-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-add-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-add-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-add-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-cmp-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-cmp-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-cmp-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-cmp-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-conv-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-conv-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-conv-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-conv-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-conv-09.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-conv-10.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-conv-11.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-conv-12.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-conv-14.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-copysign-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-div-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-div-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-div-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-move-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-move-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-move-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-move-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-move-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-move-06.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-move-07.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-move-09.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-mul-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-mul-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-mul-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-mul-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-mul-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-mul-06.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-mul-07.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-mul-08.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-mul-09.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-neg-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-round-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-round-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-sqrt-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-sqrt-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-sqrt-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-sub-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-sub-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/fp-sub-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/frame-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/frame-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/frame-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/frame-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/frame-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/frame-06.ll vendor/llvm/dist/test/CodeGen/SystemZ/frame-07.ll vendor/llvm/dist/test/CodeGen/SystemZ/frame-08.ll vendor/llvm/dist/test/CodeGen/SystemZ/frame-09.ll vendor/llvm/dist/test/CodeGen/SystemZ/frame-13.ll vendor/llvm/dist/test/CodeGen/SystemZ/frame-14.ll vendor/llvm/dist/test/CodeGen/SystemZ/frame-15.ll vendor/llvm/dist/test/CodeGen/SystemZ/frame-16.ll vendor/llvm/dist/test/CodeGen/SystemZ/frame-17.ll vendor/llvm/dist/test/CodeGen/SystemZ/frame-18.ll vendor/llvm/dist/test/CodeGen/SystemZ/insert-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/insert-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/insert-06.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-add-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-add-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-add-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-add-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-add-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-add-08.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-add-09.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-add-10.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-add-11.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-add-12.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-06.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-07.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-08.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-12.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-15.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-16.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-17.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-18.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-19.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-20.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-21.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-22.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-23.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-24.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-25.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-26.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-27.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-28.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-29.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-30.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-31.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-32.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-33.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-34.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-35.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-36.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-37.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-38.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-39.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-40.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-41.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-42.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-43.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-44.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-45.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-47.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-cmp-48.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-const-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-const-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-const-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-const-06.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-conv-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-conv-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-conv-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-conv-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-conv-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-conv-06.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-conv-07.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-conv-08.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-conv-09.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-conv-10.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-conv-11.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-div-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-div-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-div-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-div-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-div-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-move-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-move-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-move-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-move-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-move-06.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-move-07.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-move-08.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-move-09.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-mul-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-mul-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-mul-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-mul-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-mul-08.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-sub-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-sub-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-sub-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-sub-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-sub-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-sub-06.ll vendor/llvm/dist/test/CodeGen/SystemZ/int-sub-07.ll vendor/llvm/dist/test/CodeGen/SystemZ/loop-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/memchr-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/memcpy-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/memcpy-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/or-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/or-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/or-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/or-06.ll vendor/llvm/dist/test/CodeGen/SystemZ/or-08.ll vendor/llvm/dist/test/CodeGen/SystemZ/prefetch-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/serialize-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/shift-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/shift-02.ll vendor/llvm/dist/test/CodeGen/SystemZ/shift-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/shift-04.ll vendor/llvm/dist/test/CodeGen/SystemZ/shift-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/shift-06.ll vendor/llvm/dist/test/CodeGen/SystemZ/shift-07.ll vendor/llvm/dist/test/CodeGen/SystemZ/shift-08.ll vendor/llvm/dist/test/CodeGen/SystemZ/spill-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/strcpy-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/tls-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/unaligned-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/xor-01.ll vendor/llvm/dist/test/CodeGen/SystemZ/xor-03.ll vendor/llvm/dist/test/CodeGen/SystemZ/xor-05.ll vendor/llvm/dist/test/CodeGen/SystemZ/xor-06.ll vendor/llvm/dist/test/CodeGen/SystemZ/xor-08.ll vendor/llvm/dist/test/CodeGen/Thumb/2007-01-31-RegInfoAssert.ll vendor/llvm/dist/test/CodeGen/Thumb/2007-05-05-InvalidPushPop.ll vendor/llvm/dist/test/CodeGen/Thumb/2009-07-20-TwoAddrBug.ll vendor/llvm/dist/test/CodeGen/Thumb/2009-08-12-ConstIslandAssert.ll vendor/llvm/dist/test/CodeGen/Thumb/2009-08-12-RegInfoAssert.ll vendor/llvm/dist/test/CodeGen/Thumb/2009-08-20-ISelBug.ll vendor/llvm/dist/test/CodeGen/Thumb/2009-12-17-pre-regalloc-taildup.ll vendor/llvm/dist/test/CodeGen/Thumb/2010-07-15-debugOrdering.ll vendor/llvm/dist/test/CodeGen/Thumb/2011-05-11-DAGLegalizer.ll vendor/llvm/dist/test/CodeGen/Thumb/2011-06-16-NoGPRs.ll vendor/llvm/dist/test/CodeGen/Thumb/2011-EpilogueBug.ll vendor/llvm/dist/test/CodeGen/Thumb/2014-06-10-thumb1-ldst-opt-bug.ll vendor/llvm/dist/test/CodeGen/Thumb/PR17309.ll vendor/llvm/dist/test/CodeGen/Thumb/asmprinter-bug.ll vendor/llvm/dist/test/CodeGen/Thumb/cortex-m0-unaligned-access.ll vendor/llvm/dist/test/CodeGen/Thumb/dyn-stackalloc.ll vendor/llvm/dist/test/CodeGen/Thumb/large-stack.ll vendor/llvm/dist/test/CodeGen/Thumb/ldm-merge-call.ll vendor/llvm/dist/test/CodeGen/Thumb/ldm-merge-struct.ll vendor/llvm/dist/test/CodeGen/Thumb/ldm-stm-base-materialization.ll vendor/llvm/dist/test/CodeGen/Thumb/ldr_ext.ll vendor/llvm/dist/test/CodeGen/Thumb/ldr_frame.ll vendor/llvm/dist/test/CodeGen/Thumb/long.ll vendor/llvm/dist/test/CodeGen/Thumb/segmented-stacks.ll vendor/llvm/dist/test/CodeGen/Thumb/stack_guard_remat.ll vendor/llvm/dist/test/CodeGen/Thumb/stm-merge.ll vendor/llvm/dist/test/CodeGen/Thumb/thumb-ldm.ll vendor/llvm/dist/test/CodeGen/Thumb/vargs.ll vendor/llvm/dist/test/CodeGen/Thumb2/2009-07-17-CrossRegClassCopy.ll vendor/llvm/dist/test/CodeGen/Thumb2/2009-07-21-ISelBug.ll vendor/llvm/dist/test/CodeGen/Thumb2/2009-07-30-PEICrash.ll vendor/llvm/dist/test/CodeGen/Thumb2/2009-08-01-WrongLDRBOpc.ll vendor/llvm/dist/test/CodeGen/Thumb2/2009-08-02-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/Thumb2/2009-08-04-CoalescerAssert.ll vendor/llvm/dist/test/CodeGen/Thumb2/2009-08-04-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/Thumb2/2009-08-04-ScavengerAssert.ll vendor/llvm/dist/test/CodeGen/Thumb2/2009-08-04-SubregLoweringBug3.ll vendor/llvm/dist/test/CodeGen/Thumb2/2009-08-06-SpDecBug.ll vendor/llvm/dist/test/CodeGen/Thumb2/2009-08-07-NeonFPBug.ll vendor/llvm/dist/test/CodeGen/Thumb2/2009-08-10-ISelBug.ll vendor/llvm/dist/test/CodeGen/Thumb2/2009-08-21-PostRAKill4.ll vendor/llvm/dist/test/CodeGen/Thumb2/2009-09-01-PostRAProlog.ll vendor/llvm/dist/test/CodeGen/Thumb2/2009-09-28-ITBlockBug.ll vendor/llvm/dist/test/CodeGen/Thumb2/2009-11-11-ScavengerAssert.ll vendor/llvm/dist/test/CodeGen/Thumb2/2009-12-01-LoopIVUsers.ll vendor/llvm/dist/test/CodeGen/Thumb2/2010-01-06-TailDuplicateLabels.ll vendor/llvm/dist/test/CodeGen/Thumb2/2010-01-19-RemovePredicates.ll vendor/llvm/dist/test/CodeGen/Thumb2/2010-03-08-addi12-ccout.ll vendor/llvm/dist/test/CodeGen/Thumb2/2010-03-15-AsmCCClobber.ll vendor/llvm/dist/test/CodeGen/Thumb2/2010-06-14-NEONCoalescer.ll vendor/llvm/dist/test/CodeGen/Thumb2/2010-06-19-ITBlockCrash.ll vendor/llvm/dist/test/CodeGen/Thumb2/2010-06-21-TailMergeBug.ll vendor/llvm/dist/test/CodeGen/Thumb2/2010-08-10-VarSizedAllocaBug.ll vendor/llvm/dist/test/CodeGen/Thumb2/2011-06-07-TwoAddrEarlyClobber.ll vendor/llvm/dist/test/CodeGen/Thumb2/2011-12-16-T2SizeReduceAssert.ll vendor/llvm/dist/test/CodeGen/Thumb2/2012-01-13-CBNZBug.ll vendor/llvm/dist/test/CodeGen/Thumb2/2013-02-19-tail-call-register-hint.ll vendor/llvm/dist/test/CodeGen/Thumb2/2013-03-02-vduplane-nonconstant-source-index.ll vendor/llvm/dist/test/CodeGen/Thumb2/aligned-constants.ll vendor/llvm/dist/test/CodeGen/Thumb2/aligned-spill.ll vendor/llvm/dist/test/CodeGen/Thumb2/bfi.ll vendor/llvm/dist/test/CodeGen/Thumb2/constant-islands-new-island-padding.ll vendor/llvm/dist/test/CodeGen/Thumb2/constant-islands.ll vendor/llvm/dist/test/CodeGen/Thumb2/crash.ll vendor/llvm/dist/test/CodeGen/Thumb2/cross-rc-coalescing-2.ll vendor/llvm/dist/test/CodeGen/Thumb2/div.ll vendor/llvm/dist/test/CodeGen/Thumb2/float-ops.ll vendor/llvm/dist/test/CodeGen/Thumb2/frameless2.ll vendor/llvm/dist/test/CodeGen/Thumb2/ifcvt-neon.ll vendor/llvm/dist/test/CodeGen/Thumb2/inflate-regs.ll vendor/llvm/dist/test/CodeGen/Thumb2/large-call.ll vendor/llvm/dist/test/CodeGen/Thumb2/large-stack.ll vendor/llvm/dist/test/CodeGen/Thumb2/lsr-deficiency.ll vendor/llvm/dist/test/CodeGen/Thumb2/machine-licm.ll vendor/llvm/dist/test/CodeGen/Thumb2/pic-load.ll vendor/llvm/dist/test/CodeGen/Thumb2/stack_guard_remat.ll vendor/llvm/dist/test/CodeGen/Thumb2/tail-call-r9.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-call-tc.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-call.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-cbnz.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-ifcvt1-tc.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-ifcvt1.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-ifcvt2.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-ifcvt3.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-ldm.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-ldr.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-ldr_ext.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-ldr_post.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-ldr_pre.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-ldrb.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-ldrd.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-ldrh.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-smul.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-spill-q.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-str.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-str_post.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-str_pre.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-strb.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-strh.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-tbb.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-tbh.ll vendor/llvm/dist/test/CodeGen/Thumb2/tls1.ll vendor/llvm/dist/test/CodeGen/Thumb2/tls2.ll vendor/llvm/dist/test/CodeGen/Thumb2/tpsoft.ll vendor/llvm/dist/test/CodeGen/Thumb2/v8_IT_2.ll vendor/llvm/dist/test/CodeGen/Thumb2/v8_IT_3.ll vendor/llvm/dist/test/CodeGen/Thumb2/v8_IT_5.ll vendor/llvm/dist/test/CodeGen/X86/2005-01-17-CycleInDAG.ll vendor/llvm/dist/test/CodeGen/X86/2005-02-14-IllegalAssembler.ll vendor/llvm/dist/test/CodeGen/X86/2006-01-19-ISelFoldingBug.ll vendor/llvm/dist/test/CodeGen/X86/2006-04-27-ISelFoldingBug.ll vendor/llvm/dist/test/CodeGen/X86/2006-05-01-SchedCausingSpills.ll vendor/llvm/dist/test/CodeGen/X86/2006-05-02-InstrSched1.ll vendor/llvm/dist/test/CodeGen/X86/2006-05-02-InstrSched2.ll vendor/llvm/dist/test/CodeGen/X86/2006-05-08-CoalesceSubRegClass.ll vendor/llvm/dist/test/CodeGen/X86/2006-05-08-InstrSched.ll vendor/llvm/dist/test/CodeGen/X86/2006-05-11-InstrSched.ll vendor/llvm/dist/test/CodeGen/X86/2006-05-22-FPSetEQ.ll vendor/llvm/dist/test/CodeGen/X86/2006-05-25-CycleInDAG.ll vendor/llvm/dist/test/CodeGen/X86/2006-07-20-InlineAsm.ll vendor/llvm/dist/test/CodeGen/X86/2006-08-07-CycleInDAG.ll vendor/llvm/dist/test/CodeGen/X86/2006-08-16-CycleInDAG.ll vendor/llvm/dist/test/CodeGen/X86/2006-09-01-CycleInDAG.ll vendor/llvm/dist/test/CodeGen/X86/2006-10-09-CycleInDAG.ll vendor/llvm/dist/test/CodeGen/X86/2006-10-10-FindModifiedNodeSlotBug.ll vendor/llvm/dist/test/CodeGen/X86/2006-10-12-CycleInDAG.ll vendor/llvm/dist/test/CodeGen/X86/2006-10-13-CycleInDAG.ll vendor/llvm/dist/test/CodeGen/X86/2006-10-19-SwitchUnnecessaryBranching.ll vendor/llvm/dist/test/CodeGen/X86/2006-11-12-CSRetCC.ll vendor/llvm/dist/test/CodeGen/X86/2006-11-17-IllegalMove.ll vendor/llvm/dist/test/CodeGen/X86/2006-12-16-InlineAsmCrash.ll vendor/llvm/dist/test/CodeGen/X86/2006-12-19-IntelSyntax.ll vendor/llvm/dist/test/CodeGen/X86/2007-01-08-X86-64-Pointer.ll vendor/llvm/dist/test/CodeGen/X86/2007-01-13-StackPtrIndex.ll vendor/llvm/dist/test/CodeGen/X86/2007-02-04-OrAddrMode.ll vendor/llvm/dist/test/CodeGen/X86/2007-02-16-BranchFold.ll vendor/llvm/dist/test/CodeGen/X86/2007-02-19-LiveIntervalAssert.ll vendor/llvm/dist/test/CodeGen/X86/2007-03-01-SpillerCrash.ll vendor/llvm/dist/test/CodeGen/X86/2007-03-15-GEP-Idx-Sink.ll vendor/llvm/dist/test/CodeGen/X86/2007-03-16-InlineAsm.ll vendor/llvm/dist/test/CodeGen/X86/2007-03-26-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/X86/2007-04-08-InlineAsmCrash.ll vendor/llvm/dist/test/CodeGen/X86/2007-04-17-LiveIntervalAssert.ll vendor/llvm/dist/test/CodeGen/X86/2007-05-05-VecCastExpand.ll vendor/llvm/dist/test/CodeGen/X86/2007-05-14-LiveIntervalAssert.ll vendor/llvm/dist/test/CodeGen/X86/2007-06-04-X86-64-CtorAsmBugs.ll vendor/llvm/dist/test/CodeGen/X86/2007-06-29-VecFPConstantCSEBug.ll vendor/llvm/dist/test/CodeGen/X86/2007-07-10-StackerAssert.ll vendor/llvm/dist/test/CodeGen/X86/2007-07-18-Vector-Extract.ll vendor/llvm/dist/test/CodeGen/X86/2007-08-09-IllegalX86-64Asm.ll vendor/llvm/dist/test/CodeGen/X86/2007-08-13-AppendingLinkage.ll vendor/llvm/dist/test/CodeGen/X86/2007-09-05-InvalidAsm.ll vendor/llvm/dist/test/CodeGen/X86/2007-10-04-AvoidEFLAGSCopy.ll vendor/llvm/dist/test/CodeGen/X86/2007-10-12-CoalesceExtSubReg.ll vendor/llvm/dist/test/CodeGen/X86/2007-10-12-SpillerUnfold1.ll vendor/llvm/dist/test/CodeGen/X86/2007-10-12-SpillerUnfold2.ll vendor/llvm/dist/test/CodeGen/X86/2007-10-14-CoalescerCrash.ll vendor/llvm/dist/test/CodeGen/X86/2007-10-15-CoalescerCrash.ll vendor/llvm/dist/test/CodeGen/X86/2007-10-19-SpillerUnfold.ll vendor/llvm/dist/test/CodeGen/X86/2007-10-29-ExtendSetCC.ll vendor/llvm/dist/test/CodeGen/X86/2007-10-30-LSRCrash.ll vendor/llvm/dist/test/CodeGen/X86/2007-10-31-extractelement-i64.ll vendor/llvm/dist/test/CodeGen/X86/2007-11-04-LiveIntervalCrash.ll vendor/llvm/dist/test/CodeGen/X86/2007-11-04-rip-immediate-constant.ll vendor/llvm/dist/test/CodeGen/X86/2007-11-06-InstrSched.ll vendor/llvm/dist/test/CodeGen/X86/2007-11-07-MulBy4.ll vendor/llvm/dist/test/CodeGen/X86/2007-12-16-BURRSchedCrash.ll vendor/llvm/dist/test/CodeGen/X86/2007-12-18-LoadCSEBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-01-08-SchedulerCrash.ll vendor/llvm/dist/test/CodeGen/X86/2008-01-16-FPStackifierAssert.ll vendor/llvm/dist/test/CodeGen/X86/2008-01-16-InvalidDAGCombineXform.ll vendor/llvm/dist/test/CodeGen/X86/2008-02-05-ISelCrash.ll vendor/llvm/dist/test/CodeGen/X86/2008-02-06-LoadFoldingBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-02-18-TailMergingBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-02-20-InlineAsmClobber.ll vendor/llvm/dist/test/CodeGen/X86/2008-02-22-LocalRegAllocBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-02-25-InlineAsmBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-02-25-X86-64-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-02-27-DeadSlotElimBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-03-07-APIntBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-03-10-RegAllocInfLoop.ll vendor/llvm/dist/test/CodeGen/X86/2008-03-12-ThreadLocalAlias.ll vendor/llvm/dist/test/CodeGen/X86/2008-03-14-SpillerCrash.ll vendor/llvm/dist/test/CodeGen/X86/2008-03-23-DarwinAsmComments.ll vendor/llvm/dist/test/CodeGen/X86/2008-03-31-SpillerFoldingBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-04-09-BranchFolding.ll vendor/llvm/dist/test/CodeGen/X86/2008-04-15-LiveVariableBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-04-16-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-04-16-ReMatBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-04-17-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-04-24-pblendw-fold-crash.ll vendor/llvm/dist/test/CodeGen/X86/2008-04-28-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-05-09-PHIElimBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-05-09-ShuffleLoweringBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-05-12-tailmerge-5.ll vendor/llvm/dist/test/CodeGen/X86/2008-05-21-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-05-22-FoldUnalignedLoad.ll vendor/llvm/dist/test/CodeGen/X86/2008-05-28-LocalRegAllocBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-06-13-NotVolatileLoadStore.ll vendor/llvm/dist/test/CodeGen/X86/2008-06-13-VolatileLoadStore.ll vendor/llvm/dist/test/CodeGen/X86/2008-06-16-SubregsBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-07-07-DanglingDeadInsts.ll vendor/llvm/dist/test/CodeGen/X86/2008-07-16-CoalescerCrash.ll vendor/llvm/dist/test/CodeGen/X86/2008-07-19-movups-spills.ll vendor/llvm/dist/test/CodeGen/X86/2008-07-22-CombinerCrash.ll vendor/llvm/dist/test/CodeGen/X86/2008-08-06-CmpStride.ll vendor/llvm/dist/test/CodeGen/X86/2008-08-06-RewriterBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-08-31-EH_RETURN64.ll vendor/llvm/dist/test/CodeGen/X86/2008-09-09-LinearScanBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-09-11-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-09-11-CoalescerBug2.ll vendor/llvm/dist/test/CodeGen/X86/2008-09-17-inline-asm-1.ll vendor/llvm/dist/test/CodeGen/X86/2008-09-18-inline-asm-2.ll vendor/llvm/dist/test/CodeGen/X86/2008-09-19-RegAllocBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-09-29-ReMatBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-09-29-VolatileBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-10-06-x87ld-nan-2.ll vendor/llvm/dist/test/CodeGen/X86/2008-10-07-SSEISelBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-10-11-CallCrash.ll vendor/llvm/dist/test/CodeGen/X86/2008-10-13-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-10-16-VecUnaryOp.ll vendor/llvm/dist/test/CodeGen/X86/2008-10-27-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-11-06-testb.ll vendor/llvm/dist/test/CodeGen/X86/2008-11-29-ULT-Sign.ll vendor/llvm/dist/test/CodeGen/X86/2008-12-01-SpillerAssert.ll vendor/llvm/dist/test/CodeGen/X86/2008-12-01-loop-iv-used-outside-loop.ll vendor/llvm/dist/test/CodeGen/X86/2008-12-02-IllegalResultType.ll vendor/llvm/dist/test/CodeGen/X86/2008-12-02-dagcombine-1.ll vendor/llvm/dist/test/CodeGen/X86/2008-12-02-dagcombine-2.ll vendor/llvm/dist/test/CodeGen/X86/2008-12-19-EarlyClobberBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-12-23-crazy-address.ll vendor/llvm/dist/test/CodeGen/X86/2009-01-16-SchedulerBug.ll vendor/llvm/dist/test/CodeGen/X86/2009-01-18-ConstantExprCrash.ll vendor/llvm/dist/test/CodeGen/X86/2009-01-25-NoSSE.ll vendor/llvm/dist/test/CodeGen/X86/2009-01-31-BigShift2.ll vendor/llvm/dist/test/CodeGen/X86/2009-02-01-LargeMask.ll vendor/llvm/dist/test/CodeGen/X86/2009-02-03-AnalyzedTwice.ll vendor/llvm/dist/test/CodeGen/X86/2009-02-04-sext-i64-gep.ll vendor/llvm/dist/test/CodeGen/X86/2009-02-09-ivs-different-sizes.ll vendor/llvm/dist/test/CodeGen/X86/2009-02-11-codegenprepare-reuse.ll vendor/llvm/dist/test/CodeGen/X86/2009-02-12-DebugInfoVLA.ll vendor/llvm/dist/test/CodeGen/X86/2009-02-26-MachineLICMBug.ll vendor/llvm/dist/test/CodeGen/X86/2009-03-03-BTHang.ll vendor/llvm/dist/test/CodeGen/X86/2009-03-05-burr-list-crash.ll vendor/llvm/dist/test/CodeGen/X86/2009-03-09-APIntCrash.ll vendor/llvm/dist/test/CodeGen/X86/2009-03-10-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/X86/2009-03-23-LinearScanBug.ll vendor/llvm/dist/test/CodeGen/X86/2009-03-23-MultiUseSched.ll vendor/llvm/dist/test/CodeGen/X86/2009-03-25-TestBug.ll vendor/llvm/dist/test/CodeGen/X86/2009-04-12-picrel.ll vendor/llvm/dist/test/CodeGen/X86/2009-04-13-2AddrAssert.ll vendor/llvm/dist/test/CodeGen/X86/2009-04-14-IllegalRegs.ll vendor/llvm/dist/test/CodeGen/X86/2009-04-16-SpillerUnfold.ll vendor/llvm/dist/test/CodeGen/X86/2009-04-24.ll vendor/llvm/dist/test/CodeGen/X86/2009-04-25-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/X86/2009-04-27-CoalescerAssert.ll vendor/llvm/dist/test/CodeGen/X86/2009-04-29-IndirectDestOperands.ll vendor/llvm/dist/test/CodeGen/X86/2009-04-29-LinearScanBug.ll vendor/llvm/dist/test/CodeGen/X86/2009-04-29-RegAllocAssert.ll vendor/llvm/dist/test/CodeGen/X86/2009-04-scale.ll vendor/llvm/dist/test/CodeGen/X86/2009-05-08-InlineAsmIOffset.ll vendor/llvm/dist/test/CodeGen/X86/2009-05-11-tailmerge-crash.ll vendor/llvm/dist/test/CodeGen/X86/2009-05-19-SingleElementExtractElement.ll vendor/llvm/dist/test/CodeGen/X86/2009-05-28-DAGCombineCrash.ll vendor/llvm/dist/test/CodeGen/X86/2009-05-30-ISelBug.ll vendor/llvm/dist/test/CodeGen/X86/2009-06-02-RewriterBug.ll vendor/llvm/dist/test/CodeGen/X86/2009-06-03-Win64DisableRedZone.ll vendor/llvm/dist/test/CodeGen/X86/2009-06-04-VirtualLiveIn.ll vendor/llvm/dist/test/CodeGen/X86/2009-06-05-VZextByteShort.ll vendor/llvm/dist/test/CodeGen/X86/2009-06-18-movlp-shuffle-register.ll vendor/llvm/dist/test/CodeGen/X86/2009-07-15-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/X86/2009-07-20-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/X86/2009-07-20-DAGCombineBug.ll vendor/llvm/dist/test/CodeGen/X86/2009-08-06-branchfolder-crash.ll vendor/llvm/dist/test/CodeGen/X86/2009-08-06-inlineasm.ll vendor/llvm/dist/test/CodeGen/X86/2009-08-14-Win64MemoryIndirectArg.ll vendor/llvm/dist/test/CodeGen/X86/2009-08-19-LoadNarrowingMiscompile.ll vendor/llvm/dist/test/CodeGen/X86/2009-08-23-SubRegReuseUndo.ll vendor/llvm/dist/test/CodeGen/X86/2009-09-10-LoadFoldingBug.ll vendor/llvm/dist/test/CodeGen/X86/2009-09-10-SpillComments.ll vendor/llvm/dist/test/CodeGen/X86/2009-09-16-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/X86/2009-09-21-NoSpillLoopCount.ll vendor/llvm/dist/test/CodeGen/X86/2009-09-22-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/X86/2009-10-16-Scope.ll vendor/llvm/dist/test/CodeGen/X86/2009-10-19-EmergencySpill.ll vendor/llvm/dist/test/CodeGen/X86/2009-10-19-atomic-cmp-eflags.ll vendor/llvm/dist/test/CodeGen/X86/2009-10-25-RewriterBug.ll vendor/llvm/dist/test/CodeGen/X86/2009-11-16-MachineLICM.ll vendor/llvm/dist/test/CodeGen/X86/2009-11-16-UnfoldMemOpBug.ll vendor/llvm/dist/test/CodeGen/X86/2009-11-17-UpdateTerminator.ll vendor/llvm/dist/test/CodeGen/X86/2009-11-25-ImpDefBug.ll vendor/llvm/dist/test/CodeGen/X86/2009-12-01-EarlyClobberBug.ll vendor/llvm/dist/test/CodeGen/X86/2009-12-11-TLSNoRedZone.ll vendor/llvm/dist/test/CodeGen/X86/20090313-signext.ll vendor/llvm/dist/test/CodeGen/X86/2010-01-08-Atomic64Bug.ll vendor/llvm/dist/test/CodeGen/X86/2010-01-13-OptExtBug.ll vendor/llvm/dist/test/CodeGen/X86/2010-01-15-SelectionDAGCycle.ll vendor/llvm/dist/test/CodeGen/X86/2010-01-18-DbgValue.ll vendor/llvm/dist/test/CodeGen/X86/2010-01-19-OptExtBug.ll vendor/llvm/dist/test/CodeGen/X86/2010-02-01-DbgValueCrash.ll vendor/llvm/dist/test/CodeGen/X86/2010-02-04-SchedulerBug.ll vendor/llvm/dist/test/CodeGen/X86/2010-02-11-NonTemporal.ll vendor/llvm/dist/test/CodeGen/X86/2010-02-12-CoalescerBug-Impdef.ll vendor/llvm/dist/test/CodeGen/X86/2010-02-19-TailCallRetAddrBug.ll vendor/llvm/dist/test/CodeGen/X86/2010-02-23-RematImplicitSubreg.ll vendor/llvm/dist/test/CodeGen/X86/2010-03-05-ConstantFoldCFG.ll vendor/llvm/dist/test/CodeGen/X86/2010-03-17-ISelBug.ll vendor/llvm/dist/test/CodeGen/X86/2010-04-06-SSEDomainFixCrash.ll vendor/llvm/dist/test/CodeGen/X86/2010-04-08-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/X86/2010-04-13-AnalyzeBranchCrash.ll vendor/llvm/dist/test/CodeGen/X86/2010-04-30-LocalAlloc-LandingPad.ll vendor/llvm/dist/test/CodeGen/X86/2010-05-05-LocalAllocEarlyClobber.ll vendor/llvm/dist/test/CodeGen/X86/2010-05-07-ldconvert.ll vendor/llvm/dist/test/CodeGen/X86/2010-05-10-DAGCombinerBug.ll vendor/llvm/dist/test/CodeGen/X86/2010-05-16-nosseconversion.ll vendor/llvm/dist/test/CodeGen/X86/2010-05-25-DotDebugLoc.ll vendor/llvm/dist/test/CodeGen/X86/2010-05-26-DotDebugLoc.ll vendor/llvm/dist/test/CodeGen/X86/2010-05-26-FP_TO_INT-crash.ll vendor/llvm/dist/test/CodeGen/X86/2010-05-28-Crash.ll vendor/llvm/dist/test/CodeGen/X86/2010-06-01-DeadArg-DbgInfo.ll vendor/llvm/dist/test/CodeGen/X86/2010-06-14-fast-isel-fs-load.ll vendor/llvm/dist/test/CodeGen/X86/2010-06-15-FastAllocEarlyCLobber.ll vendor/llvm/dist/test/CodeGen/X86/2010-06-24-g-constraint-crash.ll vendor/llvm/dist/test/CodeGen/X86/2010-06-25-CoalescerSubRegDefDead.ll vendor/llvm/dist/test/CodeGen/X86/2010-06-25-asm-RA-crash.ll vendor/llvm/dist/test/CodeGen/X86/2010-06-28-matched-g-constraint.ll vendor/llvm/dist/test/CodeGen/X86/2010-07-02-UnfoldBug.ll vendor/llvm/dist/test/CodeGen/X86/2010-07-06-DbgCrash.ll vendor/llvm/dist/test/CodeGen/X86/2010-07-11-FPStackLoneUse.ll vendor/llvm/dist/test/CodeGen/X86/2010-07-15-Crash.ll vendor/llvm/dist/test/CodeGen/X86/2010-08-04-MaskedSignedCompare.ll vendor/llvm/dist/test/CodeGen/X86/2010-08-04-StackVariable.ll vendor/llvm/dist/test/CodeGen/X86/2010-09-01-RemoveCopyByCommutingDef.ll vendor/llvm/dist/test/CodeGen/X86/2010-09-16-EmptyFilename.ll vendor/llvm/dist/test/CodeGen/X86/2010-09-16-asmcrash.ll vendor/llvm/dist/test/CodeGen/X86/2010-09-17-SideEffectsInChain.ll vendor/llvm/dist/test/CodeGen/X86/2010-09-30-CMOV-JumpTable-PHI.ll vendor/llvm/dist/test/CodeGen/X86/2010-10-08-cmpxchg8b.ll vendor/llvm/dist/test/CodeGen/X86/2010-11-02-DbgParameter.ll vendor/llvm/dist/test/CodeGen/X86/2010-11-09-MOVLPS.ll vendor/llvm/dist/test/CodeGen/X86/2010-11-18-SelectOfExtload.ll vendor/llvm/dist/test/CodeGen/X86/2011-01-24-DbgValue-Before-Use.ll vendor/llvm/dist/test/CodeGen/X86/2011-02-12-shuffle.ll vendor/llvm/dist/test/CodeGen/X86/2011-02-21-VirtRegRewriter-KillSubReg.ll vendor/llvm/dist/test/CodeGen/X86/2011-02-23-UnfoldBug.ll vendor/llvm/dist/test/CodeGen/X86/2011-03-02-DAGCombiner.ll vendor/llvm/dist/test/CodeGen/X86/2011-03-09-Physreg-Coalescing.ll vendor/llvm/dist/test/CodeGen/X86/2011-04-13-SchedCmpJmp.ll vendor/llvm/dist/test/CodeGen/X86/2011-05-09-loaduse.ll vendor/llvm/dist/test/CodeGen/X86/2011-05-26-UnreachableBlockElim.ll vendor/llvm/dist/test/CodeGen/X86/2011-05-27-CrossClassCoalescing.ll vendor/llvm/dist/test/CodeGen/X86/2011-06-01-fildll.ll vendor/llvm/dist/test/CodeGen/X86/2011-06-03-x87chain.ll vendor/llvm/dist/test/CodeGen/X86/2011-06-12-FastAllocSpill.ll vendor/llvm/dist/test/CodeGen/X86/2011-06-19-QuicksortCoalescerBug.ll vendor/llvm/dist/test/CodeGen/X86/2011-07-13-BadFrameIndexDisplacement.ll vendor/llvm/dist/test/CodeGen/X86/2011-09-14-valcoalesce.ll vendor/llvm/dist/test/CodeGen/X86/2011-09-21-setcc-bug.ll vendor/llvm/dist/test/CodeGen/X86/2011-10-11-srl.ll vendor/llvm/dist/test/CodeGen/X86/2011-10-12-MachineCSE.ll vendor/llvm/dist/test/CodeGen/X86/2011-10-18-FastISel-VectorParams.ll vendor/llvm/dist/test/CodeGen/X86/2011-10-19-LegelizeLoad.ll vendor/llvm/dist/test/CodeGen/X86/2011-10-19-widen_vselect.ll vendor/llvm/dist/test/CodeGen/X86/2011-10-27-tstore.ll vendor/llvm/dist/test/CodeGen/X86/2011-11-22-AVX2-Domains.ll vendor/llvm/dist/test/CodeGen/X86/2011-11-30-or.ll vendor/llvm/dist/test/CodeGen/X86/2011-12-06-AVXVectorExtractCombine.ll vendor/llvm/dist/test/CodeGen/X86/2011-12-08-AVXISelBugs.ll vendor/llvm/dist/test/CodeGen/X86/2011-12-26-extractelement-duplicate-load.ll vendor/llvm/dist/test/CodeGen/X86/2012-01-10-UndefExceptionEdge.ll vendor/llvm/dist/test/CodeGen/X86/2012-01-11-split-cv.ll vendor/llvm/dist/test/CodeGen/X86/2012-01-12-extract-sv.ll vendor/llvm/dist/test/CodeGen/X86/2012-01-16-mfence-nosse-flags.ll vendor/llvm/dist/test/CodeGen/X86/2012-02-12-dagco.ll vendor/llvm/dist/test/CodeGen/X86/2012-02-29-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/X86/2012-03-26-PostRALICMBug.ll vendor/llvm/dist/test/CodeGen/X86/2012-04-26-sdglue.ll vendor/llvm/dist/test/CodeGen/X86/2012-07-10-extload64.ll vendor/llvm/dist/test/CodeGen/X86/2012-07-15-broadcastfold.ll vendor/llvm/dist/test/CodeGen/X86/2012-08-17-legalizer-crash.ll vendor/llvm/dist/test/CodeGen/X86/2012-09-28-CGPBug.ll vendor/llvm/dist/test/CodeGen/X86/2012-1-10-buildvector.ll vendor/llvm/dist/test/CodeGen/X86/2012-10-02-DAGCycle.ll vendor/llvm/dist/test/CodeGen/X86/2012-10-03-DAGCycle.ll vendor/llvm/dist/test/CodeGen/X86/2012-10-18-crash-dagco.ll vendor/llvm/dist/test/CodeGen/X86/2012-11-28-merge-store-alias.ll vendor/llvm/dist/test/CodeGen/X86/2012-11-30-handlemove-dbg.ll vendor/llvm/dist/test/CodeGen/X86/2012-11-30-misched-dbg.ll vendor/llvm/dist/test/CodeGen/X86/2012-11-30-regpres-dbg.ll vendor/llvm/dist/test/CodeGen/X86/2012-12-06-python27-miscompile.ll vendor/llvm/dist/test/CodeGen/X86/2012-12-1-merge-multiple.ll vendor/llvm/dist/test/CodeGen/X86/2012-12-19-NoImplicitFloat.ll vendor/llvm/dist/test/CodeGen/X86/2013-03-13-VEX-DestReg.ll vendor/llvm/dist/test/CodeGen/X86/2013-10-14-FastISel-incorrect-vreg.ll vendor/llvm/dist/test/CodeGen/X86/2014-08-29-CompactUnwind.ll vendor/llvm/dist/test/CodeGen/X86/Atomics-64.ll vendor/llvm/dist/test/CodeGen/X86/GC/alloc_loop.ll vendor/llvm/dist/test/CodeGen/X86/GC/argpromotion.ll vendor/llvm/dist/test/CodeGen/X86/GC/badreadproto.ll vendor/llvm/dist/test/CodeGen/X86/GC/badwriteproto.ll vendor/llvm/dist/test/CodeGen/X86/GC/inline.ll vendor/llvm/dist/test/CodeGen/X86/GC/inline2.ll vendor/llvm/dist/test/CodeGen/X86/MachineBranchProb.ll vendor/llvm/dist/test/CodeGen/X86/MachineSink-DbgValue.ll vendor/llvm/dist/test/CodeGen/X86/MachineSink-eflags.ll vendor/llvm/dist/test/CodeGen/X86/MergeConsecutiveStores.ll vendor/llvm/dist/test/CodeGen/X86/StackColoring-dbg.ll vendor/llvm/dist/test/CodeGen/X86/StackColoring.ll vendor/llvm/dist/test/CodeGen/X86/SwitchLowering.ll vendor/llvm/dist/test/CodeGen/X86/SwizzleShuff.ll vendor/llvm/dist/test/CodeGen/X86/abi-isel.ll vendor/llvm/dist/test/CodeGen/X86/add-of-carry.ll vendor/llvm/dist/test/CodeGen/X86/addr-mode-matcher.ll vendor/llvm/dist/test/CodeGen/X86/address-type-promotion-constantexpr.ll vendor/llvm/dist/test/CodeGen/X86/aliases.ll vendor/llvm/dist/test/CodeGen/X86/aligned-variadic.ll vendor/llvm/dist/test/CodeGen/X86/alignment-2.ll vendor/llvm/dist/test/CodeGen/X86/and-load-fold.ll vendor/llvm/dist/test/CodeGen/X86/and-or-fold.ll vendor/llvm/dist/test/CodeGen/X86/and-su.ll vendor/llvm/dist/test/CodeGen/X86/andimm8.ll vendor/llvm/dist/test/CodeGen/X86/anyregcc-crash.ll vendor/llvm/dist/test/CodeGen/X86/anyregcc.ll vendor/llvm/dist/test/CodeGen/X86/asm-global-imm.ll vendor/llvm/dist/test/CodeGen/X86/atom-call-reg-indirect-foldedreload32.ll vendor/llvm/dist/test/CodeGen/X86/atom-call-reg-indirect-foldedreload64.ll vendor/llvm/dist/test/CodeGen/X86/atom-call-reg-indirect.ll vendor/llvm/dist/test/CodeGen/X86/atom-cmpb.ll vendor/llvm/dist/test/CodeGen/X86/atom-fixup-lea1.ll vendor/llvm/dist/test/CodeGen/X86/atom-fixup-lea2.ll vendor/llvm/dist/test/CodeGen/X86/atom-fixup-lea3.ll vendor/llvm/dist/test/CodeGen/X86/atom-fixup-lea4.ll vendor/llvm/dist/test/CodeGen/X86/atom-lea-addw-bug.ll vendor/llvm/dist/test/CodeGen/X86/atom-lea-sp.ll vendor/llvm/dist/test/CodeGen/X86/atom-sched.ll vendor/llvm/dist/test/CodeGen/X86/atomic-dagsched.ll vendor/llvm/dist/test/CodeGen/X86/atomic-load-store-wide.ll vendor/llvm/dist/test/CodeGen/X86/atomic-load-store.ll vendor/llvm/dist/test/CodeGen/X86/atomic-minmax-i6432.ll vendor/llvm/dist/test/CodeGen/X86/atomic-or.ll vendor/llvm/dist/test/CodeGen/X86/atomic-pointer.ll vendor/llvm/dist/test/CodeGen/X86/atomic128.ll vendor/llvm/dist/test/CodeGen/X86/atomic32.ll vendor/llvm/dist/test/CodeGen/X86/atomic64.ll vendor/llvm/dist/test/CodeGen/X86/atomic6432.ll vendor/llvm/dist/test/CodeGen/X86/atomic_mi.ll vendor/llvm/dist/test/CodeGen/X86/atomic_op.ll vendor/llvm/dist/test/CodeGen/X86/avoid-loop-align-2.ll vendor/llvm/dist/test/CodeGen/X86/avoid-loop-align.ll vendor/llvm/dist/test/CodeGen/X86/avoid_complex_am.ll vendor/llvm/dist/test/CodeGen/X86/avx-arith.ll vendor/llvm/dist/test/CodeGen/X86/avx-basic.ll vendor/llvm/dist/test/CodeGen/X86/avx-bitcast.ll vendor/llvm/dist/test/CodeGen/X86/avx-cast.ll vendor/llvm/dist/test/CodeGen/X86/avx-cvt-2.ll vendor/llvm/dist/test/CodeGen/X86/avx-cvt.ll vendor/llvm/dist/test/CodeGen/X86/avx-intel-ocl.ll vendor/llvm/dist/test/CodeGen/X86/avx-intrinsics-x86-upgrade.ll vendor/llvm/dist/test/CodeGen/X86/avx-intrinsics-x86.ll vendor/llvm/dist/test/CodeGen/X86/avx-load-store.ll vendor/llvm/dist/test/CodeGen/X86/avx-logic.ll vendor/llvm/dist/test/CodeGen/X86/avx-shift.ll vendor/llvm/dist/test/CodeGen/X86/avx-splat.ll vendor/llvm/dist/test/CodeGen/X86/avx-trunc.ll vendor/llvm/dist/test/CodeGen/X86/avx-unpack.ll vendor/llvm/dist/test/CodeGen/X86/avx-varargs-x86_64.ll vendor/llvm/dist/test/CodeGen/X86/avx-vbroadcast.ll vendor/llvm/dist/test/CodeGen/X86/avx-vextractf128.ll vendor/llvm/dist/test/CodeGen/X86/avx-vinsertf128.ll vendor/llvm/dist/test/CodeGen/X86/avx-vperm2x128.ll vendor/llvm/dist/test/CodeGen/X86/avx-vzeroupper.ll vendor/llvm/dist/test/CodeGen/X86/avx.ll vendor/llvm/dist/test/CodeGen/X86/avx1-logical-load-folding.ll vendor/llvm/dist/test/CodeGen/X86/avx2-arith.ll vendor/llvm/dist/test/CodeGen/X86/avx2-conversions.ll vendor/llvm/dist/test/CodeGen/X86/avx2-gather.ll vendor/llvm/dist/test/CodeGen/X86/avx2-intrinsics-x86-upgrade.ll vendor/llvm/dist/test/CodeGen/X86/avx2-intrinsics-x86.ll vendor/llvm/dist/test/CodeGen/X86/avx2-pmovxrm-intrinsics.ll vendor/llvm/dist/test/CodeGen/X86/avx2-shift.ll vendor/llvm/dist/test/CodeGen/X86/avx2-vbroadcast.ll vendor/llvm/dist/test/CodeGen/X86/avx2-vector-shifts.ll vendor/llvm/dist/test/CodeGen/X86/avx512-arith.ll vendor/llvm/dist/test/CodeGen/X86/avx512-build-vector.ll vendor/llvm/dist/test/CodeGen/X86/avx512-cvt.ll vendor/llvm/dist/test/CodeGen/X86/avx512-fma-intrinsics.ll vendor/llvm/dist/test/CodeGen/X86/avx512-gather-scatter-intrin.ll vendor/llvm/dist/test/CodeGen/X86/avx512-i1test.ll vendor/llvm/dist/test/CodeGen/X86/avx512-insert-extract.ll vendor/llvm/dist/test/CodeGen/X86/avx512-intrinsics.ll vendor/llvm/dist/test/CodeGen/X86/avx512-logic.ll vendor/llvm/dist/test/CodeGen/X86/avx512-mask-op.ll vendor/llvm/dist/test/CodeGen/X86/avx512-mov.ll vendor/llvm/dist/test/CodeGen/X86/avx512-select.ll vendor/llvm/dist/test/CodeGen/X86/avx512-shift.ll vendor/llvm/dist/test/CodeGen/X86/avx512-trunc-ext.ll vendor/llvm/dist/test/CodeGen/X86/avx512-vbroadcast.ll vendor/llvm/dist/test/CodeGen/X86/avx512-vec-cmp.ll vendor/llvm/dist/test/CodeGen/X86/avx512bw-arith.ll vendor/llvm/dist/test/CodeGen/X86/avx512bw-intrinsics.ll vendor/llvm/dist/test/CodeGen/X86/avx512bw-mask-op.ll vendor/llvm/dist/test/CodeGen/X86/avx512bw-mov.ll vendor/llvm/dist/test/CodeGen/X86/avx512bw-vec-cmp.ll vendor/llvm/dist/test/CodeGen/X86/avx512bwvl-arith.ll vendor/llvm/dist/test/CodeGen/X86/avx512bwvl-intrinsics.ll vendor/llvm/dist/test/CodeGen/X86/avx512bwvl-mov.ll vendor/llvm/dist/test/CodeGen/X86/avx512bwvl-vec-cmp.ll vendor/llvm/dist/test/CodeGen/X86/avx512dq-mask-op.ll vendor/llvm/dist/test/CodeGen/X86/avx512er-intrinsics.ll vendor/llvm/dist/test/CodeGen/X86/avx512vl-arith.ll vendor/llvm/dist/test/CodeGen/X86/avx512vl-intrinsics.ll vendor/llvm/dist/test/CodeGen/X86/avx512vl-mov.ll vendor/llvm/dist/test/CodeGen/X86/avx512vl-vec-cmp.ll vendor/llvm/dist/test/CodeGen/X86/barrier.ll vendor/llvm/dist/test/CodeGen/X86/block-placement.ll vendor/llvm/dist/test/CodeGen/X86/bmi.ll vendor/llvm/dist/test/CodeGen/X86/bool-zext.ll vendor/llvm/dist/test/CodeGen/X86/brcond.ll vendor/llvm/dist/test/CodeGen/X86/break-anti-dependencies.ll vendor/llvm/dist/test/CodeGen/X86/break-false-dep.ll vendor/llvm/dist/test/CodeGen/X86/bswap-vector.ll vendor/llvm/dist/test/CodeGen/X86/bswap.ll vendor/llvm/dist/test/CodeGen/X86/byval-align.ll vendor/llvm/dist/test/CodeGen/X86/byval.ll vendor/llvm/dist/test/CodeGen/X86/byval2.ll vendor/llvm/dist/test/CodeGen/X86/byval3.ll vendor/llvm/dist/test/CodeGen/X86/byval4.ll vendor/llvm/dist/test/CodeGen/X86/byval5.ll vendor/llvm/dist/test/CodeGen/X86/byval6.ll vendor/llvm/dist/test/CodeGen/X86/byval7.ll vendor/llvm/dist/test/CodeGen/X86/cache-intrinsic.ll vendor/llvm/dist/test/CodeGen/X86/call-push.ll vendor/llvm/dist/test/CodeGen/X86/cas.ll vendor/llvm/dist/test/CodeGen/X86/catch.ll vendor/llvm/dist/test/CodeGen/X86/cfstring.ll vendor/llvm/dist/test/CodeGen/X86/chain_order.ll vendor/llvm/dist/test/CodeGen/X86/change-compare-stride-1.ll vendor/llvm/dist/test/CodeGen/X86/clobber-fi0.ll vendor/llvm/dist/test/CodeGen/X86/cmov-into-branch.ll vendor/llvm/dist/test/CodeGen/X86/cmov.ll vendor/llvm/dist/test/CodeGen/X86/cmp.ll vendor/llvm/dist/test/CodeGen/X86/cmpxchg-clobber-flags.ll vendor/llvm/dist/test/CodeGen/X86/cmpxchg-i1.ll vendor/llvm/dist/test/CodeGen/X86/cmpxchg-i128-i1.ll vendor/llvm/dist/test/CodeGen/X86/cmpxchg16b.ll vendor/llvm/dist/test/CodeGen/X86/coalesce-esp.ll vendor/llvm/dist/test/CodeGen/X86/coalesce-implicitdef.ll vendor/llvm/dist/test/CodeGen/X86/coalescer-commute1.ll vendor/llvm/dist/test/CodeGen/X86/coalescer-commute4.ll vendor/llvm/dist/test/CodeGen/X86/coalescer-cross.ll vendor/llvm/dist/test/CodeGen/X86/coalescer-dce2.ll vendor/llvm/dist/test/CodeGen/X86/coalescer-identity.ll vendor/llvm/dist/test/CodeGen/X86/coalescer-remat.ll vendor/llvm/dist/test/CodeGen/X86/code_placement.ll vendor/llvm/dist/test/CodeGen/X86/codegen-prepare-addrmode-sext.ll vendor/llvm/dist/test/CodeGen/X86/codegen-prepare-cast.ll vendor/llvm/dist/test/CodeGen/X86/codegen-prepare-crash.ll vendor/llvm/dist/test/CodeGen/X86/codegen-prepare-extload.ll vendor/llvm/dist/test/CodeGen/X86/codegen-prepare.ll vendor/llvm/dist/test/CodeGen/X86/codemodel.ll vendor/llvm/dist/test/CodeGen/X86/coff-comdat.ll vendor/llvm/dist/test/CodeGen/X86/combine-and.ll vendor/llvm/dist/test/CodeGen/X86/combine-or.ll vendor/llvm/dist/test/CodeGen/X86/combiner-aa-0.ll vendor/llvm/dist/test/CodeGen/X86/combiner-aa-1.ll vendor/llvm/dist/test/CodeGen/X86/commute-blend-avx2.ll vendor/llvm/dist/test/CodeGen/X86/commute-blend-sse41.ll vendor/llvm/dist/test/CodeGen/X86/commute-intrinsic.ll vendor/llvm/dist/test/CodeGen/X86/compact-unwind.ll vendor/llvm/dist/test/CodeGen/X86/complex-asm.ll vendor/llvm/dist/test/CodeGen/X86/complex-fca.ll vendor/llvm/dist/test/CodeGen/X86/computeKnownBits_urem.ll vendor/llvm/dist/test/CodeGen/X86/const-base-addr.ll vendor/llvm/dist/test/CodeGen/X86/constant-combines.ll vendor/llvm/dist/test/CodeGen/X86/constant-hoisting-shift-immediate.ll vendor/llvm/dist/test/CodeGen/X86/constructor.ll vendor/llvm/dist/test/CodeGen/X86/convert-2-addr-3-addr-inc64.ll vendor/llvm/dist/test/CodeGen/X86/crash-O0.ll vendor/llvm/dist/test/CodeGen/X86/crash-nosse.ll vendor/llvm/dist/test/CodeGen/X86/crash.ll vendor/llvm/dist/test/CodeGen/X86/critical-anti-dep-breaker.ll vendor/llvm/dist/test/CodeGen/X86/critical-edge-split-2.ll vendor/llvm/dist/test/CodeGen/X86/cse-add-with-overflow.ll vendor/llvm/dist/test/CodeGen/X86/cvt16.ll vendor/llvm/dist/test/CodeGen/X86/dag-optnone.ll vendor/llvm/dist/test/CodeGen/X86/dagcombine-and-setcc.ll vendor/llvm/dist/test/CodeGen/X86/dagcombine-buildvector.ll vendor/llvm/dist/test/CodeGen/X86/dagcombine-cse.ll vendor/llvm/dist/test/CodeGen/X86/darwin-quote.ll vendor/llvm/dist/test/CodeGen/X86/darwin-stub.ll vendor/llvm/dist/test/CodeGen/X86/dbg-changes-codegen-branch-folding.ll vendor/llvm/dist/test/CodeGen/X86/dbg-changes-codegen.ll vendor/llvm/dist/test/CodeGen/X86/discontiguous-loops.ll vendor/llvm/dist/test/CodeGen/X86/div8.ll vendor/llvm/dist/test/CodeGen/X86/dllexport-x86_64.ll vendor/llvm/dist/test/CodeGen/X86/dllexport.ll vendor/llvm/dist/test/CodeGen/X86/dllimport-x86_64.ll vendor/llvm/dist/test/CodeGen/X86/dllimport.ll vendor/llvm/dist/test/CodeGen/X86/dollar-name.ll vendor/llvm/dist/test/CodeGen/X86/dont-trunc-store-double-to-float.ll vendor/llvm/dist/test/CodeGen/X86/dwarf-comp-dir.ll vendor/llvm/dist/test/CodeGen/X86/dynamic-alloca-lifetime.ll vendor/llvm/dist/test/CodeGen/X86/dynamic-allocas-VLAs.ll vendor/llvm/dist/test/CodeGen/X86/early-ifcvt.ll vendor/llvm/dist/test/CodeGen/X86/emit-big-cst.ll vendor/llvm/dist/test/CodeGen/X86/empty-functions.ll vendor/llvm/dist/test/CodeGen/X86/expand-opaque-const.ll vendor/llvm/dist/test/CodeGen/X86/extend.ll vendor/llvm/dist/test/CodeGen/X86/extern_weak.ll vendor/llvm/dist/test/CodeGen/X86/extract-extract.ll vendor/llvm/dist/test/CodeGen/X86/extract-store.ll vendor/llvm/dist/test/CodeGen/X86/extractelement-load.ll vendor/llvm/dist/test/CodeGen/X86/extractps.ll vendor/llvm/dist/test/CodeGen/X86/f16c-intrinsics.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-args-fail.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-args-fail2.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-args.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-avoid-unnecessary-pic-base.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-branch_weights.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-call-bool.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-call.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-cmp-branch2.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-cmp-branch3.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-cmp.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-divrem-x86-64.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-divrem.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-extract.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-fneg.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-fold-mem.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-gep.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-gv.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-i1.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-mem.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-ret-ext.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-select-cmov.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-select-cmov2.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-select-pseudo-cmov.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-select-sse.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-sse12-fptoint.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-store.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-tailcall.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-tls.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-x32.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-x86-64.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-x86.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel.ll vendor/llvm/dist/test/CodeGen/X86/fastcall-correct-mangling.ll vendor/llvm/dist/test/CodeGen/X86/fastcc-byval.ll vendor/llvm/dist/test/CodeGen/X86/fastcc-sret.ll vendor/llvm/dist/test/CodeGen/X86/fastcc.ll vendor/llvm/dist/test/CodeGen/X86/fastisel-gep-promote-before-add.ll vendor/llvm/dist/test/CodeGen/X86/floor-soft-float.ll vendor/llvm/dist/test/CodeGen/X86/fltused.ll vendor/llvm/dist/test/CodeGen/X86/fltused_function_pointer.ll vendor/llvm/dist/test/CodeGen/X86/fma-do-not-commute.ll vendor/llvm/dist/test/CodeGen/X86/fma3-intrinsics.ll vendor/llvm/dist/test/CodeGen/X86/fma4-intrinsics-x86_64-folded-load.ll vendor/llvm/dist/test/CodeGen/X86/fma_patterns.ll vendor/llvm/dist/test/CodeGen/X86/fmul-combines.ll vendor/llvm/dist/test/CodeGen/X86/fmul-zero.ll vendor/llvm/dist/test/CodeGen/X86/fnabs.ll vendor/llvm/dist/test/CodeGen/X86/fold-add.ll vendor/llvm/dist/test/CodeGen/X86/fold-and-shift.ll vendor/llvm/dist/test/CodeGen/X86/fold-call-2.ll vendor/llvm/dist/test/CodeGen/X86/fold-call-3.ll vendor/llvm/dist/test/CodeGen/X86/fold-call-oper.ll vendor/llvm/dist/test/CodeGen/X86/fold-call.ll vendor/llvm/dist/test/CodeGen/X86/fold-load-vec.ll vendor/llvm/dist/test/CodeGen/X86/fold-load.ll vendor/llvm/dist/test/CodeGen/X86/fold-mul-lohi.ll vendor/llvm/dist/test/CodeGen/X86/fold-pcmpeqd-2.ll vendor/llvm/dist/test/CodeGen/X86/fold-sext-trunc.ll vendor/llvm/dist/test/CodeGen/X86/fold-tied-op.ll vendor/llvm/dist/test/CodeGen/X86/fold-vex.ll vendor/llvm/dist/test/CodeGen/X86/fold-zext-trunc.ll vendor/llvm/dist/test/CodeGen/X86/force-align-stack-alloca.ll vendor/llvm/dist/test/CodeGen/X86/fp-fast.ll vendor/llvm/dist/test/CodeGen/X86/fp-load-trunc.ll vendor/llvm/dist/test/CodeGen/X86/fp-stack-O0-crash.ll vendor/llvm/dist/test/CodeGen/X86/fp-stack-O0.ll vendor/llvm/dist/test/CodeGen/X86/fp-stack-compare-cmov.ll vendor/llvm/dist/test/CodeGen/X86/fp-stack-compare.ll vendor/llvm/dist/test/CodeGen/X86/fp-stack-ret-store.ll vendor/llvm/dist/test/CodeGen/X86/fp-stack-ret.ll vendor/llvm/dist/test/CodeGen/X86/fp-stack.ll vendor/llvm/dist/test/CodeGen/X86/fp-trunc.ll vendor/llvm/dist/test/CodeGen/X86/fp2sint.ll vendor/llvm/dist/test/CodeGen/X86/fp_load_cast_fold.ll vendor/llvm/dist/test/CodeGen/X86/fp_load_fold.ll vendor/llvm/dist/test/CodeGen/X86/fpstack-debuginstr-kill.ll vendor/llvm/dist/test/CodeGen/X86/frameaddr.ll vendor/llvm/dist/test/CodeGen/X86/full-lsr.ll vendor/llvm/dist/test/CodeGen/X86/ga-offset.ll vendor/llvm/dist/test/CodeGen/X86/gather-addresses.ll vendor/llvm/dist/test/CodeGen/X86/gcc_except_table.ll vendor/llvm/dist/test/CodeGen/X86/gcc_except_table_functions.ll vendor/llvm/dist/test/CodeGen/X86/getelementptr.ll vendor/llvm/dist/test/CodeGen/X86/ghc-cc.ll vendor/llvm/dist/test/CodeGen/X86/ghc-cc64.ll vendor/llvm/dist/test/CodeGen/X86/global-sections.ll vendor/llvm/dist/test/CodeGen/X86/gs-fold.ll vendor/llvm/dist/test/CodeGen/X86/h-register-addressing-32.ll vendor/llvm/dist/test/CodeGen/X86/h-register-addressing-64.ll vendor/llvm/dist/test/CodeGen/X86/h-registers-2.ll vendor/llvm/dist/test/CodeGen/X86/h-registers-3.ll vendor/llvm/dist/test/CodeGen/X86/haddsub-2.ll vendor/llvm/dist/test/CodeGen/X86/haddsub-undef.ll vendor/llvm/dist/test/CodeGen/X86/haddsub.ll vendor/llvm/dist/test/CodeGen/X86/half.ll vendor/llvm/dist/test/CodeGen/X86/hidden-vis-2.ll vendor/llvm/dist/test/CodeGen/X86/hidden-vis-3.ll vendor/llvm/dist/test/CodeGen/X86/hidden-vis-4.ll vendor/llvm/dist/test/CodeGen/X86/hidden-vis-pic.ll vendor/llvm/dist/test/CodeGen/X86/hipe-cc.ll vendor/llvm/dist/test/CodeGen/X86/hipe-cc64.ll vendor/llvm/dist/test/CodeGen/X86/hoist-common.ll vendor/llvm/dist/test/CodeGen/X86/hoist-invariant-load.ll vendor/llvm/dist/test/CodeGen/X86/i128-mul.ll vendor/llvm/dist/test/CodeGen/X86/i128-ret.ll vendor/llvm/dist/test/CodeGen/X86/i256-add.ll vendor/llvm/dist/test/CodeGen/X86/i2k.ll vendor/llvm/dist/test/CodeGen/X86/i486-fence-loop.ll vendor/llvm/dist/test/CodeGen/X86/i64-mem-copy.ll vendor/llvm/dist/test/CodeGen/X86/illegal-vector-args-return.ll vendor/llvm/dist/test/CodeGen/X86/inalloca-ctor.ll vendor/llvm/dist/test/CodeGen/X86/inalloca-invoke.ll vendor/llvm/dist/test/CodeGen/X86/inalloca-stdcall.ll vendor/llvm/dist/test/CodeGen/X86/inalloca.ll vendor/llvm/dist/test/CodeGen/X86/inline-asm-fpstack.ll vendor/llvm/dist/test/CodeGen/X86/inline-asm-out-regs.ll vendor/llvm/dist/test/CodeGen/X86/inline-asm-ptr-cast.ll vendor/llvm/dist/test/CodeGen/X86/inline-asm-stack-realign.ll vendor/llvm/dist/test/CodeGen/X86/inline-asm-stack-realign2.ll vendor/llvm/dist/test/CodeGen/X86/inline-asm-stack-realign3.ll vendor/llvm/dist/test/CodeGen/X86/inline-asm-tied.ll vendor/llvm/dist/test/CodeGen/X86/ins_split_regalloc.ll vendor/llvm/dist/test/CodeGen/X86/ins_subreg_coalesce-1.ll vendor/llvm/dist/test/CodeGen/X86/ins_subreg_coalesce-3.ll vendor/llvm/dist/test/CodeGen/X86/insert-positions.ll vendor/llvm/dist/test/CodeGen/X86/invalid-shift-immediate.ll vendor/llvm/dist/test/CodeGen/X86/isel-optnone.ll vendor/llvm/dist/test/CodeGen/X86/isel-sink.ll vendor/llvm/dist/test/CodeGen/X86/isel-sink2.ll vendor/llvm/dist/test/CodeGen/X86/isel-sink3.ll vendor/llvm/dist/test/CodeGen/X86/isint.ll vendor/llvm/dist/test/CodeGen/X86/jump_sign.ll vendor/llvm/dist/test/CodeGen/X86/large-code-model-isel.ll vendor/llvm/dist/test/CodeGen/X86/large-constants.ll vendor/llvm/dist/test/CodeGen/X86/large-gep-chain.ll vendor/llvm/dist/test/CodeGen/X86/large-gep-scale.ll vendor/llvm/dist/test/CodeGen/X86/ldzero.ll vendor/llvm/dist/test/CodeGen/X86/lea-5.ll vendor/llvm/dist/test/CodeGen/X86/lea-recursion.ll vendor/llvm/dist/test/CodeGen/X86/leaf-fp-elim.ll vendor/llvm/dist/test/CodeGen/X86/legalize-shift-64.ll vendor/llvm/dist/test/CodeGen/X86/legalize-sub-zero-2.ll vendor/llvm/dist/test/CodeGen/X86/licm-nested.ll vendor/llvm/dist/test/CodeGen/X86/licm-symbol.ll vendor/llvm/dist/test/CodeGen/X86/liveness-local-regalloc.ll vendor/llvm/dist/test/CodeGen/X86/load-slice.ll vendor/llvm/dist/test/CodeGen/X86/longlong-deadload.ll vendor/llvm/dist/test/CodeGen/X86/loop-hoist.ll vendor/llvm/dist/test/CodeGen/X86/loop-strength-reduce-2.ll vendor/llvm/dist/test/CodeGen/X86/loop-strength-reduce-3.ll vendor/llvm/dist/test/CodeGen/X86/loop-strength-reduce.ll vendor/llvm/dist/test/CodeGen/X86/loop-strength-reduce2.ll vendor/llvm/dist/test/CodeGen/X86/loop-strength-reduce4.ll vendor/llvm/dist/test/CodeGen/X86/loop-strength-reduce7.ll vendor/llvm/dist/test/CodeGen/X86/loop-strength-reduce8.ll vendor/llvm/dist/test/CodeGen/X86/lower-vec-shift-2.ll vendor/llvm/dist/test/CodeGen/X86/lsr-delayed-fold.ll vendor/llvm/dist/test/CodeGen/X86/lsr-i386.ll vendor/llvm/dist/test/CodeGen/X86/lsr-interesting-step.ll vendor/llvm/dist/test/CodeGen/X86/lsr-loop-exit-cond.ll vendor/llvm/dist/test/CodeGen/X86/lsr-normalization.ll vendor/llvm/dist/test/CodeGen/X86/lsr-quadratic-expand.ll vendor/llvm/dist/test/CodeGen/X86/lsr-redundant-addressing.ll vendor/llvm/dist/test/CodeGen/X86/lsr-reuse-trunc.ll vendor/llvm/dist/test/CodeGen/X86/lsr-reuse.ll vendor/llvm/dist/test/CodeGen/X86/lsr-static-addr.ll vendor/llvm/dist/test/CodeGen/X86/lsr-wrap.ll vendor/llvm/dist/test/CodeGen/X86/lzcnt-tzcnt.ll vendor/llvm/dist/test/CodeGen/X86/machine-cse.ll vendor/llvm/dist/test/CodeGen/X86/masked-iv-safe.ll vendor/llvm/dist/test/CodeGen/X86/masked-iv-unsafe.ll vendor/llvm/dist/test/CodeGen/X86/masked_memop.ll vendor/llvm/dist/test/CodeGen/X86/mcinst-lowering.ll vendor/llvm/dist/test/CodeGen/X86/mem-intrin-base-reg.ll vendor/llvm/dist/test/CodeGen/X86/mem-promote-integers.ll vendor/llvm/dist/test/CodeGen/X86/memcmp.ll vendor/llvm/dist/test/CodeGen/X86/memcpy-2.ll vendor/llvm/dist/test/CodeGen/X86/memcpy.ll vendor/llvm/dist/test/CodeGen/X86/memset-3.ll vendor/llvm/dist/test/CodeGen/X86/memset.ll vendor/llvm/dist/test/CodeGen/X86/merge_store.ll vendor/llvm/dist/test/CodeGen/X86/mingw-alloca.ll vendor/llvm/dist/test/CodeGen/X86/misaligned-memset.ll vendor/llvm/dist/test/CodeGen/X86/misched-aa-colored.ll vendor/llvm/dist/test/CodeGen/X86/misched-aa-mmos.ll vendor/llvm/dist/test/CodeGen/X86/misched-balance.ll vendor/llvm/dist/test/CodeGen/X86/misched-code-difference-with-debug.ll vendor/llvm/dist/test/CodeGen/X86/misched-crash.ll vendor/llvm/dist/test/CodeGen/X86/misched-fusion.ll vendor/llvm/dist/test/CodeGen/X86/misched-matmul.ll vendor/llvm/dist/test/CodeGen/X86/misched-matrix.ll vendor/llvm/dist/test/CodeGen/X86/misched-new.ll vendor/llvm/dist/test/CodeGen/X86/mmx-arg-passing.ll vendor/llvm/dist/test/CodeGen/X86/mmx-arith.ll vendor/llvm/dist/test/CodeGen/X86/mmx-copy-gprs.ll vendor/llvm/dist/test/CodeGen/X86/movbe.ll vendor/llvm/dist/test/CodeGen/X86/movfs.ll vendor/llvm/dist/test/CodeGen/X86/movgs.ll vendor/llvm/dist/test/CodeGen/X86/movmsk.ll vendor/llvm/dist/test/CodeGen/X86/movtopush.ll vendor/llvm/dist/test/CodeGen/X86/ms-inline-asm.ll vendor/llvm/dist/test/CodeGen/X86/mul128_sext_loop.ll vendor/llvm/dist/test/CodeGen/X86/muloti.ll vendor/llvm/dist/test/CodeGen/X86/mult-alt-generic-i686.ll vendor/llvm/dist/test/CodeGen/X86/mult-alt-generic-x86_64.ll vendor/llvm/dist/test/CodeGen/X86/mult-alt-x86.ll vendor/llvm/dist/test/CodeGen/X86/multiple-loop-post-inc.ll vendor/llvm/dist/test/CodeGen/X86/mulx32.ll vendor/llvm/dist/test/CodeGen/X86/mulx64.ll vendor/llvm/dist/test/CodeGen/X86/musttail-fastcall.ll vendor/llvm/dist/test/CodeGen/X86/musttail-indirect.ll vendor/llvm/dist/test/CodeGen/X86/musttail-thiscall.ll vendor/llvm/dist/test/CodeGen/X86/musttail-varargs.ll vendor/llvm/dist/test/CodeGen/X86/nancvt.ll vendor/llvm/dist/test/CodeGen/X86/narrow-shl-cst.ll vendor/llvm/dist/test/CodeGen/X86/narrow-shl-load.ll vendor/llvm/dist/test/CodeGen/X86/narrow_op-1.ll vendor/llvm/dist/test/CodeGen/X86/negate-add-zero.ll vendor/llvm/dist/test/CodeGen/X86/negative-subscript.ll vendor/llvm/dist/test/CodeGen/X86/no-cmov.ll vendor/llvm/dist/test/CodeGen/X86/nontemporal-2.ll vendor/llvm/dist/test/CodeGen/X86/norex-subreg.ll vendor/llvm/dist/test/CodeGen/X86/nosse-error1.ll vendor/llvm/dist/test/CodeGen/X86/nosse-error2.ll vendor/llvm/dist/test/CodeGen/X86/nosse-varargs.ll vendor/llvm/dist/test/CodeGen/X86/null-streamer.ll vendor/llvm/dist/test/CodeGen/X86/object-size.ll vendor/llvm/dist/test/CodeGen/X86/opaque-constant-asm.ll vendor/llvm/dist/test/CodeGen/X86/opt-ext-uses.ll vendor/llvm/dist/test/CodeGen/X86/optimize-max-0.ll vendor/llvm/dist/test/CodeGen/X86/optimize-max-1.ll vendor/llvm/dist/test/CodeGen/X86/optimize-max-2.ll vendor/llvm/dist/test/CodeGen/X86/optimize-max-3.ll vendor/llvm/dist/test/CodeGen/X86/or-address.ll vendor/llvm/dist/test/CodeGen/X86/or-branch.ll vendor/llvm/dist/test/CodeGen/X86/packed_struct.ll vendor/llvm/dist/test/CodeGen/X86/palignr.ll vendor/llvm/dist/test/CodeGen/X86/patchpoint-invoke.ll vendor/llvm/dist/test/CodeGen/X86/patchpoint-webkit_jscc.ll vendor/llvm/dist/test/CodeGen/X86/patchpoint.ll vendor/llvm/dist/test/CodeGen/X86/peep-test-0.ll vendor/llvm/dist/test/CodeGen/X86/peep-test-1.ll vendor/llvm/dist/test/CodeGen/X86/peephole-fold-movsd.ll vendor/llvm/dist/test/CodeGen/X86/peephole-multiple-folds.ll vendor/llvm/dist/test/CodeGen/X86/phi-bit-propagation.ll vendor/llvm/dist/test/CodeGen/X86/phielim-split.ll vendor/llvm/dist/test/CodeGen/X86/phys-reg-local-regalloc.ll vendor/llvm/dist/test/CodeGen/X86/phys_subreg_coalesce-2.ll vendor/llvm/dist/test/CodeGen/X86/phys_subreg_coalesce-3.ll vendor/llvm/dist/test/CodeGen/X86/pic.ll vendor/llvm/dist/test/CodeGen/X86/pic_jumptable.ll vendor/llvm/dist/test/CodeGen/X86/pmovext.ll vendor/llvm/dist/test/CodeGen/X86/pmovsx-inreg.ll vendor/llvm/dist/test/CodeGen/X86/pmul.ll vendor/llvm/dist/test/CodeGen/X86/pmulld.ll vendor/llvm/dist/test/CodeGen/X86/pointer-vector.ll vendor/llvm/dist/test/CodeGen/X86/postra-licm.ll vendor/llvm/dist/test/CodeGen/X86/pr10475.ll vendor/llvm/dist/test/CodeGen/X86/pr10525.ll vendor/llvm/dist/test/CodeGen/X86/pr11334.ll vendor/llvm/dist/test/CodeGen/X86/pr12360.ll vendor/llvm/dist/test/CodeGen/X86/pr12889.ll vendor/llvm/dist/test/CodeGen/X86/pr13209.ll vendor/llvm/dist/test/CodeGen/X86/pr13458.ll vendor/llvm/dist/test/CodeGen/X86/pr13859.ll vendor/llvm/dist/test/CodeGen/X86/pr13899.ll vendor/llvm/dist/test/CodeGen/X86/pr14161.ll vendor/llvm/dist/test/CodeGen/X86/pr14333.ll vendor/llvm/dist/test/CodeGen/X86/pr14562.ll vendor/llvm/dist/test/CodeGen/X86/pr1489.ll vendor/llvm/dist/test/CodeGen/X86/pr1505b.ll vendor/llvm/dist/test/CodeGen/X86/pr15267.ll vendor/llvm/dist/test/CodeGen/X86/pr15309.ll vendor/llvm/dist/test/CodeGen/X86/pr18023.ll vendor/llvm/dist/test/CodeGen/X86/pr18162.ll vendor/llvm/dist/test/CodeGen/X86/pr18846.ll vendor/llvm/dist/test/CodeGen/X86/pr20020.ll vendor/llvm/dist/test/CodeGen/X86/pr21099.ll vendor/llvm/dist/test/CodeGen/X86/pr2177.ll vendor/llvm/dist/test/CodeGen/X86/pr2182.ll vendor/llvm/dist/test/CodeGen/X86/pr22774.ll vendor/llvm/dist/test/CodeGen/X86/pr2326.ll vendor/llvm/dist/test/CodeGen/X86/pr2656.ll vendor/llvm/dist/test/CodeGen/X86/pr2849.ll vendor/llvm/dist/test/CodeGen/X86/pr2924.ll vendor/llvm/dist/test/CodeGen/X86/pr2982.ll vendor/llvm/dist/test/CodeGen/X86/pr3154.ll vendor/llvm/dist/test/CodeGen/X86/pr3216.ll vendor/llvm/dist/test/CodeGen/X86/pr3241.ll vendor/llvm/dist/test/CodeGen/X86/pr3244.ll vendor/llvm/dist/test/CodeGen/X86/pr3250.ll vendor/llvm/dist/test/CodeGen/X86/pr3317.ll vendor/llvm/dist/test/CodeGen/X86/pr3366.ll vendor/llvm/dist/test/CodeGen/X86/pr3457.ll vendor/llvm/dist/test/CodeGen/X86/pr3522.ll vendor/llvm/dist/test/CodeGen/X86/pr5145.ll vendor/llvm/dist/test/CodeGen/X86/pr9127.ll vendor/llvm/dist/test/CodeGen/X86/pre-ra-sched.ll vendor/llvm/dist/test/CodeGen/X86/private-2.ll vendor/llvm/dist/test/CodeGen/X86/private.ll vendor/llvm/dist/test/CodeGen/X86/promote-assert-zext.ll vendor/llvm/dist/test/CodeGen/X86/promote-trunc.ll vendor/llvm/dist/test/CodeGen/X86/promote.ll vendor/llvm/dist/test/CodeGen/X86/pshufb-mask-comments.ll vendor/llvm/dist/test/CodeGen/X86/psubus.ll vendor/llvm/dist/test/CodeGen/X86/ptrtoint-constexpr.ll vendor/llvm/dist/test/CodeGen/X86/ragreedy-bug.ll vendor/llvm/dist/test/CodeGen/X86/ragreedy-hoist-spill.ll vendor/llvm/dist/test/CodeGen/X86/ragreedy-last-chance-recoloring.ll vendor/llvm/dist/test/CodeGen/X86/rd-mod-wr-eflags.ll vendor/llvm/dist/test/CodeGen/X86/rdrand.ll vendor/llvm/dist/test/CodeGen/X86/recip-fastmath.ll vendor/llvm/dist/test/CodeGen/X86/regalloc-reconcile-broken-hints.ll vendor/llvm/dist/test/CodeGen/X86/regpressure.ll vendor/llvm/dist/test/CodeGen/X86/remat-constant.ll vendor/llvm/dist/test/CodeGen/X86/remat-fold-load.ll vendor/llvm/dist/test/CodeGen/X86/remat-invalid-liveness.ll vendor/llvm/dist/test/CodeGen/X86/remat-scalar-zero.ll vendor/llvm/dist/test/CodeGen/X86/reverse_branches.ll vendor/llvm/dist/test/CodeGen/X86/rip-rel-address.ll vendor/llvm/dist/test/CodeGen/X86/rip-rel-lea.ll vendor/llvm/dist/test/CodeGen/X86/rot32.ll vendor/llvm/dist/test/CodeGen/X86/rot64.ll vendor/llvm/dist/test/CodeGen/X86/rotate4.ll vendor/llvm/dist/test/CodeGen/X86/sandybridge-loads.ll vendor/llvm/dist/test/CodeGen/X86/scalar-extract.ll vendor/llvm/dist/test/CodeGen/X86/scalar_sse_minmax.ll vendor/llvm/dist/test/CodeGen/X86/scalar_widen_div.ll vendor/llvm/dist/test/CodeGen/X86/scalarize-bitcast.ll vendor/llvm/dist/test/CodeGen/X86/scev-interchange.ll vendor/llvm/dist/test/CodeGen/X86/segmented-stacks.ll vendor/llvm/dist/test/CodeGen/X86/select-with-and-or.ll vendor/llvm/dist/test/CodeGen/X86/select.ll vendor/llvm/dist/test/CodeGen/X86/selectiondag-cse.ll vendor/llvm/dist/test/CodeGen/X86/setcc-narrowing.ll vendor/llvm/dist/test/CodeGen/X86/setcc.ll vendor/llvm/dist/test/CodeGen/X86/sext-load.ll vendor/llvm/dist/test/CodeGen/X86/sha.ll vendor/llvm/dist/test/CodeGen/X86/shift-and.ll vendor/llvm/dist/test/CodeGen/X86/shift-bmi2.ll vendor/llvm/dist/test/CodeGen/X86/shift-coalesce.ll vendor/llvm/dist/test/CodeGen/X86/shift-codegen.ll vendor/llvm/dist/test/CodeGen/X86/shift-combine.ll vendor/llvm/dist/test/CodeGen/X86/shift-folding.ll vendor/llvm/dist/test/CodeGen/X86/shift-i256.ll vendor/llvm/dist/test/CodeGen/X86/shift-one.ll vendor/llvm/dist/test/CodeGen/X86/shift-pair.ll vendor/llvm/dist/test/CodeGen/X86/shift-parts.ll vendor/llvm/dist/test/CodeGen/X86/shl-i64.ll vendor/llvm/dist/test/CodeGen/X86/shl_undef.ll vendor/llvm/dist/test/CodeGen/X86/shrink-compare.ll vendor/llvm/dist/test/CodeGen/X86/shuffle-combine-crash.ll vendor/llvm/dist/test/CodeGen/X86/sibcall-4.ll vendor/llvm/dist/test/CodeGen/X86/sibcall-5.ll vendor/llvm/dist/test/CodeGen/X86/sibcall.ll vendor/llvm/dist/test/CodeGen/X86/simple-zext.ll vendor/llvm/dist/test/CodeGen/X86/sincos-opt.ll vendor/llvm/dist/test/CodeGen/X86/sink-hoist.ll vendor/llvm/dist/test/CodeGen/X86/sink-out-of-loop.ll vendor/llvm/dist/test/CodeGen/X86/sjlj.ll vendor/llvm/dist/test/CodeGen/X86/slow-incdec.ll vendor/llvm/dist/test/CodeGen/X86/smul-with-overflow.ll vendor/llvm/dist/test/CodeGen/X86/soft-fp.ll vendor/llvm/dist/test/CodeGen/X86/splat-for-size.ll vendor/llvm/dist/test/CodeGen/X86/split-eh-lpad-edges.ll vendor/llvm/dist/test/CodeGen/X86/split-vector-bitcast.ll vendor/llvm/dist/test/CodeGen/X86/sqrt-fastmath.ll vendor/llvm/dist/test/CodeGen/X86/sqrt.ll vendor/llvm/dist/test/CodeGen/X86/sse-align-0.ll vendor/llvm/dist/test/CodeGen/X86/sse-align-1.ll vendor/llvm/dist/test/CodeGen/X86/sse-align-10.ll vendor/llvm/dist/test/CodeGen/X86/sse-align-12.ll vendor/llvm/dist/test/CodeGen/X86/sse-align-2.ll vendor/llvm/dist/test/CodeGen/X86/sse-align-5.ll vendor/llvm/dist/test/CodeGen/X86/sse-align-6.ll vendor/llvm/dist/test/CodeGen/X86/sse-align-9.ll vendor/llvm/dist/test/CodeGen/X86/sse-domains.ll vendor/llvm/dist/test/CodeGen/X86/sse-fcopysign.ll vendor/llvm/dist/test/CodeGen/X86/sse-intel-ocl.ll vendor/llvm/dist/test/CodeGen/X86/sse-intrinsics-x86.ll vendor/llvm/dist/test/CodeGen/X86/sse-load-ret.ll vendor/llvm/dist/test/CodeGen/X86/sse-minmax.ll vendor/llvm/dist/test/CodeGen/X86/sse-scalar-fp-arith.ll vendor/llvm/dist/test/CodeGen/X86/sse-unaligned-mem-feature.ll vendor/llvm/dist/test/CodeGen/X86/sse-varargs.ll vendor/llvm/dist/test/CodeGen/X86/sse2-intrinsics-x86.ll vendor/llvm/dist/test/CodeGen/X86/sse2.ll vendor/llvm/dist/test/CodeGen/X86/sse3-avx-addsub-2.ll vendor/llvm/dist/test/CodeGen/X86/sse3-avx-addsub.ll vendor/llvm/dist/test/CodeGen/X86/sse3.ll vendor/llvm/dist/test/CodeGen/X86/sse41-intrinsics-x86.ll vendor/llvm/dist/test/CodeGen/X86/sse41-pmovxrm-intrinsics.ll vendor/llvm/dist/test/CodeGen/X86/sse41.ll vendor/llvm/dist/test/CodeGen/X86/sse42-intrinsics-x86.ll vendor/llvm/dist/test/CodeGen/X86/sse4a.ll vendor/llvm/dist/test/CodeGen/X86/sse_partial_update.ll vendor/llvm/dist/test/CodeGen/X86/ssp-data-layout.ll vendor/llvm/dist/test/CodeGen/X86/stack-align.ll vendor/llvm/dist/test/CodeGen/X86/stack-protector-dbginfo.ll vendor/llvm/dist/test/CodeGen/X86/stack-protector-vreg-to-vreg-copy.ll vendor/llvm/dist/test/CodeGen/X86/stack-protector-weight.ll vendor/llvm/dist/test/CodeGen/X86/stack-protector.ll vendor/llvm/dist/test/CodeGen/X86/stack-update-frame-opcode.ll vendor/llvm/dist/test/CodeGen/X86/stack_guard_remat.ll vendor/llvm/dist/test/CodeGen/X86/stackmap-fast-isel.ll vendor/llvm/dist/test/CodeGen/X86/stackmap-large-constants.ll vendor/llvm/dist/test/CodeGen/X86/stackmap-liveness.ll vendor/llvm/dist/test/CodeGen/X86/stackmap-nops.ll vendor/llvm/dist/test/CodeGen/X86/stackmap-shadow-optimization.ll vendor/llvm/dist/test/CodeGen/X86/stackmap.ll vendor/llvm/dist/test/CodeGen/X86/statepoint-call-lowering.ll vendor/llvm/dist/test/CodeGen/X86/statepoint-forward.ll vendor/llvm/dist/test/CodeGen/X86/statepoint-stack-usage.ll vendor/llvm/dist/test/CodeGen/X86/statepoint-stackmap-format.ll vendor/llvm/dist/test/CodeGen/X86/stdarg.ll vendor/llvm/dist/test/CodeGen/X86/store-narrow.ll vendor/llvm/dist/test/CodeGen/X86/store_op_load_fold.ll vendor/llvm/dist/test/CodeGen/X86/store_op_load_fold2.ll vendor/llvm/dist/test/CodeGen/X86/stores-merging.ll vendor/llvm/dist/test/CodeGen/X86/stride-nine-with-base-reg.ll vendor/llvm/dist/test/CodeGen/X86/stride-reuse.ll vendor/llvm/dist/test/CodeGen/X86/sub-with-overflow.ll vendor/llvm/dist/test/CodeGen/X86/subreg-to-reg-0.ll vendor/llvm/dist/test/CodeGen/X86/subreg-to-reg-2.ll vendor/llvm/dist/test/CodeGen/X86/subreg-to-reg-4.ll vendor/llvm/dist/test/CodeGen/X86/subreg-to-reg-6.ll vendor/llvm/dist/test/CodeGen/X86/sunkaddr-ext.ll vendor/llvm/dist/test/CodeGen/X86/switch-bt.ll vendor/llvm/dist/test/CodeGen/X86/switch-crit-edge-constant.ll vendor/llvm/dist/test/CodeGen/X86/switch-or.ll vendor/llvm/dist/test/CodeGen/X86/switch-zextload.ll vendor/llvm/dist/test/CodeGen/X86/tail-dup-addr.ll vendor/llvm/dist/test/CodeGen/X86/tail-opts.ll vendor/llvm/dist/test/CodeGen/X86/tailcall-64.ll vendor/llvm/dist/test/CodeGen/X86/tailcall-fastisel.ll vendor/llvm/dist/test/CodeGen/X86/tailcall-returndup-void.ll vendor/llvm/dist/test/CodeGen/X86/tailcall-ri64.ll vendor/llvm/dist/test/CodeGen/X86/tailcallbyval.ll vendor/llvm/dist/test/CodeGen/X86/tailcallbyval64.ll vendor/llvm/dist/test/CodeGen/X86/tailcallstack64.ll vendor/llvm/dist/test/CodeGen/X86/tbm-intrinsics-x86_64.ll vendor/llvm/dist/test/CodeGen/X86/tbm_patterns.ll vendor/llvm/dist/test/CodeGen/X86/test-shrink-bug.ll vendor/llvm/dist/test/CodeGen/X86/testl-commute.ll vendor/llvm/dist/test/CodeGen/X86/this-return-64.ll vendor/llvm/dist/test/CodeGen/X86/tls-addr-non-leaf-function.ll vendor/llvm/dist/test/CodeGen/X86/tls-local-dynamic.ll vendor/llvm/dist/test/CodeGen/X86/tls-pic.ll vendor/llvm/dist/test/CodeGen/X86/tls-pie.ll vendor/llvm/dist/test/CodeGen/X86/tls.ll vendor/llvm/dist/test/CodeGen/X86/tlv-1.ll vendor/llvm/dist/test/CodeGen/X86/trap.ll vendor/llvm/dist/test/CodeGen/X86/trunc-ext-ld-st.ll vendor/llvm/dist/test/CodeGen/X86/trunc-to-bool.ll vendor/llvm/dist/test/CodeGen/X86/twoaddr-coalesce.ll vendor/llvm/dist/test/CodeGen/X86/twoaddr-pass-sink.ll vendor/llvm/dist/test/CodeGen/X86/uint64-to-float.ll vendor/llvm/dist/test/CodeGen/X86/uint_to_fp-2.ll vendor/llvm/dist/test/CodeGen/X86/umul-with-carry.ll vendor/llvm/dist/test/CodeGen/X86/unaligned-32-byte-memops.ll vendor/llvm/dist/test/CodeGen/X86/unaligned-load.ll vendor/llvm/dist/test/CodeGen/X86/unaligned-spill-folding.ll vendor/llvm/dist/test/CodeGen/X86/unknown-location.ll vendor/llvm/dist/test/CodeGen/X86/unwindraise.ll vendor/llvm/dist/test/CodeGen/X86/use-add-flags.ll vendor/llvm/dist/test/CodeGen/X86/utf16-cfstrings.ll vendor/llvm/dist/test/CodeGen/X86/v2f32.ll vendor/llvm/dist/test/CodeGen/X86/v4i32load-crash.ll vendor/llvm/dist/test/CodeGen/X86/v8i1-masks.ll vendor/llvm/dist/test/CodeGen/X86/vaargs.ll vendor/llvm/dist/test/CodeGen/X86/vararg-callee-cleanup.ll vendor/llvm/dist/test/CodeGen/X86/vararg_tailcall.ll vendor/llvm/dist/test/CodeGen/X86/variadic-node-pic.ll vendor/llvm/dist/test/CodeGen/X86/vec-loadsingles-alignment.ll vendor/llvm/dist/test/CodeGen/X86/vec-trunc-store.ll vendor/llvm/dist/test/CodeGen/X86/vec_align.ll vendor/llvm/dist/test/CodeGen/X86/vec_anyext.ll vendor/llvm/dist/test/CodeGen/X86/vec_cast2.ll vendor/llvm/dist/test/CodeGen/X86/vec_compare.ll vendor/llvm/dist/test/CodeGen/X86/vec_extract-sse4.ll vendor/llvm/dist/test/CodeGen/X86/vec_extract.ll vendor/llvm/dist/test/CodeGen/X86/vec_fabs.ll vendor/llvm/dist/test/CodeGen/X86/vec_floor.ll vendor/llvm/dist/test/CodeGen/X86/vec_fneg.ll vendor/llvm/dist/test/CodeGen/X86/vec_fpext.ll vendor/llvm/dist/test/CodeGen/X86/vec_i64.ll vendor/llvm/dist/test/CodeGen/X86/vec_ins_extract.ll vendor/llvm/dist/test/CodeGen/X86/vec_insert-3.ll vendor/llvm/dist/test/CodeGen/X86/vec_insert-5.ll vendor/llvm/dist/test/CodeGen/X86/vec_loadsingles.ll vendor/llvm/dist/test/CodeGen/X86/vec_logical.ll vendor/llvm/dist/test/CodeGen/X86/vec_set-7.ll vendor/llvm/dist/test/CodeGen/X86/vec_set-F.ll vendor/llvm/dist/test/CodeGen/X86/vec_setcc-2.ll vendor/llvm/dist/test/CodeGen/X86/vec_shift5.ll vendor/llvm/dist/test/CodeGen/X86/vec_shift6.ll vendor/llvm/dist/test/CodeGen/X86/vec_split.ll vendor/llvm/dist/test/CodeGen/X86/vec_ss_load_fold.ll vendor/llvm/dist/test/CodeGen/X86/vec_trunc_sext.ll vendor/llvm/dist/test/CodeGen/X86/vec_zero.ll vendor/llvm/dist/test/CodeGen/X86/vec_zero_cse.ll vendor/llvm/dist/test/CodeGen/X86/vector-blend.ll vendor/llvm/dist/test/CodeGen/X86/vector-ctpop.ll vendor/llvm/dist/test/CodeGen/X86/vector-gep.ll vendor/llvm/dist/test/CodeGen/X86/vector-idiv.ll vendor/llvm/dist/test/CodeGen/X86/vector-intrinsics.ll vendor/llvm/dist/test/CodeGen/X86/vector-sext.ll vendor/llvm/dist/test/CodeGen/X86/vector-shuffle-128-v16.ll vendor/llvm/dist/test/CodeGen/X86/vector-shuffle-128-v2.ll vendor/llvm/dist/test/CodeGen/X86/vector-shuffle-128-v4.ll vendor/llvm/dist/test/CodeGen/X86/vector-shuffle-128-v8.ll vendor/llvm/dist/test/CodeGen/X86/vector-shuffle-256-v16.ll vendor/llvm/dist/test/CodeGen/X86/vector-shuffle-256-v32.ll vendor/llvm/dist/test/CodeGen/X86/vector-shuffle-256-v4.ll vendor/llvm/dist/test/CodeGen/X86/vector-shuffle-256-v8.ll vendor/llvm/dist/test/CodeGen/X86/vector-shuffle-512-v16.ll vendor/llvm/dist/test/CodeGen/X86/vector-shuffle-512-v8.ll vendor/llvm/dist/test/CodeGen/X86/vector-shuffle-combining.ll vendor/llvm/dist/test/CodeGen/X86/vector-shuffle-sse1.ll vendor/llvm/dist/test/CodeGen/X86/vector-trunc.ll vendor/llvm/dist/test/CodeGen/X86/vector-variable-idx2.ll vendor/llvm/dist/test/CodeGen/X86/vector-zext.ll vendor/llvm/dist/test/CodeGen/X86/vector-zmov.ll vendor/llvm/dist/test/CodeGen/X86/vector.ll vendor/llvm/dist/test/CodeGen/X86/viabs.ll vendor/llvm/dist/test/CodeGen/X86/visibility2.ll vendor/llvm/dist/test/CodeGen/X86/volatile.ll vendor/llvm/dist/test/CodeGen/X86/vortex-bug.ll vendor/llvm/dist/test/CodeGen/X86/vselect-2.ll vendor/llvm/dist/test/CodeGen/X86/vselect-avx.ll vendor/llvm/dist/test/CodeGen/X86/vselect-minmax.ll vendor/llvm/dist/test/CodeGen/X86/vselect.ll vendor/llvm/dist/test/CodeGen/X86/vshift-4.ll vendor/llvm/dist/test/CodeGen/X86/vshift-5.ll vendor/llvm/dist/test/CodeGen/X86/vshift-6.ll vendor/llvm/dist/test/CodeGen/X86/warn-stack.ll vendor/llvm/dist/test/CodeGen/X86/weak_def_can_be_hidden.ll vendor/llvm/dist/test/CodeGen/X86/widen_arith-1.ll vendor/llvm/dist/test/CodeGen/X86/widen_arith-2.ll vendor/llvm/dist/test/CodeGen/X86/widen_arith-3.ll vendor/llvm/dist/test/CodeGen/X86/widen_arith-4.ll vendor/llvm/dist/test/CodeGen/X86/widen_arith-5.ll vendor/llvm/dist/test/CodeGen/X86/widen_arith-6.ll vendor/llvm/dist/test/CodeGen/X86/widen_cast-1.ll vendor/llvm/dist/test/CodeGen/X86/widen_cast-2.ll vendor/llvm/dist/test/CodeGen/X86/widen_cast-4.ll vendor/llvm/dist/test/CodeGen/X86/widen_cast-5.ll vendor/llvm/dist/test/CodeGen/X86/widen_conversions.ll vendor/llvm/dist/test/CodeGen/X86/widen_load-0.ll vendor/llvm/dist/test/CodeGen/X86/widen_load-1.ll vendor/llvm/dist/test/CodeGen/X86/widen_load-2.ll vendor/llvm/dist/test/CodeGen/X86/widen_shuffle-1.ll vendor/llvm/dist/test/CodeGen/X86/win32_sret.ll vendor/llvm/dist/test/CodeGen/X86/win64_alloca_dynalloca.ll vendor/llvm/dist/test/CodeGen/X86/win64_eh.ll vendor/llvm/dist/test/CodeGen/X86/win_cst_pool.ll vendor/llvm/dist/test/CodeGen/X86/x32-function_pointer-1.ll vendor/llvm/dist/test/CodeGen/X86/x86-64-and-mask.ll vendor/llvm/dist/test/CodeGen/X86/x86-64-asm.ll vendor/llvm/dist/test/CodeGen/X86/x86-64-disp.ll vendor/llvm/dist/test/CodeGen/X86/x86-64-gv-offset.ll vendor/llvm/dist/test/CodeGen/X86/x86-64-jumps.ll vendor/llvm/dist/test/CodeGen/X86/x86-64-mem.ll vendor/llvm/dist/test/CodeGen/X86/x86-64-pic-4.ll vendor/llvm/dist/test/CodeGen/X86/x86-64-pic-5.ll vendor/llvm/dist/test/CodeGen/X86/x86-64-pic-6.ll vendor/llvm/dist/test/CodeGen/X86/x86-64-psub.ll vendor/llvm/dist/test/CodeGen/X86/x86-64-ptr-arg-simple.ll vendor/llvm/dist/test/CodeGen/X86/x86-64-sret-return.ll vendor/llvm/dist/test/CodeGen/X86/x86-64-static-relo-movl.ll vendor/llvm/dist/test/CodeGen/X86/x86-64-tls-1.ll vendor/llvm/dist/test/CodeGen/X86/x86-64-varargs.ll vendor/llvm/dist/test/CodeGen/X86/x86-mixed-alignment-dagcombine.ll vendor/llvm/dist/test/CodeGen/X86/x86-setcc-int-to-fp-combine.ll vendor/llvm/dist/test/CodeGen/X86/x86-shifts.ll vendor/llvm/dist/test/CodeGen/X86/xaluo.ll vendor/llvm/dist/test/CodeGen/X86/xmulo.ll vendor/llvm/dist/test/CodeGen/X86/xop-intrinsics-x86_64.ll vendor/llvm/dist/test/CodeGen/X86/xor-icmp.ll vendor/llvm/dist/test/CodeGen/X86/xor.ll vendor/llvm/dist/test/CodeGen/X86/zext-extract_subreg.ll vendor/llvm/dist/test/CodeGen/X86/zext-sext.ll vendor/llvm/dist/test/CodeGen/X86/zlib-longest-match.ll vendor/llvm/dist/test/CodeGen/XCore/2009-01-08-Crash.ll vendor/llvm/dist/test/CodeGen/XCore/2010-02-25-LSR-Crash.ll vendor/llvm/dist/test/CodeGen/XCore/2011-01-31-DAGCombineBug.ll vendor/llvm/dist/test/CodeGen/XCore/atomic.ll vendor/llvm/dist/test/CodeGen/XCore/codemodel.ll vendor/llvm/dist/test/CodeGen/XCore/dwarf_debug.ll vendor/llvm/dist/test/CodeGen/XCore/epilogue_prologue.ll vendor/llvm/dist/test/CodeGen/XCore/exception.ll vendor/llvm/dist/test/CodeGen/XCore/indirectbr.ll vendor/llvm/dist/test/CodeGen/XCore/llvm-intrinsics.ll vendor/llvm/dist/test/CodeGen/XCore/load.ll vendor/llvm/dist/test/CodeGen/XCore/offset_folding.ll vendor/llvm/dist/test/CodeGen/XCore/private.ll vendor/llvm/dist/test/CodeGen/XCore/scavenging.ll vendor/llvm/dist/test/CodeGen/XCore/store.ll vendor/llvm/dist/test/CodeGen/XCore/threads.ll vendor/llvm/dist/test/CodeGen/XCore/trampoline.ll vendor/llvm/dist/test/CodeGen/XCore/unaligned_load.ll vendor/llvm/dist/test/CodeGen/XCore/unaligned_store_combine.ll vendor/llvm/dist/test/CodeGen/XCore/zextfree.ll vendor/llvm/dist/test/DebugInfo/2009-11-03-InsertExtractValue.ll vendor/llvm/dist/test/DebugInfo/2009-11-05-DeadGlobalVariable.ll vendor/llvm/dist/test/DebugInfo/2009-11-06-NamelessGlobalVariable.ll vendor/llvm/dist/test/DebugInfo/2009-11-10-CurrentFn.ll vendor/llvm/dist/test/DebugInfo/2010-01-05-DbgScope.ll vendor/llvm/dist/test/DebugInfo/2010-03-12-llc-crash.ll vendor/llvm/dist/test/DebugInfo/2010-03-19-DbgDeclare.ll vendor/llvm/dist/test/DebugInfo/2010-03-24-MemberFn.ll vendor/llvm/dist/test/DebugInfo/2010-04-06-NestedFnDbgInfo.ll vendor/llvm/dist/test/DebugInfo/2010-04-19-FramePtr.ll vendor/llvm/dist/test/DebugInfo/2010-05-03-DisableFramePtr.ll vendor/llvm/dist/test/DebugInfo/2010-05-03-OriginDIE.ll vendor/llvm/dist/test/DebugInfo/2010-05-10-MultipleCU.ll vendor/llvm/dist/test/DebugInfo/2010-06-29-InlinedFnLocalVar.ll vendor/llvm/dist/test/DebugInfo/2010-07-19-Crash.ll vendor/llvm/dist/test/DebugInfo/2010-10-01-crash.ll vendor/llvm/dist/test/DebugInfo/AArch64/big-endian.ll vendor/llvm/dist/test/DebugInfo/AArch64/cfi-eof-prologue.ll vendor/llvm/dist/test/DebugInfo/AArch64/coalescing.ll vendor/llvm/dist/test/DebugInfo/AArch64/dwarfdump.ll vendor/llvm/dist/test/DebugInfo/AArch64/eh_frame.s vendor/llvm/dist/test/DebugInfo/AArch64/eh_frame_personality.ll vendor/llvm/dist/test/DebugInfo/AArch64/struct_by_value.ll vendor/llvm/dist/test/DebugInfo/ARM/PR16736.ll vendor/llvm/dist/test/DebugInfo/ARM/cfi-eof-prologue.ll vendor/llvm/dist/test/DebugInfo/ARM/lowerbdgdeclare_vla.ll vendor/llvm/dist/test/DebugInfo/ARM/s-super-register.ll vendor/llvm/dist/test/DebugInfo/ARM/selectiondag-deadcode.ll vendor/llvm/dist/test/DebugInfo/ARM/tls.ll vendor/llvm/dist/test/DebugInfo/COFF/asan-module-ctor.ll vendor/llvm/dist/test/DebugInfo/COFF/asan-module-without-functions.ll vendor/llvm/dist/test/DebugInfo/COFF/asm.ll vendor/llvm/dist/test/DebugInfo/COFF/cpp-mangling.ll vendor/llvm/dist/test/DebugInfo/COFF/multifile.ll vendor/llvm/dist/test/DebugInfo/COFF/multifunction.ll vendor/llvm/dist/test/DebugInfo/COFF/simple.ll vendor/llvm/dist/test/DebugInfo/COFF/tail-call-without-lexical-scopes.ll vendor/llvm/dist/test/DebugInfo/Inputs/dwarfdump-test.cc vendor/llvm/dist/test/DebugInfo/Inputs/gmlt.ll vendor/llvm/dist/test/DebugInfo/Mips/delay-slot.ll vendor/llvm/dist/test/DebugInfo/Mips/fn-call-line.ll vendor/llvm/dist/test/DebugInfo/PR20038.ll vendor/llvm/dist/test/DebugInfo/PowerPC/tls-fission.ll vendor/llvm/dist/test/DebugInfo/PowerPC/tls.ll vendor/llvm/dist/test/DebugInfo/Sparc/gnu-window-save.ll vendor/llvm/dist/test/DebugInfo/SystemZ/eh_frame.s vendor/llvm/dist/test/DebugInfo/SystemZ/eh_frame_personality.s vendor/llvm/dist/test/DebugInfo/SystemZ/variable-loc.ll vendor/llvm/dist/test/DebugInfo/X86/2010-04-13-PubType.ll vendor/llvm/dist/test/DebugInfo/X86/2011-09-26-GlobalVarContext.ll vendor/llvm/dist/test/DebugInfo/X86/2011-12-16-BadStructRef.ll vendor/llvm/dist/test/DebugInfo/X86/DW_AT_byte_size.ll vendor/llvm/dist/test/DebugInfo/X86/DW_AT_linkage_name.ll vendor/llvm/dist/test/DebugInfo/X86/DW_AT_location-reference.ll vendor/llvm/dist/test/DebugInfo/X86/DW_AT_object_pointer.ll vendor/llvm/dist/test/DebugInfo/X86/DW_AT_specification.ll vendor/llvm/dist/test/DebugInfo/X86/DW_AT_stmt_list_sec_offset.ll vendor/llvm/dist/test/DebugInfo/X86/DW_TAG_friend.ll vendor/llvm/dist/test/DebugInfo/X86/aligned_stack_var.ll vendor/llvm/dist/test/DebugInfo/X86/arange.ll vendor/llvm/dist/test/DebugInfo/X86/arguments.ll vendor/llvm/dist/test/DebugInfo/X86/array.ll vendor/llvm/dist/test/DebugInfo/X86/array2.ll vendor/llvm/dist/test/DebugInfo/X86/block-capture.ll vendor/llvm/dist/test/DebugInfo/X86/byvalstruct.ll vendor/llvm/dist/test/DebugInfo/X86/c-type-units.ll vendor/llvm/dist/test/DebugInfo/X86/coff_debug_info_type.ll vendor/llvm/dist/test/DebugInfo/X86/coff_relative_names.ll vendor/llvm/dist/test/DebugInfo/X86/concrete_out_of_line.ll vendor/llvm/dist/test/DebugInfo/X86/constant-aggregate.ll vendor/llvm/dist/test/DebugInfo/X86/cu-ranges-odr.ll vendor/llvm/dist/test/DebugInfo/X86/cu-ranges.ll vendor/llvm/dist/test/DebugInfo/X86/data_member_location.ll vendor/llvm/dist/test/DebugInfo/X86/dbg-at-specficiation.ll vendor/llvm/dist/test/DebugInfo/X86/dbg-byval-parameter.ll vendor/llvm/dist/test/DebugInfo/X86/dbg-const-int.ll vendor/llvm/dist/test/DebugInfo/X86/dbg-const.ll vendor/llvm/dist/test/DebugInfo/X86/dbg-declare-arg.ll vendor/llvm/dist/test/DebugInfo/X86/dbg-declare.ll vendor/llvm/dist/test/DebugInfo/X86/dbg-file-name.ll vendor/llvm/dist/test/DebugInfo/X86/dbg-i128-const.ll vendor/llvm/dist/test/DebugInfo/X86/dbg-merge-loc-entry.ll vendor/llvm/dist/test/DebugInfo/X86/dbg-prolog-end.ll vendor/llvm/dist/test/DebugInfo/X86/dbg-subrange.ll vendor/llvm/dist/test/DebugInfo/X86/dbg-value-const-byref.ll vendor/llvm/dist/test/DebugInfo/X86/dbg-value-dag-combine.ll vendor/llvm/dist/test/DebugInfo/X86/dbg-value-inlined-parameter.ll vendor/llvm/dist/test/DebugInfo/X86/dbg-value-isel.ll vendor/llvm/dist/test/DebugInfo/X86/dbg-value-location.ll vendor/llvm/dist/test/DebugInfo/X86/dbg-value-range.ll vendor/llvm/dist/test/DebugInfo/X86/dbg-value-terminator.ll vendor/llvm/dist/test/DebugInfo/X86/dbg_value_direct.ll vendor/llvm/dist/test/DebugInfo/X86/debug-dead-local-var.ll vendor/llvm/dist/test/DebugInfo/X86/debug-info-access.ll vendor/llvm/dist/test/DebugInfo/X86/debug-info-block-captured-self.ll vendor/llvm/dist/test/DebugInfo/X86/debug-info-blocks.ll vendor/llvm/dist/test/DebugInfo/X86/debug-info-static-member.ll vendor/llvm/dist/test/DebugInfo/X86/debug-loc-asan.ll vendor/llvm/dist/test/DebugInfo/X86/debug-loc-offset.ll vendor/llvm/dist/test/DebugInfo/X86/debug-ranges-offset.ll vendor/llvm/dist/test/DebugInfo/X86/debug_frame.ll vendor/llvm/dist/test/DebugInfo/X86/decl-derived-member.ll vendor/llvm/dist/test/DebugInfo/X86/discriminator.ll vendor/llvm/dist/test/DebugInfo/X86/dwarf-aranges-no-dwarf-labels.ll vendor/llvm/dist/test/DebugInfo/X86/dwarf-aranges.ll vendor/llvm/dist/test/DebugInfo/X86/dwarf-public-names.ll vendor/llvm/dist/test/DebugInfo/X86/dwarf-pubnames-split.ll vendor/llvm/dist/test/DebugInfo/X86/earlydup-crash.ll vendor/llvm/dist/test/DebugInfo/X86/elf-names.ll vendor/llvm/dist/test/DebugInfo/X86/empty-and-one-elem-array.ll vendor/llvm/dist/test/DebugInfo/X86/empty-array.ll vendor/llvm/dist/test/DebugInfo/X86/ending-run.ll vendor/llvm/dist/test/DebugInfo/X86/enum-class.ll vendor/llvm/dist/test/DebugInfo/X86/enum-fwd-decl.ll vendor/llvm/dist/test/DebugInfo/X86/fission-cu.ll vendor/llvm/dist/test/DebugInfo/X86/fission-hash.ll vendor/llvm/dist/test/DebugInfo/X86/fission-inline.ll vendor/llvm/dist/test/DebugInfo/X86/fission-ranges.ll vendor/llvm/dist/test/DebugInfo/X86/formal_parameter.ll vendor/llvm/dist/test/DebugInfo/X86/generate-odr-hash.ll vendor/llvm/dist/test/DebugInfo/X86/ghost-sdnode-dbgvalues.ll vendor/llvm/dist/test/DebugInfo/X86/gnu-public-names-empty.ll vendor/llvm/dist/test/DebugInfo/X86/gnu-public-names.ll vendor/llvm/dist/test/DebugInfo/X86/inline-member-function.ll vendor/llvm/dist/test/DebugInfo/X86/inline-seldag-test.ll vendor/llvm/dist/test/DebugInfo/X86/instcombine-instrinsics.ll vendor/llvm/dist/test/DebugInfo/X86/lexical_block.ll vendor/llvm/dist/test/DebugInfo/X86/line-info.ll vendor/llvm/dist/test/DebugInfo/X86/linkage-name.ll vendor/llvm/dist/test/DebugInfo/X86/low-pc-cu.ll vendor/llvm/dist/test/DebugInfo/X86/memberfnptr.ll vendor/llvm/dist/test/DebugInfo/X86/misched-dbg-value.ll vendor/llvm/dist/test/DebugInfo/X86/multiple-aranges.ll vendor/llvm/dist/test/DebugInfo/X86/multiple-at-const-val.ll vendor/llvm/dist/test/DebugInfo/X86/nodebug_with_debug_loc.ll vendor/llvm/dist/test/DebugInfo/X86/nondefault-subrange-array.ll vendor/llvm/dist/test/DebugInfo/X86/objc-fwd-decl.ll vendor/llvm/dist/test/DebugInfo/X86/objc-property-void.ll vendor/llvm/dist/test/DebugInfo/X86/op_deref.ll vendor/llvm/dist/test/DebugInfo/X86/parameters.ll vendor/llvm/dist/test/DebugInfo/X86/pieces-1.ll vendor/llvm/dist/test/DebugInfo/X86/pieces-2.ll vendor/llvm/dist/test/DebugInfo/X86/pieces-3.ll vendor/llvm/dist/test/DebugInfo/X86/pointer-type-size.ll vendor/llvm/dist/test/DebugInfo/X86/pr11300.ll vendor/llvm/dist/test/DebugInfo/X86/pr12831.ll vendor/llvm/dist/test/DebugInfo/X86/pr13303.ll vendor/llvm/dist/test/DebugInfo/X86/pr19307.ll vendor/llvm/dist/test/DebugInfo/X86/processes-relocations.ll vendor/llvm/dist/test/DebugInfo/X86/prologue-stack.ll vendor/llvm/dist/test/DebugInfo/X86/recursive_inlining.ll vendor/llvm/dist/test/DebugInfo/X86/ref_addr_relocation.ll vendor/llvm/dist/test/DebugInfo/X86/reference-argument.ll vendor/llvm/dist/test/DebugInfo/X86/rvalue-ref.ll vendor/llvm/dist/test/DebugInfo/X86/sret.ll vendor/llvm/dist/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll vendor/llvm/dist/test/DebugInfo/X86/stmt-list.ll vendor/llvm/dist/test/DebugInfo/X86/stringpool.ll vendor/llvm/dist/test/DebugInfo/X86/struct-loc.ll vendor/llvm/dist/test/DebugInfo/X86/subrange-type.ll vendor/llvm/dist/test/DebugInfo/X86/subreg.ll vendor/llvm/dist/test/DebugInfo/X86/subregisters.ll vendor/llvm/dist/test/DebugInfo/X86/template.ll vendor/llvm/dist/test/DebugInfo/X86/tls.ll vendor/llvm/dist/test/DebugInfo/X86/type_units_with_addresses.ll vendor/llvm/dist/test/DebugInfo/X86/union-template.ll vendor/llvm/dist/test/DebugInfo/X86/vector.ll vendor/llvm/dist/test/DebugInfo/X86/vla.ll vendor/llvm/dist/test/DebugInfo/array.ll vendor/llvm/dist/test/DebugInfo/block-asan.ll vendor/llvm/dist/test/DebugInfo/bug_null_debuginfo.ll vendor/llvm/dist/test/DebugInfo/constant-pointers.ll vendor/llvm/dist/test/DebugInfo/cross-cu-inlining.ll vendor/llvm/dist/test/DebugInfo/cross-cu-linkonce-distinct.ll vendor/llvm/dist/test/DebugInfo/cross-cu-linkonce.ll vendor/llvm/dist/test/DebugInfo/cu-range-hole.ll vendor/llvm/dist/test/DebugInfo/cu-ranges.ll vendor/llvm/dist/test/DebugInfo/dead-argument-order.ll vendor/llvm/dist/test/DebugInfo/debug-info-always-inline.ll vendor/llvm/dist/test/DebugInfo/debug-info-qualifiers.ll vendor/llvm/dist/test/DebugInfo/debuginfofinder-multiple-cu.ll vendor/llvm/dist/test/DebugInfo/debuglineinfo.test vendor/llvm/dist/test/DebugInfo/dwarf-public-names.ll vendor/llvm/dist/test/DebugInfo/dwarfdump-debug-frame-simple.test vendor/llvm/dist/test/DebugInfo/empty.ll vendor/llvm/dist/test/DebugInfo/enum-types.ll vendor/llvm/dist/test/DebugInfo/enum.ll vendor/llvm/dist/test/DebugInfo/global.ll vendor/llvm/dist/test/DebugInfo/incorrect-variable-debugloc.ll vendor/llvm/dist/test/DebugInfo/incorrect-variable-debugloc1.ll vendor/llvm/dist/test/DebugInfo/inheritance.ll vendor/llvm/dist/test/DebugInfo/inline-debug-info-multiret.ll vendor/llvm/dist/test/DebugInfo/inline-debug-info.ll vendor/llvm/dist/test/DebugInfo/inline-no-debug-info.ll vendor/llvm/dist/test/DebugInfo/inline-scopes.ll vendor/llvm/dist/test/DebugInfo/inlined-arguments.ll vendor/llvm/dist/test/DebugInfo/inlined-vars.ll vendor/llvm/dist/test/DebugInfo/location-verifier.ll vendor/llvm/dist/test/DebugInfo/lto-comp-dir.ll vendor/llvm/dist/test/DebugInfo/member-order.ll vendor/llvm/dist/test/DebugInfo/member-pointers.ll vendor/llvm/dist/test/DebugInfo/missing-abstract-variable.ll vendor/llvm/dist/test/DebugInfo/multiline.ll vendor/llvm/dist/test/DebugInfo/namespace.ll vendor/llvm/dist/test/DebugInfo/namespace_function_definition.ll vendor/llvm/dist/test/DebugInfo/namespace_inline_function_definition.ll vendor/llvm/dist/test/DebugInfo/nodebug.ll vendor/llvm/dist/test/DebugInfo/restrict.ll vendor/llvm/dist/test/DebugInfo/sugared-constants.ll vendor/llvm/dist/test/DebugInfo/template-recursive-void.ll vendor/llvm/dist/test/DebugInfo/tu-composite.ll vendor/llvm/dist/test/DebugInfo/tu-member-pointer.ll vendor/llvm/dist/test/DebugInfo/two-cus-from-same-file.ll vendor/llvm/dist/test/DebugInfo/typedef.ll vendor/llvm/dist/test/DebugInfo/unconditional-branch.ll vendor/llvm/dist/test/DebugInfo/varargs.ll vendor/llvm/dist/test/DebugInfo/version.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/2002-12-16-ArgTest.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/2003-05-06-LivenessClobber.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/2003-05-07-ArgumentTest.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/2003-08-21-EnvironmentTest.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/2007-12-10-APIntLoadStore.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/2008-06-05-APInt-OverAShr.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/2013-04-04-RelocAddend.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/fpbitcast.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/hello.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/hello2.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/pr13727.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/remote/stubs-remote.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/remote/stubs-sm-pic.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/remote/test-common-symbols-remote.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/remote/test-fp-no-external-funcs-remote.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/remote/test-global-init-nonzero-remote.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/remote/test-global-init-nonzero-sm-pic.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/remote/test-ptr-reloc-remote.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/remote/test-ptr-reloc-sm-pic.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/stubs-sm-pic.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/stubs.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/test-common-symbols-alignment.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/test-common-symbols.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/test-fp-no-external-funcs.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/test-fp.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/test-global-ctors.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/test-global-init-nonzero-sm-pic.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/test-global-init-nonzero.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/test-global.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/test-loadstore.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/test-local.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/test-ptr-reloc-sm-pic.ll vendor/llvm/dist/test/ExecutionEngine/MCJIT/test-ptr-reloc.ll vendor/llvm/dist/test/ExecutionEngine/fma3-jit.ll vendor/llvm/dist/test/ExecutionEngine/frem.ll vendor/llvm/dist/test/ExecutionEngine/test-interp-vec-loadstore.ll vendor/llvm/dist/test/Feature/alias2.ll vendor/llvm/dist/test/Feature/aliases.ll vendor/llvm/dist/test/Feature/attributes.ll vendor/llvm/dist/test/Feature/const_pv.ll vendor/llvm/dist/test/Feature/constexpr.ll vendor/llvm/dist/test/Feature/globalvars.ll vendor/llvm/dist/test/Feature/md_on_instruction.ll vendor/llvm/dist/test/Feature/memorymarkers.ll vendor/llvm/dist/test/Feature/optnone-llc.ll vendor/llvm/dist/test/Feature/optnone-opt.ll vendor/llvm/dist/test/Feature/packed.ll vendor/llvm/dist/test/Feature/packed_struct.ll vendor/llvm/dist/test/Feature/paramattrs.ll vendor/llvm/dist/test/Feature/ppcld.ll vendor/llvm/dist/test/Feature/recursivetype.ll vendor/llvm/dist/test/Feature/sparcld.ll vendor/llvm/dist/test/Feature/testalloca.ll vendor/llvm/dist/test/Feature/testconstants.ll vendor/llvm/dist/test/Feature/testvarargs.ll vendor/llvm/dist/test/Feature/varargs_new.ll vendor/llvm/dist/test/Feature/weak_constant.ll vendor/llvm/dist/test/Feature/x86ld.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/X86/asm_attr.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/X86/bug_11395.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/asan-vs-gvn.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/basic.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/debug_info.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/freebsd.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/global_metadata.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/instrument-dynamic-allocas.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/instrument_global.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/instrument_load_then_store.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/instrumentation-with-call-threshold.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/lifetime-uar.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/lifetime.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/stack-poisoning.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/stack_dynamic_alloca.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/stack_layout.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/test64.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/ubsan.ll vendor/llvm/dist/test/Instrumentation/BoundsChecking/many-trap.ll vendor/llvm/dist/test/Instrumentation/BoundsChecking/phi.ll vendor/llvm/dist/test/Instrumentation/BoundsChecking/simple-32.ll vendor/llvm/dist/test/Instrumentation/BoundsChecking/simple.ll vendor/llvm/dist/test/Instrumentation/DataFlowSanitizer/abilist.ll vendor/llvm/dist/test/Instrumentation/DataFlowSanitizer/debug-nonzero-labels.ll vendor/llvm/dist/test/Instrumentation/DataFlowSanitizer/debug.ll vendor/llvm/dist/test/Instrumentation/DataFlowSanitizer/load.ll vendor/llvm/dist/test/Instrumentation/DataFlowSanitizer/store.ll vendor/llvm/dist/test/Instrumentation/InstrProfiling/noruntime.ll vendor/llvm/dist/test/Instrumentation/InstrProfiling/platform.ll vendor/llvm/dist/test/Instrumentation/InstrProfiling/profiling.ll vendor/llvm/dist/test/Instrumentation/MemorySanitizer/array_types.ll vendor/llvm/dist/test/Instrumentation/MemorySanitizer/atomics.ll vendor/llvm/dist/test/Instrumentation/MemorySanitizer/check-constant-shadow.ll vendor/llvm/dist/test/Instrumentation/MemorySanitizer/check_access_address.ll vendor/llvm/dist/test/Instrumentation/MemorySanitizer/instrumentation-with-call-threshold.ll vendor/llvm/dist/test/Instrumentation/MemorySanitizer/missing_origin.ll vendor/llvm/dist/test/Instrumentation/MemorySanitizer/msan_basic.ll vendor/llvm/dist/test/Instrumentation/MemorySanitizer/store-origin.ll vendor/llvm/dist/test/Instrumentation/MemorySanitizer/unreachable.ll vendor/llvm/dist/test/Instrumentation/MemorySanitizer/vector_cvt.ll vendor/llvm/dist/test/Instrumentation/SanitizerCoverage/coverage-dbg.ll vendor/llvm/dist/test/Instrumentation/SanitizerCoverage/coverage.ll vendor/llvm/dist/test/Instrumentation/SanitizerCoverage/coverage2-dbg.ll vendor/llvm/dist/test/Instrumentation/ThreadSanitizer/atomic.ll vendor/llvm/dist/test/Instrumentation/ThreadSanitizer/no_sanitize_thread.ll vendor/llvm/dist/test/Instrumentation/ThreadSanitizer/read_before_write.ll vendor/llvm/dist/test/Instrumentation/ThreadSanitizer/read_from_global.ll vendor/llvm/dist/test/Instrumentation/ThreadSanitizer/tsan-vs-gvn.ll vendor/llvm/dist/test/Instrumentation/ThreadSanitizer/tsan_basic.ll vendor/llvm/dist/test/Instrumentation/ThreadSanitizer/vptr_read.ll vendor/llvm/dist/test/Integer/2007-01-19-TruncSext.ll vendor/llvm/dist/test/Integer/BitPacked.ll vendor/llvm/dist/test/Integer/constexpr_bt.ll vendor/llvm/dist/test/Integer/packed_bt.ll vendor/llvm/dist/test/Integer/packed_struct_bt.ll vendor/llvm/dist/test/JitListener/multiple.ll vendor/llvm/dist/test/JitListener/simple.ll vendor/llvm/dist/test/Linker/2002-08-20-ConstantExpr.ll vendor/llvm/dist/test/Linker/2004-05-07-TypeResolution1.ll vendor/llvm/dist/test/Linker/2004-05-07-TypeResolution2.ll vendor/llvm/dist/test/Linker/2008-03-05-AliasReference.ll vendor/llvm/dist/test/Linker/2009-09-03-mdnode.ll vendor/llvm/dist/test/Linker/2009-09-03-mdnode2.ll vendor/llvm/dist/test/Linker/2011-08-04-DebugLoc.ll vendor/llvm/dist/test/Linker/2011-08-04-DebugLoc2.ll vendor/llvm/dist/test/Linker/2011-08-04-Metadata.ll vendor/llvm/dist/test/Linker/2011-08-04-Metadata2.ll vendor/llvm/dist/test/Linker/2011-08-18-unique-class-type.ll vendor/llvm/dist/test/Linker/2011-08-18-unique-class-type2.ll vendor/llvm/dist/test/Linker/2011-08-18-unique-debug-type.ll vendor/llvm/dist/test/Linker/2011-08-18-unique-debug-type2.ll vendor/llvm/dist/test/Linker/AppendingLinkage.ll vendor/llvm/dist/test/Linker/DbgDeclare.ll vendor/llvm/dist/test/Linker/DbgDeclare2.ll vendor/llvm/dist/test/Linker/Inputs/PR11464.b.ll vendor/llvm/dist/test/Linker/Inputs/basiclink.b.ll vendor/llvm/dist/test/Linker/Inputs/comdat5.ll vendor/llvm/dist/test/Linker/Inputs/linkage.b.ll vendor/llvm/dist/test/Linker/Inputs/mdlocation.ll vendor/llvm/dist/test/Linker/Inputs/opaque.ll vendor/llvm/dist/test/Linker/Inputs/replaced-function-matches-first-subprogram.ll vendor/llvm/dist/test/Linker/Inputs/targettriple-a.ll vendor/llvm/dist/test/Linker/Inputs/targettriple-b.ll vendor/llvm/dist/test/Linker/Inputs/testlink.ll vendor/llvm/dist/test/Linker/Inputs/type-unique-inheritance-a.ll vendor/llvm/dist/test/Linker/Inputs/type-unique-inheritance-b.ll vendor/llvm/dist/test/Linker/Inputs/type-unique-simple2-a.ll vendor/llvm/dist/test/Linker/Inputs/type-unique-simple2-b.ll vendor/llvm/dist/test/Linker/comdat6.ll vendor/llvm/dist/test/Linker/datalayout.ll vendor/llvm/dist/test/Linker/debug-info-version-a.ll vendor/llvm/dist/test/Linker/debug-info-version-b.ll vendor/llvm/dist/test/Linker/link-global-to-func.ll vendor/llvm/dist/test/Linker/mdlocation.ll vendor/llvm/dist/test/Linker/module-flags-3-b.ll vendor/llvm/dist/test/Linker/module-flags-4-b.ll vendor/llvm/dist/test/Linker/opaque.ll vendor/llvm/dist/test/Linker/partial-type-refinement-link.ll vendor/llvm/dist/test/Linker/partial-type-refinement.ll vendor/llvm/dist/test/Linker/replaced-function-matches-first-subprogram.ll vendor/llvm/dist/test/Linker/targettriple.ll vendor/llvm/dist/test/Linker/testlink.ll vendor/llvm/dist/test/Linker/type-unique-odr-a.ll vendor/llvm/dist/test/Linker/type-unique-odr-b.ll vendor/llvm/dist/test/Linker/type-unique-simple-a.ll vendor/llvm/dist/test/Linker/type-unique-simple-b.ll vendor/llvm/dist/test/Linker/type-unique-simple2-a.ll vendor/llvm/dist/test/Linker/type-unique-simple2-b.ll vendor/llvm/dist/test/Linker/type-unique-src-type.ll vendor/llvm/dist/test/Linker/type-unique-type-array-a.ll vendor/llvm/dist/test/Linker/type-unique-type-array-b.ll vendor/llvm/dist/test/MC/AArch64/arm64-elf-reloc-condbr.s vendor/llvm/dist/test/MC/AArch64/basic-a64-diagnostics.s vendor/llvm/dist/test/MC/AArch64/basic-a64-instructions.s vendor/llvm/dist/test/MC/AArch64/dot-req.s vendor/llvm/dist/test/MC/AArch64/elf-extern.s vendor/llvm/dist/test/MC/AArch64/elf-globaladdress.ll vendor/llvm/dist/test/MC/AArch64/elf-reloc-addsubimm.s vendor/llvm/dist/test/MC/AArch64/elf-reloc-ldrlit.s vendor/llvm/dist/test/MC/AArch64/elf-reloc-ldstunsimm.s vendor/llvm/dist/test/MC/AArch64/elf-reloc-movw.s vendor/llvm/dist/test/MC/AArch64/elf-reloc-pcreladdressing.s vendor/llvm/dist/test/MC/AArch64/elf-reloc-tstb.s vendor/llvm/dist/test/MC/AArch64/elf-reloc-uncondbrimm.s vendor/llvm/dist/test/MC/AArch64/inst-directive.s vendor/llvm/dist/test/MC/AArch64/tls-relocs.s vendor/llvm/dist/test/MC/ARM/2010-11-30-reloc-movt.s vendor/llvm/dist/test/MC/ARM/arm-elf-symver.s vendor/llvm/dist/test/MC/ARM/arm-thumb-cpus.s vendor/llvm/dist/test/MC/ARM/basic-arm-instructions.s vendor/llvm/dist/test/MC/ARM/bracket-exprs.s vendor/llvm/dist/test/MC/ARM/coff-debugging-secrel.ll vendor/llvm/dist/test/MC/ARM/cpu-test.s vendor/llvm/dist/test/MC/ARM/data-in-code.ll vendor/llvm/dist/test/MC/ARM/dot-req.s vendor/llvm/dist/test/MC/ARM/dwarf-cfi-initial-state.s vendor/llvm/dist/test/MC/ARM/eh-compact-pr0.s vendor/llvm/dist/test/MC/ARM/eh-directive-handlerdata.s vendor/llvm/dist/test/MC/ARM/eh-directive-personality.s vendor/llvm/dist/test/MC/ARM/eh-directive-personalityindex.s vendor/llvm/dist/test/MC/ARM/eh-directive-section-comdat.s vendor/llvm/dist/test/MC/ARM/eh-directive-section-multiple-func.s vendor/llvm/dist/test/MC/ARM/eh-directive-section.s vendor/llvm/dist/test/MC/ARM/eh-directive-text-section-multiple-func.s vendor/llvm/dist/test/MC/ARM/eh-directive-text-section.s vendor/llvm/dist/test/MC/ARM/elf-movt.s vendor/llvm/dist/test/MC/ARM/elf-reloc-01.ll vendor/llvm/dist/test/MC/ARM/elf-reloc-02.ll vendor/llvm/dist/test/MC/ARM/elf-reloc-03.ll vendor/llvm/dist/test/MC/ARM/elf-reloc-condcall.s vendor/llvm/dist/test/MC/ARM/elf-thumbfunc-reloc.ll vendor/llvm/dist/test/MC/ARM/elf-thumbfunc-reloc.s vendor/llvm/dist/test/MC/ARM/inst-directive-emit.s vendor/llvm/dist/test/MC/ARM/thumb-diagnostics.s vendor/llvm/dist/test/MC/ARM/thumb2-bxj.s vendor/llvm/dist/test/MC/ARM/thumb2-diagnostics.s vendor/llvm/dist/test/MC/AsmParser/ifeqs-diagnostics.s vendor/llvm/dist/test/MC/AsmParser/rename.s vendor/llvm/dist/test/MC/AsmParser/section.s vendor/llvm/dist/test/MC/COFF/bss_section.ll vendor/llvm/dist/test/MC/COFF/const-gv-with-rel-init.ll vendor/llvm/dist/test/MC/COFF/directive-section-characteristics.ll vendor/llvm/dist/test/MC/COFF/global_ctors_dtors.ll vendor/llvm/dist/test/MC/COFF/ir-to-imgrel.ll vendor/llvm/dist/test/MC/COFF/linker-options.ll vendor/llvm/dist/test/MC/COFF/tricky-names.ll vendor/llvm/dist/test/MC/Disassembler/AArch64/arm64-advsimd.txt vendor/llvm/dist/test/MC/Disassembler/AArch64/basic-a64-instructions.txt vendor/llvm/dist/test/MC/Disassembler/ARM/neont2.txt vendor/llvm/dist/test/MC/Disassembler/Hexagon/alu32_alu.txt vendor/llvm/dist/test/MC/Disassembler/Hexagon/alu32_perm.txt vendor/llvm/dist/test/MC/Disassembler/Hexagon/alu32_pred.txt vendor/llvm/dist/test/MC/Disassembler/Hexagon/cr.txt vendor/llvm/dist/test/MC/Disassembler/Hexagon/j.txt vendor/llvm/dist/test/MC/Disassembler/Hexagon/jr.txt vendor/llvm/dist/test/MC/Disassembler/Hexagon/ld.txt vendor/llvm/dist/test/MC/Disassembler/Hexagon/memop.txt vendor/llvm/dist/test/MC/Disassembler/Hexagon/nv_j.txt vendor/llvm/dist/test/MC/Disassembler/Hexagon/nv_st.txt vendor/llvm/dist/test/MC/Disassembler/Hexagon/st.txt vendor/llvm/dist/test/MC/Disassembler/Hexagon/system_user.txt vendor/llvm/dist/test/MC/Disassembler/Hexagon/xtype_alu.txt vendor/llvm/dist/test/MC/Disassembler/Hexagon/xtype_bit.txt vendor/llvm/dist/test/MC/Disassembler/Hexagon/xtype_fp.txt vendor/llvm/dist/test/MC/Disassembler/Hexagon/xtype_mpy.txt vendor/llvm/dist/test/MC/Disassembler/Hexagon/xtype_perm.txt vendor/llvm/dist/test/MC/Disassembler/Hexagon/xtype_pred.txt vendor/llvm/dist/test/MC/Disassembler/Hexagon/xtype_shift.txt vendor/llvm/dist/test/MC/Disassembler/Mips/micromips.txt vendor/llvm/dist/test/MC/Disassembler/Mips/micromips_le.txt vendor/llvm/dist/test/MC/Disassembler/Mips/mips3/valid-mips3.txt vendor/llvm/dist/test/MC/Disassembler/Mips/mips32r2/valid-mips32r2-le.txt vendor/llvm/dist/test/MC/Disassembler/Mips/mips32r2/valid-mips32r2.txt vendor/llvm/dist/test/MC/Disassembler/Mips/mips32r6/valid-xfail-mips32r6.txt vendor/llvm/dist/test/MC/Disassembler/Mips/mips4/valid-mips4.txt vendor/llvm/dist/test/MC/Disassembler/Mips/mips64/valid-mips64.txt vendor/llvm/dist/test/MC/Disassembler/Mips/mips64r2/valid-mips64r2-el.txt vendor/llvm/dist/test/MC/Disassembler/Mips/mips64r2/valid-mips64r2.txt vendor/llvm/dist/test/MC/Disassembler/Mips/mips64r2/valid-xfail-mips64r2.txt vendor/llvm/dist/test/MC/Disassembler/Mips/mips64r6/valid-mips64r6-el.txt vendor/llvm/dist/test/MC/Disassembler/Mips/mips64r6/valid-mips64r6.txt vendor/llvm/dist/test/MC/Disassembler/Mips/mips64r6/valid-xfail-mips64r6.txt vendor/llvm/dist/test/MC/Disassembler/PowerPC/ppc64-encoding-4xx.txt vendor/llvm/dist/test/MC/Disassembler/PowerPC/ppc64-encoding-bookII.txt vendor/llvm/dist/test/MC/Disassembler/PowerPC/ppc64-encoding-bookIII.txt vendor/llvm/dist/test/MC/Disassembler/PowerPC/ppc64-encoding-ext.txt vendor/llvm/dist/test/MC/Disassembler/PowerPC/ppc64-encoding-fp.txt vendor/llvm/dist/test/MC/Disassembler/PowerPC/ppc64-encoding-vmx.txt vendor/llvm/dist/test/MC/Disassembler/PowerPC/ppc64-encoding.txt vendor/llvm/dist/test/MC/Disassembler/PowerPC/ppc64-operands.txt vendor/llvm/dist/test/MC/Disassembler/PowerPC/vsx.txt vendor/llvm/dist/test/MC/Disassembler/Sparc/sparc-mem.txt vendor/llvm/dist/test/MC/Disassembler/Sparc/sparc.txt vendor/llvm/dist/test/MC/Disassembler/SystemZ/insns.txt vendor/llvm/dist/test/MC/Disassembler/X86/avx-512.txt vendor/llvm/dist/test/MC/Disassembler/X86/simple-tests.txt vendor/llvm/dist/test/MC/Disassembler/X86/x86-16.txt vendor/llvm/dist/test/MC/Disassembler/X86/x86-32.txt vendor/llvm/dist/test/MC/Disassembler/X86/x86-64.txt vendor/llvm/dist/test/MC/ELF/alias.s vendor/llvm/dist/test/MC/ELF/align.s vendor/llvm/dist/test/MC/ELF/basic-elf-32.s vendor/llvm/dist/test/MC/ELF/basic-elf-64.s vendor/llvm/dist/test/MC/ELF/bracket-exprs.s vendor/llvm/dist/test/MC/ELF/cfi-adjust-cfa-offset.s vendor/llvm/dist/test/MC/ELF/cfi-advance-loc2.s vendor/llvm/dist/test/MC/ELF/cfi-def-cfa-offset.s vendor/llvm/dist/test/MC/ELF/cfi-def-cfa-register.s vendor/llvm/dist/test/MC/ELF/cfi-def-cfa.s vendor/llvm/dist/test/MC/ELF/cfi-escape.s vendor/llvm/dist/test/MC/ELF/cfi-large-model.s vendor/llvm/dist/test/MC/ELF/cfi-offset.s vendor/llvm/dist/test/MC/ELF/cfi-register.s vendor/llvm/dist/test/MC/ELF/cfi-rel-offset.s vendor/llvm/dist/test/MC/ELF/cfi-rel-offset2.s vendor/llvm/dist/test/MC/ELF/cfi-remember.s vendor/llvm/dist/test/MC/ELF/cfi-restore.s vendor/llvm/dist/test/MC/ELF/cfi-same-value.s vendor/llvm/dist/test/MC/ELF/cfi-sections.s vendor/llvm/dist/test/MC/ELF/cfi-signal-frame.s vendor/llvm/dist/test/MC/ELF/cfi-undefined.s vendor/llvm/dist/test/MC/ELF/cfi-version.ll vendor/llvm/dist/test/MC/ELF/cfi-window-save.s vendor/llvm/dist/test/MC/ELF/cfi-zero-addr-delta.s vendor/llvm/dist/test/MC/ELF/cfi.s vendor/llvm/dist/test/MC/ELF/comdat-dup-group-name.s vendor/llvm/dist/test/MC/ELF/comdat-reloc.s vendor/llvm/dist/test/MC/ELF/comdat.s vendor/llvm/dist/test/MC/ELF/common.s vendor/llvm/dist/test/MC/ELF/common2.s vendor/llvm/dist/test/MC/ELF/compression.s vendor/llvm/dist/test/MC/ELF/debug-line.s vendor/llvm/dist/test/MC/ELF/debug-loc.s vendor/llvm/dist/test/MC/ELF/empty-dwarf-lines.s vendor/llvm/dist/test/MC/ELF/empty.s vendor/llvm/dist/test/MC/ELF/entsize.ll vendor/llvm/dist/test/MC/ELF/entsize.s vendor/llvm/dist/test/MC/ELF/file-double.s vendor/llvm/dist/test/MC/ELF/file.s vendor/llvm/dist/test/MC/ELF/gen-dwarf.s vendor/llvm/dist/test/MC/ELF/ifunc-reloc.s vendor/llvm/dist/test/MC/ELF/lcomm.s vendor/llvm/dist/test/MC/ELF/local-reloc.s vendor/llvm/dist/test/MC/ELF/many-sections-2.s vendor/llvm/dist/test/MC/ELF/many-sections.s vendor/llvm/dist/test/MC/ELF/merge.s vendor/llvm/dist/test/MC/ELF/n_bytes.s vendor/llvm/dist/test/MC/ELF/noexec.s vendor/llvm/dist/test/MC/ELF/norelocation.s vendor/llvm/dist/test/MC/ELF/pr19430.s vendor/llvm/dist/test/MC/ELF/relax.s vendor/llvm/dist/test/MC/ELF/relocation-386.s vendor/llvm/dist/test/MC/ELF/relocation-pc.s vendor/llvm/dist/test/MC/ELF/relocation.s vendor/llvm/dist/test/MC/ELF/rename.s vendor/llvm/dist/test/MC/ELF/section-sym.s vendor/llvm/dist/test/MC/ELF/section-sym2.s vendor/llvm/dist/test/MC/ELF/section.s vendor/llvm/dist/test/MC/ELF/strtab-suffix-opt.s vendor/llvm/dist/test/MC/ELF/symver.s vendor/llvm/dist/test/MC/ELF/tls.s vendor/llvm/dist/test/MC/ELF/type-propagate.s vendor/llvm/dist/test/MC/ELF/type.s vendor/llvm/dist/test/MC/ELF/weakref-reloc.s vendor/llvm/dist/test/MC/ELF/weakref.s vendor/llvm/dist/test/MC/Hexagon/inst_select.ll vendor/llvm/dist/test/MC/MachO/ARM/aliased-symbols.s vendor/llvm/dist/test/MC/MachO/tlv-bss.ll vendor/llvm/dist/test/MC/MachO/x86-data-in-code.ll vendor/llvm/dist/test/MC/MachO/x86_64-symbols.s vendor/llvm/dist/test/MC/Mips/cpload.s vendor/llvm/dist/test/MC/Mips/cpsetup-bad.s vendor/llvm/dist/test/MC/Mips/cpsetup.s vendor/llvm/dist/test/MC/Mips/do_switch3.s vendor/llvm/dist/test/MC/Mips/eh-frame.s vendor/llvm/dist/test/MC/Mips/elf-bigendian.ll vendor/llvm/dist/test/MC/Mips/elf-tls.s vendor/llvm/dist/test/MC/Mips/elf_eflags.s vendor/llvm/dist/test/MC/Mips/elf_reginfo.s vendor/llvm/dist/test/MC/Mips/expr1.s vendor/llvm/dist/test/MC/Mips/micromips-16-bit-instructions.s vendor/llvm/dist/test/MC/Mips/micromips-alias.s vendor/llvm/dist/test/MC/Mips/micromips-alu-instructions.s vendor/llvm/dist/test/MC/Mips/micromips-branch-instructions.s vendor/llvm/dist/test/MC/Mips/micromips-diagnostic-fixup.s vendor/llvm/dist/test/MC/Mips/micromips-expansions.s vendor/llvm/dist/test/MC/Mips/micromips-invalid.s vendor/llvm/dist/test/MC/Mips/micromips-jump-instructions.s vendor/llvm/dist/test/MC/Mips/micromips-loadstore-instructions.s vendor/llvm/dist/test/MC/Mips/mips-abi-bad.s vendor/llvm/dist/test/MC/Mips/mips-data-directives.s vendor/llvm/dist/test/MC/Mips/mips-expansions-bad.s vendor/llvm/dist/test/MC/Mips/mips-expansions.s vendor/llvm/dist/test/MC/Mips/mips-jump-delay-slots.s vendor/llvm/dist/test/MC/Mips/mips-noat.s vendor/llvm/dist/test/MC/Mips/mips-reginfo-fp64.s vendor/llvm/dist/test/MC/Mips/mips1/invalid-mips3.s vendor/llvm/dist/test/MC/Mips/mips1/valid.s vendor/llvm/dist/test/MC/Mips/mips2/invalid-mips3.s vendor/llvm/dist/test/MC/Mips/mips2/valid.s vendor/llvm/dist/test/MC/Mips/mips3/valid.s vendor/llvm/dist/test/MC/Mips/mips32/invalid-mips64.s vendor/llvm/dist/test/MC/Mips/mips32/valid.s vendor/llvm/dist/test/MC/Mips/mips32r2/valid.s vendor/llvm/dist/test/MC/Mips/mips32r6/valid.s vendor/llvm/dist/test/MC/Mips/mips4/valid.s vendor/llvm/dist/test/MC/Mips/mips5/valid.s vendor/llvm/dist/test/MC/Mips/mips64-expansions.s vendor/llvm/dist/test/MC/Mips/mips64-register-names-n32-n64.s vendor/llvm/dist/test/MC/Mips/mips64-register-names-o32.s vendor/llvm/dist/test/MC/Mips/mips64/valid.s vendor/llvm/dist/test/MC/Mips/mips64extins.ll vendor/llvm/dist/test/MC/Mips/mips64r2/valid.s vendor/llvm/dist/test/MC/Mips/mips64r6/valid.s vendor/llvm/dist/test/MC/Mips/mips_directives.s vendor/llvm/dist/test/MC/Mips/nabi-regs.s vendor/llvm/dist/test/MC/Mips/nooddspreg-cmdarg.s vendor/llvm/dist/test/MC/Mips/nooddspreg.s vendor/llvm/dist/test/MC/Mips/octeon-instructions.s vendor/llvm/dist/test/MC/Mips/oddspreg.s vendor/llvm/dist/test/MC/Mips/set-arch.s vendor/llvm/dist/test/MC/Mips/set-at-directive-explicit-at.s vendor/llvm/dist/test/MC/Mips/set-at-directive.s vendor/llvm/dist/test/MC/Mips/set-mips-directives-bad.s vendor/llvm/dist/test/MC/Mips/set-mips-directives.s vendor/llvm/dist/test/MC/Mips/sym-offset.ll vendor/llvm/dist/test/MC/Mips/xgot.s vendor/llvm/dist/test/MC/PowerPC/ppc-reloc.s vendor/llvm/dist/test/MC/PowerPC/ppc64-encoding-4xx.s vendor/llvm/dist/test/MC/PowerPC/ppc64-encoding-6xx.s vendor/llvm/dist/test/MC/PowerPC/ppc64-encoding-bookII.s vendor/llvm/dist/test/MC/PowerPC/ppc64-encoding-bookIII.s vendor/llvm/dist/test/MC/PowerPC/ppc64-encoding-ext.s vendor/llvm/dist/test/MC/PowerPC/ppc64-encoding-fp.s vendor/llvm/dist/test/MC/PowerPC/ppc64-encoding-vmx.s vendor/llvm/dist/test/MC/PowerPC/ppc64-encoding.s vendor/llvm/dist/test/MC/PowerPC/ppc64-initial-cfa.s vendor/llvm/dist/test/MC/PowerPC/tls-gd-obj.s vendor/llvm/dist/test/MC/PowerPC/tls-ie-obj.s vendor/llvm/dist/test/MC/PowerPC/tls-ld-obj.s vendor/llvm/dist/test/MC/PowerPC/vsx.s vendor/llvm/dist/test/MC/R600/sopp.s vendor/llvm/dist/test/MC/Sparc/sparc-atomic-instructions.s vendor/llvm/dist/test/MC/Sparc/sparc-ctrl-instructions.s vendor/llvm/dist/test/MC/Sparc/sparc-mem-instructions.s vendor/llvm/dist/test/MC/SystemZ/insn-bad-z196.s vendor/llvm/dist/test/MC/SystemZ/insn-bad.s vendor/llvm/dist/test/MC/SystemZ/insn-good-z196.s vendor/llvm/dist/test/MC/SystemZ/tokens.s vendor/llvm/dist/test/MC/X86/AlignedBundling/bundle-group-too-large-error.s vendor/llvm/dist/test/MC/X86/AlignedBundling/different-sections.s vendor/llvm/dist/test/MC/X86/AlignedBundling/labeloffset.s vendor/llvm/dist/test/MC/X86/AlignedBundling/long-nop-pad.s vendor/llvm/dist/test/MC/X86/AlignedBundling/nesting.s vendor/llvm/dist/test/MC/X86/AlignedBundling/pad-align-to-bundle-end.s vendor/llvm/dist/test/MC/X86/AlignedBundling/pad-bundle-groups.s vendor/llvm/dist/test/MC/X86/AlignedBundling/relax-at-bundle-end.s vendor/llvm/dist/test/MC/X86/AlignedBundling/relax-in-bundle-group.s vendor/llvm/dist/test/MC/X86/AlignedBundling/single-inst-bundling.s vendor/llvm/dist/test/MC/X86/avx512-encodings.s vendor/llvm/dist/test/MC/X86/avx512bw-encoding.s vendor/llvm/dist/test/MC/X86/avx512vl-encoding.s vendor/llvm/dist/test/MC/X86/intel-syntax-avx512.s vendor/llvm/dist/test/MC/X86/intel-syntax.s vendor/llvm/dist/test/MC/X86/reloc-undef-global.s vendor/llvm/dist/test/MC/X86/stackmap-nops.ll vendor/llvm/dist/test/MC/X86/x86-16.s vendor/llvm/dist/test/MC/X86/x86-32-avx.s vendor/llvm/dist/test/MC/X86/x86-32-coverage.s vendor/llvm/dist/test/MC/X86/x86-32.s vendor/llvm/dist/test/MC/X86/x86-64-avx512bw.s vendor/llvm/dist/test/MC/X86/x86-64-avx512bw_vl.s vendor/llvm/dist/test/MC/X86/x86-64-avx512dq.s vendor/llvm/dist/test/MC/X86/x86-64-avx512dq_vl.s vendor/llvm/dist/test/MC/X86/x86-64-avx512f_vl.s vendor/llvm/dist/test/MC/X86/x86-64.s vendor/llvm/dist/test/MC/X86/x86_64-avx-encoding.s vendor/llvm/dist/test/MC/X86/x86_64-encoding.s vendor/llvm/dist/test/MC/X86/x86_64-xop-encoding.s vendor/llvm/dist/test/MC/X86/x86_errors.s vendor/llvm/dist/test/Makefile vendor/llvm/dist/test/Object/AArch64/yaml2obj-elf-aarch64-rel.yaml vendor/llvm/dist/test/Object/Inputs/program-headers.mips vendor/llvm/dist/test/Object/Inputs/trivial.ll vendor/llvm/dist/test/Object/archive-delete.test vendor/llvm/dist/test/Object/archive-extract-dir.test vendor/llvm/dist/test/Object/archive-format.test vendor/llvm/dist/test/Object/archive-move.test vendor/llvm/dist/test/Object/archive-update.test vendor/llvm/dist/test/Object/extract.ll vendor/llvm/dist/test/Object/nm-trivial-object.test vendor/llvm/dist/test/Object/obj2yaml.test vendor/llvm/dist/test/Object/objdump-symbol-table.test vendor/llvm/dist/test/Other/2004-08-16-PackedGlobalConstant.ll vendor/llvm/dist/test/Other/2004-08-16-PackedSelect.ll vendor/llvm/dist/test/Other/2004-08-16-PackedSimple.ll vendor/llvm/dist/test/Other/2004-08-20-PackedControlFlow.ll vendor/llvm/dist/test/Other/2007-09-10-PassManager.ll vendor/llvm/dist/test/Other/2008-06-04-FieldSizeInPacked.ll vendor/llvm/dist/test/Other/2009-03-31-CallGraph.ll vendor/llvm/dist/test/Other/ResponseFile.ll vendor/llvm/dist/test/Other/constant-fold-gep-address-spaces.ll vendor/llvm/dist/test/Other/constant-fold-gep.ll vendor/llvm/dist/test/Other/lint.ll vendor/llvm/dist/test/Other/new-pass-manager.ll vendor/llvm/dist/test/Other/optimization-remarks-inline.ll vendor/llvm/dist/test/TableGen/MultiClassDefName.td vendor/llvm/dist/test/TableGen/intrinsic-varargs.td vendor/llvm/dist/test/Transforms/ADCE/2002-05-23-ZeroArgPHITest.ll vendor/llvm/dist/test/Transforms/ADCE/2002-05-28-Crash.ll vendor/llvm/dist/test/Transforms/ADCE/2002-07-17-AssertionFailure.ll vendor/llvm/dist/test/Transforms/ADCE/2002-07-17-PHIAssertion.ll vendor/llvm/dist/test/Transforms/ADCE/2003-06-11-InvalidCFG.ll vendor/llvm/dist/test/Transforms/ADCE/2003-06-24-BadSuccessor.ll vendor/llvm/dist/test/Transforms/ADCE/2003-06-24-BasicFunctionality.ll vendor/llvm/dist/test/Transforms/ADCE/basictest1.ll vendor/llvm/dist/test/Transforms/ADCE/basictest2.ll vendor/llvm/dist/test/Transforms/AddDiscriminators/basic.ll vendor/llvm/dist/test/Transforms/AddDiscriminators/first-only.ll vendor/llvm/dist/test/Transforms/AddDiscriminators/multiple.ll vendor/llvm/dist/test/Transforms/AddDiscriminators/no-discriminators.ll vendor/llvm/dist/test/Transforms/AlignmentFromAssumptions/simple.ll vendor/llvm/dist/test/Transforms/AlignmentFromAssumptions/simple32.ll vendor/llvm/dist/test/Transforms/AlignmentFromAssumptions/start-unk.ll vendor/llvm/dist/test/Transforms/ArgumentPromotion/2008-02-01-ReturnAttrs.ll vendor/llvm/dist/test/Transforms/ArgumentPromotion/2008-07-02-array-indexing.ll vendor/llvm/dist/test/Transforms/ArgumentPromotion/aggregate-promote.ll vendor/llvm/dist/test/Transforms/ArgumentPromotion/attrs.ll vendor/llvm/dist/test/Transforms/ArgumentPromotion/basictest.ll vendor/llvm/dist/test/Transforms/ArgumentPromotion/byval-2.ll vendor/llvm/dist/test/Transforms/ArgumentPromotion/byval.ll vendor/llvm/dist/test/Transforms/ArgumentPromotion/chained.ll vendor/llvm/dist/test/Transforms/ArgumentPromotion/control-flow.ll vendor/llvm/dist/test/Transforms/ArgumentPromotion/control-flow2.ll vendor/llvm/dist/test/Transforms/ArgumentPromotion/crash.ll vendor/llvm/dist/test/Transforms/ArgumentPromotion/dbg.ll vendor/llvm/dist/test/Transforms/ArgumentPromotion/fp80.ll vendor/llvm/dist/test/Transforms/ArgumentPromotion/inalloca.ll vendor/llvm/dist/test/Transforms/ArgumentPromotion/reserve-tbaa.ll vendor/llvm/dist/test/Transforms/ArgumentPromotion/variadic.ll vendor/llvm/dist/test/Transforms/BBVectorize/X86/loop1.ll vendor/llvm/dist/test/Transforms/BBVectorize/X86/pr15289.ll vendor/llvm/dist/test/Transforms/BBVectorize/X86/sh-rec.ll vendor/llvm/dist/test/Transforms/BBVectorize/X86/sh-rec2.ll vendor/llvm/dist/test/Transforms/BBVectorize/X86/sh-rec3.ll vendor/llvm/dist/test/Transforms/BBVectorize/X86/simple-ldstr.ll vendor/llvm/dist/test/Transforms/BBVectorize/X86/wr-aliases.ll vendor/llvm/dist/test/Transforms/BBVectorize/func-alias.ll vendor/llvm/dist/test/Transforms/BBVectorize/ld1.ll vendor/llvm/dist/test/Transforms/BBVectorize/loop1.ll vendor/llvm/dist/test/Transforms/BBVectorize/mem-op-depth.ll vendor/llvm/dist/test/Transforms/BBVectorize/metadata.ll vendor/llvm/dist/test/Transforms/BBVectorize/no-ldstr-conn.ll vendor/llvm/dist/test/Transforms/BBVectorize/simple-ldstr-ptrs.ll vendor/llvm/dist/test/Transforms/BBVectorize/simple-ldstr.ll vendor/llvm/dist/test/Transforms/BBVectorize/simple3.ll vendor/llvm/dist/test/Transforms/CodeExtractor/2004-03-14-DominanceProblem.ll vendor/llvm/dist/test/Transforms/CodeGenPrepare/X86/extend-sink-hoist.ll vendor/llvm/dist/test/Transforms/CodeGenPrepare/X86/sink-addrspacecast.ll vendor/llvm/dist/test/Transforms/ConstProp/2005-01-28-SetCCGEP.ll vendor/llvm/dist/test/Transforms/ConstProp/2009-09-01-GEP-Crash.ll vendor/llvm/dist/test/Transforms/ConstProp/div-zero.ll vendor/llvm/dist/test/Transforms/ConstProp/insertvalue.ll vendor/llvm/dist/test/Transforms/ConstProp/loads.ll vendor/llvm/dist/test/Transforms/ConstantHoisting/AArch64/const-addr.ll vendor/llvm/dist/test/Transforms/ConstantHoisting/PowerPC/const-base-addr.ll vendor/llvm/dist/test/Transforms/ConstantHoisting/PowerPC/masks.ll vendor/llvm/dist/test/Transforms/ConstantHoisting/X86/cast-inst.ll vendor/llvm/dist/test/Transforms/ConstantHoisting/X86/const-base-addr.ll vendor/llvm/dist/test/Transforms/ConstantHoisting/X86/delete-dead-cast-inst.ll vendor/llvm/dist/test/Transforms/ConstantHoisting/X86/stackmap.ll vendor/llvm/dist/test/Transforms/ConstantMerge/2002-09-23-CPR-Update.ll vendor/llvm/dist/test/Transforms/ConstantMerge/merge-both.ll vendor/llvm/dist/test/Transforms/CorrelatedValuePropagation/basic.ll vendor/llvm/dist/test/Transforms/CorrelatedValuePropagation/non-null.ll vendor/llvm/dist/test/Transforms/DeadArgElim/2007-10-18-VarargsReturn.ll vendor/llvm/dist/test/Transforms/DeadArgElim/2007-12-20-ParamAttrs.ll vendor/llvm/dist/test/Transforms/DeadArgElim/2008-01-16-VarargsParamAttrs.ll vendor/llvm/dist/test/Transforms/DeadArgElim/2010-04-30-DbgInfo.ll vendor/llvm/dist/test/Transforms/DeadArgElim/2013-05-17-VarargsAndBlockAddress.ll vendor/llvm/dist/test/Transforms/DeadArgElim/dbginfo.ll vendor/llvm/dist/test/Transforms/DeadArgElim/dead_vaargs.ll vendor/llvm/dist/test/Transforms/DeadArgElim/deadexternal.ll vendor/llvm/dist/test/Transforms/DeadArgElim/deadretval2.ll vendor/llvm/dist/test/Transforms/DeadArgElim/keepalive.ll vendor/llvm/dist/test/Transforms/DeadArgElim/variadic_safety.ll vendor/llvm/dist/test/Transforms/DeadStoreElimination/2011-03-25-DSEMiscompile.ll vendor/llvm/dist/test/Transforms/DeadStoreElimination/2011-09-06-EndOfFunction.ll vendor/llvm/dist/test/Transforms/DeadStoreElimination/2011-09-06-MemCpy.ll vendor/llvm/dist/test/Transforms/DeadStoreElimination/OverwriteStoreEnd.ll vendor/llvm/dist/test/Transforms/DeadStoreElimination/PartialStore.ll vendor/llvm/dist/test/Transforms/DeadStoreElimination/atomic.ll vendor/llvm/dist/test/Transforms/DeadStoreElimination/const-pointers.ll vendor/llvm/dist/test/Transforms/DeadStoreElimination/crash.ll vendor/llvm/dist/test/Transforms/DeadStoreElimination/cs-cs-aliasing.ll vendor/llvm/dist/test/Transforms/DeadStoreElimination/dominate.ll vendor/llvm/dist/test/Transforms/DeadStoreElimination/free.ll vendor/llvm/dist/test/Transforms/DeadStoreElimination/inst-limits.ll vendor/llvm/dist/test/Transforms/DeadStoreElimination/libcalls.ll vendor/llvm/dist/test/Transforms/DeadStoreElimination/lifetime.ll vendor/llvm/dist/test/Transforms/DeadStoreElimination/no-targetdata.ll vendor/llvm/dist/test/Transforms/DeadStoreElimination/pr11390.ll vendor/llvm/dist/test/Transforms/DeadStoreElimination/simple.ll vendor/llvm/dist/test/Transforms/EarlyCSE/basic.ll vendor/llvm/dist/test/Transforms/FunctionAttrs/2008-09-03-ReadNone.ll vendor/llvm/dist/test/Transforms/FunctionAttrs/2008-09-13-VolatileRead.ll vendor/llvm/dist/test/Transforms/FunctionAttrs/2008-12-29-Constant.ll vendor/llvm/dist/test/Transforms/FunctionAttrs/2009-01-02-LocalStores.ll vendor/llvm/dist/test/Transforms/FunctionAttrs/2010-10-30-volatile.ll vendor/llvm/dist/test/Transforms/FunctionAttrs/atomic.ll vendor/llvm/dist/test/Transforms/FunctionAttrs/nocapture.ll vendor/llvm/dist/test/Transforms/FunctionAttrs/optnone-simple.ll vendor/llvm/dist/test/Transforms/FunctionAttrs/readattrs.ll vendor/llvm/dist/test/Transforms/GCOVProfiling/function-numbering.ll vendor/llvm/dist/test/Transforms/GCOVProfiling/global-ctor.ll vendor/llvm/dist/test/Transforms/GCOVProfiling/linezero.ll vendor/llvm/dist/test/Transforms/GCOVProfiling/linkagename.ll vendor/llvm/dist/test/Transforms/GCOVProfiling/return-block.ll vendor/llvm/dist/test/Transforms/GCOVProfiling/version.ll vendor/llvm/dist/test/Transforms/GVN/2007-07-25-DominatedLoop.ll vendor/llvm/dist/test/Transforms/GVN/2007-07-25-InfiniteLoop.ll vendor/llvm/dist/test/Transforms/GVN/2007-07-25-Loop.ll vendor/llvm/dist/test/Transforms/GVN/2007-07-25-NestedLoop.ll vendor/llvm/dist/test/Transforms/GVN/2007-07-25-SinglePredecessor.ll vendor/llvm/dist/test/Transforms/GVN/2007-07-26-InterlockingLoops.ll vendor/llvm/dist/test/Transforms/GVN/2007-07-26-NonRedundant.ll vendor/llvm/dist/test/Transforms/GVN/2007-07-26-PhiErasure.ll vendor/llvm/dist/test/Transforms/GVN/2007-07-30-PredIDom.ll vendor/llvm/dist/test/Transforms/GVN/2007-07-31-NoDomInherit.ll vendor/llvm/dist/test/Transforms/GVN/2007-07-31-RedundantPhi.ll vendor/llvm/dist/test/Transforms/GVN/2008-02-12-UndefLoad.ll vendor/llvm/dist/test/Transforms/GVN/2008-02-13-NewPHI.ll vendor/llvm/dist/test/Transforms/GVN/2008-07-02-Unreachable.ll vendor/llvm/dist/test/Transforms/GVN/2008-12-09-SelfRemove.ll vendor/llvm/dist/test/Transforms/GVN/2008-12-12-RLE-Crash.ll vendor/llvm/dist/test/Transforms/GVN/2008-12-14-rle-reanalyze.ll vendor/llvm/dist/test/Transforms/GVN/2008-12-15-CacheVisited.ll vendor/llvm/dist/test/Transforms/GVN/2009-01-21-SortInvalidation.ll vendor/llvm/dist/test/Transforms/GVN/2009-01-22-SortInvalidation.ll vendor/llvm/dist/test/Transforms/GVN/2009-02-17-LoadPRECrash.ll vendor/llvm/dist/test/Transforms/GVN/2009-06-17-InvalidPRE.ll vendor/llvm/dist/test/Transforms/GVN/2009-07-13-MemDepSortFail.ll vendor/llvm/dist/test/Transforms/GVN/2009-11-12-MemDepMallocBitCast.ll vendor/llvm/dist/test/Transforms/GVN/2010-03-31-RedundantPHIs.ll vendor/llvm/dist/test/Transforms/GVN/2010-05-08-OneBit.ll vendor/llvm/dist/test/Transforms/GVN/2011-04-27-phioperands.ll vendor/llvm/dist/test/Transforms/GVN/2011-06-01-NonLocalMemdepMiscompile.ll vendor/llvm/dist/test/Transforms/GVN/MemdepMiscompile.ll vendor/llvm/dist/test/Transforms/GVN/atomic.ll vendor/llvm/dist/test/Transforms/GVN/calloc-load-removal.ll vendor/llvm/dist/test/Transforms/GVN/calls-readonly.ll vendor/llvm/dist/test/Transforms/GVN/cond_br.ll vendor/llvm/dist/test/Transforms/GVN/cond_br2.ll vendor/llvm/dist/test/Transforms/GVN/condprop.ll vendor/llvm/dist/test/Transforms/GVN/crash-no-aa.ll vendor/llvm/dist/test/Transforms/GVN/crash.ll vendor/llvm/dist/test/Transforms/GVN/invariant-load.ll vendor/llvm/dist/test/Transforms/GVN/lifetime-simple.ll vendor/llvm/dist/test/Transforms/GVN/load-constant-mem.ll vendor/llvm/dist/test/Transforms/GVN/load-from-unreachable-predecessor.ll vendor/llvm/dist/test/Transforms/GVN/load-pre-align.ll vendor/llvm/dist/test/Transforms/GVN/load-pre-licm.ll vendor/llvm/dist/test/Transforms/GVN/load-pre-nonlocal.ll vendor/llvm/dist/test/Transforms/GVN/lpre-call-wrap-2.ll vendor/llvm/dist/test/Transforms/GVN/lpre-call-wrap.ll vendor/llvm/dist/test/Transforms/GVN/malloc-load-removal.ll vendor/llvm/dist/test/Transforms/GVN/noalias.ll vendor/llvm/dist/test/Transforms/GVN/non-local-offset.ll vendor/llvm/dist/test/Transforms/GVN/nonescaping-malloc.ll vendor/llvm/dist/test/Transforms/GVN/null-aliases-nothing.ll vendor/llvm/dist/test/Transforms/GVN/phi-translate-partial-alias.ll vendor/llvm/dist/test/Transforms/GVN/phi-translate.ll vendor/llvm/dist/test/Transforms/GVN/pr10820.ll vendor/llvm/dist/test/Transforms/GVN/pr14166.ll vendor/llvm/dist/test/Transforms/GVN/pr17732.ll vendor/llvm/dist/test/Transforms/GVN/pr17852.ll vendor/llvm/dist/test/Transforms/GVN/pre-basic-add.ll vendor/llvm/dist/test/Transforms/GVN/pre-compare.ll vendor/llvm/dist/test/Transforms/GVN/pre-gep-load.ll vendor/llvm/dist/test/Transforms/GVN/pre-load.ll vendor/llvm/dist/test/Transforms/GVN/pre-single-pred.ll vendor/llvm/dist/test/Transforms/GVN/preserve-tbaa.ll vendor/llvm/dist/test/Transforms/GVN/range.ll vendor/llvm/dist/test/Transforms/GVN/readattrs.ll vendor/llvm/dist/test/Transforms/GVN/rle-must-alias.ll vendor/llvm/dist/test/Transforms/GVN/rle-no-phi-translate.ll vendor/llvm/dist/test/Transforms/GVN/rle-nonlocal.ll vendor/llvm/dist/test/Transforms/GVN/rle-phi-translate.ll vendor/llvm/dist/test/Transforms/GVN/rle-semidominated.ll vendor/llvm/dist/test/Transforms/GVN/rle.ll vendor/llvm/dist/test/Transforms/GVN/tbaa.ll vendor/llvm/dist/test/Transforms/GlobalDCE/2002-08-17-FunctionDGE.ll vendor/llvm/dist/test/Transforms/GlobalDCE/2002-08-17-WorkListTest.ll vendor/llvm/dist/test/Transforms/GlobalDCE/2002-09-12-Redeletion.ll vendor/llvm/dist/test/Transforms/GlobalDCE/2003-07-01-SelfReference.ll vendor/llvm/dist/test/Transforms/GlobalDCE/complex-constantexpr.ll vendor/llvm/dist/test/Transforms/GlobalDCE/global_ctors_integration.ll vendor/llvm/dist/test/Transforms/GlobalDCE/indirectbr.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2004-10-10-CastStoreOnce.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2005-06-15-LocalizeConstExprCrash.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2005-09-27-Crash.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2006-07-07-InlineAsmCrash.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2006-11-01-ShrinkGlobalPhiCrash.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2007-04-05-Crash.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2007-05-13-Crash.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2007-06-04-PackedStruct.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2007-11-09-GEP-GEP-Crash.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2008-01-03-Crash.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2008-01-13-OutOfRangeSROA.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2008-01-29-VolatileGlobal.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2008-04-26-SROA-Global-Align.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2008-07-17-addrspace.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2008-12-16-HeapSRACrash-2.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2008-12-16-HeapSRACrash.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2009-01-13-phi-user.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2009-02-15-BitcastAlias.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2009-02-15-ResolveAlias.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2009-03-05-dbg.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2009-03-07-PromotePtrToBool.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2009-06-01-RecursivePHI.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2009-11-16-BrokenPerformHeapAllocSRoA.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2009-11-16-MallocSingleStoreToGlobalVar.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2010-02-25-MallocPromote.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2010-02-26-MallocSROA.ll vendor/llvm/dist/test/Transforms/GlobalOpt/alias-resolve.ll vendor/llvm/dist/test/Transforms/GlobalOpt/array-elem-refs.ll vendor/llvm/dist/test/Transforms/GlobalOpt/atomic.ll vendor/llvm/dist/test/Transforms/GlobalOpt/basictest.ll vendor/llvm/dist/test/Transforms/GlobalOpt/blockaddress.ll vendor/llvm/dist/test/Transforms/GlobalOpt/constantexpr-dangle.ll vendor/llvm/dist/test/Transforms/GlobalOpt/constantfold-initializers.ll vendor/llvm/dist/test/Transforms/GlobalOpt/crash-2.ll vendor/llvm/dist/test/Transforms/GlobalOpt/crash.ll vendor/llvm/dist/test/Transforms/GlobalOpt/ctor-list-opt-constexpr.ll vendor/llvm/dist/test/Transforms/GlobalOpt/ctor-list-opt-inbounds.ll vendor/llvm/dist/test/Transforms/GlobalOpt/ctor-list-opt.ll vendor/llvm/dist/test/Transforms/GlobalOpt/cxx-dtor.ll vendor/llvm/dist/test/Transforms/GlobalOpt/deadfunction.ll vendor/llvm/dist/test/Transforms/GlobalOpt/deadglobal-2.ll vendor/llvm/dist/test/Transforms/GlobalOpt/externally-initialized-global-ctr.ll vendor/llvm/dist/test/Transforms/GlobalOpt/fastcc.ll vendor/llvm/dist/test/Transforms/GlobalOpt/globalsra-partial.ll vendor/llvm/dist/test/Transforms/GlobalOpt/globalsra-unknown-index.ll vendor/llvm/dist/test/Transforms/GlobalOpt/globalsra.ll vendor/llvm/dist/test/Transforms/GlobalOpt/heap-sra-1.ll vendor/llvm/dist/test/Transforms/GlobalOpt/heap-sra-2.ll vendor/llvm/dist/test/Transforms/GlobalOpt/heap-sra-3.ll vendor/llvm/dist/test/Transforms/GlobalOpt/heap-sra-4.ll vendor/llvm/dist/test/Transforms/GlobalOpt/heap-sra-phi.ll vendor/llvm/dist/test/Transforms/GlobalOpt/integer-bool.ll vendor/llvm/dist/test/Transforms/GlobalOpt/iterate.ll vendor/llvm/dist/test/Transforms/GlobalOpt/load-store-global.ll vendor/llvm/dist/test/Transforms/GlobalOpt/malloc-promote-1.ll vendor/llvm/dist/test/Transforms/GlobalOpt/malloc-promote-2.ll vendor/llvm/dist/test/Transforms/GlobalOpt/malloc-promote-3.ll vendor/llvm/dist/test/Transforms/GlobalOpt/memcpy.ll vendor/llvm/dist/test/Transforms/GlobalOpt/memset-null.ll vendor/llvm/dist/test/Transforms/GlobalOpt/memset.ll vendor/llvm/dist/test/Transforms/GlobalOpt/phi-select.ll vendor/llvm/dist/test/Transforms/GlobalOpt/storepointer-compare.ll vendor/llvm/dist/test/Transforms/GlobalOpt/storepointer.ll vendor/llvm/dist/test/Transforms/GlobalOpt/tls.ll vendor/llvm/dist/test/Transforms/GlobalOpt/trivialstore.ll vendor/llvm/dist/test/Transforms/GlobalOpt/undef-init.ll vendor/llvm/dist/test/Transforms/GlobalOpt/unnamed-addr.ll vendor/llvm/dist/test/Transforms/GlobalOpt/zeroinitializer-gep-load.ll vendor/llvm/dist/test/Transforms/IPConstantProp/2009-09-24-byval-ptr.ll vendor/llvm/dist/test/Transforms/IPConstantProp/dangling-block-address.ll vendor/llvm/dist/test/Transforms/IPConstantProp/global.ll vendor/llvm/dist/test/Transforms/IPConstantProp/return-argument.ll vendor/llvm/dist/test/Transforms/IPConstantProp/return-constant.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/2005-02-17-TruncateExprCrash.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/2005-11-18-Crash.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/2006-06-16-Indvar-LCSSA-Crash.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/2007-01-06-TripCount.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/2008-09-02-IVType.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/2008-10-03-CouldNotCompute.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/2009-04-14-shorten_iv_vars.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/2009-04-15-shorten-iv-vars-2.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/2009-04-27-Floating.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/2011-09-27-hoistsext.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/2011-10-27-lftrnull.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/2011-11-01-lftrptr.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/2011-11-15-multiexit.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/2012-07-17-lftr-undef.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/2014-06-21-congruent-constant.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/NVPTX/no-widen-expensive.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/ada-loops.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/ashr-tripcount.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/avoid-i0.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/backedge-on-min-max.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/casted-argument.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/dangling-use.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/elim-extend.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/eliminate-comparison.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/eliminate-max.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/eliminate-rem.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/indirectbr.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/iv-fold.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/iv-sext.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/iv-widen.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/iv-zext.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/lftr-address-space-pointers.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/lftr-extend-const.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/lftr-promote.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/lftr-reuse.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/lftr-zext.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/lftr_simple.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/loop_evaluate7.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/loop_evaluate8.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/loop_evaluate9.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/masked-iv.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/no-iv-rewrite.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/overflowcheck.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/phi-uses-value-multiple-times.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/polynomial-expand.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/pr18223.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/pr20680.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/pr22222.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/preserve-signed-wrap.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/promote-iv-to-eliminate-casts.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/sharpen-range.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/signed-trip-count.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/single-element-range.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/sink-alloca.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/udiv.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/uglygep.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/ult-sub-to-eq.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/use-range-metadata.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/variable-stride-ivs-0.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/verify-scev.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/widen-loop-comp.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/widen-nsw.ll vendor/llvm/dist/test/Transforms/Inline/2003-09-22-PHINodeInlineFail.ll vendor/llvm/dist/test/Transforms/Inline/2003-09-22-PHINodesInExceptionDest.ll vendor/llvm/dist/test/Transforms/Inline/2006-07-12-InlinePruneCGUpdate.ll vendor/llvm/dist/test/Transforms/Inline/2009-01-08-NoInlineDynamicAlloca.ll vendor/llvm/dist/test/Transforms/Inline/2009-01-13-RecursiveInlineCrash.ll vendor/llvm/dist/test/Transforms/Inline/align.ll vendor/llvm/dist/test/Transforms/Inline/alloca-bonus.ll vendor/llvm/dist/test/Transforms/Inline/alloca-in-scc.ll vendor/llvm/dist/test/Transforms/Inline/alloca-merge-align.ll vendor/llvm/dist/test/Transforms/Inline/attributes.ll vendor/llvm/dist/test/Transforms/Inline/basictest.ll vendor/llvm/dist/test/Transforms/Inline/byval-tail-call.ll vendor/llvm/dist/test/Transforms/Inline/byval.ll vendor/llvm/dist/test/Transforms/Inline/byval_lifetime.ll vendor/llvm/dist/test/Transforms/Inline/crash2.ll vendor/llvm/dist/test/Transforms/Inline/debug-invoke.ll vendor/llvm/dist/test/Transforms/Inline/devirtualize-2.ll vendor/llvm/dist/test/Transforms/Inline/devirtualize-3.ll vendor/llvm/dist/test/Transforms/Inline/devirtualize.ll vendor/llvm/dist/test/Transforms/Inline/ephemeral.ll vendor/llvm/dist/test/Transforms/Inline/gvn-inline-iteration.ll vendor/llvm/dist/test/Transforms/Inline/ignore-debug-info.ll vendor/llvm/dist/test/Transforms/Inline/inline-byval-bonus.ll vendor/llvm/dist/test/Transforms/Inline/inline-cold.ll vendor/llvm/dist/test/Transforms/Inline/inline-invoke-tail.ll vendor/llvm/dist/test/Transforms/Inline/inline-musttail-varargs.ll vendor/llvm/dist/test/Transforms/Inline/inline-optsize.ll vendor/llvm/dist/test/Transforms/Inline/inline-vla.ll vendor/llvm/dist/test/Transforms/Inline/inline_constprop.ll vendor/llvm/dist/test/Transforms/Inline/inline_dbg_declare.ll vendor/llvm/dist/test/Transforms/Inline/inline_minisize.ll vendor/llvm/dist/test/Transforms/Inline/inline_ssp.ll vendor/llvm/dist/test/Transforms/Inline/invoke-combine-clauses.ll vendor/llvm/dist/test/Transforms/Inline/lifetime-no-datalayout.ll vendor/llvm/dist/test/Transforms/Inline/noalias-cs.ll vendor/llvm/dist/test/Transforms/Inline/noalias.ll vendor/llvm/dist/test/Transforms/Inline/noalias2.ll vendor/llvm/dist/test/Transforms/Inline/optimization-remarks.ll vendor/llvm/dist/test/Transforms/Inline/ptr-diff.ll vendor/llvm/dist/test/Transforms/InstCombine/2003-07-21-ExternalConstant.ll vendor/llvm/dist/test/Transforms/InstCombine/2003-08-12-AllocaNonNull.ll vendor/llvm/dist/test/Transforms/InstCombine/2003-09-09-VolatileLoadElim.ll vendor/llvm/dist/test/Transforms/InstCombine/2003-11-03-VarargsCallBug.ll vendor/llvm/dist/test/Transforms/InstCombine/2004-01-13-InstCombineInvokePHI.ll vendor/llvm/dist/test/Transforms/InstCombine/2004-05-07-UnsizedCastLoad.ll vendor/llvm/dist/test/Transforms/InstCombine/2004-09-20-BadLoadCombine.ll vendor/llvm/dist/test/Transforms/InstCombine/2004-09-20-BadLoadCombine2.ll vendor/llvm/dist/test/Transforms/InstCombine/2005-06-16-SetCCOrSetCCMiscompile.ll vendor/llvm/dist/test/Transforms/InstCombine/2006-09-15-CastToBool.ll vendor/llvm/dist/test/Transforms/InstCombine/2006-12-08-Phi-ICmp-Op-Fold.ll vendor/llvm/dist/test/Transforms/InstCombine/2006-12-08-Select-ICmp.ll vendor/llvm/dist/test/Transforms/InstCombine/2006-12-15-Range-Test.ll vendor/llvm/dist/test/Transforms/InstCombine/2006-12-23-Select-Cmp-Cmp.ll vendor/llvm/dist/test/Transforms/InstCombine/2007-02-01-LoadSinkAlloca.ll vendor/llvm/dist/test/Transforms/InstCombine/2007-02-07-PointerCast.ll vendor/llvm/dist/test/Transforms/InstCombine/2007-03-25-BadShiftMask.ll vendor/llvm/dist/test/Transforms/InstCombine/2007-05-14-Crash.ll vendor/llvm/dist/test/Transforms/InstCombine/2007-06-06-AshrSignBit.ll vendor/llvm/dist/test/Transforms/InstCombine/2007-09-10-AliasConstFold.ll vendor/llvm/dist/test/Transforms/InstCombine/2007-10-10-EliminateMemCpy.ll vendor/llvm/dist/test/Transforms/InstCombine/2007-10-12-Crash.ll vendor/llvm/dist/test/Transforms/InstCombine/2007-10-28-stacksave.ll vendor/llvm/dist/test/Transforms/InstCombine/2007-10-31-RangeCrash.ll vendor/llvm/dist/test/Transforms/InstCombine/2007-10-31-StringCrash.ll vendor/llvm/dist/test/Transforms/InstCombine/2007-11-07-OpaqueAlignCrash.ll vendor/llvm/dist/test/Transforms/InstCombine/2007-11-25-CompatibleAttributes.ll vendor/llvm/dist/test/Transforms/InstCombine/2007-12-12-GEPScale.ll vendor/llvm/dist/test/Transforms/InstCombine/2007-12-28-IcmpSub2.ll vendor/llvm/dist/test/Transforms/InstCombine/2008-01-14-VarArgTrampoline.ll vendor/llvm/dist/test/Transforms/InstCombine/2008-03-13-IntToPtr.ll vendor/llvm/dist/test/Transforms/InstCombine/2008-04-22-ByValBitcast.ll vendor/llvm/dist/test/Transforms/InstCombine/2008-04-29-VolatileLoadDontMerge.ll vendor/llvm/dist/test/Transforms/InstCombine/2008-04-29-VolatileLoadMerge.ll vendor/llvm/dist/test/Transforms/InstCombine/2008-05-08-LiveStoreDelete.ll vendor/llvm/dist/test/Transforms/InstCombine/2008-05-08-StrLenSink.ll vendor/llvm/dist/test/Transforms/InstCombine/2008-05-09-SinkOfInvoke.ll vendor/llvm/dist/test/Transforms/InstCombine/2008-05-17-InfLoop.ll vendor/llvm/dist/test/Transforms/InstCombine/2008-05-23-CompareFold.ll vendor/llvm/dist/test/Transforms/InstCombine/2008-06-08-ICmpPHI.ll vendor/llvm/dist/test/Transforms/InstCombine/2008-06-19-UncondLoad.ll vendor/llvm/dist/test/Transforms/InstCombine/2008-06-24-StackRestore.ll vendor/llvm/dist/test/Transforms/InstCombine/2008-07-08-VolatileLoadMerge.ll vendor/llvm/dist/test/Transforms/InstCombine/2008-08-05-And.ll vendor/llvm/dist/test/Transforms/InstCombine/2009-01-08-AlignAlloca.ll vendor/llvm/dist/test/Transforms/InstCombine/2009-01-19-fmod-constant-float-specials.ll vendor/llvm/dist/test/Transforms/InstCombine/2009-01-19-fmod-constant-float.ll vendor/llvm/dist/test/Transforms/InstCombine/2009-01-24-EmptyStruct.ll vendor/llvm/dist/test/Transforms/InstCombine/2009-02-20-InstCombine-SROA.ll vendor/llvm/dist/test/Transforms/InstCombine/2009-02-21-LoadCST.ll vendor/llvm/dist/test/Transforms/InstCombine/2009-02-25-CrashZeroSizeArray.ll vendor/llvm/dist/test/Transforms/InstCombine/2009-03-18-vector-ashr-crash.ll vendor/llvm/dist/test/Transforms/InstCombine/2009-05-23-FCmpToICmp.ll vendor/llvm/dist/test/Transforms/InstCombine/2009-12-17-CmpSelectNull.ll vendor/llvm/dist/test/Transforms/InstCombine/2010-03-03-ExtElim.ll vendor/llvm/dist/test/Transforms/InstCombine/2010-05-30-memcpy-Struct.ll vendor/llvm/dist/test/Transforms/InstCombine/2010-11-21-SizeZeroTypeGEP.ll vendor/llvm/dist/test/Transforms/InstCombine/2011-05-02-VectorBoolean.ll vendor/llvm/dist/test/Transforms/InstCombine/2011-05-13-InBoundsGEP.ll vendor/llvm/dist/test/Transforms/InstCombine/2011-05-28-swapmulsub.ll vendor/llvm/dist/test/Transforms/InstCombine/2011-06-13-nsw-alloca.ll vendor/llvm/dist/test/Transforms/InstCombine/2011-09-03-Trampoline.ll vendor/llvm/dist/test/Transforms/InstCombine/2011-10-07-AlignPromotion.ll vendor/llvm/dist/test/Transforms/InstCombine/2012-02-13-FCmp.ll vendor/llvm/dist/test/Transforms/InstCombine/2012-05-27-Negative-Shift-Crash.ll vendor/llvm/dist/test/Transforms/InstCombine/2012-05-28-select-hang.ll vendor/llvm/dist/test/Transforms/InstCombine/2012-06-06-LoadOfPHIs.ll vendor/llvm/dist/test/Transforms/InstCombine/2012-07-25-LoadPart.ll vendor/llvm/dist/test/Transforms/InstCombine/2012-07-30-addrsp-bitcast.ll vendor/llvm/dist/test/Transforms/InstCombine/2012-09-17-ZeroSizedAlloca.ll vendor/llvm/dist/test/Transforms/InstCombine/2012-10-25-vector-of-pointers.ll vendor/llvm/dist/test/Transforms/InstCombine/2012-12-14-simp-vgep.ll vendor/llvm/dist/test/Transforms/InstCombine/2013-03-05-Combine-BitcastTy-Into-Alloca.ll vendor/llvm/dist/test/Transforms/InstCombine/CPP_min_max.ll vendor/llvm/dist/test/Transforms/InstCombine/LandingPadClauses.ll vendor/llvm/dist/test/Transforms/InstCombine/PR7357.ll vendor/llvm/dist/test/Transforms/InstCombine/add2.ll vendor/llvm/dist/test/Transforms/InstCombine/add3.ll vendor/llvm/dist/test/Transforms/InstCombine/addrspacecast.ll vendor/llvm/dist/test/Transforms/InstCombine/alias-recursion.ll vendor/llvm/dist/test/Transforms/InstCombine/align-2d-gep.ll vendor/llvm/dist/test/Transforms/InstCombine/align-addr.ll vendor/llvm/dist/test/Transforms/InstCombine/align-attr.ll vendor/llvm/dist/test/Transforms/InstCombine/align-external.ll vendor/llvm/dist/test/Transforms/InstCombine/alloca.ll vendor/llvm/dist/test/Transforms/InstCombine/assume-loop-align.ll vendor/llvm/dist/test/Transforms/InstCombine/assume-redundant.ll vendor/llvm/dist/test/Transforms/InstCombine/assume.ll vendor/llvm/dist/test/Transforms/InstCombine/atomic.ll vendor/llvm/dist/test/Transforms/InstCombine/bitcast-alias-function.ll vendor/llvm/dist/test/Transforms/InstCombine/bitcast.ll vendor/llvm/dist/test/Transforms/InstCombine/bittest.ll vendor/llvm/dist/test/Transforms/InstCombine/call-cast-target.ll vendor/llvm/dist/test/Transforms/InstCombine/call-intrinsics.ll vendor/llvm/dist/test/Transforms/InstCombine/call.ll vendor/llvm/dist/test/Transforms/InstCombine/call2.ll vendor/llvm/dist/test/Transforms/InstCombine/cast.ll vendor/llvm/dist/test/Transforms/InstCombine/cast_ptr.ll vendor/llvm/dist/test/Transforms/InstCombine/constant-expr-datalayout.ll vendor/llvm/dist/test/Transforms/InstCombine/constant-fold-address-space-pointer.ll vendor/llvm/dist/test/Transforms/InstCombine/constant-fold-alias.ll vendor/llvm/dist/test/Transforms/InstCombine/constant-fold-gep.ll vendor/llvm/dist/test/Transforms/InstCombine/crash.ll vendor/llvm/dist/test/Transforms/InstCombine/debug-line.ll vendor/llvm/dist/test/Transforms/InstCombine/debuginfo.ll vendor/llvm/dist/test/Transforms/InstCombine/disable-simplify-libcalls.ll vendor/llvm/dist/test/Transforms/InstCombine/div-shift-crash.ll vendor/llvm/dist/test/Transforms/InstCombine/enforce-known-alignment.ll vendor/llvm/dist/test/Transforms/InstCombine/err-rep-cold.ll vendor/llvm/dist/test/Transforms/InstCombine/extractvalue.ll vendor/llvm/dist/test/Transforms/InstCombine/fast-math.ll vendor/llvm/dist/test/Transforms/InstCombine/fcmp.ll vendor/llvm/dist/test/Transforms/InstCombine/fmul.ll vendor/llvm/dist/test/Transforms/InstCombine/fold-vector-zero.ll vendor/llvm/dist/test/Transforms/InstCombine/fp-ret-bitcast.ll vendor/llvm/dist/test/Transforms/InstCombine/fpextend.ll vendor/llvm/dist/test/Transforms/InstCombine/fprintf-1.ll vendor/llvm/dist/test/Transforms/InstCombine/fputs-1.ll vendor/llvm/dist/test/Transforms/InstCombine/fwrite-1.ll vendor/llvm/dist/test/Transforms/InstCombine/gep-addrspace.ll vendor/llvm/dist/test/Transforms/InstCombine/gepgep.ll vendor/llvm/dist/test/Transforms/InstCombine/gepphigep.ll vendor/llvm/dist/test/Transforms/InstCombine/getelementptr.ll vendor/llvm/dist/test/Transforms/InstCombine/icmp-range.ll vendor/llvm/dist/test/Transforms/InstCombine/icmp.ll vendor/llvm/dist/test/Transforms/InstCombine/intrinsics.ll vendor/llvm/dist/test/Transforms/InstCombine/invariant.ll vendor/llvm/dist/test/Transforms/InstCombine/known_align.ll vendor/llvm/dist/test/Transforms/InstCombine/load-cmp.ll vendor/llvm/dist/test/Transforms/InstCombine/load-select.ll vendor/llvm/dist/test/Transforms/InstCombine/load.ll vendor/llvm/dist/test/Transforms/InstCombine/load3.ll vendor/llvm/dist/test/Transforms/InstCombine/loadstore-alignment.ll vendor/llvm/dist/test/Transforms/InstCombine/loadstore-metadata.ll vendor/llvm/dist/test/Transforms/InstCombine/lshr-phi.ll vendor/llvm/dist/test/Transforms/InstCombine/malloc-free-delete.ll vendor/llvm/dist/test/Transforms/InstCombine/memcmp-1.ll vendor/llvm/dist/test/Transforms/InstCombine/memcpy-from-global.ll vendor/llvm/dist/test/Transforms/InstCombine/memmove.ll vendor/llvm/dist/test/Transforms/InstCombine/memset.ll vendor/llvm/dist/test/Transforms/InstCombine/memset2.ll vendor/llvm/dist/test/Transforms/InstCombine/merge-icmp.ll vendor/llvm/dist/test/Transforms/InstCombine/mul.ll vendor/llvm/dist/test/Transforms/InstCombine/multi-size-address-space-pointer.ll vendor/llvm/dist/test/Transforms/InstCombine/no-negzero.ll vendor/llvm/dist/test/Transforms/InstCombine/not.ll vendor/llvm/dist/test/Transforms/InstCombine/obfuscated_splat.ll vendor/llvm/dist/test/Transforms/InstCombine/objsize-address-space.ll vendor/llvm/dist/test/Transforms/InstCombine/objsize.ll vendor/llvm/dist/test/Transforms/InstCombine/odr-linkage.ll vendor/llvm/dist/test/Transforms/InstCombine/or.ll vendor/llvm/dist/test/Transforms/InstCombine/osx-names.ll vendor/llvm/dist/test/Transforms/InstCombine/overflow-mul.ll vendor/llvm/dist/test/Transforms/InstCombine/overflow.ll vendor/llvm/dist/test/Transforms/InstCombine/phi-merge-gep.ll vendor/llvm/dist/test/Transforms/InstCombine/phi.ll vendor/llvm/dist/test/Transforms/InstCombine/pr12251.ll vendor/llvm/dist/test/Transforms/InstCombine/pr21651.ll vendor/llvm/dist/test/Transforms/InstCombine/pr2645-0.ll vendor/llvm/dist/test/Transforms/InstCombine/pr2645-1.ll vendor/llvm/dist/test/Transforms/InstCombine/pr2996.ll vendor/llvm/dist/test/Transforms/InstCombine/pr8547.ll vendor/llvm/dist/test/Transforms/InstCombine/printf-1.ll vendor/llvm/dist/test/Transforms/InstCombine/printf-2.ll vendor/llvm/dist/test/Transforms/InstCombine/puts-1.ll vendor/llvm/dist/test/Transforms/InstCombine/select-cmp-br.ll vendor/llvm/dist/test/Transforms/InstCombine/select-crash.ll vendor/llvm/dist/test/Transforms/InstCombine/select-load-call.ll vendor/llvm/dist/test/Transforms/InstCombine/select-select.ll vendor/llvm/dist/test/Transforms/InstCombine/select.ll vendor/llvm/dist/test/Transforms/InstCombine/shift.ll vendor/llvm/dist/test/Transforms/InstCombine/shufflemask-undef.ll vendor/llvm/dist/test/Transforms/InstCombine/signed-comparison.ll vendor/llvm/dist/test/Transforms/InstCombine/simplify-demanded-bits-pointer.ll vendor/llvm/dist/test/Transforms/InstCombine/simplify-libcalls.ll vendor/llvm/dist/test/Transforms/InstCombine/sincospi.ll vendor/llvm/dist/test/Transforms/InstCombine/sitofp.ll vendor/llvm/dist/test/Transforms/InstCombine/sprintf-1.ll vendor/llvm/dist/test/Transforms/InstCombine/sqrt.ll vendor/llvm/dist/test/Transforms/InstCombine/srem1.ll vendor/llvm/dist/test/Transforms/InstCombine/stack-overalign.ll vendor/llvm/dist/test/Transforms/InstCombine/stacksaverestore.ll vendor/llvm/dist/test/Transforms/InstCombine/statepoint.ll vendor/llvm/dist/test/Transforms/InstCombine/store.ll vendor/llvm/dist/test/Transforms/InstCombine/stpcpy-1.ll vendor/llvm/dist/test/Transforms/InstCombine/stpcpy-2.ll vendor/llvm/dist/test/Transforms/InstCombine/stpcpy_chk-1.ll vendor/llvm/dist/test/Transforms/InstCombine/stpcpy_chk-2.ll vendor/llvm/dist/test/Transforms/InstCombine/strcat-1.ll vendor/llvm/dist/test/Transforms/InstCombine/strcat-2.ll vendor/llvm/dist/test/Transforms/InstCombine/strcat-3.ll vendor/llvm/dist/test/Transforms/InstCombine/strchr-1.ll vendor/llvm/dist/test/Transforms/InstCombine/strchr-2.ll vendor/llvm/dist/test/Transforms/InstCombine/strcmp-1.ll vendor/llvm/dist/test/Transforms/InstCombine/strcmp-2.ll vendor/llvm/dist/test/Transforms/InstCombine/strcpy-1.ll vendor/llvm/dist/test/Transforms/InstCombine/strcpy-2.ll vendor/llvm/dist/test/Transforms/InstCombine/strcpy_chk-1.ll vendor/llvm/dist/test/Transforms/InstCombine/strcpy_chk-2.ll vendor/llvm/dist/test/Transforms/InstCombine/strcpy_chk-64.ll vendor/llvm/dist/test/Transforms/InstCombine/strcspn-1.ll vendor/llvm/dist/test/Transforms/InstCombine/strcspn-2.ll vendor/llvm/dist/test/Transforms/InstCombine/strlen-1.ll vendor/llvm/dist/test/Transforms/InstCombine/strlen-2.ll vendor/llvm/dist/test/Transforms/InstCombine/strncat-1.ll vendor/llvm/dist/test/Transforms/InstCombine/strncat-2.ll vendor/llvm/dist/test/Transforms/InstCombine/strncat-3.ll vendor/llvm/dist/test/Transforms/InstCombine/strncmp-1.ll vendor/llvm/dist/test/Transforms/InstCombine/strncmp-2.ll vendor/llvm/dist/test/Transforms/InstCombine/strncpy-1.ll vendor/llvm/dist/test/Transforms/InstCombine/strncpy-2.ll vendor/llvm/dist/test/Transforms/InstCombine/strncpy_chk-1.ll vendor/llvm/dist/test/Transforms/InstCombine/strncpy_chk-2.ll vendor/llvm/dist/test/Transforms/InstCombine/strpbrk-1.ll vendor/llvm/dist/test/Transforms/InstCombine/strpbrk-2.ll vendor/llvm/dist/test/Transforms/InstCombine/strrchr-1.ll vendor/llvm/dist/test/Transforms/InstCombine/strrchr-2.ll vendor/llvm/dist/test/Transforms/InstCombine/strspn-1.ll vendor/llvm/dist/test/Transforms/InstCombine/strstr-1.ll vendor/llvm/dist/test/Transforms/InstCombine/strstr-2.ll vendor/llvm/dist/test/Transforms/InstCombine/struct-assign-tbaa.ll vendor/llvm/dist/test/Transforms/InstCombine/sub.ll vendor/llvm/dist/test/Transforms/InstCombine/urem-simplify-bug.ll vendor/llvm/dist/test/Transforms/InstCombine/vec_demanded_elts.ll vendor/llvm/dist/test/Transforms/InstCombine/vec_extract_var_elt.ll vendor/llvm/dist/test/Transforms/InstCombine/vec_phi_extract.ll vendor/llvm/dist/test/Transforms/InstCombine/vec_shuffle.ll vendor/llvm/dist/test/Transforms/InstCombine/vector-casts.ll vendor/llvm/dist/test/Transforms/InstCombine/vector_gep1.ll vendor/llvm/dist/test/Transforms/InstCombine/vector_gep2.ll vendor/llvm/dist/test/Transforms/InstCombine/volatile_store.ll vendor/llvm/dist/test/Transforms/InstCombine/vsx-unaligned.ll vendor/llvm/dist/test/Transforms/InstCombine/weak-symbols.ll vendor/llvm/dist/test/Transforms/InstCombine/xor.ll vendor/llvm/dist/test/Transforms/InstCombine/zext-or-icmp.ll vendor/llvm/dist/test/Transforms/InstMerge/ld_hoist1.ll vendor/llvm/dist/test/Transforms/InstMerge/ld_hoist_st_sink.ll vendor/llvm/dist/test/Transforms/InstMerge/st_sink_barrier_call.ll vendor/llvm/dist/test/Transforms/InstMerge/st_sink_bugfix_22613.ll vendor/llvm/dist/test/Transforms/InstMerge/st_sink_no_barrier_call.ll vendor/llvm/dist/test/Transforms/InstMerge/st_sink_no_barrier_load.ll vendor/llvm/dist/test/Transforms/InstMerge/st_sink_no_barrier_store.ll vendor/llvm/dist/test/Transforms/InstMerge/st_sink_two_stores.ll vendor/llvm/dist/test/Transforms/InstMerge/st_sink_with_barrier.ll vendor/llvm/dist/test/Transforms/InstSimplify/2011-10-27-BinOpCrash.ll vendor/llvm/dist/test/Transforms/InstSimplify/call-callconv.ll vendor/llvm/dist/test/Transforms/InstSimplify/call.ll vendor/llvm/dist/test/Transforms/InstSimplify/compare.ll vendor/llvm/dist/test/Transforms/InstSimplify/fast-math.ll vendor/llvm/dist/test/Transforms/InstSimplify/floating-point-arithmetic.ll vendor/llvm/dist/test/Transforms/InstSimplify/gep.ll vendor/llvm/dist/test/Transforms/InstSimplify/load.ll vendor/llvm/dist/test/Transforms/InstSimplify/noalias-ptr.ll vendor/llvm/dist/test/Transforms/InstSimplify/past-the-end.ll vendor/llvm/dist/test/Transforms/InstSimplify/ptr_diff.ll vendor/llvm/dist/test/Transforms/InstSimplify/undef.ll vendor/llvm/dist/test/Transforms/InstSimplify/vector_gep.ll vendor/llvm/dist/test/Transforms/InstSimplify/vector_ptr_bitcast.ll vendor/llvm/dist/test/Transforms/Internalize/2009-01-05-InternalizeAliases.ll vendor/llvm/dist/test/Transforms/JumpThreading/2010-08-26-and.ll vendor/llvm/dist/test/Transforms/JumpThreading/2011-04-14-InfLoop.ll vendor/llvm/dist/test/Transforms/JumpThreading/assume.ll vendor/llvm/dist/test/Transforms/JumpThreading/crash.ll vendor/llvm/dist/test/Transforms/JumpThreading/indirectbr.ll vendor/llvm/dist/test/Transforms/JumpThreading/landing-pad.ll vendor/llvm/dist/test/Transforms/JumpThreading/lvi-load.ll vendor/llvm/dist/test/Transforms/JumpThreading/or-undef.ll vendor/llvm/dist/test/Transforms/JumpThreading/phi-eq.ll vendor/llvm/dist/test/Transforms/JumpThreading/select.ll vendor/llvm/dist/test/Transforms/JumpThreading/thread-loads.ll vendor/llvm/dist/test/Transforms/LCSSA/2006-06-03-IncorrectIDFPhis.ll vendor/llvm/dist/test/Transforms/LCSSA/2006-07-09-NoDominator.ll vendor/llvm/dist/test/Transforms/LCSSA/2007-07-12-LICM-2.ll vendor/llvm/dist/test/Transforms/LCSSA/2007-07-12-LICM-3.ll vendor/llvm/dist/test/Transforms/LCSSA/2007-07-12-LICM.ll vendor/llvm/dist/test/Transforms/LCSSA/invoke-dest.ll vendor/llvm/dist/test/Transforms/LCSSA/unreachable-use.ll vendor/llvm/dist/test/Transforms/LICM/2003-02-26-LoopExitNotDominated.ll vendor/llvm/dist/test/Transforms/LICM/2003-05-02-LoadHoist.ll vendor/llvm/dist/test/Transforms/LICM/2004-09-14-AliasAnalysisInvalidate.ll vendor/llvm/dist/test/Transforms/LICM/2004-11-17-UndefIndexCrash.ll vendor/llvm/dist/test/Transforms/LICM/2007-05-22-VolatileSink.ll vendor/llvm/dist/test/Transforms/LICM/2007-07-30-AliasSet.ll vendor/llvm/dist/test/Transforms/LICM/2007-09-17-PromoteValue.ll vendor/llvm/dist/test/Transforms/LICM/2008-07-22-LoadGlobalConstant.ll vendor/llvm/dist/test/Transforms/LICM/2009-12-10-LICM-Indbr-Crash.ll vendor/llvm/dist/test/Transforms/LICM/2011-04-06-HoistMissedASTUpdate.ll vendor/llvm/dist/test/Transforms/LICM/2011-04-06-PromoteResultOfPromotion.ll vendor/llvm/dist/test/Transforms/LICM/2011-04-09-RAUW-AST.ll vendor/llvm/dist/test/Transforms/LICM/2011-07-06-Alignment.ll vendor/llvm/dist/test/Transforms/LICM/PR21582.ll vendor/llvm/dist/test/Transforms/LICM/atomics.ll vendor/llvm/dist/test/Transforms/LICM/crash.ll vendor/llvm/dist/test/Transforms/LICM/debug-value.ll vendor/llvm/dist/test/Transforms/LICM/hoist-bitcast-load.ll vendor/llvm/dist/test/Transforms/LICM/hoist-deref-load.ll vendor/llvm/dist/test/Transforms/LICM/hoist-invariant-load.ll vendor/llvm/dist/test/Transforms/LICM/hoisting.ll vendor/llvm/dist/test/Transforms/LICM/lcssa-ssa-promoter.ll vendor/llvm/dist/test/Transforms/LICM/scalar-promote-memmodel.ll vendor/llvm/dist/test/Transforms/LICM/scalar_promote.ll vendor/llvm/dist/test/Transforms/LICM/sinking.ll vendor/llvm/dist/test/Transforms/LICM/speculate.ll vendor/llvm/dist/test/Transforms/LICM/volatile-alias.ll vendor/llvm/dist/test/Transforms/LoadCombine/load-combine-aa.ll vendor/llvm/dist/test/Transforms/LoadCombine/load-combine-assume.ll vendor/llvm/dist/test/Transforms/LoadCombine/load-combine.ll vendor/llvm/dist/test/Transforms/LoopDeletion/2008-05-06-Phi.ll vendor/llvm/dist/test/Transforms/LoopIdiom/basic-address-space.ll vendor/llvm/dist/test/Transforms/LoopIdiom/basic.ll vendor/llvm/dist/test/Transforms/LoopIdiom/crash.ll vendor/llvm/dist/test/Transforms/LoopIdiom/debug-line.ll vendor/llvm/dist/test/Transforms/LoopIdiom/memset_noidiom.ll vendor/llvm/dist/test/Transforms/LoopIdiom/non-canonical-loop.ll vendor/llvm/dist/test/Transforms/LoopIdiom/scev-invalidation.ll vendor/llvm/dist/test/Transforms/LoopReroll/basic.ll vendor/llvm/dist/test/Transforms/LoopReroll/nonconst_lb.ll vendor/llvm/dist/test/Transforms/LoopReroll/reduction.ll vendor/llvm/dist/test/Transforms/LoopRotate/PhiRename-1.ll vendor/llvm/dist/test/Transforms/LoopRotate/PhiSelfReference-1.ll vendor/llvm/dist/test/Transforms/LoopRotate/alloca.ll vendor/llvm/dist/test/Transforms/LoopRotate/basic.ll vendor/llvm/dist/test/Transforms/LoopRotate/crash.ll vendor/llvm/dist/test/Transforms/LoopRotate/dbgvalue.ll vendor/llvm/dist/test/Transforms/LoopRotate/indirectbr.ll vendor/llvm/dist/test/Transforms/LoopRotate/multiple-exits.ll vendor/llvm/dist/test/Transforms/LoopRotate/nosimplifylatch.ll vendor/llvm/dist/test/Transforms/LoopRotate/phi-duplicate.ll vendor/llvm/dist/test/Transforms/LoopRotate/simplifylatch.ll vendor/llvm/dist/test/Transforms/LoopSimplify/2003-08-15-PreheadersFail.ll vendor/llvm/dist/test/Transforms/LoopSimplify/2003-12-10-ExitBlocksProblem.ll vendor/llvm/dist/test/Transforms/LoopSimplify/2011-12-14-LandingpadHeader.ll vendor/llvm/dist/test/Transforms/LoopSimplify/ashr-crash.ll vendor/llvm/dist/test/Transforms/LoopSimplify/dup-preds.ll vendor/llvm/dist/test/Transforms/LoopSimplify/merge-exits.ll vendor/llvm/dist/test/Transforms/LoopSimplify/notify-scev.ll vendor/llvm/dist/test/Transforms/LoopSimplify/phi-node-simplify.ll vendor/llvm/dist/test/Transforms/LoopSimplify/preserve-scev.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/2005-08-15-AddRecIV.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/2005-08-17-OutOfLoopVariant.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/2007-04-23-UseIterator.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/2008-08-13-CmpStride.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/2008-09-09-Overflow.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/2009-01-13-nonconstant-stride-outside-loop.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/2009-04-28-no-reduce-mul.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/2011-07-19-CritEdgeBreakCrash.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/2011-10-03-CritEdgeMerge.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/2011-10-06-ReusePhi.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/2011-10-13-SCEVChain.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/2011-10-14-IntPtr.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/2011-12-19-PostincQuadratic.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/2012-01-02-nopreheader.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/2012-01-16-nopreheader.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/2012-03-15-nopreheader.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/2012-03-26-constexpr.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/2012-07-13-ExpandUDiv.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/2012-07-18-LimitReassociate.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/2013-01-14-ReuseCast.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/AArch64/lsr-memcpy.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/AArch64/lsr-memset.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/AArch64/req-regs.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/ARM/2012-06-15-lsr-noaddrmode.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/ARM/ivchain-ARM.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/X86/2008-08-14-ShadowIV.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/X86/2011-07-20-DoubleIV.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/X86/2011-12-04-loserreg.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/X86/2012-01-13-phielim.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/X86/ivchain-X86.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/X86/ivchain-stress-X86.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/X86/no_superflous_induction_vars.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/X86/pr17473.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/addrec-gep-address-space.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/addrec-gep.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/address-space-loop.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/count-to-zero.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/different-type-ivs.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/dominate-assert.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/dont-hoist-simple-loop-constants.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/dont_insert_redundant_ops.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/dont_reduce_bytes.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/dont_reverse.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/hoist-parent-preheader.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/invariant_value_first.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/invariant_value_first_arg.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/ivchain.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/nested-reduce.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/ops_after_indvar.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/phi_node_update_multiple_preds.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/post-inc-icmpzero.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/pr12018.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/pr12048.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/pr12691.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/pr18165.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/pr2570.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/pr3086.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/pr3399.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/pr3571.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/preserve-gep-loop-variant.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/quadradic-exit-value.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/related_indvars.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/remove_indvar.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/scaling_factor_cost_crash.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/share_code_in_preheader.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/uglygep-address-space.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/uglygep.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/use_postinc_value_outside_loop.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/var_stride_used_by_compare.ll vendor/llvm/dist/test/Transforms/LoopStrengthReduce/variable_stride.ll vendor/llvm/dist/test/Transforms/LoopUnroll/2007-05-05-UnrollMiscomp.ll vendor/llvm/dist/test/Transforms/LoopUnroll/2011-08-08-PhiUpdate.ll vendor/llvm/dist/test/Transforms/LoopUnroll/2011-08-09-IVSimplify.ll vendor/llvm/dist/test/Transforms/LoopUnroll/2011-10-01-NoopTrunc.ll vendor/llvm/dist/test/Transforms/LoopUnroll/PowerPC/a2-unrolling.ll vendor/llvm/dist/test/Transforms/LoopUnroll/X86/partial.ll vendor/llvm/dist/test/Transforms/LoopUnroll/ephemeral.ll vendor/llvm/dist/test/Transforms/LoopUnroll/ignore-annotation-intrinsic-cost.ll vendor/llvm/dist/test/Transforms/LoopUnroll/runtime-loop.ll vendor/llvm/dist/test/Transforms/LoopUnroll/runtime-loop1.ll vendor/llvm/dist/test/Transforms/LoopUnroll/runtime-loop2.ll vendor/llvm/dist/test/Transforms/LoopUnroll/runtime-loop3.ll vendor/llvm/dist/test/Transforms/LoopUnroll/scevunroll.ll vendor/llvm/dist/test/Transforms/LoopUnroll/shifted-tripcount.ll vendor/llvm/dist/test/Transforms/LoopUnroll/unroll-pragmas-disabled.ll vendor/llvm/dist/test/Transforms/LoopUnroll/unroll-pragmas.ll vendor/llvm/dist/test/Transforms/LoopUnswitch/2007-07-12-ExitDomInfo.ll vendor/llvm/dist/test/Transforms/LoopUnswitch/2007-07-18-DomInfo.ll vendor/llvm/dist/test/Transforms/LoopUnswitch/2007-08-01-LCSSA.ll vendor/llvm/dist/test/Transforms/LoopUnswitch/2008-06-02-DomInfo.ll vendor/llvm/dist/test/Transforms/LoopUnswitch/2008-06-17-DomFrontier.ll vendor/llvm/dist/test/Transforms/LoopUnswitch/2008-11-03-Invariant.ll vendor/llvm/dist/test/Transforms/LoopUnswitch/2010-11-18-LCSSA.ll vendor/llvm/dist/test/Transforms/LoopUnswitch/2011-09-26-EHCrash.ll vendor/llvm/dist/test/Transforms/LoopUnswitch/2011-11-18-SimpleSwitch.ll vendor/llvm/dist/test/Transforms/LoopUnswitch/2011-11-18-TwoSwitches-Threshold.ll vendor/llvm/dist/test/Transforms/LoopUnswitch/2011-11-18-TwoSwitches.ll vendor/llvm/dist/test/Transforms/LoopUnswitch/2012-04-30-LoopUnswitch-LPad-Crash.ll vendor/llvm/dist/test/Transforms/LoopUnswitch/2012-05-20-Phi.ll vendor/llvm/dist/test/Transforms/LoopUnswitch/basictest.ll vendor/llvm/dist/test/Transforms/LoopUnswitch/preserve-analyses.ll vendor/llvm/dist/test/Transforms/LoopVectorize/12-12-11-if-conv.ll vendor/llvm/dist/test/Transforms/LoopVectorize/2012-10-22-isconsec.ll vendor/llvm/dist/test/Transforms/LoopVectorize/AArch64/aarch64-unroll.ll vendor/llvm/dist/test/Transforms/LoopVectorize/AArch64/arm64-unroll.ll vendor/llvm/dist/test/Transforms/LoopVectorize/AArch64/gather-cost.ll vendor/llvm/dist/test/Transforms/LoopVectorize/AArch64/sdiv-pow2.ll vendor/llvm/dist/test/Transforms/LoopVectorize/ARM/arm-unroll.ll vendor/llvm/dist/test/Transforms/LoopVectorize/ARM/gather-cost.ll vendor/llvm/dist/test/Transforms/LoopVectorize/ARM/gcc-examples.ll vendor/llvm/dist/test/Transforms/LoopVectorize/ARM/mul-cast-vect.ll vendor/llvm/dist/test/Transforms/LoopVectorize/ARM/width-detect.ll vendor/llvm/dist/test/Transforms/LoopVectorize/PowerPC/vsx-tsvc-s173.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/already-vectorized.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/assume.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/avx1.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/avx512.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/constant-vector-operand.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/conversion-cost.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/cost-model.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/fp32_to_uint32-cost-model.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/fp64_to_uint32-cost-model.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/fp_to_sint8-cost-model.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/gather-cost.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/gcc-examples.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/illegal-parallel-loop-uniform-write.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/masked_load_store.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/metadata-enable.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/min-trip-count-switch.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/no-vector.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/parallel-loops-after-reg2mem.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/parallel-loops.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/powof2div.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/reduction-crash.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/small-size.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/struct-store.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/tripcount.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/uint64_to_fp64-cost-model.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/unroll-pm.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/unroll-small-loops.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/unroll_selection.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/vect.omp.force.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/vect.omp.force.small-tc.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/vector-scalar-select-cost.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/vector_ptr_load_store.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/vectorization-remarks-missed.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/vectorization-remarks.ll vendor/llvm/dist/test/Transforms/LoopVectorize/X86/x86_fp80-vector-store.ll vendor/llvm/dist/test/Transforms/LoopVectorize/XCore/no-vector-registers.ll vendor/llvm/dist/test/Transforms/LoopVectorize/align.ll vendor/llvm/dist/test/Transforms/LoopVectorize/bsd_regex.ll vendor/llvm/dist/test/Transforms/LoopVectorize/bzip_reverse_loops.ll vendor/llvm/dist/test/Transforms/LoopVectorize/calloc.ll vendor/llvm/dist/test/Transforms/LoopVectorize/cast-induction.ll vendor/llvm/dist/test/Transforms/LoopVectorize/conditional-assignment.ll vendor/llvm/dist/test/Transforms/LoopVectorize/control-flow.ll vendor/llvm/dist/test/Transforms/LoopVectorize/cpp-new-array.ll vendor/llvm/dist/test/Transforms/LoopVectorize/dbg.value.ll vendor/llvm/dist/test/Transforms/LoopVectorize/debugloc.ll vendor/llvm/dist/test/Transforms/LoopVectorize/duplicated-metadata.ll vendor/llvm/dist/test/Transforms/LoopVectorize/ee-crash.ll vendor/llvm/dist/test/Transforms/LoopVectorize/exact.ll vendor/llvm/dist/test/Transforms/LoopVectorize/flags.ll vendor/llvm/dist/test/Transforms/LoopVectorize/float-reduction.ll vendor/llvm/dist/test/Transforms/LoopVectorize/funcall.ll vendor/llvm/dist/test/Transforms/LoopVectorize/gcc-examples.ll vendor/llvm/dist/test/Transforms/LoopVectorize/global_alias.ll vendor/llvm/dist/test/Transforms/LoopVectorize/hoist-loads.ll vendor/llvm/dist/test/Transforms/LoopVectorize/i8-induction.ll vendor/llvm/dist/test/Transforms/LoopVectorize/if-conversion-edgemasks.ll vendor/llvm/dist/test/Transforms/LoopVectorize/if-conversion-nest.ll vendor/llvm/dist/test/Transforms/LoopVectorize/if-conversion-reduction.ll vendor/llvm/dist/test/Transforms/LoopVectorize/if-conversion.ll vendor/llvm/dist/test/Transforms/LoopVectorize/if-pred-stores.ll vendor/llvm/dist/test/Transforms/LoopVectorize/incorrect-dom-info.ll vendor/llvm/dist/test/Transforms/LoopVectorize/increment.ll vendor/llvm/dist/test/Transforms/LoopVectorize/induction.ll vendor/llvm/dist/test/Transforms/LoopVectorize/induction_plus.ll vendor/llvm/dist/test/Transforms/LoopVectorize/intrinsic.ll vendor/llvm/dist/test/Transforms/LoopVectorize/lifetime.ll vendor/llvm/dist/test/Transforms/LoopVectorize/loop-form.ll vendor/llvm/dist/test/Transforms/LoopVectorize/loop-vect-memdep.ll vendor/llvm/dist/test/Transforms/LoopVectorize/memdep.ll vendor/llvm/dist/test/Transforms/LoopVectorize/metadata-unroll.ll vendor/llvm/dist/test/Transforms/LoopVectorize/metadata-width.ll vendor/llvm/dist/test/Transforms/LoopVectorize/metadata.ll vendor/llvm/dist/test/Transforms/LoopVectorize/minmax_reduction.ll vendor/llvm/dist/test/Transforms/LoopVectorize/multi-use-reduction-bug.ll vendor/llvm/dist/test/Transforms/LoopVectorize/multiple-address-spaces.ll vendor/llvm/dist/test/Transforms/LoopVectorize/no_array_bounds.ll vendor/llvm/dist/test/Transforms/LoopVectorize/no_idiv_reduction.ll vendor/llvm/dist/test/Transforms/LoopVectorize/no_int_induction.ll vendor/llvm/dist/test/Transforms/LoopVectorize/no_outside_user.ll vendor/llvm/dist/test/Transforms/LoopVectorize/no_switch.ll vendor/llvm/dist/test/Transforms/LoopVectorize/nofloat.ll vendor/llvm/dist/test/Transforms/LoopVectorize/non-const-n.ll vendor/llvm/dist/test/Transforms/LoopVectorize/nsw-crash.ll vendor/llvm/dist/test/Transforms/LoopVectorize/opt.ll vendor/llvm/dist/test/Transforms/LoopVectorize/ptr_loops.ll vendor/llvm/dist/test/Transforms/LoopVectorize/read-only.ll vendor/llvm/dist/test/Transforms/LoopVectorize/reduction.ll vendor/llvm/dist/test/Transforms/LoopVectorize/reverse_induction.ll vendor/llvm/dist/test/Transforms/LoopVectorize/reverse_iter.ll vendor/llvm/dist/test/Transforms/LoopVectorize/runtime-check-address-space.ll vendor/llvm/dist/test/Transforms/LoopVectorize/runtime-check-readonly-address-space.ll vendor/llvm/dist/test/Transforms/LoopVectorize/runtime-check-readonly.ll vendor/llvm/dist/test/Transforms/LoopVectorize/runtime-check.ll vendor/llvm/dist/test/Transforms/LoopVectorize/runtime-limit.ll vendor/llvm/dist/test/Transforms/LoopVectorize/safegep.ll vendor/llvm/dist/test/Transforms/LoopVectorize/same-base-access.ll vendor/llvm/dist/test/Transforms/LoopVectorize/scalar-select.ll vendor/llvm/dist/test/Transforms/LoopVectorize/scev-exitlim-crash.ll vendor/llvm/dist/test/Transforms/LoopVectorize/simple-unroll.ll vendor/llvm/dist/test/Transforms/LoopVectorize/small-loop.ll vendor/llvm/dist/test/Transforms/LoopVectorize/start-non-zero.ll vendor/llvm/dist/test/Transforms/LoopVectorize/store-shuffle-bug.ll vendor/llvm/dist/test/Transforms/LoopVectorize/struct_access.ll vendor/llvm/dist/test/Transforms/LoopVectorize/tbaa-nodep.ll vendor/llvm/dist/test/Transforms/LoopVectorize/undef-inst-bug.ll vendor/llvm/dist/test/Transforms/LoopVectorize/unroll_novec.ll vendor/llvm/dist/test/Transforms/LoopVectorize/unsized-pointee-crash.ll vendor/llvm/dist/test/Transforms/LoopVectorize/value-ptr-bug.ll vendor/llvm/dist/test/Transforms/LoopVectorize/vect.omp.persistence.ll vendor/llvm/dist/test/Transforms/LoopVectorize/vect.stats.ll vendor/llvm/dist/test/Transforms/LoopVectorize/vectorize-once.ll vendor/llvm/dist/test/Transforms/LoopVectorize/version-mem-access.ll vendor/llvm/dist/test/Transforms/LoopVectorize/write-only.ll vendor/llvm/dist/test/Transforms/LowerAtomic/atomic-swap.ll vendor/llvm/dist/test/Transforms/LowerExpectIntrinsic/basic.ll vendor/llvm/dist/test/Transforms/LowerInvoke/2003-12-10-Crash.ll vendor/llvm/dist/test/Transforms/LowerSwitch/2014-06-10-SwitchContiguousOpt.ll vendor/llvm/dist/test/Transforms/LowerSwitch/2014-06-11-SwitchDefaultUnreachableOpt.ll vendor/llvm/dist/test/Transforms/LowerSwitch/feature.ll vendor/llvm/dist/test/Transforms/Mem2Reg/2002-03-28-UninitializedVal.ll vendor/llvm/dist/test/Transforms/Mem2Reg/2003-04-24-MultipleIdenticalSuccessors.ll vendor/llvm/dist/test/Transforms/Mem2Reg/2003-06-26-IterativePromote.ll vendor/llvm/dist/test/Transforms/Mem2Reg/2003-10-05-DeadPHIInsertion.ll vendor/llvm/dist/test/Transforms/Mem2Reg/2005-06-30-ReadBeforeWrite.ll vendor/llvm/dist/test/Transforms/Mem2Reg/2005-11-28-Crash.ll vendor/llvm/dist/test/Transforms/Mem2Reg/2007-08-27-VolatileLoadsStores.ll vendor/llvm/dist/test/Transforms/Mem2Reg/ConvertDebugInfo.ll vendor/llvm/dist/test/Transforms/Mem2Reg/ConvertDebugInfo2.ll vendor/llvm/dist/test/Transforms/Mem2Reg/PromoteMemToRegister.ll vendor/llvm/dist/test/Transforms/Mem2Reg/UndefValuesMerge.ll vendor/llvm/dist/test/Transforms/Mem2Reg/atomic.ll vendor/llvm/dist/test/Transforms/Mem2Reg/crash.ll vendor/llvm/dist/test/Transforms/Mem2Reg/ignore-lifetime.ll vendor/llvm/dist/test/Transforms/MemCpyOpt/2008-02-24-MultipleUseofSRet.ll vendor/llvm/dist/test/Transforms/MemCpyOpt/2008-03-13-ReturnSlotBitcast.ll vendor/llvm/dist/test/Transforms/MemCpyOpt/2011-06-02-CallSlotOverwritten.ll vendor/llvm/dist/test/Transforms/MemCpyOpt/align.ll vendor/llvm/dist/test/Transforms/MemCpyOpt/atomic.ll vendor/llvm/dist/test/Transforms/MemCpyOpt/callslot_deref.ll vendor/llvm/dist/test/Transforms/MemCpyOpt/crash.ll vendor/llvm/dist/test/Transforms/MemCpyOpt/form-memset.ll vendor/llvm/dist/test/Transforms/MemCpyOpt/loadstore-sret.ll vendor/llvm/dist/test/Transforms/MemCpyOpt/memcpy-to-memset-with-lifetimes.ll vendor/llvm/dist/test/Transforms/MemCpyOpt/memcpy-to-memset.ll vendor/llvm/dist/test/Transforms/MemCpyOpt/memcpy-undef.ll vendor/llvm/dist/test/Transforms/MemCpyOpt/memcpy.ll vendor/llvm/dist/test/Transforms/MemCpyOpt/memmove.ll vendor/llvm/dist/test/Transforms/MemCpyOpt/smaller.ll vendor/llvm/dist/test/Transforms/MemCpyOpt/sret.ll vendor/llvm/dist/test/Transforms/MergeFunc/2011-02-08-RemoveEqual.ll vendor/llvm/dist/test/Transforms/MergeFunc/address-spaces.ll vendor/llvm/dist/test/Transforms/MergeFunc/crash.ll vendor/llvm/dist/test/Transforms/MergeFunc/inttoptr-address-space.ll vendor/llvm/dist/test/Transforms/MergeFunc/inttoptr.ll vendor/llvm/dist/test/Transforms/MergeFunc/mergefunc-struct-return.ll vendor/llvm/dist/test/Transforms/MergeFunc/ranges.ll vendor/llvm/dist/test/Transforms/MergeFunc/vector-GEP-crash.ll vendor/llvm/dist/test/Transforms/MergeFunc/vector.ll vendor/llvm/dist/test/Transforms/MetaRenamer/metarenamer.ll vendor/llvm/dist/test/Transforms/ObjCARC/allocas.ll vendor/llvm/dist/test/Transforms/ObjCARC/basic.ll vendor/llvm/dist/test/Transforms/ObjCARC/cfg-hazards.ll vendor/llvm/dist/test/Transforms/ObjCARC/contract-storestrong-ivar.ll vendor/llvm/dist/test/Transforms/ObjCARC/contract-storestrong.ll vendor/llvm/dist/test/Transforms/ObjCARC/contract.ll vendor/llvm/dist/test/Transforms/ObjCARC/ensure-that-exception-unwind-path-is-visited.ll vendor/llvm/dist/test/Transforms/ObjCARC/escape.ll vendor/llvm/dist/test/Transforms/ObjCARC/gvn.ll vendor/llvm/dist/test/Transforms/ObjCARC/intrinsic-use-isolated.ll vendor/llvm/dist/test/Transforms/ObjCARC/intrinsic-use.ll vendor/llvm/dist/test/Transforms/ObjCARC/move-and-form-retain-autorelease.ll vendor/llvm/dist/test/Transforms/ObjCARC/move-and-merge-autorelease.ll vendor/llvm/dist/test/Transforms/ObjCARC/nested.ll vendor/llvm/dist/test/Transforms/ObjCARC/path-overflow.ll vendor/llvm/dist/test/Transforms/ObjCARC/provenance.ll vendor/llvm/dist/test/Transforms/ObjCARC/retain-block-side-effects.ll vendor/llvm/dist/test/Transforms/ObjCARC/weak-copies.ll vendor/llvm/dist/test/Transforms/PhaseOrdering/2010-03-22-empty-baseclass.ll vendor/llvm/dist/test/Transforms/PhaseOrdering/PR6627.ll vendor/llvm/dist/test/Transforms/PhaseOrdering/basic.ll vendor/llvm/dist/test/Transforms/PhaseOrdering/gdce.ll vendor/llvm/dist/test/Transforms/PhaseOrdering/scev.ll vendor/llvm/dist/test/Transforms/PruneEH/recursivetest.ll vendor/llvm/dist/test/Transforms/PruneEH/simpletest.ll vendor/llvm/dist/test/Transforms/Reassociate/2011-01-26-UseAfterFree.ll vendor/llvm/dist/test/Transforms/Reassociate/basictest.ll vendor/llvm/dist/test/Transforms/Reassociate/crash.ll vendor/llvm/dist/test/Transforms/Reassociate/fast-ReassociateVector.ll vendor/llvm/dist/test/Transforms/Reassociate/fast-basictest.ll vendor/llvm/dist/test/Transforms/Reassociate/looptest.ll vendor/llvm/dist/test/Transforms/Reassociate/pr12245.ll vendor/llvm/dist/test/Transforms/Reassociate/pr21205.ll vendor/llvm/dist/test/Transforms/SCCP/2002-08-30-GetElementPtrTest.ll vendor/llvm/dist/test/Transforms/SCCP/2003-06-24-OverdefinedPHIValue.ll vendor/llvm/dist/test/Transforms/SCCP/2006-10-23-IPSCCP-Crash.ll vendor/llvm/dist/test/Transforms/SCCP/2006-12-04-PackedType.ll vendor/llvm/dist/test/Transforms/SCCP/2009-05-27-VectorOperandZero.ll vendor/llvm/dist/test/Transforms/SCCP/apint-array.ll vendor/llvm/dist/test/Transforms/SCCP/apint-bigarray.ll vendor/llvm/dist/test/Transforms/SCCP/apint-bigint2.ll vendor/llvm/dist/test/Transforms/SCCP/apint-ipsccp3.ll vendor/llvm/dist/test/Transforms/SCCP/apint-ipsccp4.ll vendor/llvm/dist/test/Transforms/SCCP/apint-load.ll vendor/llvm/dist/test/Transforms/SCCP/apint-select.ll vendor/llvm/dist/test/Transforms/SCCP/atomic-load-store.ll vendor/llvm/dist/test/Transforms/SCCP/ipsccp-basic.ll vendor/llvm/dist/test/Transforms/SCCP/loadtest.ll vendor/llvm/dist/test/Transforms/SCCP/retvalue-undef.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/AArch64/commute.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/AArch64/load-store-q.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/AArch64/sdiv-pow2.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/ARM/memory.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/ARM/sroa.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/R600/simplebb.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/addsub.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/align.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/bad_types.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/barriercall.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/call.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/cast.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/cmp_sel.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/compare-reduce.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/consecutive-access.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/continue_vectorizing.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/crash_7zip.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/crash_binaryop.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/crash_bullet.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/crash_bullet3.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/crash_dequeue.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/crash_gep.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/crash_lencod.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/crash_mandeltext.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/crash_netbsd_decompress.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/crash_scheduling.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/crash_sim4b1.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/crash_smallpt.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/crash_vectorizeTree.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/cross_block_slp.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/cse.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/cycle_dup.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/debug_info.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/diamond.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/external_user.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/extract.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/extract_in_tree_user.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/extractcost.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/flag.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/gep.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/hoist.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/horizontal.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/implicitfloat.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/in-tree-user.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/intrinsic.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/long_chains.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/loopinvariant.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/metadata.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/multi_block.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/multi_user.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/odd_store.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/operandorder.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/opt.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/ordering.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/phi.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/phi3.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/phi_overalignedtype.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/powof2div.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/pr16628.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/pr16899.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/pr19657.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/propagate_ir_flags.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/reduction.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/reduction2.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/return.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/rgb_phi.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/saxpy.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/scheduling.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/simple-loop.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/simplebb.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/tiny-tree.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/X86/unreachable.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/XCore/no-vector-registers.ll vendor/llvm/dist/test/Transforms/SROA/address-spaces.ll vendor/llvm/dist/test/Transforms/SROA/alignment.ll vendor/llvm/dist/test/Transforms/SROA/basictest.ll vendor/llvm/dist/test/Transforms/SROA/big-endian.ll vendor/llvm/dist/test/Transforms/SROA/fca.ll vendor/llvm/dist/test/Transforms/SROA/phi-and-select.ll vendor/llvm/dist/test/Transforms/SROA/slice-order-independence.ll vendor/llvm/dist/test/Transforms/SROA/slice-width.ll vendor/llvm/dist/test/Transforms/SROA/vector-conversion.ll vendor/llvm/dist/test/Transforms/SROA/vector-lifetime-intrinsic.ll vendor/llvm/dist/test/Transforms/SROA/vector-promotion.ll vendor/llvm/dist/test/Transforms/SROA/vectors-of-pointers.ll vendor/llvm/dist/test/Transforms/SampleProfile/branch.ll vendor/llvm/dist/test/Transforms/SampleProfile/calls.ll vendor/llvm/dist/test/Transforms/SampleProfile/discriminator.ll vendor/llvm/dist/test/Transforms/SampleProfile/fnptr.ll vendor/llvm/dist/test/Transforms/SampleProfile/propagate.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2003-05-29-ArrayFail.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2003-09-12-IncorrectPromote.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2003-10-29-ArrayProblem.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2006-11-07-InvalidArrayPromote.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2007-05-29-MemcpyPreserve.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2007-11-03-bigendian_apint.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2008-01-29-PromoteBug.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2008-02-28-SubElementExtractCrash.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2008-06-05-loadstore-agg.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2008-08-22-out-of-range-array-promote.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2008-09-22-vector-gep.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2009-02-02-ScalarPromoteOutOfRange.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2009-02-05-LoadFCA.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2009-03-04-MemCpyAlign.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2009-12-11-NeonTypes.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2011-05-06-CapturedAlloca.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2011-06-08-VectorExtractValue.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2011-06-17-VectorPartialMemset.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2011-09-22-PHISpeculateInvoke.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2011-10-22-VectorCrash.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2011-11-11-EmptyStruct.ll vendor/llvm/dist/test/Transforms/ScalarRepl/AggregatePromote.ll vendor/llvm/dist/test/Transforms/ScalarRepl/DifferingTypes.ll vendor/llvm/dist/test/Transforms/ScalarRepl/address-space.ll vendor/llvm/dist/test/Transforms/ScalarRepl/arraytest.ll vendor/llvm/dist/test/Transforms/ScalarRepl/badarray.ll vendor/llvm/dist/test/Transforms/ScalarRepl/basictest.ll vendor/llvm/dist/test/Transforms/ScalarRepl/bitfield-sroa.ll vendor/llvm/dist/test/Transforms/ScalarRepl/copy-aggregate.ll vendor/llvm/dist/test/Transforms/ScalarRepl/crash.ll vendor/llvm/dist/test/Transforms/ScalarRepl/debuginfo-preserved.ll vendor/llvm/dist/test/Transforms/ScalarRepl/inline-vector.ll vendor/llvm/dist/test/Transforms/ScalarRepl/lifetime.ll vendor/llvm/dist/test/Transforms/ScalarRepl/load-store-aggregate.ll vendor/llvm/dist/test/Transforms/ScalarRepl/memcpy-align.ll vendor/llvm/dist/test/Transforms/ScalarRepl/memset-aggregate-byte-leader.ll vendor/llvm/dist/test/Transforms/ScalarRepl/memset-aggregate.ll vendor/llvm/dist/test/Transforms/ScalarRepl/negative-memset.ll vendor/llvm/dist/test/Transforms/ScalarRepl/nonzero-first-index.ll vendor/llvm/dist/test/Transforms/ScalarRepl/not-a-vector.ll vendor/llvm/dist/test/Transforms/ScalarRepl/only-memcpy-uses.ll vendor/llvm/dist/test/Transforms/ScalarRepl/phi-cycle.ll vendor/llvm/dist/test/Transforms/ScalarRepl/phi-select.ll vendor/llvm/dist/test/Transforms/ScalarRepl/phinodepromote.ll vendor/llvm/dist/test/Transforms/ScalarRepl/select_promote.ll vendor/llvm/dist/test/Transforms/ScalarRepl/sroa-fca.ll vendor/llvm/dist/test/Transforms/ScalarRepl/sroa_two.ll vendor/llvm/dist/test/Transforms/ScalarRepl/union-fp-int.ll vendor/llvm/dist/test/Transforms/ScalarRepl/union-packed.ll vendor/llvm/dist/test/Transforms/ScalarRepl/union-pointer.ll vendor/llvm/dist/test/Transforms/ScalarRepl/vector_memcpy.ll vendor/llvm/dist/test/Transforms/ScalarRepl/vector_promote.ll vendor/llvm/dist/test/Transforms/ScalarRepl/vectors-with-mismatched-elements.ll vendor/llvm/dist/test/Transforms/ScalarRepl/volatile.ll vendor/llvm/dist/test/Transforms/Scalarizer/basic.ll vendor/llvm/dist/test/Transforms/Scalarizer/dbginfo.ll vendor/llvm/dist/test/Transforms/SeparateConstOffsetFromGEP/NVPTX/split-gep-and-gvn.ll vendor/llvm/dist/test/Transforms/SeparateConstOffsetFromGEP/NVPTX/split-gep.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/2003-08-17-FoldSwitch-dbg.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/2005-06-16-PHICrash.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/2005-08-01-PHIUpdateFail.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/2005-12-03-IncorrectPHIFold.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/2006-08-03-Crash.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/2006-12-08-Ptr-ICmp-Branch.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/2007-11-22-InvokeNoUnwind.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/2007-12-21-Crash.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/2008-01-02-hoist-fp-add.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/2008-07-13-InfLoopMiscompile.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/2008-09-08-MultiplePred.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/2008-12-16-DCECond.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/2009-05-12-externweak.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/EmptyBlockMerge.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/MagicPointer.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/PR17073.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/PhiBlockMerge.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/SpeculativeExec.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/UnreachableEliminate.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/X86/switch-covered-bug.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/X86/switch-table-bug.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/X86/switch_to_lookup_table.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/attr-noduplicate.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/basictest.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/branch-fold-dbg.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/branch-fold-threshold.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/branch-phi-thread.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/common-dest-folding.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/dbginfo.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/hoist-common-code.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/hoist-dbgvalue.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/hoist-with-range.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/indirectbr.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/iterative-simplify.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/multiple-phis.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/no_speculative_loads_with_tsan.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/phi-undef-loadstore.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/preserve-branchweights.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/select-gep.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/speculate-store.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/speculate-with-offset.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/switch-range-to-icmp.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/switch-to-select-multiple-edge-per-block-phi.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/switch-to-select-two-case.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/switch_create.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/trap-debugloc.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/trapping-load-unreachable.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/unreachable-blocks.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/volatile-phioper.ll vendor/llvm/dist/test/Transforms/Sink/basic.ll vendor/llvm/dist/test/Transforms/StripSymbols/2010-06-30-StripDebug.ll vendor/llvm/dist/test/Transforms/StripSymbols/2010-08-25-crash.ll vendor/llvm/dist/test/Transforms/StripSymbols/strip-dead-debug-info.ll vendor/llvm/dist/test/Transforms/StructurizeCFG/branch-on-argument.ll vendor/llvm/dist/test/Transforms/StructurizeCFG/loop-multiple-exits.ll vendor/llvm/dist/test/Transforms/StructurizeCFG/one-loop-multiple-backedges.ll vendor/llvm/dist/test/Transforms/TailCallElim/basic.ll vendor/llvm/dist/test/Transforms/TailCallElim/dont_reorder_load.ll vendor/llvm/dist/test/Transforms/TailCallElim/inf-recursion.ll vendor/llvm/dist/test/Transforms/TailCallElim/reorder_load.ll vendor/llvm/dist/test/Transforms/TailDup/2008-06-11-AvoidDupLoopHeader.ll vendor/llvm/dist/test/Transforms/Util/lowerswitch.ll vendor/llvm/dist/test/Verifier/2002-11-05-GetelementptrPointers.ll vendor/llvm/dist/test/Verifier/2006-10-15-AddrLabel.ll vendor/llvm/dist/test/Verifier/2008-01-11-VarargAttrs.ll vendor/llvm/dist/test/Verifier/2008-03-01-AllocaSized.ll vendor/llvm/dist/test/Verifier/2010-08-07-PointerIntrinsic.ll vendor/llvm/dist/test/Verifier/bitcast-address-space-through-constant-inttoptr-inside-gep-instruction.ll vendor/llvm/dist/test/Verifier/bitcast-address-space-through-gep-2.ll vendor/llvm/dist/test/Verifier/bitcast-address-space-through-gep.ll vendor/llvm/dist/test/Verifier/inalloca-vararg.ll vendor/llvm/dist/test/Verifier/musttail-invalid.ll vendor/llvm/dist/test/Verifier/musttail-valid.ll vendor/llvm/dist/test/Verifier/range-1.ll vendor/llvm/dist/test/Verifier/range-2.ll vendor/llvm/dist/test/Verifier/statepoint.ll vendor/llvm/dist/test/Verifier/varargs-intrinsic.ll vendor/llvm/dist/test/lit.cfg vendor/llvm/dist/test/lit.site.cfg.in vendor/llvm/dist/test/tools/dsymutil/debug-map-parsing.test vendor/llvm/dist/test/tools/gold/alias.ll vendor/llvm/dist/test/tools/gold/bad-alias.ll vendor/llvm/dist/test/tools/gold/bcsection.ll vendor/llvm/dist/test/tools/gold/coff.ll vendor/llvm/dist/test/tools/gold/comdat.ll vendor/llvm/dist/test/tools/gold/common.ll vendor/llvm/dist/test/tools/gold/emit-llvm.ll vendor/llvm/dist/test/tools/gold/invalid.ll vendor/llvm/dist/test/tools/gold/linker-script.ll vendor/llvm/dist/test/tools/gold/linkonce-weak.ll vendor/llvm/dist/test/tools/gold/mtriple.ll vendor/llvm/dist/test/tools/gold/no-map-whole-file.ll vendor/llvm/dist/test/tools/gold/pr19901.ll vendor/llvm/dist/test/tools/gold/slp-vectorize.ll vendor/llvm/dist/test/tools/gold/stats.ll vendor/llvm/dist/test/tools/gold/vectorize.ll vendor/llvm/dist/test/tools/gold/weak.ll vendor/llvm/dist/test/tools/llvm-cov/Inputs/highlightedRanges.covmapping vendor/llvm/dist/test/tools/llvm-cov/Inputs/regionMarkers.covmapping vendor/llvm/dist/test/tools/llvm-cov/Inputs/report.covmapping vendor/llvm/dist/test/tools/llvm-cov/Inputs/showExpansions.covmapping vendor/llvm/dist/test/tools/llvm-cov/copy_block_helper.m vendor/llvm/dist/test/tools/llvm-cov/lit.local.cfg vendor/llvm/dist/test/tools/llvm-cov/llvm-cov.test vendor/llvm/dist/test/tools/llvm-cov/range_based_for.cpp vendor/llvm/dist/test/tools/llvm-cov/report.cpp vendor/llvm/dist/test/tools/llvm-cov/showExpansions.cpp vendor/llvm/dist/test/tools/llvm-cov/showHighlightedRanges.cpp vendor/llvm/dist/test/tools/llvm-cov/showLineExecutionCounts.cpp vendor/llvm/dist/test/tools/llvm-cov/showRegionMarkers.cpp vendor/llvm/dist/test/tools/llvm-cov/showTemplateInstantiations.cpp vendor/llvm/dist/test/tools/llvm-objdump/X86/macho-private-headers.test vendor/llvm/dist/test/tools/llvm-objdump/X86/macho-symbolized-disassembly.test vendor/llvm/dist/test/tools/llvm-objdump/X86/macho-universal-x86_64.i386.test vendor/llvm/dist/test/tools/llvm-profdata/general.proftext vendor/llvm/dist/test/tools/llvm-profdata/raw-magic-but-no-header.test vendor/llvm/dist/test/tools/llvm-readobj/Inputs/trivial.ll vendor/llvm/dist/test/tools/llvm-readobj/codeview-linetables.test vendor/llvm/dist/test/tools/llvm-readobj/program-headers.test vendor/llvm/dist/tools/CMakeLists.txt vendor/llvm/dist/tools/LLVMBuild.txt vendor/llvm/dist/tools/Makefile vendor/llvm/dist/tools/bugpoint-passes/TestPasses.cpp vendor/llvm/dist/tools/bugpoint/BugDriver.cpp vendor/llvm/dist/tools/bugpoint/CMakeLists.txt vendor/llvm/dist/tools/bugpoint/CrashDebugger.cpp vendor/llvm/dist/tools/bugpoint/ExtractFunction.cpp vendor/llvm/dist/tools/bugpoint/Miscompilation.cpp vendor/llvm/dist/tools/bugpoint/OptimizerDriver.cpp vendor/llvm/dist/tools/bugpoint/ToolRunner.h vendor/llvm/dist/tools/bugpoint/bugpoint.cpp vendor/llvm/dist/tools/dsymutil/CMakeLists.txt vendor/llvm/dist/tools/dsymutil/DebugMap.cpp vendor/llvm/dist/tools/dsymutil/DebugMap.h vendor/llvm/dist/tools/dsymutil/DwarfLinker.cpp vendor/llvm/dist/tools/dsymutil/LLVMBuild.txt vendor/llvm/dist/tools/dsymutil/MachODebugMapParser.cpp vendor/llvm/dist/tools/dsymutil/Makefile vendor/llvm/dist/tools/dsymutil/dsymutil.cpp vendor/llvm/dist/tools/dsymutil/dsymutil.h vendor/llvm/dist/tools/gold/CMakeLists.txt vendor/llvm/dist/tools/gold/gold-plugin.cpp vendor/llvm/dist/tools/llc/CMakeLists.txt vendor/llvm/dist/tools/llc/llc.cpp vendor/llvm/dist/tools/lli/CMakeLists.txt vendor/llvm/dist/tools/lli/LLVMBuild.txt vendor/llvm/dist/tools/lli/Makefile vendor/llvm/dist/tools/lli/RemoteMemoryManager.cpp vendor/llvm/dist/tools/lli/RemoteMemoryManager.h vendor/llvm/dist/tools/lli/RemoteTargetExternal.h vendor/llvm/dist/tools/lli/lli.cpp vendor/llvm/dist/tools/llvm-ar/llvm-ar.cpp vendor/llvm/dist/tools/llvm-as/llvm-as.cpp vendor/llvm/dist/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp vendor/llvm/dist/tools/llvm-config/CMakeLists.txt vendor/llvm/dist/tools/llvm-config/llvm-config.cpp vendor/llvm/dist/tools/llvm-cov/CMakeLists.txt vendor/llvm/dist/tools/llvm-cov/CodeCoverage.cpp vendor/llvm/dist/tools/llvm-cov/CoverageReport.cpp vendor/llvm/dist/tools/llvm-cov/CoverageReport.h vendor/llvm/dist/tools/llvm-cov/CoverageSummaryInfo.cpp vendor/llvm/dist/tools/llvm-cov/CoverageSummaryInfo.h vendor/llvm/dist/tools/llvm-cov/RenderingSupport.h vendor/llvm/dist/tools/llvm-cov/SourceCoverageView.cpp vendor/llvm/dist/tools/llvm-cov/SourceCoverageView.h vendor/llvm/dist/tools/llvm-cov/gcov.cpp vendor/llvm/dist/tools/llvm-cov/llvm-cov.cpp vendor/llvm/dist/tools/llvm-dis/llvm-dis.cpp vendor/llvm/dist/tools/llvm-dwarfdump/CMakeLists.txt vendor/llvm/dist/tools/llvm-dwarfdump/LLVMBuild.txt vendor/llvm/dist/tools/llvm-dwarfdump/Makefile vendor/llvm/dist/tools/llvm-dwarfdump/llvm-dwarfdump.cpp vendor/llvm/dist/tools/llvm-extract/llvm-extract.cpp vendor/llvm/dist/tools/llvm-go/llvm-go.go vendor/llvm/dist/tools/llvm-jitlistener/Makefile vendor/llvm/dist/tools/llvm-jitlistener/llvm-jitlistener.cpp vendor/llvm/dist/tools/llvm-link/llvm-link.cpp vendor/llvm/dist/tools/llvm-lto/llvm-lto.cpp vendor/llvm/dist/tools/llvm-mc/CMakeLists.txt vendor/llvm/dist/tools/llvm-mc/llvm-mc.cpp vendor/llvm/dist/tools/llvm-nm/llvm-nm.cpp vendor/llvm/dist/tools/llvm-objdump/CMakeLists.txt vendor/llvm/dist/tools/llvm-objdump/LLVMBuild.txt vendor/llvm/dist/tools/llvm-objdump/MachODump.cpp vendor/llvm/dist/tools/llvm-objdump/Makefile vendor/llvm/dist/tools/llvm-objdump/llvm-objdump.cpp vendor/llvm/dist/tools/llvm-objdump/llvm-objdump.h vendor/llvm/dist/tools/llvm-profdata/llvm-profdata.cpp vendor/llvm/dist/tools/llvm-readobj/COFFDumper.cpp vendor/llvm/dist/tools/llvm-readobj/ELFDumper.cpp vendor/llvm/dist/tools/llvm-readobj/MachODumper.cpp vendor/llvm/dist/tools/llvm-readobj/ObjDumper.h vendor/llvm/dist/tools/llvm-readobj/StreamWriter.h vendor/llvm/dist/tools/llvm-readobj/llvm-readobj.cpp vendor/llvm/dist/tools/llvm-readobj/llvm-readobj.h vendor/llvm/dist/tools/llvm-rtdyld/CMakeLists.txt vendor/llvm/dist/tools/llvm-rtdyld/Makefile vendor/llvm/dist/tools/llvm-rtdyld/llvm-rtdyld.cpp vendor/llvm/dist/tools/llvm-shlib/CMakeLists.txt vendor/llvm/dist/tools/llvm-size/llvm-size.cpp vendor/llvm/dist/tools/llvm-stress/CMakeLists.txt vendor/llvm/dist/tools/llvm-stress/llvm-stress.cpp vendor/llvm/dist/tools/llvm-symbolizer/CMakeLists.txt vendor/llvm/dist/tools/llvm-symbolizer/LLVMSymbolize.cpp vendor/llvm/dist/tools/llvm-symbolizer/LLVMSymbolize.h vendor/llvm/dist/tools/llvm-symbolizer/Makefile vendor/llvm/dist/tools/llvm-symbolizer/llvm-symbolizer.cpp vendor/llvm/dist/tools/lto/lto.cpp vendor/llvm/dist/tools/lto/lto.exports vendor/llvm/dist/tools/obj2yaml/elf2yaml.cpp vendor/llvm/dist/tools/opt/BreakpointPrinter.cpp vendor/llvm/dist/tools/opt/CMakeLists.txt vendor/llvm/dist/tools/opt/LLVMBuild.txt vendor/llvm/dist/tools/opt/Makefile vendor/llvm/dist/tools/opt/NewPMDriver.cpp vendor/llvm/dist/tools/opt/NewPMDriver.h vendor/llvm/dist/tools/opt/opt.cpp vendor/llvm/dist/tools/verify-uselistorder/verify-uselistorder.cpp vendor/llvm/dist/tools/yaml2obj/yaml2coff.cpp vendor/llvm/dist/tools/yaml2obj/yaml2elf.cpp vendor/llvm/dist/tools/yaml2obj/yaml2obj.cpp vendor/llvm/dist/unittests/ADT/APFloatTest.cpp vendor/llvm/dist/unittests/ADT/APIntTest.cpp vendor/llvm/dist/unittests/ADT/APSIntTest.cpp vendor/llvm/dist/unittests/ADT/ArrayRefTest.cpp vendor/llvm/dist/unittests/ADT/DAGDeltaAlgorithmTest.cpp vendor/llvm/dist/unittests/ADT/DeltaAlgorithmTest.cpp vendor/llvm/dist/unittests/ADT/DenseMapTest.cpp vendor/llvm/dist/unittests/ADT/HashingTest.cpp vendor/llvm/dist/unittests/ADT/MapVectorTest.cpp vendor/llvm/dist/unittests/ADT/OptionalTest.cpp vendor/llvm/dist/unittests/ADT/PointerIntPairTest.cpp vendor/llvm/dist/unittests/ADT/SCCIteratorTest.cpp vendor/llvm/dist/unittests/ADT/SmallVectorTest.cpp vendor/llvm/dist/unittests/ADT/StringMapTest.cpp vendor/llvm/dist/unittests/ADT/TinyPtrVectorTest.cpp vendor/llvm/dist/unittests/ADT/TripleTest.cpp vendor/llvm/dist/unittests/ADT/TwineTest.cpp vendor/llvm/dist/unittests/ADT/ilistTest.cpp vendor/llvm/dist/unittests/Analysis/CFGTest.cpp vendor/llvm/dist/unittests/Analysis/CMakeLists.txt vendor/llvm/dist/unittests/Analysis/MixedTBAATest.cpp vendor/llvm/dist/unittests/Analysis/ScalarEvolutionTest.cpp vendor/llvm/dist/unittests/Bitcode/BitReaderTest.cpp vendor/llvm/dist/unittests/CMakeLists.txt vendor/llvm/dist/unittests/CodeGen/DIEHashTest.cpp vendor/llvm/dist/unittests/DebugInfo/CMakeLists.txt vendor/llvm/dist/unittests/DebugInfo/Makefile vendor/llvm/dist/unittests/ExecutionEngine/CMakeLists.txt vendor/llvm/dist/unittests/ExecutionEngine/ExecutionEngineTest.cpp vendor/llvm/dist/unittests/ExecutionEngine/MCJIT/MCJITCAPITest.cpp vendor/llvm/dist/unittests/ExecutionEngine/MCJIT/MCJITMultipleModuleTest.cpp vendor/llvm/dist/unittests/ExecutionEngine/MCJIT/MCJITObjectCacheTest.cpp vendor/llvm/dist/unittests/ExecutionEngine/MCJIT/MCJITTest.cpp vendor/llvm/dist/unittests/ExecutionEngine/MCJIT/MCJITTestBase.h vendor/llvm/dist/unittests/ExecutionEngine/Makefile vendor/llvm/dist/unittests/IR/ConstantRangeTest.cpp vendor/llvm/dist/unittests/IR/ConstantsTest.cpp vendor/llvm/dist/unittests/IR/DebugInfoTest.cpp vendor/llvm/dist/unittests/IR/DominatorTreeTest.cpp vendor/llvm/dist/unittests/IR/IRBuilderTest.cpp vendor/llvm/dist/unittests/IR/InstructionsTest.cpp vendor/llvm/dist/unittests/IR/LegacyPassManagerTest.cpp vendor/llvm/dist/unittests/IR/MetadataTest.cpp vendor/llvm/dist/unittests/IR/UseTest.cpp vendor/llvm/dist/unittests/IR/ValueHandleTest.cpp vendor/llvm/dist/unittests/IR/ValueMapTest.cpp vendor/llvm/dist/unittests/LineEditor/LineEditor.cpp vendor/llvm/dist/unittests/Linker/LinkModulesTest.cpp vendor/llvm/dist/unittests/Makefile vendor/llvm/dist/unittests/Option/OptionParsingTest.cpp vendor/llvm/dist/unittests/Option/Opts.td vendor/llvm/dist/unittests/Support/AlignOfTest.cpp vendor/llvm/dist/unittests/Support/AllocatorTest.cpp vendor/llvm/dist/unittests/Support/BlockFrequencyTest.cpp vendor/llvm/dist/unittests/Support/CMakeLists.txt vendor/llvm/dist/unittests/Support/Casting.cpp vendor/llvm/dist/unittests/Support/CommandLineTest.cpp vendor/llvm/dist/unittests/Support/ConvertUTFTest.cpp vendor/llvm/dist/unittests/Support/ErrorOrTest.cpp vendor/llvm/dist/unittests/Support/Makefile vendor/llvm/dist/unittests/Support/MathExtrasTest.cpp vendor/llvm/dist/unittests/Support/MemoryBufferTest.cpp vendor/llvm/dist/unittests/Support/Path.cpp vendor/llvm/dist/unittests/Support/ScaledNumberTest.cpp vendor/llvm/dist/unittests/Support/SpecialCaseListTest.cpp vendor/llvm/dist/unittests/Support/StreamingMemoryObject.cpp vendor/llvm/dist/unittests/Support/SwapByteOrderTest.cpp vendor/llvm/dist/unittests/Support/YAMLIOTest.cpp vendor/llvm/dist/unittests/Support/YAMLParserTest.cpp vendor/llvm/dist/unittests/Support/raw_ostream_test.cpp vendor/llvm/dist/unittests/Transforms/CMakeLists.txt vendor/llvm/dist/unittests/Transforms/Makefile vendor/llvm/dist/unittests/Transforms/Utils/CMakeLists.txt vendor/llvm/dist/unittests/Transforms/Utils/Cloning.cpp vendor/llvm/dist/utils/FileCheck/FileCheck.cpp vendor/llvm/dist/utils/KillTheDoctor/KillTheDoctor.cpp vendor/llvm/dist/utils/Makefile vendor/llvm/dist/utils/TableGen/AsmMatcherEmitter.cpp vendor/llvm/dist/utils/TableGen/AsmWriterEmitter.cpp vendor/llvm/dist/utils/TableGen/AsmWriterInst.cpp vendor/llvm/dist/utils/TableGen/AsmWriterInst.h vendor/llvm/dist/utils/TableGen/CallingConvEmitter.cpp vendor/llvm/dist/utils/TableGen/CodeEmitterGen.cpp vendor/llvm/dist/utils/TableGen/CodeGenDAGPatterns.cpp vendor/llvm/dist/utils/TableGen/CodeGenDAGPatterns.h vendor/llvm/dist/utils/TableGen/CodeGenIntrinsics.h vendor/llvm/dist/utils/TableGen/CodeGenMapTable.cpp vendor/llvm/dist/utils/TableGen/CodeGenRegisters.cpp vendor/llvm/dist/utils/TableGen/CodeGenRegisters.h vendor/llvm/dist/utils/TableGen/CodeGenSchedule.cpp vendor/llvm/dist/utils/TableGen/CodeGenTarget.cpp vendor/llvm/dist/utils/TableGen/DAGISelMatcher.h vendor/llvm/dist/utils/TableGen/DAGISelMatcherEmitter.cpp vendor/llvm/dist/utils/TableGen/DAGISelMatcherGen.cpp vendor/llvm/dist/utils/TableGen/DFAPacketizerEmitter.cpp vendor/llvm/dist/utils/TableGen/FixedLenDecoderEmitter.cpp vendor/llvm/dist/utils/TableGen/InstrInfoEmitter.cpp vendor/llvm/dist/utils/TableGen/IntrinsicEmitter.cpp vendor/llvm/dist/utils/TableGen/PseudoLoweringEmitter.cpp vendor/llvm/dist/utils/TableGen/RegisterInfoEmitter.cpp vendor/llvm/dist/utils/TableGen/SubtargetEmitter.cpp vendor/llvm/dist/utils/TableGen/X86DisassemblerShared.h vendor/llvm/dist/utils/TableGen/X86DisassemblerTables.cpp vendor/llvm/dist/utils/TableGen/X86RecognizableInstr.cpp vendor/llvm/dist/utils/emacs/emacs.el vendor/llvm/dist/utils/emacs/llvm-mode.el vendor/llvm/dist/utils/git-svn/git-svnrevert vendor/llvm/dist/utils/lit/lit/LitConfig.py vendor/llvm/dist/utils/lit/lit/Test.py vendor/llvm/dist/utils/lit/lit/TestRunner.py vendor/llvm/dist/utils/lit/lit/formats/googletest.py vendor/llvm/dist/utils/lit/lit/main.py vendor/llvm/dist/utils/lit/utils/check-coverage vendor/llvm/dist/utils/lldbDataFormatters.py vendor/llvm/dist/utils/release/export.sh vendor/llvm/dist/utils/release/test-release.sh vendor/llvm/dist/utils/shuffle_fuzz.py vendor/llvm/dist/utils/sort_includes.py vendor/llvm/dist/utils/unittest/CMakeLists.txt vendor/llvm/dist/utils/unittest/UnitTestMain/TestMain.cpp vendor/llvm/dist/utils/unittest/googletest/include/gtest/gtest-spi.h vendor/llvm/dist/utils/unittest/googletest/include/gtest/gtest-test-part.h vendor/llvm/dist/utils/unittest/googletest/include/gtest/gtest.h vendor/llvm/dist/utils/unittest/googletest/include/gtest/internal/gtest-death-test-internal.h vendor/llvm/dist/utils/unittest/googletest/include/gtest/internal/gtest-internal.h vendor/llvm/dist/utils/unittest/googletest/include/gtest/internal/gtest-param-util-generated.h vendor/llvm/dist/utils/unittest/googletest/include/gtest/internal/gtest-param-util.h vendor/llvm/dist/utils/unittest/googletest/include/gtest/internal/gtest-port.h vendor/llvm/dist/utils/unittest/googletest/src/gtest-death-test.cc vendor/llvm/dist/utils/unittest/googletest/src/gtest-internal-inl.h vendor/llvm/dist/utils/unittest/googletest/src/gtest.cc vendor/llvm/dist/utils/update_llc_test_checks.py vendor/llvm/dist/utils/vim/README vendor/llvm/dist/utils/yaml-bench/YAMLBench.cpp Modified: vendor/llvm/dist/.gitignore ============================================================================== --- vendor/llvm/dist/.gitignore Wed May 27 18:11:05 2015 (r283624) +++ vendor/llvm/dist/.gitignore Wed May 27 18:44:32 2015 (r283625) @@ -16,7 +16,7 @@ # Byte compiled python modules. *.pyc # vim swap files -.*.swp +.*.sw? .sw? #OS X specific files. .DS_store @@ -37,7 +37,7 @@ cscope.files cscope.out autoconf/aclocal.m4 autoconf/autom4te.cache -compile_commands.json +/compile_commands.json #==============================================================================# # Directories to ignore (do not add trailing '/'s, they skip symlinks). Modified: vendor/llvm/dist/CMakeLists.txt ============================================================================== --- vendor/llvm/dist/CMakeLists.txt Wed May 27 18:11:05 2015 (r283624) +++ vendor/llvm/dist/CMakeLists.txt Wed May 27 18:44:32 2015 (r283625) @@ -1,19 +1,23 @@ # See docs/CMake.html for instructions about how to build LLVM with CMake. -cmake_minimum_required(VERSION 2.8.8) +cmake_minimum_required(VERSION 2.8.12.2) -# FIXME: It may be removed when we use 2.8.12. -if(CMAKE_VERSION VERSION_LESS 2.8.12) - # Invalidate a couple of keywords. - set(cmake_2_8_12_INTERFACE) - set(cmake_2_8_12_PRIVATE) -else() - # Use ${cmake_2_8_12_KEYWORD} intead of KEYWORD in target_link_libraries(). - set(cmake_2_8_12_INTERFACE INTERFACE) - set(cmake_2_8_12_PRIVATE PRIVATE) - if(POLICY CMP0022) - cmake_policy(SET CMP0022 NEW) # automatic when 2.8.12 is required - endif() +if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + message(STATUS "No build type selected, default to Debug") + set(CMAKE_BUILD_TYPE "Debug") +endif() + +if(POLICY CMP0022) + cmake_policy(SET CMP0022 NEW) # automatic when 2.8.12 is required +endif() + +if (POLICY CMP0051) + # CMake 3.1 and higher include generator expressions of the form + # $ in the SOURCES property. These need to be + # stripped everywhere that access the SOURCES property, so we just + # defer to the OLD behavior of not including generator expressions + # in the output for now. + cmake_policy(SET CMP0051 OLD) endif() if(CMAKE_VERSION VERSION_LESS 3.1.20141117) @@ -47,13 +51,17 @@ set(CMAKE_MODULE_PATH ) set(LLVM_VERSION_MAJOR 3) -set(LLVM_VERSION_MINOR 6) -set(LLVM_VERSION_PATCH 1) +set(LLVM_VERSION_MINOR 7) +set(LLVM_VERSION_PATCH 0) +set(LLVM_VERSION_SUFFIX svn) if (NOT PACKAGE_VERSION) - set(PACKAGE_VERSION "${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}") + set(PACKAGE_VERSION + "${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}${LLVM_VERSION_SUFFIX}") endif() +option(LLVM_INSTALL_UTILS "Include utility binaries in the 'install' target." OFF) + option(LLVM_INSTALL_TOOLCHAIN_ONLY "Only include toolchain files in the 'install' target." OFF) option(LLVM_USE_FOLDERS "Enable solution folders in Visual Studio. Disable for Express versions." ON) @@ -85,6 +93,7 @@ set(CPACK_PACKAGE_VERSION_MINOR ${LLVM_V set(CPACK_PACKAGE_VERSION_PATCH ${LLVM_VERSION_PATCH}) set(CPACK_PACKAGE_VERSION ${PACKAGE_VERSION}) set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.TXT") +set(CPACK_NSIS_COMPRESSOR "/SOLID lzma \r\n SetCompressorDictSize 32") if(WIN32 AND NOT UNIX) set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "LLVM") set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\cmake\\\\nsis_logo.bmp") @@ -96,6 +105,9 @@ if(WIN32 AND NOT UNIX) "ExecWait '$INSTDIR/tools/msbuild/install.bat'") set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "ExecWait '$INSTDIR/tools/msbuild/uninstall.bat'") + if( CMAKE_CL_64 ) + set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") + endif() endif() include(CPack) @@ -222,17 +234,11 @@ list(REMOVE_DUPLICATES LLVM_TARGETS_TO_B include(AddLLVMDefinitions) option(LLVM_ENABLE_PIC "Build Position-Independent Code" ON) - -# MSVC has a gazillion warnings with this. -if( MSVC ) - option(LLVM_ENABLE_WARNINGS "Enable compiler warnings." OFF) -else() - option(LLVM_ENABLE_WARNINGS "Enable compiler warnings." ON) -endif() - +option(LLVM_ENABLE_WARNINGS "Enable compiler warnings." ON) option(LLVM_ENABLE_MODULES "Compile with C++ modules enabled." OFF) option(LLVM_ENABLE_CXX1Y "Compile with C++1y enabled." OFF) option(LLVM_ENABLE_LIBCXX "Use libc++ if available." OFF) +option(LLVM_ENABLE_LIBCXXABI "Use libc++abi when using libc++." OFF) option(LLVM_ENABLE_PEDANTIC "Compile with pedantic enabled." ON) option(LLVM_ENABLE_WERROR "Fail and stop if a warning is triggered." OFF) @@ -242,6 +248,9 @@ else() option(LLVM_ENABLE_ASSERTIONS "Enable assertions" ON) endif() +set(LLVM_ABI_BREAKING_CHECKS "WITH_ASSERTS" CACHE STRING + "Enable abi-breaking checks. Can be WITH_ASSERTS, FORCE_ON or FORCE_OFF.") + option(LLVM_FORCE_USE_OLD_HOST_TOOLCHAIN "Set to ON to force using an old, unsupported host toolchain." OFF) @@ -325,11 +334,17 @@ option (LLVM_BUILD_EXTERNAL_COMPILER_RT "Build compiler-rt as an external project." OFF) option(LLVM_BUILD_LLVM_DYLIB "Build libllvm dynamic library" OFF) +option(LLVM_DYLIB_EXPORT_ALL "Export all symbols from libLLVM.dylib (default is C API only" OFF) option(LLVM_DISABLE_LLVM_DYLIB_ATEXIT "Disable llvm-shlib's atexit destructors." ON) if(LLVM_DISABLE_LLVM_DYLIB_ATEXIT) set(DISABLE_LLVM_DYLIB_ATEXIT 1) endif() +option(LLVM_OPTIMIZED_TABLEGEN "Force TableGen to be built with optimization" OFF) +if(CMAKE_CROSSCOMPILING OR (LLVM_OPTIMIZED_TABLEGEN AND LLVM_ENABLE_ASSERTIONS)) + set(LLVM_USE_HOST_TOOLS ON) +endif() + # All options referred to from HandleLLVMOptions have to be specified # BEFORE this include, otherwise options will not be correctly set on # first cmake run @@ -516,9 +531,9 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON) include_directories( ${LLVM_INCLUDE_DIR} ${LLVM_MAIN_INCLUDE_DIR}) # when crosscompiling import the executable targets from a file -if(CMAKE_CROSSCOMPILING) +if(LLVM_USE_HOST_TOOLS) include(CrossCompile) -endif(CMAKE_CROSSCOMPILING) +endif(LLVM_USE_HOST_TOOLS) if( ${CMAKE_SYSTEM_NAME} MATCHES FreeBSD ) # On FreeBSD, /usr/local/* is not used by default. In order to build LLVM @@ -532,7 +547,7 @@ if( ${CMAKE_SYSTEM_NAME} MATCHES SunOS ) endif( ${CMAKE_SYSTEM_NAME} MATCHES SunOS ) # Make sure we don't get -rdynamic in every binary. For those that need it, -# use set_target_properties(target PROPERTIES ENABLE_EXPORTS 1) +# use export_executable_symbols(target). set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "") include(AddLLVM) @@ -627,6 +642,7 @@ add_subdirectory(cmake/modules) if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) install(DIRECTORY include/llvm include/llvm-c DESTINATION include + COMPONENT llvm-headers FILES_MATCHING PATTERN "*.def" PATTERN "*.h" @@ -638,6 +654,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) install(DIRECTORY ${LLVM_INCLUDE_DIR}/llvm DESTINATION include + COMPONENT llvm-headers FILES_MATCHING PATTERN "*.def" PATTERN "*.h" @@ -648,4 +665,12 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) PATTERN "config.h" EXCLUDE PATTERN ".svn" EXCLUDE ) + + if (NOT CMAKE_CONFIGURATION_TYPES) + add_custom_target(installhdrs + DEPENDS ${name} + COMMAND "${CMAKE_COMMAND}" + -DCMAKE_INSTALL_COMPONENT=llvm-headers + -P "${CMAKE_BINARY_DIR}/cmake_install.cmake") + endif() endif() Modified: vendor/llvm/dist/CODE_OWNERS.TXT ============================================================================== --- vendor/llvm/dist/CODE_OWNERS.TXT Wed May 27 18:11:05 2015 (r283624) +++ vendor/llvm/dist/CODE_OWNERS.TXT Wed May 27 18:44:32 2015 (r283625) @@ -49,6 +49,10 @@ N: Peter Collingbourne E: peter@pcc.me.uk D: llgo +N: Quentin Colombet +E: qcolombet@apple.com +D: Register allocators + N: Anshuman Dasgupta E: adasgupt@codeaurora.org D: Hexagon Backend @@ -85,6 +89,10 @@ N: Lang Hames E: lhames@gmail.com D: MCJIT, RuntimeDyld and JIT event listeners +N: David Majnemer +E: david.majnemer@gmail.com +D: IR Constant Folder + N: Galina Kistanova E: gkistanova@gmail.com D: LLVM Buildbot @@ -116,7 +124,7 @@ D: SampleProfile and related parts of Pr N: Jakob Olesen E: stoklund@2pi.dk -D: Register allocators and TableGen +D: TableGen N: Richard Osborne E: richard@xmos.com @@ -126,6 +134,10 @@ N: Chad Rosier E: mcrosier@codeaurora.org D: Fast-Isel +N: Alex Rosenberg +E: alexr@leftfield.org +D: Sony PlayStation®4 support + N: Nadav Rotem E: nrotem@apple.com D: X86 Backend, Loop Vectorizer @@ -146,10 +158,14 @@ N: Michael Spencer E: bigcheesegs@gmail.com D: Windows parts of Support, Object, ar, nm, objdump, ranlib, size +N: Alexei Starovoitov +E: alexei.starovoitov@gmail.com +D: BPF backend + N: Tom Stellard E: thomas.stellard@amd.com E: mesa-dev@lists.freedesktop.org -D: Release manager for the 3.5 branch, R600 Backend, libclc +D: Release manager for the 3.5 and 3.6 branches, R600 Backend, libclc N: Evgeniy Stepanov E: eugenis@google.com @@ -170,3 +186,7 @@ D: libLTO, IR Linker N: Peter Zotov E: whitequark@whitequark.org D: OCaml bindings + +N: Andrey Churbanov +E: andrey.churbanov@intel.com +D: OpenMP runtime library Modified: vendor/llvm/dist/LICENSE.TXT ============================================================================== --- vendor/llvm/dist/LICENSE.TXT Wed May 27 18:11:05 2015 (r283624) +++ vendor/llvm/dist/LICENSE.TXT Wed May 27 18:44:32 2015 (r283625) @@ -4,7 +4,7 @@ LLVM Release License University of Illinois/NCSA Open Source License -Copyright (c) 2003-2014 University of Illinois at Urbana-Champaign. +Copyright (c) 2003-2015 University of Illinois at Urbana-Champaign. All rights reserved. Developed by: Modified: vendor/llvm/dist/Makefile.config.in ============================================================================== --- vendor/llvm/dist/Makefile.config.in Wed May 27 18:11:05 2015 (r283624) +++ vendor/llvm/dist/Makefile.config.in Wed May 27 18:44:32 2015 (r283625) @@ -58,6 +58,22 @@ LLVM_OBJ_ROOT := $(call realpath, @abs PROJ_SRC_ROOT := $(LLVM_SRC_ROOT) PROJ_SRC_DIR := $(LLVM_SRC_ROOT)$(patsubst $(PROJ_OBJ_ROOT)%,%,$(PROJ_OBJ_DIR)) +# FIXME: This is temporary during the grace period where in-source builds are +# deprecated. Convert to a hard error when that period is up. +# +# See: http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20150323/268067.html +ifeq ($(LLVM_SRC_ROOT), $(LLVM_OBJ_ROOT)) + $(warning ######################################################################################) + $(warning # #) + $(warning # WARNING #) + $(warning # #) + $(warning # In-source builds are deprecated. #) + $(warning # #) + $(warning # Please configure from a separate build directory! #) + $(warning # #) + $(warning ######################################################################################) +endif + ifneq ($(CLANG_SRC_ROOT),) CLANG_SRC_ROOT:= $(call realpath, $(CLANG_SRC_ROOT)) PROJ_SRC_DIR := $(patsubst $(LLVM_SRC_ROOT)/tools/clang%,$(CLANG_SRC_ROOT)%,$(PROJ_SRC_DIR)) @@ -293,6 +309,11 @@ ENABLE_TERMINFO = @ENABLE_TERMINFO@ #ENABLE_EXPENSIVE_CHECKS = 0 @ENABLE_EXPENSIVE_CHECKS@ +# --enable-abi-breaking-checks : decide whether we should compile in asserts and +# checks that make the build ABI incompatible with an llvm built without these +# checks enabled. +ENABLE_ABI_BREAKING_CHECKS = @ENABLE_ABI_BREAKING_CHECKS@ + # When DEBUG_RUNTIME is enabled, the runtime libraries will retain debug # symbols. #DEBUG_RUNTIME = 1 Modified: vendor/llvm/dist/Makefile.rules ============================================================================== --- vendor/llvm/dist/Makefile.rules Wed May 27 18:11:05 2015 (r283624) +++ vendor/llvm/dist/Makefile.rules Wed May 27 18:44:32 2015 (r283625) @@ -631,6 +631,9 @@ ifneq ($(HOST_OS), $(filter $(HOST_OS), ifneq ($(HOST_OS),Darwin) ifneq ($(HOST_ARCH),Mips) CXX.Flags += -ffunction-sections -fdata-sections + ifeq ($(HOST_OS),SunOS) + CXX.Flags += -falign-functions=8 + endif endif endif endif @@ -638,8 +641,12 @@ ifndef NO_DEAD_STRIP ifeq ($(HOST_OS),Darwin) LD.Flags += -Wl,-dead_strip else - ifneq ($(HOST_OS), $(filter $(HOST_OS), Cygwin MingW)) - LD.Flags += -Wl,--gc-sections + ifeq ($(HOST_OS),SunOS) + LD.Flags += -Wl,-z -Wl,discard-unused=sections + else + ifneq ($(HOST_OS), $(filter $(HOST_OS), Cygwin MingW)) + LD.Flags += -Wl,--gc-sections + endif endif endif endif Modified: vendor/llvm/dist/README.txt ============================================================================== --- vendor/llvm/dist/README.txt Wed May 27 18:11:05 2015 (r283624) +++ vendor/llvm/dist/README.txt Wed May 27 18:44:32 2015 (r283625) @@ -15,4 +15,3 @@ documentation setup. If you're writing a package for LLVM, see docs/Packaging.rst for our suggestions. - Modified: vendor/llvm/dist/autoconf/config.sub ============================================================================== --- vendor/llvm/dist/autoconf/config.sub Wed May 27 18:11:05 2015 (r283624) +++ vendor/llvm/dist/autoconf/config.sub Wed May 27 18:44:32 2015 (r283625) @@ -1354,7 +1354,7 @@ case $os in | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -bitrig*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1489,6 +1489,8 @@ case $os in ;; -nacl*) ;; + -ps4) + ;; -none) ;; *) Modified: vendor/llvm/dist/autoconf/configure.ac ============================================================================== --- vendor/llvm/dist/autoconf/configure.ac Wed May 27 18:11:05 2015 (r283624) +++ vendor/llvm/dist/autoconf/configure.ac Wed May 27 18:44:32 2015 (r283625) @@ -32,12 +32,12 @@ dnl===---------------------------------- dnl Initialize autoconf and define the package name, version number and dnl address for reporting bugs. -AC_INIT([LLVM],[3.6.1],[http://llvm.org/bugs/]) +AC_INIT([LLVM],[3.7.0svn],[http://llvm.org/bugs/]) LLVM_VERSION_MAJOR=3 -LLVM_VERSION_MINOR=6 -LLVM_VERSION_PATCH=1 -LLVM_VERSION_SUFFIX= +LLVM_VERSION_MINOR=7 +LLVM_VERSION_PATCH=0 +LLVM_VERSION_SUFFIX=svn AC_DEFINE_UNQUOTED([LLVM_VERSION_MAJOR], $LLVM_VERSION_MAJOR, [Major version of the LLVM API]) AC_DEFINE_UNQUOTED([LLVM_VERSION_MINOR], $LLVM_VERSION_MINOR, [Minor version of the LLVM API]) @@ -51,8 +51,8 @@ AC_SUBST([LLVM_VERSION_SUFFIX]) dnl Provide a copyright substitution and ensure the copyright notice is included dnl in the output of --version option of the generated configure script. -AC_SUBST(LLVM_COPYRIGHT,["Copyright (c) 2003-2014 University of Illinois at Urbana-Champaign."]) -AC_COPYRIGHT([Copyright (c) 2003-2014 University of Illinois at Urbana-Champaign.]) +AC_SUBST(LLVM_COPYRIGHT,["Copyright (c) 2003-2015 University of Illinois at Urbana-Champaign."]) +AC_COPYRIGHT([Copyright (c) 2003-2015 University of Illinois at Urbana-Champaign.]) dnl Indicate that we require autoconf 2.60 or later. AC_PREREQ(2.60) @@ -73,6 +73,19 @@ if test ${srcdir} != "." ; then fi fi +dnl Quit if it is an in-source build +if test ${srcdir} == "." ; then + AC_MSG_WARN([**************************************************************************************]) + AC_MSG_WARN([* *]) + AC_MSG_WARN([* WARNING *]) + AC_MSG_WARN([* *]) + AC_MSG_WARN([* In-source builds are deprecated. *]) + AC_MSG_WARN([* *]) + AC_MSG_WARN([* Please configure from a separate build directory! *]) + AC_MSG_WARN([* *]) + AC_MSG_WARN([**************************************************************************************]) +fi + dnl Default to empty (i.e. assigning the null string to) CFLAGS and CXXFLAGS, dnl instead of the autoconf default (for example, '-g -O2' for CC=gcc). : ${CFLAGS=} @@ -105,7 +118,7 @@ if test "$CXX" = "clang++" ; then ], [ AC_MSG_RESULT([no]) - AC_MSG_ERROR([Selected compiler could not find or parse C++ standard library headers. Rerun with CC=c-compiler CXX=c++-compiler ./configure ...]) + AC_MSG_ERROR([Selected compiler could not find or parse C++ standard library headers. Rerun with CC=c-compiler CXX=c++-compiler LLVM_SRC_DIR/configure ...]) ]) AC_LANG_POP([C++]) fi @@ -267,6 +280,11 @@ AC_CACHE_CHECK([type of operating system llvm_cv_no_link_all_option="-Wl,--no-whole-archive" llvm_cv_os_type="DragonFly" llvm_cv_platform_type="Unix" ;; + *-*-bitrig*) + llvm_cv_link_all_option="-Wl,--whole-archive" + llvm_cv_no_link_all_option="-Wl,--no-whole-archive" + llvm_cv_os_type="Bitrig" + llvm_cv_platform_type="Unix" ;; *-*-hpux*) llvm_cv_link_all_option="-Wl,--whole-archive" llvm_cv_no_link_all_option="-Wl,--no-whole-archive" @@ -347,6 +365,8 @@ AC_CACHE_CHECK([type of operating system llvm_cv_target_os_type="NetBSD" ;; *-*-dragonfly*) llvm_cv_target_os_type="DragonFly" ;; + *-*-bitrig*) + llvm_cv_target_os_type="Bitrig" ;; *-*-hpux*) llvm_cv_target_os_type="HP-UX" ;; *-*-interix*) @@ -369,6 +389,8 @@ AC_CACHE_CHECK([type of operating system llvm_cv_target_os_type="NativeClient" ;; *-unknown-eabi*) llvm_cv_target_os_type="Freestanding" ;; + *-*-ps4) + llvm_cv_target_os_type="PS4" ;; *) llvm_cv_target_os_type="Unknown" ;; esac]) @@ -692,8 +714,10 @@ AC_ARG_ENABLE(assertions,AS_HELP_STRING( --enable-assertions,[Compile with assertion checks enabled (default is YES)]),, enableval="yes") if test ${enableval} = "yes" ; then AC_SUBST(DISABLE_ASSERTIONS,[[]]) + assertions_enabled="yes" else AC_SUBST(DISABLE_ASSERTIONS,[[DISABLE_ASSERTIONS=1]]) + assertions_enabled="no" fi dnl --enable-werror : check whether we want Werror on by default @@ -717,6 +741,28 @@ else AC_SUBST(EXPENSIVE_CHECKS,[[no]]) fi +dnl --enable-abi-breaking-checks : decide whether we should compile in asserts and +dnl checks that make the build ABI incompatible with an llvm built without these +dnl checks enabled. +AC_ARG_ENABLE(abi-breaking-checks,AS_HELP_STRING( + --enable-abi-breaking-checks,[Compile with abi-breaking asserts support (default is with-asserts)]),, enableval="with-asserts") +case "$enableval" in + with-asserts) if test ${assertions_enabled} = "yes" ; then + AC_DEFINE([LLVM_ENABLE_ABI_BREAKING_CHECKS],[1],[Define to enable checks that alter the LLVM C++ ABI]) + AC_SUBST(ENABLE_ABI_BREAKING_CHECKS,[1]) + else + AC_SUBST(ENABLE_ABI_BREAKING_CHECKS,[0]) + fi ;; + yes) + AC_DEFINE([LLVM_ENABLE_ABI_BREAKING_CHECKS],[1],[Define to enable checks that alter the LLVM C++ ABI]) + AC_SUBST(ENABLE_ABI_BREAKING_CHECKS,[1]) + ;; + no) + AC_SUBST(ENABLE_ABI_BREAKING_CHECKS,[0]) + ;; + *) AC_MSG_ERROR([Invalid setting for --enable-abi-breaking-checks. Use "with-asserts", "yes" or "no"]) +esac + dnl --enable-debug-runtime : should runtime libraries have debug symbols? AC_ARG_ENABLE(debug-runtime, AS_HELP_STRING(--enable-debug-runtime,[Build runtime libs with debug symbols (default is NO)]),,enableval=no) @@ -792,11 +838,139 @@ AC_ARG_ENABLE(doxygen, enableval=default) case "$enableval" in yes) AC_SUBST(ENABLE_DOXYGEN,[1]) ;; - no) AC_SUBST(ENABLE_DOXYGEN,[0]) ;; - default) AC_SUBST(ENABLE_DOXYGEN,[0]) ;; + no|default) AC_SUBST(ENABLE_DOXYGEN,[0]) ;; *) AC_MSG_ERROR([Invalid setting for --enable-doxygen. Use "yes" or "no"]) ;; esac +dnl Allow enablement of doxygen search engine +AC_ARG_ENABLE(doxygen-search, + AS_HELP_STRING([--enable-doxygen-search], + [Enable doxygen search support (default is NO)]),, + enableval=default) +ENABLE_DOXYGEN_SEARCH="$enableval" + +case "$enableval" in + yes|no|default) ;; + *) AC_MSG_ERROR([Invalid setting for --enable-doxygen-search. Use "yes" or "no"]) ;; +esac + +AC_ARG_ENABLE(doxygen-external-search, + AS_HELP_STRING([--enable-doxygen-external-search], + [Enable doxygen exteranl search (default is NO)]),, + enableval=default) +ENABLE_DOXYGEN_EXTERNAL_SEARCH="$enableval" + +case "$enableval" in + yes) + dnl To match with the CMake behavior, enable doxygen when + dnl --enable-doxygen-external-search is enabled. + case "$ENABLE_DOXYGEN_SEARCH" in + yes|default) ENABLE_DOXYGEN_SEARCH="yes" ;; + no) AC_MSG_ERROR([The option --enable-doxygen-external-search requires --enable-doxygen-search]) ;; + esac + ;; + no|default) ;; + *) AC_MSG_ERROR([Invalid setting for --enable-doxygen-external-search. Use "yes" or "no"]) ;; +esac + +AC_ARG_WITH(doxygen-search-engine-url, + AS_HELP_STRING([--with-doxygen-search-engine-url], + [Specify the external search engine for doxygen]),,) +WITH_DOXYGEN_SEARCH_ENGINE_URL="$withval" + +AC_ARG_WITH(doxygen-search-mappings, + AS_HELP_STRING([--with-doxygen-search-mappings], + [Specify the extra search mapping for doxygen]),,) +WITH_DOXYGEN_SEARCH_MAPPINGS="$withval" + +case "$ENABLE_DOXYGEN_SEARCH" in + yes) + if test "$ENABLE_DOXYGEN" = "0" ; then + AC_MSG_ERROR([The option --enable-doxygen-search requires --enable-doxygen.]) + fi + + AC_SUBST(enable_searchengine,[YES]) + + case "$ENABLE_DOXYGEN_EXTERNAL_SEARCH" in + yes) + AC_SUBST(enable_external_search,[YES]) + AC_SUBST(enable_server_based_search,[YES]) + AC_SUBST(searchengine_url,["$WITH_DOXYGEN_SEARCH_ENGINE_URL"]) + AC_SUBST(extra_search_mappings,["$WITH_DOXYGEN_SEARCH_MAPPINGS"]) + ;; + + no|default) + AC_SUBST(enable_external_search,[NO]) + AC_SUBST(enable_server_based_search,[NO]) + AC_SUBST(searchengine_url,[]) + AC_SUBST(extra_search_mappings,[]) + ;; + esac + ;; + + no|default) + AC_SUBST(enable_searchengine,[NO]) + AC_SUBST(searchengine_url,[]) + AC_SUBST(enable_server_based_search,[NO]) + AC_SUBST(enable_external_search,[NO]) + AC_SUBST(extra_search_mappings,[]) + ;; + + *) + AC_MSG_ERROR([Invalid setting for --enable-doxygen-search. Use "yes" or "no"]) + ;; +esac + +dnl Allow enablement of doxygen generated Qt help files +AC_ARG_ENABLE(doxygen-qt-help, + AS_HELP_STRING([--enable-doxygen-qt-help], + [Build Qt help files (default is NO)]),, + enableval=default) +case "$enableval" in + yes) + if test "$ENABLE_DOXYGEN" = "0" ; then + AC_MSG_ERROR([The option --enable-doxygen-qt-help requires --enable-doxygen.]) + fi + + AC_PATH_PROG(QHELPGENERATOR, [qhelpgenerator], [qhelpgenerator]) + + dnl Qt help file for llvm doxygen documentation + AC_SUBST(llvm_doxygen_generate_qhp,[YES]) + AC_SUBST(llvm_doxygen_qch_filename,[org.llvm.qch]) + AC_SUBST(llvm_doxygen_qhp_namespace,[org.llvm]) + AC_SUBST(llvm_doxygen_qhelpgenerator_path,["$QHELPGENERATOR"]) + AC_SUBST(llvm_doxygen_qhp_cust_filter_name,["$PACKAGE_STRING"]) + AC_SUBST(llvm_doxygen_qhp_cust_filter_attrs,["$PACKAGE_NAME,$PACKAGE_VERSION"]) + + dnl Qt help file for clang doxygen documentation + AC_SUBST(clang_doxygen_generate_qhp,[YES]) + AC_SUBST(clang_doxygen_qch_filename,[org.llvm.clang.qch]) + AC_SUBST(clang_doxygen_qhp_namespace,[org.llvm.clang]) + AC_SUBST(clang_doxygen_qhelpgenerator_path,["$QHELPGENERATOR"]) + AC_SUBST(clang_doxygen_qhp_cust_filter_name,["Clang $PACKAGE_VERSION"]) + AC_SUBST(clang_doxygen_qhp_cust_filter_attrs,["Clang,$PACKAGE_VERSION"]) + ;; + + no|default) + AC_SUBST(llvm_doxygen_generate_qhp,[NO]) + AC_SUBST(llvm_doxygen_qch_filename,[]) + AC_SUBST(llvm_doxygen_qhp_namespace,[]) + AC_SUBST(llvm_doxygen_qhelpgenerator_path,[]) + AC_SUBST(llvm_doxygen_qhp_cust_filter_name,[]) + AC_SUBST(llvm_doxygen_qhp_cust_filter_attrs,[]) + + AC_SUBST(clang_doxygen_generate_qhp,[NO]) + AC_SUBST(clang_doxygen_qch_filename,[]) + AC_SUBST(clang_doxygen_qhp_namespace,[]) + AC_SUBST(clang_doxygen_qhelpgenerator_path,[]) + AC_SUBST(clang_doxygen_qhp_cust_filter_name,["Clang $PACKAGE_VERSION"]) + AC_SUBST(clang_doxygen_qhp_cust_filter_attrs,["Clang,$PACKAGE_VERSION"]) + ;; + + *) + AC_MSG_ERROR([Invalid setting for --enable-doxygen-qt-help. Use "yes" or "no"]) ;; +esac + dnl Allow disablement of threads AC_ARG_ENABLE(threads, AS_HELP_STRING([--enable-threads], @@ -1533,11 +1707,11 @@ AC_ARG_WITH(oprofile, AC_SEARCH_LIBS(bfd_init, bfd, [], []) AC_SEARCH_LIBS(op_open_agent, opagent, [], [ echo "Error! You need to have libopagent around." - exit -1 + exit 1 ]) AC_CHECK_HEADER([opagent.h], [], [ echo "Error! You need to have opagent.h around." - exit -1 + exit 1 ]) fi ;; *) @@ -1690,9 +1864,7 @@ dnl=== SECTION 8: Check for specific fun dnl=== dnl===-----------------------------------------------------------------------=== -AC_CHECK_FUNCS([backtrace ceilf floorf roundf rintf nearbyintf getcwd ]) -AC_CHECK_FUNCS([powf fmodf strtof round ]) -AC_CHECK_FUNCS([log log2 log10 exp exp2]) +AC_CHECK_FUNCS([backtrace getcwd ]) AC_CHECK_FUNCS([getpagesize getrusage getrlimit setrlimit gettimeofday ]) AC_CHECK_FUNCS([isatty mkdtemp mkstemp ]) AC_CHECK_FUNCS([mktemp posix_spawn pread realpath sbrk setrlimit ]) @@ -1756,11 +1928,6 @@ if test "$llvm_cv_os_type" = "MingW" ; t AC_DEFINE_UNQUOTED([WIN32_ELMCB_PCSTR],$llvm_cv_win32_elmcb_pcstr,[Type of 1st arg on ELM Callback]) fi -dnl Check for variations in the Standard C++ library and STL. These macros are -dnl provided by LLVM in the autoconf/m4 directory. -AC_FUNC_ISNAN -AC_FUNC_ISINF - dnl Check for mmap support.We also need to know if /dev/zero is required to dnl be opened for allocating RWX memory. dnl Make sure we aren't attempting to configure for an unknown system Modified: vendor/llvm/dist/bindings/go/llvm/DIBuilderBindings.cpp ============================================================================== --- vendor/llvm/dist/bindings/go/llvm/DIBuilderBindings.cpp Wed May 27 18:11:05 2015 (r283624) +++ vendor/llvm/dist/bindings/go/llvm/DIBuilderBindings.cpp Wed May 27 18:44:32 2015 (r283625) @@ -12,22 +12,15 @@ //===----------------------------------------------------------------------===// #include "DIBuilderBindings.h" - #include "IRBindings.h" +#include "llvm/IR/DIBuilder.h" #include "llvm/IR/IRBuilder.h" #include "llvm/IR/Module.h" -#include "llvm/IR/DIBuilder.h" using namespace llvm; DEFINE_SIMPLE_CONVERSION_FUNCTIONS(DIBuilder, LLVMDIBuilderRef) -namespace { -template T unwrapDI(LLVMMetadataRef v) { - return v ? T(unwrap(v)) : T(); -} -} - LLVMDIBuilderRef LLVMNewDIBuilder(LLVMModuleRef mref) { Module *m = unwrap(mref); return wrap(new DIBuilder(*m)); @@ -47,16 +40,14 @@ LLVMMetadataRef LLVMDIBuilderCreateCompi int Optimized, const char *Flags, unsigned RuntimeVersion) { DIBuilder *D = unwrap(Dref); - DICompileUnit CU = D->createCompileUnit(Lang, File, Dir, Producer, Optimized, - Flags, RuntimeVersion); - return wrap(CU); + return wrap(D->createCompileUnit(Lang, File, Dir, Producer, Optimized, Flags, + RuntimeVersion)); } LLVMMetadataRef LLVMDIBuilderCreateFile(LLVMDIBuilderRef Dref, const char *File, const char *Dir) { DIBuilder *D = unwrap(Dref); - DIFile F = D->createFile(File, Dir); - return wrap(F); + return wrap(D->createFile(File, Dir)); } LLVMMetadataRef LLVMDIBuilderCreateLexicalBlock(LLVMDIBuilderRef Dref, @@ -65,8 +56,8 @@ LLVMMetadataRef LLVMDIBuilderCreateLexic unsigned Line, unsigned Column) { DIBuilder *D = unwrap(Dref); - DILexicalBlock LB = D->createLexicalBlock( - unwrapDI(Scope), unwrapDI(File), Line, Column); + auto *LB = D->createLexicalBlock(unwrap(Scope), + unwrap(File), Line, Column); return wrap(LB); } @@ -75,9 +66,8 @@ LLVMMetadataRef LLVMDIBuilderCreateLexic LLVMMetadataRef File, unsigned Discriminator) { DIBuilder *D = unwrap(Dref); - DILexicalBlockFile LBF = D->createLexicalBlockFile( - unwrapDI(Scope), unwrapDI(File), Discriminator); - return wrap(LBF); + return wrap(D->createLexicalBlockFile(unwrap(Scope), + unwrap(File), Discriminator)); } LLVMMetadataRef LLVMDIBuilderCreateFunction( @@ -86,11 +76,11 @@ LLVMMetadataRef LLVMDIBuilderCreateFunct LLVMMetadataRef CompositeType, int IsLocalToUnit, int IsDefinition, unsigned ScopeLine, unsigned Flags, int IsOptimized, LLVMValueRef Func) { DIBuilder *D = unwrap(Dref); - DISubprogram SP = D->createFunction( - unwrapDI(Scope), Name, LinkageName, unwrapDI(File), - Line, unwrapDI(CompositeType), IsLocalToUnit, - IsDefinition, ScopeLine, Flags, IsOptimized, unwrap(Func)); - return wrap(SP); + return wrap(D->createFunction(unwrap(Scope), Name, LinkageName, + File ? unwrap(File) : nullptr, Line, + unwrap(CompositeType), + IsLocalToUnit, IsDefinition, ScopeLine, Flags, + IsOptimized, unwrap(Func))); } LLVMMetadataRef LLVMDIBuilderCreateLocalVariable( @@ -98,10 +88,9 @@ LLVMMetadataRef LLVMDIBuilderCreateLocal const char *Name, LLVMMetadataRef File, unsigned Line, LLVMMetadataRef Ty, int AlwaysPreserve, unsigned Flags, unsigned ArgNo) { DIBuilder *D = unwrap(Dref); - DIVariable V = D->createLocalVariable( - Tag, unwrapDI(Scope), Name, unwrapDI(File), Line, - unwrapDI(Ty), AlwaysPreserve, Flags, ArgNo); - return wrap(V); + return wrap(D->createLocalVariable( + Tag, unwrap(Scope), Name, unwrap(File), Line, + unwrap(Ty), AlwaysPreserve, Flags, ArgNo)); } LLVMMetadataRef LLVMDIBuilderCreateBasicType(LLVMDIBuilderRef Dref, @@ -110,8 +99,7 @@ LLVMMetadataRef LLVMDIBuilderCreateBasic uint64_t AlignInBits, unsigned Encoding) { DIBuilder *D = unwrap(Dref); - DIBasicType T = D->createBasicType(Name, SizeInBits, AlignInBits, Encoding); - return wrap(T); + return wrap(D->createBasicType(Name, SizeInBits, AlignInBits, Encoding)); } LLVMMetadataRef LLVMDIBuilderCreatePointerType(LLVMDIBuilderRef Dref, @@ -120,18 +108,17 @@ LLVMMetadataRef LLVMDIBuilderCreatePoint uint64_t AlignInBits, const char *Name) { DIBuilder *D = unwrap(Dref); - DIDerivedType T = D->createPointerType(unwrapDI(PointeeType), - SizeInBits, AlignInBits, Name); - return wrap(T); + return wrap(D->createPointerType(unwrap(PointeeType), SizeInBits, + AlignInBits, Name)); } LLVMMetadataRef LLVMDIBuilderCreateSubroutineType(LLVMDIBuilderRef Dref, LLVMMetadataRef File, LLVMMetadataRef ParameterTypes) { DIBuilder *D = unwrap(Dref); - DICompositeType CT = D->createSubroutineType( - unwrapDI(File), unwrapDI(ParameterTypes)); - return wrap(CT); + return wrap( + D->createSubroutineType(File ? unwrap(File) : nullptr, + DITypeRefArray(unwrap(ParameterTypes)))); } LLVMMetadataRef LLVMDIBuilderCreateStructType( @@ -140,11 +127,22 @@ LLVMMetadataRef LLVMDIBuilderCreateStruc uint64_t AlignInBits, unsigned Flags, LLVMMetadataRef DerivedFrom, LLVMMetadataRef ElementTypes) { DIBuilder *D = unwrap(Dref); - DICompositeType CT = D->createStructType( - unwrapDI(Scope), Name, unwrapDI(File), Line, - SizeInBits, AlignInBits, Flags, unwrapDI(DerivedFrom), - unwrapDI(ElementTypes)); - return wrap(CT); + return wrap(D->createStructType( + unwrap(Scope), Name, File ? unwrap(File) : nullptr, Line, + SizeInBits, AlignInBits, Flags, + DerivedFrom ? unwrap(DerivedFrom) : nullptr, + ElementTypes ? DINodeArray(unwrap(ElementTypes)) : nullptr)); +} + +LLVMMetadataRef LLVMDIBuilderCreateReplaceableCompositeType( + LLVMDIBuilderRef Dref, unsigned Tag, const char *Name, + LLVMMetadataRef Scope, LLVMMetadataRef File, unsigned Line, + unsigned RuntimeLang, uint64_t SizeInBits, uint64_t AlignInBits, + unsigned Flags) { + DIBuilder *D = unwrap(Dref); + return wrap(D->createReplaceableCompositeType( + Tag, Name, unwrap(Scope), File ? unwrap(File) : nullptr, + Line, RuntimeLang, SizeInBits, AlignInBits, Flags)); } LLVMMetadataRef @@ -154,10 +152,9 @@ LLVMDIBuilderCreateMemberType(LLVMDIBuil uint64_t AlignInBits, uint64_t OffsetInBits, unsigned Flags, LLVMMetadataRef Ty) { DIBuilder *D = unwrap(Dref); - DIDerivedType DT = D->createMemberType( - unwrapDI(Scope), Name, unwrapDI(File), Line, - SizeInBits, AlignInBits, OffsetInBits, Flags, unwrapDI(Ty)); - return wrap(DT); + return wrap(D->createMemberType( + unwrap(Scope), Name, File ? unwrap(File) : nullptr, Line, + SizeInBits, AlignInBits, OffsetInBits, Flags, unwrap(Ty))); } LLVMMetadataRef LLVMDIBuilderCreateArrayType(LLVMDIBuilderRef Dref, @@ -166,10 +163,9 @@ LLVMMetadataRef LLVMDIBuilderCreateArray LLVMMetadataRef ElementType, LLVMMetadataRef Subscripts) { DIBuilder *D = unwrap(Dref); - DICompositeType CT = - D->createArrayType(SizeInBits, AlignInBits, unwrapDI(ElementType), - unwrapDI(Subscripts)); - return wrap(CT); + return wrap(D->createArrayType(SizeInBits, AlignInBits, + unwrap(ElementType), + DINodeArray(unwrap(Subscripts)))); } LLVMMetadataRef LLVMDIBuilderCreateTypedef(LLVMDIBuilderRef Dref, @@ -177,17 +173,15 @@ LLVMMetadataRef LLVMDIBuilderCreateTyped LLVMMetadataRef File, unsigned Line, LLVMMetadataRef Context) { DIBuilder *D = unwrap(Dref); - DIDerivedType DT = - D->createTypedef(unwrapDI(Ty), Name, unwrapDI(File), Line, - unwrapDI(Context)); - return wrap(DT); + return wrap(D->createTypedef(unwrap(Ty), Name, + File ? unwrap(File) : nullptr, Line, + Context ? unwrap(Context) : nullptr)); } LLVMMetadataRef LLVMDIBuilderGetOrCreateSubrange(LLVMDIBuilderRef Dref, int64_t Lo, int64_t Count) { DIBuilder *D = unwrap(Dref); - DISubrange S = D->getOrCreateSubrange(Lo, Count); - return wrap(S); + return wrap(D->getOrCreateSubrange(Lo, Count)); } LLVMMetadataRef LLVMDIBuilderGetOrCreateArray(LLVMDIBuilderRef Dref, @@ -196,8 +190,8 @@ LLVMMetadataRef LLVMDIBuilderGetOrCreate DIBuilder *D = unwrap(Dref); Metadata **DataValue = unwrap(Data); ArrayRef Elements(DataValue, Length); - DIArray A = D->getOrCreateArray(Elements); - return wrap(A); + DINodeArray A = D->getOrCreateArray(Elements); + return wrap(A.get()); } LLVMMetadataRef LLVMDIBuilderGetOrCreateTypeArray(LLVMDIBuilderRef Dref, @@ -206,15 +200,14 @@ LLVMMetadataRef LLVMDIBuilderGetOrCreate DIBuilder *D = unwrap(Dref); Metadata **DataValue = unwrap(Data); ArrayRef Elements(DataValue, Length); - DITypeArray A = D->getOrCreateTypeArray(Elements); - return wrap(A); + DITypeRefArray A = D->getOrCreateTypeArray(Elements); + return wrap(A.get()); } LLVMMetadataRef LLVMDIBuilderCreateExpression(LLVMDIBuilderRef Dref, int64_t *Addr, size_t Length) { DIBuilder *D = unwrap(Dref); - DIExpression Expr = D->createExpression(ArrayRef(Addr, Length)); - return wrap(Expr); + return wrap(D->createExpression(ArrayRef(Addr, Length))); } LLVMValueRef LLVMDIBuilderInsertDeclareAtEnd(LLVMDIBuilderRef Dref, @@ -222,10 +215,14 @@ LLVMValueRef LLVMDIBuilderInsertDeclareA LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMBasicBlockRef Block) { + // Fail immediately here until the llgo folks update their bindings. The + // called function is going to assert out anyway. + llvm_unreachable("DIBuilder API change requires a DebugLoc"); + DIBuilder *D = unwrap(Dref); - Instruction *Instr = - D->insertDeclare(unwrap(Storage), unwrapDI(VarInfo), - unwrapDI(Expr), unwrap(Block)); + Instruction *Instr = D->insertDeclare( + unwrap(Storage), unwrap(VarInfo), + unwrap(Expr), /* DebugLoc */ nullptr, unwrap(Block)); return wrap(Instr); } @@ -234,9 +231,13 @@ LLVMValueRef LLVMDIBuilderInsertValueAtE LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMBasicBlockRef Block) { + // Fail immediately here until the llgo folks update their bindings. The + // called function is going to assert out anyway. + llvm_unreachable("DIBuilder API change requires a DebugLoc"); + DIBuilder *D = unwrap(Dref); Instruction *Instr = D->insertDbgValueIntrinsic( - unwrap(Val), Offset, unwrapDI(VarInfo), - unwrapDI(Expr), unwrap(Block)); + unwrap(Val), Offset, unwrap(VarInfo), + unwrap(Expr), /* DebugLoc */ nullptr, unwrap(Block)); return wrap(Instr); } Modified: vendor/llvm/dist/bindings/go/llvm/DIBuilderBindings.h ============================================================================== --- vendor/llvm/dist/bindings/go/llvm/DIBuilderBindings.h Wed May 27 18:11:05 2015 (r283624) +++ vendor/llvm/dist/bindings/go/llvm/DIBuilderBindings.h Wed May 27 18:44:32 2015 (r283625) @@ -14,8 +14,8 @@ #ifndef LLVM_BINDINGS_GO_LLVM_DIBUILDERBINDINGS_H #define LLVM_BINDINGS_GO_LLVM_DIBUILDERBINDINGS_H -#include "llvm-c/Core.h" #include "IRBindings.h" +#include "llvm-c/Core.h" #ifdef __cplusplus extern "C" { @@ -84,6 +84,11 @@ LLVMMetadataRef LLVMDIBuilderCreateStruc uint64_t AlignInBits, unsigned Flags, LLVMMetadataRef DerivedFrom, LLVMMetadataRef ElementTypes); +LLVMMetadataRef LLVMDIBuilderCreateReplaceableCompositeType( + LLVMDIBuilderRef D, unsigned Tag, const char *Name, LLVMMetadataRef Scope, + LLVMMetadataRef File, unsigned Line, unsigned RuntimeLang, + uint64_t SizeInBits, uint64_t AlignInBits, unsigned Flags); + LLVMMetadataRef LLVMDIBuilderCreateMemberType(LLVMDIBuilderRef D, LLVMMetadataRef Scope, const char *Name, LLVMMetadataRef File, Modified: vendor/llvm/dist/bindings/go/llvm/IRBindings.cpp ============================================================================== --- vendor/llvm/dist/bindings/go/llvm/IRBindings.cpp Wed May 27 18:11:05 2015 (r283624) +++ vendor/llvm/dist/bindings/go/llvm/IRBindings.cpp Wed May 27 18:44:32 2015 (r283625) @@ -12,7 +12,6 @@ //===----------------------------------------------------------------------===// #include "IRBindings.h" - #include "llvm/IR/Attributes.h" #include "llvm/IR/DebugLoc.h" #include "llvm/IR/Function.h" @@ -66,8 +65,9 @@ LLVMMetadataRef LLVMMDNode2(LLVMContextR LLVMMetadataRef LLVMTemporaryMDNode(LLVMContextRef C, LLVMMetadataRef *MDs, unsigned Count) { - return wrap(MDNode::getTemporary(*unwrap(C), - ArrayRef(unwrap(MDs), Count))); + return wrap(MDTuple::getTemporary(*unwrap(C), + ArrayRef(unwrap(MDs), Count)) + .release()); } void LLVMAddNamedMetadataOperand2(LLVMModuleRef M, const char *name, @@ -86,8 +86,8 @@ void LLVMSetMetadata2(LLVMValueRef Inst, } void LLVMMetadataReplaceAllUsesWith(LLVMMetadataRef MD, LLVMMetadataRef New) { *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Wed May 27 18:45:33 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8B991FEF; Wed, 27 May 2015 18:45:33 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.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 6074CEE6; Wed, 27 May 2015 18:45:33 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RIjX9M059001; Wed, 27 May 2015 18:45:33 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RIjX0n059000; Wed, 27 May 2015 18:45:33 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201505271845.t4RIjX0n059000@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Wed, 27 May 2015 18:45:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r283626 - vendor/llvm/llvm-trunk-r238337 X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 18:45:33 -0000 Author: dim Date: Wed May 27 18:45:32 2015 New Revision: 283626 URL: https://svnweb.freebsd.org/changeset/base/283626 Log: Tag llvm trunk r238337. Added: - copied from r283625, vendor/llvm/dist/ Directory Properties: vendor/llvm/llvm-trunk-r238337/ (props changed) From owner-svn-src-all@FreeBSD.ORG Wed May 27 18:48:02 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7BEDA1E3; Wed, 27 May 2015 18:48:02 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.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 649B1F14; Wed, 27 May 2015 18:48:02 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RIm253059742; Wed, 27 May 2015 18:48:02 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RIlxMh059705; Wed, 27 May 2015 18:47:59 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201505271847.t4RIlxMh059705@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Wed, 27 May 2015 18:47:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r283627 - in vendor/clang/dist: . bindings/python/clang bindings/python/tests/cindex docs docs/tools examples/PrintFunctionNames include/clang include/clang-c include/clang/AST include/... X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 18:48:02 -0000 Author: dim Date: Wed May 27 18:47:56 2015 New Revision: 283627 URL: https://svnweb.freebsd.org/changeset/base/283627 Log: Vendor import of clang trunk r238337: https://llvm.org/svn/llvm-project/cfe/trunk@238337 Added: vendor/clang/dist/docs/ControlFlowIntegrity.rst vendor/clang/dist/docs/ControlFlowIntegrityDesign.rst vendor/clang/dist/docs/SanitizerCoverage.rst vendor/clang/dist/include/clang/Basic/BuiltinsSystemZ.def vendor/clang/dist/include/clang/Rewrite/Core/RewriteBuffer.h (contents, props changed) vendor/clang/dist/lib/Headers/avx512dqintrin.h (contents, props changed) vendor/clang/dist/lib/Headers/avx512vldqintrin.h (contents, props changed) vendor/clang/dist/lib/Headers/cuda/ vendor/clang/dist/lib/Headers/cuda_builtin_vars.h (contents, props changed) vendor/clang/dist/lib/Headers/htmintrin.h (contents, props changed) vendor/clang/dist/lib/Headers/htmxlintrin.h (contents, props changed) vendor/clang/dist/lib/Headers/s390intrin.h (contents, props changed) vendor/clang/dist/test/ASTMerge/Inputs/body1.c (contents, props changed) vendor/clang/dist/test/ASTMerge/Inputs/body2.c (contents, props changed) vendor/clang/dist/test/ASTMerge/codegen-body.c (contents, props changed) vendor/clang/dist/test/ASTMerge/codegen-exprs.c (contents, props changed) vendor/clang/dist/test/CXX/drs/dr1748.cpp (contents, props changed) vendor/clang/dist/test/CXX/drs/dr17xx.cpp (contents, props changed) vendor/clang/dist/test/CXX/drs/dr19xx.cpp (contents, props changed) vendor/clang/dist/test/CXX/drs/dr7xx.cpp (contents, props changed) vendor/clang/dist/test/CodeGen/align-systemz.c (contents, props changed) vendor/clang/dist/test/CodeGen/arm-bitfield-alignment.c (contents, props changed) vendor/clang/dist/test/CodeGen/arm-target-features.c (contents, props changed) vendor/clang/dist/test/CodeGen/avx512dq-builtins.c (contents, props changed) vendor/clang/dist/test/CodeGen/avx512er-builtins.c (contents, props changed) vendor/clang/dist/test/CodeGen/avx512vldq-builtins.c (contents, props changed) vendor/clang/dist/test/CodeGen/builtin-nan-legacy.c (contents, props changed) vendor/clang/dist/test/CodeGen/builtins-ppc-crypto-disabled.c (contents, props changed) vendor/clang/dist/test/CodeGen/builtins-ppc-crypto.c (contents, props changed) vendor/clang/dist/test/CodeGen/builtins-ppc-htm.c (contents, props changed) vendor/clang/dist/test/CodeGen/builtins-ppc-p7-disabled.c (contents, props changed) vendor/clang/dist/test/CodeGen/builtins-ppc-p7.c (contents, props changed) vendor/clang/dist/test/CodeGen/builtins-ppc-p8vector.c (contents, props changed) vendor/clang/dist/test/CodeGen/builtins-ppc-quadword.c (contents, props changed) vendor/clang/dist/test/CodeGen/builtins-systemz-error.c (contents, props changed) vendor/clang/dist/test/CodeGen/builtins-systemz-vector-error.c (contents, props changed) vendor/clang/dist/test/CodeGen/builtins-systemz-vector.c (contents, props changed) vendor/clang/dist/test/CodeGen/builtins-systemz.c (contents, props changed) vendor/clang/dist/test/CodeGen/cleanup-destslot-simple.c (contents, props changed) vendor/clang/dist/test/CodeGen/debug-info-257-args.c (contents, props changed) vendor/clang/dist/test/CodeGen/debug-info-file-change.c (contents, props changed) vendor/clang/dist/test/CodeGen/debug-info-same-line.c (contents, props changed) vendor/clang/dist/test/CodeGen/exceptions-seh-finally.c (contents, props changed) vendor/clang/dist/test/CodeGen/exceptions-seh-leave.c (contents, props changed) vendor/clang/dist/test/CodeGen/function-target-features.c (contents, props changed) vendor/clang/dist/test/CodeGen/funique-sections.c (contents, props changed) vendor/clang/dist/test/CodeGen/inline-asm-matching-constraint.c (contents, props changed) vendor/clang/dist/test/CodeGen/lifetime-debuginfo-1.c (contents, props changed) vendor/clang/dist/test/CodeGen/lifetime-debuginfo-2.c (contents, props changed) vendor/clang/dist/test/CodeGen/mips-inline-asm.c (contents, props changed) vendor/clang/dist/test/CodeGen/mips-unsigned-ext-var.c (contents, props changed) vendor/clang/dist/test/CodeGen/mips-unsigned-extend.c (contents, props changed) vendor/clang/dist/test/CodeGen/mips-unsupported-nan.c (contents, props changed) vendor/clang/dist/test/CodeGen/ms-declspecs.cpp (contents, props changed) vendor/clang/dist/test/CodeGen/ms-setjmp.c (contents, props changed) vendor/clang/dist/test/CodeGen/ms-volatile.c (contents, props changed) vendor/clang/dist/test/CodeGen/ppc64-qpx-vector.c (contents, props changed) vendor/clang/dist/test/CodeGen/sse.c (contents, props changed) vendor/clang/dist/test/CodeGen/systemz-abi-vector.c (contents, props changed) vendor/clang/dist/test/CodeGen/systemz-abi.c (contents, props changed) vendor/clang/dist/test/CodeGen/systemz-abi.cpp (contents, props changed) vendor/clang/dist/test/CodeGen/windows-on-arm-stack-probe-size.c (contents, props changed) vendor/clang/dist/test/CodeGenCUDA/cuda-builtin-vars.cu vendor/clang/dist/test/CodeGenCUDA/host-device-calls-host.cu vendor/clang/dist/test/CodeGenCXX/aarch64-aapcs-zerolength-bitfield.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/apple-kext-indirect-call-2.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/apple-kext-indirect-call.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/apple-kext-linkage.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/apple-kext-no-staticinit-section.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/auto-variable-template.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/cfi-cast.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/cfi-nvcall.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/cfi-vcall.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/cxx1y-generic-lambdas.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/exceptions-seh-filter-captures.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/exceptions-seh.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/implicit-record-visibility.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/inline-dllexport-member.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/linetable-virtual-variadic.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/mangle-fail.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/microsoft-abi-eh-catch.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/microsoft-abi-eh-cleanups.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/microsoft-abi-eh-terminate.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/microsoft-abi-thread-safe-statics.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/microsoft-abi-throw.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/microsoft-abi-vmemptr-vbase.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/microsoft-abi-vtables-ambiguous.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/ms-novtable.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/ms_struct.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/powerpc-byval.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/static-data-member-single-emission.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/vector-splat-conversion.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/x86_64-arguments-avx.cpp (contents, props changed) vendor/clang/dist/test/CodeGenObjC/compound-literal-property-access.m vendor/clang/dist/test/CodeGenObjC/no-sanitize.m vendor/clang/dist/test/CodeGenObjC/objc2-protocol-metadata.m vendor/clang/dist/test/CodeGenObjCXX/debug-info-cyclic.mm vendor/clang/dist/test/CodeGenObjCXX/nested-ehlocation.mm vendor/clang/dist/test/CodeGenOpenCL/cl-strict-aliasing.cl vendor/clang/dist/test/CodeGenOpenCL/memcpy.cl vendor/clang/dist/test/CodeGenOpenCL/spir-calling-conv.cl vendor/clang/dist/test/CoverageMapping/Inputs/ends_a_scope vendor/clang/dist/test/CoverageMapping/Inputs/md.def vendor/clang/dist/test/CoverageMapping/Inputs/starts_a_scope vendor/clang/dist/test/CoverageMapping/block-storage-starts-region.m vendor/clang/dist/test/CoverageMapping/comment-in-macro.c (contents, props changed) vendor/clang/dist/test/CoverageMapping/lambda.cpp (contents, props changed) vendor/clang/dist/test/CoverageMapping/macro-expansion.c (contents, props changed) vendor/clang/dist/test/CoverageMapping/macro-expressions.cpp (contents, props changed) vendor/clang/dist/test/CoverageMapping/macroscopes.cpp (contents, props changed) vendor/clang/dist/test/CoverageMapping/md.cpp (contents, props changed) vendor/clang/dist/test/CoverageMapping/moremacros.c (contents, props changed) vendor/clang/dist/test/CoverageMapping/switchmacro.c (contents, props changed) vendor/clang/dist/test/CoverageMapping/system_macro.c (contents, props changed) vendor/clang/dist/test/CoverageMapping/unreachable-macro.c (contents, props changed) vendor/clang/dist/test/CoverageMapping/unused_names.c (contents, props changed) vendor/clang/dist/test/CoverageMapping/while.c (contents, props changed) vendor/clang/dist/test/Driver/Inputs/resource_dir/lib/linux/libclang_rt.msan_cxx-x86_64.a.syms vendor/clang/dist/test/Driver/Inputs/resource_dir/lib/linux/libclang_rt.tsan_cxx-x86_64.a.syms vendor/clang/dist/test/Driver/cloudabi.c (contents, props changed) vendor/clang/dist/test/Driver/cloudabi.cpp (contents, props changed) vendor/clang/dist/test/Driver/cuda-simple.cu vendor/clang/dist/test/Driver/fsanitize-coverage.c (contents, props changed) vendor/clang/dist/test/Driver/fveclib.c (contents, props changed) vendor/clang/dist/test/Driver/inline-asm.c (contents, props changed) vendor/clang/dist/test/Driver/mglobal-merge.c (contents, props changed) vendor/clang/dist/test/Driver/modules-cache-path.m vendor/clang/dist/test/Driver/msvc-link.c (contents, props changed) vendor/clang/dist/test/Driver/nacl-direct.c (contents, props changed) vendor/clang/dist/test/Driver/objc-sdk-migration-options.m vendor/clang/dist/test/Driver/preserve-uselistorder.c (contents, props changed) vendor/clang/dist/test/Driver/ps4-cpu-defaults.cpp (contents, props changed) vendor/clang/dist/test/Driver/rtti-options.cpp (contents, props changed) vendor/clang/dist/test/Driver/systemz-features.cpp (contents, props changed) vendor/clang/dist/test/Driver/target-abi-cc1as.s (contents, props changed) vendor/clang/dist/test/FixIt/fixit-eof-space.c (contents, props changed) vendor/clang/dist/test/Format/incomplete.cpp (contents, props changed) vendor/clang/dist/test/Frontend/gnu-inline.c (contents, props changed) vendor/clang/dist/test/Frontend/plugin-delayed-template.cpp (contents, props changed) vendor/clang/dist/test/Frontend/rewrite-includes-line-markers.c (contents, props changed) vendor/clang/dist/test/Headers/Inputs/include/stdlib.h (contents, props changed) vendor/clang/dist/test/Headers/arm64-apple-ios-types.cpp (contents, props changed) vendor/clang/dist/test/Headers/thumbv7-apple-ios-types.cpp (contents, props changed) vendor/clang/dist/test/Headers/x86_64-apple-macosx-types.cpp (contents, props changed) vendor/clang/dist/test/Index/complete-call.cpp (contents, props changed) vendor/clang/dist/test/Index/complete-constructor-params.cpp (contents, props changed) vendor/clang/dist/test/Index/complete-functor-call.cpp (contents, props changed) vendor/clang/dist/test/Index/complete-optional-params.cpp (contents, props changed) vendor/clang/dist/test/Index/complete-pointer-and-reference-to-functions.cpp (contents, props changed) vendor/clang/dist/test/Index/complete-template-friends-defined.cpp (contents, props changed) vendor/clang/dist/test/Lexer/eof-include.c (contents, props changed) vendor/clang/dist/test/Lexer/eof-number.c (contents, props changed) vendor/clang/dist/test/Misc/backend-optimization-failure-nodbg.cpp (contents, props changed) vendor/clang/dist/test/Modules/Inputs/PR21687/ vendor/clang/dist/test/Modules/Inputs/PR21687/a.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/PR21687/b.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/PR21687/c.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/PR21687/module.modulemap vendor/clang/dist/test/Modules/Inputs/anon-namespace/ vendor/clang/dist/test/Modules/Inputs/anon-namespace/a.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/anon-namespace/b1.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/anon-namespace/b2.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/anon-namespace/c.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/anon-namespace/module.modulemap vendor/clang/dist/test/Modules/Inputs/cxx-dtor/ vendor/clang/dist/test/Modules/Inputs/cxx-dtor/a.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/cxx-dtor/b.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/cxx-dtor/module.modulemap vendor/clang/dist/test/Modules/Inputs/cxx-lookup/na.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/cxx-lookup/nb.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/declare-use/sub.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/deferred-lookup/ vendor/clang/dist/test/Modules/Inputs/deferred-lookup/a.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/deferred-lookup/b.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/deferred-lookup/module.modulemap vendor/clang/dist/test/Modules/Inputs/diagnostics-aux.modulemap vendor/clang/dist/test/Modules/Inputs/empty/ vendor/clang/dist/test/Modules/Inputs/empty.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/empty/empty.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/explicit-build/d.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/header-in-multiple-maps/ vendor/clang/dist/test/Modules/Inputs/header-in-multiple-maps/a.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/header-in-multiple-maps/map1 vendor/clang/dist/test/Modules/Inputs/header-in-multiple-maps/map2 vendor/clang/dist/test/Modules/Inputs/header-in-multiple-maps/map3 vendor/clang/dist/test/Modules/Inputs/initializer_list/direct.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/initializer_list/direct.modulemap vendor/clang/dist/test/Modules/Inputs/initializer_list/indirect.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/initializer_list/indirect.modulemap vendor/clang/dist/test/Modules/Inputs/invalidate-identifiers/ vendor/clang/dist/test/Modules/Inputs/invalidate-identifiers/a.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/invalidate-identifiers/b.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/invalidate-identifiers/module.modulemap vendor/clang/dist/test/Modules/Inputs/macro-ambiguity/ vendor/clang/dist/test/Modules/Inputs/macro-ambiguity/a/ vendor/clang/dist/test/Modules/Inputs/macro-ambiguity/a/quote/ vendor/clang/dist/test/Modules/Inputs/macro-ambiguity/a/quote/a_quote.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/macro-ambiguity/a/system/ vendor/clang/dist/test/Modules/Inputs/macro-ambiguity/a/system/a_system.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/macro-ambiguity/b/ vendor/clang/dist/test/Modules/Inputs/macro-ambiguity/b/quote/ vendor/clang/dist/test/Modules/Inputs/macro-ambiguity/b/quote/b_quote.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/macro-ambiguity/b/system/ vendor/clang/dist/test/Modules/Inputs/macro-ambiguity/b/system/b_system.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/macro-ambiguity/c/ vendor/clang/dist/test/Modules/Inputs/macro-ambiguity/c/quote/ vendor/clang/dist/test/Modules/Inputs/macro-ambiguity/c/quote/c_quote.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/macro-ambiguity/c/system/ vendor/clang/dist/test/Modules/Inputs/macro-ambiguity/c/system/c_system.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/macro-ambiguity/d/ vendor/clang/dist/test/Modules/Inputs/macro-ambiguity/d/quote/ vendor/clang/dist/test/Modules/Inputs/macro-ambiguity/d/quote/d_quote.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/macro-ambiguity/d/system/ vendor/clang/dist/test/Modules/Inputs/macro-ambiguity/d/system/d_system.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/macro-ambiguity/e/ vendor/clang/dist/test/Modules/Inputs/macro-ambiguity/e/quote/ vendor/clang/dist/test/Modules/Inputs/macro-ambiguity/e/quote/e_quote.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/macro-ambiguity/e/system/ vendor/clang/dist/test/Modules/Inputs/macro-ambiguity/e/system/e_system.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/macro-ambiguity/module.modulemap vendor/clang/dist/test/Modules/Inputs/macro-masking/ vendor/clang/dist/test/Modules/Inputs/macro-masking/a.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/macro-masking/b.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/macro-masking/module.modulemap vendor/clang/dist/test/Modules/Inputs/macro-reexport/ vendor/clang/dist/test/Modules/Inputs/macro-reexport/a1.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/macro-reexport/a2.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/macro-reexport/b1.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/macro-reexport/b2.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/macro-reexport/c1.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/macro-reexport/d1.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/macro-reexport/d2.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/macro-reexport/e1.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/macro-reexport/e2.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/macro-reexport/f1.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/macro-reexport/module.modulemap vendor/clang/dist/test/Modules/Inputs/macros-indirect.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-anon-in-template/ vendor/clang/dist/test/Modules/Inputs/merge-anon-in-template/a.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-anon-in-template/b.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-anon-in-template/c.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-anon-in-template/module.modulemap vendor/clang/dist/test/Modules/Inputs/merge-decl-context/ vendor/clang/dist/test/Modules/Inputs/merge-decl-context/a.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-decl-context/b.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-decl-context/c.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-decl-context/d.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-decl-context/merge-decl-context.modulemap vendor/clang/dist/test/Modules/Inputs/merge-decl-order/ vendor/clang/dist/test/Modules/Inputs/merge-decl-order/a.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-decl-order/b.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-decl-order/module.modulemap vendor/clang/dist/test/Modules/Inputs/merge-dependent-friends/ vendor/clang/dist/test/Modules/Inputs/merge-dependent-friends/a.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-dependent-friends/b.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-dependent-friends/c.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-dependent-friends/d.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-dependent-friends/module.modulemap vendor/clang/dist/test/Modules/Inputs/merge-friends/ vendor/clang/dist/test/Modules/Inputs/merge-friends/decl.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-friends/friend.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-friends/module.modulemap vendor/clang/dist/test/Modules/Inputs/merge-implicit-special-members/ vendor/clang/dist/test/Modules/Inputs/merge-implicit-special-members/a.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-implicit-special-members/b.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-implicit-special-members/c.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-implicit-special-members/module.modulemap vendor/clang/dist/test/Modules/Inputs/merge-name-for-linkage/ vendor/clang/dist/test/Modules/Inputs/merge-name-for-linkage/a.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-name-for-linkage/b.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-name-for-linkage/module.modulemap vendor/clang/dist/test/Modules/Inputs/merge-nested-templates/ vendor/clang/dist/test/Modules/Inputs/merge-nested-templates/a.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-nested-templates/b.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-nested-templates/c.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-nested-templates/module.modulemap vendor/clang/dist/test/Modules/Inputs/merge-nested-templates/string.ii vendor/clang/dist/test/Modules/Inputs/merge-target-features/ vendor/clang/dist/test/Modules/Inputs/merge-target-features/foo.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-target-features/module.modulemap vendor/clang/dist/test/Modules/Inputs/merge-template-friend/ vendor/clang/dist/test/Modules/Inputs/merge-template-friend/def.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-template-friend/friend.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-template-friend/module.modulemap vendor/clang/dist/test/Modules/Inputs/merge-template-members/ vendor/clang/dist/test/Modules/Inputs/merge-template-members/a1.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-template-members/a2.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-template-members/b1.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-template-members/b2.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-template-members/c.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-template-members/def.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-template-members/merge.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-template-members/module.modulemap vendor/clang/dist/test/Modules/Inputs/merge-template-members/update.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-vtable-codegen/ vendor/clang/dist/test/Modules/Inputs/merge-vtable-codegen/a.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-vtable-codegen/b.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-vtable-codegen/c.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/merge-vtable-codegen/merge-vtable-codegen.modulemap vendor/clang/dist/test/Modules/Inputs/no-implicit-builds/ vendor/clang/dist/test/Modules/Inputs/no-implicit-builds/b.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/no-implicit-builds/b.modulemap vendor/clang/dist/test/Modules/Inputs/preprocess/ vendor/clang/dist/test/Modules/Inputs/preprocess/file.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/preprocess/fwd.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/preprocess/module.modulemap vendor/clang/dist/test/Modules/Inputs/redecl-found-building-chains/ vendor/clang/dist/test/Modules/Inputs/redecl-found-building-chains/a.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/redecl-found-building-chains/b.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/redecl-found-building-chains/c.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/redecl-found-building-chains/d.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/redecl-found-building-chains/module.modulemap vendor/clang/dist/test/Modules/Inputs/redecl-templates/ vendor/clang/dist/test/Modules/Inputs/redecl-templates/a.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/redecl-templates/module.modulemap vendor/clang/dist/test/Modules/Inputs/redecls/ vendor/clang/dist/test/Modules/Inputs/redecls/a.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/redecls/b.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/redecls/module.map vendor/clang/dist/test/Modules/Inputs/self-import-header/ vendor/clang/dist/test/Modules/Inputs/self-import-header/af.framework/ vendor/clang/dist/test/Modules/Inputs/self-import-header/af.framework/Headers/ vendor/clang/dist/test/Modules/Inputs/self-import-header/af.framework/Headers/a1.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/self-import-header/af.framework/Headers/a2.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/self-import-header/af.framework/module.map vendor/clang/dist/test/Modules/Inputs/self-import-header/depend_builtin/ vendor/clang/dist/test/Modules/Inputs/self-import-header/depend_builtin/h1.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/self-import-header/depend_builtin/module.map vendor/clang/dist/test/Modules/Inputs/stress1/ vendor/clang/dist/test/Modules/Inputs/stress1/common.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/stress1/m00.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/stress1/m01.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/stress1/m02.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/stress1/m03.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/stress1/merge00.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/stress1/module.modulemap vendor/clang/dist/test/Modules/Inputs/submodule-visibility/ vendor/clang/dist/test/Modules/Inputs/submodule-visibility/a.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/submodule-visibility/b.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/submodule-visibility/cycle1.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/submodule-visibility/cycle2.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/submodule-visibility/module.modulemap vendor/clang/dist/test/Modules/Inputs/submodules-merge-defs/ vendor/clang/dist/test/Modules/Inputs/submodules-merge-defs/defs.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/submodules-merge-defs/empty.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/submodules-merge-defs/import-and-redefine.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/submodules-merge-defs/merged-defs.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/submodules-merge-defs/module.modulemap vendor/clang/dist/test/Modules/Inputs/submodules-merge-defs/use-defs.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/update-exception-spec/ vendor/clang/dist/test/Modules/Inputs/update-exception-spec/a.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/update-exception-spec/b.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/update-exception-spec/c.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/update-exception-spec/module.modulemap vendor/clang/dist/test/Modules/anon-namespace.cpp (contents, props changed) vendor/clang/dist/test/Modules/crashes.m vendor/clang/dist/test/Modules/cxx-dtor.cpp (contents, props changed) vendor/clang/dist/test/Modules/declare-use-compatible.cpp (contents, props changed) vendor/clang/dist/test/Modules/declare-use5.cpp (contents, props changed) vendor/clang/dist/test/Modules/deferred-lookup.cpp (contents, props changed) vendor/clang/dist/test/Modules/dependency-gen.modulemap vendor/clang/dist/test/Modules/diagnostics.modulemap vendor/clang/dist/test/Modules/empty.modulemap vendor/clang/dist/test/Modules/exponential-paths.cpp (contents, props changed) vendor/clang/dist/test/Modules/header-in-multiple-maps.cpp (contents, props changed) vendor/clang/dist/test/Modules/invalidate-identifiers.c (contents, props changed) vendor/clang/dist/test/Modules/macro-ambiguity.cpp (contents, props changed) vendor/clang/dist/test/Modules/macro-masking.cpp (contents, props changed) vendor/clang/dist/test/Modules/macro-reexport.cpp (contents, props changed) vendor/clang/dist/test/Modules/merge-anon-in-template.cpp (contents, props changed) vendor/clang/dist/test/Modules/merge-decl-context.cpp (contents, props changed) vendor/clang/dist/test/Modules/merge-decl-order.cpp (contents, props changed) vendor/clang/dist/test/Modules/merge-dependent-friends.cpp (contents, props changed) vendor/clang/dist/test/Modules/merge-friends.cpp (contents, props changed) vendor/clang/dist/test/Modules/merge-implicit-special-members.cpp (contents, props changed) vendor/clang/dist/test/Modules/merge-name-for-linkage.cpp (contents, props changed) vendor/clang/dist/test/Modules/merge-nested-templates.cpp (contents, props changed) vendor/clang/dist/test/Modules/merge-target-features.cpp (contents, props changed) vendor/clang/dist/test/Modules/merge-template-friend.cpp (contents, props changed) vendor/clang/dist/test/Modules/merge-template-members.cpp (contents, props changed) vendor/clang/dist/test/Modules/merge-vtable-codegen.cpp (contents, props changed) vendor/clang/dist/test/Modules/no-implicit-builds.cpp (contents, props changed) vendor/clang/dist/test/Modules/pr21687.cpp (contents, props changed) vendor/clang/dist/test/Modules/public-private.modulemap vendor/clang/dist/test/Modules/redecl-found-building-chains.cpp (contents, props changed) vendor/clang/dist/test/Modules/redecl-templates.cpp (contents, props changed) vendor/clang/dist/test/Modules/redecls.m vendor/clang/dist/test/Modules/self-import-header.m vendor/clang/dist/test/Modules/stress1.cpp (contents, props changed) vendor/clang/dist/test/Modules/submodule-visibility-cycles.cpp (contents, props changed) vendor/clang/dist/test/Modules/submodule-visibility.cpp (contents, props changed) vendor/clang/dist/test/Modules/submodules-merge-defs.cpp (contents, props changed) vendor/clang/dist/test/Modules/update-exception-spec.cpp (contents, props changed) vendor/clang/dist/test/OpenMP/atomic_capture_codegen.cpp (contents, props changed) vendor/clang/dist/test/OpenMP/atomic_codegen.cpp (contents, props changed) vendor/clang/dist/test/OpenMP/atomic_read_codegen.c (contents, props changed) vendor/clang/dist/test/OpenMP/atomic_update_codegen.cpp (contents, props changed) vendor/clang/dist/test/OpenMP/atomic_write_codegen.c (contents, props changed) vendor/clang/dist/test/OpenMP/for_firstprivate_codegen.cpp (contents, props changed) vendor/clang/dist/test/OpenMP/for_lastprivate_codegen.cpp (contents, props changed) vendor/clang/dist/test/OpenMP/for_private_codegen.cpp (contents, props changed) vendor/clang/dist/test/OpenMP/for_reduction_codegen.cpp (contents, props changed) vendor/clang/dist/test/OpenMP/ordered_codegen.cpp (contents, props changed) vendor/clang/dist/test/OpenMP/parallel_copyin_codegen.cpp (contents, props changed) vendor/clang/dist/test/OpenMP/parallel_for_codegen.cpp (contents, props changed) vendor/clang/dist/test/OpenMP/parallel_reduction_codegen.cpp (contents, props changed) vendor/clang/dist/test/OpenMP/parallel_sections_codegen.cpp (contents, props changed) vendor/clang/dist/test/OpenMP/sections_codegen.cpp (contents, props changed) vendor/clang/dist/test/OpenMP/sections_firstprivate_codegen.cpp (contents, props changed) vendor/clang/dist/test/OpenMP/sections_lastprivate_codegen.cpp (contents, props changed) vendor/clang/dist/test/OpenMP/sections_private_codegen.cpp (contents, props changed) vendor/clang/dist/test/OpenMP/sections_reduction_codegen.cpp (contents, props changed) vendor/clang/dist/test/OpenMP/single_codegen.cpp (contents, props changed) vendor/clang/dist/test/OpenMP/single_firstprivate_codegen.cpp (contents, props changed) vendor/clang/dist/test/OpenMP/single_private_codegen.cpp (contents, props changed) vendor/clang/dist/test/OpenMP/task_codegen.cpp (contents, props changed) vendor/clang/dist/test/OpenMP/task_firstprivate_codegen.cpp (contents, props changed) vendor/clang/dist/test/OpenMP/task_if_codegen.cpp (contents, props changed) vendor/clang/dist/test/OpenMP/task_private_codegen.cpp (contents, props changed) vendor/clang/dist/test/OpenMP/taskwait_codegen.cpp (contents, props changed) vendor/clang/dist/test/OpenMP/taskyield_codegen.cpp (contents, props changed) vendor/clang/dist/test/PCH/Inputs/modules/ vendor/clang/dist/test/PCH/Inputs/modules/Foo.h (contents, props changed) vendor/clang/dist/test/PCH/Inputs/modules/module.modulemap vendor/clang/dist/test/PCH/chain-typo-corrections.cpp (contents, props changed) vendor/clang/dist/test/PCH/emit-pth.c (contents, props changed) vendor/clang/dist/test/PCH/module-hash-difference.m vendor/clang/dist/test/Parser/annotation-token-in-lexed-body.cpp (contents, props changed) vendor/clang/dist/test/Parser/extra-semi.cpp (contents, props changed) vendor/clang/dist/test/Parser/ms-seh.c (contents, props changed) vendor/clang/dist/test/Parser/no-gnu-inline-asm.c (contents, props changed) vendor/clang/dist/test/Parser/opencl-atomics-cl20.cl vendor/clang/dist/test/Preprocessor/annotate_in_macro_arg.c (contents, props changed) vendor/clang/dist/test/Preprocessor/pr19649-signed-wchar_t.c (contents, props changed) vendor/clang/dist/test/Preprocessor/pr19649-unsigned-wchar_t.c (contents, props changed) vendor/clang/dist/test/Preprocessor/pragma_ps4.c (contents, props changed) vendor/clang/dist/test/Profile/Inputs/cxx-rangefor.proftext vendor/clang/dist/test/Profile/c-generate.c (contents, props changed) vendor/clang/dist/test/Profile/cxx-rangefor.cpp (contents, props changed) vendor/clang/dist/test/Profile/cxx-virtual-destructor-calls.cpp (contents, props changed) vendor/clang/dist/test/Profile/profile-does-not-exist.c (contents, props changed) vendor/clang/dist/test/Sema/align-systemz.c (contents, props changed) vendor/clang/dist/test/Sema/attr-availability-android.c (contents, props changed) vendor/clang/dist/test/Sema/attr-availability-app-extensions.c (contents, props changed) vendor/clang/dist/test/Sema/attr-flag-enum.c (contents, props changed) vendor/clang/dist/test/Sema/attr-naked.cpp (contents, props changed) vendor/clang/dist/test/Sema/builtins-ppc.c (contents, props changed) vendor/clang/dist/test/Sema/builtins.cl vendor/clang/dist/test/Sema/crash-invalid-builtin.c (contents, props changed) vendor/clang/dist/test/Sema/format-strings-freebsd.c (contents, props changed) vendor/clang/dist/test/Sema/i386-linux-android.c (contents, props changed) vendor/clang/dist/test/Sema/integer-overflow.c (contents, props changed) vendor/clang/dist/test/Sema/invalid-assignment-constant-address-space.c (contents, props changed) vendor/clang/dist/test/Sema/pr9812.c (contents, props changed) vendor/clang/dist/test/Sema/pragma-section-invalid.c (contents, props changed) vendor/clang/dist/test/Sema/warn-documentation-unknown-command.cpp (contents, props changed) vendor/clang/dist/test/Sema/warn-shift-negative.c (contents, props changed) vendor/clang/dist/test/Sema/x86_64-linux-android.c (contents, props changed) vendor/clang/dist/test/SemaCUDA/asm-constraints-device.cu vendor/clang/dist/test/SemaCUDA/asm-constraints-mixed.cu vendor/clang/dist/test/SemaCUDA/cuda-builtin-vars.cu vendor/clang/dist/test/SemaCUDA/function-target-disabled-check.cu vendor/clang/dist/test/SemaCUDA/function-target-hd.cu vendor/clang/dist/test/SemaCXX/PR21679.cpp (contents, props changed) vendor/clang/dist/test/SemaCXX/PR23334.cpp (contents, props changed) vendor/clang/dist/test/SemaCXX/accessible-base.cpp (contents, props changed) vendor/clang/dist/test/SemaCXX/attr-flag-enum-reject.cpp (contents, props changed) vendor/clang/dist/test/SemaCXX/attr-no-sanitize.cpp (contents, props changed) vendor/clang/dist/test/SemaCXX/cxx11-call-to-deleted-constructor.cpp (contents, props changed) vendor/clang/dist/test/SemaCXX/delete-mismatch.h (contents, props changed) vendor/clang/dist/test/SemaCXX/dllexport-pr22591.cpp (contents, props changed) vendor/clang/dist/test/SemaCXX/err_reference_bind_drops_quals.cpp (contents, props changed) vendor/clang/dist/test/SemaCXX/err_typecheck_assign_const.cpp (contents, props changed) vendor/clang/dist/test/SemaCXX/err_typecheck_assign_const_filecheck.cpp (contents, props changed) vendor/clang/dist/test/SemaCXX/exceptions-seh.cpp (contents, props changed) vendor/clang/dist/test/SemaCXX/format-strings-0x-nopedantic.cpp (contents, props changed) vendor/clang/dist/test/SemaCXX/generalized-deprecated.cpp (contents, props changed) vendor/clang/dist/test/SemaCXX/integer-overflow.cpp (contents, props changed) vendor/clang/dist/test/SemaCXX/ms-novtable.cpp (contents, props changed) vendor/clang/dist/test/SemaCXX/ms_mutable_reference_member.cpp (contents, props changed) vendor/clang/dist/test/SemaCXX/typo-correction-cxx11.cpp (contents, props changed) vendor/clang/dist/test/SemaCXX/warn-pessmizing-move.cpp (contents, props changed) vendor/clang/dist/test/SemaCXX/warn-range-loop-analysis.cpp (contents, props changed) vendor/clang/dist/test/SemaCXX/warn-redundant-move.cpp (contents, props changed) vendor/clang/dist/test/SemaObjC/circular-container.m vendor/clang/dist/test/SemaObjC/format-ostrace-warning.m vendor/clang/dist/test/SemaObjC/multiple-method-names.m vendor/clang/dist/test/SemaObjC/multiple-property-deprecated-decl.m vendor/clang/dist/test/SemaObjC/objc-independent-class-attribute.m vendor/clang/dist/test/SemaObjC/undef-arg-super-method-call.m vendor/clang/dist/test/SemaOpenCL/extension-fp64-cl1.1.cl vendor/clang/dist/test/SemaOpenCL/optional-core-fp64-cl1.2.cl vendor/clang/dist/test/SemaOpenCL/optional-core-fp64-cl2.0.cl vendor/clang/dist/test/SemaTemplate/ext_ms_template_spec.cpp (contents, props changed) vendor/clang/dist/test/VFS/Inputs/UsesFoo.framework/ vendor/clang/dist/test/VFS/Inputs/UsesFoo.framework/Headers/ vendor/clang/dist/test/VFS/Inputs/UsesFoo.framework/Headers/UsesFoo.h (contents, props changed) vendor/clang/dist/test/VFS/Inputs/UsesFoo.framework/Modules/ vendor/clang/dist/test/VFS/Inputs/UsesFoo.framework/Modules/module.modulemap vendor/clang/dist/tools/clang-format/fuzzer/ vendor/clang/dist/tools/clang-format/fuzzer/CMakeLists.txt (contents, props changed) vendor/clang/dist/tools/clang-format/fuzzer/ClangFormatFuzzer.cpp (contents, props changed) vendor/clang/dist/tools/clang-fuzzer/ vendor/clang/dist/tools/clang-fuzzer/CMakeLists.txt (contents, props changed) vendor/clang/dist/tools/clang-fuzzer/ClangFuzzer.cpp (contents, props changed) vendor/clang/dist/unittests/Rewrite/ vendor/clang/dist/unittests/Rewrite/CMakeLists.txt (contents, props changed) vendor/clang/dist/unittests/Rewrite/Makefile (contents, props changed) vendor/clang/dist/unittests/Rewrite/RewriteBufferTest.cpp (contents, props changed) vendor/clang/dist/unittests/StaticAnalyzer/ vendor/clang/dist/unittests/StaticAnalyzer/AnalyzerOptionsTest.cpp (contents, props changed) vendor/clang/dist/unittests/StaticAnalyzer/CMakeLists.txt (contents, props changed) vendor/clang/dist/unittests/StaticAnalyzer/Makefile (contents, props changed) vendor/clang/dist/utils/check_cfc/ vendor/clang/dist/utils/check_cfc/check_cfc.cfg vendor/clang/dist/utils/check_cfc/check_cfc.py (contents, props changed) vendor/clang/dist/utils/check_cfc/obj_diff.py (contents, props changed) vendor/clang/dist/utils/check_cfc/setup.py (contents, props changed) vendor/clang/dist/utils/check_cfc/test_check_cfc.py (contents, props changed) Replaced: vendor/clang/dist/test/Modules/Inputs/initializer_list/ Deleted: vendor/clang/dist/docs/doxygen.css vendor/clang/dist/docs/doxygen.footer vendor/clang/dist/docs/doxygen.header vendor/clang/dist/test/CodeGen/2005-12-04-DeclarationLineNumbers.c vendor/clang/dist/test/CodeGen/arm-pnaclcall.c vendor/clang/dist/test/CodeGen/debug-info-var-location.c vendor/clang/dist/test/CodeGenCXX/apple-kext-indirect-call-2.C vendor/clang/dist/test/CodeGenCXX/apple-kext-indirect-call.C vendor/clang/dist/test/CodeGenCXX/apple-kext-linkage.C vendor/clang/dist/test/CodeGenCXX/apple-kext-no-staticinit-section.C vendor/clang/dist/test/CodeGenCXX/debug-info-same-line.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-abi-exceptions.cpp vendor/clang/dist/test/Driver/mno-global-merge.c vendor/clang/dist/test/Driver/ms-inline-asm.c vendor/clang/dist/test/Modules/dependency-gen.modulemap.cpp vendor/clang/dist/test/Modules/macro-reexport/ vendor/clang/dist/test/Modules/redecls/ vendor/clang/dist/test/Modules/self-import-header/ vendor/clang/dist/test/SemaCXX/pr9812.c vendor/clang/dist/test/SemaObjC/weak-receiver-warn.m Modified: vendor/clang/dist/CMakeLists.txt vendor/clang/dist/CODE_OWNERS.TXT vendor/clang/dist/LICENSE.TXT vendor/clang/dist/bindings/python/clang/cindex.py vendor/clang/dist/bindings/python/tests/cindex/test_type.py vendor/clang/dist/docs/AddressSanitizer.rst vendor/clang/dist/docs/AutomaticReferenceCounting.rst vendor/clang/dist/docs/ClangFormatStyleOptions.rst vendor/clang/dist/docs/InternalsManual.rst vendor/clang/dist/docs/LanguageExtensions.rst vendor/clang/dist/docs/LibASTMatchersReference.html vendor/clang/dist/docs/MSVCCompatibility.rst vendor/clang/dist/docs/Makefile vendor/clang/dist/docs/MemorySanitizer.rst vendor/clang/dist/docs/Modules.rst vendor/clang/dist/docs/ReleaseNotes.rst vendor/clang/dist/docs/ThreadSafetyAnalysis.rst vendor/clang/dist/docs/ThreadSanitizer.rst vendor/clang/dist/docs/UsersManual.rst vendor/clang/dist/docs/conf.py vendor/clang/dist/docs/doxygen.cfg.in vendor/clang/dist/docs/index.rst vendor/clang/dist/docs/tools/dump_ast_matchers.py vendor/clang/dist/examples/PrintFunctionNames/PrintFunctionNames.cpp vendor/clang/dist/include/clang-c/Index.h vendor/clang/dist/include/clang/AST/ASTConsumer.h vendor/clang/dist/include/clang/AST/ASTContext.h vendor/clang/dist/include/clang/AST/ASTImporter.h vendor/clang/dist/include/clang/AST/ASTMutationListener.h vendor/clang/dist/include/clang/AST/ASTUnresolvedSet.h vendor/clang/dist/include/clang/AST/Attr.h vendor/clang/dist/include/clang/AST/AttrIterator.h vendor/clang/dist/include/clang/AST/CXXInheritance.h vendor/clang/dist/include/clang/AST/CanonicalType.h vendor/clang/dist/include/clang/AST/CommentCommandTraits.h vendor/clang/dist/include/clang/AST/CommentLexer.h vendor/clang/dist/include/clang/AST/CommentParser.h vendor/clang/dist/include/clang/AST/CommentSema.h vendor/clang/dist/include/clang/AST/DataRecursiveASTVisitor.h vendor/clang/dist/include/clang/AST/Decl.h vendor/clang/dist/include/clang/AST/DeclBase.h vendor/clang/dist/include/clang/AST/DeclCXX.h vendor/clang/dist/include/clang/AST/DeclContextInternals.h vendor/clang/dist/include/clang/AST/DeclObjC.h vendor/clang/dist/include/clang/AST/DeclTemplate.h vendor/clang/dist/include/clang/AST/DeclarationName.h vendor/clang/dist/include/clang/AST/Expr.h vendor/clang/dist/include/clang/AST/ExprCXX.h vendor/clang/dist/include/clang/AST/ExternalASTSource.h vendor/clang/dist/include/clang/AST/LambdaCapture.h vendor/clang/dist/include/clang/AST/Mangle.h vendor/clang/dist/include/clang/AST/NSAPI.h vendor/clang/dist/include/clang/AST/NestedNameSpecifier.h vendor/clang/dist/include/clang/AST/OpenMPClause.h vendor/clang/dist/include/clang/AST/RecordLayout.h vendor/clang/dist/include/clang/AST/RecursiveASTVisitor.h vendor/clang/dist/include/clang/AST/Redeclarable.h vendor/clang/dist/include/clang/AST/Stmt.h vendor/clang/dist/include/clang/AST/StmtCXX.h vendor/clang/dist/include/clang/AST/StmtIterator.h vendor/clang/dist/include/clang/AST/StmtObjC.h vendor/clang/dist/include/clang/AST/StmtOpenMP.h vendor/clang/dist/include/clang/AST/TemplateBase.h vendor/clang/dist/include/clang/AST/Type.h vendor/clang/dist/include/clang/AST/TypeLoc.h vendor/clang/dist/include/clang/AST/TypeNodes.def vendor/clang/dist/include/clang/AST/UnresolvedSet.h vendor/clang/dist/include/clang/AST/VTableBuilder.h vendor/clang/dist/include/clang/ASTMatchers/ASTMatchers.h vendor/clang/dist/include/clang/ASTMatchers/ASTMatchersInternal.h vendor/clang/dist/include/clang/ASTMatchers/ASTMatchersMacros.h vendor/clang/dist/include/clang/ASTMatchers/Dynamic/Parser.h vendor/clang/dist/include/clang/ASTMatchers/Dynamic/Registry.h vendor/clang/dist/include/clang/ASTMatchers/Dynamic/VariantValue.h vendor/clang/dist/include/clang/Analysis/Analyses/Dominators.h vendor/clang/dist/include/clang/Analysis/Analyses/FormatString.h vendor/clang/dist/include/clang/Analysis/Analyses/LiveVariables.h vendor/clang/dist/include/clang/Analysis/Analyses/ThreadSafety.h vendor/clang/dist/include/clang/Analysis/Analyses/ThreadSafetyCommon.h vendor/clang/dist/include/clang/Analysis/Analyses/ThreadSafetyTIL.h vendor/clang/dist/include/clang/Analysis/Analyses/ThreadSafetyUtil.h vendor/clang/dist/include/clang/Analysis/AnalysisContext.h vendor/clang/dist/include/clang/Analysis/CFG.h vendor/clang/dist/include/clang/Basic/ABI.h vendor/clang/dist/include/clang/Basic/Attr.td vendor/clang/dist/include/clang/Basic/AttrDocs.td vendor/clang/dist/include/clang/Basic/Builtins.def vendor/clang/dist/include/clang/Basic/Builtins.h vendor/clang/dist/include/clang/Basic/BuiltinsARM.def vendor/clang/dist/include/clang/Basic/BuiltinsPPC.def vendor/clang/dist/include/clang/Basic/BuiltinsX86.def vendor/clang/dist/include/clang/Basic/DeclNodes.td vendor/clang/dist/include/clang/Basic/Diagnostic.h vendor/clang/dist/include/clang/Basic/DiagnosticASTKinds.td vendor/clang/dist/include/clang/Basic/DiagnosticCommentKinds.td vendor/clang/dist/include/clang/Basic/DiagnosticCommonKinds.td vendor/clang/dist/include/clang/Basic/DiagnosticDriverKinds.td vendor/clang/dist/include/clang/Basic/DiagnosticFrontendKinds.td vendor/clang/dist/include/clang/Basic/DiagnosticGroups.td vendor/clang/dist/include/clang/Basic/DiagnosticIDs.h vendor/clang/dist/include/clang/Basic/DiagnosticLexKinds.td vendor/clang/dist/include/clang/Basic/DiagnosticOptions.h vendor/clang/dist/include/clang/Basic/DiagnosticParseKinds.td vendor/clang/dist/include/clang/Basic/DiagnosticSemaKinds.td vendor/clang/dist/include/clang/Basic/DiagnosticSerializationKinds.td vendor/clang/dist/include/clang/Basic/FileManager.h vendor/clang/dist/include/clang/Basic/IdentifierTable.h vendor/clang/dist/include/clang/Basic/LLVM.h vendor/clang/dist/include/clang/Basic/LangOptions.def vendor/clang/dist/include/clang/Basic/LangOptions.h vendor/clang/dist/include/clang/Basic/Linkage.h vendor/clang/dist/include/clang/Basic/Module.h vendor/clang/dist/include/clang/Basic/PlistSupport.h vendor/clang/dist/include/clang/Basic/SanitizerBlacklist.h vendor/clang/dist/include/clang/Basic/Sanitizers.def vendor/clang/dist/include/clang/Basic/Sanitizers.h vendor/clang/dist/include/clang/Basic/SourceManager.h vendor/clang/dist/include/clang/Basic/SourceManagerInternals.h vendor/clang/dist/include/clang/Basic/Specifiers.h vendor/clang/dist/include/clang/Basic/TargetBuiltins.h vendor/clang/dist/include/clang/Basic/TargetInfo.h vendor/clang/dist/include/clang/Basic/TokenKinds.def vendor/clang/dist/include/clang/Basic/VersionTuple.h vendor/clang/dist/include/clang/CodeGen/BackendUtil.h vendor/clang/dist/include/clang/CodeGen/CGFunctionInfo.h vendor/clang/dist/include/clang/CodeGen/CodeGenAction.h vendor/clang/dist/include/clang/CodeGen/ModuleBuilder.h vendor/clang/dist/include/clang/Driver/CC1Options.td vendor/clang/dist/include/clang/Driver/CLCompatOptions.td vendor/clang/dist/include/clang/Driver/Driver.h vendor/clang/dist/include/clang/Driver/Job.h vendor/clang/dist/include/clang/Driver/Multilib.h vendor/clang/dist/include/clang/Driver/Options.td vendor/clang/dist/include/clang/Driver/SanitizerArgs.h vendor/clang/dist/include/clang/Driver/ToolChain.h vendor/clang/dist/include/clang/Driver/Types.def vendor/clang/dist/include/clang/Format/Format.h vendor/clang/dist/include/clang/Frontend/ASTUnit.h vendor/clang/dist/include/clang/Frontend/CodeGenOptions.def vendor/clang/dist/include/clang/Frontend/CodeGenOptions.h vendor/clang/dist/include/clang/Frontend/CommandLineSourceLoc.h vendor/clang/dist/include/clang/Frontend/CompilerInstance.h vendor/clang/dist/include/clang/Frontend/CompilerInvocation.h vendor/clang/dist/include/clang/Frontend/DependencyOutputOptions.h vendor/clang/dist/include/clang/Frontend/DiagnosticRenderer.h vendor/clang/dist/include/clang/Frontend/FrontendActions.h vendor/clang/dist/include/clang/Frontend/FrontendOptions.h vendor/clang/dist/include/clang/Frontend/MultiplexConsumer.h vendor/clang/dist/include/clang/Frontend/PreprocessorOutputOptions.h vendor/clang/dist/include/clang/Frontend/TextDiagnostic.h vendor/clang/dist/include/clang/Frontend/TextDiagnosticPrinter.h vendor/clang/dist/include/clang/Frontend/Utils.h vendor/clang/dist/include/clang/Frontend/VerifyDiagnosticConsumer.h vendor/clang/dist/include/clang/Index/USRGeneration.h vendor/clang/dist/include/clang/Lex/ExternalPreprocessorSource.h vendor/clang/dist/include/clang/Lex/HeaderMap.h vendor/clang/dist/include/clang/Lex/HeaderSearch.h vendor/clang/dist/include/clang/Lex/Lexer.h vendor/clang/dist/include/clang/Lex/LiteralSupport.h vendor/clang/dist/include/clang/Lex/MacroArgs.h vendor/clang/dist/include/clang/Lex/MacroInfo.h vendor/clang/dist/include/clang/Lex/ModuleLoader.h vendor/clang/dist/include/clang/Lex/ModuleMap.h vendor/clang/dist/include/clang/Lex/PPCallbacks.h vendor/clang/dist/include/clang/Lex/PPConditionalDirectiveRecord.h vendor/clang/dist/include/clang/Lex/PTHLexer.h vendor/clang/dist/include/clang/Lex/PTHManager.h vendor/clang/dist/include/clang/Lex/Pragma.h vendor/clang/dist/include/clang/Lex/PreprocessingRecord.h vendor/clang/dist/include/clang/Lex/Preprocessor.h vendor/clang/dist/include/clang/Lex/PreprocessorLexer.h vendor/clang/dist/include/clang/Lex/Token.h vendor/clang/dist/include/clang/Lex/TokenLexer.h vendor/clang/dist/include/clang/Parse/Parser.h vendor/clang/dist/include/clang/Rewrite/Core/DeltaTree.h vendor/clang/dist/include/clang/Rewrite/Core/RewriteRope.h vendor/clang/dist/include/clang/Rewrite/Core/Rewriter.h vendor/clang/dist/include/clang/Rewrite/Core/TokenRewriter.h vendor/clang/dist/include/clang/Rewrite/Frontend/FixItRewriter.h vendor/clang/dist/include/clang/Rewrite/Frontend/FrontendActions.h vendor/clang/dist/include/clang/Sema/AttributeList.h vendor/clang/dist/include/clang/Sema/CodeCompleteConsumer.h vendor/clang/dist/include/clang/Sema/DeclSpec.h vendor/clang/dist/include/clang/Sema/DelayedDiagnostic.h vendor/clang/dist/include/clang/Sema/ExternalSemaSource.h vendor/clang/dist/include/clang/Sema/Initialization.h vendor/clang/dist/include/clang/Sema/Lookup.h vendor/clang/dist/include/clang/Sema/MultiplexExternalSemaSource.h vendor/clang/dist/include/clang/Sema/Overload.h vendor/clang/dist/include/clang/Sema/Ownership.h vendor/clang/dist/include/clang/Sema/Scope.h vendor/clang/dist/include/clang/Sema/ScopeInfo.h vendor/clang/dist/include/clang/Sema/Sema.h vendor/clang/dist/include/clang/Sema/SemaInternal.h vendor/clang/dist/include/clang/Sema/Template.h vendor/clang/dist/include/clang/Sema/TemplateDeduction.h vendor/clang/dist/include/clang/Sema/TypoCorrection.h vendor/clang/dist/include/clang/Serialization/ASTBitCodes.h vendor/clang/dist/include/clang/Serialization/ASTDeserializationListener.h vendor/clang/dist/include/clang/Serialization/ASTReader.h vendor/clang/dist/include/clang/Serialization/ASTWriter.h vendor/clang/dist/include/clang/Serialization/ContinuousRangeMap.h vendor/clang/dist/include/clang/Serialization/GlobalModuleIndex.h vendor/clang/dist/include/clang/Serialization/Module.h vendor/clang/dist/include/clang/Serialization/ModuleManager.h vendor/clang/dist/include/clang/StaticAnalyzer/Core/AnalyzerOptions.h vendor/clang/dist/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h vendor/clang/dist/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h vendor/clang/dist/include/clang/StaticAnalyzer/Core/Checker.h vendor/clang/dist/include/clang/StaticAnalyzer/Core/CheckerManager.h vendor/clang/dist/include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h vendor/clang/dist/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h vendor/clang/dist/include/clang/StaticAnalyzer/Core/PathSensitive/CoreEngine.h vendor/clang/dist/include/clang/StaticAnalyzer/Core/PathSensitive/Environment.h vendor/clang/dist/include/clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h vendor/clang/dist/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h vendor/clang/dist/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h vendor/clang/dist/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h vendor/clang/dist/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h vendor/clang/dist/include/clang/StaticAnalyzer/Core/PathSensitive/Store.h vendor/clang/dist/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h vendor/clang/dist/include/clang/Tooling/CompilationDatabase.h vendor/clang/dist/include/clang/Tooling/Tooling.h vendor/clang/dist/include/clang/module.modulemap vendor/clang/dist/lib/ARCMigrate/ARCMT.cpp vendor/clang/dist/lib/ARCMigrate/ObjCMT.cpp vendor/clang/dist/lib/ARCMigrate/PlistReporter.cpp vendor/clang/dist/lib/ARCMigrate/TransAPIUses.cpp vendor/clang/dist/lib/ARCMigrate/TransRetainReleaseDealloc.cpp vendor/clang/dist/lib/ARCMigrate/TransUnusedInitDelegate.cpp vendor/clang/dist/lib/ARCMigrate/Transforms.cpp vendor/clang/dist/lib/ARCMigrate/Transforms.h vendor/clang/dist/lib/AST/ASTContext.cpp vendor/clang/dist/lib/AST/ASTDumper.cpp vendor/clang/dist/lib/AST/ASTImporter.cpp vendor/clang/dist/lib/AST/AttrImpl.cpp vendor/clang/dist/lib/AST/CXXABI.h vendor/clang/dist/lib/AST/CXXInheritance.cpp vendor/clang/dist/lib/AST/CommentLexer.cpp vendor/clang/dist/lib/AST/Decl.cpp vendor/clang/dist/lib/AST/DeclBase.cpp vendor/clang/dist/lib/AST/DeclCXX.cpp vendor/clang/dist/lib/AST/DeclGroup.cpp vendor/clang/dist/lib/AST/DeclObjC.cpp vendor/clang/dist/lib/AST/DeclTemplate.cpp vendor/clang/dist/lib/AST/Expr.cpp vendor/clang/dist/lib/AST/ExprCXX.cpp vendor/clang/dist/lib/AST/ExprClassification.cpp vendor/clang/dist/lib/AST/ExprConstant.cpp vendor/clang/dist/lib/AST/ExternalASTSource.cpp vendor/clang/dist/lib/AST/InheritViz.cpp vendor/clang/dist/lib/AST/ItaniumCXXABI.cpp vendor/clang/dist/lib/AST/ItaniumMangle.cpp vendor/clang/dist/lib/AST/MicrosoftCXXABI.cpp vendor/clang/dist/lib/AST/MicrosoftMangle.cpp vendor/clang/dist/lib/AST/NSAPI.cpp vendor/clang/dist/lib/AST/RecordLayoutBuilder.cpp vendor/clang/dist/lib/AST/Stmt.cpp vendor/clang/dist/lib/AST/StmtPrinter.cpp vendor/clang/dist/lib/AST/StmtProfile.cpp vendor/clang/dist/lib/AST/Type.cpp vendor/clang/dist/lib/AST/TypePrinter.cpp vendor/clang/dist/lib/AST/VTableBuilder.cpp vendor/clang/dist/lib/ASTMatchers/ASTMatchFinder.cpp vendor/clang/dist/lib/ASTMatchers/CMakeLists.txt vendor/clang/dist/lib/ASTMatchers/Dynamic/Diagnostics.cpp vendor/clang/dist/lib/ASTMatchers/Dynamic/Marshallers.h vendor/clang/dist/lib/ASTMatchers/Dynamic/Registry.cpp vendor/clang/dist/lib/Analysis/AnalysisDeclContext.cpp vendor/clang/dist/lib/Analysis/CFG.cpp vendor/clang/dist/lib/Analysis/Consumed.cpp vendor/clang/dist/lib/Analysis/FormatString.cpp vendor/clang/dist/lib/Analysis/LiveVariables.cpp vendor/clang/dist/lib/Analysis/PrintfFormatString.cpp vendor/clang/dist/lib/Analysis/ThreadSafety.cpp vendor/clang/dist/lib/Analysis/ThreadSafetyCommon.cpp vendor/clang/dist/lib/Analysis/ThreadSafetyTIL.cpp vendor/clang/dist/lib/Analysis/UninitializedValues.cpp vendor/clang/dist/lib/Basic/Diagnostic.cpp vendor/clang/dist/lib/Basic/DiagnosticIDs.cpp vendor/clang/dist/lib/Basic/FileManager.cpp vendor/clang/dist/lib/Basic/IdentifierTable.cpp vendor/clang/dist/lib/Basic/LangOptions.cpp vendor/clang/dist/lib/Basic/Module.cpp vendor/clang/dist/lib/Basic/OpenMPKinds.cpp vendor/clang/dist/lib/Basic/SanitizerBlacklist.cpp vendor/clang/dist/lib/Basic/Sanitizers.cpp vendor/clang/dist/lib/Basic/SourceManager.cpp vendor/clang/dist/lib/Basic/TargetInfo.cpp vendor/clang/dist/lib/Basic/Targets.cpp vendor/clang/dist/lib/Basic/Version.cpp vendor/clang/dist/lib/Basic/VersionTuple.cpp vendor/clang/dist/lib/Basic/VirtualFileSystem.cpp vendor/clang/dist/lib/CodeGen/ABIInfo.h vendor/clang/dist/lib/CodeGen/BackendUtil.cpp vendor/clang/dist/lib/CodeGen/CGAtomic.cpp vendor/clang/dist/lib/CodeGen/CGBlocks.cpp vendor/clang/dist/lib/CodeGen/CGBuilder.h vendor/clang/dist/lib/CodeGen/CGBuiltin.cpp vendor/clang/dist/lib/CodeGen/CGCUDANV.cpp vendor/clang/dist/lib/CodeGen/CGCUDARuntime.h vendor/clang/dist/lib/CodeGen/CGCXX.cpp vendor/clang/dist/lib/CodeGen/CGCXXABI.cpp vendor/clang/dist/lib/CodeGen/CGCXXABI.h vendor/clang/dist/lib/CodeGen/CGCall.cpp vendor/clang/dist/lib/CodeGen/CGClass.cpp vendor/clang/dist/lib/CodeGen/CGCleanup.cpp vendor/clang/dist/lib/CodeGen/CGCleanup.h vendor/clang/dist/lib/CodeGen/CGDebugInfo.cpp vendor/clang/dist/lib/CodeGen/CGDebugInfo.h vendor/clang/dist/lib/CodeGen/CGDecl.cpp vendor/clang/dist/lib/CodeGen/CGDeclCXX.cpp vendor/clang/dist/lib/CodeGen/CGException.cpp vendor/clang/dist/lib/CodeGen/CGExpr.cpp vendor/clang/dist/lib/CodeGen/CGExprAgg.cpp vendor/clang/dist/lib/CodeGen/CGExprCXX.cpp vendor/clang/dist/lib/CodeGen/CGExprComplex.cpp vendor/clang/dist/lib/CodeGen/CGExprConstant.cpp vendor/clang/dist/lib/CodeGen/CGExprScalar.cpp vendor/clang/dist/lib/CodeGen/CGLoopInfo.cpp vendor/clang/dist/lib/CodeGen/CGLoopInfo.h vendor/clang/dist/lib/CodeGen/CGObjC.cpp vendor/clang/dist/lib/CodeGen/CGObjCGNU.cpp vendor/clang/dist/lib/CodeGen/CGObjCMac.cpp vendor/clang/dist/lib/CodeGen/CGObjCRuntime.cpp vendor/clang/dist/lib/CodeGen/CGOpenMPRuntime.cpp vendor/clang/dist/lib/CodeGen/CGOpenMPRuntime.h vendor/clang/dist/lib/CodeGen/CGRecordLayout.h vendor/clang/dist/lib/CodeGen/CGRecordLayoutBuilder.cpp vendor/clang/dist/lib/CodeGen/CGStmt.cpp vendor/clang/dist/lib/CodeGen/CGStmtOpenMP.cpp vendor/clang/dist/lib/CodeGen/CGVTT.cpp vendor/clang/dist/lib/CodeGen/CGVTables.cpp vendor/clang/dist/lib/CodeGen/CGValue.h vendor/clang/dist/lib/CodeGen/CMakeLists.txt vendor/clang/dist/lib/CodeGen/CodeGenAction.cpp vendor/clang/dist/lib/CodeGen/CodeGenFunction.cpp vendor/clang/dist/lib/CodeGen/CodeGenFunction.h vendor/clang/dist/lib/CodeGen/CodeGenModule.cpp vendor/clang/dist/lib/CodeGen/CodeGenModule.h vendor/clang/dist/lib/CodeGen/CodeGenPGO.cpp vendor/clang/dist/lib/CodeGen/CodeGenPGO.h vendor/clang/dist/lib/CodeGen/CodeGenTypes.cpp vendor/clang/dist/lib/CodeGen/CodeGenTypes.h vendor/clang/dist/lib/CodeGen/CoverageMappingGen.cpp vendor/clang/dist/lib/CodeGen/EHScopeStack.h vendor/clang/dist/lib/CodeGen/ItaniumCXXABI.cpp vendor/clang/dist/lib/CodeGen/MicrosoftCXXABI.cpp vendor/clang/dist/lib/CodeGen/ModuleBuilder.cpp vendor/clang/dist/lib/CodeGen/SanitizerMetadata.h vendor/clang/dist/lib/CodeGen/TargetInfo.cpp vendor/clang/dist/lib/Driver/CrossWindowsToolChain.cpp vendor/clang/dist/lib/Driver/Driver.cpp vendor/clang/dist/lib/Driver/Job.cpp vendor/clang/dist/lib/Driver/MSVCToolChain.cpp vendor/clang/dist/lib/Driver/Multilib.cpp vendor/clang/dist/lib/Driver/SanitizerArgs.cpp vendor/clang/dist/lib/Driver/ToolChain.cpp vendor/clang/dist/lib/Driver/ToolChains.cpp vendor/clang/dist/lib/Driver/ToolChains.h vendor/clang/dist/lib/Driver/Tools.cpp vendor/clang/dist/lib/Driver/Tools.h vendor/clang/dist/lib/Driver/Types.cpp vendor/clang/dist/lib/Edit/EditedSource.cpp vendor/clang/dist/lib/Format/BreakableToken.cpp vendor/clang/dist/lib/Format/ContinuationIndenter.cpp vendor/clang/dist/lib/Format/Format.cpp vendor/clang/dist/lib/Format/FormatToken.cpp vendor/clang/dist/lib/Format/FormatToken.h vendor/clang/dist/lib/Format/TokenAnnotator.cpp vendor/clang/dist/lib/Format/TokenAnnotator.h vendor/clang/dist/lib/Format/UnwrappedLineFormatter.cpp vendor/clang/dist/lib/Format/UnwrappedLineFormatter.h vendor/clang/dist/lib/Format/UnwrappedLineParser.cpp vendor/clang/dist/lib/Format/UnwrappedLineParser.h vendor/clang/dist/lib/Format/WhitespaceManager.cpp vendor/clang/dist/lib/Format/WhitespaceManager.h vendor/clang/dist/lib/Frontend/ASTConsumers.cpp vendor/clang/dist/lib/Frontend/ASTMerge.cpp vendor/clang/dist/lib/Frontend/ASTUnit.cpp vendor/clang/dist/lib/Frontend/CacheTokens.cpp vendor/clang/dist/lib/Frontend/ChainedIncludesSource.cpp vendor/clang/dist/lib/Frontend/CompilerInstance.cpp vendor/clang/dist/lib/Frontend/CompilerInvocation.cpp vendor/clang/dist/lib/Frontend/DependencyFile.cpp vendor/clang/dist/lib/Frontend/FrontendAction.cpp vendor/clang/dist/lib/Frontend/FrontendActions.cpp vendor/clang/dist/lib/Frontend/FrontendOptions.cpp vendor/clang/dist/lib/Frontend/HeaderIncludeGen.cpp vendor/clang/dist/lib/Frontend/InitHeaderSearch.cpp vendor/clang/dist/lib/Frontend/InitPreprocessor.cpp vendor/clang/dist/lib/Frontend/ModuleDependencyCollector.cpp vendor/clang/dist/lib/Frontend/MultiplexConsumer.cpp vendor/clang/dist/lib/Frontend/PrintPreprocessedOutput.cpp vendor/clang/dist/lib/Frontend/Rewrite/InclusionRewriter.cpp vendor/clang/dist/lib/Frontend/Rewrite/RewriteModernObjC.cpp vendor/clang/dist/lib/Frontend/Rewrite/RewriteObjC.cpp vendor/clang/dist/lib/Frontend/SerializedDiagnosticPrinter.cpp vendor/clang/dist/lib/Frontend/TextDiagnostic.cpp vendor/clang/dist/lib/Frontend/VerifyDiagnosticConsumer.cpp vendor/clang/dist/lib/Headers/CMakeLists.txt vendor/clang/dist/lib/Headers/Intrin.h vendor/clang/dist/lib/Headers/__stddef_max_align_t.h vendor/clang/dist/lib/Headers/altivec.h vendor/clang/dist/lib/Headers/arm_acle.h vendor/clang/dist/lib/Headers/avx2intrin.h vendor/clang/dist/lib/Headers/avx512bwintrin.h vendor/clang/dist/lib/Headers/avx512erintrin.h vendor/clang/dist/lib/Headers/avx512fintrin.h vendor/clang/dist/lib/Headers/avx512vlbwintrin.h vendor/clang/dist/lib/Headers/avx512vlintrin.h vendor/clang/dist/lib/Headers/avxintrin.h vendor/clang/dist/lib/Headers/emmintrin.h vendor/clang/dist/lib/Headers/immintrin.h vendor/clang/dist/lib/Headers/module.modulemap vendor/clang/dist/lib/Headers/stdatomic.h vendor/clang/dist/lib/Headers/unwind.h vendor/clang/dist/lib/Headers/xmmintrin.h vendor/clang/dist/lib/Index/SimpleFormatContext.h vendor/clang/dist/lib/Index/USRGeneration.cpp vendor/clang/dist/lib/Lex/HeaderSearch.cpp vendor/clang/dist/lib/Lex/Lexer.cpp vendor/clang/dist/lib/Lex/LiteralSupport.cpp vendor/clang/dist/lib/Lex/MacroArgs.cpp vendor/clang/dist/lib/Lex/MacroInfo.cpp vendor/clang/dist/lib/Lex/ModuleMap.cpp vendor/clang/dist/lib/Lex/PPConditionalDirectiveRecord.cpp vendor/clang/dist/lib/Lex/PPDirectives.cpp vendor/clang/dist/lib/Lex/PPExpressions.cpp vendor/clang/dist/lib/Lex/PPLexerChange.cpp vendor/clang/dist/lib/Lex/PPMacroExpansion.cpp vendor/clang/dist/lib/Lex/Pragma.cpp vendor/clang/dist/lib/Lex/PreprocessingRecord.cpp vendor/clang/dist/lib/Lex/Preprocessor.cpp vendor/clang/dist/lib/Lex/ScratchBuffer.cpp vendor/clang/dist/lib/Lex/TokenLexer.cpp vendor/clang/dist/lib/Parse/ParseCXXInlineMethods.cpp vendor/clang/dist/lib/Parse/ParseDecl.cpp vendor/clang/dist/lib/Parse/ParseDeclCXX.cpp vendor/clang/dist/lib/Parse/ParseExpr.cpp vendor/clang/dist/lib/Parse/ParseExprCXX.cpp vendor/clang/dist/lib/Parse/ParseInit.cpp vendor/clang/dist/lib/Parse/ParseObjc.cpp vendor/clang/dist/lib/Parse/ParseOpenMP.cpp vendor/clang/dist/lib/Parse/ParsePragma.cpp vendor/clang/dist/lib/Parse/ParseStmt.cpp vendor/clang/dist/lib/Parse/ParseStmtAsm.cpp vendor/clang/dist/lib/Parse/ParseTemplate.cpp vendor/clang/dist/lib/Parse/Parser.cpp vendor/clang/dist/lib/Parse/RAIIObjectsForParser.h vendor/clang/dist/lib/Rewrite/RewriteRope.cpp vendor/clang/dist/lib/Rewrite/Rewriter.cpp vendor/clang/dist/lib/Sema/AnalysisBasedWarnings.cpp vendor/clang/dist/lib/Sema/CodeCompleteConsumer.cpp vendor/clang/dist/lib/Sema/DeclSpec.cpp vendor/clang/dist/lib/Sema/DelayedDiagnostic.cpp vendor/clang/dist/lib/Sema/IdentifierResolver.cpp vendor/clang/dist/lib/Sema/JumpDiagnostics.cpp vendor/clang/dist/lib/Sema/MultiplexExternalSemaSource.cpp vendor/clang/dist/lib/Sema/Scope.cpp vendor/clang/dist/lib/Sema/ScopeInfo.cpp vendor/clang/dist/lib/Sema/Sema.cpp vendor/clang/dist/lib/Sema/SemaAccess.cpp vendor/clang/dist/lib/Sema/SemaAttr.cpp vendor/clang/dist/lib/Sema/SemaCUDA.cpp vendor/clang/dist/lib/Sema/SemaCXXScopeSpec.cpp vendor/clang/dist/lib/Sema/SemaCast.cpp vendor/clang/dist/lib/Sema/SemaChecking.cpp vendor/clang/dist/lib/Sema/SemaCodeComplete.cpp vendor/clang/dist/lib/Sema/SemaDecl.cpp vendor/clang/dist/lib/Sema/SemaDeclAttr.cpp vendor/clang/dist/lib/Sema/SemaDeclCXX.cpp vendor/clang/dist/lib/Sema/SemaDeclObjC.cpp vendor/clang/dist/lib/Sema/SemaExceptionSpec.cpp vendor/clang/dist/lib/Sema/SemaExpr.cpp vendor/clang/dist/lib/Sema/SemaExprCXX.cpp vendor/clang/dist/lib/Sema/SemaExprMember.cpp vendor/clang/dist/lib/Sema/SemaExprObjC.cpp vendor/clang/dist/lib/Sema/SemaFixItUtils.cpp vendor/clang/dist/lib/Sema/SemaInit.cpp vendor/clang/dist/lib/Sema/SemaLambda.cpp vendor/clang/dist/lib/Sema/SemaLookup.cpp vendor/clang/dist/lib/Sema/SemaObjCProperty.cpp vendor/clang/dist/lib/Sema/SemaOpenMP.cpp vendor/clang/dist/lib/Sema/SemaOverload.cpp vendor/clang/dist/lib/Sema/SemaPseudoObject.cpp vendor/clang/dist/lib/Sema/SemaStmt.cpp vendor/clang/dist/lib/Sema/SemaStmtAsm.cpp vendor/clang/dist/lib/Sema/SemaTemplate.cpp vendor/clang/dist/lib/Sema/SemaTemplateDeduction.cpp vendor/clang/dist/lib/Sema/SemaTemplateInstantiate.cpp vendor/clang/dist/lib/Sema/SemaTemplateInstantiateDecl.cpp vendor/clang/dist/lib/Sema/SemaTemplateVariadic.cpp vendor/clang/dist/lib/Sema/SemaType.cpp vendor/clang/dist/lib/Sema/TreeTransform.h vendor/clang/dist/lib/Serialization/ASTCommon.cpp vendor/clang/dist/lib/Serialization/ASTCommon.h vendor/clang/dist/lib/Serialization/ASTReader.cpp vendor/clang/dist/lib/Serialization/ASTReaderDecl.cpp vendor/clang/dist/lib/Serialization/ASTReaderStmt.cpp vendor/clang/dist/lib/Serialization/ASTWriter.cpp vendor/clang/dist/lib/Serialization/ASTWriterDecl.cpp vendor/clang/dist/lib/Serialization/ASTWriterStmt.cpp vendor/clang/dist/lib/Serialization/GlobalModuleIndex.cpp vendor/clang/dist/lib/Serialization/Module.cpp vendor/clang/dist/lib/Serialization/ModuleManager.cpp vendor/clang/dist/lib/StaticAnalyzer/Checkers/CStringChecker.cpp vendor/clang/dist/lib/StaticAnalyzer/Checkers/CheckSecuritySyntaxOnly.cpp vendor/clang/dist/lib/StaticAnalyzer/Checkers/Checkers.td vendor/clang/dist/lib/StaticAnalyzer/Checkers/DeadStoresChecker.cpp vendor/clang/dist/lib/StaticAnalyzer/Checkers/DereferenceChecker.cpp vendor/clang/dist/lib/StaticAnalyzer/Checkers/InterCheckerAPI.h vendor/clang/dist/lib/StaticAnalyzer/Checkers/IvarInvalidationChecker.cpp vendor/clang/dist/lib/StaticAnalyzer/Checkers/MacOSKeychainAPIChecker.cpp vendor/clang/dist/lib/StaticAnalyzer/Checkers/MallocChecker.cpp vendor/clang/dist/lib/StaticAnalyzer/Checkers/MallocOverflowSecurityChecker.cpp vendor/clang/dist/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/AnalyzerOptions.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/BugReporter.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/Checker.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/ExprEngine.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/ExprEngineC.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/HTMLDiagnostics.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/MemRegion.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/PathDiagnostic.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/PlistDiagnostics.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/RegionStore.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/SimpleConstraintManager.h vendor/clang/dist/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp vendor/clang/dist/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp vendor/clang/dist/lib/StaticAnalyzer/Frontend/CheckerRegistration.cpp vendor/clang/dist/lib/StaticAnalyzer/Frontend/ModelInjector.h vendor/clang/dist/lib/Tooling/CommonOptionsParser.cpp vendor/clang/dist/lib/Tooling/CompilationDatabase.cpp vendor/clang/dist/lib/Tooling/Core/Replacement.cpp vendor/clang/dist/lib/Tooling/FileMatchTrie.cpp vendor/clang/dist/lib/Tooling/JSONCompilationDatabase.cpp vendor/clang/dist/lib/Tooling/Tooling.cpp vendor/clang/dist/runtime/compiler-rt/Makefile vendor/clang/dist/test/ARCMT/nonobjc-to-objc-cast.m vendor/clang/dist/test/ARCMT/nonobjc-to-objc-cast.m.result vendor/clang/dist/test/ARCMT/objcmt-ns-macros.m vendor/clang/dist/test/ARCMT/objcmt-ns-macros.m.result vendor/clang/dist/test/ARCMT/objcmt-property-dot-syntax.m vendor/clang/dist/test/ARCMT/objcmt-property-dot-syntax.m.result vendor/clang/dist/test/ARCMT/objcmt-property.m vendor/clang/dist/test/ARCMT/objcmt-property.m.result vendor/clang/dist/test/Analysis/Malloc+MismatchedDeallocator+NewDelete.cpp vendor/clang/dist/test/Analysis/Malloc+MismatchedDeallocator_intersections.cpp vendor/clang/dist/test/Analysis/MismatchedDeallocator-checker-test.mm vendor/clang/dist/test/Analysis/MismatchedDeallocator-path-notes.cpp vendor/clang/dist/test/Analysis/NewDelete-checker-test.cpp vendor/clang/dist/test/Analysis/NewDelete-intersections.mm vendor/clang/dist/test/Analysis/NewDelete-path-notes.cpp vendor/clang/dist/test/Analysis/array-struct.c vendor/clang/dist/test/Analysis/conditional-path-notes.c vendor/clang/dist/test/Analysis/crash-trace.c vendor/clang/dist/test/Analysis/cxx-for-range.cpp vendor/clang/dist/test/Analysis/diagnostics/deref-track-symbolic-region.c vendor/clang/dist/test/Analysis/diagnostics/report-issues-within-main-file.cpp vendor/clang/dist/test/Analysis/diagnostics/undef-value-caller.c vendor/clang/dist/test/Analysis/diagnostics/undef-value-param.c vendor/clang/dist/test/Analysis/diagnostics/undef-value-param.m vendor/clang/dist/test/Analysis/dtor.cpp vendor/clang/dist/test/Analysis/edges-new.mm vendor/clang/dist/test/Analysis/free.c vendor/clang/dist/test/Analysis/html-diags.c vendor/clang/dist/test/Analysis/inline-plist.c vendor/clang/dist/test/Analysis/inline-unique-reports.c vendor/clang/dist/test/Analysis/inlining/eager-reclamation-path-notes.c vendor/clang/dist/test/Analysis/inlining/eager-reclamation-path-notes.cpp vendor/clang/dist/test/Analysis/inlining/path-notes.c vendor/clang/dist/test/Analysis/inlining/path-notes.cpp vendor/clang/dist/test/Analysis/inlining/path-notes.m vendor/clang/dist/test/Analysis/malloc-annotations.c vendor/clang/dist/test/Analysis/malloc-plist.c vendor/clang/dist/test/Analysis/malloc.c vendor/clang/dist/test/Analysis/method-call-path-notes.cpp vendor/clang/dist/test/Analysis/model-file.cpp vendor/clang/dist/test/Analysis/null-deref-path-notes.m vendor/clang/dist/test/Analysis/objc-arc.m vendor/clang/dist/test/Analysis/objc-radar17039661.m vendor/clang/dist/test/Analysis/outofbound.c vendor/clang/dist/test/Analysis/plist-macros.cpp vendor/clang/dist/test/Analysis/plist-output-alternate.m vendor/clang/dist/test/Analysis/plist-output.m vendor/clang/dist/test/Analysis/properties.m vendor/clang/dist/test/Analysis/redefined_system.c vendor/clang/dist/test/Analysis/retain-release-path-notes-gc.m vendor/clang/dist/test/Analysis/retain-release-path-notes.m vendor/clang/dist/test/Analysis/security-syntax-checks.m vendor/clang/dist/test/Analysis/stack-addr-ps.c vendor/clang/dist/test/Analysis/undef-buffers.c vendor/clang/dist/test/Analysis/unix-fns.c vendor/clang/dist/test/CXX/basic/basic.lookup/basic.lookup.qual/class.qual/p2.cpp vendor/clang/dist/test/CXX/basic/basic.types/p10.cpp vendor/clang/dist/test/CXX/class.derived/class.virtual/p2.cpp vendor/clang/dist/test/CXX/class/class.friend/p1.cpp vendor/clang/dist/test/CXX/conv/conv.mem/p4.cpp vendor/clang/dist/test/CXX/dcl.dcl/dcl.attr/dcl.align/p5.cpp vendor/clang/dist/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p3.cpp vendor/clang/dist/test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p9.cpp vendor/clang/dist/test/CXX/dcl.decl/dcl.fct.def/dcl.fct.def.default/p2.cpp vendor/clang/dist/test/CXX/dcl.decl/dcl.init/dcl.init.list/p7-0x.cpp vendor/clang/dist/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5-0x.cpp vendor/clang/dist/test/CXX/dcl.decl/dcl.init/dcl.init.ref/p5-var.cpp vendor/clang/dist/test/CXX/dcl.decl/dcl.init/p6.cpp vendor/clang/dist/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p3.cpp vendor/clang/dist/test/CXX/dcl.decl/dcl.meaning/dcl.fct.default/p4.cpp vendor/clang/dist/test/CXX/drs/dr0xx.cpp vendor/clang/dist/test/CXX/drs/dr14xx.cpp vendor/clang/dist/test/CXX/drs/dr15xx.cpp vendor/clang/dist/test/CXX/drs/dr16xx.cpp vendor/clang/dist/test/CXX/drs/dr2xx.cpp vendor/clang/dist/test/CXX/drs/dr3xx.cpp vendor/clang/dist/test/CXX/drs/dr412.cpp vendor/clang/dist/test/CXX/drs/dr4xx.cpp vendor/clang/dist/test/CXX/except/except.spec/p14-ir.cpp vendor/clang/dist/test/CXX/expr/expr.prim/expr.prim.general/p8-0x.cpp vendor/clang/dist/test/CXX/expr/expr.prim/expr.prim.lambda/p16.cpp vendor/clang/dist/test/CXX/expr/expr.prim/expr.prim.lambda/p2.cpp vendor/clang/dist/test/CXX/expr/expr.prim/expr.prim.lambda/templates.cpp vendor/clang/dist/test/CXX/expr/p10-0x.cpp vendor/clang/dist/test/CXX/special/class.copy/implicit-move.cpp vendor/clang/dist/test/CXX/special/class.copy/p15-inclass.cpp vendor/clang/dist/test/CXX/special/class.dtor/p10-0x.cpp vendor/clang/dist/test/CXX/special/class.dtor/p9.cpp vendor/clang/dist/test/CXX/special/class.inhctor/p2.cpp vendor/clang/dist/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp vendor/clang/dist/test/CXX/temp/temp.arg/temp.arg.nontype/p5.cpp vendor/clang/dist/test/CXX/temp/temp.decls/temp.class/temp.mem.func/p1inst.cpp vendor/clang/dist/test/CXX/temp/temp.decls/temp.fct/temp.func.order/p4.cpp vendor/clang/dist/test/CXX/temp/temp.decls/temp.mem/p5.cpp vendor/clang/dist/test/CXX/temp/temp.param/p15-cxx0x.cpp vendor/clang/dist/test/CXX/temp/temp.res/temp.local/p3.cpp vendor/clang/dist/test/CodeGen/2004-06-17-UnorderedCompares.c vendor/clang/dist/test/CodeGen/2007-02-25-C-DotDotDot.c vendor/clang/dist/test/CodeGen/2007-03-27-VarLengthArray.c vendor/clang/dist/test/CodeGen/2008-07-29-override-alias-decl.c vendor/clang/dist/test/CodeGen/2008-08-07-AlignPadding1.c vendor/clang/dist/test/CodeGen/2009-01-05-BlockInlining.c vendor/clang/dist/test/CodeGen/2009-02-13-zerosize-union-field.c vendor/clang/dist/test/CodeGen/2009-10-20-GlobalDebug.c vendor/clang/dist/test/CodeGen/2010-02-15-DbgStaticVar.c vendor/clang/dist/test/CodeGen/2010-02-16-DbgScopes.c vendor/clang/dist/test/CodeGen/2010-03-09-DbgInfo.c vendor/clang/dist/test/CodeGen/2010-03-5-LexicalScope.c vendor/clang/dist/test/CodeGen/2010-07-08-DeclDebugLineNo.c vendor/clang/dist/test/CodeGen/2010-07-14-overconservative-align.c vendor/clang/dist/test/CodeGen/2010-07-14-ref-off-end.c vendor/clang/dist/test/CodeGen/2010-08-10-DbgConstant.c vendor/clang/dist/test/CodeGen/24-bit.c vendor/clang/dist/test/CodeGen/aarch64-inline-asm.c vendor/clang/dist/test/CodeGen/aarch64-varargs.c vendor/clang/dist/test/CodeGen/address-safety-attr.cpp vendor/clang/dist/test/CodeGen/address-space-field1.c vendor/clang/dist/test/CodeGen/address-space.c vendor/clang/dist/test/CodeGen/align-local.c vendor/clang/dist/test/CodeGen/alignment.c vendor/clang/dist/test/CodeGen/annotations-builtin.c vendor/clang/dist/test/CodeGen/annotations-field.c vendor/clang/dist/test/CodeGen/annotations-var.c vendor/clang/dist/test/CodeGen/arm-aapcs-vfp.c vendor/clang/dist/test/CodeGen/arm-abi-vector.c vendor/clang/dist/test/CodeGen/arm-arguments.c vendor/clang/dist/test/CodeGen/arm-asm-variable.c vendor/clang/dist/test/CodeGen/arm-atomics-m.c vendor/clang/dist/test/CodeGen/arm-atomics.c vendor/clang/dist/test/CodeGen/arm-clear.c vendor/clang/dist/test/CodeGen/arm-homogenous.c vendor/clang/dist/test/CodeGen/arm-vector-align.c vendor/clang/dist/test/CodeGen/arm64-abi-vector.c vendor/clang/dist/test/CodeGen/arm64-arguments.c vendor/clang/dist/test/CodeGen/arm64_neon_high_half.c vendor/clang/dist/test/CodeGen/arm64_vMaxMin.c vendor/clang/dist/test/CodeGen/arm64_vset_lane.c vendor/clang/dist/test/CodeGen/arm64_vtst.c vendor/clang/dist/test/CodeGen/asm-errors.c vendor/clang/dist/test/CodeGen/asm-inout.c vendor/clang/dist/test/CodeGen/asm-reg-var-local.c vendor/clang/dist/test/CodeGen/atomic-arm64.c vendor/clang/dist/test/CodeGen/atomic-ops.c vendor/clang/dist/test/CodeGen/atomic_ops.c vendor/clang/dist/test/CodeGen/atomics-inlining.c vendor/clang/dist/test/CodeGen/attributes.c vendor/clang/dist/test/CodeGen/avx-builtins.c vendor/clang/dist/test/CodeGen/avx-shuffle-builtins.c vendor/clang/dist/test/CodeGen/avx2-builtins.c vendor/clang/dist/test/CodeGen/avx512bw-builtins.c vendor/clang/dist/test/CodeGen/avx512f-builtins.c vendor/clang/dist/test/CodeGen/avx512vl-builtins.c vendor/clang/dist/test/CodeGen/avx512vlbw-builtins.c vendor/clang/dist/test/CodeGen/big-atomic-ops.c vendor/clang/dist/test/CodeGen/block-byref-aggr.c vendor/clang/dist/test/CodeGen/blocks-opencl.cl vendor/clang/dist/test/CodeGen/blocks-seq.c vendor/clang/dist/test/CodeGen/blocks.c vendor/clang/dist/test/CodeGen/blocksignature.c vendor/clang/dist/test/CodeGen/bool_test.c vendor/clang/dist/test/CodeGen/builtin-assume.c vendor/clang/dist/test/CodeGen/builtin-expect.c vendor/clang/dist/test/CodeGen/builtins-x86.c vendor/clang/dist/test/CodeGen/builtins.c vendor/clang/dist/test/CodeGen/c-strings.c vendor/clang/dist/test/CodeGen/c11atomics-ios.c vendor/clang/dist/test/CodeGen/c11atomics.c vendor/clang/dist/test/CodeGen/call.c vendor/clang/dist/test/CodeGen/capture-complex-expr-in-block.c vendor/clang/dist/test/CodeGen/captured-statements-nested.c vendor/clang/dist/test/CodeGen/captured-statements.c vendor/clang/dist/test/CodeGen/catch-undef-behavior.c vendor/clang/dist/test/CodeGen/cfstring.c vendor/clang/dist/test/CodeGen/cleanup-stack.c vendor/clang/dist/test/CodeGen/clear_cache.c vendor/clang/dist/test/CodeGen/complex-convert.c vendor/clang/dist/test/CodeGen/compound-literal.c vendor/clang/dist/test/CodeGen/const-arithmetic.c vendor/clang/dist/test/CodeGen/const-init.c vendor/clang/dist/test/CodeGen/darwin-string-literals.c vendor/clang/dist/test/CodeGen/debug-info-args.c vendor/clang/dist/test/CodeGen/debug-info-block-decl.c vendor/clang/dist/test/CodeGen/debug-info-block-out-return.c vendor/clang/dist/test/CodeGen/debug-info-block.c vendor/clang/dist/test/CodeGen/debug-info-enum.c vendor/clang/dist/test/CodeGen/debug-info-gline-tables-only2.c vendor/clang/dist/test/CodeGen/debug-info-limited.c vendor/clang/dist/test/CodeGen/debug-info-line.c vendor/clang/dist/test/CodeGen/debug-info-line3.c vendor/clang/dist/test/CodeGen/debug-info-line4.c vendor/clang/dist/test/CodeGen/debug-info-scope-file.c vendor/clang/dist/test/CodeGen/debug-info-scope.c vendor/clang/dist/test/CodeGen/debug-info-static.c vendor/clang/dist/test/CodeGen/debug-info-typedef.c vendor/clang/dist/test/CodeGen/debug-info-vector.c vendor/clang/dist/test/CodeGen/debug-info-version.c vendor/clang/dist/test/CodeGen/debug-info-vla.c vendor/clang/dist/test/CodeGen/debug-info.c vendor/clang/dist/test/CodeGen/dllexport.c vendor/clang/dist/test/CodeGen/dllimport.c vendor/clang/dist/test/CodeGen/enum.c vendor/clang/dist/test/CodeGen/exceptions-seh.c vendor/clang/dist/test/CodeGen/exprs.c vendor/clang/dist/test/CodeGen/ext-vector-indexing.c vendor/clang/dist/test/CodeGen/ext-vector-member-alignment.c vendor/clang/dist/test/CodeGen/extern-inline.c vendor/clang/dist/test/CodeGen/finite-math.c vendor/clang/dist/test/CodeGen/fp16-ops.c vendor/clang/dist/test/CodeGen/init.c vendor/clang/dist/test/CodeGen/inline.c vendor/clang/dist/test/CodeGen/integer-overflow.c vendor/clang/dist/test/CodeGen/kr-func-promote.c vendor/clang/dist/test/CodeGen/lineno-dbginfo.c vendor/clang/dist/test/CodeGen/linetable-endscope.c vendor/clang/dist/test/CodeGen/link-bitcode-file.c vendor/clang/dist/test/CodeGen/mangle-blocks.c vendor/clang/dist/test/CodeGen/mangle-windows.c vendor/clang/dist/test/CodeGen/mips-inline-asm-modifiers.c vendor/clang/dist/test/CodeGen/mips-varargs.c vendor/clang/dist/test/CodeGen/mrtd.c vendor/clang/dist/test/CodeGen/ms-align-tentative.c vendor/clang/dist/test/CodeGen/ms-anonymous-struct.c vendor/clang/dist/test/CodeGen/ms-declspecs.c vendor/clang/dist/test/CodeGen/ms-inline-asm.c vendor/clang/dist/test/CodeGen/ms-inline-asm.cpp vendor/clang/dist/test/CodeGen/ms-intrinsics.c vendor/clang/dist/test/CodeGen/mult-alt-generic.c vendor/clang/dist/test/CodeGen/named_reg_global.c vendor/clang/dist/test/CodeGen/no-opt-volatile-memcpy.c vendor/clang/dist/test/CodeGen/nvptx-cpus.c vendor/clang/dist/test/CodeGen/object-size.c vendor/clang/dist/test/CodeGen/packed-arrays.c vendor/clang/dist/test/CodeGen/packed-nest-unpacked.c vendor/clang/dist/test/CodeGen/packed-structure.c vendor/clang/dist/test/CodeGen/pointer-signext.c vendor/clang/dist/test/CodeGen/ppc-varargs-struct.c vendor/clang/dist/test/CodeGen/ppc64-align-long-double.c vendor/clang/dist/test/CodeGen/ppc64-align-struct.c vendor/clang/dist/test/CodeGen/ppc64-complex-parms.c vendor/clang/dist/test/CodeGen/ppc64-elf-abi.c vendor/clang/dist/test/CodeGen/ppc64-struct-onefloat.c vendor/clang/dist/test/CodeGen/ppc64-varargs-complex.c vendor/clang/dist/test/CodeGen/ppc64le-aggregates.c vendor/clang/dist/test/CodeGen/ppc64le-varargs-complex.c vendor/clang/dist/test/CodeGen/pr12251.c vendor/clang/dist/test/CodeGen/pr3518.c vendor/clang/dist/test/CodeGen/pr4349.c vendor/clang/dist/test/CodeGen/pr5406.c vendor/clang/dist/test/CodeGen/pragma-comment.c vendor/clang/dist/test/CodeGen/private-extern.c vendor/clang/dist/test/CodeGen/redefine_extname.c vendor/clang/dist/test/CodeGen/sanitize-thread-attr.cpp vendor/clang/dist/test/CodeGen/sha-builtins.c vendor/clang/dist/test/CodeGen/sparcv9-abi.c vendor/clang/dist/test/CodeGen/sparcv9-dwarf.c vendor/clang/dist/test/CodeGen/sse-builtins.c vendor/clang/dist/test/CodeGen/systemz-inline-asm.c vendor/clang/dist/test/CodeGen/target-data.c vendor/clang/dist/test/CodeGen/tbaa.cpp vendor/clang/dist/test/CodeGen/trapv.c vendor/clang/dist/test/CodeGen/unsigned-overflow.c vendor/clang/dist/test/CodeGen/unsigned-promotion.c vendor/clang/dist/test/CodeGen/variadic-gpfp-x86.c vendor/clang/dist/test/CodeGen/variadic-null-win64.c vendor/clang/dist/test/CodeGen/vla-2.c vendor/clang/dist/test/CodeGen/vla-3.c vendor/clang/dist/test/CodeGen/vla.c vendor/clang/dist/test/CodeGen/volatile-1.c vendor/clang/dist/test/CodeGen/volatile-2.c vendor/clang/dist/test/CodeGen/volatile-complex.c vendor/clang/dist/test/CodeGen/volatile.c vendor/clang/dist/test/CodeGen/windows-on-arm-dllimport-dllexport.c vendor/clang/dist/test/CodeGen/x86-atomic-long_double.c vendor/clang/dist/test/CodeGen/x86_32-arguments-darwin.c vendor/clang/dist/test/CodeGen/x86_32-arguments-linux.c vendor/clang/dist/test/CodeGen/x86_64-arguments-nacl.c vendor/clang/dist/test/CodeGen/x86_64-arguments-win32.c vendor/clang/dist/test/CodeGen/x86_64-arguments.c vendor/clang/dist/test/CodeGen/xcore-abi.c vendor/clang/dist/test/CodeGenCUDA/address-spaces.cu vendor/clang/dist/test/CodeGenCUDA/device-stub.cu vendor/clang/dist/test/CodeGenCUDA/filter-decl.cu vendor/clang/dist/test/CodeGenCUDA/launch-bounds.cu vendor/clang/dist/test/CodeGenCXX/2009-12-23-MissingSext.cpp vendor/clang/dist/test/CodeGenCXX/2010-07-23-DeclLoc.cpp vendor/clang/dist/test/CodeGenCXX/2011-12-19-init-list-ctor.cpp vendor/clang/dist/test/CodeGenCXX/2012-03-16-StoreAlign.cpp vendor/clang/dist/test/CodeGenCXX/Inputs/debug-info-class-limited.cpp vendor/clang/dist/test/CodeGenCXX/PR19955.cpp vendor/clang/dist/test/CodeGenCXX/PR20038.cpp vendor/clang/dist/test/CodeGenCXX/aarch64-neon.cpp vendor/clang/dist/test/CodeGenCXX/align-avx-complete-objects.cpp vendor/clang/dist/test/CodeGenCXX/anonymous-union-member-initializer.cpp vendor/clang/dist/test/CodeGenCXX/apple-kext-indirect-virtual-dtor-call.cpp vendor/clang/dist/test/CodeGenCXX/arm-vaarg.cpp vendor/clang/dist/test/CodeGenCXX/arm.cpp vendor/clang/dist/test/CodeGenCXX/arm64-constructor-return.cpp vendor/clang/dist/test/CodeGenCXX/arm64-empty-struct.cpp vendor/clang/dist/test/CodeGenCXX/arm64.cpp vendor/clang/dist/test/CodeGenCXX/atomicinit.cpp vendor/clang/dist/test/CodeGenCXX/bitfield.cpp vendor/clang/dist/test/CodeGenCXX/blocks-cxx11.cpp vendor/clang/dist/test/CodeGenCXX/blocks.cpp vendor/clang/dist/test/CodeGenCXX/call-with-static-chain.cpp vendor/clang/dist/test/CodeGenCXX/captured-statements.cpp vendor/clang/dist/test/CodeGenCXX/catch-undef-behavior.cpp vendor/clang/dist/test/CodeGenCXX/catch-undef-behavior2.cpp vendor/clang/dist/test/CodeGenCXX/compound-literals.cpp vendor/clang/dist/test/CodeGenCXX/condition.cpp vendor/clang/dist/test/CodeGenCXX/conditional-gnu-ext.cpp vendor/clang/dist/test/CodeGenCXX/const-init-cxx11.cpp vendor/clang/dist/test/CodeGenCXX/const-init-cxx1y.cpp vendor/clang/dist/test/CodeGenCXX/const-init.cpp vendor/clang/dist/test/CodeGenCXX/constructor-destructor-return-this.cpp vendor/clang/dist/test/CodeGenCXX/constructor-init.cpp vendor/clang/dist/test/CodeGenCXX/constructor-template.cpp vendor/clang/dist/test/CodeGenCXX/constructors.cpp vendor/clang/dist/test/CodeGenCXX/convert-to-fptr.cpp vendor/clang/dist/test/CodeGenCXX/copy-constructor-elim.cpp vendor/clang/dist/test/CodeGenCXX/copy-constructor-synthesis-2.cpp vendor/clang/dist/test/CodeGenCXX/copy-constructor-synthesis.cpp vendor/clang/dist/test/CodeGenCXX/coverage.cpp vendor/clang/dist/test/CodeGenCXX/crash.cpp vendor/clang/dist/test/CodeGenCXX/ctor-dtor-alias.cpp vendor/clang/dist/test/CodeGenCXX/cxx0x-initializer-array.cpp vendor/clang/dist/test/CodeGenCXX/cxx0x-initializer-references.cpp vendor/clang/dist/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist-pr12086.cpp vendor/clang/dist/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist-startend.cpp vendor/clang/dist/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp vendor/clang/dist/test/CodeGenCXX/cxx11-exception-spec.cpp vendor/clang/dist/test/CodeGenCXX/cxx11-initializer-aggregate.cpp vendor/clang/dist/test/CodeGenCXX/cxx11-initializer-array-new.cpp vendor/clang/dist/test/CodeGenCXX/cxx11-thread-local-reference.cpp vendor/clang/dist/test/CodeGenCXX/cxx11-thread-local.cpp vendor/clang/dist/test/CodeGenCXX/cxx11-user-defined-literal.cpp vendor/clang/dist/test/CodeGenCXX/cxx11-vtable-key-function.cpp vendor/clang/dist/test/CodeGenCXX/cxx1y-init-captures.cpp vendor/clang/dist/test/CodeGenCXX/cxx1y-initializer-aggregate.cpp vendor/clang/dist/test/CodeGenCXX/cxx1y-sized-deallocation.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-access.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-alias.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-anon-union-vars.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-artificial-arg.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-blocks.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-char16.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-class-nolimit.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-class.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-cxx1y.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-decl-nested.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-dup-fwd-decl.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-enum-class.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-enum.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-flex-member.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-fn-template.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-function-context.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-fwd-ref.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-global-ctor-dtor.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-global.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-globalinit.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-indirect-field-decl.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-limited.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-line-if.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-line.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-method.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-namespace.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-nullptr.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-ptr-to-member-function.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-qualifiers.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-rvalue-ref.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-scope.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-static-fns.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-static-member.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-template-explicit-specialization.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-template-fwd.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-template-limit.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-template-member.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-template-partial-specialization.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-template-quals.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-template.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-thunk.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-union-template.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-union.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-uuid.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-varargs.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-vtable-optzn.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-wchar.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-windows-dtor.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-zero-length-arrays.cpp vendor/clang/dist/test/CodeGenCXX/debug-info.cpp vendor/clang/dist/test/CodeGenCXX/debug-lambda-expressions.cpp vendor/clang/dist/test/CodeGenCXX/debug-lambda-this.cpp vendor/clang/dist/test/CodeGenCXX/deferred-global-init.cpp vendor/clang/dist/test/CodeGenCXX/delete-two-arg.cpp vendor/clang/dist/test/CodeGenCXX/delete.cpp vendor/clang/dist/test/CodeGenCXX/derived-to-base-conv.cpp vendor/clang/dist/test/CodeGenCXX/derived-to-virtual-base-class-calls-final.cpp vendor/clang/dist/test/CodeGenCXX/destructor-debug-info.cpp vendor/clang/dist/test/CodeGenCXX/destructors.cpp vendor/clang/dist/test/CodeGenCXX/dllexport-members.cpp vendor/clang/dist/test/CodeGenCXX/dllexport.cpp vendor/clang/dist/test/CodeGenCXX/dllimport-rtti.cpp vendor/clang/dist/test/CodeGenCXX/dllimport.cpp vendor/clang/dist/test/CodeGenCXX/eh.cpp vendor/clang/dist/test/CodeGenCXX/empty-classes.cpp vendor/clang/dist/test/CodeGenCXX/exceptions.cpp vendor/clang/dist/test/CodeGenCXX/field-access-debug-info.cpp vendor/clang/dist/test/CodeGenCXX/global-array-destruction.cpp vendor/clang/dist/test/CodeGenCXX/global-dtor-no-atexit.cpp vendor/clang/dist/test/CodeGenCXX/global-init.cpp vendor/clang/dist/test/CodeGenCXX/globalinit-loc.cpp vendor/clang/dist/test/CodeGenCXX/homogeneous-aggregates.cpp vendor/clang/dist/test/CodeGenCXX/inheriting-constructor.cpp vendor/clang/dist/test/CodeGenCXX/key-function-vtable.cpp vendor/clang/dist/test/CodeGenCXX/lambda-expressions-nested-linkage.cpp vendor/clang/dist/test/CodeGenCXX/lambda-expressions.cpp vendor/clang/dist/test/CodeGenCXX/linetable-cleanup.cpp vendor/clang/dist/test/CodeGenCXX/linetable-eh.cpp vendor/clang/dist/test/CodeGenCXX/linetable-fnbegin.cpp vendor/clang/dist/test/CodeGenCXX/lpad-linetable.cpp vendor/clang/dist/test/CodeGenCXX/lvalue-bitcasts.cpp vendor/clang/dist/test/CodeGenCXX/m64-ptr.cpp vendor/clang/dist/test/CodeGenCXX/mangle-abi-examples.cpp vendor/clang/dist/test/CodeGenCXX/mangle-exprs.cpp vendor/clang/dist/test/CodeGenCXX/mangle-lambdas.cpp vendor/clang/dist/test/CodeGenCXX/mangle-local-class-vtables.cpp vendor/clang/dist/test/CodeGenCXX/mangle-local-classes-nested.cpp vendor/clang/dist/test/CodeGenCXX/mangle-ms-abi-examples.cpp vendor/clang/dist/test/CodeGenCXX/mangle-ms-arg-qualifiers.cpp vendor/clang/dist/test/CodeGenCXX/mangle-ms-cxx11.cpp vendor/clang/dist/test/CodeGenCXX/mangle-ms-cxx14.cpp vendor/clang/dist/test/CodeGenCXX/mangle-ms-return-qualifiers.cpp vendor/clang/dist/test/CodeGenCXX/mangle-ms.cpp vendor/clang/dist/test/CodeGenCXX/mangle-subst-std.cpp vendor/clang/dist/test/CodeGenCXX/mangle-subst.cpp vendor/clang/dist/test/CodeGenCXX/mangle-template.cpp vendor/clang/dist/test/CodeGenCXX/mangle.cpp vendor/clang/dist/test/CodeGenCXX/member-expressions.cpp vendor/clang/dist/test/CodeGenCXX/member-function-pointers.cpp vendor/clang/dist/test/CodeGenCXX/member-functions.cpp vendor/clang/dist/test/CodeGenCXX/member-init-anon-union.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-abi-arg-order.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-abi-array-cookies.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-abi-byval-sret.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-abi-byval-thunks.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-abi-dynamic-cast.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-abi-member-pointers.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-abi-methods.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-abi-multiple-nonvirtual-inheritance.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-abi-rtti.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-abi-sret-and-byval.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-abi-static-initializers.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-abi-structors.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-abi-thunks.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-abi-try-throw.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-abi-typeid.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-abi-vbtables.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-abi-vftables.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-abi-virtual-inheritance-vtordisps.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-abi-virtual-inheritance.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-abi-virtual-member-pointers.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-abi-vmemptr-conflicts.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-abi-vtables-multiple-nonvirtual-inheritance-this-adjustment.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-abi-vtables-return-thunks.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-interface.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-no-rtti-data.cpp vendor/clang/dist/test/CodeGenCXX/microsoft-uuidof.cpp vendor/clang/dist/test/CodeGenCXX/mips-size_t-ptrdiff_t.cpp vendor/clang/dist/test/CodeGenCXX/ms-inline-asm-return.cpp vendor/clang/dist/test/CodeGenCXX/ms-integer-static-data-members-exported.cpp vendor/clang/dist/test/CodeGenCXX/ms-integer-static-data-members.cpp vendor/clang/dist/test/CodeGenCXX/ms_wide_predefined_expr.cpp vendor/clang/dist/test/CodeGenCXX/new-array-init.cpp vendor/clang/dist/test/CodeGenCXX/new-overflow.cpp vendor/clang/dist/test/CodeGenCXX/new.cpp vendor/clang/dist/test/CodeGenCXX/no-opt-volatile-memcpy.cpp vendor/clang/dist/test/CodeGenCXX/noexcept.cpp vendor/clang/dist/test/CodeGenCXX/nrvo.cpp vendor/clang/dist/test/CodeGenCXX/override-layout.cpp vendor/clang/dist/test/CodeGenCXX/partial-destruction.cpp vendor/clang/dist/test/CodeGenCXX/pod-member-memcpys.cpp vendor/clang/dist/test/CodeGenCXX/pointers-to-data-members.cpp vendor/clang/dist/test/CodeGenCXX/pr12251.cpp vendor/clang/dist/test/CodeGenCXX/pr20897.cpp vendor/clang/dist/test/CodeGenCXX/pragma-init_seg.cpp vendor/clang/dist/test/CodeGenCXX/predefined-expr.cpp vendor/clang/dist/test/CodeGenCXX/reference-cast.cpp vendor/clang/dist/test/CodeGenCXX/references.cpp vendor/clang/dist/test/CodeGenCXX/rtti-linkage.cpp vendor/clang/dist/test/CodeGenCXX/rvalue-references.cpp vendor/clang/dist/test/CodeGenCXX/scoped-enums-debug-info.cpp vendor/clang/dist/test/CodeGenCXX/sections.cpp vendor/clang/dist/test/CodeGenCXX/sizeof-unwind-exception.cpp vendor/clang/dist/test/CodeGenCXX/skip-vtable-pointer-initialization.cpp vendor/clang/dist/test/CodeGenCXX/split-stacks.cpp vendor/clang/dist/test/CodeGenCXX/static-data-member.cpp vendor/clang/dist/test/CodeGenCXX/static-init-pnacl.cpp vendor/clang/dist/test/CodeGenCXX/static-init.cpp vendor/clang/dist/test/CodeGenCXX/static-local-in-local-class.cpp vendor/clang/dist/test/CodeGenCXX/switch-case-folding-2.cpp vendor/clang/dist/test/CodeGenCXX/template-anonymous-types.cpp vendor/clang/dist/test/CodeGenCXX/temporaries.cpp vendor/clang/dist/test/CodeGenCXX/throw-expressions.cpp vendor/clang/dist/test/CodeGenCXX/thunks.cpp vendor/clang/dist/test/CodeGenCXX/uncopyable-args.cpp vendor/clang/dist/test/CodeGenCXX/unknown-anytype.cpp vendor/clang/dist/test/CodeGenCXX/value-init.cpp vendor/clang/dist/test/CodeGenCXX/vararg-non-pod-ms-compat.cpp vendor/clang/dist/test/CodeGenCXX/varargs.cpp vendor/clang/dist/test/CodeGenCXX/virtual-base-cast.cpp vendor/clang/dist/test/CodeGenCXX/virtual-base-destructor-call.cpp vendor/clang/dist/test/CodeGenCXX/visibility.cpp vendor/clang/dist/test/CodeGenCXX/vla-lambda-capturing.cpp vendor/clang/dist/test/CodeGenCXX/vla.cpp vendor/clang/dist/test/CodeGenCXX/volatile-1.cpp vendor/clang/dist/test/CodeGenCXX/volatile.cpp vendor/clang/dist/test/CodeGenCXX/vtable-holder-self-reference.cpp vendor/clang/dist/test/CodeGenCXX/vtable-linkage.cpp vendor/clang/dist/test/CodeGenCXX/vtable-pointer-initialization.cpp vendor/clang/dist/test/CodeGenCXX/vtt-layout.cpp vendor/clang/dist/test/CodeGenCXX/windows-itanium-exceptions.cpp vendor/clang/dist/test/CodeGenObjC/2010-02-01-utf16-with-null.m vendor/clang/dist/test/CodeGenObjC/2010-02-09-DbgSelf.m vendor/clang/dist/test/CodeGenObjC/2010-02-15-Dbg-MethodStart.m vendor/clang/dist/test/CodeGenObjC/arc-blocks.m vendor/clang/dist/test/CodeGenObjC/arc-bridged-cast.m vendor/clang/dist/test/CodeGenObjC/arc-foreach.m vendor/clang/dist/test/CodeGenObjC/arc-ivar-layout.m vendor/clang/dist/test/CodeGenObjC/arc-linetable-autorelease.m vendor/clang/dist/test/CodeGenObjC/arc-linetable.m vendor/clang/dist/test/CodeGenObjC/arc-literals.m vendor/clang/dist/test/CodeGenObjC/arc-loadweakretained-release.m vendor/clang/dist/test/CodeGenObjC/arc-no-arc-exceptions.m vendor/clang/dist/test/CodeGenObjC/arc-precise-lifetime.m vendor/clang/dist/test/CodeGenObjC/arc-property.m vendor/clang/dist/test/CodeGenObjC/arc-related-result-type.m vendor/clang/dist/test/CodeGenObjC/arc-ternary-op.m vendor/clang/dist/test/CodeGenObjC/arc-unopt.m vendor/clang/dist/test/CodeGenObjC/arc-unoptimized-byref-var.m vendor/clang/dist/test/CodeGenObjC/arc-weak-property.m vendor/clang/dist/test/CodeGenObjC/arc.m vendor/clang/dist/test/CodeGenObjC/arm64-int32-ivar.m vendor/clang/dist/test/CodeGenObjC/atomic-aggregate-property.m vendor/clang/dist/test/CodeGenObjC/attr-exception.m vendor/clang/dist/test/CodeGenObjC/autorelease.m vendor/clang/dist/test/CodeGenObjC/bitfield-access.m vendor/clang/dist/test/CodeGenObjC/block-6.m vendor/clang/dist/test/CodeGenObjC/block-byref-debuginfo.m vendor/clang/dist/test/CodeGenObjC/blocks-2.m vendor/clang/dist/test/CodeGenObjC/blocks.m vendor/clang/dist/test/CodeGenObjC/boxing.m vendor/clang/dist/test/CodeGenObjC/catch-lexical-block.m vendor/clang/dist/test/CodeGenObjC/category-super-class-meth.m vendor/clang/dist/test/CodeGenObjC/debug-info-block-captured-self.m vendor/clang/dist/test/CodeGenObjC/debug-info-block-helper.m vendor/clang/dist/test/CodeGenObjC/debug-info-block-type.m vendor/clang/dist/test/CodeGenObjC/debug-info-blocks.m vendor/clang/dist/test/CodeGenObjC/debug-info-fwddecl.m vendor/clang/dist/test/CodeGenObjC/debug-info-getter-name.m vendor/clang/dist/test/CodeGenObjC/debug-info-id-with-protocol.m vendor/clang/dist/test/CodeGenObjC/debug-info-impl.m vendor/clang/dist/test/CodeGenObjC/debug-info-instancetype.m vendor/clang/dist/test/CodeGenObjC/debug-info-ivars-extension.m vendor/clang/dist/test/CodeGenObjC/debug-info-ivars-indirect.m vendor/clang/dist/test/CodeGenObjC/debug-info-ivars-private.m vendor/clang/dist/test/CodeGenObjC/debug-info-ivars.m vendor/clang/dist/test/CodeGenObjC/debug-info-lifetime-crash.m vendor/clang/dist/test/CodeGenObjC/debug-info-property-accessors.m vendor/clang/dist/test/CodeGenObjC/debug-info-property3.m vendor/clang/dist/test/CodeGenObjC/debug-info-pubtypes.m vendor/clang/dist/test/CodeGenObjC/debug-info-self.m vendor/clang/dist/test/CodeGenObjC/debug-info-static-var.m vendor/clang/dist/test/CodeGenObjC/debug-info-synthesis.m vendor/clang/dist/test/CodeGenObjC/debug-info-variadic-method.m vendor/clang/dist/test/CodeGenObjC/debug-property-synth.m vendor/clang/dist/test/CodeGenObjC/debuginfo-properties.m vendor/clang/dist/test/CodeGenObjC/encode-test-5.m vendor/clang/dist/test/CodeGenObjC/encode-test-6.m vendor/clang/dist/test/CodeGenObjC/encode-test.m vendor/clang/dist/test/CodeGenObjC/exceptions.m vendor/clang/dist/test/CodeGenObjC/forward-protocol-metadata-symbols.m vendor/clang/dist/test/CodeGenObjC/gc.m vendor/clang/dist/test/CodeGenObjC/gnu-exceptions.m vendor/clang/dist/test/CodeGenObjC/id-isa-codegen.m vendor/clang/dist/test/CodeGenObjC/ivar-base-as-invariant-load.m vendor/clang/dist/test/CodeGenObjC/ivar-invariant.m vendor/clang/dist/test/CodeGenObjC/ivar-layout-array0-struct.m vendor/clang/dist/test/CodeGenObjC/ivar-layout-no-optimize.m vendor/clang/dist/test/CodeGenObjC/local-static-block.m vendor/clang/dist/test/CodeGenObjC/mangle-blocks.m vendor/clang/dist/test/CodeGenObjC/messages-2.m vendor/clang/dist/test/CodeGenObjC/metadata-symbols-64.m vendor/clang/dist/test/CodeGenObjC/ns-constant-strings.m vendor/clang/dist/test/CodeGenObjC/ns_consume_null_check.m vendor/clang/dist/test/CodeGenObjC/objc-asm-attribute-test.m vendor/clang/dist/test/CodeGenObjC/objc-container-subscripting-1.m vendor/clang/dist/test/CodeGenObjC/objc-fixed-enum.m vendor/clang/dist/test/CodeGenObjC/objfw.m vendor/clang/dist/test/CodeGenObjC/optimize-ivar-offset-load.m vendor/clang/dist/test/CodeGenObjC/property-array-type.m vendor/clang/dist/test/CodeGenObjC/property-type-mismatch.m vendor/clang/dist/test/CodeGenObjC/property.m vendor/clang/dist/test/CodeGenObjC/selector-ref-invariance.m vendor/clang/dist/test/CodeGenObjC/stret_lookup.m vendor/clang/dist/test/CodeGenObjC/super-message-fragileabi.m vendor/clang/dist/test/CodeGenObjC/synchronized.m vendor/clang/dist/test/CodeGenObjC/tentative-cfconstantstring.m vendor/clang/dist/test/CodeGenObjC/variadic-sends.m vendor/clang/dist/test/CodeGenObjCXX/arc-blocks.mm vendor/clang/dist/test/CodeGenObjCXX/arc-cxx11-member-init.mm vendor/clang/dist/test/CodeGenObjCXX/arc-exceptions.mm vendor/clang/dist/test/CodeGenObjCXX/arc-globals.mm vendor/clang/dist/test/CodeGenObjCXX/arc-move.mm vendor/clang/dist/test/CodeGenObjCXX/arc-new-delete.mm vendor/clang/dist/test/CodeGenObjCXX/arc-pseudo-destructors.mm vendor/clang/dist/test/CodeGenObjCXX/arc-references.mm vendor/clang/dist/test/CodeGenObjCXX/arc-special-member-functions.mm vendor/clang/dist/test/CodeGenObjCXX/arc.mm vendor/clang/dist/test/CodeGenObjCXX/debug-info-line.mm vendor/clang/dist/test/CodeGenObjCXX/destroy.mm vendor/clang/dist/test/CodeGenObjCXX/exceptions-legacy.mm vendor/clang/dist/test/CodeGenObjCXX/gc.mm vendor/clang/dist/test/CodeGenObjCXX/lambda-expressions.mm vendor/clang/dist/test/CodeGenObjCXX/literals.mm vendor/clang/dist/test/CodeGenObjCXX/lvalue-reference-getter.mm vendor/clang/dist/test/CodeGenObjCXX/mangle-blocks.mm vendor/clang/dist/test/CodeGenObjCXX/message-reference.mm vendor/clang/dist/test/CodeGenObjCXX/message.mm vendor/clang/dist/test/CodeGenObjCXX/property-lvalue-capture.mm vendor/clang/dist/test/CodeGenObjCXX/property-object-conditional-exp.mm vendor/clang/dist/test/CodeGenObjCXX/property-object-reference-1.mm vendor/clang/dist/test/CodeGenObjCXX/property-object-reference-2.mm vendor/clang/dist/test/CodeGenObjCXX/property-object-reference.mm vendor/clang/dist/test/CodeGenObjCXX/property-reference.mm vendor/clang/dist/test/CodeGenOpenCL/address-space-constant-initializers.cl vendor/clang/dist/test/CodeGenOpenCL/const-str-array-decay.cl vendor/clang/dist/test/CodeGenOpenCL/half.cl vendor/clang/dist/test/CodeGenOpenCL/opencl_types.cl vendor/clang/dist/test/CodeGenOpenCL/relaxed-fpmath.cl vendor/clang/dist/test/CodeGenOpenCL/shifts.cl vendor/clang/dist/test/CoverageMapping/Inputs/code.h vendor/clang/dist/test/CoverageMapping/break.c vendor/clang/dist/test/CoverageMapping/builtinmacro.c vendor/clang/dist/test/CoverageMapping/casts.c vendor/clang/dist/test/CoverageMapping/classtemplate.cpp vendor/clang/dist/test/CoverageMapping/continue.c vendor/clang/dist/test/CoverageMapping/header.cpp vendor/clang/dist/test/CoverageMapping/if.c vendor/clang/dist/test/CoverageMapping/includehell.cpp vendor/clang/dist/test/CoverageMapping/ir.c vendor/clang/dist/test/CoverageMapping/label.cpp vendor/clang/dist/test/CoverageMapping/logical.cpp vendor/clang/dist/test/CoverageMapping/loopmacro.c vendor/clang/dist/test/CoverageMapping/loops.cpp vendor/clang/dist/test/CoverageMapping/macroception.c vendor/clang/dist/test/CoverageMapping/macroparams.c vendor/clang/dist/test/CoverageMapping/macroparams2.c vendor/clang/dist/test/CoverageMapping/macros.c vendor/clang/dist/test/CoverageMapping/nestedclass.cpp vendor/clang/dist/test/CoverageMapping/objc.m vendor/clang/dist/test/CoverageMapping/preprocessor.c vendor/clang/dist/test/CoverageMapping/return.c vendor/clang/dist/test/CoverageMapping/switch.c vendor/clang/dist/test/CoverageMapping/test.c vendor/clang/dist/test/CoverageMapping/trycatch.cpp vendor/clang/dist/test/Driver/aarch64-cpus.c vendor/clang/dist/test/Driver/arm-cortex-cpus.c vendor/clang/dist/test/Driver/arm-mfpu.c vendor/clang/dist/test/Driver/biarch.c vendor/clang/dist/test/Driver/cl-eh.cpp vendor/clang/dist/test/Driver/cl-inputs.c vendor/clang/dist/test/Driver/cl-options.c vendor/clang/dist/test/Driver/cl-zc.cpp vendor/clang/dist/test/Driver/clang-exception-flags.cpp vendor/clang/dist/test/Driver/clang_f_opts.c vendor/clang/dist/test/Driver/coverage-ld.c vendor/clang/dist/test/Driver/crash-report-modules.m vendor/clang/dist/test/Driver/crash-report.c vendor/clang/dist/test/Driver/darwin-debug-flags.c vendor/clang/dist/test/Driver/darwin-ld.c vendor/clang/dist/test/Driver/darwin-sanitizer-ld.c vendor/clang/dist/test/Driver/darwin-version.c vendor/clang/dist/test/Driver/debug-comp-dir.S vendor/clang/dist/test/Driver/debug.c vendor/clang/dist/test/Driver/fast-math.c vendor/clang/dist/test/Driver/frame-pointer-elim.c vendor/clang/dist/test/Driver/fsanitize-blacklist.c vendor/clang/dist/test/Driver/fsanitize.c vendor/clang/dist/test/Driver/function-sections.c vendor/clang/dist/test/Driver/gfortran.f90 vendor/clang/dist/test/Driver/gold-lto.c vendor/clang/dist/test/Driver/hexagon-toolchain-elf.c vendor/clang/dist/test/Driver/hexagon-toolchain.c vendor/clang/dist/test/Driver/instrprof-ld.c vendor/clang/dist/test/Driver/linux-as.c vendor/clang/dist/test/Driver/linux-header-search.cpp vendor/clang/dist/test/Driver/linux-ld.c vendor/clang/dist/test/Driver/lit.local.cfg vendor/clang/dist/test/Driver/mg.c vendor/clang/dist/test/Driver/mips-as.c vendor/clang/dist/test/Driver/mips-features.c vendor/clang/dist/test/Driver/mips-fsf.cpp vendor/clang/dist/test/Driver/mips-integrated-as.s vendor/clang/dist/test/Driver/msc-version.c vendor/clang/dist/test/Driver/nostdincxx.cpp vendor/clang/dist/test/Driver/objc++-cpp-output.mm vendor/clang/dist/test/Driver/output-file-cleanup.c vendor/clang/dist/test/Driver/pch-deps.c vendor/clang/dist/test/Driver/pic.c vendor/clang/dist/test/Driver/ppc-abi.c vendor/clang/dist/test/Driver/ppc-features.cpp vendor/clang/dist/test/Driver/rewrite-map-in-diagnostics.c vendor/clang/dist/test/Driver/sanitizer-ld.c vendor/clang/dist/test/Driver/save-temps.c vendor/clang/dist/test/Driver/warning-options_pedantic.cpp vendor/clang/dist/test/Driver/x86_features.c vendor/clang/dist/test/Driver/xcore-opts.c vendor/clang/dist/test/FixIt/fixit-cxx0x.cpp vendor/clang/dist/test/FixIt/fixit-objc-bridge-related.m vendor/clang/dist/test/FixIt/fixit-recursive-block.c vendor/clang/dist/test/FixIt/fixit.cpp vendor/clang/dist/test/Format/cursor.cpp vendor/clang/dist/test/Frontend/darwin-version.c vendor/clang/dist/test/Frontend/dependency-gen-escaping.c vendor/clang/dist/test/Frontend/dependency-gen.c vendor/clang/dist/test/Frontend/dependency-generation-crash.c vendor/clang/dist/test/Frontend/print-header-includes.c vendor/clang/dist/test/Frontend/x86_64-nacl-types.cpp vendor/clang/dist/test/Headers/altivec-header.c vendor/clang/dist/test/Headers/altivec-intrin.c vendor/clang/dist/test/Headers/xmmintrin.c vendor/clang/dist/test/Index/annotate-tokens.c vendor/clang/dist/test/Index/code-completion.cpp vendor/clang/dist/test/Index/complete-macros.c vendor/clang/dist/test/Index/complete-type-factors.m vendor/clang/dist/test/Index/get-cursor.c vendor/clang/dist/test/Index/index-module.m vendor/clang/dist/test/Index/index-pch-with-module.m vendor/clang/dist/test/Index/load-stmts.cpp vendor/clang/dist/test/Index/print-type-size.cpp vendor/clang/dist/test/Index/print-type.cpp vendor/clang/dist/test/Layout/ms-x86-alias-avoidance-padding.cpp vendor/clang/dist/test/Layout/ms-x86-aligned-tail-padding.cpp vendor/clang/dist/test/Layout/ms-x86-basic-layout.cpp vendor/clang/dist/test/Layout/ms-x86-empty-layout.c vendor/clang/dist/test/Layout/ms-x86-empty-nonvirtual-bases.cpp vendor/clang/dist/test/Layout/ms-x86-empty-virtual-base.cpp vendor/clang/dist/test/Layout/ms-x86-lazy-empty-nonvirtual-base.cpp vendor/clang/dist/test/Layout/ms-x86-pack-and-align.cpp vendor/clang/dist/test/Layout/ms-x86-size-alignment-fail.cpp vendor/clang/dist/test/Layout/ms-x86-vfvb-alignment.cpp vendor/clang/dist/test/Layout/ms-x86-vfvb-sharing.cpp vendor/clang/dist/test/Lexer/cxx-features.cpp vendor/clang/dist/test/Lexer/has_extension_cxx.cpp vendor/clang/dist/test/Lexer/has_feature_cxx0x.cpp vendor/clang/dist/test/Lexer/pragma-operators.cpp vendor/clang/dist/test/Misc/ast-dump-attr.cpp vendor/clang/dist/test/Misc/ast-dump-decl.cpp vendor/clang/dist/test/Misc/ast-dump-stmt.cpp vendor/clang/dist/test/Misc/backend-optimization-failure.cpp vendor/clang/dist/test/Misc/diag-template-diffing.cpp vendor/clang/dist/test/Misc/warning-flags.c vendor/clang/dist/test/Modules/Inputs/DependsOnModule.framework/module.map vendor/clang/dist/test/Modules/Inputs/Module.framework/Headers/Module.h vendor/clang/dist/test/Modules/Inputs/ModuleMapLocations/Both_F.framework/Headers/a.h vendor/clang/dist/test/Modules/Inputs/cxx-decls-imported.h vendor/clang/dist/test/Modules/Inputs/cxx-decls-merged.h vendor/clang/dist/test/Modules/Inputs/cxx-lookup/module.modulemap vendor/clang/dist/test/Modules/Inputs/declare-use/module.map vendor/clang/dist/test/Modules/Inputs/explicit-build/module.modulemap vendor/clang/dist/test/Modules/Inputs/macros.h vendor/clang/dist/test/Modules/Inputs/module.map vendor/clang/dist/test/Modules/Inputs/redecl-add-after-load-decls.h vendor/clang/dist/test/Modules/autolink.m vendor/clang/dist/test/Modules/cstd.m vendor/clang/dist/test/Modules/cxx-decls.cpp vendor/clang/dist/test/Modules/cxx-irgen.cpp vendor/clang/dist/test/Modules/cxx-lookup.cpp vendor/clang/dist/test/Modules/cxx-templates.cpp vendor/clang/dist/test/Modules/declare-use1.cpp vendor/clang/dist/test/Modules/explicit-build-relpath.cpp vendor/clang/dist/test/Modules/explicit-build.cpp vendor/clang/dist/test/Modules/filename.cpp vendor/clang/dist/test/Modules/ignored_macros.m vendor/clang/dist/test/Modules/implementation-of-module.m vendor/clang/dist/test/Modules/include-relative.c vendor/clang/dist/test/Modules/initializer_list.cpp vendor/clang/dist/test/Modules/linkage-merge.cpp vendor/clang/dist/test/Modules/macros.c vendor/clang/dist/test/Modules/macros2.c vendor/clang/dist/test/Modules/malformed.cpp vendor/clang/dist/test/Modules/modular_maps.cpp vendor/clang/dist/test/Modules/modulemap-locations.m vendor/clang/dist/test/Modules/odr.cpp vendor/clang/dist/test/Modules/preprocess.m vendor/clang/dist/test/Modules/private.cpp vendor/clang/dist/test/Modules/redecl-add-after-load.cpp vendor/clang/dist/test/Modules/relative-dep-gen.cpp vendor/clang/dist/test/Modules/requires.m vendor/clang/dist/test/Modules/templates-2.mm vendor/clang/dist/test/Modules/templates.mm vendor/clang/dist/test/Modules/warn-unused-local-typedef.cpp vendor/clang/dist/test/OpenMP/atomic_ast_print.cpp vendor/clang/dist/test/OpenMP/atomic_messages.c vendor/clang/dist/test/OpenMP/atomic_messages.cpp vendor/clang/dist/test/OpenMP/barrier_ast_print.cpp vendor/clang/dist/test/OpenMP/barrier_codegen.cpp vendor/clang/dist/test/OpenMP/barrier_messages.cpp vendor/clang/dist/test/OpenMP/critical_ast_print.cpp vendor/clang/dist/test/OpenMP/critical_codegen.cpp vendor/clang/dist/test/OpenMP/critical_messages.cpp vendor/clang/dist/test/OpenMP/flush_ast_print.cpp vendor/clang/dist/test/OpenMP/flush_codegen.cpp vendor/clang/dist/test/OpenMP/flush_messages.cpp vendor/clang/dist/test/OpenMP/for_ast_print.cpp vendor/clang/dist/test/OpenMP/for_codegen.cpp vendor/clang/dist/test/OpenMP/for_collapse_messages.cpp vendor/clang/dist/test/OpenMP/for_firstprivate_messages.cpp vendor/clang/dist/test/OpenMP/for_lastprivate_messages.cpp vendor/clang/dist/test/OpenMP/for_loop_messages.cpp vendor/clang/dist/test/OpenMP/for_misc_messages.c vendor/clang/dist/test/OpenMP/for_private_messages.cpp vendor/clang/dist/test/OpenMP/for_reduction_messages.cpp vendor/clang/dist/test/OpenMP/for_schedule_messages.cpp vendor/clang/dist/test/OpenMP/for_simd_aligned_messages.cpp vendor/clang/dist/test/OpenMP/for_simd_ast_print.cpp vendor/clang/dist/test/OpenMP/for_simd_collapse_messages.cpp vendor/clang/dist/test/OpenMP/for_simd_firstprivate_messages.cpp vendor/clang/dist/test/OpenMP/for_simd_lastprivate_messages.cpp vendor/clang/dist/test/OpenMP/for_simd_linear_messages.cpp vendor/clang/dist/test/OpenMP/for_simd_loop_messages.cpp vendor/clang/dist/test/OpenMP/for_simd_misc_messages.c vendor/clang/dist/test/OpenMP/for_simd_private_messages.cpp vendor/clang/dist/test/OpenMP/for_simd_reduction_messages.cpp vendor/clang/dist/test/OpenMP/for_simd_safelen_messages.cpp vendor/clang/dist/test/OpenMP/for_simd_schedule_messages.cpp vendor/clang/dist/test/OpenMP/linking.c vendor/clang/dist/test/OpenMP/master_ast_print.cpp vendor/clang/dist/test/OpenMP/master_codegen.cpp vendor/clang/dist/test/OpenMP/master_messages.cpp vendor/clang/dist/test/OpenMP/nesting_of_regions.cpp vendor/clang/dist/test/OpenMP/openmp_common.c vendor/clang/dist/test/OpenMP/ordered_ast_print.cpp vendor/clang/dist/test/OpenMP/ordered_messages.cpp vendor/clang/dist/test/OpenMP/parallel_ast_print.cpp vendor/clang/dist/test/OpenMP/parallel_codegen.cpp vendor/clang/dist/test/OpenMP/parallel_copyin_messages.cpp vendor/clang/dist/test/OpenMP/parallel_default_messages.cpp vendor/clang/dist/test/OpenMP/parallel_firstprivate_codegen.cpp vendor/clang/dist/test/OpenMP/parallel_firstprivate_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_ast_print.cpp vendor/clang/dist/test/OpenMP/parallel_for_collapse_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_copyin_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_default_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_firstprivate_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_if_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_lastprivate_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_loop_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_misc_messages.c vendor/clang/dist/test/OpenMP/parallel_for_num_threads_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_private_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_proc_bind_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_reduction_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_schedule_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_simd_aligned_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_simd_ast_print.cpp vendor/clang/dist/test/OpenMP/parallel_for_simd_collapse_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_simd_copyin_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_simd_default_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_simd_firstprivate_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_simd_if_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_simd_lastprivate_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_simd_linear_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_simd_loop_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_simd_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_simd_misc_messages.c vendor/clang/dist/test/OpenMP/parallel_for_simd_num_threads_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_simd_private_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_simd_proc_bind_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_simd_reduction_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_simd_safelen_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_simd_schedule_messages.cpp vendor/clang/dist/test/OpenMP/parallel_if_codegen.cpp vendor/clang/dist/test/OpenMP/parallel_if_messages.cpp vendor/clang/dist/test/OpenMP/parallel_messages.cpp vendor/clang/dist/test/OpenMP/parallel_num_threads_codegen.cpp vendor/clang/dist/test/OpenMP/parallel_num_threads_messages.cpp vendor/clang/dist/test/OpenMP/parallel_private_codegen.cpp vendor/clang/dist/test/OpenMP/parallel_private_messages.cpp vendor/clang/dist/test/OpenMP/parallel_proc_bind_messages.cpp vendor/clang/dist/test/OpenMP/parallel_reduction_messages.cpp vendor/clang/dist/test/OpenMP/parallel_sections_ast_print.cpp vendor/clang/dist/test/OpenMP/parallel_sections_copyin_messages.cpp vendor/clang/dist/test/OpenMP/parallel_sections_default_messages.cpp vendor/clang/dist/test/OpenMP/parallel_sections_firstprivate_messages.cpp vendor/clang/dist/test/OpenMP/parallel_sections_if_messages.cpp vendor/clang/dist/test/OpenMP/parallel_sections_lastprivate_messages.cpp vendor/clang/dist/test/OpenMP/parallel_sections_messages.cpp vendor/clang/dist/test/OpenMP/parallel_sections_misc_messages.c vendor/clang/dist/test/OpenMP/parallel_sections_num_threads_messages.cpp vendor/clang/dist/test/OpenMP/parallel_sections_private_messages.cpp vendor/clang/dist/test/OpenMP/parallel_sections_proc_bind_messages.cpp vendor/clang/dist/test/OpenMP/parallel_sections_reduction_messages.cpp vendor/clang/dist/test/OpenMP/parallel_sections_shared_messages.cpp vendor/clang/dist/test/OpenMP/parallel_shared_messages.cpp vendor/clang/dist/test/OpenMP/predefined_macro.c vendor/clang/dist/test/OpenMP/sections_ast_print.cpp vendor/clang/dist/test/OpenMP/sections_firstprivate_messages.cpp vendor/clang/dist/test/OpenMP/sections_lastprivate_messages.cpp vendor/clang/dist/test/OpenMP/sections_misc_messages.c vendor/clang/dist/test/OpenMP/sections_private_messages.cpp vendor/clang/dist/test/OpenMP/sections_reduction_messages.cpp vendor/clang/dist/test/OpenMP/simd_aligned_messages.cpp vendor/clang/dist/test/OpenMP/simd_ast_print.cpp vendor/clang/dist/test/OpenMP/simd_codegen.cpp vendor/clang/dist/test/OpenMP/simd_collapse_messages.cpp vendor/clang/dist/test/OpenMP/simd_lastprivate_messages.cpp vendor/clang/dist/test/OpenMP/simd_linear_messages.cpp vendor/clang/dist/test/OpenMP/simd_loop_messages.cpp vendor/clang/dist/test/OpenMP/simd_metadata.c vendor/clang/dist/test/OpenMP/simd_misc_messages.c vendor/clang/dist/test/OpenMP/simd_private_messages.cpp vendor/clang/dist/test/OpenMP/simd_reduction_messages.cpp vendor/clang/dist/test/OpenMP/simd_safelen_messages.cpp vendor/clang/dist/test/OpenMP/single_ast_print.cpp vendor/clang/dist/test/OpenMP/single_copyprivate_messages.cpp vendor/clang/dist/test/OpenMP/single_firstprivate_messages.cpp vendor/clang/dist/test/OpenMP/single_misc_messages.c vendor/clang/dist/test/OpenMP/single_private_messages.cpp vendor/clang/dist/test/OpenMP/target_ast_print.cpp vendor/clang/dist/test/OpenMP/target_if_messages.cpp vendor/clang/dist/test/OpenMP/target_messages.cpp vendor/clang/dist/test/OpenMP/task_ast_print.cpp vendor/clang/dist/test/OpenMP/task_default_messages.cpp vendor/clang/dist/test/OpenMP/task_final_messages.cpp vendor/clang/dist/test/OpenMP/task_firstprivate_messages.cpp vendor/clang/dist/test/OpenMP/task_if_messages.cpp vendor/clang/dist/test/OpenMP/task_messages.cpp vendor/clang/dist/test/OpenMP/task_private_messages.cpp vendor/clang/dist/test/OpenMP/task_shared_messages.cpp vendor/clang/dist/test/OpenMP/taskwait_ast_print.cpp vendor/clang/dist/test/OpenMP/taskwait_messages.cpp vendor/clang/dist/test/OpenMP/taskyield_ast_print.cpp vendor/clang/dist/test/OpenMP/taskyield_messages.cpp vendor/clang/dist/test/OpenMP/teams_ast_print.cpp vendor/clang/dist/test/OpenMP/teams_default_messages.cpp vendor/clang/dist/test/OpenMP/teams_firstprivate_messages.cpp vendor/clang/dist/test/OpenMP/teams_messages.cpp vendor/clang/dist/test/OpenMP/teams_private_messages.cpp vendor/clang/dist/test/OpenMP/teams_reduction_messages.cpp vendor/clang/dist/test/OpenMP/teams_shared_messages.cpp vendor/clang/dist/test/OpenMP/threadprivate_ast_print.cpp vendor/clang/dist/test/OpenMP/threadprivate_codegen.cpp vendor/clang/dist/test/OpenMP/threadprivate_messages.cpp vendor/clang/dist/test/PCH/chain-openmp-threadprivate.cpp vendor/clang/dist/test/PCH/check-deserializations.cpp vendor/clang/dist/test/PCH/cxx-templates.cpp vendor/clang/dist/test/PCH/cxx11-lambdas.mm vendor/clang/dist/test/PCH/cxx1y-lambdas.mm vendor/clang/dist/test/PCH/debug-info-limited-struct.c vendor/clang/dist/test/PCH/headersearch.cpp vendor/clang/dist/test/Parser/DelayedTemplateParsing.cpp vendor/clang/dist/test/Parser/MicrosoftExtensions.c vendor/clang/dist/test/Parser/MicrosoftExtensions.cpp vendor/clang/dist/test/Parser/altivec.c vendor/clang/dist/test/Parser/atomic.c vendor/clang/dist/test/Parser/brackets.c vendor/clang/dist/test/Parser/brackets.cpp vendor/clang/dist/test/Parser/crash-report.c vendor/clang/dist/test/Parser/cxx-altivec.cpp vendor/clang/dist/test/Parser/cxx-ambig-init-templ.cpp vendor/clang/dist/test/Parser/cxx-class.cpp vendor/clang/dist/test/Parser/cxx0x-ambig.cpp vendor/clang/dist/test/Parser/cxx0x-attributes.cpp vendor/clang/dist/test/Parser/cxx0x-override-control-keywords.cpp vendor/clang/dist/test/Parser/ms-inline-asm.c vendor/clang/dist/test/Parser/objcxx0x-lambda-expressions.mm vendor/clang/dist/test/Parser/recovery.cpp vendor/clang/dist/test/Preprocessor/_Pragma-location.c vendor/clang/dist/test/Preprocessor/aarch64-target-features.c vendor/clang/dist/test/Preprocessor/arm-target-features.c vendor/clang/dist/test/Preprocessor/has_attribute.c vendor/clang/dist/test/Preprocessor/has_include.c vendor/clang/dist/test/Preprocessor/init.c vendor/clang/dist/test/Preprocessor/macro_paste_msextensions.c vendor/clang/dist/test/Preprocessor/pragma_microsoft.c vendor/clang/dist/test/Preprocessor/predefined-arch-macros.c vendor/clang/dist/test/Preprocessor/stdint.c vendor/clang/dist/test/Preprocessor/x86_target_features.c vendor/clang/dist/test/Profile/Inputs/c-captured.proftext vendor/clang/dist/test/Profile/Inputs/cxx-throws.proftext vendor/clang/dist/test/Profile/c-captured.c vendor/clang/dist/test/Profile/c-general.c vendor/clang/dist/test/Profile/c-linkage-available_externally.c vendor/clang/dist/test/Profile/c-linkage.c vendor/clang/dist/test/Profile/c-unreachable-after-switch.c vendor/clang/dist/test/Profile/cxx-lambda.cpp vendor/clang/dist/test/Profile/cxx-linkage.cpp vendor/clang/dist/test/Profile/cxx-throws.cpp vendor/clang/dist/test/Profile/objc-general.m vendor/clang/dist/test/Rewriter/missing-dllimport.c vendor/clang/dist/test/Rewriter/objc-modern-boxing.mm vendor/clang/dist/test/Rewriter/objc-modern-numeric-literal.mm vendor/clang/dist/test/Rewriter/properties.m vendor/clang/dist/test/Rewriter/rewrite-captured-nested-bvar.c vendor/clang/dist/test/Rewriter/rewrite-modern-array-literal.mm vendor/clang/dist/test/Rewriter/rewrite-modern-captured-nested-bvar.mm vendor/clang/dist/test/Rewriter/rewrite-modern-container-literal.mm vendor/clang/dist/test/Rewriter/rewrite-nested-property-in-blocks.mm vendor/clang/dist/test/Sema/MicrosoftCompatibility-x64.c vendor/clang/dist/test/Sema/MicrosoftCompatibility.c vendor/clang/dist/test/Sema/__try.c vendor/clang/dist/test/Sema/alias-redefinition.c vendor/clang/dist/test/Sema/align-x86.c vendor/clang/dist/test/Sema/anonymous-struct-union.c vendor/clang/dist/test/Sema/assign.c vendor/clang/dist/test/Sema/atomic-compare.c vendor/clang/dist/test/Sema/attr-availability.c vendor/clang/dist/test/Sema/attr-capabilities.c vendor/clang/dist/test/Sema/attr-format.c vendor/clang/dist/test/Sema/attr-malloc.c vendor/clang/dist/test/Sema/bitfield.c vendor/clang/dist/test/Sema/block-misc.c vendor/clang/dist/test/Sema/builtin-assume.c vendor/clang/dist/test/Sema/builtins-x86.c vendor/clang/dist/test/Sema/callingconv.c vendor/clang/dist/test/Sema/complex-int.c vendor/clang/dist/test/Sema/dllexport.c vendor/clang/dist/test/Sema/dllimport.c vendor/clang/dist/test/Sema/function.c vendor/clang/dist/test/Sema/inline-asm-validate-aarch64.c vendor/clang/dist/test/Sema/member-reference.c vendor/clang/dist/test/Sema/ms-inline-asm.c vendor/clang/dist/test/Sema/parentheses.c vendor/clang/dist/test/Sema/pointer-addition.c vendor/clang/dist/test/Sema/pragma-ms_struct.c vendor/clang/dist/test/Sema/statements.c vendor/clang/dist/test/Sema/struct-packed-align.c vendor/clang/dist/test/Sema/typo-correction.c vendor/clang/dist/test/Sema/vla.c vendor/clang/dist/test/Sema/warn-documentation-fixits.cpp vendor/clang/dist/test/Sema/warn-documentation.cpp vendor/clang/dist/test/Sema/warn-main.c vendor/clang/dist/test/Sema/warn-string-conversion.c vendor/clang/dist/test/Sema/warn-tautological-compare.c vendor/clang/dist/test/Sema/wchar.c vendor/clang/dist/test/Sema/x86-builtin-palignr.c vendor/clang/dist/test/SemaCUDA/function-target.cu vendor/clang/dist/test/SemaCUDA/launch_bounds.cu vendor/clang/dist/test/SemaCUDA/qualifiers.cu vendor/clang/dist/test/SemaCXX/MicrosoftCompatibility.cpp vendor/clang/dist/test/SemaCXX/MicrosoftExtensions.cpp vendor/clang/dist/test/SemaCXX/MicrosoftSuper.cpp vendor/clang/dist/test/SemaCXX/PR9461.cpp vendor/clang/dist/test/SemaCXX/__try.cpp vendor/clang/dist/test/SemaCXX/addr-of-overloaded-function.cpp vendor/clang/dist/test/SemaCXX/alignof.cpp vendor/clang/dist/test/SemaCXX/anonymous-union.cpp vendor/clang/dist/test/SemaCXX/ast-print.cpp vendor/clang/dist/test/SemaCXX/atomic-type.cpp vendor/clang/dist/test/SemaCXX/attr-selectany.cpp vendor/clang/dist/test/SemaCXX/builtins-arm.cpp vendor/clang/dist/test/SemaCXX/captured-statements.cpp vendor/clang/dist/test/SemaCXX/class-layout.cpp vendor/clang/dist/test/SemaCXX/class.cpp vendor/clang/dist/test/SemaCXX/constant-expression-cxx11.cpp vendor/clang/dist/test/SemaCXX/constexpr-value-init.cpp vendor/clang/dist/test/SemaCXX/constructor-initializer.cpp vendor/clang/dist/test/SemaCXX/crashes.cpp vendor/clang/dist/test/SemaCXX/cxx0x-constexpr-const.cpp vendor/clang/dist/test/SemaCXX/cxx0x-cursory-default-delete.cpp vendor/clang/dist/test/SemaCXX/cxx0x-defaulted-functions.cpp vendor/clang/dist/test/SemaCXX/cxx0x-initializer-constructor.cpp vendor/clang/dist/test/SemaCXX/cxx0x-initializer-references.cpp vendor/clang/dist/test/SemaCXX/cxx0x-initializer-scalars.cpp vendor/clang/dist/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp vendor/clang/dist/test/SemaCXX/cxx0x-return-init-list.cpp vendor/clang/dist/test/SemaCXX/cxx11-ast-print.cpp vendor/clang/dist/test/SemaCXX/cxx11-crashes.cpp vendor/clang/dist/test/SemaCXX/cxx11-gnu-attrs.cpp vendor/clang/dist/test/SemaCXX/cxx1y-constexpr-not-const.cpp vendor/clang/dist/test/SemaCXX/cxx1y-deduced-return-type.cpp vendor/clang/dist/test/SemaCXX/cxx1y-generic-lambdas.cpp vendor/clang/dist/test/SemaCXX/cxx1y-init-captures.cpp vendor/clang/dist/test/SemaCXX/cxx1y-sized-deallocation.cpp vendor/clang/dist/test/SemaCXX/cxx1y-variable-templates_in_class.cpp vendor/clang/dist/test/SemaCXX/cxx98-compat.cpp vendor/clang/dist/test/SemaCXX/decl-microsoft-call-conv.cpp vendor/clang/dist/test/SemaCXX/declspec-thread.cpp vendor/clang/dist/test/SemaCXX/default-assignment-operator.cpp vendor/clang/dist/test/SemaCXX/delete.cpp vendor/clang/dist/test/SemaCXX/deleted-function.cpp vendor/clang/dist/test/SemaCXX/derived-to-base-ambig.cpp vendor/clang/dist/test/SemaCXX/destructor.cpp vendor/clang/dist/test/SemaCXX/devirtualize-vtable-marking.cpp vendor/clang/dist/test/SemaCXX/dllexport.cpp vendor/clang/dist/test/SemaCXX/dllimport.cpp vendor/clang/dist/test/SemaCXX/empty-class-layout.cpp vendor/clang/dist/test/SemaCXX/enum-bitfield.cpp vendor/clang/dist/test/SemaCXX/exceptions.cpp vendor/clang/dist/test/SemaCXX/explicit.cpp vendor/clang/dist/test/SemaCXX/for-range-examples.cpp vendor/clang/dist/test/SemaCXX/format-strings-0x.cpp vendor/clang/dist/test/SemaCXX/format-strings.cpp vendor/clang/dist/test/SemaCXX/friend.cpp vendor/clang/dist/test/SemaCXX/function-type-qual.cpp vendor/clang/dist/test/SemaCXX/functional-cast.cpp vendor/clang/dist/test/SemaCXX/increment-decrement.cpp vendor/clang/dist/test/SemaCXX/linkage.cpp vendor/clang/dist/test/SemaCXX/member-expr.cpp vendor/clang/dist/test/SemaCXX/member-pointer-ms.cpp vendor/clang/dist/test/SemaCXX/member-pointer.cpp vendor/clang/dist/test/SemaCXX/microsoft-dtor-lookup.cpp vendor/clang/dist/test/SemaCXX/microsoft-new-delete.cpp vendor/clang/dist/test/SemaCXX/ms_integer_suffix.cpp vendor/clang/dist/test/SemaCXX/nested-name-spec.cpp vendor/clang/dist/test/SemaCXX/new-array-size-conv.cpp vendor/clang/dist/test/SemaCXX/new-delete.cpp vendor/clang/dist/test/SemaCXX/overload-decl.cpp vendor/clang/dist/test/SemaCXX/pseudo-destructors.cpp vendor/clang/dist/test/SemaCXX/references.cpp vendor/clang/dist/test/SemaCXX/reinterpret-cast.cpp vendor/clang/dist/test/SemaCXX/scope-check.cpp vendor/clang/dist/test/SemaCXX/static-cast.cpp vendor/clang/dist/test/SemaCXX/type-traits.cpp vendor/clang/dist/test/SemaCXX/typo-correction-delayed.cpp vendor/clang/dist/test/SemaCXX/typo-correction.cpp vendor/clang/dist/test/SemaCXX/uninitialized.cpp vendor/clang/dist/test/SemaCXX/unreachable-catch-clauses.cpp vendor/clang/dist/test/SemaCXX/virtual-override.cpp vendor/clang/dist/test/SemaCXX/vla.cpp vendor/clang/dist/test/SemaCXX/warn-bad-memaccess.cpp vendor/clang/dist/test/SemaCXX/warn-consumed-analysis.cpp vendor/clang/dist/test/SemaCXX/warn-empty-body.cpp vendor/clang/dist/test/SemaCXX/warn-memset-bad-sizeof.cpp vendor/clang/dist/test/SemaCXX/warn-missing-prototypes.cpp vendor/clang/dist/test/SemaCXX/warn-reinterpret-base-class.cpp vendor/clang/dist/test/SemaCXX/warn-thread-safety-analysis.cpp vendor/clang/dist/test/SemaCXX/warn-unused-local-typedef-serialize.cpp vendor/clang/dist/test/SemaCXX/warn-unused-result.cpp vendor/clang/dist/test/SemaCXX/warn-weak-vtables.cpp vendor/clang/dist/test/SemaObjC/arc-bridged-cast.m vendor/clang/dist/test/SemaObjC/arc-decls.m vendor/clang/dist/test/SemaObjC/arc-dict-bridged-cast.m vendor/clang/dist/test/SemaObjC/arc-unbridged-cast.m vendor/clang/dist/test/SemaObjC/arc.m vendor/clang/dist/test/SemaObjC/attr-availability.m vendor/clang/dist/test/SemaObjC/attr-deprecated.m vendor/clang/dist/test/SemaObjC/attr-designated-init.m vendor/clang/dist/test/SemaObjC/attr-malloc.m vendor/clang/dist/test/SemaObjC/class-unavail-warning.m vendor/clang/dist/test/SemaObjC/debugger-support.m vendor/clang/dist/test/SemaObjC/iboutlet.m vendor/clang/dist/test/SemaObjC/nonnull.m vendor/clang/dist/test/SemaObjC/objc-array-literal.m vendor/clang/dist/test/SemaObjC/objc-dictionary-literal.m vendor/clang/dist/test/SemaObjC/objc-literal-nsnumber.m vendor/clang/dist/test/SemaObjC/objcbridge-attribute-arc.m vendor/clang/dist/test/SemaObjC/objcbridge-attribute.m vendor/clang/dist/test/SemaObjC/objcbridgemutable-attribute.m vendor/clang/dist/test/SemaObjC/property-9.m vendor/clang/dist/test/SemaObjC/property-deprecated-warning.m vendor/clang/dist/test/SemaObjC/selector-3.m vendor/clang/dist/test/SemaObjC/super-property-notation.m vendor/clang/dist/test/SemaObjC/unused.m vendor/clang/dist/test/SemaObjC/warn-strict-selector-match.m vendor/clang/dist/test/SemaObjCXX/arc-bridged-cast.mm vendor/clang/dist/test/SemaObjCXX/objcbridge-attribute-arc.mm vendor/clang/dist/test/SemaObjCXX/objcbridge-attribute.mm vendor/clang/dist/test/SemaObjCXX/objcbridge-static-cast.mm vendor/clang/dist/test/SemaObjCXX/propert-dot-error.mm vendor/clang/dist/test/SemaOpenCL/cond.cl vendor/clang/dist/test/SemaOpenCL/shifts.cl vendor/clang/dist/test/SemaTemplate/anonymous-union.cpp vendor/clang/dist/test/SemaTemplate/class-template-decl.cpp vendor/clang/dist/test/SemaTemplate/deduction.cpp vendor/clang/dist/test/SemaTemplate/dependent-names.cpp vendor/clang/dist/test/SemaTemplate/dependent-type-identity.cpp vendor/clang/dist/test/SemaTemplate/destructor-template.cpp vendor/clang/dist/test/SemaTemplate/explicit-specialization-member.cpp vendor/clang/dist/test/SemaTemplate/friend.cpp vendor/clang/dist/test/SemaTemplate/instantiate-local-class.cpp vendor/clang/dist/test/SemaTemplate/instantiate-non-dependent-types.cpp vendor/clang/dist/test/SemaTemplate/instantiate-static-var.cpp vendor/clang/dist/test/SemaTemplate/ms-lookup-template-base-classes.cpp vendor/clang/dist/test/SemaTemplate/virtual-member-functions.cpp vendor/clang/dist/test/VFS/external-names.c vendor/clang/dist/test/VFS/umbrella-mismatch.m vendor/clang/dist/test/lit.cfg vendor/clang/dist/test/lit.site.cfg.in vendor/clang/dist/tools/CMakeLists.txt vendor/clang/dist/tools/c-index-test/c-index-test.c vendor/clang/dist/tools/clang-format-vs/CMakeLists.txt vendor/clang/dist/tools/clang-format-vs/ClangFormat/ClangFormat.csproj vendor/clang/dist/tools/clang-format-vs/ClangFormat/Resources.Designer.cs vendor/clang/dist/tools/clang-format/CMakeLists.txt vendor/clang/dist/tools/clang-format/ClangFormat.cpp vendor/clang/dist/tools/clang-format/clang-format-diff.py vendor/clang/dist/tools/clang-format/clang-format.el vendor/clang/dist/tools/clang-format/clang-format.py vendor/clang/dist/tools/driver/CMakeLists.txt vendor/clang/dist/tools/driver/cc1as_main.cpp vendor/clang/dist/tools/libclang/CIndex.cpp vendor/clang/dist/tools/libclang/CIndexCodeCompletion.cpp vendor/clang/dist/tools/libclang/CIndexDiagnostic.cpp vendor/clang/dist/tools/libclang/CIndexDiagnostic.h vendor/clang/dist/tools/libclang/CIndexer.h vendor/clang/dist/tools/libclang/CMakeLists.txt vendor/clang/dist/tools/libclang/CXCursor.cpp vendor/clang/dist/tools/libclang/CXCursor.h vendor/clang/dist/tools/libclang/CXLoadedDiagnostic.cpp vendor/clang/dist/tools/libclang/CXLoadedDiagnostic.h vendor/clang/dist/tools/libclang/CXString.h vendor/clang/dist/tools/libclang/CXType.cpp vendor/clang/dist/tools/libclang/Indexing.cpp vendor/clang/dist/tools/libclang/IndexingContext.h vendor/clang/dist/tools/libclang/libclang.exports vendor/clang/dist/tools/scan-build/ccc-analyzer vendor/clang/dist/unittests/AST/DeclPrinterTest.cpp vendor/clang/dist/unittests/AST/ExternalASTSourceTest.cpp vendor/clang/dist/unittests/AST/MatchVerifier.h vendor/clang/dist/unittests/AST/NamedDeclPrinterTest.cpp vendor/clang/dist/unittests/AST/SourceLocationTest.cpp vendor/clang/dist/unittests/AST/StmtPrinterTest.cpp vendor/clang/dist/unittests/ASTMatchers/ASTMatchersTest.cpp vendor/clang/dist/unittests/ASTMatchers/ASTMatchersTest.h vendor/clang/dist/unittests/ASTMatchers/Dynamic/CMakeLists.txt vendor/clang/dist/unittests/ASTMatchers/Dynamic/ParserTest.cpp vendor/clang/dist/unittests/Basic/FileManagerTest.cpp vendor/clang/dist/unittests/Basic/SourceManagerTest.cpp vendor/clang/dist/unittests/Basic/VirtualFileSystemTest.cpp vendor/clang/dist/unittests/CMakeLists.txt vendor/clang/dist/unittests/CodeGen/BufferSourceTest.cpp vendor/clang/dist/unittests/Driver/MultilibTest.cpp vendor/clang/dist/unittests/Format/FormatTest.cpp vendor/clang/dist/unittests/Format/FormatTestJS.cpp vendor/clang/dist/unittests/Format/FormatTestJava.cpp vendor/clang/dist/unittests/Format/FormatTestProto.cpp vendor/clang/dist/unittests/Frontend/FrontendActionTest.cpp vendor/clang/dist/unittests/Lex/LexerTest.cpp vendor/clang/dist/unittests/Lex/PPCallbacksTest.cpp vendor/clang/dist/unittests/Lex/PPConditionalDirectiveRecordTest.cpp vendor/clang/dist/unittests/Makefile vendor/clang/dist/unittests/Sema/ExternalSemaSourceTest.cpp vendor/clang/dist/unittests/Tooling/CommentHandlerTest.cpp vendor/clang/dist/unittests/Tooling/CompilationDatabaseTest.cpp vendor/clang/dist/unittests/Tooling/RefactoringTest.cpp vendor/clang/dist/unittests/Tooling/TestVisitor.h vendor/clang/dist/unittests/Tooling/ToolingTest.cpp vendor/clang/dist/unittests/libclang/LibclangTest.cpp vendor/clang/dist/utils/TableGen/ClangAttrEmitter.cpp vendor/clang/dist/utils/TableGen/ClangDiagnosticsEmitter.cpp vendor/clang/dist/utils/TableGen/NeonEmitter.cpp vendor/clang/dist/www/analyzer/checker_dev_manual.html vendor/clang/dist/www/analyzer/potential_checkers.html vendor/clang/dist/www/cxx_dr_status.html vendor/clang/dist/www/cxx_status.html vendor/clang/dist/www/get_started.html vendor/clang/dist/www/menu.css vendor/clang/dist/www/menu.html.incl Modified: vendor/clang/dist/CMakeLists.txt ============================================================================== --- vendor/clang/dist/CMakeLists.txt Wed May 27 18:45:32 2015 (r283626) +++ vendor/clang/dist/CMakeLists.txt Wed May 27 18:47:56 2015 (r283627) @@ -402,6 +402,7 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) FILES_MATCHING PATTERN "CMakeFiles" EXCLUDE PATTERN "*.inc" + PATTERN "*.h" ) endif() @@ -440,6 +441,11 @@ if(CLANG_ENABLE_STATIC_ANALYZER) add_definitions(-DCLANG_ENABLE_STATIC_ANALYZER) endif() +set(OPENMP_DEFAULT_LIB "" CACHE STRING "OpenMP library used by default for -fopenmp.") +if(OPENMP_DEFAULT_LIB) + add_definitions(-DOPENMP_DEFAULT_LIB=${OPENMP_DEFAULT_LIB}) +endif() + # Clang version information set(CLANG_EXECUTABLE_VERSION "${CLANG_VERSION_MAJOR}.${CLANG_VERSION_MINOR}" CACHE STRING Modified: vendor/clang/dist/CODE_OWNERS.TXT ============================================================================== --- vendor/clang/dist/CODE_OWNERS.TXT Wed May 27 18:45:32 2015 (r283626) +++ vendor/clang/dist/CODE_OWNERS.TXT Wed May 27 18:47:56 2015 (r283627) @@ -12,6 +12,10 @@ N: Aaron Ballman E: aaron@aaronballman.com D: Clang attributes +N: Alexey Bataev +E: a.bataev@hotmail.com +D: OpenMP support + N: Chandler Carruth E: chandlerc@gmail.com E: chandlerc@google.com @@ -23,7 +27,11 @@ D: Debug Information, autotools/configur N: Doug Gregor E: dgregor@apple.com -D: All parts of Clang not covered by someone else +D: Emeritus owner + +N: Reid Kleckner +E: rnk@google.com +D: Microsoft C++ ABI compatibility and general Windows support N: Anton Korobeynikov E: anton@korobeynikov.info @@ -43,4 +51,4 @@ D: Compiler driver N: Richard Smith E: richard@metafoo.co.uk -D: Clang Semantic Analysis (tools/clang/lib/Sema/* tools/clang/include/clang/Sema/*) +D: All parts of Clang not covered by someone else Modified: vendor/clang/dist/LICENSE.TXT ============================================================================== --- vendor/clang/dist/LICENSE.TXT Wed May 27 18:45:32 2015 (r283626) +++ vendor/clang/dist/LICENSE.TXT Wed May 27 18:47:56 2015 (r283627) @@ -4,7 +4,7 @@ LLVM Release License University of Illinois/NCSA Open Source License -Copyright (c) 2007-2014 University of Illinois at Urbana-Champaign. +Copyright (c) 2007-2015 University of Illinois at Urbana-Champaign. All rights reserved. Developed by: Modified: vendor/clang/dist/bindings/python/clang/cindex.py ============================================================================== --- vendor/clang/dist/bindings/python/clang/cindex.py Wed May 27 18:45:32 2015 (r283626) +++ vendor/clang/dist/bindings/python/clang/cindex.py Wed May 27 18:47:56 2015 (r283627) @@ -1476,6 +1476,18 @@ class Cursor(Structure): """ return TokenGroup.get_tokens(self._tu, self.extent) + def get_field_offsetof(self): + """Returns the offsetof the FIELD_DECL pointed by this Cursor.""" + return conf.lib.clang_Cursor_getOffsetOfField(self) + + def is_anonymous(self): + """ + Check if the record is anonymous. + """ + if self.kind == CursorKind.FIELD_DECL: + return self.type.get_declaration().is_anonymous() + return conf.lib.clang_Cursor_isAnonymous(self) + def is_bitfield(self): """ Check if the field is a bitfield. @@ -1884,6 +1896,21 @@ class Type(Structure): return RefQualifierKind.from_id( conf.lib.clang_Type_getCXXRefQualifier(self)) + def get_fields(self): + """Return an iterator for accessing the fields of this type.""" + + def visitor(field, children): + assert field != conf.lib.clang_getNullCursor() + + # Create reference to TU so it isn't GC'd before Cursor. + field._tu = self._tu + fields.append(field) + return 1 # continue + fields = [] + conf.lib.clang_Type_visitFields(self, + callbacks['fields_visit'](visitor), fields) + return iter(fields) + @property def spelling(self): """Retrieve the spelling of this Type.""" @@ -2780,6 +2807,7 @@ class Token(Structure): callbacks['translation_unit_includes'] = CFUNCTYPE(None, c_object_p, POINTER(SourceLocation), c_uint, py_object) callbacks['cursor_visit'] = CFUNCTYPE(c_int, Cursor, Cursor, py_object) +callbacks['fields_visit'] = CFUNCTYPE(c_int, Cursor, py_object) # Functions strictly alphabetical order. functionList = [ @@ -3367,6 +3395,10 @@ functionList = [ [Cursor, c_uint], c_ulonglong), + ("clang_Cursor_isAnonymous", + [Cursor], + bool), + ("clang_Cursor_isBitField", [Cursor], bool), @@ -3381,6 +3413,10 @@ functionList = [ _CXString, _CXString.from_result), + ("clang_Cursor_getOffsetOfField", + [Cursor], + c_longlong), + ("clang_Type_getAlignOf", [Type], c_longlong), @@ -3401,6 +3437,10 @@ functionList = [ ("clang_Type_getCXXRefQualifier", [Type], c_uint), + + ("clang_Type_visitFields", + [Type, callbacks['fields_visit'], py_object], + c_uint), ] class LibclangError(Exception): Modified: vendor/clang/dist/bindings/python/tests/cindex/test_type.py ============================================================================== --- vendor/clang/dist/bindings/python/tests/cindex/test_type.py Wed May 27 18:45:32 2015 (r283626) +++ vendor/clang/dist/bindings/python/tests/cindex/test_type.py Wed May 27 18:47:56 2015 (r283627) @@ -363,6 +363,7 @@ def test_offset(): """Ensure Cursor.get_record_field_offset works in anonymous records""" source=""" struct Test { + struct {int a;} typeanon; struct { int bariton; union { @@ -371,15 +372,23 @@ struct Test { }; int bar; };""" - tries=[(['-target','i386-linux-gnu'],(4,16,0,32,64)), - (['-target','nvptx64-unknown-unknown'],(8,24,0,32,64)), - (['-target','i386-pc-win32'],(8,16,0,32,64)), - (['-target','msp430-none-none'],(2,14,0,32,64))] + tries=[(['-target','i386-linux-gnu'],(4,16,0,32,64,96)), + (['-target','nvptx64-unknown-unknown'],(8,24,0,32,64,96)), + (['-target','i386-pc-win32'],(8,16,0,32,64,96)), + (['-target','msp430-none-none'],(2,14,0,32,64,96))] for flags, values in tries: - align,total,bariton,foo,bar = values + align,total,f1,bariton,foo,bar = values tu = get_tu(source) teststruct = get_cursor(tu, 'Test') - fields = list(teststruct.get_children()) + children = list(teststruct.get_children()) + fields = list(teststruct.type.get_fields()) + assert children[0].kind == CursorKind.STRUCT_DECL + assert children[0].spelling != "typeanon" + assert children[1].spelling == "typeanon" + assert fields[0].kind == CursorKind.FIELD_DECL + assert fields[1].kind == CursorKind.FIELD_DECL + assert fields[1].is_anonymous() + assert teststruct.type.get_offset("typeanon") == f1 assert teststruct.type.get_offset("bariton") == bariton assert teststruct.type.get_offset("foo") == foo assert teststruct.type.get_offset("bar") == bar Modified: vendor/clang/dist/docs/AddressSanitizer.rst ============================================================================== --- vendor/clang/dist/docs/AddressSanitizer.rst Wed May 27 18:45:32 2015 (r283626) +++ vendor/clang/dist/docs/AddressSanitizer.rst Wed May 27 18:47:56 2015 (r283627) @@ -23,8 +23,7 @@ Typical slowdown introduced by AddressSa How to build ============ -Follow the `clang build instructions <../get_started.html>`_. CMake build is -supported. +Build LLVM/Clang with `CMake `_. Usage ===== Modified: vendor/clang/dist/docs/AutomaticReferenceCounting.rst ============================================================================== --- vendor/clang/dist/docs/AutomaticReferenceCounting.rst Wed May 27 18:45:32 2015 (r283626) +++ vendor/clang/dist/docs/AutomaticReferenceCounting.rst Wed May 27 18:47:56 2015 (r283627) @@ -594,7 +594,9 @@ retainable pointer type ` that implies a retained result. + ` that implies a retained result, or +* :when-revised:`[beginning LLVM 3.6]` :revision:`a load from a` ``const`` + :revision:`non-system global variable.` An expression is :arc-term:`known retained` if it is an rvalue of :ref:`C retainable pointer type ` and it is: @@ -631,6 +633,12 @@ retain-agnostic, the conversion is treat to an ObjC-typed local, and then calling ``CFRelease`` when done --- are a bit too likely to be accidentally accepted, leading to mysterious behavior. + For loads from ``const`` global variables of :ref:`C retainable pointer type + `, it is reasonable to assume that global system + constants were initialitzed with true constants (e.g. string literals), but + user constants might have been initialized with something dynamically + allocated, using a global initializer. + .. _arc.objects.restrictions.conversion-exception-contextual: Conversion from retainable object pointer type in certain contexts Modified: vendor/clang/dist/docs/ClangFormatStyleOptions.rst ============================================================================== --- vendor/clang/dist/docs/ClangFormatStyleOptions.rst Wed May 27 18:45:32 2015 (r283626) +++ vendor/clang/dist/docs/ClangFormatStyleOptions.rst Wed May 27 18:47:56 2015 (r283627) @@ -155,10 +155,23 @@ the configuration (without a prefix: ``A This applies to round brackets (parentheses), angle brackets and square brackets. This will result in formattings like - \code - someLongFunction(argument1, - argument2); - \endcode + + .. code-block:: c++ + + someLongFunction(argument1, + argument2); + +**AlignConsecutiveAssignments** (``bool``) + If ``true``, aligns consecutive assignments. + + This will align the assignment operators of consecutive lines. This + will result in formattings like + + .. code-block:: c++ + + int aaaa = 12; + int b = 23; + int ccc = 23; **AlignEscapedNewlinesLeft** (``bool``) If ``true``, aligns escaped newlines as far left as possible. @@ -330,10 +343,11 @@ the configuration (without a prefix: ``A instead of as function calls. These are expected to be macros of the form: - \code - FOREACH(, ...) - - \endcode + + .. code-block:: c++ + + FOREACH(, ...) + For example: BOOST_FOREACH. Added: vendor/clang/dist/docs/ControlFlowIntegrity.rst ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/clang/dist/docs/ControlFlowIntegrity.rst Wed May 27 18:47:56 2015 (r283627) @@ -0,0 +1,145 @@ +====================== +Control Flow Integrity +====================== + +.. toctree:: + :hidden: + + ControlFlowIntegrityDesign + +.. contents:: + :local: + +Introduction +============ + +Clang includes an implementation of a number of control flow integrity (CFI) +schemes, which are designed to abort the program upon detecting certain forms +of undefined behavior that can potentially allow attackers to subvert the +program's control flow. These schemes have been optimized for performance, +allowing developers to enable them in release builds. + +To enable Clang's available CFI schemes, use the flag ``-fsanitize=cfi``. +As currently implemented, CFI relies on link-time optimization (LTO); the CFI +schemes imply ``-flto``, and the linker used must support LTO, for example +via the `gold plugin`_. To allow the checks to be implemented efficiently, +the program must be structured such that certain object files are compiled +with CFI enabled, and are statically linked into the program. This may +preclude the use of shared libraries in some cases. + +Clang currently implements forward-edge CFI for member function calls and +bad cast checking. More schemes are under development. + +.. _gold plugin: http://llvm.org/docs/GoldPlugin.html + +Forward-Edge CFI for Virtual Calls +---------------------------------- + +This scheme checks that virtual calls take place using a vptr of the correct +dynamic type; that is, the dynamic type of the called object must be a +derived class of the static type of the object used to make the call. +This CFI scheme can be enabled on its own using ``-fsanitize=cfi-vcall``. + +For this scheme to work, all translation units containing the definition +of a virtual member function (whether inline or not) must be compiled +with ``-fsanitize=cfi-vcall`` enabled and be statically linked into the +program. Classes in the C++ standard library (under namespace ``std``) are +exempted from checking, and therefore programs may be linked against a +pre-built standard library, but this may change in the future. + +Performance +~~~~~~~~~~~ + +A performance overhead of less than 1% has been measured by running the +Dromaeo benchmark suite against an instrumented version of the Chromium +web browser. Another good performance benchmark for this mechanism is the +virtual-call-heavy SPEC 2006 xalancbmk. + +Note that this scheme has not yet been optimized for binary size; an increase +of up to 15% has been observed for Chromium. + +Bad Cast Checking +----------------- + +This scheme checks that pointer casts are made to an object of the correct +dynamic type; that is, the dynamic type of the object must be a derived class +of the pointee type of the cast. The checks are currently only introduced +where the class being casted to is a polymorphic class. + +Bad casts are not in themselves control flow integrity violations, but they +can also create security vulnerabilities, and the implementation uses many +of the same mechanisms. + +There are two types of bad cast that may be forbidden: bad casts +from a base class to a derived class (which can be checked with +``-fsanitize=cfi-derived-cast``), and bad casts from a pointer of +type ``void*`` or another unrelated type (which can be checked with +``-fsanitize=cfi-unrelated-cast``). + +The difference between these two types of casts is that the first is defined +by the C++ standard to produce an undefined value, while the second is not +in itself undefined behavior (it is well defined to cast the pointer back +to its original type). + +If a program as a matter of policy forbids the second type of cast, that +restriction can normally be enforced. However it may in some cases be necessary +for a function to perform a forbidden cast to conform with an external API +(e.g. the ``allocate`` member function of a standard library allocator). Such +functions may be blacklisted using a :doc:`SanitizerSpecialCaseList`. + +For this scheme to work, all translation units containing the definition +of a virtual member function (whether inline or not) must be compiled with +``-fsanitize=cfi-derived-cast`` or ``-fsanitize=cfi-unrelated-cast`` enabled +and be statically linked into the program. Classes in the C++ standard library +(under namespace ``std``) are exempted from checking, and therefore programs +may be linked against a pre-built standard library, but this may change in +the future. + +Non-Virtual Member Function Call Checking +----------------------------------------- + +This scheme checks that non-virtual calls take place using an object of +the correct dynamic type; that is, the dynamic type of the called object +must be a derived class of the static type of the object used to make the +call. The checks are currently only introduced where the object is of a +polymorphic class type. This CFI scheme can be enabled on its own using +``-fsanitize=cfi-nvcall``. + +For this scheme to work, all translation units containing the definition +of a virtual member function (whether inline or not) must be compiled +with ``-fsanitize=cfi-nvcall`` enabled and be statically linked into the +program. Classes in the C++ standard library (under namespace ``std``) are +exempted from checking, and therefore programs may be linked against a +pre-built standard library, but this may change in the future. + +.. _cfi-strictness: + +Strictness +~~~~~~~~~~ + +If a class has a single non-virtual base and does not introduce or override +virtual member functions or fields other than an implicitly defined virtual +destructor, it will have the same layout and virtual function semantics as +its base. By default, casts to such classes are checked as if they were made +to the least derived such class. + +Casting an instance of a base class to such a derived class is technically +undefined behavior, but it is a relatively common hack for introducing +member functions on class instances with specific properties that works under +most compilers and should not have security implications, so we allow it by +default. It can be disabled with ``-fsanitize=cfi-cast-strict``. + +Design +------ + +Please refer to the :doc:`design document`. + +Publications +------------ + +`Control-Flow Integrity: Principles, Implementations, and Applications `_. +Martin Abadi, Mihai Budiu, Úlfar Erlingsson, Jay Ligatti. + +`Enforcing Forward-Edge Control-Flow Integrity in GCC & LLVM `_. +Caroline Tice, Tom Roeder, Peter Collingbourne, Stephen Checkoway, +Úlfar Erlingsson, Luis Lozano, Geoff Pike. Added: vendor/clang/dist/docs/ControlFlowIntegrityDesign.rst ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/clang/dist/docs/ControlFlowIntegrityDesign.rst Wed May 27 18:47:56 2015 (r283627) @@ -0,0 +1,275 @@ +=========================================== +Control Flow Integrity Design Documentation +=========================================== + +This page documents the design of the :doc:`ControlFlowIntegrity` schemes +supported by Clang. + +Forward-Edge CFI for Virtual Calls +================================== + +This scheme works by allocating, for each static type used to make a virtual +call, a region of read-only storage in the object file holding a bit vector +that maps onto to the region of storage used for those virtual tables. Each +set bit in the bit vector corresponds to the `address point`_ for a virtual +table compatible with the static type for which the bit vector is being built. + +For example, consider the following three C++ classes: + +.. code-block:: c++ + + struct A { + virtual void f1(); + virtual void f2(); + virtual void f3(); + }; + + struct B : A { + virtual void f1(); + virtual void f2(); + virtual void f3(); + }; + + struct C : A { + virtual void f1(); + virtual void f2(); + virtual void f3(); + }; + +The scheme will cause the virtual tables for A, B and C to be laid out +consecutively: + +.. csv-table:: Virtual Table Layout for A, B, C + :header: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 + + A::offset-to-top, &A::rtti, &A::f1, &A::f2, &A::f3, B::offset-to-top, &B::rtti, &B::f1, &B::f2, &B::f3, C::offset-to-top, &C::rtti, &C::f1, &C::f2, &C::f3 + +The bit vector for static types A, B and C will look like this: + +.. csv-table:: Bit Vectors for A, B, C + :header: Class, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 + + A, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 + B, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 + C, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 + +Bit vectors are represented in the object file as byte arrays. By loading +from indexed offsets into the byte array and applying a mask, a program can +test bits from the bit set with a relatively short instruction sequence. Bit +vectors may overlap so long as they use different bits. For the full details, +see the `ByteArrayBuilder`_ class. + +In this case, assuming A is laid out at offset 0 in bit 0, B at offset 0 in +bit 1 and C at offset 0 in bit 2, the byte array would look like this: + +.. code-block:: c++ + + char bits[] = { 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 5, 0, 0 }; + +To emit a virtual call, the compiler will assemble code that checks that +the object's virtual table pointer is in-bounds and aligned and that the +relevant bit is set in the bit vector. + +For example on x86 a typical virtual call may look like this: + +.. code-block:: none + + ca7fbb: 48 8b 0f mov (%rdi),%rcx + ca7fbe: 48 8d 15 c3 42 fb 07 lea 0x7fb42c3(%rip),%rdx + ca7fc5: 48 89 c8 mov %rcx,%rax + ca7fc8: 48 29 d0 sub %rdx,%rax + ca7fcb: 48 c1 c0 3d rol $0x3d,%rax + ca7fcf: 48 3d 7f 01 00 00 cmp $0x17f,%rax + ca7fd5: 0f 87 36 05 00 00 ja ca8511 + ca7fdb: 48 8d 15 c0 0b f7 06 lea 0x6f70bc0(%rip),%rdx + ca7fe2: f6 04 10 10 testb $0x10,(%rax,%rdx,1) + ca7fe6: 0f 84 25 05 00 00 je ca8511 + ca7fec: ff 91 98 00 00 00 callq *0x98(%rcx) + [...] + ca8511: 0f 0b ud2 + +The compiler relies on co-operation from the linker in order to assemble +the bit vectors for the whole program. It currently does this using LLVM's +`bit sets`_ mechanism together with link-time optimization. + +.. _address point: https://mentorembedded.github.io/cxx-abi/abi.html#vtable-general +.. _bit sets: http://llvm.org/docs/BitSets.html +.. _ByteArrayBuilder: http://llvm.org/docs/doxygen/html/structllvm_1_1ByteArrayBuilder.html + +Optimizations +------------- + +The scheme as described above is the fully general variant of the scheme. +Most of the time we are able to apply one or more of the following +optimizations to improve binary size or performance. + +In fact, if you try the above example with the current version of the +compiler, you will probably find that it will not use the described virtual +table layout or machine instructions. Some of the optimizations we are about +to introduce cause the compiler to use a different layout or a different +sequence of machine instructions. + +Stripping Leading/Trailing Zeros in Bit Vectors +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If a bit vector contains leading or trailing zeros, we can strip them from +the vector. The compiler will emit code to check if the pointer is in range +of the region covered by ones, and perform the bit vector check using a +truncated version of the bit vector. For example, the bit vectors for our +example class hierarchy will be emitted like this: + +.. csv-table:: Bit Vectors for A, B, C + :header: Class, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 + + A, , , 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, , + B, , , , , , , , 1, , , , , , , + C, , , , , , , , , , , , , 1, , + +Short Inline Bit Vectors +~~~~~~~~~~~~~~~~~~~~~~~~ + +If the vector is sufficiently short, we can represent it as an inline constant +on x86. This saves us a few instructions when reading the correct element +of the bit vector. + +If the bit vector fits in 32 bits, the code looks like this: + +.. code-block:: none + + dc2: 48 8b 03 mov (%rbx),%rax + dc5: 48 8d 15 14 1e 00 00 lea 0x1e14(%rip),%rdx + dcc: 48 89 c1 mov %rax,%rcx + dcf: 48 29 d1 sub %rdx,%rcx + dd2: 48 c1 c1 3d rol $0x3d,%rcx + dd6: 48 83 f9 03 cmp $0x3,%rcx + dda: 77 2f ja e0b + ddc: ba 09 00 00 00 mov $0x9,%edx + de1: 0f a3 ca bt %ecx,%edx + de4: 73 25 jae e0b + de6: 48 89 df mov %rbx,%rdi + de9: ff 10 callq *(%rax) + [...] + e0b: 0f 0b ud2 + +Or if the bit vector fits in 64 bits: + +.. code-block:: none + + 11a6: 48 8b 03 mov (%rbx),%rax + 11a9: 48 8d 15 d0 28 00 00 lea 0x28d0(%rip),%rdx + 11b0: 48 89 c1 mov %rax,%rcx + 11b3: 48 29 d1 sub %rdx,%rcx + 11b6: 48 c1 c1 3d rol $0x3d,%rcx + 11ba: 48 83 f9 2a cmp $0x2a,%rcx + 11be: 77 35 ja 11f5 + 11c0: 48 ba 09 00 00 00 00 movabs $0x40000000009,%rdx + 11c7: 04 00 00 + 11ca: 48 0f a3 ca bt %rcx,%rdx + 11ce: 73 25 jae 11f5 + 11d0: 48 89 df mov %rbx,%rdi + 11d3: ff 10 callq *(%rax) + [...] + 11f5: 0f 0b ud2 + +If the bit vector consists of a single bit, there is only one possible +virtual table, and the check can consist of a single equality comparison: + +.. code-block:: none + + 9a2: 48 8b 03 mov (%rbx),%rax + 9a5: 48 8d 0d a4 13 00 00 lea 0x13a4(%rip),%rcx + 9ac: 48 39 c8 cmp %rcx,%rax + 9af: 75 25 jne 9d6 + 9b1: 48 89 df mov %rbx,%rdi + 9b4: ff 10 callq *(%rax) + [...] + 9d6: 0f 0b ud2 + +Virtual Table Layout +~~~~~~~~~~~~~~~~~~~~ + +The compiler lays out classes of disjoint hierarchies in separate regions +of the object file. At worst, bit vectors in disjoint hierarchies only +need to cover their disjoint hierarchy. But the closer that classes in +sub-hierarchies are laid out to each other, the smaller the bit vectors for +those sub-hierarchies need to be (see "Stripping Leading/Trailing Zeros in Bit +Vectors" above). The `GlobalLayoutBuilder`_ class is responsible for laying +out the globals efficiently to minimize the sizes of the underlying bitsets. + +.. _GlobalLayoutBuilder: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/IPO/LowerBitSets.h?view=markup + +Alignment +~~~~~~~~~ + +If all gaps between address points in a particular bit vector are multiples +of powers of 2, the compiler can compress the bit vector by strengthening +the alignment requirements of the virtual table pointer. For example, given +this class hierarchy: + +.. code-block:: c++ + + struct A { + virtual void f1(); + virtual void f2(); + }; + + struct B : A { + virtual void f1(); + virtual void f2(); + virtual void f3(); + virtual void f4(); + virtual void f5(); + virtual void f6(); + }; + + struct C : A { + virtual void f1(); + virtual void f2(); + }; + +The virtual tables will be laid out like this: + +.. csv-table:: Virtual Table Layout for A, B, C + :header: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + + A::offset-to-top, &A::rtti, &A::f1, &A::f2, B::offset-to-top, &B::rtti, &B::f1, &B::f2, &B::f3, &B::f4, &B::f5, &B::f6, C::offset-to-top, &C::rtti, &C::f1, &C::f2 + +Notice that each address point for A is separated by 4 words. This lets us +emit a compressed bit vector for A that looks like this: + +.. csv-table:: + :header: 2, 6, 10, 14 + + 1, 1, 0, 1 + +At call sites, the compiler will strengthen the alignment requirements by +using a different rotate count. For example, on a 64-bit machine where the +address points are 4-word aligned (as in A from our example), the ``rol`` +instruction may look like this: + +.. code-block:: none + + dd2: 48 c1 c1 3b rol $0x3b,%rcx + +Padding to Powers of 2 +~~~~~~~~~~~~~~~~~~~~~~ + +Of course, this alignment scheme works best if the address points are +in fact aligned correctly. To make this more likely to happen, we insert +padding between virtual tables that in many cases aligns address points to +a power of 2. Specifically, our padding aligns virtual tables to the next +highest power of 2 bytes; because address points for specific base classes +normally appear at fixed offsets within the virtual table, this normally +has the effect of aligning the address points as well. + +This scheme introduces tradeoffs between decreased space overhead for +instructions and bit vectors and increased overhead in the form of padding. We +therefore limit the amount of padding so that we align to no more than 128 +bytes. This number was found experimentally to provide a good tradeoff. + +Eliminating Bit Vector Checks for All-Ones Bit Vectors +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If the bit vector is all ones, the bit vector check is redundant; we simply +need to check that the address is in range and well aligned. This is more +likely to occur if the virtual tables are padded. Modified: vendor/clang/dist/docs/InternalsManual.rst ============================================================================== --- vendor/clang/dist/docs/InternalsManual.rst Wed May 27 18:45:32 2015 (r283626) +++ vendor/clang/dist/docs/InternalsManual.rst Wed May 27 18:47:56 2015 (r283627) @@ -1323,11 +1323,13 @@ range of iterators over declarations of ``DeclContext`` manages multiply-defined declaration contexts internally. The function ``DeclContext::getPrimaryContext`` retrieves the "primary" context for a given ``DeclContext`` instance, which is the ``DeclContext`` responsible for -maintaining the lookup table used for the semantics-centric view. Given the -primary context, one can follow the chain of ``DeclContext`` nodes that define -additional declarations via ``DeclContext::getNextContext``. Note that these -functions are used internally within the lookup and insertion methods of the -``DeclContext``, so the vast majority of clients can ignore them. +maintaining the lookup table used for the semantics-centric view. Given a +DeclContext, one can obtain the set of declaration contexts that are semanticaly +connected to this declaration context, in source order, including this context +(which will be the only result, for non-namespace contexts) via +``DeclContext::collectAllContexts``. Note that these functions are used +internally within the lookup and insertion methods of the ``DeclContext``, so +the vast majority of clients can ignore them. .. _CFG: @@ -1619,192 +1621,304 @@ How to change Clang How to add an attribute ----------------------- +Attributes are a form of metadata that can be attached to a program construct, +allowing the programmer to pass semantic information along to the compiler for +various uses. For example, attributes may be used to alter the code generation +for a program construct, or to provide extra semantic information for static +analysis. This document explains how to add a custom attribute to Clang. +Documentation on existing attributes can be found `here +`_. Attribute Basics ^^^^^^^^^^^^^^^^ - -Attributes in clang come in two forms: parsed form, and semantic form. Both -forms are represented via a tablegen definition of the attribute, specified in -Attr.td. +Attributes in Clang are handled in three stages: parsing into a parsed attribute +representation, conversion from a parsed attribute into a semantic attribute, +and then the semantic handling of the attribute. + +Parsing of the attribute is determined by the various syntactic forms attributes +can take, such as GNU, C++11, and Microsoft style attributes, as well as other +information provided by the table definition of the attribute. Ultimately, the +parsed representation of an attribute object is an ``AttributeList`` object. +These parsed attributes chain together as a list of parsed attributes attached +to a declarator or declaration specifier. The parsing of attributes is handled +automatically by Clang, except for attributes spelled as keywords. When +implementing a keyword attribute, the parsing of the keyword and creation of the +``AttributeList`` object must be done manually. + +Eventually, ``Sema::ProcessDeclAttributeList()`` is called with a ``Decl`` and +an ``AttributeList``, at which point the parsed attribute can be transformed +into a semantic attribute. The process by which a parsed attribute is converted +into a semantic attribute depends on the attribute definition and semantic +requirements of the attribute. The end result, however, is that the semantic +attribute object is attached to the ``Decl`` object, and can be obtained by a +call to ``Decl::getAttr()``. + +The structure of the semantic attribute is also governed by the attribute +definition given in Attr.td. This definition is used to automatically generate +functionality used for the implementation of the attribute, such as a class +derived from ``clang::Attr``, information for the parser to use, automated +semantic checking for some attributes, etc. ``include/clang/Basic/Attr.td`` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +The first step to adding a new attribute to Clang is to add its definition to +`include/clang/Basic/Attr.td +`_. +This tablegen definition must derive from the ``Attr`` (tablegen, not +semantic) type, or one of its derivatives. Most attributes will derive from the +``InheritableAttr`` type, which specifies that the attribute can be inherited by +later redeclarations of the ``Decl`` it is associated with. +``InheritableParamAttr`` is similar to ``InheritableAttr``, except that the +attribute is written on a parameter instead of a declaration. If the attribute +is intended to apply to a type instead of a declaration, such an attribute +should derive from ``TypeAttr``, and will generally not be given an AST +representation. (Note that this document does not cover the creation of type +attributes.) An attribute that inherits from ``IgnoredAttr`` is parsed, but will +generate an ignored attribute diagnostic when used, which may be useful when an +attribute is supported by another vendor but not supported by clang. + +The definition will specify several key pieces of information, such as the +semantic name of the attribute, the spellings the attribute supports, the +arguments the attribute expects, and more. Most members of the ``Attr`` tablegen +type do not require definitions in the derived definition as the default +suffice. However, every attribute must specify at least a spelling list, a +subject list, and a documentation list. + +Spellings +~~~~~~~~~ +All attributes are required to specify a spelling list that denotes the ways in +which the attribute can be spelled. For instance, a single semantic attribute +may have a keyword spelling, as well as a C++11 spelling and a GNU spelling. An +empty spelling list is also permissible and may be useful for attributes which +are created implicitly. The following spellings are accepted: + + ============ ================================================================ + Spelling Description + ============ ================================================================ + ``GNU`` Spelled with a GNU-style ``__attribute__((attr))`` syntax and + placement. + ``CXX11`` Spelled with a C++-style ``[[attr]]`` syntax. If the attribute + is meant to be used by Clang, it should set the namespace to + ``"clang"``. + ``Declspec`` Spelled with a Microsoft-style ``__declspec(attr)`` syntax. + ``Keyword`` The attribute is spelled as a keyword, and required custom + parsing. + ``GCC`` Specifies two spellings: the first is a GNU-style spelling, and + the second is a C++-style spelling with the ``gnu`` namespace. + Attributes should only specify this spelling for attributes + supported by GCC. + ``Pragma`` The attribute is spelled as a ``#pragma``, and requires custom + processing within the preprocessor. If the attribute is meant to + be used by Clang, it should set the namespace to ``"clang"``. + Note that this spelling is not used for declaration attributes. + ============ ================================================================ + +Subjects +~~~~~~~~ +Attributes appertain to one or more ``Decl`` subjects. If the attribute attempts +to attach to a subject that is not in the subject list, a diagnostic is issued +automatically. Whether the diagnostic is a warning or an error depends on how +the attribute's ``SubjectList`` is defined, but the default behavior is to warn. +The diagnostics displayed to the user are automatically determined based on the +subjects in the list, but a custom diagnostic parameter can also be specified in +the ``SubjectList``. The diagnostics generated for subject list violations are +either ``diag::warn_attribute_wrong_decl_type`` or +``diag::err_attribute_wrong_decl_type``, and the parameter enumeration is found +in `include/clang/Sema/AttributeList.h +`_ +If a previously unused Decl node is added to the ``SubjectList``, the logic used +to automatically determine the diagnostic parameter in `utils/TableGen/ClangAttrEmitter.cpp +`_ +may need to be updated. + +By default, all subjects in the SubjectList must either be a Decl node defined +in ``DeclNodes.td``, or a statement node defined in ``StmtNodes.td``. However, +more complex subjects can be created by creating a ``SubsetSubject`` object. +Each such object has a base subject which it appertains to (which must be a +Decl or Stmt node, and not a SubsetSubject node), and some custom code which is +called when determining whether an attribute appertains to the subject. For +instance, a ``NonBitField`` SubsetSubject appertains to a ``FieldDecl``, and +tests whether the given FieldDecl is a bit field. When a SubsetSubject is +specified in a SubjectList, a custom diagnostic parameter must also be provided. -First, add your attribute to the `include/clang/Basic/Attr.td -`_ -file. - -Each attribute gets a ``def`` inheriting from ``Attr`` or one of its -subclasses. ``InheritableAttr`` means that the attribute also applies to -subsequent declarations of the same name. ``InheritableParamAttr`` is similar -to ``InheritableAttr``, except that the attribute is written on a parameter -instead of a declaration, type or statement. Attributes inheriting from -``TypeAttr`` are pure type attributes which generally are not given a -representation in the AST. Attributes inheriting from ``TargetSpecificAttr`` -are attributes specific to one or more target architectures. An attribute that -inherits from ``IgnoredAttr`` is parsed, but will generate an ignored attribute -diagnostic when used. The attribute type may be useful when an attribute is -supported by another vendor, but not supported by clang. - -``Spellings`` lists the strings that can appear in ``__attribute__((here))`` or -``[[here]]``. All such strings will be synonymous. Possible ``Spellings`` -are: ``GNU`` (for use with GNU-style __attribute__ spellings), ``Declspec`` -(for use with Microsoft Visual Studio-style __declspec spellings), ``CXX11` -(for use with C++11-style [[foo]] and [[foo::bar]] spellings), and ``Keyword`` -(for use with attributes that are implemented as keywords, like C++11's -``override`` or ``final``). If you want to allow the ``[[]]`` C++11 syntax, you -have to define a list of ``Namespaces``, which will let users write -``[[namespace::spelling]]``. Using the empty string for a namespace will allow -users to write just the spelling with no "``::``". Attributes which g++-4.8 -or later accepts should also have a ``CXX11<"gnu", "spelling">`` spelling. - -``Subjects`` restricts what kinds of AST node to which this attribute can -appertain (roughly, attach). The subjects are specified via a ``SubjectList``, -which specify the list of subjects. Additionally, subject-related diagnostics -can be specified to be warnings or errors, with the default being a warning. -The diagnostics displayed to the user are automatically determined based on -the subjects in the list, but a custom diagnostic parameter can also be -specified in the ``SubjectList``. The diagnostics generated for subject list -violations are either ``diag::warn_attribute_wrong_decl_type`` or -``diag::err_attribute_wrong_decl_type``, and the parameter enumeration is -found in `include/clang/Sema/AttributeList.h -`_ -If you add new Decl nodes to the ``SubjectList``, you may need to update the -logic used to automatically determine the diagnostic parameter in `utils/TableGen/ClangAttrEmitter.cpp -`_. - -Diagnostic checking for attribute subject lists is automated except when +Diagnostic checking for attribute subject lists is automated except when ``HasCustomParsing`` is set to ``1``. -By default, all subjects in the SubjectList must either be a Decl node defined -in ``DeclNodes.td``, or a statement node defined in ``StmtNodes.td``. However, -more complex subjects can be created by creating a ``SubsetSubject`` object. -Each such object has a base subject which it appertains to (which must be a -Decl or Stmt node, and not a SubsetSubject node), and some custom code which is -called when determining whether an attribute appertains to the subject. For -instance, a ``NonBitField`` SubsetSubject appertains to a ``FieldDecl``, and -tests whether the given FieldDecl is a bit field. When a SubsetSubject is -specified in a SubjectList, a custom diagnostic parameter must also be provided. +Documentation +~~~~~~~~~~~~~ +All attributes must have some form of documentation associated with them. +Documentation is table generated on the public web server by a server-side +process that runs daily. Generally, the documentation for an attribute is a +stand-alone definition in `include/clang/Basic/AttrDocs.td +`_ +that is named after the attribute being documented. -``Args`` names the arguments the attribute takes, in order. If ``Args`` is +If the attribute is not for public consumption, or is an implicitly-created +attribute that has no visible spelling, the documentation list can specify the +``Undocumented`` object. Otherwise, the attribute should have its documentation +added to AttrDocs.td. + +Documentation derives from the ``Documentation`` tablegen type. All derived +types must specify a documentation category and the actual documentation itself. +Additionally, it can specify a custom heading for the attribute, though a +default heading will be chosen when possible. + +There are four predefined documentation categories: ``DocCatFunction`` for +attributes that appertain to function-like subjects, ``DocCatVariable`` for +attributes that appertain to variable-like subjects, ``DocCatType`` for type +attributes, and ``DocCatStmt`` for statement attributes. A custom documentation +category should be used for groups of attributes with similar functionality. +Custom categories are good for providing overview information for the attributes +grouped under it. For instance, the consumed annotation attributes define a +custom category, ``DocCatConsumed``, that explains what consumed annotations are +at a high level. + +Documentation content (whether it is for an attribute or a category) is written +using reStructuredText (RST) syntax. + +After writing the documentation for the attribute, it should be locally tested +to ensure that there are no issues generating the documentation on the server. +Local testing requires a fresh build of clang-tblgen. To generate the attribute +documentation, execute the following command:: + + clang-tblgen -gen-attr-docs -I /path/to/clang/include /path/to/clang/include/clang/Basic/Attr.td -o /path/to/clang/docs/AttributeReference.rst + +When testing locally, *do not* commit changes to ``AttributeReference.rst``. +This file is generated by the server automatically, and any changes made to this +file will be overwritten. + +Arguments +~~~~~~~~~ +Attributes may optionally specify a list of arguments that can be passed to the +attribute. Attribute arguments specify both the parsed form and the semantic +form of the attribute. For example, if ``Args`` is ``[StringArgument<"Arg1">, IntArgument<"Arg2">]`` then -``__attribute__((myattribute("Hello", 3)))`` will be a valid use. Attribute -arguments specify both the parsed form and the semantic form of the attribute. -The previous example shows an attribute which requires two attributes while -parsing, and the Attr subclass' constructor for the attribute will require a -string and integer argument. - -Diagnostic checking for argument counts is automated except when -``HasCustomParsing`` is set to ``1``, or when the attribute uses an optional or -variadic argument. Diagnostic checking for argument semantics is not automated. - -If the parsed form of the attribute is more complex, or differs from the -semantic form, the ``HasCustomParsing`` bit can be set to ``1`` for the class, -and the parsing code in `Parser::ParseGNUAttributeArgs -`_ -can be updated for the special case. Note that this only applies to arguments -with a GNU spelling -- attributes with a __declspec spelling currently ignore +``__attribute__((myattribute("Hello", 3)))`` will be a valid use; it requires +two arguments while parsing, and the Attr subclass' constructor for the +semantic attribute will require a string and integer argument. + +All arguments have a name and a flag that specifies whether the argument is +optional. The associated C++ type of the argument is determined by the argument +definition type. If the existing argument types are insufficient, new types can +be created, but it requires modifying `utils/TableGen/ClangAttrEmitter.cpp +`_ +to properly support the type. + +Other Properties +~~~~~~~~~~~~~~~~ +The ``Attr`` definition has other members which control the behavior of the +attribute. Many of them are special-purpose and beyond the scope of this +document, however a few deserve mention. + +If the parsed form of the attribute is more complex, or differs from the +semantic form, the ``HasCustomParsing`` bit can be set to ``1`` for the class, +and the parsing code in `Parser::ParseGNUAttributeArgs() +`_ +can be updated for the special case. Note that this only applies to arguments +with a GNU spelling -- attributes with a __declspec spelling currently ignore this flag and are handled by ``Parser::ParseMicrosoftDeclSpec``. -Custom accessors can be generated for an attribute based on the spelling list -for that attribute. For instance, if an attribute has two different spellings: -'Foo' and 'Bar', accessors can be created: -``[Accessor<"isFoo", [GNU<"Foo">]>, Accessor<"isBar", [GNU<"Bar">]>]`` *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Wed May 27 18:49:05 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 93E0D320; Wed, 27 May 2015 18:49:05 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.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 6887BF1F; Wed, 27 May 2015 18:49:05 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RIn5Q5060333; Wed, 27 May 2015 18:49:05 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RIn5Yw060332; Wed, 27 May 2015 18:49:05 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201505271849.t4RIn5Yw060332@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Wed, 27 May 2015 18:49:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r283628 - vendor/clang/clang-trunk-r238337 X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 18:49:05 -0000 Author: dim Date: Wed May 27 18:49:04 2015 New Revision: 283628 URL: https://svnweb.freebsd.org/changeset/base/283628 Log: Tag clang trunk r238337. Added: - copied from r283627, vendor/clang/dist/ Directory Properties: vendor/clang/clang-trunk-r238337/ (props changed) From owner-svn-src-all@FreeBSD.ORG Wed May 27 19:09:19 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 74ABC9D5; Wed, 27 May 2015 19:09:19 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4E685666; Wed, 27 May 2015 19:09:19 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (pool-173-54-116-245.nwrknj.fios.verizon.net [173.54.116.245]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 530B0B939; Wed, 27 May 2015 15:09:17 -0400 (EDT) From: John Baldwin To: Eric Joyner Cc: 'Jack F Vogel' , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: Re: svn commit: r283620 - in stable/10/sys: amd64/conf conf dev/ixgbe modules modules/ix modules/ixv Date: Wed, 27 May 2015 15:09:13 -0400 Message-ID: <16669147.Y9s9XdOlga@ralph.baldwin.cx> User-Agent: KMail/4.14.3 (FreeBSD/10.1-STABLE; KDE/4.14.3; amd64; ; ) In-Reply-To: <201505271744.t4RHiC04024525@svn.freebsd.org> References: <201505271744.t4RHiC04024525@svn.freebsd.org> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Wed, 27 May 2015 15:09:17 -0400 (EDT) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 19:09:19 -0000 On Wednesday, May 27, 2015 05:44:12 PM Eric Joyner wrote: > Author: erj > Date: Wed May 27 17:44:11 2015 > New Revision: 283620 > URL: https://svnweb.freebsd.org/changeset/base/283620 > > Log: > MFC ixgbe commits for 10.2: > > - r280182 - Split the driver into independent pf/vf loadables > - r280197 - Resolve build issues > - r280204 - Fix multiple same-name devclasses > - r280228 - Fix i386 LINT build issues / remove unused variable > - r280252 - Fix building ixgbe with gcc > - r280962 - Make changes to busdma code similar to r257541 > - r281772 & r281773 - Remove unused variable > - partial r282280 - stats counter update (ix-only) > - r282289 - Add X550 support > - r282290 - Add X550 makefile updates > - r282293 - Add ixgbe_x550.c to conf/files > - r282299 - Fix gcc compile (extraneous extern declaration) > > Finally, add ix_txrx.c to conf/files because it's required for compile in stable/10. > > Approved by: jfv (mentor) It would be better to not break existing kernel configs for 10. You could hack the lines in sys/conf/files to allow either 'device ix' or 'device ixgbe' to work by using 'optional ixgbe ix', etc. You wouldn't need to document it in NOTES and you could leave your existing changes in GENERIC, but this would avoid surprises for folks who were using custom kernel configs. Similarly, you probably want to allow 'kldload ixgbe' or 'ixgbe_load="YES"' in loader.conf to still work. You can try just installing an 'ixgbe.ko' symlink via the module's Makefile, though I'm not sure that will work correctly for the loader.conf case. If it doesn't, then the other route is to create a stub ixgbe.c file that MODULE_DEPEND()'s on the ix and ixv driver modules so that it autoloads if_ix.ko and if_ixv.ko as dependencies when it is loaded. -- John Baldwin From owner-svn-src-all@FreeBSD.ORG Wed May 27 19:28:15 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C2A8453C; Wed, 27 May 2015 19:28:15 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.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 B0F74BB8; Wed, 27 May 2015 19:28:15 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RJSFUQ081665; Wed, 27 May 2015 19:28:15 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RJSF4A081664; Wed, 27 May 2015 19:28:15 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201505271928.t4RJSF4A081664@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Wed, 27 May 2015 19:28:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283629 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 19:28:15 -0000 Author: kib Date: Wed May 27 19:28:14 2015 New Revision: 283629 URL: https://svnweb.freebsd.org/changeset/base/283629 Log: Add missed {}. Noted by: Morten Rodal MFC after: 2 weeks Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c Wed May 27 18:49:04 2015 (r283628) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c Wed May 27 19:28:14 2015 (r283629) @@ -2314,9 +2314,10 @@ bail: * Since we couldn't setup the sa framework, try to force * unmount this file system. */ - if (vn_vfswlock(zfsvfs->z_vfs->vfs_vnodecovered) == 0) + if (vn_vfswlock(zfsvfs->z_vfs->vfs_vnodecovered) == 0) { vfs_ref(zfsvfs->z_vfs); (void) dounmount(zfsvfs->z_vfs, MS_FORCE, curthread); + } } return (err); } From owner-svn-src-all@FreeBSD.ORG Wed May 27 19:30:36 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 22BED7DF; Wed, 27 May 2015 19:30:36 +0000 (UTC) (envelope-from yaneurabeya@gmail.com) Received: from mail-qc0-x22a.google.com (mail-qc0-x22a.google.com [IPv6:2607:f8b0:400d:c01::22a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id D02BFCAA; Wed, 27 May 2015 19:30:35 +0000 (UTC) (envelope-from yaneurabeya@gmail.com) Received: by qchk10 with SMTP id k10so8402679qch.2; Wed, 27 May 2015 12:30:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=irGtmwiHldn0fMgv7X2+Isk54+TrBuZ5mDtMqVfU+j0=; b=H8jkrwdY5aiSGX3sb+/NjJr5cj8hAExvup3FVXyECTzKwfa+ID8xq8VJyxhpM9pTLH wRuriDalPEDNsShrW/4M5hReTxsU7uWXNaRWp+/7M/IeAMORHFms+Z72NqPqy/d+vjmk +wd3SWBDgjNVEKQad7ZrHHwaWoWHFK1Q/A4Kmg6fulmffR5/vyO57KCjDKIQRfe8Zp3J KVtvgXoU7c9TgkU2dQr9dawiUKZ7wjuJMtce1pCNC2TOLfuLLgmdLwAq0EceXxYbULUO IyKm+Aqc7dg86IHWOjK7O8n+zlHDuR7PxJaRdgBYEJLL2MtP3YeNq6nDLOxd3ftKYOGb Irqw== MIME-Version: 1.0 X-Received: by 10.140.90.99 with SMTP id w90mr41451597qgd.57.1432755035032; Wed, 27 May 2015 12:30:35 -0700 (PDT) Received: by 10.140.98.73 with HTTP; Wed, 27 May 2015 12:30:34 -0700 (PDT) In-Reply-To: <16669147.Y9s9XdOlga@ralph.baldwin.cx> References: <201505271744.t4RHiC04024525@svn.freebsd.org> <16669147.Y9s9XdOlga@ralph.baldwin.cx> Date: Wed, 27 May 2015 12:30:34 -0700 Message-ID: Subject: Re: svn commit: r283620 - in stable/10/sys: amd64/conf conf dev/ixgbe modules modules/ix modules/ixv From: NGie Cooper To: John Baldwin Cc: Eric Joyner , Jack F Vogel , "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-stable@freebsd.org" , "svn-src-stable-10@freebsd.org" Content-Type: text/plain; charset=UTF-8 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 19:30:36 -0000 On Wed, May 27, 2015 at 12:09 PM, John Baldwin wrote: > On Wednesday, May 27, 2015 05:44:12 PM Eric Joyner wrote: >> Author: erj >> Date: Wed May 27 17:44:11 2015 >> New Revision: 283620 >> URL: https://svnweb.freebsd.org/changeset/base/283620 >> >> Log: >> MFC ixgbe commits for 10.2: >> >> - r280182 - Split the driver into independent pf/vf loadables >> - r280197 - Resolve build issues >> - r280204 - Fix multiple same-name devclasses >> - r280228 - Fix i386 LINT build issues / remove unused variable >> - r280252 - Fix building ixgbe with gcc >> - r280962 - Make changes to busdma code similar to r257541 >> - r281772 & r281773 - Remove unused variable >> - partial r282280 - stats counter update (ix-only) >> - r282289 - Add X550 support >> - r282290 - Add X550 makefile updates >> - r282293 - Add ixgbe_x550.c to conf/files >> - r282299 - Fix gcc compile (extraneous extern declaration) >> >> Finally, add ix_txrx.c to conf/files because it's required for compile in stable/10. >> >> Approved by: jfv (mentor) > > It would be better to not break existing kernel configs for 10. You could > hack the lines in sys/conf/files to allow either 'device ix' or 'device ixgbe' > to work by using 'optional ixgbe ix', etc. You wouldn't need to document it > in NOTES and you could leave your existing changes in GENERIC, but this would > avoid surprises for folks who were using custom kernel configs. > > Similarly, you probably want to allow 'kldload ixgbe' or 'ixgbe_load="YES"' > in loader.conf to still work. You can try just installing an 'ixgbe.ko' > symlink via the module's Makefile, though I'm not sure that will work > correctly for the loader.conf case. If it doesn't, then the other route is > to create a stub ixgbe.c file that MODULE_DEPEND()'s on the ix and ixv driver > modules so that it autoloads if_ix.ko and if_ixv.ko as dependencies when it > is loaded. +100 From owner-svn-src-all@FreeBSD.ORG Wed May 27 19:49:34 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 308EDE08; Wed, 27 May 2015 19:49:34 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.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 1F7D2100; Wed, 27 May 2015 19:49:34 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RJnXVb091953; Wed, 27 May 2015 19:49:33 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RJnXpk091952; Wed, 27 May 2015 19:49:33 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <201505271949.t4RJnXpk091952@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Wed, 27 May 2015 19:49:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283630 - head/usr.bin/vmstat X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 19:49:34 -0000 Author: jhb Date: Wed May 27 19:49:33 2015 New Revision: 283630 URL: https://svnweb.freebsd.org/changeset/base/283630 Log: Trim spurious colon. Modified: head/usr.bin/vmstat/vmstat.c Modified: head/usr.bin/vmstat/vmstat.c ============================================================================== --- head/usr.bin/vmstat/vmstat.c Wed May 27 19:28:14 2015 (r283629) +++ head/usr.bin/vmstat/vmstat.c Wed May 27 19:49:33 2015 (r283630) @@ -1445,7 +1445,7 @@ display_object(struct kinfo_vmobject *kv str = "UC-"; break; #endif -#ifdef VM_MEMATTR_WB_WA: +#ifdef VM_MEMATTR_WB_WA case VM_MEMATTR_WB_WA: str = "WB"; break; From owner-svn-src-all@FreeBSD.ORG Wed May 27 20:37:40 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 19CA567A; Wed, 27 May 2015 20:37:40 +0000 (UTC) (envelope-from slm@FreeBSD.org) Received: from svn.freebsd.org (svn.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 05E5AE53; Wed, 27 May 2015 20:37:40 +0000 (UTC) (envelope-from slm@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RKbd9P017572; Wed, 27 May 2015 20:37:39 GMT (envelope-from slm@FreeBSD.org) Received: (from slm@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RKbYs8017540; Wed, 27 May 2015 20:37:34 GMT (envelope-from slm@FreeBSD.org) Message-Id: <201505272037.t4RKbYs8017540@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: slm set sender to slm@FreeBSD.org using -f From: Stephen McConnell Date: Wed, 27 May 2015 20:37:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283632 - in head/sys/dev/mpr: . mpi X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 20:37:40 -0000 Author: slm Date: Wed May 27 20:37:34 2015 New Revision: 283632 URL: https://svnweb.freebsd.org/changeset/base/283632 Log: This setting of stop_at_shutdown should have been removed with r279253 Approved by: ken MFC after: 1 week Modified: head/sys/dev/mpr/mpi/mpi2.h head/sys/dev/mpr/mpi/mpi2_cnfg.h head/sys/dev/mpr/mpi/mpi2_hbd.h head/sys/dev/mpr/mpi/mpi2_history.txt head/sys/dev/mpr/mpi/mpi2_init.h head/sys/dev/mpr/mpi/mpi2_ioc.h head/sys/dev/mpr/mpi/mpi2_ra.h head/sys/dev/mpr/mpi/mpi2_raid.h head/sys/dev/mpr/mpi/mpi2_sas.h head/sys/dev/mpr/mpi/mpi2_targ.h head/sys/dev/mpr/mpi/mpi2_tool.h head/sys/dev/mpr/mpi/mpi2_type.h head/sys/dev/mpr/mpr.c head/sys/dev/mpr/mpr_config.c head/sys/dev/mpr/mpr_ioctl.h head/sys/dev/mpr/mpr_mapping.c head/sys/dev/mpr/mpr_mapping.h head/sys/dev/mpr/mpr_pci.c head/sys/dev/mpr/mpr_sas.c head/sys/dev/mpr/mpr_sas.h head/sys/dev/mpr/mpr_sas_lsi.c head/sys/dev/mpr/mpr_user.c head/sys/dev/mpr/mprvar.h Modified: head/sys/dev/mpr/mpi/mpi2.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2.h Wed May 27 20:26:41 2015 (r283631) +++ head/sys/dev/mpr/mpi/mpi2.h Wed May 27 20:37:34 2015 (r283632) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2013 LSI Corp. + * Copyright (c) 2012-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,13 +27,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2000-2013 LSI Corporation. + * Copyright (c) 2000-2015 LSI Corporation. + * Copyright (c) 2013-2015 Avago Technologies * * * Name: mpi2.h Modified: head/sys/dev/mpr/mpi/mpi2_cnfg.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_cnfg.h Wed May 27 20:26:41 2015 (r283631) +++ head/sys/dev/mpr/mpi/mpi2_cnfg.h Wed May 27 20:37:34 2015 (r283632) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2013 LSI Corp. + * Copyright (c) 2012-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,13 +27,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2000-2013 LSI Corporation. + * Copyright (c) 2000-2015 LSI Corporation. + * Copyright (c) 2013-2015 Avago Technologies * * * Name: mpi2_cnfg.h Modified: head/sys/dev/mpr/mpi/mpi2_hbd.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_hbd.h Wed May 27 20:26:41 2015 (r283631) +++ head/sys/dev/mpr/mpi/mpi2_hbd.h Wed May 27 20:37:34 2015 (r283632) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2013 LSI Corp. + * Copyright (c) 2012-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,13 +27,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2009-2011 LSI Corporation. + * Copyright (c) 2009-2015 LSI Corporation. + * Copyright (c) 2013-2015 Avago Technologies * * * Name: mpi2_hbd.h Modified: head/sys/dev/mpr/mpi/mpi2_history.txt ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_history.txt Wed May 27 20:26:41 2015 (r283631) +++ head/sys/dev/mpr/mpi/mpi2_history.txt Wed May 27 20:37:34 2015 (r283632) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2013 LSI Corp. + * Copyright (c) 2012-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,7 +27,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ @@ -35,7 +36,8 @@ Fusion-MPT MPI 2.0 / 2.5 Header File Change History ============================== - Copyright (c) 2000-2013 LSI Corporation. + Copyright (c) 2000-2015 LSI Corporation. + Copyright (c) 2013-2015 Avago Technologies --------------------------------------- Header Set Release Version: 02.00.33 Modified: head/sys/dev/mpr/mpi/mpi2_init.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_init.h Wed May 27 20:26:41 2015 (r283631) +++ head/sys/dev/mpr/mpi/mpi2_init.h Wed May 27 20:37:34 2015 (r283632) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2013 LSI Corp. + * Copyright (c) 2012-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,13 +27,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2000-2013 LSI Corporation. + * Copyright (c) 2000-2015 LSI Corporation. + * Copyright (c) 2013-2015 Avago Technologies * * * Name: mpi2_init.h Modified: head/sys/dev/mpr/mpi/mpi2_ioc.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_ioc.h Wed May 27 20:26:41 2015 (r283631) +++ head/sys/dev/mpr/mpi/mpi2_ioc.h Wed May 27 20:37:34 2015 (r283632) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2013 LSI Corp. + * Copyright (c) 2012-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,13 +27,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2000-2013 LSI Corporation. + * Copyright (c) 2000-2015 LSI Corporation. + * Copyright (c) 2013-2015 Avago Technologies * * * Name: mpi2_ioc.h Modified: head/sys/dev/mpr/mpi/mpi2_ra.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_ra.h Wed May 27 20:26:41 2015 (r283631) +++ head/sys/dev/mpr/mpi/mpi2_ra.h Wed May 27 20:37:34 2015 (r283632) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2013 LSI Corp. + * Copyright (c) 2012-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,13 +27,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2009 LSI Corporation. + * Copyright (c) 2012-2015 LSI Corporation. + * Copyright (c) 2013-2015 Avago Technologies * * * Name: mpi2_ra.h Modified: head/sys/dev/mpr/mpi/mpi2_raid.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_raid.h Wed May 27 20:26:41 2015 (r283631) +++ head/sys/dev/mpr/mpi/mpi2_raid.h Wed May 27 20:37:34 2015 (r283632) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2013 LSI Corp. + * Copyright (c) 2012-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,13 +27,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2000-2013 LSI Corporation. + * Copyright (c) 2000-2015 LSI Corporation. + * Copyright (c) 2013-2015 Avago Technologies * * * Name: mpi2_raid.h Modified: head/sys/dev/mpr/mpi/mpi2_sas.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_sas.h Wed May 27 20:26:41 2015 (r283631) +++ head/sys/dev/mpr/mpi/mpi2_sas.h Wed May 27 20:37:34 2015 (r283632) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2013 LSI Corp. + * Copyright (c) 2012-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,13 +27,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2000-2013 LSI Corporation. + * Copyright (c) 2000-2015 LSI Corporation. + * Copyright (c) 2013-2015 Avago Technologies * * * Name: mpi2_sas.h Modified: head/sys/dev/mpr/mpi/mpi2_targ.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_targ.h Wed May 27 20:26:41 2015 (r283631) +++ head/sys/dev/mpr/mpi/mpi2_targ.h Wed May 27 20:37:34 2015 (r283632) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2013 LSI Corp. + * Copyright (c) 2012-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,13 +27,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2000-2012 LSI Corporation. + * Copyright (c) 2000-2015 LSI Corporation. + * Copyright (c) 2013-2015 Avago Technologies * * * Name: mpi2_targ.h Modified: head/sys/dev/mpr/mpi/mpi2_tool.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_tool.h Wed May 27 20:26:41 2015 (r283631) +++ head/sys/dev/mpr/mpi/mpi2_tool.h Wed May 27 20:37:34 2015 (r283632) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2013 LSI Corp. + * Copyright (c) 2012-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,13 +27,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2000-2013 LSI Corporation. + * Copyright (c) 2000-2015 LSI Corporation. + * Copyright (c) 2013-2015 Avago Technologies * * * Name: mpi2_tool.h Modified: head/sys/dev/mpr/mpi/mpi2_type.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_type.h Wed May 27 20:26:41 2015 (r283631) +++ head/sys/dev/mpr/mpi/mpi2_type.h Wed May 27 20:37:34 2015 (r283632) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2013 LSI Corp. + * Copyright (c) 2012-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,13 +27,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2000-2007 LSI Corporation. + * Copyright (c) 2000-2015 LSI Corporation. + * Copyright (c) 2013-2015 Avago Technologies * * * Name: mpi2_type.h Modified: head/sys/dev/mpr/mpr.c ============================================================================== --- head/sys/dev/mpr/mpr.c Wed May 27 20:26:41 2015 (r283631) +++ head/sys/dev/mpr/mpr.c Wed May 27 20:37:34 2015 (r283632) @@ -1,6 +1,7 @@ /*- * Copyright (c) 2009 Yahoo! Inc. - * Copyright (c) 2012-2014 LSI Corp. + * Copyright (c) 2011-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -24,12 +25,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD + * */ #include __FBSDID("$FreeBSD$"); -/* Communications core for LSI MPT2 */ +/* Communications core for Avago Technologies (LSI) MPT3 */ /* TODO Move headers to mprvar */ #include @@ -72,7 +75,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include static int mpr_diag_reset(struct mpr_softc *sc, int sleep_flag); static int mpr_init_queues(struct mpr_softc *sc); @@ -352,11 +354,9 @@ mpr_transition_operational(struct mpr_so static int mpr_iocfacts_allocate(struct mpr_softc *sc, uint8_t attaching) { - int error, i; + int error; Mpi2IOCFactsReply_t saved_facts; uint8_t saved_mode, reallocating; - struct mprsas_lun *lun, *lun_tmp; - struct mprsas_target *targ; mpr_dprint(sc, MPR_TRACE, "%s\n", __func__); @@ -513,27 +513,7 @@ mpr_iocfacts_allocate(struct mpr_softc * */ if (reallocating) { mpr_iocfacts_free(sc); - - /* - * The number of targets is based on IOC Facts, so free all of - * the allocated LUNs for each target and then the target buffer - * itself. - */ - for (i=0; i< saved_facts.MaxTargets; i++) { - targ = &sc->sassc->targets[i]; - SLIST_FOREACH_SAFE(lun, &targ->luns, lun_link, - lun_tmp) { - free(lun, M_MPR); - } - } - free(sc->sassc->targets, M_MPR); - - sc->sassc->targets = malloc(sizeof(struct mprsas_target) * - sc->facts->MaxTargets, M_MPR, M_WAITOK|M_ZERO); - if (!sc->sassc->targets) { - panic("%s failed to alloc targets with error %d\n", - __func__, ENOMEM); - } + mprsas_realloc_targets(sc, saved_facts.MaxTargets); } /* @@ -775,7 +755,7 @@ mpr_reinit(struct mpr_softc *sc) /* the end of discovery will release the simq, so we're done. */ mpr_dprint(sc, MPR_INFO, "%s finished sc %p post %u free %u\n", __func__, sc, sc->replypostindex, sc->replyfreeindex); - mprsas_release_simq_reinit(sassc); + mprsas_release_simq_reinit(sassc); return 0; } @@ -816,7 +796,8 @@ mpr_wait_db_ack(struct mpr_softc *sc, in * 0.5 milisecond */ if (mtx_owned(&sc->mpr_mtx) && sleep_flag == CAN_SLEEP) - msleep(&sc->msleep_fake_chan, &sc->mpr_mtx, 0, "mprdba", hz/1000); + msleep(&sc->msleep_fake_chan, &sc->mpr_mtx, 0, "mprdba", + hz/1000); else if (sleep_flag == CAN_SLEEP) pause("mprdba", hz/1000); else @@ -982,7 +963,7 @@ mpr_enqueue_request(struct mpr_softc *sc reply_descriptor rd; MPR_FUNCTRACE(sc); - mpr_dprint(sc, MPR_TRACE, "%s SMID %u cm %p ccb %p\n", __func__, + mpr_dprint(sc, MPR_TRACE, "SMID %u cm %p ccb %p\n", cm->cm_desc.Default.SMID, cm, cm->cm_ccb); if (sc->mpr_flags & MPR_FLAGS_ATTACH_DONE && !(sc->mpr_flags & @@ -1372,6 +1353,8 @@ mpr_get_tunables(struct mpr_softc *sc) sc->disable_msix = 0; sc->disable_msi = 0; sc->max_chains = MPR_CHAIN_FRAMES; + sc->enable_ssu = MPR_SSU_ENABLE_SSD_DISABLE_HDD; + sc->spinup_wait_time = DEFAULT_SPINUP_WAIT; /* * Grab the global variables. @@ -1380,6 +1363,8 @@ mpr_get_tunables(struct mpr_softc *sc) TUNABLE_INT_FETCH("hw.mpr.disable_msix", &sc->disable_msix); TUNABLE_INT_FETCH("hw.mpr.disable_msi", &sc->disable_msi); TUNABLE_INT_FETCH("hw.mpr.max_chains", &sc->max_chains); + TUNABLE_INT_FETCH("hw.mpr.enable_ssu", &sc->enable_ssu); + TUNABLE_INT_FETCH("hw.mpr.spinup_wait_time", &sc->spinup_wait_time); /* Grab the unit-instance variables */ snprintf(tmpstr, sizeof(tmpstr), "dev.mpr.%d.debug_level", @@ -1402,6 +1387,14 @@ mpr_get_tunables(struct mpr_softc *sc) snprintf(tmpstr, sizeof(tmpstr), "dev.mpr.%d.exclude_ids", device_get_unit(sc->mpr_dev)); TUNABLE_STR_FETCH(tmpstr, sc->exclude_ids, sizeof(sc->exclude_ids)); + + snprintf(tmpstr, sizeof(tmpstr), "dev.mpr.%d.enable_ssu", + device_get_unit(sc->mpr_dev)); + TUNABLE_INT_FETCH(tmpstr, &sc->enable_ssu); + + snprintf(tmpstr, sizeof(tmpstr), "dev.mpr.%d.spinup_wait_time", + device_get_unit(sc->mpr_dev)); + TUNABLE_INT_FETCH(tmpstr, &sc->spinup_wait_time); } static void @@ -1474,11 +1467,20 @@ mpr_setup_sysctl(struct mpr_softc *sc) OID_AUTO, "max_chains", CTLFLAG_RD, &sc->max_chains, 0,"maximum chain frames that will be allocated"); + SYSCTL_ADD_INT(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), + OID_AUTO, "enable_ssu", CTLFLAG_RW, &sc->enable_ssu, 0, + "enable SSU to SATA SSD/HDD at shutdown"); + #if __FreeBSD_version >= 900030 SYSCTL_ADD_UQUAD(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), OID_AUTO, "chain_alloc_fail", CTLFLAG_RD, &sc->chain_alloc_fail, "chain allocation failures"); #endif //FreeBSD_version >= 900030 + + SYSCTL_ADD_INT(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), + OID_AUTO, "spinup_wait_time", CTLFLAG_RD, + &sc->spinup_wait_time, DEFAULT_SPINUP_WAIT, "seconds to wait for " + "spinup after SATA ID error"); } int @@ -2096,7 +2098,7 @@ mpr_update_events(struct mpr_softc *sc, (reply->IOCStatus & MPI2_IOCSTATUS_MASK) != MPI2_IOCSTATUS_SUCCESS) error = ENXIO; - if(reply) + if (reply) mpr_print_event(sc, reply); mpr_dprint(sc, MPR_TRACE, "%s finished error %d\n", __func__, error); @@ -2163,8 +2165,8 @@ mpr_deregister_events(struct mpr_softc * * Add a chain element as the next SGE for the specified command. * Reset cm_sge and cm_sgesize to indicate all the available space. Chains are * only required for IEEE commands. Therefore there is no code for commands - * that have the MPR_CM_FLAGS_SGE_SIMPLE flag set (and those commands shouldn't - * be requesting chains). + * that have the MPR_CM_FLAGS_SGE_SIMPLE flag set (and those commands + * shouldn't be requesting chains). */ static int mpr_add_chain(struct mpr_command *cm, int segsleft) @@ -2246,9 +2248,9 @@ mpr_add_chain(struct mpr_command *cm, in /* * Add one scatter-gather element to the scatter-gather list for a command. - * Maintain cm_sglsize and cm_sge as the remaining size and pointer to the next - * SGE to fill in, respectively. In Gen3, the MPI SGL does not have a chain, - * so don't consider any chain additions. + * Maintain cm_sglsize and cm_sge as the remaining size and pointer to the + * next SGE to fill in, respectively. In Gen3, the MPI SGL does not have a + * chain, so don't consider any chain additions. */ int mpr_push_sge(struct mpr_command *cm, MPI2_SGE_SIMPLE64 *sge, size_t len, @@ -2660,7 +2662,7 @@ mpr_request_polled(struct mpr_softc *sc, } } - if(error) { + if (error) { mpr_dprint(sc, MPR_FAULT, "Calling Reinit from %s\n", __func__); rc = mpr_reinit(sc); mpr_dprint(sc, MPR_FAULT, "Reinit %s\n", (rc == 0) ? @@ -2717,9 +2719,12 @@ mpr_read_config_page(struct mpr_softc *s cm->cm_data = params->buffer; cm->cm_length = params->length; - cm->cm_sge = &req->PageBufferSGE; - cm->cm_sglsize = sizeof(MPI2_SGE_IO_UNION); - cm->cm_flags = MPR_CM_FLAGS_SGE_SIMPLE | MPR_CM_FLAGS_DATAIN; + if (cm->cm_data != NULL) { + cm->cm_sge = &req->PageBufferSGE; + cm->cm_sglsize = sizeof(MPI2_SGE_IO_UNION); + cm->cm_flags = MPR_CM_FLAGS_SGE_SIMPLE | MPR_CM_FLAGS_DATAIN; + } else + cm->cm_sge = NULL; cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; cm->cm_complete_data = params; @@ -2776,9 +2781,12 @@ mpr_config_complete(struct mpr_softc *sc goto done; } params->status = reply->IOCStatus; - if (params->hdr.Ext.ExtPageType != 0) { + if (params->hdr.Struct.PageType == MPI2_CONFIG_PAGETYPE_EXTENDED) { params->hdr.Ext.ExtPageType = reply->ExtPageType; params->hdr.Ext.ExtPageLength = reply->ExtPageLength; + params->hdr.Ext.PageType = reply->Header.PageType; + params->hdr.Ext.PageNumber = reply->Header.PageNumber; + params->hdr.Ext.PageVersion = reply->Header.PageVersion; } else { params->hdr.Struct.PageType = reply->Header.PageType; params->hdr.Struct.PageNumber = reply->Header.PageNumber; Modified: head/sys/dev/mpr/mpr_config.c ============================================================================== --- head/sys/dev/mpr/mpr_config.c Wed May 27 20:26:41 2015 (r283631) +++ head/sys/dev/mpr/mpr_config.c Wed May 27 20:37:34 2015 (r283632) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2011-2014 LSI Corp. + * Copyright (c) 2011-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -23,7 +24,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD */ #include Modified: head/sys/dev/mpr/mpr_ioctl.h ============================================================================== --- head/sys/dev/mpr/mpr_ioctl.h Wed May 27 20:26:41 2015 (r283631) +++ head/sys/dev/mpr/mpr_ioctl.h Wed May 27 20:37:34 2015 (r283632) @@ -27,12 +27,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD userland interface + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD userland interface * * $FreeBSD$ */ /*- - * Copyright (c) 2011-2014 LSI Corp. + * Copyright (c) 2011-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -56,7 +57,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ Modified: head/sys/dev/mpr/mpr_mapping.c ============================================================================== --- head/sys/dev/mpr/mpr_mapping.c Wed May 27 20:26:41 2015 (r283631) +++ head/sys/dev/mpr/mpr_mapping.c Wed May 27 20:37:34 2015 (r283632) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2011-2014 LSI Corp. + * Copyright (c) 2011-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -23,7 +24,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD */ #include @@ -326,11 +327,13 @@ _mapping_get_high_missing_mt_idx(struct { u32 map_idx, high_idx = MPR_ENCTABLE_BAD_IDX; u8 high_missing_count = 0; - u32 start_idx, end_idx, start_idx_ir = 0, end_idx_ir; + u32 start_idx, end_idx, start_idx_ir, end_idx_ir; struct dev_mapping_table *mt_entry; u16 ioc_pg8_flags = le16toh(sc->ioc_pg8.Flags); start_idx = 0; + start_idx_ir = 0; + end_idx_ir = 0; end_idx = sc->max_devices; if (ioc_pg8_flags & MPI2_IOCPAGE8_FLAGS_RESERVED_TARGETID_0) start_idx = 1; @@ -887,14 +890,14 @@ _mapping_get_dev_info(struct mpr_softc * u16 ioc_pg8_flags = le16toh(sc->ioc_pg8.Flags); Mpi2ConfigReply_t mpi_reply; Mpi2SasDevicePage0_t sas_device_pg0; - u8 entry, enc_idx, phy_idx; + u8 entry, enc_idx, phy_idx, sata_end_device; u32 map_idx, index, device_info; struct _map_phy_change *phy_change, *tmp_phy_change; uint64_t sas_address; struct enc_mapping_table *et_entry; struct dev_mapping_table *mt_entry; u8 add_code = MPI2_EVENT_SAS_TOPO_RC_TARG_ADDED; - int rc; + int rc = 1; for (entry = 0; entry < topo_change->num_entries; entry++) { phy_change = &topo_change->phy_details[entry]; @@ -908,41 +911,36 @@ _mapping_get_dev_info(struct mpr_softc * continue; } + /* + * Always get SATA Identify information because this is used + * to determine if Start/Stop Unit should be sent to the drive + * when the system is shutdown. + */ device_info = le32toh(sas_device_pg0.DeviceInfo); - if ((ioc_pg8_flags & MPI2_IOCPAGE8_FLAGS_MASK_MAPPING_MODE) == - MPI2_IOCPAGE8_FLAGS_DEVICE_PERSISTENCE_MAPPING) { - if ((device_info & MPI2_SAS_DEVICE_INFO_END_DEVICE) && - (device_info & MPI2_SAS_DEVICE_INFO_SATA_DEVICE)) { - rc = mprsas_get_sas_address_for_sata_disk(sc, - &sas_address, phy_change->dev_handle, - device_info); - if (rc) { - printf("%s: failed to compute the " - "hashed SAS Address for SATA " - "device with handle 0x%04x\n", - __func__, phy_change->dev_handle); - sas_address = - sas_device_pg0.SASAddress.High; - sas_address = (sas_address << 32) | - sas_device_pg0.SASAddress.Low; - } + sas_address = sas_device_pg0.SASAddress.High; + sas_address = (sas_address << 32) | + sas_device_pg0.SASAddress.Low; + sata_end_device = 0; + if ((device_info & MPI2_SAS_DEVICE_INFO_END_DEVICE) && + (device_info & MPI2_SAS_DEVICE_INFO_SATA_DEVICE)) { + sata_end_device = 1; + rc = mprsas_get_sas_address_for_sata_disk(sc, + &sas_address, phy_change->dev_handle, device_info, + &phy_change->is_SATA_SSD); + if (rc) { + mpr_dprint(sc, MPR_ERROR, "%s: failed to get " + "disk type (SSD or HDD) and SAS Address " + "for SATA device with handle 0x%04x\n", + __func__, phy_change->dev_handle); + } else { mpr_dprint(sc, MPR_INFO, "SAS Address for SATA " "device = %jx\n", sas_address); - } else { - sas_address = - sas_device_pg0.SASAddress.High; - sas_address = (sas_address << 32) | - sas_device_pg0.SASAddress.Low; } - } else { - sas_address = sas_device_pg0.SASAddress.High; - sas_address = (sas_address << 32) | - sas_device_pg0.SASAddress.Low; } + phy_change->physical_id = sas_address; phy_change->slot = le16toh(sas_device_pg0.Slot); - phy_change->device_info = - le32toh(sas_device_pg0.DeviceInfo); + phy_change->device_info = le32toh(sas_device_pg0.DeviceInfo); if ((ioc_pg8_flags & MPI2_IOCPAGE8_FLAGS_MASK_MAPPING_MODE) == MPI2_IOCPAGE8_FLAGS_ENCLOSURE_SLOT_MAPPING) { @@ -950,10 +948,10 @@ _mapping_get_dev_info(struct mpr_softc * topo_change->enc_handle); if (enc_idx == MPR_ENCTABLE_BAD_IDX) { phy_change->is_processed = 1; - printf("%s: failed to add the device with " - "handle 0x%04x because the enclosure is " - "not in the mapping table\n", __func__, - phy_change->dev_handle); + mpr_dprint(sc, MPR_MAPPING, "%s: failed to add " + "the device with handle 0x%04x because the " + "enclosure is not in the mapping table\n", + __func__, phy_change->dev_handle); continue; } if (!((phy_change->device_info & Modified: head/sys/dev/mpr/mpr_mapping.h ============================================================================== --- head/sys/dev/mpr/mpr_mapping.h Wed May 27 20:26:41 2015 (r283631) +++ head/sys/dev/mpr/mpr_mapping.h Wed May 27 20:37:34 2015 (r283632) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2011-2014 LSI Corp. + * Copyright (c) 2011-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -23,7 +24,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ @@ -38,6 +39,7 @@ * @dev_handle: device handle for the device pointed by this entry * @slot: slot ID * @is_processed: Flag to indicate whether this entry is processed or not + * @is_SATA_SSD: 1 if this is a SATA device AND an SSD, 0 otherwise */ struct _map_phy_change { uint64_t physical_id; @@ -46,6 +48,8 @@ struct _map_phy_change { uint16_t slot; uint8_t reason; uint8_t is_processed; + uint8_t is_SATA_SSD; + uint8_t reserved; }; /** @@ -66,6 +70,6 @@ struct _map_topology_change { extern int mprsas_get_sas_address_for_sata_disk(struct mpr_softc *ioc, - u64 *sas_address, u16 handle, u32 device_info); + u64 *sas_address, u16 handle, u32 device_info, u8 *is_SATA_SSD); #endif Modified: head/sys/dev/mpr/mpr_pci.c ============================================================================== --- head/sys/dev/mpr/mpr_pci.c Wed May 27 20:26:41 2015 (r283631) +++ head/sys/dev/mpr/mpr_pci.c Wed May 27 20:37:34 2015 (r283632) @@ -27,7 +27,7 @@ #include __FBSDID("$FreeBSD$"); -/* PCI/PCI-X/PCIe bus interface for the LSI MPT2 controllers */ +/* PCI/PCI-X/PCIe bus interface for the Avago Tech (LSI) MPT3 controllers */ /* TODO Move headers to mprvar */ #include @@ -99,17 +99,17 @@ struct mpr_ident { const char *desc; } mpr_identifiers[] = { { MPI2_MFGPAGE_VENDORID_LSI, MPI25_MFGPAGE_DEVID_SAS3004, - 0xffff, 0xffff, 0, "LSI SAS3004" }, + 0xffff, 0xffff, 0, "Avago Technologies (LSI) SAS3004" }, { MPI2_MFGPAGE_VENDORID_LSI, MPI25_MFGPAGE_DEVID_SAS3008, - 0xffff, 0xffff, 0, "LSI SAS3008" }, + 0xffff, 0xffff, 0, "Avago Technologies (LSI) SAS3008" }, { MPI2_MFGPAGE_VENDORID_LSI, MPI25_MFGPAGE_DEVID_SAS3108_1, - 0xffff, 0xffff, 0, "LSI SAS3108_1" }, + 0xffff, 0xffff, 0, "Avago Technologies (LSI) SAS3108_1" }, { MPI2_MFGPAGE_VENDORID_LSI, MPI25_MFGPAGE_DEVID_SAS3108_2, - 0xffff, 0xffff, 0, "LSI SAS3108_2" }, + 0xffff, 0xffff, 0, "Avago Technologies (LSI) SAS3108_2" }, { MPI2_MFGPAGE_VENDORID_LSI, MPI25_MFGPAGE_DEVID_SAS3108_5, - 0xffff, 0xffff, 0, "LSI SAS3108_5" }, + 0xffff, 0xffff, 0, "Avago Technologies (LSI) SAS3108_5" }, { MPI2_MFGPAGE_VENDORID_LSI, MPI25_MFGPAGE_DEVID_SAS3108_6, - 0xffff, 0xffff, 0, "LSI SAS3108_6" }, + 0xffff, 0xffff, 0, "Avago Technologies (LSI) SAS3108_6" }, { 0, 0, 0, 0, 0, NULL } }; Modified: head/sys/dev/mpr/mpr_sas.c ============================================================================== --- head/sys/dev/mpr/mpr_sas.c Wed May 27 20:26:41 2015 (r283631) +++ head/sys/dev/mpr/mpr_sas.c Wed May 27 20:37:34 2015 (r283632) @@ -1,6 +1,7 @@ /*- * Copyright (c) 2009 Yahoo! Inc. - * Copyright (c) 2011-2014 LSI Corp. + * Copyright (c) 2011-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -23,12 +24,15 @@ * 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. + * + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD + * */ #include __FBSDID("$FreeBSD$"); -/* Communications core for LSI MPT2 */ +/* Communications core for Avago Technologies (LSI) MPT3 */ /* TODO Move headers to mprvar */ #include @@ -122,14 +126,10 @@ static void mprsas_scsiio_complete(struc static void mprsas_action_resetdev(struct mprsas_softc *, union ccb *); static void mprsas_resetdev_complete(struct mpr_softc *, struct mpr_command *); -static int mprsas_send_abort(struct mpr_softc *sc, struct mpr_command *tm, +static int mprsas_send_abort(struct mpr_softc *sc, struct mpr_command *tm, struct mpr_command *cm); -static int mprsas_send_reset(struct mpr_softc *sc, struct mpr_command *tm, - uint8_t type); static void mprsas_async(void *callback_arg, uint32_t code, struct cam_path *path, void *arg); -static void mprsas_prepare_ssu(struct mpr_softc *sc, struct cam_path *path, - struct ccb_getdev *cgd); #if (__FreeBSD_version < 901503) || \ ((__FreeBSD_version >= 1000000) && (__FreeBSD_version < 1000006)) static void mprsas_check_eedp(struct mpr_softc *sc, struct cam_path *path, @@ -142,13 +142,12 @@ static void mprsas_portenable_complete(s struct mpr_command *cm); #if __FreeBSD_version >= 900026 -static void -mprsas_smpio_complete(struct mpr_softc *sc, struct mpr_command *cm); +static void mprsas_smpio_complete(struct mpr_softc *sc, + struct mpr_command *cm); static void mprsas_send_smpcmd(struct mprsas_softc *sassc, - union ccb *ccb, uint64_t sasaddr); -static void -mprsas_action_smpio(struct mprsas_softc *sassc, union ccb *ccb); -#endif + union ccb *ccb, uint64_t sasaddr); +static void mprsas_action_smpio(struct mprsas_softc *sassc, union ccb *ccb); +#endif //FreeBSD_version >= 900026 struct mprsas_target * mprsas_find_target_by_handle(struct mprsas_softc *sassc, int start, @@ -230,7 +229,7 @@ mprsas_startup_decrement(struct mprsas_s } } -/* LSI's firmware requires us to stop sending commands when we're doing task +/* The firmware requires us to stop sending commands when we're doing task * management, so refcount the TMs and keep the simq frozen when any are in * use. */ @@ -241,35 +240,31 @@ mprsas_alloc_tm(struct mpr_softc *sc) MPR_FUNCTRACE(sc); tm = mpr_alloc_high_priority_command(sc); - if (tm != NULL) { - if (sc->sassc->tm_count++ == 0) { - mpr_dprint(sc, MPR_RECOVERY, - "%s freezing simq\n", __func__); - xpt_freeze_simq(sc->sassc->sim, 1); - } - mpr_dprint(sc, MPR_RECOVERY, "%s tm_count %u\n", __func__, - sc->sassc->tm_count); - } return tm; } void mprsas_free_tm(struct mpr_softc *sc, struct mpr_command *tm) { - mpr_dprint(sc, MPR_TRACE, "%s", __func__); + MPR_FUNCTRACE(sc); if (tm == NULL) return; - /* if there are no TMs in use, we can release the simq. We use our - * own refcount so that it's easier for a diag reset to cleanup and - * release the simq. - */ - if (--sc->sassc->tm_count == 0) { - mpr_dprint(sc, MPR_RECOVERY, "%s releasing simq\n", __func__); - xpt_release_simq(sc->sassc->sim, 1); + /* + * For TM's the devq is frozen for the device. Unfreeze it here and + * free the resources used for freezing the devq. Must clear the + * INRESET flag as well or scsi I/O will not work. + */ + if (tm->cm_targ != NULL) { + tm->cm_targ->flags &= ~MPRSAS_TARGET_INRESET; + } + if (tm->cm_ccb) { + mpr_dprint(sc, MPR_INFO, "Unfreezing devq for target ID %d\n", + tm->cm_targ->tid); + xpt_release_devq(tm->cm_ccb->ccb_h.path, 1, TRUE); + xpt_free_path(tm->cm_ccb->ccb_h.path); + xpt_free_ccb(tm->cm_ccb); } - mpr_dprint(sc, MPR_RECOVERY, "%s tm_count %u\n", __func__, - sc->sassc->tm_count); mpr_free_high_priority_command(sc, tm); } @@ -298,8 +293,8 @@ mprsas_rescan_target(struct mpr_softc *s return; } - if (xpt_create_path(&ccb->ccb_h.path, NULL, pathid, - targetid, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { + if (xpt_create_path(&ccb->ccb_h.path, NULL, pathid, targetid, + CAM_LUN_WILDCARD) != CAM_REQ_CMP) { mpr_dprint(sc, MPR_ERROR, "unable to create path for rescan\n"); xpt_free_ccb(ccb); return; @@ -473,11 +468,16 @@ mprsas_prepare_volume_remove(struct mprs MPI2_REQ_DESCRIPT_FLAGS_HIGH_PRIORITY; cm->cm_complete = mprsas_remove_volume; cm->cm_complete_data = (void *)(uintptr_t)handle; + + mpr_dprint(sc, MPR_INFO, "%s: Sending reset for target ID %d\n", + __func__, targ->tid); + mprsas_prepare_for_tm(sc, cm, targ, CAM_LUN_WILDCARD); + mpr_map_command(sc, cm); } /* - * The MPT2 firmware performs debounce on the link to avoid transient link + * The MPT3 firmware performs debounce on the link to avoid transient link * errors and false removals. When it does decide that link has been lost * and a device needs to go away, it expects that the host will perform a * target reset and then an op remove. The reset has the side-effect of @@ -532,6 +532,11 @@ mprsas_prepare_remove(struct mprsas_soft MPI2_REQ_DESCRIPT_FLAGS_HIGH_PRIORITY; cm->cm_complete = mprsas_remove_device; cm->cm_complete_data = (void *)(uintptr_t)handle; + + mpr_dprint(sc, MPR_INFO, "%s: Sending reset for target ID %d\n", + __func__, targ->tid); + mprsas_prepare_for_tm(sc, cm, targ, CAM_LUN_WILDCARD); + mpr_map_command(sc, cm); } @@ -596,10 +601,10 @@ mprsas_remove_device(struct mpr_softc *s mpr_map_command(sc, tm); - mpr_dprint(sc, MPR_XINFO, "clearing target %u handle 0x%04x\n", + mpr_dprint(sc, MPR_INFO, "clearing target %u handle 0x%04x\n", targ->tid, handle); if (targ->encl_level_valid) { - mpr_dprint(sc, MPR_XINFO, "At enclosure level %d, slot %d, " + mpr_dprint(sc, MPR_INFO, "At enclosure level %d, slot %d, " "connector name (%4s)\n", targ->encl_level, targ->encl_slot, targ->connector_name); } @@ -608,7 +613,7 @@ mprsas_remove_device(struct mpr_softc *s mpr_dprint(sc, MPR_XINFO, "Completing missed command %p\n", tm); ccb = tm->cm_complete_data; - ccb->ccb_h.status = CAM_DEV_NOT_THERE; + mprsas_set_ccbstatus(ccb, CAM_DEV_NOT_THERE); mprsas_scsiio_complete(sc, tm); } } @@ -726,7 +731,7 @@ mpr_attach_sas(struct mpr_softc *sc) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Wed May 27 21:06:23 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5560FE0F; Wed, 27 May 2015 21:06:23 +0000 (UTC) (envelope-from jmg@gold.funkthat.com) Received: from gold.funkthat.com (gate2.funkthat.com [208.87.223.18]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "gold.funkthat.com", Issuer "gold.funkthat.com" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 085A17AC; Wed, 27 May 2015 21:06:22 +0000 (UTC) (envelope-from jmg@gold.funkthat.com) Received: from gold.funkthat.com (localhost [127.0.0.1]) by gold.funkthat.com (8.14.5/8.14.5) with ESMTP id t4RL6K9d072201 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 27 May 2015 14:06:20 -0700 (PDT) (envelope-from jmg@gold.funkthat.com) Received: (from jmg@localhost) by gold.funkthat.com (8.14.5/8.14.5/Submit) id t4RL6Klq072200; Wed, 27 May 2015 14:06:20 -0700 (PDT) (envelope-from jmg) Date: Wed, 27 May 2015 14:06:20 -0700 From: John-Mark Gurney To: Kurt Lidl Cc: Bruce Evans , Eitan Adler , Adrian Chadd , "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" Subject: Re: svn commit: r281103 - head/sys/amd64/amd64 Message-ID: <20150527210619.GA50817@funkthat.com> References: <201504050518.t355IFVJ001786@svn.freebsd.org> <20150405163305.A2515@besplex.bde.org> <20150406152653.K1066@besplex.bde.org> <5565CC49.1020800@pix.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5565CC49.1020800@pix.net> X-Operating-System: FreeBSD 9.1-PRERELEASE amd64 X-PGP-Fingerprint: 54BA 873B 6515 3F10 9E88 9322 9CB1 8F74 6D3F A396 X-Files: The truth is out there X-URL: http://resnet.uoregon.edu/~gurney_j/ X-Resume: http://resnet.uoregon.edu/~gurney_j/resume.html X-TipJar: bitcoin:13Qmb6AeTgQecazTWph4XasEsP7nGRbAPE X-to-the-FBI-CIA-and-NSA: HI! HOW YA DOIN? can i haz chizburger? User-Agent: Mutt/1.5.21 (2010-09-15) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (gold.funkthat.com [127.0.0.1]); Wed, 27 May 2015 14:06:21 -0700 (PDT) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 21:06:23 -0000 Kurt Lidl wrote this message on Wed, May 27, 2015 at 09:53 -0400: > On 4/6/15 1:42 AM, Bruce Evans wrote: > > On Mon, 6 Apr 2015, Eitan Adler wrote: > > > >> + a few people interested in the diff > >> > >> On 5 April 2015 at 02:55, Bruce Evans wrote: > >>> On Sun, 5 Apr 2015, Eitan Adler wrote: > >> > >> I did not confirm the performance impact, but the submitter and others > >> indicated they saw a difference. > >> > >> Do you have specific data that shows that there was an improvement? > > > > Only micro-benchmark output that indicates little difference. This > > is probably very MD (depending on write combining hardware), so you > > might only see a difference on some systems. > > > > I also have micro-benchmark output for network packets/second that > > shows 10% differences for the change of adding 1 byte of padding > > in code that is never executed. This seems to be due to different > > cache misses. To eliminate differences from this (except ones > > caused by actually running different code), create a reference > > version by padding the functions or data to be changed so that > > the change doesn't affect the address of anything except the > > internals of the changed parts. > > > > I might try a makeworld run to see if changing the non-temporal > > accesses in pagecopy and pagezero to cached. > > > I ran a few (total of 12) buildworld runs after this discussion. > I finally got around to posting the results to the original bug. > > The data is here: > > https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=199151#c3 If you run ministat on the real results, there won't be a difference w/ 95% confidence... -- John-Mark Gurney Voice: +1 415 225 5579 "All that I will do, has been done, All that I have, has not." From owner-svn-src-all@FreeBSD.ORG Wed May 27 22:00:08 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0EEEC92D; Wed, 27 May 2015 22:00:08 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org (svn.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 EFB193EF; Wed, 27 May 2015 22:00:07 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RM07FJ060481; Wed, 27 May 2015 22:00:07 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RM05cE060455; Wed, 27 May 2015 22:00:05 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201505272200.t4RM05cE060455@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Wed, 27 May 2015 22:00:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283635 - in head/sys/fs: nfs nfsserver X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 22:00:08 -0000 Author: rmacklem Date: Wed May 27 22:00:05 2015 New Revision: 283635 URL: https://svnweb.freebsd.org/changeset/base/283635 Log: Make the size of the hash tables used by the NFSv4 server tunable. No appreciable change in performance was observed after increasing the sizes of these tables and then testing with a single client. However, there was an email that indicated high CPU overheads for a heavily loaded NFSv4 and it is hoped that increasing the sizes of the hash tables via these tunables might help. The tables remain the same size by default. Differential Revision: https://reviews.freebsd.org/D2596 MFC after: 2 weeks Modified: head/sys/fs/nfs/nfs.h head/sys/fs/nfs/nfsdport.h head/sys/fs/nfs/nfsrvstate.h head/sys/fs/nfsserver/nfs_nfsdport.c head/sys/fs/nfsserver/nfs_nfsdserv.c head/sys/fs/nfsserver/nfs_nfsdsocket.c head/sys/fs/nfsserver/nfs_nfsdstate.c head/sys/fs/nfsserver/nfs_nfsdsubs.c Modified: head/sys/fs/nfs/nfs.h ============================================================================== --- head/sys/fs/nfs/nfs.h Wed May 27 20:58:54 2015 (r283634) +++ head/sys/fs/nfs/nfs.h Wed May 27 22:00:05 2015 (r283635) @@ -138,11 +138,11 @@ /* * This macro defines the high water mark for issuing V4 delegations. - * (It is currently set at a conservative 20% of NFSRV_V4STATELIMIT. This + * (It is currently set at a conservative 20% of nfsrv_v4statelimit. This * may want to increase when clients can make more effective use of * delegations.) */ -#define NFSRV_V4DELEGLIMIT(c) (((c) * 5) > NFSRV_V4STATELIMIT) +#define NFSRV_V4DELEGLIMIT(c) (((c) * 5) > nfsrv_v4statelimit) #define NFS_READDIRBLKSIZ DIRBLKSIZ /* Minimal nm_readdirsize */ Modified: head/sys/fs/nfs/nfsdport.h ============================================================================== --- head/sys/fs/nfs/nfsdport.h Wed May 27 20:58:54 2015 (r283634) +++ head/sys/fs/nfs/nfsdport.h Wed May 27 22:00:05 2015 (r283635) @@ -88,7 +88,7 @@ struct nfsexstuff { bcmp(&(f1)->fh_fid, &(f2)->fh_fid, sizeof(struct fid)) == 0) #define NFSLOCKHASH(f) \ - (&nfslockhash[nfsrv_hashfh(f) % NFSLOCKHASHSIZE]) + (&nfslockhash[nfsrv_hashfh(f) % nfsrv_lockhashsize]) #define NFSFPVNODE(f) ((struct vnode *)((f)->f_data)) #define NFSFPCRED(f) ((f)->f_cred) Modified: head/sys/fs/nfs/nfsrvstate.h ============================================================================== --- head/sys/fs/nfs/nfsrvstate.h Wed May 27 20:58:54 2015 (r283634) +++ head/sys/fs/nfs/nfsrvstate.h Wed May 27 22:00:05 2015 (r283635) @@ -52,9 +52,9 @@ LIST_HEAD(nfsuserhashhead, nfsusrgrp); TAILQ_HEAD(nfsuserlruhead, nfsusrgrp); #define NFSCLIENTHASH(id) \ - (&nfsclienthash[(id).lval[1] % NFSCLIENTHASHSIZE]) + (&nfsclienthash[(id).lval[1] % nfsrv_clienthashsize]) #define NFSSTATEHASH(clp, id) \ - (&((clp)->lc_stateid[(id).other[2] % NFSSTATEHASHSIZE])) + (&((clp)->lc_stateid[(id).other[2] % nfsrv_statehashsize])) #define NFSUSERHASH(id) \ (&nfsuserhash[(id) % NFSUSERHASHSIZE]) #define NFSUSERNAMEHASH(p, l) \ @@ -71,7 +71,7 @@ struct nfssessionhash { struct nfssessionhashhead list; }; #define NFSSESSIONHASH(f) \ - (&nfssessionhash[nfsrv_hashsessionid(f) % NFSSESSIONHASHSIZE]) + (&nfssessionhash[nfsrv_hashsessionid(f) % nfsrv_sessionhashsize]) /* * Client server structure for V4. It is doubly linked into two lists. @@ -81,7 +81,7 @@ struct nfssessionhash { */ struct nfsclient { LIST_ENTRY(nfsclient) lc_hash; /* Clientid hash list */ - struct nfsstatehead lc_stateid[NFSSTATEHASHSIZE]; /* stateid hash */ + struct nfsstatehead *lc_stateid; /* Stateid hash */ struct nfsstatehead lc_open; /* Open owner list */ struct nfsstatehead lc_deleg; /* Delegations */ struct nfsstatehead lc_olddeleg; /* and old delegations */ @@ -97,10 +97,10 @@ struct nfsclient { u_int32_t lc_cbref; /* Cnt of callbacks */ uid_t lc_uid; /* User credential */ gid_t lc_gid; - u_int16_t lc_namelen; + u_int16_t lc_idlen; /* Client ID and len */ + u_int16_t lc_namelen; /* plus GSS principal and len */ u_char *lc_name; struct nfssockreq lc_req; /* Callback info */ - u_short lc_idlen; /* Length of id string */ u_int32_t lc_flags; /* LCL_ flag bits */ u_char lc_verf[NFSX_VERF]; /* client verifier */ u_char lc_id[1]; /* Malloc'd correct size */ Modified: head/sys/fs/nfsserver/nfs_nfsdport.c ============================================================================== --- head/sys/fs/nfsserver/nfs_nfsdport.c Wed May 27 20:58:54 2015 (r283634) +++ head/sys/fs/nfsserver/nfs_nfsdport.c Wed May 27 22:00:05 2015 (r283635) @@ -58,7 +58,10 @@ extern struct nfsrv_stablefirst nfsrv_st extern void (*nfsd_call_servertimer)(void); extern SVCPOOL *nfsrvd_pool; extern struct nfsv4lock nfsd_suspend_lock; -extern struct nfssessionhash nfssessionhash[NFSSESSIONHASHSIZE]; +extern struct nfsclienthashhead *nfsclienthash; +extern struct nfslockhashhead *nfslockhash; +extern struct nfssessionhash *nfssessionhash; +extern int nfsrv_sessionhashsize; struct vfsoptlist nfsv4root_opt, nfsv4root_newopt; NFSDLOCKMUTEX; struct nfsrchash_bucket nfsrchash_table[NFSRVCACHE_HASHSIZE]; @@ -3330,9 +3333,6 @@ nfsd_modevent(module_t mod, int type, vo mtx_init(&nfsrc_udpmtx, "nfsuc", NULL, MTX_DEF); mtx_init(&nfs_v4root_mutex, "nfs4rt", NULL, MTX_DEF); mtx_init(&nfsv4root_mnt.mnt_mtx, "nfs4mnt", NULL, MTX_DEF); - for (i = 0; i < NFSSESSIONHASHSIZE; i++) - mtx_init(&nfssessionhash[i].mtx, "nfssm", - NULL, MTX_DEF); lockinit(&nfsv4root_mnt.mnt_explock, PVFS, "explock", 0, 0); nfsrvd_initcache(); nfsd_init(); @@ -3380,9 +3380,12 @@ nfsd_modevent(module_t mod, int type, vo mtx_destroy(&nfsrc_udpmtx); mtx_destroy(&nfs_v4root_mutex); mtx_destroy(&nfsv4root_mnt.mnt_mtx); - for (i = 0; i < NFSSESSIONHASHSIZE; i++) + for (i = 0; i < nfsrv_sessionhashsize; i++) mtx_destroy(&nfssessionhash[i].mtx); lockdestroy(&nfsv4root_mnt.mnt_explock); + free(nfsclienthash, M_NFSDCLIENT); + free(nfslockhash, M_NFSDLOCKFILE); + free(nfssessionhash, M_NFSDSESSION); loaded = 0; break; default: Modified: head/sys/fs/nfsserver/nfs_nfsdserv.c ============================================================================== --- head/sys/fs/nfsserver/nfs_nfsdserv.c Wed May 27 20:58:54 2015 (r283634) +++ head/sys/fs/nfsserver/nfs_nfsdserv.c Wed May 27 22:00:05 2015 (r283635) @@ -53,6 +53,7 @@ extern enum vtype nv34tov_type[8]; extern struct timeval nfsboottime; extern int nfs_rootfhset; extern int nfsrv_enable_crossmntpt; +extern int nfsrv_statehashsize; #endif /* !APPLEKEXT */ static int nfs_async = 0; @@ -3468,9 +3469,10 @@ nfsrvd_setclientid(struct nfsrv_descript idlen = i; if (nd->nd_flag & ND_GSS) i += nd->nd_princlen; - MALLOC(clp, struct nfsclient *, sizeof (struct nfsclient) + i, - M_NFSDCLIENT, M_WAITOK); - NFSBZERO((caddr_t)clp, sizeof (struct nfsclient) + i); + clp = malloc(sizeof(struct nfsclient) + i, M_NFSDCLIENT, M_WAITOK | + M_ZERO); + clp->lc_stateid = malloc(sizeof(struct nfsstatehead) * + nfsrv_statehashsize, M_NFSDCLIENT, M_WAITOK); NFSINITSOCKMUTEX(&clp->lc_req.nr_mtx); NFSSOCKADDRALLOC(clp->lc_req.nr_nam); NFSSOCKADDRSIZE(clp->lc_req.nr_nam, sizeof (struct sockaddr_in)); @@ -3530,7 +3532,8 @@ nfsrvd_setclientid(struct nfsrv_descript if (clp) { NFSSOCKADDRFREE(clp->lc_req.nr_nam); NFSFREEMUTEX(&clp->lc_req.nr_mtx); - free((caddr_t)clp, M_NFSDCLIENT); + free(clp->lc_stateid, M_NFSDCLIENT); + free(clp, M_NFSDCLIENT); } if (!nd->nd_repstat) { NFSM_BUILD(tl, u_int32_t *, 2 * NFSX_HYPER); @@ -3547,7 +3550,8 @@ nfsmout: if (clp) { NFSSOCKADDRFREE(clp->lc_req.nr_nam); NFSFREEMUTEX(&clp->lc_req.nr_mtx); - free((caddr_t)clp, M_NFSDCLIENT); + free(clp->lc_stateid, M_NFSDCLIENT); + free(clp, M_NFSDCLIENT); } NFSEXITCODE2(error, nd); return (error); @@ -3738,8 +3742,10 @@ nfsrvd_exchangeid(struct nfsrv_descript idlen = i; if (nd->nd_flag & ND_GSS) i += nd->nd_princlen; - clp = (struct nfsclient *)malloc(sizeof(struct nfsclient) + i, - M_NFSDCLIENT, M_WAITOK | M_ZERO); + clp = malloc(sizeof(struct nfsclient) + i, M_NFSDCLIENT, M_WAITOK | + M_ZERO); + clp->lc_stateid = malloc(sizeof(struct nfsstatehead) * + nfsrv_statehashsize, M_NFSDCLIENT, M_WAITOK); NFSINITSOCKMUTEX(&clp->lc_req.nr_mtx); NFSSOCKADDRALLOC(clp->lc_req.nr_nam); NFSSOCKADDRSIZE(clp->lc_req.nr_nam, sizeof (struct sockaddr_in)); @@ -3796,6 +3802,7 @@ nfsrvd_exchangeid(struct nfsrv_descript if (clp != NULL) { NFSSOCKADDRFREE(clp->lc_req.nr_nam); NFSFREEMUTEX(&clp->lc_req.nr_mtx); + free(clp->lc_stateid, M_NFSDCLIENT); free(clp, M_NFSDCLIENT); } if (nd->nd_repstat == 0) { @@ -3828,6 +3835,7 @@ nfsmout: if (clp != NULL) { NFSSOCKADDRFREE(clp->lc_req.nr_nam); NFSFREEMUTEX(&clp->lc_req.nr_mtx); + free(clp->lc_stateid, M_NFSDCLIENT); free(clp, M_NFSDCLIENT); } NFSEXITCODE2(error, nd); Modified: head/sys/fs/nfsserver/nfs_nfsdsocket.c ============================================================================== --- head/sys/fs/nfsserver/nfs_nfsdsocket.c Wed May 27 20:58:54 2015 (r283634) +++ head/sys/fs/nfsserver/nfs_nfsdsocket.c Wed May 27 22:00:05 2015 (r283635) @@ -46,7 +46,8 @@ extern struct nfsrvfh nfs_pubfh, nfs_roo extern int nfs_pubfhset, nfs_rootfhset; extern struct nfsv4lock nfsv4rootfs_lock; extern struct nfsrv_stablefirst nfsrv_stablefirst; -extern struct nfsclienthashhead nfsclienthash[NFSCLIENTHASHSIZE]; +extern struct nfsclienthashhead *nfsclienthash; +extern int nfsrv_clienthashsize; extern int nfsrc_floodlevel, nfsrc_tcpsavedreplies; extern int nfsd_debuglevel; NFSV4ROOTLOCKMUTEX; @@ -610,7 +611,7 @@ nfsrvd_compound(struct nfsrv_descript *n */ if (nfsrv_stablefirst.nsf_flags & NFSNSF_EXPIREDCLIENT) { nfsrv_stablefirst.nsf_flags &= ~NFSNSF_EXPIREDCLIENT; - for (i = 0; i < NFSCLIENTHASHSIZE; i++) { + for (i = 0; i < nfsrv_clienthashsize; i++) { LIST_FOREACH_SAFE(clp, &nfsclienthash[i], lc_hash, nclp) { if (clp->lc_flags & LCL_EXPIREIT) { Modified: head/sys/fs/nfsserver/nfs_nfsdstate.c ============================================================================== --- head/sys/fs/nfsserver/nfs_nfsdstate.c Wed May 27 20:58:54 2015 (r283634) +++ head/sys/fs/nfsserver/nfs_nfsdstate.c Wed May 27 22:00:05 2015 (r283635) @@ -44,14 +44,38 @@ extern u_int32_t newnfs_true, newnfs_fal NFSV4ROOTLOCKMUTEX; NFSSTATESPINLOCK; +SYSCTL_DECL(_vfs_nfsd); +int nfsrv_statehashsize = NFSSTATEHASHSIZE; +SYSCTL_INT(_vfs_nfsd, OID_AUTO, statehashsize, CTLFLAG_RDTUN, + &nfsrv_statehashsize, 0, + "Size of state hash table set via loader.conf"); + +int nfsrv_clienthashsize = NFSCLIENTHASHSIZE; +SYSCTL_INT(_vfs_nfsd, OID_AUTO, clienthashsize, CTLFLAG_RDTUN, + &nfsrv_clienthashsize, 0, + "Size of client hash table set via loader.conf"); + +int nfsrv_lockhashsize = NFSLOCKHASHSIZE; +SYSCTL_INT(_vfs_nfsd, OID_AUTO, fhhashsize, CTLFLAG_RDTUN, + &nfsrv_lockhashsize, 0, + "Size of file handle hash table set via loader.conf"); + +int nfsrv_sessionhashsize = NFSSESSIONHASHSIZE; +SYSCTL_INT(_vfs_nfsd, OID_AUTO, sessionhashsize, CTLFLAG_RDTUN, + &nfsrv_sessionhashsize, 0, + "Size of session hash table set via loader.conf"); + +static int nfsrv_v4statelimit = NFSRV_V4STATELIMIT; +SYSCTL_INT(_vfs_nfsd, OID_AUTO, v4statelimit, CTLFLAG_RWTUN, + &nfsrv_v4statelimit, 0, + "High water limit for NFSv4 opens+locks+delegations"); + /* * Hash lists for nfs V4. - * (Some would put them in the .h file, but I don't like declaring storage - * in a .h) */ -struct nfsclienthashhead nfsclienthash[NFSCLIENTHASHSIZE]; -struct nfslockhashhead nfslockhash[NFSLOCKHASHSIZE]; -struct nfssessionhash nfssessionhash[NFSSESSIONHASHSIZE]; +struct nfsclienthashhead *nfsclienthash; +struct nfslockhashhead *nfslockhash; +struct nfssessionhash *nfssessionhash; #endif /* !APPLEKEXT */ static u_int32_t nfsrv_openpluslock = 0, nfsrv_delegatecnt = 0; @@ -153,7 +177,7 @@ nfsrv_setclient(struct nfsrv_descript *n /* * Check for state resource limit exceeded. */ - if (nfsrv_openpluslock > NFSRV_V4STATELIMIT) { + if (nfsrv_openpluslock > nfsrv_v4statelimit) { error = NFSERR_RESOURCE; goto out; } @@ -188,7 +212,7 @@ nfsrv_setclient(struct nfsrv_descript *n * Search for a match in the client list. */ gotit = i = 0; - while (i < NFSCLIENTHASHSIZE && !gotit) { + while (i < nfsrv_clienthashsize && !gotit) { LIST_FOREACH(clp, &nfsclienthash[i], lc_hash) { if (new_clp->lc_idlen == clp->lc_idlen && !NFSBCMP(new_clp->lc_id, clp->lc_id, clp->lc_idlen)) { @@ -215,7 +239,7 @@ nfsrv_setclient(struct nfsrv_descript *n /* * Get rid of the old one. */ - if (i != NFSCLIENTHASHSIZE) { + if (i != nfsrv_clienthashsize) { LIST_REMOVE(clp, lc_hash); nfsrv_cleanclient(clp, p); nfsrv_freedeleglist(&clp->lc_deleg); @@ -244,7 +268,7 @@ nfsrv_setclient(struct nfsrv_descript *n LIST_INIT(&new_clp->lc_deleg); LIST_INIT(&new_clp->lc_olddeleg); LIST_INIT(&new_clp->lc_session); - for (i = 0; i < NFSSTATEHASHSIZE; i++) + for (i = 0; i < nfsrv_statehashsize; i++) LIST_INIT(&new_clp->lc_stateid[i]); LIST_INSERT_HEAD(NFSCLIENTHASH(new_clp->lc_clientid), new_clp, lc_hash); @@ -344,7 +368,7 @@ nfsrv_setclient(struct nfsrv_descript *n ls_list); LIST_FOREACH(tstp, &new_clp->lc_olddeleg, ls_list) tstp->ls_clp = new_clp; - for (i = 0; i < NFSSTATEHASHSIZE; i++) { + for (i = 0; i < nfsrv_statehashsize; i++) { LIST_NEWHEAD(&new_clp->lc_stateid[i], &clp->lc_stateid[i], ls_hash); LIST_FOREACH(tstp, &new_clp->lc_stateid[i], ls_hash) @@ -405,7 +429,7 @@ nfsrv_setclient(struct nfsrv_descript *n LIST_NEWHEAD(&new_clp->lc_olddeleg, &clp->lc_olddeleg, ls_list); LIST_FOREACH(tstp, &new_clp->lc_olddeleg, ls_list) tstp->ls_clp = new_clp; - for (i = 0; i < NFSSTATEHASHSIZE; i++) { + for (i = 0; i < nfsrv_statehashsize; i++) { LIST_NEWHEAD(&new_clp->lc_stateid[i], &clp->lc_stateid[i], ls_hash); LIST_FOREACH(tstp, &new_clp->lc_stateid[i], ls_hash) @@ -615,7 +639,7 @@ nfsrv_getclient(nfsquad_t clientid, int if (!error && (opflags & CLOPS_RENEWOP)) { if (nfsrv_notsamecredname(nd, clp)) { doneok = 0; - for (i = 0; i < NFSSTATEHASHSIZE && doneok == 0; i++) { + for (i = 0; i < nfsrv_statehashsize && doneok == 0; i++) { LIST_FOREACH(stp, &clp->lc_stateid[i], ls_hash) { if ((stp->ls_flags & NFSLCK_OPEN) && stp->ls_uid == nd->nd_cred->cr_uid) { @@ -687,7 +711,7 @@ nfsrv_destroyclient(nfsquad_t clientid, } /* Scan for state on the clientid. */ - for (i = 0; i < NFSSTATEHASHSIZE; i++) + for (i = 0; i < nfsrv_statehashsize; i++) if (!LIST_EMPTY(&clp->lc_stateid[i])) { NFSLOCKV4ROOTMUTEX(); nfsv4_unlock(&nfsv4rootfs_lock, 1); @@ -744,7 +768,7 @@ nfsrv_adminrevoke(struct nfsd_clid *revo * Search for a match in the client list. */ gotit = i = 0; - while (i < NFSCLIENTHASHSIZE && !gotit) { + while (i < nfsrv_clienthashsize && !gotit) { LIST_FOREACH(clp, &nfsclienthash[i], lc_hash) { if (revokep->nclid_idlen == clp->lc_idlen && !NFSBCMP(revokep->nclid_id, clp->lc_id, clp->lc_idlen)) { @@ -806,7 +830,7 @@ nfsrv_dumpclients(struct nfsd_dumpclient /* * Rattle through the client lists until done. */ - while (i < NFSCLIENTHASHSIZE && cnt < maxcnt) { + while (i < nfsrv_clienthashsize && cnt < maxcnt) { clp = LIST_FIRST(&nfsclienthash[i]); while (clp != LIST_END(&nfsclienthash[i]) && cnt < maxcnt) { nfsrv_dumpaclient(clp, &dumpp[cnt]); @@ -1074,7 +1098,7 @@ nfsrv_servertimer(void) /* * For each client... */ - for (i = 0; i < NFSCLIENTHASHSIZE; i++) { + for (i = 0; i < nfsrv_clienthashsize; i++) { clp = LIST_FIRST(&nfsclienthash[i]); while (clp != LIST_END(&nfsclienthash[i])) { nclp = LIST_NEXT(clp, lc_hash); @@ -1085,7 +1109,7 @@ nfsrv_servertimer(void) nfsrv_clients > nfsrv_clienthighwater)) || (clp->lc_expiry + NFSRV_MOULDYLEASE) < NFSD_MONOSEC || (clp->lc_expiry < NFSD_MONOSEC && - (nfsrv_openpluslock * 10 / 9) > NFSRV_V4STATELIMIT)) { + (nfsrv_openpluslock * 10 / 9) > nfsrv_v4statelimit)) { /* * Lease has expired several nfsrv_lease times ago: * PLUS @@ -1124,7 +1148,7 @@ nfsrv_servertimer(void) stp->ls_noopens++; if (stp->ls_noopens > NFSNOOPEN || (nfsrv_openpluslock * 2) > - NFSRV_V4STATELIMIT) + nfsrv_v4statelimit) nfsrv_stablefirst.nsf_flags |= NFSNSF_NOOPENS; } else { @@ -1188,7 +1212,8 @@ nfsrv_zapclient(struct nfsclient *clp, N newnfs_disconnect(&clp->lc_req); NFSSOCKADDRFREE(clp->lc_req.nr_nam); NFSFREEMUTEX(&clp->lc_req.nr_mtx); - free((caddr_t)clp, M_NFSDCLIENT); + free(clp->lc_stateid, M_NFSDCLIENT); + free(clp, M_NFSDCLIENT); NFSLOCKSTATE(); newnfsstats.srvclients--; nfsrv_openpluslock--; @@ -1534,7 +1559,7 @@ nfsrv_lockctrl(vnode_t vp, struct nfssta * Check for state resource limit exceeded. */ if ((new_stp->ls_flags & NFSLCK_LOCK) && - nfsrv_openpluslock > NFSRV_V4STATELIMIT) { + nfsrv_openpluslock > nfsrv_v4statelimit) { error = NFSERR_RESOURCE; goto out; } @@ -2232,7 +2257,7 @@ nfsrv_opencheck(nfsquad_t clientid, nfsv * returns NFSERR_RESOURCE and the limit is just a rather * arbitrary high water mark, so no harm is done. */ - if (nfsrv_openpluslock > NFSRV_V4STATELIMIT) { + if (nfsrv_openpluslock > nfsrv_v4statelimit) { error = NFSERR_RESOURCE; goto out; } @@ -4298,7 +4323,7 @@ nfsrv_nextstateindex(struct nfsclient *c */ min_index = 0; max_index = 0xffffffff; - for (i = 0; i < NFSSTATEHASHSIZE; i++) { + for (i = 0; i < nfsrv_statehashsize; i++) { LIST_FOREACH(stp, &clp->lc_stateid[i], ls_hash) { if (stp->ls_stateid.other[2] > 0x80000000) { if (stp->ls_stateid.other[2] < max_index) @@ -4322,7 +4347,7 @@ nfsrv_nextstateindex(struct nfsclient *c * cleanest way to code the loop.) */ tryagain: - for (i = 0; i < NFSSTATEHASHSIZE; i++) { + for (i = 0; i < nfsrv_statehashsize; i++) { LIST_FOREACH(stp, &clp->lc_stateid[i], ls_hash) { if (stp->ls_stateid.other[2] == canuse) { canuse++; @@ -5319,13 +5344,13 @@ nfsrv_throwawayopens(NFSPROC_T *p) /* * For each client... */ - for (i = 0; i < NFSCLIENTHASHSIZE; i++) { + for (i = 0; i < nfsrv_clienthashsize; i++) { LIST_FOREACH_SAFE(clp, &nfsclienthash[i], lc_hash, nclp) { LIST_FOREACH_SAFE(stp, &clp->lc_open, ls_list, nstp) { if (LIST_EMPTY(&stp->ls_open) && (stp->ls_noopens > NFSNOOPEN || (nfsrv_openpluslock * 2) > - NFSRV_V4STATELIMIT)) + nfsrv_v4statelimit)) nfsrv_freeopenowner(stp, 0, p); } } @@ -5696,11 +5721,12 @@ nfsrv_throwawayallstate(NFSPROC_T *p) /* * For each client, clean out the state and then free the structure. */ - for (i = 0; i < NFSCLIENTHASHSIZE; i++) { + for (i = 0; i < nfsrv_clienthashsize; i++) { LIST_FOREACH_SAFE(clp, &nfsclienthash[i], lc_hash, nclp) { nfsrv_cleanclient(clp, p); nfsrv_freedeleglist(&clp->lc_deleg); nfsrv_freedeleglist(&clp->lc_olddeleg); + free(clp->lc_stateid, M_NFSDCLIENT); free(clp, M_NFSDCLIENT); } } @@ -5708,7 +5734,7 @@ nfsrv_throwawayallstate(NFSPROC_T *p) /* * Also, free up any remaining lock file structures. */ - for (i = 0; i < NFSLOCKHASHSIZE; i++) { + for (i = 0; i < nfsrv_lockhashsize; i++) { LIST_FOREACH_SAFE(lfp, &nfslockhash[i], lf_hash, nlfp) { printf("nfsd unload: fnd a lock file struct\n"); nfsrv_freenfslockfile(lfp); Modified: head/sys/fs/nfsserver/nfs_nfsdsubs.c ============================================================================== --- head/sys/fs/nfsserver/nfs_nfsdsubs.c Wed May 27 20:58:54 2015 (r283634) +++ head/sys/fs/nfsserver/nfs_nfsdsubs.c Wed May 27 22:00:05 2015 (r283635) @@ -44,9 +44,12 @@ __FBSDID("$FreeBSD$"); extern u_int32_t newnfs_true, newnfs_false; extern int nfs_pubfhset; -extern struct nfsclienthashhead nfsclienthash[NFSCLIENTHASHSIZE]; -extern struct nfslockhashhead nfslockhash[NFSLOCKHASHSIZE]; -extern struct nfssessionhash nfssessionhash[NFSSESSIONHASHSIZE]; +extern struct nfsclienthashhead *nfsclienthash; +extern int nfsrv_clienthashsize; +extern struct nfslockhashhead *nfslockhash; +extern int nfsrv_lockhashsize; +extern struct nfssessionhash *nfssessionhash; +extern int nfsrv_sessionhashsize; extern int nfsrv_useacl; extern uid_t nfsrv_defaultuid; extern gid_t nfsrv_defaultgid; @@ -2036,12 +2039,20 @@ nfsd_init(void) * Initialize client queues. Don't free/reinitialize * them when nfsds are restarted. */ - for (i = 0; i < NFSCLIENTHASHSIZE; i++) + nfsclienthash = malloc(sizeof(struct nfsclienthashhead) * + nfsrv_clienthashsize, M_NFSDCLIENT, M_WAITOK | M_ZERO); + for (i = 0; i < nfsrv_clienthashsize; i++) LIST_INIT(&nfsclienthash[i]); - for (i = 0; i < NFSLOCKHASHSIZE; i++) + nfslockhash = malloc(sizeof(struct nfslockhashhead) * + nfsrv_lockhashsize, M_NFSDLOCKFILE, M_WAITOK | M_ZERO); + for (i = 0; i < nfsrv_lockhashsize; i++) LIST_INIT(&nfslockhash[i]); - for (i = 0; i < NFSSESSIONHASHSIZE; i++) + nfssessionhash = malloc(sizeof(struct nfssessionhash) * + nfsrv_sessionhashsize, M_NFSDSESSION, M_WAITOK | M_ZERO); + for (i = 0; i < nfsrv_sessionhashsize; i++) { + mtx_init(&nfssessionhash[i].mtx, "nfssm", NULL, MTX_DEF); LIST_INIT(&nfssessionhash[i].list); + } /* and the v2 pubfh should be all zeros */ NFSBZERO(nfs_v2pubfh, NFSX_V2FH); From owner-svn-src-all@FreeBSD.ORG Wed May 27 22:25:50 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 983A81B6; Wed, 27 May 2015 22:25:50 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.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 6BD2ACC7; Wed, 27 May 2015 22:25:50 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RMPo3d075248; Wed, 27 May 2015 22:25:50 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RMPor9075247; Wed, 27 May 2015 22:25:50 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201505272225.t4RMPor9075247@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Wed, 27 May 2015 22:25:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283636 - head/sys/dev/bwi X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 22:25:50 -0000 Author: glebius Date: Wed May 27 22:25:49 2015 New Revision: 283636 URL: https://svnweb.freebsd.org/changeset/base/283636 Log: - Don't request BUS_DMA_ALLOCNOW for dma tags, that requires enormous amount of memory. - Don't request segsize of BUS_SPACE_MAXSIZE_32BIT, when maxsize is MCLBYTES. With this change bwi_attach() can succeed on i386. Submitted by: scottl Modified: head/sys/dev/bwi/if_bwi.c Modified: head/sys/dev/bwi/if_bwi.c ============================================================================== --- head/sys/dev/bwi/if_bwi.c Wed May 27 22:00:05 2015 (r283635) +++ head/sys/dev/bwi/if_bwi.c Wed May 27 22:25:49 2015 (r283636) @@ -1921,7 +1921,7 @@ bwi_dma_alloc(struct bwi_softc *sc) BUS_SPACE_MAXSIZE, /* maxsize */ BUS_SPACE_UNRESTRICTED, /* nsegments */ BUS_SPACE_MAXSIZE_32BIT, /* maxsegsize */ - BUS_DMA_ALLOCNOW, /* flags */ + 0, /* flags */ NULL, NULL, /* lockfunc, lockarg */ &sc->sc_parent_dtag); if (error) { @@ -1942,7 +1942,7 @@ bwi_dma_alloc(struct bwi_softc *sc) tx_ring_sz, 1, BUS_SPACE_MAXSIZE_32BIT, - BUS_DMA_ALLOCNOW, + 0, NULL, NULL, &sc->sc_txring_dtag); if (error) { @@ -1972,7 +1972,7 @@ bwi_dma_alloc(struct bwi_softc *sc) rx_ring_sz, 1, BUS_SPACE_MAXSIZE_32BIT, - BUS_DMA_ALLOCNOW, + 0, NULL, NULL, &sc->sc_rxring_dtag); if (error) { @@ -2097,7 +2097,7 @@ bwi_dma_txstats_alloc(struct bwi_softc * dma_size, 1, BUS_SPACE_MAXSIZE_32BIT, - BUS_DMA_ALLOCNOW, + 0, NULL, NULL, &st->stats_ring_dtag); if (error) { @@ -2145,7 +2145,7 @@ bwi_dma_txstats_alloc(struct bwi_softc * dma_size, 1, BUS_SPACE_MAXSIZE_32BIT, - BUS_DMA_ALLOCNOW, + 0, NULL, NULL, &st->stats_dtag); if (error) { @@ -2227,7 +2227,7 @@ bwi_dma_mbuf_create(struct bwi_softc *sc NULL, NULL, MCLBYTES, 1, - BUS_SPACE_MAXSIZE_32BIT, + MCLBYTES, BUS_DMA_ALLOCNOW, NULL, NULL, &sc->sc_buf_dtag); From owner-svn-src-all@FreeBSD.ORG Wed May 27 22:27:16 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id F318E311; Wed, 27 May 2015 22:27:15 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.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 E0982CDF; Wed, 27 May 2015 22:27:15 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RMRF4U075511; Wed, 27 May 2015 22:27:15 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RMRFvn075510; Wed, 27 May 2015 22:27:15 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201505272227.t4RMRFvn075510@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Wed, 27 May 2015 22:27:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283637 - head/sys/dev/bwi X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 22:27:16 -0000 Author: glebius Date: Wed May 27 22:27:15 2015 New Revision: 283637 URL: https://svnweb.freebsd.org/changeset/base/283637 Log: Setup the interrupt handler after bwi_attach(). If IRQ is shared, interrupt may come during bwi_attach(). Modified: head/sys/dev/bwi/if_bwi_pci.c Modified: head/sys/dev/bwi/if_bwi_pci.c ============================================================================== --- head/sys/dev/bwi/if_bwi_pci.c Wed May 27 22:25:49 2015 (r283636) +++ head/sys/dev/bwi/if_bwi_pci.c Wed May 27 22:27:15 2015 (r283637) @@ -161,12 +161,6 @@ bwi_pci_attach(device_t dev) device_printf(dev, "could not map interrupt\n"); goto bad1; } - if (bus_setup_intr(dev, sc->sc_irq_res, - INTR_TYPE_NET | INTR_MPSAFE, - NULL, bwi_intr, sc, &sc->sc_irq_handle)) { - device_printf(dev, "could not establish interrupt\n"); - goto bad2; - } /* Get more PCI information */ sc->sc_pci_did = pci_get_device(dev); @@ -174,11 +168,17 @@ bwi_pci_attach(device_t dev) sc->sc_pci_subvid = pci_get_subvendor(dev); sc->sc_pci_subdid = pci_get_subdevice(dev); - error = bwi_attach(sc); - if (error == 0) /* success */ - return 0; + if ((error = bwi_attach(sc)) != 0) + goto bad2; + + if (bus_setup_intr(dev, sc->sc_irq_res, + INTR_TYPE_NET | INTR_MPSAFE, + NULL, bwi_intr, sc, &sc->sc_irq_handle)) { + device_printf(dev, "could not establish interrupt\n"); + goto bad2; + } + return (0); - bus_teardown_intr(dev, sc->sc_irq_res, sc->sc_irq_handle); bad2: bus_release_resource(dev, SYS_RES_IRQ, 0, sc->sc_irq_res); bad1: From owner-svn-src-all@FreeBSD.ORG Wed May 27 22:29:20 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 403E449E; Wed, 27 May 2015 22:29:20 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.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 2E5F7CFD; Wed, 27 May 2015 22:29:20 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RMTKD9075828; Wed, 27 May 2015 22:29:20 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RMTKR3075827; Wed, 27 May 2015 22:29:20 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201505272229.t4RMTKR3075827@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Wed, 27 May 2015 22:29:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283638 - head/sys/dev/bwi X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 22:29:20 -0000 Author: glebius Date: Wed May 27 22:29:19 2015 New Revision: 283638 URL: https://svnweb.freebsd.org/changeset/base/283638 Log: In bwi_mac_fw_alloc(): - Use device_printf() instead of if_printf(). - Reduce cut and paste. Modified: head/sys/dev/bwi/bwimac.c Modified: head/sys/dev/bwi/bwimac.c ============================================================================== --- head/sys/dev/bwi/bwimac.c Wed May 27 22:27:15 2015 (r283637) +++ head/sys/dev/bwi/bwimac.c Wed May 27 22:29:19 2015 (r283638) @@ -883,7 +883,6 @@ static int bwi_mac_fw_alloc(struct bwi_mac *mac) { struct bwi_softc *sc = mac->mac_sc; - struct ifnet *ifp = sc->sc_ifp; char fwname[64]; int idx; @@ -895,10 +894,8 @@ bwi_mac_fw_alloc(struct bwi_mac *mac) snprintf(fwname, sizeof(fwname), BWI_FW_STUB_PATH, sc->sc_fw_version); mac->mac_stub = firmware_get(fwname); - if (mac->mac_stub == NULL) { - if_printf(ifp, "request firmware %s failed\n", fwname); - return ENOMEM; - } + if (mac->mac_stub == NULL) + goto no_firmware; } if (mac->mac_ucode == NULL) { @@ -907,11 +904,8 @@ bwi_mac_fw_alloc(struct bwi_mac *mac) mac->mac_rev >= 5 ? 5 : mac->mac_rev); mac->mac_ucode = firmware_get(fwname); - if (mac->mac_ucode == NULL) { - if_printf(ifp, "request firmware %s failed\n", fwname); - return ENOMEM; - } - + if (mac->mac_ucode == NULL) + goto no_firmware; if (!bwi_fwimage_is_valid(sc, mac->mac_ucode, BWI_FW_T_UCODE)) return EINVAL; } @@ -922,11 +916,8 @@ bwi_mac_fw_alloc(struct bwi_mac *mac) mac->mac_rev < 5 ? 4 : 5); mac->mac_pcm = firmware_get(fwname); - if (mac->mac_pcm == NULL) { - if_printf(ifp, "request firmware %s failed\n", fwname); - return ENOMEM; - } - + if (mac->mac_pcm == NULL) + goto no_firmware; if (!bwi_fwimage_is_valid(sc, mac->mac_pcm, BWI_FW_T_PCM)) return EINVAL; } @@ -938,8 +929,8 @@ bwi_mac_fw_alloc(struct bwi_mac *mac) } else if (mac->mac_rev >= 5 && mac->mac_rev <= 10) { idx = 5; } else { - if_printf(ifp, "no suitible IV for MAC rev %d\n", - mac->mac_rev); + device_printf(sc->sc_dev, + "no suitible IV for MAC rev %d\n", mac->mac_rev); return ENODEV; } @@ -947,10 +938,8 @@ bwi_mac_fw_alloc(struct bwi_mac *mac) sc->sc_fw_version, idx); mac->mac_iv = firmware_get(fwname); - if (mac->mac_iv == NULL) { - if_printf(ifp, "request firmware %s failed\n", fwname); - return ENOMEM; - } + if (mac->mac_iv == NULL) + goto no_firmware; if (!bwi_fwimage_is_valid(sc, mac->mac_iv, BWI_FW_T_IV)) return EINVAL; } @@ -960,12 +949,12 @@ bwi_mac_fw_alloc(struct bwi_mac *mac) if (mac->mac_rev == 2 || mac->mac_rev == 4 || mac->mac_rev >= 11) { /* No extended IV */ - goto back; + return (0); } else if (mac->mac_rev >= 5 && mac->mac_rev <= 10) { idx = 5; } else { - if_printf(ifp, "no suitible ExtIV for MAC rev %d\n", - mac->mac_rev); + device_printf(sc->sc_dev, + "no suitible ExtIV for MAC rev %d\n", mac->mac_rev); return ENODEV; } @@ -973,15 +962,16 @@ bwi_mac_fw_alloc(struct bwi_mac *mac) sc->sc_fw_version, idx); mac->mac_iv_ext = firmware_get(fwname); - if (mac->mac_iv_ext == NULL) { - if_printf(ifp, "request firmware %s failed\n", fwname); - return ENOMEM; - } + if (mac->mac_iv_ext == NULL) + goto no_firmware; if (!bwi_fwimage_is_valid(sc, mac->mac_iv_ext, BWI_FW_T_IV)) return EINVAL; } -back: - return 0; + return (0); + +no_firmware: + device_printf(sc->sc_dev, "request firmware %s failed\n", fwname); + return (ENOENT); } static void From owner-svn-src-all@FreeBSD.ORG Wed May 27 22:30:22 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id BC82C5F9; Wed, 27 May 2015 22:30:22 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.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 9024FD3C; Wed, 27 May 2015 22:30:22 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4RMUMVq078002; Wed, 27 May 2015 22:30:22 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4RMULAA077998; Wed, 27 May 2015 22:30:21 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201505272230.t4RMULAA077998@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Wed, 27 May 2015 22:30:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283639 - head/sys/dev/bwi X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 May 2015 22:30:22 -0000 Author: glebius Date: Wed May 27 22:30:21 2015 New Revision: 283639 URL: https://svnweb.freebsd.org/changeset/base/283639 Log: To avoid sleeping in firmware_get() with bwi mutex held, call bwi_mac_fw_alloc() at the device attach, not in the interface init. Modified: head/sys/dev/bwi/bwimac.c head/sys/dev/bwi/bwimac.h head/sys/dev/bwi/if_bwi.c Modified: head/sys/dev/bwi/bwimac.c ============================================================================== --- head/sys/dev/bwi/bwimac.c Wed May 27 22:29:19 2015 (r283638) +++ head/sys/dev/bwi/bwimac.c Wed May 27 22:30:21 2015 (r283639) @@ -101,7 +101,6 @@ static void bwi_mac_opmode_init(struct b static void bwi_mac_hostflags_init(struct bwi_mac *); static void bwi_mac_bss_param_init(struct bwi_mac *); -static int bwi_mac_fw_alloc(struct bwi_mac *); static void bwi_mac_fw_free(struct bwi_mac *); static int bwi_mac_fw_load(struct bwi_mac *); static int bwi_mac_fw_init(struct bwi_mac *); @@ -325,10 +324,6 @@ bwi_mac_init(struct bwi_mac *mac) /* * Load and initialize firmwares */ - error = bwi_mac_fw_alloc(mac); - if (error) - return error; - error = bwi_mac_fw_load(mac); if (error) return error; @@ -879,7 +874,7 @@ bwi_fwimage_is_valid(struct bwi_softc *s /* * XXX Error cleanup */ -static int +int bwi_mac_fw_alloc(struct bwi_mac *mac) { struct bwi_softc *sc = mac->mac_sc; Modified: head/sys/dev/bwi/bwimac.h ============================================================================== --- head/sys/dev/bwi/bwimac.h Wed May 27 22:29:19 2015 (r283638) +++ head/sys/dev/bwi/bwimac.h Wed May 27 22:30:21 2015 (r283639) @@ -57,6 +57,7 @@ void bwi_mac_init_tpctl_11bg(struct bwi void bwi_mac_dummy_xmit(struct bwi_mac *); void bwi_mac_reset_hwkeys(struct bwi_mac *); int bwi_mac_config_ps(struct bwi_mac *); +int bwi_mac_fw_alloc(struct bwi_mac *); uint16_t bwi_memobj_read_2(struct bwi_mac *, uint16_t, uint16_t); uint32_t bwi_memobj_read_4(struct bwi_mac *, uint16_t, uint16_t); Modified: head/sys/dev/bwi/if_bwi.c ============================================================================== --- head/sys/dev/bwi/if_bwi.c Wed May 27 22:29:19 2015 (r283638) +++ head/sys/dev/bwi/if_bwi.c Wed May 27 22:30:21 2015 (r283639) @@ -446,6 +446,10 @@ bwi_attach(struct bwi_softc *sc) if (error) goto fail; + error = bwi_mac_fw_alloc(mac); + if (error) + goto fail; + ifp = sc->sc_ifp = if_alloc(IFT_IEEE80211); if (ifp == NULL) { device_printf(dev, "can not if_alloc()\n"); From owner-svn-src-all@FreeBSD.ORG Thu May 28 00:11:38 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 34F16C22; Thu, 28 May 2015 00:11:38 +0000 (UTC) (envelope-from mckusick@FreeBSD.org) Received: from svn.freebsd.org (svn.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 007C59BE; Thu, 28 May 2015 00:11:38 +0000 (UTC) (envelope-from mckusick@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4S0BbvA029417; Thu, 28 May 2015 00:11:37 GMT (envelope-from mckusick@FreeBSD.org) Received: (from mckusick@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4S0BbiQ029414; Thu, 28 May 2015 00:11:37 GMT (envelope-from mckusick@FreeBSD.org) Message-Id: <201505280011.t4S0BbiQ029414@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: mckusick set sender to mckusick@FreeBSD.org using -f From: Kirk McKusick Date: Thu, 28 May 2015 00:11:37 +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: r283640 - in stable/10/sys/ufs: ffs ufs X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 00:11:38 -0000 Author: mckusick Date: Thu May 28 00:11:36 2015 New Revision: 283640 URL: https://svnweb.freebsd.org/changeset/base/283640 Log: MFC of 269533: Limit the number of cylinder groups that will be searched when trying to build a cluster. The limit is tunable using the sysctl vfs.ffs.maxclustersearch. The current limit is 10 cylinder groups per block allocation. It was previously limited to the number of cylinder groups in the filesystem per block allocation. When there were no clusters of the needed size left, it repeatedly searched the whole filesystem for a non-existent cluster on every block allocation. The result was very slow filesystem allocation with 100% CPU utilization. The old behavior can be had by setting vfs.ffs.maxclustersearch to a huge number (1,000,000). This change affects only the layout policy routines so is not able to interfere with the integrity of the filesystem. Reported by: Dmitry Sivachenko (demon@) Tested by: Dmitry Sivachenko (demon@) Modified: stable/10/sys/ufs/ffs/ffs_alloc.c stable/10/sys/ufs/ffs/ffs_vfsops.c stable/10/sys/ufs/ufs/inode.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/ufs/ffs/ffs_alloc.c ============================================================================== --- stable/10/sys/ufs/ffs/ffs_alloc.c Wed May 27 22:30:21 2015 (r283639) +++ stable/10/sys/ufs/ffs/ffs_alloc.c Thu May 28 00:11:36 2015 (r283640) @@ -112,8 +112,7 @@ static void ffs_blkfree_trim_task(void * #ifdef INVARIANTS static int ffs_checkblk(struct inode *, ufs2_daddr_t, long); #endif -static ufs2_daddr_t ffs_clusteralloc(struct inode *, u_int, ufs2_daddr_t, int, - int); +static ufs2_daddr_t ffs_clusteralloc(struct inode *, u_int, ufs2_daddr_t, int); static ino_t ffs_dirpref(struct inode *); static ufs2_daddr_t ffs_fragextend(struct inode *, u_int, ufs2_daddr_t, int, int); @@ -460,10 +459,16 @@ nospace: SYSCTL_NODE(_vfs, OID_AUTO, ffs, CTLFLAG_RW, 0, "FFS filesystem"); static int doasyncfree = 1; -SYSCTL_INT(_vfs_ffs, OID_AUTO, doasyncfree, CTLFLAG_RW, &doasyncfree, 0, ""); +SYSCTL_INT(_vfs_ffs, OID_AUTO, doasyncfree, CTLFLAG_RW, &doasyncfree, 0, +"do not force synchronous writes when blocks are reallocated"); static int doreallocblks = 1; -SYSCTL_INT(_vfs_ffs, OID_AUTO, doreallocblks, CTLFLAG_RW, &doreallocblks, 0, ""); +SYSCTL_INT(_vfs_ffs, OID_AUTO, doreallocblks, CTLFLAG_RW, &doreallocblks, 0, +"enable block reallocation"); + +static int maxclustersearch = 10; +SYSCTL_INT(_vfs_ffs, OID_AUTO, maxclustersearch, CTLFLAG_RW, &maxclustersearch, +0, "max number of cylinder group to search for contigous blocks"); #ifdef DEBUG static volatile int prtrealloc = 0; @@ -510,7 +515,7 @@ ffs_reallocblks_ufs1(ap) ufs1_daddr_t soff, newblk, blkno; ufs2_daddr_t pref; struct indir start_ap[NIADDR + 1], end_ap[NIADDR + 1], *idp; - int i, len, start_lvl, end_lvl, ssize; + int i, cg, len, start_lvl, end_lvl, ssize; vp = ap->a_vp; ip = VTOI(vp); @@ -597,18 +602,39 @@ ffs_reallocblks_ufs1(ap) ebap = (ufs1_daddr_t *)ebp->b_data; } /* - * Find the preferred location for the cluster. + * Find the preferred location for the cluster. If we have not + * previously failed at this endeavor, then follow our standard + * preference calculation. If we have failed at it, then pick up + * where we last ended our search. */ UFS_LOCK(ump); - pref = ffs_blkpref_ufs1(ip, start_lbn, soff, sbap); + if (ip->i_nextclustercg == -1) + pref = ffs_blkpref_ufs1(ip, start_lbn, soff, sbap); + else + pref = cgdata(fs, ip->i_nextclustercg); /* * Search the block map looking for an allocation of the desired size. + * To avoid wasting too much time, we limit the number of cylinder + * groups that we will search. + */ + cg = dtog(fs, pref); + for (i = min(maxclustersearch, fs->fs_ncg); i > 0; i--) { + if ((newblk = ffs_clusteralloc(ip, cg, pref, len)) != 0) + break; + cg += 1; + if (cg >= fs->fs_ncg) + cg = 0; + } + /* + * If we have failed in our search, record where we gave up for + * next time. Otherwise, fall back to our usual search citerion. */ - if ((newblk = ffs_hashalloc(ip, dtog(fs, pref), pref, - len, len, ffs_clusteralloc)) == 0) { + if (newblk == 0) { + ip->i_nextclustercg = cg; UFS_UNLOCK(ump); goto fail; } + ip->i_nextclustercg = -1; /* * We have found a new contiguous block. * @@ -737,7 +763,7 @@ ffs_reallocblks_ufs2(ap) ufs_lbn_t start_lbn, end_lbn; ufs2_daddr_t soff, newblk, blkno, pref; struct indir start_ap[NIADDR + 1], end_ap[NIADDR + 1], *idp; - int i, len, start_lvl, end_lvl, ssize; + int i, cg, len, start_lvl, end_lvl, ssize; vp = ap->a_vp; ip = VTOI(vp); @@ -824,18 +850,39 @@ ffs_reallocblks_ufs2(ap) ebap = (ufs2_daddr_t *)ebp->b_data; } /* - * Find the preferred location for the cluster. + * Find the preferred location for the cluster. If we have not + * previously failed at this endeavor, then follow our standard + * preference calculation. If we have failed at it, then pick up + * where we last ended our search. */ UFS_LOCK(ump); - pref = ffs_blkpref_ufs2(ip, start_lbn, soff, sbap); + if (ip->i_nextclustercg == -1) + pref = ffs_blkpref_ufs2(ip, start_lbn, soff, sbap); + else + pref = cgdata(fs, ip->i_nextclustercg); /* * Search the block map looking for an allocation of the desired size. + * To avoid wasting too much time, we limit the number of cylinder + * groups that we will search. + */ + cg = dtog(fs, pref); + for (i = min(maxclustersearch, fs->fs_ncg); i > 0; i--) { + if ((newblk = ffs_clusteralloc(ip, cg, pref, len)) != 0) + break; + cg += 1; + if (cg >= fs->fs_ncg) + cg = 0; + } + /* + * If we have failed in our search, record where we gave up for + * next time. Otherwise, fall back to our usual search citerion. */ - if ((newblk = ffs_hashalloc(ip, dtog(fs, pref), pref, - len, len, ffs_clusteralloc)) == 0) { + if (newblk == 0) { + ip->i_nextclustercg = cg; UFS_UNLOCK(ump); goto fail; } + ip->i_nextclustercg = -1; /* * We have found a new contiguous block. * @@ -1785,12 +1832,11 @@ gotit: * take the first one that we find following bpref. */ static ufs2_daddr_t -ffs_clusteralloc(ip, cg, bpref, len, unused) +ffs_clusteralloc(ip, cg, bpref, len) struct inode *ip; u_int cg; ufs2_daddr_t bpref; int len; - int unused; { struct fs *fs; struct cg *cgp; Modified: stable/10/sys/ufs/ffs/ffs_vfsops.c ============================================================================== --- stable/10/sys/ufs/ffs/ffs_vfsops.c Wed May 27 22:30:21 2015 (r283639) +++ stable/10/sys/ufs/ffs/ffs_vfsops.c Thu May 28 00:11:36 2015 (r283640) @@ -1687,6 +1687,7 @@ ffs_vgetf(mp, ino, flags, vpp, ffs_flags ip->i_dev = dev; ip->i_number = ino; ip->i_ea_refs = 0; + ip->i_nextclustercg = -1; #ifdef QUOTA { int i; Modified: stable/10/sys/ufs/ufs/inode.h ============================================================================== --- stable/10/sys/ufs/ufs/inode.h Wed May 27 22:30:21 2015 (r283639) +++ stable/10/sys/ufs/ufs/inode.h Thu May 28 00:11:36 2015 (r283640) @@ -87,6 +87,8 @@ struct inode { daddr_t *snapblklist; /* Collect expunged snapshot blocks. */ } i_un; + int i_nextclustercg; /* last cg searched for cluster */ + /* * Data for extended attribute modification. */ From owner-svn-src-all@FreeBSD.ORG Thu May 28 05:38:08 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9382742E; Thu, 28 May 2015 05:38:08 +0000 (UTC) (envelope-from pkelsey@FreeBSD.org) Received: from svn.freebsd.org (svn.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 81799E10; Thu, 28 May 2015 05:38:08 +0000 (UTC) (envelope-from pkelsey@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4S5c8CR089799; Thu, 28 May 2015 05:38:08 GMT (envelope-from pkelsey@FreeBSD.org) Received: (from pkelsey@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4S5c8hh089798; Thu, 28 May 2015 05:38:08 GMT (envelope-from pkelsey@FreeBSD.org) Message-Id: <201505280538.t4S5c8hh089798@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: pkelsey set sender to pkelsey@FreeBSD.org using -f From: Patrick Kelsey Date: Thu, 28 May 2015 05:38:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283641 - head/sbin/dhclient X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 05:38:08 -0000 Author: pkelsey Date: Thu May 28 05:38:07 2015 New Revision: 283641 URL: https://svnweb.freebsd.org/changeset/base/283641 Log: Add CAP_FCNTL to the lease file capsicum rights, and limit to CAP_FCNTL_GETFL. Without CAP_FCNTL_GETFL, the lease file truncation in rewrite_client_leases() will fail to trim old data when rewriting the file with a lesser amount of data. Reviewed by: pjd, rwatson Approved by: jmallett (mentor) MFC after: 1 week Modified: head/sbin/dhclient/dhclient.c Modified: head/sbin/dhclient/dhclient.c ============================================================================== --- head/sbin/dhclient/dhclient.c Thu May 28 00:11:36 2015 (r283640) +++ head/sbin/dhclient/dhclient.c Thu May 28 05:38:07 2015 (r283641) @@ -1845,12 +1845,16 @@ rewrite_client_leases(void) leaseFile = fopen(path_dhclient_db, "w"); if (!leaseFile) error("can't create %s: %m", path_dhclient_db); - cap_rights_init(&rights, CAP_FSTAT, CAP_FSYNC, CAP_FTRUNCATE, - CAP_SEEK, CAP_WRITE); + cap_rights_init(&rights, CAP_FCNTL, CAP_FSTAT, CAP_FSYNC, + CAP_FTRUNCATE, CAP_SEEK, CAP_WRITE); if (cap_rights_limit(fileno(leaseFile), &rights) < 0 && errno != ENOSYS) { error("can't limit lease descriptor: %m"); } + if (cap_fcntls_limit(fileno(leaseFile), CAP_FCNTL_GETFL) < 0 && + errno != ENOSYS) { + error("can't limit lease descriptor fcntls: %m"); + } } else { fflush(leaseFile); rewind(leaseFile); From owner-svn-src-all@FreeBSD.ORG Thu May 28 06:45:15 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7AC59143; Thu, 28 May 2015 06:45:15 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.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 4E7638D; Thu, 28 May 2015 06:45:15 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4S6jFTl024185; Thu, 28 May 2015 06:45:15 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4S6jFTB024184; Thu, 28 May 2015 06:45:15 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201505280645.t4S6jFTB024184@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Thu, 28 May 2015 06:45:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r283642 - in stable: 10/sys/sys 7/sys/sys 8/sys/sys 9/sys/sys X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 06:45:15 -0000 Author: dim Date: Thu May 28 06:45:13 2015 New Revision: 283642 URL: https://svnweb.freebsd.org/changeset/base/283642 Log: MFC r283254: Ensure that the static structs emitted by the MODULE_DEPEND() and MODULE_VERSION() macros don't end up as .comm symbols, when all the version fields are zero. Normally, such symbols will end up in .bss, but for kernel module version objects, this can lead to "garbage" version numbers. Fix this by instructing the compiler to always put these structs in the .data segment instead. Reported by: delphij, ae Modified: stable/8/sys/sys/module.h Directory Properties: stable/8/ (props changed) stable/8/sys/ (props changed) stable/8/sys/sys/ (props changed) Changes in other areas also in this revision: Modified: stable/10/sys/sys/module.h stable/7/sys/sys/module.h stable/9/sys/sys/module.h Directory Properties: stable/10/ (props changed) stable/7/ (props changed) stable/7/sys/ (props changed) stable/9/ (props changed) stable/9/sys/ (props changed) stable/9/sys/sys/ (props changed) Modified: stable/8/sys/sys/module.h ============================================================================== --- stable/8/sys/sys/module.h Thu May 28 05:38:07 2015 (r283641) +++ stable/8/sys/sys/module.h Thu May 28 06:45:13 2015 (r283642) @@ -106,7 +106,8 @@ struct mod_metadata { DATA_SET(modmetadata_set, _mod_metadata##uniquifier) #define MODULE_DEPEND(module, mdepend, vmin, vpref, vmax) \ - static struct mod_depend _##module##_depend_on_##mdepend = { \ + static struct mod_depend _##module##_depend_on_##mdepend \ + __section(".data") = { \ vmin, \ vpref, \ vmax \ @@ -146,7 +147,8 @@ struct mod_metadata { DECLARE_MODULE_WITH_MAXVER(name, data, sub, order, __FreeBSD_version) #define MODULE_VERSION(module, version) \ - static struct mod_version _##module##_version = { \ + static struct mod_version _##module##_version \ + __section(".data") = { \ version \ }; \ MODULE_METADATA(_##module##_version, MDT_VERSION, \ From owner-svn-src-all@FreeBSD.ORG Thu May 28 06:45:17 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D89301A9; Thu, 28 May 2015 06:45:16 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.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 831488F; Thu, 28 May 2015 06:45:16 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4S6jGiB024208; Thu, 28 May 2015 06:45:16 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4S6jGku024207; Thu, 28 May 2015 06:45:16 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201505280645.t4S6jGku024207@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Thu, 28 May 2015 06:45:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org Subject: svn commit: r283642 - in stable: 10/sys/sys 7/sys/sys 8/sys/sys 9/sys/sys X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 06:45:17 -0000 Author: dim Date: Thu May 28 06:45:13 2015 New Revision: 283642 URL: https://svnweb.freebsd.org/changeset/base/283642 Log: MFC r283254: Ensure that the static structs emitted by the MODULE_DEPEND() and MODULE_VERSION() macros don't end up as .comm symbols, when all the version fields are zero. Normally, such symbols will end up in .bss, but for kernel module version objects, this can lead to "garbage" version numbers. Fix this by instructing the compiler to always put these structs in the .data segment instead. Reported by: delphij, ae Modified: stable/7/sys/sys/module.h Directory Properties: stable/7/ (props changed) stable/7/sys/ (props changed) Changes in other areas also in this revision: Modified: stable/10/sys/sys/module.h stable/8/sys/sys/module.h stable/9/sys/sys/module.h Directory Properties: stable/10/ (props changed) stable/8/ (props changed) stable/8/sys/ (props changed) stable/8/sys/sys/ (props changed) stable/9/ (props changed) stable/9/sys/ (props changed) stable/9/sys/sys/ (props changed) Modified: stable/7/sys/sys/module.h ============================================================================== --- stable/7/sys/sys/module.h Thu May 28 05:38:07 2015 (r283641) +++ stable/7/sys/sys/module.h Thu May 28 06:45:13 2015 (r283642) @@ -106,7 +106,8 @@ struct mod_metadata { DATA_SET(modmetadata_set, _mod_metadata##uniquifier) #define MODULE_DEPEND(module, mdepend, vmin, vpref, vmax) \ - static struct mod_depend _##module##_depend_on_##mdepend = { \ + static struct mod_depend _##module##_depend_on_##mdepend \ + __section(".data") = { \ vmin, \ vpref, \ vmax \ @@ -120,7 +121,8 @@ struct mod_metadata { struct __hack #define MODULE_VERSION(module, version) \ - static struct mod_version _##module##_version = { \ + static struct mod_version _##module##_version \ + __section(".data") = { \ version \ }; \ MODULE_METADATA(_##module##_version, MDT_VERSION, \ From owner-svn-src-all@FreeBSD.ORG Thu May 28 06:45:14 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D7C20142; Thu, 28 May 2015 06:45:14 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.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 AB1A58C; Thu, 28 May 2015 06:45:14 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4S6jE9m024174; Thu, 28 May 2015 06:45:14 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4S6jEr7024173; Thu, 28 May 2015 06:45:14 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201505280645.t4S6jEr7024173@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Thu, 28 May 2015 06:45:14 +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: r283642 - in stable: 10/sys/sys 7/sys/sys 8/sys/sys 9/sys/sys X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 06:45:15 -0000 Author: dim Date: Thu May 28 06:45:13 2015 New Revision: 283642 URL: https://svnweb.freebsd.org/changeset/base/283642 Log: MFC r283254: Ensure that the static structs emitted by the MODULE_DEPEND() and MODULE_VERSION() macros don't end up as .comm symbols, when all the version fields are zero. Normally, such symbols will end up in .bss, but for kernel module version objects, this can lead to "garbage" version numbers. Fix this by instructing the compiler to always put these structs in the .data segment instead. Reported by: delphij, ae Modified: stable/9/sys/sys/module.h Directory Properties: stable/9/ (props changed) stable/9/sys/ (props changed) stable/9/sys/sys/ (props changed) Changes in other areas also in this revision: Modified: stable/10/sys/sys/module.h stable/7/sys/sys/module.h stable/8/sys/sys/module.h Directory Properties: stable/10/ (props changed) stable/7/ (props changed) stable/7/sys/ (props changed) stable/8/ (props changed) stable/8/sys/ (props changed) stable/8/sys/sys/ (props changed) Modified: stable/9/sys/sys/module.h ============================================================================== --- stable/9/sys/sys/module.h Thu May 28 05:38:07 2015 (r283641) +++ stable/9/sys/sys/module.h Thu May 28 06:45:13 2015 (r283642) @@ -106,7 +106,8 @@ struct mod_metadata { DATA_SET(modmetadata_set, _mod_metadata##uniquifier) #define MODULE_DEPEND(module, mdepend, vmin, vpref, vmax) \ - static struct mod_depend _##module##_depend_on_##mdepend = { \ + static struct mod_depend _##module##_depend_on_##mdepend \ + __section(".data") = { \ vmin, \ vpref, \ vmax \ @@ -146,7 +147,8 @@ struct mod_metadata { DECLARE_MODULE_WITH_MAXVER(name, data, sub, order, __FreeBSD_version) #define MODULE_VERSION(module, version) \ - static struct mod_version _##module##_version = { \ + static struct mod_version _##module##_version \ + __section(".data") = { \ version \ }; \ MODULE_METADATA(_##module##_version, MDT_VERSION, \ From owner-svn-src-all@FreeBSD.ORG Thu May 28 06:45:16 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1C2EB144; Thu, 28 May 2015 06:45:16 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.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 E42018E; Thu, 28 May 2015 06:45:15 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4S6jFWg024197; Thu, 28 May 2015 06:45:15 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4S6jF62024196; Thu, 28 May 2015 06:45:15 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201505280645.t4S6jF62024196@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Thu, 28 May 2015 06:45: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: r283642 - in stable: 10/sys/sys 7/sys/sys 8/sys/sys 9/sys/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-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 06:45:16 -0000 Author: dim Date: Thu May 28 06:45:13 2015 New Revision: 283642 URL: https://svnweb.freebsd.org/changeset/base/283642 Log: MFC r283254: Ensure that the static structs emitted by the MODULE_DEPEND() and MODULE_VERSION() macros don't end up as .comm symbols, when all the version fields are zero. Normally, such symbols will end up in .bss, but for kernel module version objects, this can lead to "garbage" version numbers. Fix this by instructing the compiler to always put these structs in the .data segment instead. Reported by: delphij, ae Modified: stable/10/sys/sys/module.h Directory Properties: stable/10/ (props changed) Changes in other areas also in this revision: Modified: stable/7/sys/sys/module.h stable/8/sys/sys/module.h stable/9/sys/sys/module.h Directory Properties: stable/7/ (props changed) stable/7/sys/ (props changed) stable/8/ (props changed) stable/8/sys/ (props changed) stable/8/sys/sys/ (props changed) stable/9/ (props changed) stable/9/sys/ (props changed) stable/9/sys/sys/ (props changed) Modified: stable/10/sys/sys/module.h ============================================================================== --- stable/10/sys/sys/module.h Thu May 28 05:38:07 2015 (r283641) +++ stable/10/sys/sys/module.h Thu May 28 06:45:13 2015 (r283642) @@ -106,7 +106,8 @@ struct mod_metadata { DATA_SET(modmetadata_set, _mod_metadata##uniquifier) #define MODULE_DEPEND(module, mdepend, vmin, vpref, vmax) \ - static struct mod_depend _##module##_depend_on_##mdepend = { \ + static struct mod_depend _##module##_depend_on_##mdepend \ + __section(".data") = { \ vmin, \ vpref, \ vmax \ @@ -146,7 +147,8 @@ struct mod_metadata { DECLARE_MODULE_WITH_MAXVER(name, data, sub, order, __FreeBSD_version) #define MODULE_VERSION(module, version) \ - static struct mod_version _##module##_version = { \ + static struct mod_version _##module##_version \ + __section(".data") = { \ version \ }; \ MODULE_METADATA(_##module##_version, MDT_VERSION, \ From owner-svn-src-all@FreeBSD.ORG Thu May 28 08:00:12 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 937341FA; Thu, 28 May 2015 08:00:12 +0000 (UTC) (envelope-from scottl@FreeBSD.org) Received: from svn.freebsd.org (svn.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 81C633EB; Thu, 28 May 2015 08:00:12 +0000 (UTC) (envelope-from scottl@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4S80COo059967; Thu, 28 May 2015 08:00:12 GMT (envelope-from scottl@FreeBSD.org) Received: (from scottl@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4S80C9G059966; Thu, 28 May 2015 08:00:12 GMT (envelope-from scottl@FreeBSD.org) Message-Id: <201505280800.t4S80C9G059966@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: scottl set sender to scottl@FreeBSD.org using -f From: Scott Long Date: Thu, 28 May 2015 08:00:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283643 - head/sys/dev/bwi X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 08:00:12 -0000 Author: scottl Date: Thu May 28 08:00:11 2015 New Revision: 283643 URL: https://svnweb.freebsd.org/changeset/base/283643 Log: Follow-up r283636 with a fix to the other abuses of BUS_SPACE_MAXSIZE_32BIT. It makes no sense to specify a segment size that's larger than the total amount that you want to allocate. Modified: head/sys/dev/bwi/if_bwi.c Modified: head/sys/dev/bwi/if_bwi.c ============================================================================== --- head/sys/dev/bwi/if_bwi.c Thu May 28 06:45:13 2015 (r283642) +++ head/sys/dev/bwi/if_bwi.c Thu May 28 08:00:11 2015 (r283643) @@ -1945,7 +1945,7 @@ bwi_dma_alloc(struct bwi_softc *sc) NULL, NULL, tx_ring_sz, 1, - BUS_SPACE_MAXSIZE_32BIT, + tx_ring_sz, 0, NULL, NULL, &sc->sc_txring_dtag); @@ -1975,7 +1975,7 @@ bwi_dma_alloc(struct bwi_softc *sc) NULL, NULL, rx_ring_sz, 1, - BUS_SPACE_MAXSIZE_32BIT, + rx_ring_sz, 0, NULL, NULL, &sc->sc_rxring_dtag); @@ -2100,7 +2100,7 @@ bwi_dma_txstats_alloc(struct bwi_softc * NULL, NULL, dma_size, 1, - BUS_SPACE_MAXSIZE_32BIT, + dma_size, 0, NULL, NULL, &st->stats_ring_dtag); @@ -2148,7 +2148,7 @@ bwi_dma_txstats_alloc(struct bwi_softc * NULL, NULL, dma_size, 1, - BUS_SPACE_MAXSIZE_32BIT, + dma_size, 0, NULL, NULL, &st->stats_dtag); From owner-svn-src-all@FreeBSD.ORG Thu May 28 09:20:36 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3794A376; Thu, 28 May 2015 09:20:36 +0000 (UTC) (envelope-from whu@FreeBSD.org) Received: from svn.freebsd.org (svn.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 25570AFB; Thu, 28 May 2015 09:20:36 +0000 (UTC) (envelope-from whu@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4S9KaAw099399; Thu, 28 May 2015 09:20:36 GMT (envelope-from whu@FreeBSD.org) Received: (from whu@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4S9KZWR099397; Thu, 28 May 2015 09:20:35 GMT (envelope-from whu@FreeBSD.org) Message-Id: <201505280920.t4S9KZWR099397@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: whu set sender to whu@FreeBSD.org using -f From: Wei Hu Date: Thu, 28 May 2015 09:20: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: r283644 - stable/10/sys/dev/hyperv/storvsc X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 09:20:36 -0000 Author: whu Date: Thu May 28 09:20:35 2015 New Revision: 283644 URL: https://svnweb.freebsd.org/changeset/base/283644 Log: MFC r283053 Submitted by: whu Reviewed by: royger Approved by: royger Sponsored by: Microsoft OSTC Differential Revision: https://reviews.freebsd.org/D2661 Modified: stable/10/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c stable/10/sys/dev/hyperv/storvsc/hv_vstorage.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c ============================================================================== --- stable/10/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c Thu May 28 08:00:11 2015 (r283643) +++ stable/10/sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c Thu May 28 09:20:35 2015 (r283644) @@ -87,6 +87,8 @@ __FBSDID("$FreeBSD$"); #define STORVSC_WIN8_MAJOR 5 #define STORVSC_WIN8_MINOR 1 +#define VSTOR_PKT_SIZE (sizeof(struct vstor_packet) - vmscsi_size_delta) + #define HV_ALIGN(x, a) roundup2(x, a) struct storvsc_softc; @@ -202,6 +204,21 @@ static struct storvsc_driver_props g_drv STORVSC_RINGBUFFER_SIZE} }; +/* + * Sense buffer size changed in win8; have a run-time + * variable to track the size we should use. + */ +static int sense_buffer_size; + +/* + * The size of the vmscsi_request has changed in win8. The + * additional size is for the newly added elements in the + * structure. These elements are valid only when we are talking + * to a win8 host. + * Track the correct size we need to apply. + */ +static int vmscsi_size_delta; + static int storvsc_current_major; static int storvsc_current_minor; @@ -214,6 +231,7 @@ static void storvsc_action(struct cam_si static int create_storvsc_request(union ccb *ccb, struct hv_storvsc_request *reqp); static void storvsc_free_request(struct storvsc_softc *sc, struct hv_storvsc_request *reqp); static enum hv_storage_type storvsc_get_storage_type(device_t dev); +static void hv_storvsc_rescan_target(struct storvsc_softc *sc); static void hv_storvsc_on_channel_callback(void *context); static void hv_storvsc_on_iocompletion( struct storvsc_softc *sc, struct vstor_packet *vstor_packet, @@ -381,7 +399,7 @@ storvsc_send_multichannel_request(struct ret = hv_vmbus_channel_send_packet( dev->channel, vstor_packet, - sizeof(struct vstor_packet), + VSTOR_PKT_SIZE, (uint64_t)(uintptr_t)request, HV_VMBUS_PACKET_TYPE_DATA_IN_BAND, HV_VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED); @@ -448,7 +466,7 @@ hv_storvsc_channel_init(struct hv_device ret = hv_vmbus_channel_send_packet( dev->channel, vstor_packet, - sizeof(struct vstor_packet), + VSTOR_PKT_SIZE, (uint64_t)(uintptr_t)request, HV_VMBUS_PACKET_TYPE_DATA_IN_BAND, HV_VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED); @@ -481,7 +499,7 @@ hv_storvsc_channel_init(struct hv_device ret = hv_vmbus_channel_send_packet( dev->channel, vstor_packet, - sizeof(struct vstor_packet), + VSTOR_PKT_SIZE, (uint64_t)(uintptr_t)request, HV_VMBUS_PACKET_TYPE_DATA_IN_BAND, HV_VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED); @@ -510,7 +528,7 @@ hv_storvsc_channel_init(struct hv_device ret = hv_vmbus_channel_send_packet( dev->channel, vstor_packet, - sizeof(struct vstor_packet), + VSTOR_PKT_SIZE, (uint64_t)(uintptr_t)request, HV_VMBUS_PACKET_TYPE_DATA_IN_BAND, HV_VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED); @@ -546,7 +564,7 @@ hv_storvsc_channel_init(struct hv_device ret = hv_vmbus_channel_send_packet( dev->channel, vstor_packet, - sizeof(struct vstor_packet), + VSTOR_PKT_SIZE, (uint64_t)(uintptr_t)request, HV_VMBUS_PACKET_TYPE_DATA_IN_BAND, HV_VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED); @@ -644,7 +662,7 @@ hv_storvsc_host_reset(struct hv_device * ret = hv_vmbus_channel_send_packet(dev->channel, vstor_packet, - sizeof(struct vstor_packet), + VSTOR_PKT_SIZE, (uint64_t)(uintptr_t)&sc->hs_reset_req, HV_VMBUS_PACKET_TYPE_DATA_IN_BAND, HV_VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED); @@ -695,9 +713,9 @@ hv_storvsc_io_request(struct hv_device * vstor_packet->flags |= REQUEST_COMPLETION_FLAG; - vstor_packet->u.vm_srb.length = sizeof(struct vmscsi_req); + vstor_packet->u.vm_srb.length = VSTOR_PKT_SIZE; - vstor_packet->u.vm_srb.sense_info_len = SENSE_BUFFER_SIZE; + vstor_packet->u.vm_srb.sense_info_len = sense_buffer_size; vstor_packet->u.vm_srb.transfer_len = request->data_buf.length; @@ -711,14 +729,14 @@ hv_storvsc_io_request(struct hv_device * outgoing_channel, &request->data_buf, vstor_packet, - sizeof(struct vstor_packet), + VSTOR_PKT_SIZE, (uint64_t)(uintptr_t)request); } else { ret = hv_vmbus_channel_send_packet( outgoing_channel, vstor_packet, - sizeof(struct vstor_packet), + VSTOR_PKT_SIZE, (uint64_t)(uintptr_t)request, HV_VMBUS_PACKET_TYPE_DATA_IN_BAND, HV_VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED); @@ -772,6 +790,41 @@ hv_storvsc_on_iocompletion(struct storvs } static void +hv_storvsc_rescan_target(struct storvsc_softc *sc) +{ + path_id_t pathid; + target_id_t targetid; + union ccb *ccb; + + pathid = cam_sim_path(sc->hs_sim); + targetid = CAM_TARGET_WILDCARD; + + /* + * Allocate a CCB and schedule a rescan. + */ + ccb = xpt_alloc_ccb_nowait(); + if (ccb == NULL) { + printf("unable to alloc CCB for rescan\n"); + return; + } + + if (xpt_create_path(&ccb->ccb_h.path, NULL, pathid, targetid, + CAM_LUN_WILDCARD) != CAM_REQ_CMP) { + printf("unable to create path for rescan, pathid: %d," + "targetid: %d\n", pathid, targetid); + xpt_free_ccb(ccb); + return; + } + + if (targetid == CAM_TARGET_WILDCARD) + ccb->ccb_h.func_code = XPT_SCAN_BUS; + else + ccb->ccb_h.func_code = XPT_SCAN_TGT; + + xpt_rescan(ccb); +} + +static void hv_storvsc_on_channel_callback(void *context) { int ret = 0; @@ -801,7 +854,7 @@ hv_storvsc_on_channel_callback(void *con ret = hv_vmbus_channel_recv_packet( channel, packet, - roundup2(sizeof(struct vstor_packet), 8), + roundup2(VSTOR_PKT_SIZE, 8), &bytes_recvd, &request_id); @@ -826,11 +879,13 @@ hv_storvsc_on_channel_callback(void *con vstor_packet, request); break; case VSTOR_OPERATION_REMOVEDEVICE: - case VSTOR_OPERATION_ENUMERATE_BUS: printf("VMBUS: storvsc operation %d not " "implemented.\n", vstor_packet->operation); /* TODO: implement */ break; + case VSTOR_OPERATION_ENUMERATE_BUS: + hv_storvsc_rescan_target(sc); + break; default: break; } @@ -838,7 +893,7 @@ hv_storvsc_on_channel_callback(void *con ret = hv_vmbus_channel_recv_packet( channel, packet, - roundup2(sizeof(struct vstor_packet), 8), + roundup2(VSTOR_PKT_SIZE, 8), &bytes_recvd, &request_id); } @@ -861,13 +916,17 @@ storvsc_probe(device_t dev) int ata_disk_enable = 0; int ret = ENXIO; - if ((HV_VMBUS_VERSION_WIN8 == hv_vmbus_protocal_version) || - (HV_VMBUS_VERSION_WIN8_1 == hv_vmbus_protocal_version)){ - storvsc_current_major = STORVSC_WIN8_MAJOR; - storvsc_current_minor = STORVSC_WIN8_MINOR; - } else { + if (hv_vmbus_protocal_version == HV_VMBUS_VERSION_WS2008 || + hv_vmbus_protocal_version == HV_VMBUS_VERSION_WIN7) { + sense_buffer_size = PRE_WIN8_STORVSC_SENSE_BUFFER_SIZE; + vmscsi_size_delta = sizeof(struct vmscsi_win8_extension); storvsc_current_major = STORVSC_WIN7_MAJOR; storvsc_current_minor = STORVSC_WIN7_MINOR; + } else { + sense_buffer_size = POST_WIN7_STORVSC_SENSE_BUFFER_SIZE; + vmscsi_size_delta = 0; + storvsc_current_major = STORVSC_WIN8_MAJOR; + storvsc_current_minor = STORVSC_WIN8_MINOR; } switch (storvsc_get_storage_type(dev)) { Modified: stable/10/sys/dev/hyperv/storvsc/hv_vstorage.h ============================================================================== --- stable/10/sys/dev/hyperv/storvsc/hv_vstorage.h Thu May 28 08:00:11 2015 (r283643) +++ stable/10/sys/dev/hyperv/storvsc/hv_vstorage.h Thu May 28 09:20:35 2015 (r283644) @@ -51,6 +51,8 @@ * V1 Beta 0.1 * V1 RC < 2008/1/31 1.0 * V1 RC > 2008/1/31 2.0 + * Win7: 4.2 + * Win8: 5.1 */ #define VMSTOR_PROTOCOL_VERSION_CURRENT VMSTOR_PROTOCOL_VERSION(5, 1) @@ -83,9 +85,25 @@ enum vstor_packet_ops { */ #define CDB16GENERIC_LENGTH 0x10 -#define SENSE_BUFFER_SIZE 0x12 +#define SENSE_BUFFER_SIZE 0x14 #define MAX_DATA_BUFFER_LENGTH_WITH_PADDING 0x14 +#define POST_WIN7_STORVSC_SENSE_BUFFER_SIZE 0x14 +#define PRE_WIN8_STORVSC_SENSE_BUFFER_SIZE 0x12 + + +struct vmscsi_win8_extension { + /* + * The following were added in Windows 8 + */ + uint16_t reserve; + uint8_t queue_tag; + uint8_t queue_action; + uint32_t srb_flags; + uint32_t time_out_value; + uint32_t queue_sort_ey; +} __packed; + struct vmscsi_req { uint16_t length; uint8_t srb_status; @@ -114,6 +132,11 @@ struct vmscsi_req { uint8_t reserved_array[MAX_DATA_BUFFER_LENGTH_WITH_PADDING]; } u; + /* + * The following was added in win8. + */ + struct vmscsi_win8_extension win8_extension; + } __packed; /** From owner-svn-src-all@FreeBSD.ORG Thu May 28 12:33:21 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D3554F21; Thu, 28 May 2015 12:33:21 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.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 C18C2222; Thu, 28 May 2015 12:33:21 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4SCXLBc098838; Thu, 28 May 2015 12:33:21 GMT (envelope-from bz@FreeBSD.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4SCXL6i098837; Thu, 28 May 2015 12:33:21 GMT (envelope-from bz@FreeBSD.org) Message-Id: <201505281233.t4SCXL6i098837@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: bz set sender to bz@FreeBSD.org using -f From: "Bjoern A. Zeeb" Date: Thu, 28 May 2015 12:33:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283645 - head/sys/mips/include X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 12:33:21 -0000 Author: bz Date: Thu May 28 12:33:21 2015 New Revision: 283645 URL: https://svnweb.freebsd.org/changeset/base/283645 Log: Similarly to other architecture, add the include for cpufunc.h which is needed for pte.h by vmstat to resolve MIPS_CCA_UNCACHED. Modified: head/sys/mips/include/pcpu.h Modified: head/sys/mips/include/pcpu.h ============================================================================== --- head/sys/mips/include/pcpu.h Thu May 28 09:20:35 2015 (r283644) +++ head/sys/mips/include/pcpu.h Thu May 28 12:33:21 2015 (r283645) @@ -31,6 +31,7 @@ #ifndef _MACHINE_PCPU_H_ #define _MACHINE_PCPU_H_ +#include #include #define PCPU_MD_COMMON_FIELDS \ From owner-svn-src-all@FreeBSD.ORG Thu May 28 13:12:06 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 564ED8FA; Thu, 28 May 2015 13:12:06 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.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 43E3CE41; Thu, 28 May 2015 13:12:06 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4SDC64Z018523; Thu, 28 May 2015 13:12:06 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4SDC6Ok018522; Thu, 28 May 2015 13:12:06 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <201505281312.t4SDC6Ok018522@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Thu, 28 May 2015 13:12:06 +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: r283646 - stable/10/sys/compat/ia32 X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 13:12:06 -0000 Author: jhb Date: Thu May 28 13:12:05 2015 New Revision: 283646 URL: https://svnweb.freebsd.org/changeset/base/283646 Log: Fix COMPAT_FREEBSD32 build on ia64. This is a direct commit to stable/10 since ia64 is not present in head. Modified: stable/10/sys/compat/ia32/ia32_sysvec.c Modified: stable/10/sys/compat/ia32/ia32_sysvec.c ============================================================================== --- stable/10/sys/compat/ia32/ia32_sysvec.c Thu May 28 12:33:21 2015 (r283645) +++ stable/10/sys/compat/ia32/ia32_sysvec.c Thu May 28 13:12:05 2015 (r283646) @@ -192,6 +192,7 @@ SYSINIT(kia32, SI_SUB_EXEC, SI_ORDER_ANY void elf32_dump_thread(struct thread *td, void *dst, size_t *off) { +#ifdef __amd64__ void *buf; size_t len; @@ -209,6 +210,7 @@ elf32_dump_thread(struct thread *td, voi cpu_max_ext_state_size, NULL); } *off = len; +#endif } void From owner-svn-src-all@FreeBSD.ORG Thu May 28 13:56:20 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1D9615CD; Thu, 28 May 2015 13:56:20 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.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 0B98BA6E; Thu, 28 May 2015 13:56:20 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4SDuJcm038956; Thu, 28 May 2015 13:56:19 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4SDuJmH038955; Thu, 28 May 2015 13:56:19 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <201505281356.t4SDuJmH038955@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Thu, 28 May 2015 13:56:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283647 - head/tests/sys/kern X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 13:56:20 -0000 Author: jhb Date: Thu May 28 13:56:19 2015 New Revision: 283647 URL: https://svnweb.freebsd.org/changeset/base/283647 Log: Tweak the description of when waitpid() doesn't return any status for a non-blocking wait to avoid the word "empty". Requested by: ngie Modified: head/tests/sys/kern/ptrace_test.c Modified: head/tests/sys/kern/ptrace_test.c ============================================================================== --- head/tests/sys/kern/ptrace_test.c Thu May 28 13:12:05 2015 (r283646) +++ head/tests/sys/kern/ptrace_test.c Thu May 28 13:56:19 2015 (r283647) @@ -224,9 +224,9 @@ ATF_TC_BODY(ptrace__parent_sees_exit_aft } /* - * This wait should return an empty pid. The parent should - * see the child as non-exited until the debugger sees the - * exit. + * This wait should return a pid of 0 to indicate no status to + * report. The parent should see the child as non-exited + * until the debugger sees the exit. */ wpid = waitpid(child, &status, WNOHANG); ATF_REQUIRE(wpid == 0); @@ -357,9 +357,9 @@ ATF_TC_BODY(ptrace__parent_sees_exit_aft } /* - * This wait should return an empty pid. The parent should - * see the child as non-exited until the debugger sees the - * exit. + * This wait should return a pid of 0 to indicate no status to + * report. The parent should see the child as non-exited + * until the debugger sees the exit. */ wpid = waitpid(child, &status, WNOHANG); ATF_REQUIRE(wpid == 0); From owner-svn-src-all@FreeBSD.ORG Thu May 28 14:24:22 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B19D6727; Thu, 28 May 2015 14:24:22 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 85420222; Thu, 28 May 2015 14:24:22 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4SEOM4c054768; Thu, 28 May 2015 14:24:22 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4SEOLXh054765; Thu, 28 May 2015 14:24:21 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505281424.t4SEOLXh054765@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Thu, 28 May 2015 14:24:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283648 - head/sys/netinet X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 14:24:22 -0000 Author: tuexen Date: Thu May 28 14:24:21 2015 New Revision: 283648 URL: https://svnweb.freebsd.org/changeset/base/283648 Log: Address some compiler warnings. No functional change. MFC after: 3 days Modified: head/sys/netinet/sctp_indata.c head/sys/netinet/sctp_output.c head/sys/netinet/sctputil.c Modified: head/sys/netinet/sctp_indata.c ============================================================================== --- head/sys/netinet/sctp_indata.c Thu May 28 13:56:19 2015 (r283647) +++ head/sys/netinet/sctp_indata.c Thu May 28 14:24:21 2015 (r283648) @@ -3462,12 +3462,18 @@ sctp_fs_audit(struct sctp_association *a { struct sctp_tmit_chunk *chk; int inflight = 0, resend = 0, inbetween = 0, acked = 0, above = 0; - int entry_flight, entry_cnt, ret; + int ret; +#ifndef INVARIANTS + int entry_flight, entry_cnt; + +#endif + + ret = 0; +#ifndef INVARIANTS entry_flight = asoc->total_flight; entry_cnt = asoc->total_flight_count; - ret = 0; - +#endif if (asoc->pr_sctp_cnt >= asoc->sent_queue_cnt) return (0); Modified: head/sys/netinet/sctp_output.c ============================================================================== --- head/sys/netinet/sctp_output.c Thu May 28 13:56:19 2015 (r283647) +++ head/sys/netinet/sctp_output.c Thu May 28 14:24:21 2015 (r283648) @@ -11996,9 +11996,6 @@ sctp_copy_one(struct sctp_stream_queue_p struct uio *uio, int resv_upfront) { - int left; - - left = sp->length; sp->data = m_uiotombuf(uio, M_WAITOK, sp->length, resv_upfront, 0); if (sp->data == NULL) { Modified: head/sys/netinet/sctputil.c ============================================================================== --- head/sys/netinet/sctputil.c Thu May 28 13:56:19 2015 (r283647) +++ head/sys/netinet/sctputil.c Thu May 28 14:24:21 2015 (r283648) @@ -1449,7 +1449,7 @@ sctp_timeout_handler(void *t) struct socket *so; #endif - int did_output, type; + int did_output; tmr = (struct sctp_timer *)t; inp = (struct sctp_inpcb *)tmr->ep; @@ -1488,7 +1488,6 @@ sctp_timeout_handler(void *t) } /* if this is an iterator timeout, get the struct and clear inp */ tmr->stopped_from = 0xa003; - type = tmr->type; if (inp) { SCTP_INP_INCR_REF(inp); if ((inp->sctp_socket == NULL) && @@ -1873,7 +1872,7 @@ out_decr: } out_no_decr: SCTPDBG(SCTP_DEBUG_TIMER1, "Timer now complete (type %d)\n", - type); + tmr->type); CURVNET_RESTORE(); } From owner-svn-src-all@FreeBSD.ORG Thu May 28 15:49:18 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id BCA218E9; Thu, 28 May 2015 15:49:18 +0000 (UTC) (envelope-from john@baldwin.cx) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 94874AB8; Thu, 28 May 2015 15:49:17 +0000 (UTC) (envelope-from john@baldwin.cx) Received: from ralph.baldwin.cx (pool-173-54-116-245.nwrknj.fios.verizon.net [173.54.116.245]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 0C7B0B962; Thu, 28 May 2015 11:49:17 -0400 (EDT) From: John Baldwin To: Eric Joyner Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: Re: svn commit: r283620 - in stable/10/sys: amd64/conf conf dev/ixgbe modules modules/ix modules/ixv Date: Thu, 28 May 2015 11:49:10 -0400 Message-ID: <1987595.JGalSDZ3Rh@ralph.baldwin.cx> User-Agent: KMail/4.14.3 (FreeBSD/10.1-STABLE; KDE/4.14.3; amd64; ; ) In-Reply-To: <201505271744.t4RHiC04024525@svn.freebsd.org> References: <201505271744.t4RHiC04024525@svn.freebsd.org> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Thu, 28 May 2015 11:49:17 -0400 (EDT) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 15:49:18 -0000 On Wednesday, May 27, 2015 05:44:12 PM Eric Joyner wrote: > Author: erj > Date: Wed May 27 17:44:11 2015 > New Revision: 283620 > URL: https://svnweb.freebsd.org/changeset/base/283620 > > Log: > MFC ixgbe commits for 10.2: > > - r280182 - Split the driver into independent pf/vf loadables > - r280197 - Resolve build issues > - r280204 - Fix multiple same-name devclasses > - r280228 - Fix i386 LINT build issues / remove unused variable > - r280252 - Fix building ixgbe with gcc > - r280962 - Make changes to busdma code similar to r257541 > - r281772 & r281773 - Remove unused variable > - partial r282280 - stats counter update (ix-only) > - r282289 - Add X550 support > - r282290 - Add X550 makefile updates > - r282293 - Add ixgbe_x550.c to conf/files > - r282299 - Fix gcc compile (extraneous extern declaration) > > Finally, add ix_txrx.c to conf/files because it's required for compile in stable/10. FYI, this has broken 'make tinderbox' for all 32-bit kernels that include ix or ixgbe: /usr/home/john/work/freebsd/stable/10/sys/dev/ixgbe/if_ix.c:2494:21: error: impl icit conversion from 'unsigned long long' to 'u_long' (aka 'unsigned long') chan ges value from 10000000000 to 1410065408 [-Werror,-Wconstant-conversion] ifp->if_baudrate = IF_Gbps(10); ~ ^~~~~~~~~~~ /usr/home/john/work/freebsd/stable/10/sys/net/if.h:187:21: note: expanded from m acro 'IF_Gbps' #define IF_Gbps(x) (IF_Mbps((x) * 1000)) /* gigabits/sec. */ ^~~~~~~~~~~~~~~~~~~ /usr/home/john/work/freebsd/stable/10/sys/net/if.h:186:21: note: expanded from m acro 'IF_Mbps' #define IF_Mbps(x) (IF_Kbps((x) * 1000)) /* megabits/sec. */ ^~~~~~~~~~~~~~~~~~~ /usr/home/john/work/freebsd/stable/10/sys/net/if.h:185:36: note: expanded from macro 'IF_Kbps' #define IF_Kbps(x) ((uintmax_t)(x) * 1000) /* kilobits/sec. */ ~~~~~~~~~~~~~~~^~~~~~ 1 error generated. *** [if_ix.o] Error code 1 On 10.x you need to use if_initbaudrate() instead of setting if_baudrate directly. -- John Baldwin From owner-svn-src-all@FreeBSD.ORG Thu May 28 16:00:27 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5DD3EE52; Thu, 28 May 2015 16:00:27 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 4AC9BD66; Thu, 28 May 2015 16:00:27 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4SG0R0B002868; Thu, 28 May 2015 16:00:27 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4SG0OAR002840; Thu, 28 May 2015 16:00:24 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505281600.t4SG0OAR002840@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Thu, 28 May 2015 16:00:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283650 - in head/sys: netinet netinet6 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 16:00:27 -0000 Author: tuexen Date: Thu May 28 16:00:23 2015 New Revision: 283650 URL: https://svnweb.freebsd.org/changeset/base/283650 Log: Fix and cleanup the debug information. This has no user-visible changes. Thanks to Irene Ruengeler for proving a patch. MFC after: 3 days Modified: head/sys/netinet/sctp_asconf.c head/sys/netinet/sctp_cc_functions.c head/sys/netinet/sctp_constants.h head/sys/netinet/sctp_indata.c head/sys/netinet/sctp_input.c head/sys/netinet/sctp_output.c head/sys/netinet/sctp_pcb.c head/sys/netinet/sctp_timer.c head/sys/netinet/sctp_usrreq.c head/sys/netinet/sctputil.c head/sys/netinet6/sctp6_usrreq.c Modified: head/sys/netinet/sctp_asconf.c ============================================================================== --- head/sys/netinet/sctp_asconf.c Thu May 28 15:58:41 2015 (r283649) +++ head/sys/netinet/sctp_asconf.c Thu May 28 16:00:23 2015 (r283650) @@ -555,7 +555,9 @@ sctp_process_asconf_set_primary(struct s (stcb->asoc.primary_destination->dest_state & SCTP_ADDR_UNCONFIRMED) == 0) { - sctp_timer_stop(SCTP_TIMER_TYPE_PRIM_DELETED, stcb->sctp_ep, stcb, NULL, SCTP_FROM_SCTP_TIMER + SCTP_LOC_7); + sctp_timer_stop(SCTP_TIMER_TYPE_PRIM_DELETED, + stcb->sctp_ep, stcb, NULL, + SCTP_FROM_SCTP_ASCONF + SCTP_LOC_1); if (sctp_is_mobility_feature_on(stcb->sctp_ep, SCTP_MOBILITY_FASTHANDOFF)) { sctp_assoc_immediate_retrans(stcb, @@ -991,7 +993,7 @@ sctp_assoc_immediate_retrans(struct sctp SCTPDBG_ADDR(SCTP_DEBUG_ASCONF1, &stcb->asoc.primary_destination->ro._l_addr.sa); sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, stcb->asoc.deleted_primary, - SCTP_FROM_SCTP_TIMER + SCTP_LOC_8); + SCTP_FROM_SCTP_ASCONF + SCTP_LOC_3); stcb->asoc.num_send_timers_up--; if (stcb->asoc.num_send_timers_up < 0) { stcb->asoc.num_send_timers_up = 0; @@ -1030,7 +1032,7 @@ sctp_net_immediate_retrans(struct sctp_t SCTPDBG(SCTP_DEBUG_ASCONF1, "net_immediate_retrans: RTO is %d\n", net->RTO); sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, net, - SCTP_FROM_SCTP_TIMER + SCTP_LOC_5); + SCTP_FROM_SCTP_ASCONF + SCTP_LOC_4); stcb->asoc.cc_functions.sctp_set_initial_cc_param(stcb, net); net->error_count = 0; TAILQ_FOREACH(chk, &stcb->asoc.sent_queue, sctp_next) { @@ -1684,7 +1686,7 @@ sctp_handle_asconf_ack(struct mbuf *m, i if (serial_num == asoc->asconf_seq_out - 1) { /* stop our timer */ sctp_timer_stop(SCTP_TIMER_TYPE_ASCONF, stcb->sctp_ep, stcb, net, - SCTP_FROM_SCTP_ASCONF + SCTP_LOC_3); + SCTP_FROM_SCTP_ASCONF + SCTP_LOC_5); } /* process the ASCONF-ACK contents */ ack_length = ntohs(cp->ch.chunk_length) - Modified: head/sys/netinet/sctp_cc_functions.c ============================================================================== --- head/sys/netinet/sctp_cc_functions.c Thu May 28 15:58:41 2015 (r283649) +++ head/sys/netinet/sctp_cc_functions.c Thu May 28 16:00:23 2015 (r283650) @@ -226,7 +226,8 @@ sctp_cwnd_update_after_fr(struct sctp_tc } sctp_timer_stop(SCTP_TIMER_TYPE_SEND, - stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_INDATA + SCTP_LOC_32); + stcb->sctp_ep, stcb, net, + SCTP_FROM_SCTP_CC_FUNCTIONS + SCTP_LOC_1); sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, net); } @@ -1732,7 +1733,8 @@ sctp_hs_cwnd_update_after_fr(struct sctp } sctp_timer_stop(SCTP_TIMER_TYPE_SEND, - stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_INDATA + SCTP_LOC_32); + stcb->sctp_ep, stcb, net, + SCTP_FROM_SCTP_CC_FUNCTIONS + SCTP_LOC_2); sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, net); } @@ -2264,7 +2266,8 @@ sctp_htcp_cwnd_update_after_fr(struct sc } sctp_timer_stop(SCTP_TIMER_TYPE_SEND, - stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_INDATA + SCTP_LOC_32); + stcb->sctp_ep, stcb, net, + SCTP_FROM_SCTP_CC_FUNCTIONS + SCTP_LOC_3); sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, net); } Modified: head/sys/netinet/sctp_constants.h ============================================================================== --- head/sys/netinet/sctp_constants.h Thu May 28 15:58:41 2015 (r283649) +++ head/sys/netinet/sctp_constants.h Thu May 28 16:00:23 2015 (r283650) @@ -765,18 +765,19 @@ __FBSDID("$FreeBSD$"); */ /* File defines */ -#define SCTP_FROM_SCTP_INPUT 0x10000000 -#define SCTP_FROM_SCTP_PCB 0x20000000 -#define SCTP_FROM_SCTP_INDATA 0x30000000 -#define SCTP_FROM_SCTP_TIMER 0x40000000 -#define SCTP_FROM_SCTP_USRREQ 0x50000000 -#define SCTP_FROM_SCTPUTIL 0x60000000 -#define SCTP_FROM_SCTP6_USRREQ 0x70000000 -#define SCTP_FROM_SCTP_ASCONF 0x80000000 -#define SCTP_FROM_SCTP_OUTPUT 0x90000000 -#define SCTP_FROM_SCTP_PEELOFF 0xa0000000 -#define SCTP_FROM_SCTP_PANDA 0xb0000000 -#define SCTP_FROM_SCTP_SYSCTL 0xc0000000 +#define SCTP_FROM_SCTP_INPUT 0x10000000 +#define SCTP_FROM_SCTP_PCB 0x20000000 +#define SCTP_FROM_SCTP_INDATA 0x30000000 +#define SCTP_FROM_SCTP_TIMER 0x40000000 +#define SCTP_FROM_SCTP_USRREQ 0x50000000 +#define SCTP_FROM_SCTPUTIL 0x60000000 +#define SCTP_FROM_SCTP6_USRREQ 0x70000000 +#define SCTP_FROM_SCTP_ASCONF 0x80000000 +#define SCTP_FROM_SCTP_OUTPUT 0x90000000 +#define SCTP_FROM_SCTP_PEELOFF 0xa0000000 +#define SCTP_FROM_SCTP_PANDA 0xb0000000 +#define SCTP_FROM_SCTP_SYSCTL 0xc0000000 +#define SCTP_FROM_SCTP_CC_FUNCTIONS 0xd0000000 /* Location ID's */ #define SCTP_LOC_1 0x00000001 @@ -812,6 +813,8 @@ __FBSDID("$FreeBSD$"); #define SCTP_LOC_31 0x0000001f #define SCTP_LOC_32 0x00000020 #define SCTP_LOC_33 0x00000021 +#define SCTP_LOC_34 0x00000022 +#define SCTP_LOC_35 0x00000023 /* Free assoc codes */ Modified: head/sys/netinet/sctp_indata.c ============================================================================== --- head/sys/netinet/sctp_indata.c Thu May 28 15:58:41 2015 (r283649) +++ head/sys/netinet/sctp_indata.c Thu May 28 16:00:23 2015 (r283650) @@ -1034,7 +1034,7 @@ sctp_queue_data_for_reasm(struct sctp_tc chk->rec.data.TSN_seq, (chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) ? 1 : 0); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_7; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_8; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); *abort_flag = 1; return; @@ -1056,7 +1056,7 @@ sctp_queue_data_for_reasm(struct sctp_tc chk->rec.data.stream_number, chk->rec.data.stream_seq); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_8; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_9; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); *abort_flag = 1; return; @@ -1073,7 +1073,7 @@ sctp_queue_data_for_reasm(struct sctp_tc chk->rec.data.stream_number, chk->rec.data.stream_seq); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_9; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_10; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); *abort_flag = 1; return; @@ -1100,7 +1100,7 @@ sctp_queue_data_for_reasm(struct sctp_tc chk->rec.data.stream_number, chk->rec.data.stream_seq); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_10; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_11; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); *abort_flag = 1; return; @@ -1123,7 +1123,7 @@ sctp_queue_data_for_reasm(struct sctp_tc chk->rec.data.stream_number, chk->rec.data.stream_seq); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_11; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_12; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); *abort_flag = 1; return; @@ -1144,7 +1144,7 @@ sctp_queue_data_for_reasm(struct sctp_tc chk->rec.data.stream_number, chk->rec.data.stream_seq); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_12; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_13; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); *abort_flag = 1; return; @@ -1162,7 +1162,7 @@ sctp_queue_data_for_reasm(struct sctp_tc chk->rec.data.TSN_seq, (chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) ? 1 : 0); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_12; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_14; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); *abort_flag = 1; return; @@ -1184,7 +1184,7 @@ sctp_queue_data_for_reasm(struct sctp_tc chk->rec.data.stream_number, chk->rec.data.stream_seq); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_13; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_15; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); *abort_flag = 1; return; @@ -1476,7 +1476,7 @@ sctp_process_a_data_chunk(struct sctp_tc asoc->strmin[strmno].last_sequence_delivered, tsn, strmno, strmseq); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_14; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_16; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); *abort_flag = 1; return (0); @@ -1713,7 +1713,7 @@ failed_pdapi_express_del: snprintf(msg, sizeof(msg), "Reas. queue emtpy, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", tsn, strmno, strmseq); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_15; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_17; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); *abort_flag = 1; if (last_chunk) { @@ -1732,7 +1732,7 @@ failed_pdapi_express_del: snprintf(msg, sizeof(msg), "PD ongoing, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", tsn, strmno, strmseq); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_16; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_18; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); *abort_flag = 1; if (last_chunk) { @@ -1761,7 +1761,7 @@ failed_pdapi_express_del: snprintf(msg, sizeof(msg), "No PD ongoing, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", tsn, strmno, strmseq); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_17; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_19; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); *abort_flag = 1; if (last_chunk) { @@ -2159,7 +2159,8 @@ sctp_sack_check(struct sctp_tcb *stcb, i */ if (SCTP_OS_TIMER_PENDING(&stcb->asoc.dack_timer.timer)) { sctp_timer_stop(SCTP_TIMER_TYPE_RECV, - stcb->sctp_ep, stcb, NULL, SCTP_FROM_SCTP_INDATA + SCTP_LOC_18); + stcb->sctp_ep, stcb, NULL, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_20); } sctp_send_shutdown(stcb, ((stcb->asoc.alternate) ? stcb->asoc.alternate : stcb->asoc.primary_destination)); @@ -2382,7 +2383,7 @@ sctp_process_data(struct mbuf **mm, int snprintf(msg, sizeof(msg), "DATA chunk of length %d", chk_length); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_19; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_21; sctp_abort_association(inp, stcb, m, iphlen, src, dst, sh, op_err, mflowtype, mflowid, @@ -2397,7 +2398,7 @@ sctp_process_data(struct mbuf **mm, int struct mbuf *op_err; op_err = sctp_generate_no_user_data_cause(ch->dp.tsn); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_19; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_22; sctp_abort_association(inp, stcb, m, iphlen, src, dst, sh, op_err, mflowtype, mflowid, @@ -3628,7 +3629,7 @@ sctp_express_handle_sack(struct sctp_tcb snprintf(msg, sizeof(msg), "Cum ack %8.8x greater or equal than TSN %8.8x", cumack, send_s); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_25; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_23; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); return; } @@ -3824,7 +3825,9 @@ sctp_express_handle_sack(struct sctp_tcb } if (net->dest_state & SCTP_ADDR_PF) { net->dest_state &= ~SCTP_ADDR_PF; - sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_3); + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, + stcb->sctp_ep, stcb, net, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_24); sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net); asoc->cc_functions.sctp_cwnd_update_exit_pf(stcb, net); /* Done with this net */ @@ -3910,7 +3913,7 @@ again: } else if (SCTP_OS_TIMER_PENDING(&net->rxt_timer.timer)) { sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, net, - SCTP_FROM_SCTP_INDATA + SCTP_LOC_22); + SCTP_FROM_SCTP_INDATA + SCTP_LOC_25); } } } @@ -3984,7 +3987,7 @@ again: *abort_now = 1; /* XXX */ op_err = sctp_generate_cause(SCTP_CAUSE_USER_INITIATED_ABT, ""); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_24; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_26; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); } else { struct sctp_nets *netp; @@ -4197,7 +4200,7 @@ sctp_handle_sack(struct mbuf *m, int off snprintf(msg, sizeof(msg), "Cum ack %8.8x greater or equal than TSN %8.8x", cum_ack, send_s); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_25; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_27; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); return; } @@ -4229,7 +4232,7 @@ sctp_handle_sack(struct mbuf *m, int off /* stop any timers */ TAILQ_FOREACH(net, &asoc->nets, sctp_next) { sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, - stcb, net, SCTP_FROM_SCTP_INDATA + SCTP_LOC_26); + stcb, net, SCTP_FROM_SCTP_INDATA + SCTP_LOC_28); net->partial_bytes_acked = 0; net->flight_size = 0; } @@ -4434,14 +4437,14 @@ sctp_handle_sack(struct mbuf *m, int off if (net->new_pseudo_cumack) sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, net, - SCTP_FROM_SCTP_INDATA + SCTP_LOC_27); + SCTP_FROM_SCTP_INDATA + SCTP_LOC_29); } } else { if (accum_moved) { TAILQ_FOREACH(net, &asoc->nets, sctp_next) { sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, - stcb, net, SCTP_FROM_SCTP_INDATA + SCTP_LOC_28); + stcb, net, SCTP_FROM_SCTP_INDATA + SCTP_LOC_30); } } } @@ -4614,7 +4617,9 @@ sctp_handle_sack(struct mbuf *m, int off } if (net->dest_state & SCTP_ADDR_PF) { net->dest_state &= ~SCTP_ADDR_PF; - sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_3); + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, + stcb->sctp_ep, stcb, net, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_31); sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net); asoc->cc_functions.sctp_cwnd_update_exit_pf(stcb, net); /* Done with this net */ @@ -4637,7 +4642,8 @@ sctp_handle_sack(struct mbuf *m, int off TAILQ_FOREACH(net, &asoc->nets, sctp_next) { /* stop all timers */ sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, - stcb, net, SCTP_FROM_SCTP_INDATA + SCTP_LOC_30); + stcb, net, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_32); net->flight_size = 0; net->partial_bytes_acked = 0; } @@ -4693,7 +4699,7 @@ sctp_handle_sack(struct mbuf *m, int off *abort_now = 1; /* XXX */ op_err = sctp_generate_cause(SCTP_CAUSE_USER_INITIATED_ABT, ""); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_31; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_33; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); return; } else { @@ -4845,7 +4851,7 @@ again: } else if (SCTP_OS_TIMER_PENDING(&net->rxt_timer.timer)) { sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, net, - SCTP_FROM_SCTP_INDATA + SCTP_LOC_22); + SCTP_FROM_SCTP_INDATA + SCTP_LOC_34); } } } @@ -5135,7 +5141,7 @@ sctp_handle_forward_tsn(struct sctp_tcb "New cum ack %8.8x too high, highest TSN %8.8x", new_cum_tsn, asoc->highest_tsn_inside_map); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_33; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_35; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); return; } Modified: head/sys/netinet/sctp_input.c ============================================================================== --- head/sys/netinet/sctp_input.c Thu May 28 15:58:41 2015 (r283649) +++ head/sys/netinet/sctp_input.c Thu May 28 16:00:23 2015 (r283650) @@ -513,7 +513,7 @@ sctp_process_init_ack(struct mbuf *m, in * primary. */ sctp_timer_stop(SCTP_TIMER_TYPE_INIT, stcb->sctp_ep, stcb, - asoc->primary_destination, SCTP_FROM_SCTP_INPUT + SCTP_LOC_4); + asoc->primary_destination, SCTP_FROM_SCTP_INPUT + SCTP_LOC_3); /* calculate the RTO */ net->RTO = sctp_calculate_rto(stcb, asoc, net, &asoc->time_entered, sctp_align_safe_nocopy, @@ -633,7 +633,8 @@ sctp_handle_heartbeat_ack(struct sctp_he } sctp_ulp_notify(SCTP_NOTIFY_INTERFACE_CONFIRMED, stcb, 0, (void *)r_net, SCTP_SO_NOT_LOCKED); - sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, r_net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_3); + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, + r_net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_4); sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, r_net); } old_error_counter = r_net->error_count; @@ -654,7 +655,8 @@ sctp_handle_heartbeat_ack(struct sctp_he stcb->asoc.cc_functions.sctp_cwnd_update_exit_pf(stcb, net); } if (old_error_counter > 0) { - sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, r_net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_3); + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, + stcb, r_net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_5); sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, r_net); } if (r_net == stcb->asoc.primary_destination) { @@ -673,7 +675,9 @@ sctp_handle_heartbeat_ack(struct sctp_he sctp_is_mobility_feature_on(stcb->sctp_ep, SCTP_MOBILITY_PRIM_DELETED)) { - sctp_timer_stop(SCTP_TIMER_TYPE_PRIM_DELETED, stcb->sctp_ep, stcb, NULL, SCTP_FROM_SCTP_TIMER + SCTP_LOC_7); + sctp_timer_stop(SCTP_TIMER_TYPE_PRIM_DELETED, + stcb->sctp_ep, stcb, NULL, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_6); if (sctp_is_mobility_feature_on(stcb->sctp_ep, SCTP_MOBILITY_FASTHANDOFF)) { sctp_assoc_immediate_retrans(stcb, @@ -795,7 +799,8 @@ sctp_handle_abort(struct sctp_abort_chun error = 0; } /* stop any receive timers */ - sctp_timer_stop(SCTP_TIMER_TYPE_RECV, stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_6); + sctp_timer_stop(SCTP_TIMER_TYPE_RECV, stcb->sctp_ep, stcb, net, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_7); /* notify user of the abort and clean up... */ sctp_abort_notification(stcb, 1, error, abort, SCTP_SO_NOT_LOCKED); /* free the tcb */ @@ -817,7 +822,7 @@ sctp_handle_abort(struct sctp_abort_chun #endif stcb->asoc.state |= SCTP_STATE_WAS_ABORTED; (void)sctp_free_assoc(stcb->sctp_ep, stcb, SCTP_NORMAL_PROC, - SCTP_FROM_SCTP_INPUT + SCTP_LOC_6); + SCTP_FROM_SCTP_INPUT + SCTP_LOC_8); #if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) SCTP_SOCKET_UNLOCK(so, 1); #endif @@ -932,7 +937,8 @@ sctp_handle_shutdown(struct sctp_shutdow * stop the shutdown timer, since we WILL move to * SHUTDOWN-ACK-SENT. */ - sctp_timer_stop(SCTP_TIMER_TYPE_SHUTDOWN, stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_8); + sctp_timer_stop(SCTP_TIMER_TYPE_SHUTDOWN, stcb->sctp_ep, stcb, + net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_9); } /* Now is there unsent data on a stream somewhere? */ some_on_streamwheel = sctp_is_there_unsent_data(stcb, SCTP_SO_NOT_LOCKED); @@ -1025,7 +1031,8 @@ sctp_handle_shutdown_ack(struct sctp_shu } #endif /* stop the timer */ - sctp_timer_stop(SCTP_TIMER_TYPE_SHUTDOWN, stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_9); + sctp_timer_stop(SCTP_TIMER_TYPE_SHUTDOWN, stcb->sctp_ep, stcb, net, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_10); /* send SHUTDOWN-COMPLETE */ sctp_send_shutdown_complete(stcb, net, 0); /* notify upper layer protocol */ @@ -1046,7 +1053,7 @@ sctp_handle_shutdown_ack(struct sctp_shu atomic_subtract_int(&stcb->asoc.refcnt, 1); #endif (void)sctp_free_assoc(stcb->sctp_ep, stcb, SCTP_NORMAL_PROC, - SCTP_FROM_SCTP_INPUT + SCTP_LOC_10); + SCTP_FROM_SCTP_INPUT + SCTP_LOC_11); #if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) SCTP_SOCKET_UNLOCK(so, 1); #endif @@ -1206,7 +1213,7 @@ sctp_handle_error(struct sctp_chunkhdr * atomic_subtract_int(&stcb->asoc.refcnt, 1); #endif (void)sctp_free_assoc(stcb->sctp_ep, stcb, SCTP_NORMAL_PROC, - SCTP_FROM_SCTP_INPUT + SCTP_LOC_11); + SCTP_FROM_SCTP_INPUT + SCTP_LOC_12); #if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) SCTP_SOCKET_UNLOCK(so, 1); #endif @@ -1558,9 +1565,12 @@ sctp_process_cookie_existing(struct mbuf return (NULL); } /* we have already processed the INIT so no problem */ - sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, - net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_12); - sctp_timer_stop(SCTP_TIMER_TYPE_INIT, inp, stcb, net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_13); + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, inp, + stcb, net, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_13); + sctp_timer_stop(SCTP_TIMER_TYPE_INIT, inp, + stcb, net, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_14); /* update current state */ if (SCTP_GET_STATE(asoc) == SCTP_STATE_COOKIE_ECHOED) SCTP_STAT_INCR_COUNTER32(sctps_activeestab); @@ -1720,7 +1730,8 @@ sctp_process_cookie_existing(struct mbuf } if (how_indx < sizeof(asoc->cookie_how)) asoc->cookie_how[how_indx] = 8; - sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_14); + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_15); sctp_stop_all_cookie_timers(stcb); /* * since we did not send a HB make sure we don't double @@ -1865,8 +1876,10 @@ sctp_process_cookie_existing(struct mbuf /* temp code */ if (how_indx < sizeof(asoc->cookie_how)) asoc->cookie_how[how_indx] = 12; - sctp_timer_stop(SCTP_TIMER_TYPE_INIT, inp, stcb, net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_15); - sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_16); + sctp_timer_stop(SCTP_TIMER_TYPE_INIT, inp, stcb, net, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_16); + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_17); /* notify upper layer */ *notification = SCTP_NOTIFY_ASSOC_RESTART; @@ -2134,7 +2147,7 @@ sctp_process_cookie_new(struct mbuf *m, SCTP_TCB_LOCK(stcb); #endif (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, - SCTP_FROM_SCTP_INPUT + SCTP_LOC_16); + SCTP_FROM_SCTP_INPUT + SCTP_LOC_18); #if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) SCTP_SOCKET_UNLOCK(so, 1); #endif @@ -2165,7 +2178,8 @@ sctp_process_cookie_new(struct mbuf *m, SCTP_SOCKET_LOCK(so, 1); SCTP_TCB_LOCK(stcb); #endif - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_INPUT + SCTP_LOC_16); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_19); #if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) SCTP_SOCKET_UNLOCK(so, 1); #endif @@ -2182,7 +2196,8 @@ sctp_process_cookie_new(struct mbuf *m, SCTP_SOCKET_LOCK(so, 1); SCTP_TCB_LOCK(stcb); #endif - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_INPUT + SCTP_LOC_17); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_20); #if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) SCTP_SOCKET_UNLOCK(so, 1); #endif @@ -2211,7 +2226,8 @@ sctp_process_cookie_new(struct mbuf *m, SCTP_SOCKET_LOCK(so, 1); SCTP_TCB_LOCK(stcb); #endif - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_INPUT + SCTP_LOC_18); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_21); #if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) SCTP_SOCKET_UNLOCK(so, 1); #endif @@ -2271,7 +2287,8 @@ sctp_process_cookie_new(struct mbuf *m, SCTP_SOCKET_LOCK(so, 1); SCTP_TCB_LOCK(stcb); #endif - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_INPUT + SCTP_LOC_19); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_22); #if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) SCTP_SOCKET_UNLOCK(so, 1); #endif @@ -2741,7 +2758,8 @@ sctp_handle_cookie_echo(struct mbuf *m, SCTP_TCB_LOCK((*stcb)); atomic_subtract_int(&(*stcb)->asoc.refcnt, 1); #endif - (void)sctp_free_assoc(*inp_p, *stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_INPUT + SCTP_LOC_20); + (void)sctp_free_assoc(*inp_p, *stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_23); #if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) SCTP_SOCKET_UNLOCK(pcb_so, 1); #endif @@ -3173,7 +3191,8 @@ sctp_handle_shutdown_complete(struct sct } #endif /* stop the timer */ - sctp_timer_stop(SCTP_TIMER_TYPE_SHUTDOWNACK, stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_22); + sctp_timer_stop(SCTP_TIMER_TYPE_SHUTDOWNACK, stcb->sctp_ep, stcb, net, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_24); SCTP_STAT_INCR_COUNTER32(sctps_shutdown); /* free the TCB */ SCTPDBG(SCTP_DEBUG_INPUT2, @@ -3186,7 +3205,8 @@ sctp_handle_shutdown_complete(struct sct SCTP_TCB_LOCK(stcb); atomic_subtract_int(&stcb->asoc.refcnt, 1); #endif - (void)sctp_free_assoc(stcb->sctp_ep, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_INPUT + SCTP_LOC_23); + (void)sctp_free_assoc(stcb->sctp_ep, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_25); #if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) SCTP_SOCKET_UNLOCK(so, 1); #endif @@ -3294,7 +3314,8 @@ process_chunk_drop(struct sctp_tcb *stcb /* restart the timer */ sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, - stcb, tp1->whoTo, SCTP_FROM_SCTP_INPUT + SCTP_LOC_24); + stcb, tp1->whoTo, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_26); sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, tp1->whoTo); @@ -3362,7 +3383,8 @@ process_chunk_drop(struct sctp_tcb *stcb * this, otherwise we let the timer fire. */ sctp_timer_stop(SCTP_TIMER_TYPE_INIT, stcb->sctp_ep, - stcb, net, SCTP_FROM_SCTP_INPUT + SCTP_LOC_25); + stcb, net, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_27); sctp_send_initiate(stcb->sctp_ep, stcb, SCTP_SO_NOT_LOCKED); } break; @@ -3539,7 +3561,8 @@ sctp_clean_up_stream_reset(struct sctp_t } asoc = &stcb->asoc; - sctp_timer_stop(SCTP_TIMER_TYPE_STRRESET, stcb->sctp_ep, stcb, chk->whoTo, SCTP_FROM_SCTP_INPUT + SCTP_LOC_26); + sctp_timer_stop(SCTP_TIMER_TYPE_STRRESET, stcb->sctp_ep, stcb, + chk->whoTo, SCTP_FROM_SCTP_INPUT + SCTP_LOC_28); TAILQ_REMOVE(&asoc->control_send_queue, chk, sctp_next); @@ -4783,7 +4806,8 @@ process_control_chunks: SCTP_TCB_LOCK(stcb); atomic_subtract_int(&stcb->asoc.refcnt, 1); #endif - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_INPUT + SCTP_LOC_27); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_29); #if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) SCTP_SOCKET_UNLOCK(so, 1); #endif @@ -5203,7 +5227,8 @@ process_control_chunks: SCTP_TCB_LOCK(stcb); atomic_subtract_int(&stcb->asoc.refcnt, 1); #endif - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_INPUT + SCTP_LOC_27); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_30); #if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) SCTP_SOCKET_UNLOCK(so, 1); #endif @@ -5381,7 +5406,8 @@ process_control_chunks: SCTP_TCB_LOCK(stcb); atomic_subtract_int(&stcb->asoc.refcnt, 1); #endif - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_INPUT + SCTP_LOC_29); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_INPUT + SCTP_LOC_31); #if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) SCTP_SOCKET_UNLOCK(so, 1); #endif Modified: head/sys/netinet/sctp_output.c ============================================================================== --- head/sys/netinet/sctp_output.c Thu May 28 15:58:41 2015 (r283649) +++ head/sys/netinet/sctp_output.c Thu May 28 16:00:23 2015 (r283650) @@ -8327,7 +8327,8 @@ again_one_more_time: /* turn off the timer */ if (SCTP_OS_TIMER_PENDING(&stcb->asoc.dack_timer.timer)) { sctp_timer_stop(SCTP_TIMER_TYPE_RECV, - inp, stcb, net, SCTP_FROM_SCTP_OUTPUT + SCTP_LOC_1); + inp, stcb, net, + SCTP_FROM_SCTP_OUTPUT + SCTP_LOC_1); } } ctl_cnt++; @@ -9780,7 +9781,7 @@ one_chunk_around: * t3-expiring. */ sctp_timer_stop(SCTP_TIMER_TYPE_SEND, inp, stcb, net, - SCTP_FROM_SCTP_OUTPUT + SCTP_LOC_4); + SCTP_FROM_SCTP_OUTPUT + SCTP_LOC_2); sctp_timer_start(SCTP_TIMER_TYPE_SEND, inp, stcb, net); } } @@ -10387,7 +10388,8 @@ sctp_send_sack(struct sctp_tcb *stcb, in /* No memory so we drop the idea, and set a timer */ if (stcb->asoc.delayed_ack) { sctp_timer_stop(SCTP_TIMER_TYPE_RECV, - stcb->sctp_ep, stcb, NULL, SCTP_FROM_SCTP_OUTPUT + SCTP_LOC_5); + stcb->sctp_ep, stcb, NULL, + SCTP_FROM_SCTP_OUTPUT + SCTP_LOC_3); sctp_timer_start(SCTP_TIMER_TYPE_RECV, stcb->sctp_ep, stcb, NULL); } else { @@ -10455,7 +10457,8 @@ sctp_send_sack(struct sctp_tcb *stcb, in /* sa_ignore NO_NULL_CHK */ if (stcb->asoc.delayed_ack) { sctp_timer_stop(SCTP_TIMER_TYPE_RECV, - stcb->sctp_ep, stcb, NULL, SCTP_FROM_SCTP_OUTPUT + SCTP_LOC_6); + stcb->sctp_ep, stcb, NULL, + SCTP_FROM_SCTP_OUTPUT + SCTP_LOC_4); sctp_timer_start(SCTP_TIMER_TYPE_RECV, stcb->sctp_ep, stcb, NULL); } else { @@ -12424,7 +12427,8 @@ sctp_lower_sosend(struct socket *so, if (control) { if (sctp_process_cmsgs_for_init(stcb, control, &error)) { - sctp_free_assoc(inp, stcb, SCTP_PCBFREE_FORCE, SCTP_FROM_SCTP_OUTPUT + SCTP_LOC_7); + sctp_free_assoc(inp, stcb, SCTP_PCBFREE_FORCE, + SCTP_FROM_SCTP_OUTPUT + SCTP_LOC_5); hold_tcblock = 0; stcb = NULL; goto out_unlocked; Modified: head/sys/netinet/sctp_pcb.c ============================================================================== --- head/sys/netinet/sctp_pcb.c Thu May 28 15:58:41 2015 (r283649) +++ head/sys/netinet/sctp_pcb.c Thu May 28 16:00:23 2015 (r283650) @@ -3544,7 +3544,8 @@ sctp_inpcb_free(struct sctp_inpcb *inp, (SCTP_GET_STATE(&asoc->asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) { SCTP_STAT_DECR_GAUGE32(sctps_currestab); } - if (sctp_free_assoc(inp, asoc, SCTP_PCBFREE_FORCE, SCTP_FROM_SCTP_PCB + SCTP_LOC_8) == 0) { + if (sctp_free_assoc(inp, asoc, SCTP_PCBFREE_FORCE, + SCTP_FROM_SCTP_PCB + SCTP_LOC_8) == 0) { cnt++; } } Modified: head/sys/netinet/sctp_timer.c ============================================================================== --- head/sys/netinet/sctp_timer.c Thu May 28 15:58:41 2015 (r283649) +++ head/sys/netinet/sctp_timer.c Thu May 28 16:00:23 2015 (r283650) @@ -110,7 +110,9 @@ sctp_threshold_management(struct sctp_in net->dest_state |= SCTP_ADDR_PF; net->last_active = sctp_get_tick_count(); sctp_send_hb(stcb, net, SCTP_SO_NOT_LOCKED); - sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_TIMER + SCTP_LOC_3); + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, + stcb->sctp_ep, stcb, net, + SCTP_FROM_SCTP_TIMER + SCTP_LOC_1); sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net); } } @@ -153,7 +155,7 @@ sctp_threshold_management(struct sctp_in op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, "Association error counter exceeded"); - inp->last_abort_code = SCTP_FROM_SCTP_TIMER + SCTP_LOC_1; + inp->last_abort_code = SCTP_FROM_SCTP_TIMER + SCTP_LOC_2; sctp_abort_an_association(inp, stcb, op_err, SCTP_SO_NOT_LOCKED); return (1); } @@ -1046,7 +1048,7 @@ sctp_cookie_timer(struct sctp_inpcb *inp op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, "Cookie timer expired, but no cookie"); - inp->last_abort_code = SCTP_FROM_SCTP_TIMER + SCTP_LOC_4; + inp->last_abort_code = SCTP_FROM_SCTP_TIMER + SCTP_LOC_3; sctp_abort_an_association(inp, stcb, op_err, SCTP_SO_NOT_LOCKED); } else { #ifdef INVARIANTS Modified: head/sys/netinet/sctp_usrreq.c ============================================================================== --- head/sys/netinet/sctp_usrreq.c Thu May 28 15:58:41 2015 (r283649) +++ head/sys/netinet/sctp_usrreq.c Thu May 28 16:00:23 2015 (r283650) @@ -288,7 +288,8 @@ sctp_notify(struct sctp_inpcb *inp, SCTP_TCB_LOCK(stcb); atomic_subtract_int(&stcb->asoc.refcnt, 1); #endif - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_USRREQ + SCTP_LOC_2); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_2); #if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) SCTP_SOCKET_UNLOCK(so, 1); /* SCTP_TCB_UNLOCK(stcb); MT: I think this is not needed. */ @@ -777,7 +778,8 @@ sctp_disconnect(struct socket *so) (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) { SCTP_STAT_DECR_GAUGE32(sctps_currestab); } - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_USRREQ + SCTP_LOC_3); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_3); /* No unlock tcb assoc is gone */ return (0); } @@ -862,7 +864,8 @@ sctp_disconnect(struct socket *so) SCTP_STAT_DECR_GAUGE32(sctps_currestab); } SCTP_INP_RUNLOCK(inp); - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_USRREQ + SCTP_LOC_5); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_5); return (0); } else { sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_CLOSING, SCTP_SO_LOCKED); @@ -1562,7 +1565,8 @@ sctp_do_connect_x(struct socket *so, str sctp_connectx_helper_add(stcb, sa, (totaddr - 1), &error); /* Fill in the return id */ if (error) { - (void)sctp_free_assoc(inp, stcb, SCTP_PCBFREE_FORCE, SCTP_FROM_SCTP_USRREQ + SCTP_LOC_6); + (void)sctp_free_assoc(inp, stcb, SCTP_PCBFREE_FORCE, + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_7); goto out_now; } a_id = (sctp_assoc_t *) optval; @@ -4785,7 +4789,7 @@ sctp_setopt(struct socket *so, int optna (void)SCTP_GETTIME_TIMEVAL(&stcb->asoc.time_entered); sctp_timer_stop(SCTP_TIMER_TYPE_INIT, inp, stcb, stcb->asoc.primary_destination, - SCTP_FROM_SCTP_USRREQ + SCTP_LOC_9); + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_8); sctp_send_initiate(inp, stcb, SCTP_SO_LOCKED); } else { /* @@ -5203,7 +5207,7 @@ sctp_setopt(struct socket *so, int optna if (!(net->dest_state & SCTP_ADDR_UNCONFIRMED) && !(net->dest_state & SCTP_ADDR_NOHB)) { sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net, - SCTP_FROM_SCTP_USRREQ + SCTP_LOC_10); + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_9); } net->dest_state |= SCTP_ADDR_NOHB; } @@ -5227,7 +5231,7 @@ sctp_setopt(struct socket *so, int optna if ((paddrp->spp_flags & SPP_PMTUD_DISABLE) && (paddrp->spp_pathmtu >= SCTP_SMALLEST_PMTU)) { if (SCTP_OS_TIMER_PENDING(&net->pmtu_timer.timer)) { sctp_timer_stop(SCTP_TIMER_TYPE_PATHMTURAISE, inp, stcb, net, - SCTP_FROM_SCTP_USRREQ + SCTP_LOC_10); + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_11); } net->dest_state |= SCTP_ADDR_NO_PMTUD; net->mtu = paddrp->spp_pathmtu + ovh; @@ -5251,7 +5255,9 @@ sctp_setopt(struct socket *so, int optna (net->error_count > net->pf_threshold)) { net->dest_state |= SCTP_ADDR_PF; sctp_send_hb(stcb, net, SCTP_SO_LOCKED); - sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_TIMER + SCTP_LOC_3); + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, + stcb->sctp_ep, stcb, net, + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_12); sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net); } } @@ -5294,7 +5300,9 @@ sctp_setopt(struct socket *so, int optna (net->error_count > net->pf_threshold)) { net->dest_state |= SCTP_ADDR_PF; sctp_send_hb(stcb, net, SCTP_SO_LOCKED); - sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_TIMER + SCTP_LOC_3); + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, + stcb->sctp_ep, stcb, net, + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_13); sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net); } } @@ -5329,7 +5337,7 @@ sctp_setopt(struct socket *so, int optna net->dest_state &= ~SCTP_ADDR_NOHB; } sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net, - SCTP_FROM_SCTP_USRREQ + SCTP_LOC_10); + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_14); sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net); } sctp_stcb_feature_off(inp, stcb, SCTP_PCB_FLAGS_DONOT_HEARTBEAT); @@ -5339,7 +5347,9 @@ sctp_setopt(struct socket *so, int optna if (!(net->dest_state & SCTP_ADDR_NOHB)) { net->dest_state |= SCTP_ADDR_NOHB; if (!(net->dest_state & SCTP_ADDR_UNCONFIRMED)) { - sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net, SCTP_FROM_SCTP_USRREQ + SCTP_LOC_10); + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, + inp, stcb, net, + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_15); } } } @@ -5349,7 +5359,7 @@ sctp_setopt(struct socket *so, int optna TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) { if (SCTP_OS_TIMER_PENDING(&net->pmtu_timer.timer)) { sctp_timer_stop(SCTP_TIMER_TYPE_PATHMTURAISE, inp, stcb, net, - SCTP_FROM_SCTP_USRREQ + SCTP_LOC_10); + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_16); } net->dest_state |= SCTP_ADDR_NO_PMTUD; net->mtu = paddrp->spp_pathmtu + ovh; @@ -6199,7 +6209,9 @@ sctp_setopt(struct socket *so, int optna (net->error_count <= net->failure_threshold)) { net->dest_state |= SCTP_ADDR_PF; sctp_send_hb(stcb, net, SCTP_SO_LOCKED); - sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_TIMER + SCTP_LOC_3); + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, + stcb->sctp_ep, stcb, net, + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_17); sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net); } } @@ -6228,7 +6240,9 @@ sctp_setopt(struct socket *so, int optna (net->error_count <= net->failure_threshold)) { net->dest_state |= SCTP_ADDR_PF; sctp_send_hb(stcb, net, SCTP_SO_LOCKED); - sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_TIMER + SCTP_LOC_3); + sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, + stcb->sctp_ep, stcb, net, + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_18); sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net); } } @@ -7127,7 +7141,8 @@ sctp_accept(struct socket *so, struct so } if (stcb->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) { SCTP_TCB_LOCK(stcb); - sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_USRREQ + SCTP_LOC_7); + sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP_USRREQ + SCTP_LOC_19); } return (0); } Modified: head/sys/netinet/sctputil.c ============================================================================== --- head/sys/netinet/sctputil.c Thu May 28 15:58:41 2015 (r283649) +++ head/sys/netinet/sctputil.c Thu May 28 16:00:23 2015 (r283650) @@ -6322,14 +6322,14 @@ sctp_connectx_helper_add(struct sctp_tcb (sin->sin_addr.s_addr == INADDR_BROADCAST) || IN_MULTICAST(ntohl(sin->sin_addr.s_addr))) { SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTPUTIL, EINVAL); - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_USRREQ + SCTP_LOC_7); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTPUTIL + SCTP_LOC_7); *error = EINVAL; goto out_now; } if (sctp_add_remote_addr(stcb, sa, NULL, SCTP_DONOT_SETSCOPE, SCTP_ADDR_IS_CONFIRMED)) { /* assoc gone no un-lock */ SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTPUTIL, ENOBUFS); - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_USRREQ + SCTP_LOC_7); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTPUTIL + SCTP_LOC_8); *error = ENOBUFS; goto out_now; } @@ -6343,14 +6343,14 @@ sctp_connectx_helper_add(struct sctp_tcb if (IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr) || IN6_IS_ADDR_MULTICAST(&sin6->sin6_addr)) { SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTPUTIL, EINVAL); - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_USRREQ + SCTP_LOC_8); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTPUTIL + SCTP_LOC_9); *error = EINVAL; goto out_now; } if (sctp_add_remote_addr(stcb, sa, NULL, SCTP_DONOT_SETSCOPE, SCTP_ADDR_IS_CONFIRMED)) { /* assoc gone no un-lock */ SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTPUTIL, ENOBUFS); - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_USRREQ + SCTP_LOC_8); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTPUTIL + SCTP_LOC_10); *error = ENOBUFS; goto out_now; } Modified: head/sys/netinet6/sctp6_usrreq.c ============================================================================== --- head/sys/netinet6/sctp6_usrreq.c Thu May 28 15:58:41 2015 (r283649) +++ head/sys/netinet6/sctp6_usrreq.c Thu May 28 16:00:23 2015 (r283650) @@ -211,7 +211,8 @@ sctp6_notify_mbuf(struct sctp_inpcb *inp */ nxtsz = ntohl(icmp6->icmp6_mtu); /* Stop any PMTU timer */ - sctp_timer_stop(SCTP_TIMER_TYPE_PATHMTURAISE, inp, stcb, NULL, SCTP_FROM_SCTP6_USRREQ + SCTP_LOC_1); + sctp_timer_stop(SCTP_TIMER_TYPE_PATHMTURAISE, inp, stcb, NULL, + SCTP_FROM_SCTP6_USRREQ + SCTP_LOC_1); /* Adjust destination size limit */ if (net->mtu > nxtsz) { @@ -333,7 +334,8 @@ sctp6_notify(struct sctp_inpcb *inp, SCTP_TCB_LOCK(stcb); atomic_subtract_int(&stcb->asoc.refcnt, 1); #endif - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTP_USRREQ + SCTP_LOC_2); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTP6_USRREQ + SCTP_LOC_2); #if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) SCTP_SOCKET_UNLOCK(so, 1); /* SCTP_TCB_UNLOCK(stcb); MT: I think this is not needed. */ From owner-svn-src-all@FreeBSD.ORG Thu May 28 16:18:42 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B0D8C3D7; Thu, 28 May 2015 16:18:42 +0000 (UTC) (envelope-from pkelsey@FreeBSD.org) Received: from svn.freebsd.org (svn.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 9EA6F1EC; Thu, 28 May 2015 16:18:42 +0000 (UTC) (envelope-from pkelsey@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4SGIg39010938; Thu, 28 May 2015 16:18:42 GMT (envelope-from pkelsey@FreeBSD.org) Received: (from pkelsey@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4SGIgme010937; Thu, 28 May 2015 16:18:42 GMT (envelope-from pkelsey@FreeBSD.org) Message-Id: <201505281618.t4SGIgme010937@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: pkelsey set sender to pkelsey@FreeBSD.org using -f From: Patrick Kelsey Date: Thu, 28 May 2015 16:18:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283652 - head/share/man/man3 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 16:18:42 -0000 Author: pkelsey Date: Thu May 28 16:18:41 2015 New Revision: 283652 URL: https://svnweb.freebsd.org/changeset/base/283652 Log: Provide an unambiguous description of the potential hazard in calling pthread_setspecific(3) from a key destructor. Reviewed by: jhb Approved by: jmallett (mentor) MFC after: 3 days Modified: head/share/man/man3/pthread_setspecific.3 Modified: head/share/man/man3/pthread_setspecific.3 ============================================================================== --- head/share/man/man3/pthread_setspecific.3 Thu May 28 16:16:29 2015 (r283651) +++ head/share/man/man3/pthread_setspecific.3 Thu May 28 16:18:41 2015 (r283652) @@ -67,7 +67,10 @@ is undefined. The .Fn pthread_setspecific function may be called from a thread-specific data destructor function, -however this may result in lost storage or infinite loops. +however this may result in lost storage or infinite loops if doing so +causes non-NULL key values to remain after +.Bq PTHREAD_DESTRUCTOR_ITERATIONS +iterations of destructor calls have been made. .Sh RETURN VALUES If successful, the .Fn pthread_setspecific From owner-svn-src-all@FreeBSD.ORG Thu May 28 16:23:57 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2FB42603; Thu, 28 May 2015 16:23:57 +0000 (UTC) (envelope-from ricera10@gmail.com) Received: from mail-ig0-f178.google.com (mail-ig0-f178.google.com [209.85.213.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id EFA8061C; Thu, 28 May 2015 16:23:56 +0000 (UTC) (envelope-from ricera10@gmail.com) Received: by igbpi8 with SMTP id pi8so118188399igb.0; Thu, 28 May 2015 09:23:50 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-type; bh=O7e9tre+gbbwuSRaTH3pm5qusuNwdpWAp3SEc9K9rgE=; b=ffCj3FtydZUt8RYrs9LDb2lM3PCCwQs6/Tuit4GfyzbFJGqc2bnCZ37xRI/7rFR/JC uAO8Rklgo4DrkYDd41cmXfGdm8fmN33hozm2Gtah6gWt832E8F+MFGw5o0ExrrfYXfff Zd/UnLM6QuueVwXmM7cGmx0C1NDOCza5QP7QxEuFSFfa1kQxdi5McHrjOF7h1jfuw02Q zCME0uhgonF9CD2lUZU6286dIjy3tvKs6jYkHG17bCUzZOZT1VGDV7lZPM8cgrf2Tk4q g3pgwrKPjdDSkIkIpLRjbegjFICPXdMYSWwagwOsht4s/Kdv6nSMp3s5B7qqoKK+Fnxi tugA== X-Received: by 10.42.176.8 with SMTP id bc8mr9900826icb.22.1432830230268; Thu, 28 May 2015 09:23:50 -0700 (PDT) Received: from mail-ie0-f172.google.com (mail-ie0-f172.google.com. [209.85.223.172]) by mx.google.com with ESMTPSA id u35sm2094627iou.7.2015.05.28.09.23.49 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 28 May 2015 09:23:50 -0700 (PDT) Received: by iebgx4 with SMTP id gx4so42421600ieb.0; Thu, 28 May 2015 09:23:49 -0700 (PDT) X-Received: by 10.107.152.14 with SMTP id a14mr4497055ioe.59.1432830229782; Thu, 28 May 2015 09:23:49 -0700 (PDT) MIME-Version: 1.0 References: <201505271744.t4RHiC04024525@svn.freebsd.org> <1987595.JGalSDZ3Rh@ralph.baldwin.cx> In-Reply-To: <1987595.JGalSDZ3Rh@ralph.baldwin.cx> From: Eric Joyner Date: Thu, 28 May 2015 16:23:49 +0000 Message-ID: Subject: Re: svn commit: r283620 - in stable/10/sys: amd64/conf conf dev/ixgbe modules modules/ix modules/ixv To: John Baldwin Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Content-Type: text/plain; charset=UTF-8 X-Content-Filtered-By: Mailman/MimeDel 2.1.20 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 16:23:57 -0000 Ok; I'm working on it now. I've implemented your recommendation for an ixgbe stub that loads both if_ix and if_ixv, but Jack offered an alternative of just letting sys/dev/ixgbe/Makefile make an if_ixgbe module that combines if_ix and if_ixv. Looking at conf files for other architectures, it sounds like it would be a better idea to just do that for stable/10, and completely remove the ix and ixv Makefiles and module directories. I don't think anyone really cares to have a separate if_ix and if_ixv modules over just one if_ixgbe module. On Thu, May 28, 2015 at 8:49 AM John Baldwin wrote: > On Wednesday, May 27, 2015 05:44:12 PM Eric Joyner wrote: > > Author: erj > > Date: Wed May 27 17:44:11 2015 > > New Revision: 283620 > > URL: https://svnweb.freebsd.org/changeset/base/283620 > > > > Log: > > MFC ixgbe commits for 10.2: > > > > - r280182 - Split the driver into independent pf/vf loadables > > - r280197 - Resolve build issues > > - r280204 - Fix multiple same-name devclasses > > - r280228 - Fix i386 LINT build issues / remove unused variable > > - r280252 - Fix building ixgbe with gcc > > - r280962 - Make changes to busdma code similar to r257541 > > - r281772 & r281773 - Remove unused variable > > - partial r282280 - stats counter update (ix-only) > > - r282289 - Add X550 support > > - r282290 - Add X550 makefile updates > > - r282293 - Add ixgbe_x550.c to conf/files > > - r282299 - Fix gcc compile (extraneous extern declaration) > > > > Finally, add ix_txrx.c to conf/files because it's required for compile > in stable/10. > > FYI, this has broken 'make tinderbox' for all 32-bit kernels that include > ix or ixgbe: > > /usr/home/john/work/freebsd/stable/10/sys/dev/ixgbe/if_ix.c:2494:21: > error: impl > icit conversion from 'unsigned long long' to 'u_long' (aka 'unsigned > long') chan > ges value from 10000000000 to 1410065408 [-Werror,-Wconstant-conversion] > ifp->if_baudrate = IF_Gbps(10); > ~ ^~~~~~~~~~~ > /usr/home/john/work/freebsd/stable/10/sys/net/if.h:187:21: note: expanded > from m > acro 'IF_Gbps' > #define IF_Gbps(x) (IF_Mbps((x) * 1000)) /* gigabits/sec. */ > ^~~~~~~~~~~~~~~~~~~ > /usr/home/john/work/freebsd/stable/10/sys/net/if.h:186:21: note: expanded > from m > acro 'IF_Mbps' > #define IF_Mbps(x) (IF_Kbps((x) * 1000)) /* megabits/sec. */ > ^~~~~~~~~~~~~~~~~~~ > /usr/home/john/work/freebsd/stable/10/sys/net/if.h:185:36: note: expanded > from macro 'IF_Kbps' > #define IF_Kbps(x) ((uintmax_t)(x) * 1000) /* kilobits/sec. */ > ~~~~~~~~~~~~~~~^~~~~~ > 1 error generated. > *** [if_ix.o] Error code 1 > > On 10.x you need to use if_initbaudrate() instead of setting if_baudrate > directly. > > -- > John Baldwin > > From owner-svn-src-all@FreeBSD.ORG Thu May 28 16:27:13 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 63CDF775; Thu, 28 May 2015 16:27:13 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 3A2CD648; Thu, 28 May 2015 16:27:13 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (pool-173-54-116-245.nwrknj.fios.verizon.net [173.54.116.245]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 2B65BB91F; Thu, 28 May 2015 12:27:12 -0400 (EDT) From: John Baldwin To: Eric Joyner Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: Re: svn commit: r283620 - in stable/10/sys: amd64/conf conf dev/ixgbe modules modules/ix modules/ixv Date: Thu, 28 May 2015 12:27:10 -0400 Message-ID: <4977499.IGj0rLHqPU@ralph.baldwin.cx> User-Agent: KMail/4.14.3 (FreeBSD/10.1-STABLE; KDE/4.14.3; amd64; ; ) In-Reply-To: References: <201505271744.t4RHiC04024525@svn.freebsd.org> <1987595.JGalSDZ3Rh@ralph.baldwin.cx> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Thu, 28 May 2015 12:27:12 -0400 (EDT) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 16:27:13 -0000 On Thursday, May 28, 2015 04:23:49 PM Eric Joyner wrote: > Ok; I'm working on it now. I've implemented your recommendation for an > ixgbe stub that loads both if_ix and if_ixv, but Jack offered an > alternative of just letting sys/dev/ixgbe/Makefile make an if_ixgbe module > that combines if_ix and if_ixv. Looking at conf files for other > architectures, it sounds like it would be a better idea to just do that for > stable/10, and completely remove the ix and ixv Makefiles and module > directories. I don't think anyone really cares to have a separate if_ix and > if_ixv modules over just one if_ixgbe module. I probably prefer that you do actually have if_ix and if_ixv. There's always the ifconfig hack for NIC drivers that wants to autoload if_.ko to consider. I think it is also more friendly to users if 10 supports both the old and new models as it gives them more time to transition. However, reverting back to a single if_ixgbe.ko is also ok. > On Thu, May 28, 2015 at 8:49 AM John Baldwin wrote: > > > On Wednesday, May 27, 2015 05:44:12 PM Eric Joyner wrote: > > > Author: erj > > > Date: Wed May 27 17:44:11 2015 > > > New Revision: 283620 > > > URL: https://svnweb.freebsd.org/changeset/base/283620 > > > > > > Log: > > > MFC ixgbe commits for 10.2: > > > > > > - r280182 - Split the driver into independent pf/vf loadables > > > - r280197 - Resolve build issues > > > - r280204 - Fix multiple same-name devclasses > > > - r280228 - Fix i386 LINT build issues / remove unused variable > > > - r280252 - Fix building ixgbe with gcc > > > - r280962 - Make changes to busdma code similar to r257541 > > > - r281772 & r281773 - Remove unused variable > > > - partial r282280 - stats counter update (ix-only) > > > - r282289 - Add X550 support > > > - r282290 - Add X550 makefile updates > > > - r282293 - Add ixgbe_x550.c to conf/files > > > - r282299 - Fix gcc compile (extraneous extern declaration) > > > > > > Finally, add ix_txrx.c to conf/files because it's required for compile > > in stable/10. > > > > FYI, this has broken 'make tinderbox' for all 32-bit kernels that include > > ix or ixgbe: > > > > /usr/home/john/work/freebsd/stable/10/sys/dev/ixgbe/if_ix.c:2494:21: > > error: impl > > icit conversion from 'unsigned long long' to 'u_long' (aka 'unsigned > > long') chan > > ges value from 10000000000 to 1410065408 [-Werror,-Wconstant-conversion] > > ifp->if_baudrate = IF_Gbps(10); > > ~ ^~~~~~~~~~~ > > /usr/home/john/work/freebsd/stable/10/sys/net/if.h:187:21: note: expanded > > from m > > acro 'IF_Gbps' > > #define IF_Gbps(x) (IF_Mbps((x) * 1000)) /* gigabits/sec. */ > > ^~~~~~~~~~~~~~~~~~~ > > /usr/home/john/work/freebsd/stable/10/sys/net/if.h:186:21: note: expanded > > from m > > acro 'IF_Mbps' > > #define IF_Mbps(x) (IF_Kbps((x) * 1000)) /* megabits/sec. */ > > ^~~~~~~~~~~~~~~~~~~ > > /usr/home/john/work/freebsd/stable/10/sys/net/if.h:185:36: note: expanded > > from macro 'IF_Kbps' > > #define IF_Kbps(x) ((uintmax_t)(x) * 1000) /* kilobits/sec. */ > > ~~~~~~~~~~~~~~~^~~~~~ > > 1 error generated. > > *** [if_ix.o] Error code 1 > > > > On 10.x you need to use if_initbaudrate() instead of setting if_baudrate > > directly. > > > > -- > > John Baldwin > > > > -- John Baldwin From owner-svn-src-all@FreeBSD.ORG Thu May 28 16:39:22 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id EDF2EE05; Thu, 28 May 2015 16:39:22 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 D00908FE; Thu, 28 May 2015 16:39:22 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4SGdMc2021333; Thu, 28 May 2015 16:39:22 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4SGdMUU021332; Thu, 28 May 2015 16:39:22 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505281639.t4SGdMUU021332@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Thu, 28 May 2015 16:39:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283654 - head/sys/netinet X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 16:39:23 -0000 Author: tuexen Date: Thu May 28 16:39:22 2015 New Revision: 283654 URL: https://svnweb.freebsd.org/changeset/base/283654 Log: Some more debug info cleanup. MFC after: 3 days Modified: head/sys/netinet/sctputil.c Modified: head/sys/netinet/sctputil.c ============================================================================== --- head/sys/netinet/sctputil.c Thu May 28 16:37:28 2015 (r283653) +++ head/sys/netinet/sctputil.c Thu May 28 16:39:22 2015 (r283654) @@ -1808,7 +1808,8 @@ sctp_timeout_handler(void *t) SCTP_STAT_INCR(sctps_timoassockill); /* Can we free it yet? */ SCTP_INP_DECR_REF(inp); - sctp_timer_stop(SCTP_TIMER_TYPE_ASOCKILL, inp, stcb, NULL, SCTP_FROM_SCTPUTIL + SCTP_LOC_1); + sctp_timer_stop(SCTP_TIMER_TYPE_ASOCKILL, inp, stcb, NULL, + SCTP_FROM_SCTPUTIL + SCTP_LOC_1); #if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) so = SCTP_INP_SO(inp); atomic_add_int(&stcb->asoc.refcnt, 1); @@ -1817,7 +1818,8 @@ sctp_timeout_handler(void *t) SCTP_TCB_LOCK(stcb); atomic_subtract_int(&stcb->asoc.refcnt, 1); #endif - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTPUTIL + SCTP_LOC_2); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTPUTIL + SCTP_LOC_2); #if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) SCTP_SOCKET_UNLOCK(so, 1); #endif @@ -1837,7 +1839,8 @@ sctp_timeout_handler(void *t) * killer */ SCTP_INP_DECR_REF(inp); - sctp_timer_stop(SCTP_TIMER_TYPE_INPKILL, inp, NULL, NULL, SCTP_FROM_SCTPUTIL + SCTP_LOC_3); + sctp_timer_stop(SCTP_TIMER_TYPE_INPKILL, inp, NULL, NULL, + SCTP_FROM_SCTPUTIL + SCTP_LOC_3); sctp_inpcb_free(inp, SCTP_FREE_SHOULD_USE_ABORT, SCTP_CALLED_FROM_INPKILL_TIMER); inp = NULL; @@ -3909,7 +3912,8 @@ sctp_abort_association(struct sctp_inpcb (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) { SCTP_STAT_DECR_GAUGE32(sctps_currestab); } - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTPUTIL + SCTP_LOC_4); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTPUTIL + SCTP_LOC_4); #if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) SCTP_SOCKET_UNLOCK(so, 1); #endif @@ -4033,7 +4037,8 @@ sctp_abort_an_association(struct sctp_in atomic_subtract_int(&stcb->asoc.refcnt, 1); } #endif - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTPUTIL + SCTP_LOC_5); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTPUTIL + SCTP_LOC_5); #if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) if (!so_locked) { SCTP_SOCKET_UNLOCK(so, 1); @@ -5164,7 +5169,8 @@ sctp_user_rcvd(struct sctp_tcb *stcb, ui sctp_chunk_output(stcb->sctp_ep, stcb, SCTP_OUTPUT_FROM_USR_RCVD, SCTP_SO_LOCKED); /* make sure no timer is running */ - sctp_timer_stop(SCTP_TIMER_TYPE_RECV, stcb->sctp_ep, stcb, NULL, SCTP_FROM_SCTPUTIL + SCTP_LOC_6); + sctp_timer_stop(SCTP_TIMER_TYPE_RECV, stcb->sctp_ep, stcb, NULL, + SCTP_FROM_SCTPUTIL + SCTP_LOC_6); SCTP_TCB_UNLOCK(stcb); } else { /* Update how much we have pending */ @@ -6322,14 +6328,16 @@ sctp_connectx_helper_add(struct sctp_tcb (sin->sin_addr.s_addr == INADDR_BROADCAST) || IN_MULTICAST(ntohl(sin->sin_addr.s_addr))) { SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTPUTIL, EINVAL); - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTPUTIL + SCTP_LOC_7); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTPUTIL + SCTP_LOC_7); *error = EINVAL; goto out_now; } if (sctp_add_remote_addr(stcb, sa, NULL, SCTP_DONOT_SETSCOPE, SCTP_ADDR_IS_CONFIRMED)) { /* assoc gone no un-lock */ SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTPUTIL, ENOBUFS); - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTPUTIL + SCTP_LOC_8); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTPUTIL + SCTP_LOC_8); *error = ENOBUFS; goto out_now; } @@ -6343,14 +6351,16 @@ sctp_connectx_helper_add(struct sctp_tcb if (IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr) || IN6_IS_ADDR_MULTICAST(&sin6->sin6_addr)) { SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTPUTIL, EINVAL); - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTPUTIL + SCTP_LOC_9); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTPUTIL + SCTP_LOC_9); *error = EINVAL; goto out_now; } if (sctp_add_remote_addr(stcb, sa, NULL, SCTP_DONOT_SETSCOPE, SCTP_ADDR_IS_CONFIRMED)) { /* assoc gone no un-lock */ SCTP_LTRACE_ERR_RET(NULL, stcb, NULL, SCTP_FROM_SCTPUTIL, ENOBUFS); - (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, SCTP_FROM_SCTPUTIL + SCTP_LOC_10); + (void)sctp_free_assoc(inp, stcb, SCTP_NORMAL_PROC, + SCTP_FROM_SCTPUTIL + SCTP_LOC_10); *error = ENOBUFS; goto out_now; } From owner-svn-src-all@FreeBSD.ORG Thu May 28 17:37:03 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D6A53673; Thu, 28 May 2015 17:37:03 +0000 (UTC) (envelope-from neel@FreeBSD.org) Received: from svn.freebsd.org (svn.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 C3227A41; Thu, 28 May 2015 17:37:03 +0000 (UTC) (envelope-from neel@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4SHb3im051976; Thu, 28 May 2015 17:37:03 GMT (envelope-from neel@FreeBSD.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4SHb2KK051966; Thu, 28 May 2015 17:37:02 GMT (envelope-from neel@FreeBSD.org) Message-Id: <201505281737.t4SHb2KK051966@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: neel set sender to neel@FreeBSD.org using -f From: Neel Natu Date: Thu, 28 May 2015 17:37:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283657 - in head: sys/amd64/include sys/amd64/vmm sys/amd64/vmm/amd sys/amd64/vmm/intel usr.sbin/bhyve X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 17:37:03 -0000 Author: neel Date: Thu May 28 17:37:01 2015 New Revision: 283657 URL: https://svnweb.freebsd.org/changeset/base/283657 Log: Fix non-deterministic delays when accessing a vcpu that was in "running" or "sleeping" state. This is done by forcing the vcpu to transition to "idle" by returning to userspace with an exit code of VM_EXITCODE_REQIDLE. MFC after: 2 weeks Modified: head/sys/amd64/include/vmm.h head/sys/amd64/vmm/amd/svm.c head/sys/amd64/vmm/intel/vmx.c head/sys/amd64/vmm/vmm.c head/sys/amd64/vmm/vmm_stat.c head/sys/amd64/vmm/vmm_stat.h head/usr.sbin/bhyve/bhyverun.c Modified: head/sys/amd64/include/vmm.h ============================================================================== --- head/sys/amd64/include/vmm.h Thu May 28 17:06:50 2015 (r283656) +++ head/sys/amd64/include/vmm.h Thu May 28 17:37:01 2015 (r283657) @@ -120,13 +120,18 @@ struct vm_object; struct vm_guest_paging; struct pmap; +struct vm_eventinfo { + void *rptr; /* rendezvous cookie */ + int *sptr; /* suspend cookie */ + int *iptr; /* reqidle cookie */ +}; + typedef int (*vmm_init_func_t)(int ipinum); typedef int (*vmm_cleanup_func_t)(void); typedef void (*vmm_resume_func_t)(void); typedef void * (*vmi_init_func_t)(struct vm *vm, struct pmap *pmap); typedef int (*vmi_run_func_t)(void *vmi, int vcpu, register_t rip, - struct pmap *pmap, void *rendezvous_cookie, - void *suspend_cookie); + struct pmap *pmap, struct vm_eventinfo *info); typedef void (*vmi_cleanup_func_t)(void *vmi); typedef int (*vmi_get_register_t)(void *vmi, int vcpu, int num, uint64_t *retval); @@ -208,6 +213,7 @@ struct vm_exit *vm_exitinfo(struct vm *v void vm_exit_suspended(struct vm *vm, int vcpuid, uint64_t rip); void vm_exit_rendezvous(struct vm *vm, int vcpuid, uint64_t rip); void vm_exit_astpending(struct vm *vm, int vcpuid, uint64_t rip); +void vm_exit_reqidle(struct vm *vm, int vcpuid, uint64_t rip); #ifdef _SYS__CPUSET_H_ /* @@ -232,17 +238,24 @@ cpuset_t vm_suspended_cpus(struct vm *vm #endif /* _SYS__CPUSET_H_ */ static __inline int -vcpu_rendezvous_pending(void *rendezvous_cookie) +vcpu_rendezvous_pending(struct vm_eventinfo *info) +{ + + return (*((uintptr_t *)(info->rptr)) != 0); +} + +static __inline int +vcpu_suspended(struct vm_eventinfo *info) { - return (*(uintptr_t *)rendezvous_cookie != 0); + return (*info->sptr); } static __inline int -vcpu_suspended(void *suspend_cookie) +vcpu_reqidle(struct vm_eventinfo *info) { - return (*(int *)suspend_cookie); + return (*info->iptr); } /* @@ -506,6 +519,7 @@ enum vm_exitcode { VM_EXITCODE_MONITOR, VM_EXITCODE_MWAIT, VM_EXITCODE_SVM, + VM_EXITCODE_REQIDLE, VM_EXITCODE_MAX }; Modified: head/sys/amd64/vmm/amd/svm.c ============================================================================== --- head/sys/amd64/vmm/amd/svm.c Thu May 28 17:06:50 2015 (r283656) +++ head/sys/amd64/vmm/amd/svm.c Thu May 28 17:37:01 2015 (r283657) @@ -1900,7 +1900,7 @@ enable_gintr(void) */ static int svm_vmrun(void *arg, int vcpu, register_t rip, pmap_t pmap, - void *rend_cookie, void *suspended_cookie) + struct vm_eventinfo *evinfo) { struct svm_regctx *gctx; struct svm_softc *svm_sc; @@ -1975,18 +1975,24 @@ svm_vmrun(void *arg, int vcpu, register_ */ disable_gintr(); - if (vcpu_suspended(suspended_cookie)) { + if (vcpu_suspended(evinfo)) { enable_gintr(); vm_exit_suspended(vm, vcpu, state->rip); break; } - if (vcpu_rendezvous_pending(rend_cookie)) { + if (vcpu_rendezvous_pending(evinfo)) { enable_gintr(); vm_exit_rendezvous(vm, vcpu, state->rip); break; } + if (vcpu_reqidle(evinfo)) { + enable_gintr(); + vm_exit_reqidle(vm, vcpu, state->rip); + break; + } + /* We are asked to give the cpu by scheduler. */ if (vcpu_should_yield(vm, vcpu)) { enable_gintr(); Modified: head/sys/amd64/vmm/intel/vmx.c ============================================================================== --- head/sys/amd64/vmm/intel/vmx.c Thu May 28 17:06:50 2015 (r283656) +++ head/sys/amd64/vmm/intel/vmx.c Thu May 28 17:37:01 2015 (r283657) @@ -2554,7 +2554,7 @@ vmx_exit_handle_nmi(struct vmx *vmx, int static int vmx_run(void *arg, int vcpu, register_t rip, pmap_t pmap, - void *rendezvous_cookie, void *suspend_cookie) + struct vm_eventinfo *evinfo) { int rc, handled, launched; struct vmx *vmx; @@ -2623,18 +2623,24 @@ vmx_run(void *arg, int vcpu, register_t * vmx_inject_interrupts() can suspend the vcpu due to a * triple fault. */ - if (vcpu_suspended(suspend_cookie)) { + if (vcpu_suspended(evinfo)) { enable_intr(); vm_exit_suspended(vmx->vm, vcpu, rip); break; } - if (vcpu_rendezvous_pending(rendezvous_cookie)) { + if (vcpu_rendezvous_pending(evinfo)) { enable_intr(); vm_exit_rendezvous(vmx->vm, vcpu, rip); break; } + if (vcpu_reqidle(evinfo)) { + enable_intr(); + vm_exit_reqidle(vmx->vm, vcpu, rip); + break; + } + if (vcpu_should_yield(vm, vcpu)) { enable_intr(); vm_exit_astpending(vmx->vm, vcpu, rip); Modified: head/sys/amd64/vmm/vmm.c ============================================================================== --- head/sys/amd64/vmm/vmm.c Thu May 28 17:06:50 2015 (r283656) +++ head/sys/amd64/vmm/vmm.c Thu May 28 17:37:01 2015 (r283657) @@ -95,6 +95,7 @@ struct vcpu { struct mtx mtx; /* (o) protects 'state' and 'hostcpu' */ enum vcpu_state state; /* (o) vcpu state */ int hostcpu; /* (o) vcpu's host cpu */ + int reqidle; /* (i) request vcpu to idle */ struct vlapic *vlapic; /* (i) APIC device model */ enum x2apic_state x2apic_state; /* (i) APIC mode */ uint64_t exitintinfo; /* (i) events pending at VM exit */ @@ -164,8 +165,8 @@ static struct vmm_ops *ops; #define VMM_RESUME() (ops != NULL ? (*ops->resume)() : 0) #define VMINIT(vm, pmap) (ops != NULL ? (*ops->vminit)(vm, pmap): NULL) -#define VMRUN(vmi, vcpu, rip, pmap, rptr, sptr) \ - (ops != NULL ? (*ops->vmrun)(vmi, vcpu, rip, pmap, rptr, sptr) : ENXIO) +#define VMRUN(vmi, vcpu, rip, pmap, evinfo) \ + (ops != NULL ? (*ops->vmrun)(vmi, vcpu, rip, pmap, evinfo) : ENXIO) #define VMCLEANUP(vmi) (ops != NULL ? (*ops->vmcleanup)(vmi) : NULL) #define VMSPACE_ALLOC(min, max) \ (ops != NULL ? (*ops->vmspace_alloc)(min, max) : NULL) @@ -221,6 +222,28 @@ TUNABLE_INT("hw.vmm.force_iommu", &vmm_f SYSCTL_INT(_hw_vmm, OID_AUTO, force_iommu, CTLFLAG_RDTUN, &vmm_force_iommu, 0, "Force use of I/O MMU even if no passthrough devices were found."); +static void vcpu_notify_event_locked(struct vcpu *vcpu, bool lapic_intr); + +#ifdef KTR +static const char * +vcpu_state2str(enum vcpu_state state) +{ + + switch (state) { + case VCPU_IDLE: + return ("idle"); + case VCPU_FROZEN: + return ("frozen"); + case VCPU_RUNNING: + return ("running"); + case VCPU_SLEEPING: + return ("sleeping"); + default: + return ("unknown"); + } +} +#endif + static void vcpu_cleanup(struct vm *vm, int i, bool destroy) { @@ -255,6 +278,7 @@ vcpu_init(struct vm *vm, int vcpu_id, bo vcpu->vlapic = VLAPIC_INIT(vm->cookie, vcpu_id); vm_set_x2apic_state(vm, vcpu_id, X2APIC_DISABLED); + vcpu->reqidle = 0; vcpu->exitintinfo = 0; vcpu->nmi_pending = 0; vcpu->extint_pending = 0; @@ -980,11 +1004,13 @@ save_guest_fpustate(struct vcpu *vcpu) static VMM_STAT(VCPU_IDLE_TICKS, "number of ticks vcpu was idle"); static int -vcpu_set_state_locked(struct vcpu *vcpu, enum vcpu_state newstate, +vcpu_set_state_locked(struct vm *vm, int vcpuid, enum vcpu_state newstate, bool from_idle) { + struct vcpu *vcpu; int error; + vcpu = &vm->vcpu[vcpuid]; vcpu_assert_locked(vcpu); /* @@ -993,8 +1019,13 @@ vcpu_set_state_locked(struct vcpu *vcpu, * ioctl() operating on a vcpu at any point. */ if (from_idle) { - while (vcpu->state != VCPU_IDLE) + while (vcpu->state != VCPU_IDLE) { + vcpu->reqidle = 1; + vcpu_notify_event_locked(vcpu, false); + VCPU_CTR1(vm, vcpuid, "vcpu state change from %s to " + "idle requested", vcpu_state2str(vcpu->state)); msleep_spin(&vcpu->state, &vcpu->mtx, "vmstat", hz); + } } else { KASSERT(vcpu->state != VCPU_IDLE, ("invalid transition from " "vcpu idle state")); @@ -1031,6 +1062,9 @@ vcpu_set_state_locked(struct vcpu *vcpu, if (error) return (EBUSY); + VCPU_CTR2(vm, vcpuid, "vcpu state changed from %s to %s", + vcpu_state2str(vcpu->state), vcpu_state2str(newstate)); + vcpu->state = newstate; if (newstate == VCPU_RUNNING) vcpu->hostcpu = curcpu; @@ -1053,11 +1087,11 @@ vcpu_require_state(struct vm *vm, int vc } static void -vcpu_require_state_locked(struct vcpu *vcpu, enum vcpu_state newstate) +vcpu_require_state_locked(struct vm *vm, int vcpuid, enum vcpu_state newstate) { int error; - if ((error = vcpu_set_state_locked(vcpu, newstate, false)) != 0) + if ((error = vcpu_set_state_locked(vm, vcpuid, newstate, false)) != 0) panic("Error %d setting state to %d", error, newstate); } @@ -1145,7 +1179,7 @@ vm_handle_hlt(struct vm *vm, int vcpuid, * vcpu returned from VMRUN() and before it acquired the * vcpu lock above. */ - if (vm->rendezvous_func != NULL || vm->suspend) + if (vm->rendezvous_func != NULL || vm->suspend || vcpu->reqidle) break; if (vm_nmi_pending(vm, vcpuid)) break; @@ -1182,13 +1216,13 @@ vm_handle_hlt(struct vm *vm, int vcpuid, } t = ticks; - vcpu_require_state_locked(vcpu, VCPU_SLEEPING); + vcpu_require_state_locked(vm, vcpuid, VCPU_SLEEPING); /* * XXX msleep_spin() cannot be interrupted by signals so * wake up periodically to check pending signals. */ msleep_spin(vcpu, &vcpu->mtx, wmesg, hz); - vcpu_require_state_locked(vcpu, VCPU_FROZEN); + vcpu_require_state_locked(vm, vcpuid, VCPU_FROZEN); vmm_stat_incr(vm, vcpuid, VCPU_IDLE_TICKS, ticks - t); } @@ -1350,9 +1384,9 @@ vm_handle_suspend(struct vm *vm, int vcp if (vm->rendezvous_func == NULL) { VCPU_CTR0(vm, vcpuid, "Sleeping during suspend"); - vcpu_require_state_locked(vcpu, VCPU_SLEEPING); + vcpu_require_state_locked(vm, vcpuid, VCPU_SLEEPING); msleep_spin(vcpu, &vcpu->mtx, "vmsusp", hz); - vcpu_require_state_locked(vcpu, VCPU_FROZEN); + vcpu_require_state_locked(vm, vcpuid, VCPU_FROZEN); } else { VCPU_CTR0(vm, vcpuid, "Rendezvous during suspend"); vcpu_unlock(vcpu); @@ -1375,6 +1409,19 @@ vm_handle_suspend(struct vm *vm, int vcp return (0); } +static int +vm_handle_reqidle(struct vm *vm, int vcpuid, bool *retu) +{ + struct vcpu *vcpu = &vm->vcpu[vcpuid]; + + vcpu_lock(vcpu); + KASSERT(vcpu->reqidle, ("invalid vcpu reqidle %d", vcpu->reqidle)); + vcpu->reqidle = 0; + vcpu_unlock(vcpu); + *retu = true; + return (0); +} + int vm_suspend(struct vm *vm, enum vm_suspend_how how) { @@ -1432,6 +1479,18 @@ vm_exit_rendezvous(struct vm *vm, int vc } void +vm_exit_reqidle(struct vm *vm, int vcpuid, uint64_t rip) +{ + struct vm_exit *vmexit; + + vmexit = vm_exitinfo(vm, vcpuid); + vmexit->rip = rip; + vmexit->inst_length = 0; + vmexit->exitcode = VM_EXITCODE_REQIDLE; + vmm_stat_incr(vm, vcpuid, VMEXIT_REQIDLE, 1); +} + +void vm_exit_astpending(struct vm *vm, int vcpuid, uint64_t rip) { struct vm_exit *vmexit; @@ -1446,6 +1505,7 @@ vm_exit_astpending(struct vm *vm, int vc int vm_run(struct vm *vm, struct vm_run *vmrun) { + struct vm_eventinfo evinfo; int error, vcpuid; struct vcpu *vcpu; struct pcb *pcb; @@ -1453,7 +1513,6 @@ vm_run(struct vm *vm, struct vm_run *vmr struct vm_exit *vme; bool retu, intr_disabled; pmap_t pmap; - void *rptr, *sptr; vcpuid = vmrun->cpuid; @@ -1466,11 +1525,12 @@ vm_run(struct vm *vm, struct vm_run *vmr if (CPU_ISSET(vcpuid, &vm->suspended_cpus)) return (EINVAL); - rptr = &vm->rendezvous_func; - sptr = &vm->suspend; pmap = vmspace_pmap(vm->vmspace); vcpu = &vm->vcpu[vcpuid]; vme = &vcpu->exitinfo; + evinfo.rptr = &vm->rendezvous_func; + evinfo.sptr = &vm->suspend; + evinfo.iptr = &vcpu->reqidle; restart: critical_enter(); @@ -1485,7 +1545,7 @@ restart: restore_guest_fpustate(vcpu); vcpu_require_state(vm, vcpuid, VCPU_RUNNING); - error = VMRUN(vm->cookie, vcpuid, vcpu->nextrip, pmap, rptr, sptr); + error = VMRUN(vm->cookie, vcpuid, vcpu->nextrip, pmap, &evinfo); vcpu_require_state(vm, vcpuid, VCPU_FROZEN); save_guest_fpustate(vcpu); @@ -1498,6 +1558,9 @@ restart: retu = false; vcpu->nextrip = vme->rip + vme->inst_length; switch (vme->exitcode) { + case VM_EXITCODE_REQIDLE: + error = vm_handle_reqidle(vm, vcpuid, &retu); + break; case VM_EXITCODE_SUSPENDED: error = vm_handle_suspend(vm, vcpuid, &retu); break; @@ -1536,6 +1599,8 @@ restart: if (error == 0 && retu == false) goto restart; + VCPU_CTR2(vm, vcpuid, "retu %d/%d", error, vme->exitcode); + /* copy the exit information */ bcopy(vme, &vmrun->vm_exit, sizeof(struct vm_exit)); return (error); @@ -2072,7 +2137,7 @@ vcpu_set_state(struct vm *vm, int vcpuid vcpu = &vm->vcpu[vcpuid]; vcpu_lock(vcpu); - error = vcpu_set_state_locked(vcpu, newstate, from_idle); + error = vcpu_set_state_locked(vm, vcpuid, newstate, from_idle); vcpu_unlock(vcpu); return (error); @@ -2168,15 +2233,11 @@ vm_set_x2apic_state(struct vm *vm, int v * - If the vcpu is running on a different host_cpu then an IPI will be directed * to the host_cpu to cause the vcpu to trap into the hypervisor. */ -void -vcpu_notify_event(struct vm *vm, int vcpuid, bool lapic_intr) +static void +vcpu_notify_event_locked(struct vcpu *vcpu, bool lapic_intr) { int hostcpu; - struct vcpu *vcpu; - - vcpu = &vm->vcpu[vcpuid]; - vcpu_lock(vcpu); hostcpu = vcpu->hostcpu; if (vcpu->state == VCPU_RUNNING) { KASSERT(hostcpu != NOCPU, ("vcpu running on invalid hostcpu")); @@ -2201,6 +2262,15 @@ vcpu_notify_event(struct vm *vm, int vcp if (vcpu->state == VCPU_SLEEPING) wakeup_one(vcpu); } +} + +void +vcpu_notify_event(struct vm *vm, int vcpuid, bool lapic_intr) +{ + struct vcpu *vcpu = &vm->vcpu[vcpuid]; + + vcpu_lock(vcpu); + vcpu_notify_event_locked(vcpu, lapic_intr); vcpu_unlock(vcpu); } Modified: head/sys/amd64/vmm/vmm_stat.c ============================================================================== --- head/sys/amd64/vmm/vmm_stat.c Thu May 28 17:06:50 2015 (r283656) +++ head/sys/amd64/vmm/vmm_stat.c Thu May 28 17:37:01 2015 (r283657) @@ -164,6 +164,7 @@ VMM_STAT(VMEXIT_NESTED_FAULT, "vm exits VMM_STAT(VMEXIT_INST_EMUL, "vm exits for instruction emulation"); VMM_STAT(VMEXIT_UNKNOWN, "number of vm exits for unknown reason"); VMM_STAT(VMEXIT_ASTPENDING, "number of times astpending at exit"); +VMM_STAT(VMEXIT_REQIDLE, "number of times idle requested at exit"); VMM_STAT(VMEXIT_USERSPACE, "number of vm exits handled in userspace"); VMM_STAT(VMEXIT_RENDEZVOUS, "number of times rendezvous pending at exit"); VMM_STAT(VMEXIT_EXCEPTION, "number of vm exits due to exceptions"); Modified: head/sys/amd64/vmm/vmm_stat.h ============================================================================== --- head/sys/amd64/vmm/vmm_stat.h Thu May 28 17:06:50 2015 (r283656) +++ head/sys/amd64/vmm/vmm_stat.h Thu May 28 17:37:01 2015 (r283657) @@ -157,4 +157,5 @@ VMM_STAT_DECLARE(VMEXIT_ASTPENDING); VMM_STAT_DECLARE(VMEXIT_USERSPACE); VMM_STAT_DECLARE(VMEXIT_RENDEZVOUS); VMM_STAT_DECLARE(VMEXIT_EXCEPTION); +VMM_STAT_DECLARE(VMEXIT_REQIDLE); #endif Modified: head/usr.sbin/bhyve/bhyverun.c ============================================================================== --- head/usr.sbin/bhyve/bhyverun.c Thu May 28 17:06:50 2015 (r283656) +++ head/usr.sbin/bhyve/bhyverun.c Thu May 28 17:37:01 2015 (r283657) @@ -100,7 +100,7 @@ static struct vm_exit vmexit[VM_MAXCPU]; struct bhyvestats { uint64_t vmexit_bogus; - uint64_t vmexit_bogus_switch; + uint64_t vmexit_reqidle; uint64_t vmexit_hlt; uint64_t vmexit_pause; uint64_t vmexit_mtrap; @@ -461,6 +461,17 @@ vmexit_bogus(struct vmctx *ctx, struct v } static int +vmexit_reqidle(struct vmctx *ctx, struct vm_exit *vmexit, int *pvcpu) +{ + + assert(vmexit->inst_length == 0); + + stats.vmexit_reqidle++; + + return (VMEXIT_CONTINUE); +} + +static int vmexit_hlt(struct vmctx *ctx, struct vm_exit *vmexit, int *pvcpu) { @@ -571,6 +582,7 @@ static vmexit_handler_t handler[VM_EXITC [VM_EXITCODE_VMX] = vmexit_vmx, [VM_EXITCODE_SVM] = vmexit_svm, [VM_EXITCODE_BOGUS] = vmexit_bogus, + [VM_EXITCODE_REQIDLE] = vmexit_reqidle, [VM_EXITCODE_RDMSR] = vmexit_rdmsr, [VM_EXITCODE_WRMSR] = vmexit_wrmsr, [VM_EXITCODE_MTRAP] = vmexit_mtrap, From owner-svn-src-all@FreeBSD.ORG Thu May 28 17:57:57 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2D5CFEAC; Thu, 28 May 2015 17:57:57 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 1C904ED0; Thu, 28 May 2015 17:57:57 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4SHvudv062615; Thu, 28 May 2015 17:57:56 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4SHvuFa062614; Thu, 28 May 2015 17:57:56 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505281757.t4SHvuFa062614@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Thu, 28 May 2015 17:57:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283658 - head/sys/netinet X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 17:57:57 -0000 Author: tuexen Date: Thu May 28 17:57:56 2015 New Revision: 283658 URL: https://svnweb.freebsd.org/changeset/base/283658 Log: Use macros for overhead in a consistent way. No functional change. Thanks to Irene Ruengeler for suggesting the change. MFC after: 3 days Modified: head/sys/netinet/sctp_output.c Modified: head/sys/netinet/sctp_output.c ============================================================================== --- head/sys/netinet/sctp_output.c Thu May 28 17:37:01 2015 (r283657) +++ head/sys/netinet/sctp_output.c Thu May 28 17:57:56 2015 (r283658) @@ -4063,7 +4063,7 @@ sctp_lowlevel_chunk_output(struct sctp_i sctp_route_t iproute; int len; - len = sizeof(struct ip) + sizeof(struct sctphdr); + len = SCTP_MIN_V4_OVERHEAD; if (port) { len += sizeof(struct udphdr); } @@ -4345,7 +4345,7 @@ sctp_lowlevel_chunk_output(struct sctp_i flowlabel = ntohl(((struct in6pcb *)inp)->in6p_flowinfo); } flowlabel &= 0x000fffff; - len = sizeof(struct ip6_hdr) + sizeof(struct sctphdr); + len = SCTP_MIN_OVERHEAD; if (port) { len += sizeof(struct udphdr); } @@ -5107,10 +5107,11 @@ sctp_arethere_unrecognized_parameters(st if (op_err == NULL) { /* Ok need to try to get a mbuf */ #ifdef INET6 - l_len = sizeof(struct ip6_hdr) + sizeof(struct sctphdr) + sizeof(struct sctp_chunkhdr); + l_len = SCTP_MIN_OVERHEAD; #else - l_len = sizeof(struct ip) + sizeof(struct sctphdr) + sizeof(struct sctp_chunkhdr); + l_len = SCTP_MIN_V4_OVERHEAD; #endif + l_len += sizeof(struct sctp_chunkhdr); l_len += plen; l_len += sizeof(struct sctp_paramhdr); op_err = sctp_get_mbuf_for_msg(l_len, 0, M_NOWAIT, 1, MT_DATA); @@ -5176,10 +5177,11 @@ sctp_arethere_unrecognized_parameters(st /* Ok need to try to get an mbuf */ #ifdef INET6 - l_len = sizeof(struct ip6_hdr) + sizeof(struct sctphdr) + sizeof(struct sctp_chunkhdr); + l_len = SCTP_MIN_OVERHEAD; #else - l_len = sizeof(struct ip) + sizeof(struct sctphdr) + sizeof(struct sctp_chunkhdr); + l_len = SCTP_MIN_V4_OVERHEAD; #endif + l_len += sizeof(struct sctp_chunkhdr); l_len += plen; l_len += sizeof(struct sctp_paramhdr); op_err = sctp_get_mbuf_for_msg(l_len, 0, M_NOWAIT, 1, MT_DATA); @@ -5251,10 +5253,11 @@ invalid_size: int l_len; #ifdef INET6 - l_len = sizeof(struct ip6_hdr) + sizeof(struct sctphdr) + sizeof(struct sctp_chunkhdr); + l_len = SCTP_MIN_OVERHEAD; #else - l_len = sizeof(struct ip) + sizeof(struct sctphdr) + sizeof(struct sctp_chunkhdr); + l_len = SCTP_MIN_V4_OVERHEAD; #endif + l_len += sizeof(struct sctp_chunkhdr); l_len += (2 * sizeof(struct sctp_paramhdr)); op_err = sctp_get_mbuf_for_msg(l_len, 0, M_NOWAIT, 1, MT_DATA); if (op_err) { @@ -7961,12 +7964,12 @@ again_one_more_time: switch (((struct sockaddr *)&net->ro._l_addr)->sa_family) { #ifdef INET case AF_INET: - mtu = net->mtu - (sizeof(struct ip) + sizeof(struct sctphdr)); + mtu = net->mtu - SCTP_MIN_V4_OVERHEAD; break; #endif #ifdef INET6 case AF_INET6: - mtu = net->mtu - (sizeof(struct ip6_hdr) + sizeof(struct sctphdr)); + mtu = net->mtu - SCTP_MIN_OVERHEAD; break; #endif default: @@ -8513,16 +8516,16 @@ again_one_more_time: switch (((struct sockaddr *)&net->ro._l_addr)->sa_family) { #ifdef INET case AF_INET: - if (net->mtu > (sizeof(struct ip) + sizeof(struct sctphdr))) - omtu = net->mtu - (sizeof(struct ip) + sizeof(struct sctphdr)); + if (net->mtu > SCTP_MIN_V4_OVERHEAD) + omtu = net->mtu - SCTP_MIN_V4_OVERHEAD; else omtu = 0; break; #endif #ifdef INET6 case AF_INET6: - if (net->mtu > (sizeof(struct ip6_hdr) + sizeof(struct sctphdr))) - omtu = net->mtu - (sizeof(struct ip6_hdr) + sizeof(struct sctphdr)); + if (net->mtu > SCTP_MIN_OVERHEAD) + omtu = net->mtu - SCTP_MIN_OVERHEAD; else omtu = 0; break; From owner-svn-src-all@FreeBSD.ORG Thu May 28 18:15:02 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 53653B04; Thu, 28 May 2015 18:15:02 +0000 (UTC) (envelope-from slm@FreeBSD.org) Received: from svn.freebsd.org (svn.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 0FD425EA; Thu, 28 May 2015 18:15:02 +0000 (UTC) (envelope-from slm@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4SIF21F074285; Thu, 28 May 2015 18:15:02 GMT (envelope-from slm@FreeBSD.org) Received: (from slm@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4SIEuUO073996; Thu, 28 May 2015 18:14:56 GMT (envelope-from slm@FreeBSD.org) Message-Id: <201505281814.t4SIEuUO073996@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: slm set sender to slm@FreeBSD.org using -f From: Stephen McConnell Date: Thu, 28 May 2015 18:14:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283660 - in head/sys/dev/mpr: . mpi X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 18:15:02 -0000 Author: slm Date: Thu May 28 18:14:55 2015 New Revision: 283660 URL: https://svnweb.freebsd.org/changeset/base/283660 Log: The wrong commit message was given with r283632. To get the correct commit message synced to the changes in r283632, those changes are now backed out. Another commit will be done that is exactly the same as r283632 except it will have to correct commit message. Approved by: ken, scottl, asomers, gibbs Modified: head/sys/dev/mpr/mpi/mpi2.h head/sys/dev/mpr/mpi/mpi2_cnfg.h head/sys/dev/mpr/mpi/mpi2_hbd.h head/sys/dev/mpr/mpi/mpi2_history.txt head/sys/dev/mpr/mpi/mpi2_init.h head/sys/dev/mpr/mpi/mpi2_ioc.h head/sys/dev/mpr/mpi/mpi2_ra.h head/sys/dev/mpr/mpi/mpi2_raid.h head/sys/dev/mpr/mpi/mpi2_sas.h head/sys/dev/mpr/mpi/mpi2_targ.h head/sys/dev/mpr/mpi/mpi2_tool.h head/sys/dev/mpr/mpi/mpi2_type.h head/sys/dev/mpr/mpr.c head/sys/dev/mpr/mpr_config.c head/sys/dev/mpr/mpr_ioctl.h head/sys/dev/mpr/mpr_mapping.c head/sys/dev/mpr/mpr_mapping.h head/sys/dev/mpr/mpr_pci.c head/sys/dev/mpr/mpr_sas.c head/sys/dev/mpr/mpr_sas.h head/sys/dev/mpr/mpr_sas_lsi.c head/sys/dev/mpr/mpr_user.c head/sys/dev/mpr/mprvar.h Modified: head/sys/dev/mpr/mpi/mpi2.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2.h Thu May 28 18:06:03 2015 (r283659) +++ head/sys/dev/mpr/mpi/mpi2.h Thu May 28 18:14:55 2015 (r283660) @@ -1,6 +1,5 @@ /*- - * Copyright (c) 2012-2015 LSI Corp. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2013 LSI Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,14 +26,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD + * LSI MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2000-2015 LSI Corporation. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2000-2013 LSI Corporation. * * * Name: mpi2.h Modified: head/sys/dev/mpr/mpi/mpi2_cnfg.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_cnfg.h Thu May 28 18:06:03 2015 (r283659) +++ head/sys/dev/mpr/mpi/mpi2_cnfg.h Thu May 28 18:14:55 2015 (r283660) @@ -1,6 +1,5 @@ /*- - * Copyright (c) 2012-2015 LSI Corp. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2013 LSI Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,14 +26,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD + * LSI MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2000-2015 LSI Corporation. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2000-2013 LSI Corporation. * * * Name: mpi2_cnfg.h Modified: head/sys/dev/mpr/mpi/mpi2_hbd.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_hbd.h Thu May 28 18:06:03 2015 (r283659) +++ head/sys/dev/mpr/mpi/mpi2_hbd.h Thu May 28 18:14:55 2015 (r283660) @@ -1,6 +1,5 @@ /*- - * Copyright (c) 2012-2015 LSI Corp. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2013 LSI Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,14 +26,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD + * LSI MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2009-2015 LSI Corporation. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2009-2011 LSI Corporation. * * * Name: mpi2_hbd.h Modified: head/sys/dev/mpr/mpi/mpi2_history.txt ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_history.txt Thu May 28 18:06:03 2015 (r283659) +++ head/sys/dev/mpr/mpi/mpi2_history.txt Thu May 28 18:14:55 2015 (r283660) @@ -1,6 +1,5 @@ /*- - * Copyright (c) 2012-2015 LSI Corp. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2013 LSI Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD + * LSI MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ @@ -36,8 +35,7 @@ Fusion-MPT MPI 2.0 / 2.5 Header File Change History ============================== - Copyright (c) 2000-2015 LSI Corporation. - Copyright (c) 2013-2015 Avago Technologies + Copyright (c) 2000-2013 LSI Corporation. --------------------------------------- Header Set Release Version: 02.00.33 Modified: head/sys/dev/mpr/mpi/mpi2_init.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_init.h Thu May 28 18:06:03 2015 (r283659) +++ head/sys/dev/mpr/mpi/mpi2_init.h Thu May 28 18:14:55 2015 (r283660) @@ -1,6 +1,5 @@ /*- - * Copyright (c) 2012-2015 LSI Corp. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2013 LSI Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,14 +26,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD + * LSI MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2000-2015 LSI Corporation. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2000-2013 LSI Corporation. * * * Name: mpi2_init.h Modified: head/sys/dev/mpr/mpi/mpi2_ioc.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_ioc.h Thu May 28 18:06:03 2015 (r283659) +++ head/sys/dev/mpr/mpi/mpi2_ioc.h Thu May 28 18:14:55 2015 (r283660) @@ -1,6 +1,5 @@ /*- - * Copyright (c) 2012-2015 LSI Corp. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2013 LSI Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,14 +26,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD + * LSI MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2000-2015 LSI Corporation. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2000-2013 LSI Corporation. * * * Name: mpi2_ioc.h Modified: head/sys/dev/mpr/mpi/mpi2_ra.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_ra.h Thu May 28 18:06:03 2015 (r283659) +++ head/sys/dev/mpr/mpi/mpi2_ra.h Thu May 28 18:14:55 2015 (r283660) @@ -1,6 +1,5 @@ /*- - * Copyright (c) 2012-2015 LSI Corp. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2013 LSI Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,14 +26,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD + * LSI MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2012-2015 LSI Corporation. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2009 LSI Corporation. * * * Name: mpi2_ra.h Modified: head/sys/dev/mpr/mpi/mpi2_raid.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_raid.h Thu May 28 18:06:03 2015 (r283659) +++ head/sys/dev/mpr/mpi/mpi2_raid.h Thu May 28 18:14:55 2015 (r283660) @@ -1,6 +1,5 @@ /*- - * Copyright (c) 2012-2015 LSI Corp. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2013 LSI Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,14 +26,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD + * LSI MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2000-2015 LSI Corporation. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2000-2013 LSI Corporation. * * * Name: mpi2_raid.h Modified: head/sys/dev/mpr/mpi/mpi2_sas.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_sas.h Thu May 28 18:06:03 2015 (r283659) +++ head/sys/dev/mpr/mpi/mpi2_sas.h Thu May 28 18:14:55 2015 (r283660) @@ -1,6 +1,5 @@ /*- - * Copyright (c) 2012-2015 LSI Corp. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2013 LSI Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,14 +26,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD + * LSI MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2000-2015 LSI Corporation. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2000-2013 LSI Corporation. * * * Name: mpi2_sas.h Modified: head/sys/dev/mpr/mpi/mpi2_targ.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_targ.h Thu May 28 18:06:03 2015 (r283659) +++ head/sys/dev/mpr/mpi/mpi2_targ.h Thu May 28 18:14:55 2015 (r283660) @@ -1,6 +1,5 @@ /*- - * Copyright (c) 2012-2015 LSI Corp. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2013 LSI Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,14 +26,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD + * LSI MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2000-2015 LSI Corporation. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2000-2012 LSI Corporation. * * * Name: mpi2_targ.h Modified: head/sys/dev/mpr/mpi/mpi2_tool.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_tool.h Thu May 28 18:06:03 2015 (r283659) +++ head/sys/dev/mpr/mpi/mpi2_tool.h Thu May 28 18:14:55 2015 (r283660) @@ -1,6 +1,5 @@ /*- - * Copyright (c) 2012-2015 LSI Corp. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2013 LSI Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,14 +26,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD + * LSI MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2000-2015 LSI Corporation. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2000-2013 LSI Corporation. * * * Name: mpi2_tool.h Modified: head/sys/dev/mpr/mpi/mpi2_type.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_type.h Thu May 28 18:06:03 2015 (r283659) +++ head/sys/dev/mpr/mpi/mpi2_type.h Thu May 28 18:14:55 2015 (r283660) @@ -1,6 +1,5 @@ /*- - * Copyright (c) 2012-2015 LSI Corp. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2013 LSI Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,14 +26,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD + * LSI MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2000-2015 LSI Corporation. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2000-2007 LSI Corporation. * * * Name: mpi2_type.h Modified: head/sys/dev/mpr/mpr.c ============================================================================== --- head/sys/dev/mpr/mpr.c Thu May 28 18:06:03 2015 (r283659) +++ head/sys/dev/mpr/mpr.c Thu May 28 18:14:55 2015 (r283660) @@ -1,7 +1,6 @@ /*- * Copyright (c) 2009 Yahoo! Inc. - * Copyright (c) 2011-2015 LSI Corp. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2012-2014 LSI Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -25,14 +24,12 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD - * */ #include __FBSDID("$FreeBSD$"); -/* Communications core for Avago Technologies (LSI) MPT3 */ +/* Communications core for LSI MPT2 */ /* TODO Move headers to mprvar */ #include @@ -75,6 +72,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include static int mpr_diag_reset(struct mpr_softc *sc, int sleep_flag); static int mpr_init_queues(struct mpr_softc *sc); @@ -354,9 +352,11 @@ mpr_transition_operational(struct mpr_so static int mpr_iocfacts_allocate(struct mpr_softc *sc, uint8_t attaching) { - int error; + int error, i; Mpi2IOCFactsReply_t saved_facts; uint8_t saved_mode, reallocating; + struct mprsas_lun *lun, *lun_tmp; + struct mprsas_target *targ; mpr_dprint(sc, MPR_TRACE, "%s\n", __func__); @@ -513,7 +513,27 @@ mpr_iocfacts_allocate(struct mpr_softc * */ if (reallocating) { mpr_iocfacts_free(sc); - mprsas_realloc_targets(sc, saved_facts.MaxTargets); + + /* + * The number of targets is based on IOC Facts, so free all of + * the allocated LUNs for each target and then the target buffer + * itself. + */ + for (i=0; i< saved_facts.MaxTargets; i++) { + targ = &sc->sassc->targets[i]; + SLIST_FOREACH_SAFE(lun, &targ->luns, lun_link, + lun_tmp) { + free(lun, M_MPR); + } + } + free(sc->sassc->targets, M_MPR); + + sc->sassc->targets = malloc(sizeof(struct mprsas_target) * + sc->facts->MaxTargets, M_MPR, M_WAITOK|M_ZERO); + if (!sc->sassc->targets) { + panic("%s failed to alloc targets with error %d\n", + __func__, ENOMEM); + } } /* @@ -755,7 +775,7 @@ mpr_reinit(struct mpr_softc *sc) /* the end of discovery will release the simq, so we're done. */ mpr_dprint(sc, MPR_INFO, "%s finished sc %p post %u free %u\n", __func__, sc, sc->replypostindex, sc->replyfreeindex); - mprsas_release_simq_reinit(sassc); + mprsas_release_simq_reinit(sassc); return 0; } @@ -796,8 +816,7 @@ mpr_wait_db_ack(struct mpr_softc *sc, in * 0.5 milisecond */ if (mtx_owned(&sc->mpr_mtx) && sleep_flag == CAN_SLEEP) - msleep(&sc->msleep_fake_chan, &sc->mpr_mtx, 0, "mprdba", - hz/1000); + msleep(&sc->msleep_fake_chan, &sc->mpr_mtx, 0, "mprdba", hz/1000); else if (sleep_flag == CAN_SLEEP) pause("mprdba", hz/1000); else @@ -963,7 +982,7 @@ mpr_enqueue_request(struct mpr_softc *sc reply_descriptor rd; MPR_FUNCTRACE(sc); - mpr_dprint(sc, MPR_TRACE, "SMID %u cm %p ccb %p\n", + mpr_dprint(sc, MPR_TRACE, "%s SMID %u cm %p ccb %p\n", __func__, cm->cm_desc.Default.SMID, cm, cm->cm_ccb); if (sc->mpr_flags & MPR_FLAGS_ATTACH_DONE && !(sc->mpr_flags & @@ -1353,8 +1372,6 @@ mpr_get_tunables(struct mpr_softc *sc) sc->disable_msix = 0; sc->disable_msi = 0; sc->max_chains = MPR_CHAIN_FRAMES; - sc->enable_ssu = MPR_SSU_ENABLE_SSD_DISABLE_HDD; - sc->spinup_wait_time = DEFAULT_SPINUP_WAIT; /* * Grab the global variables. @@ -1363,8 +1380,6 @@ mpr_get_tunables(struct mpr_softc *sc) TUNABLE_INT_FETCH("hw.mpr.disable_msix", &sc->disable_msix); TUNABLE_INT_FETCH("hw.mpr.disable_msi", &sc->disable_msi); TUNABLE_INT_FETCH("hw.mpr.max_chains", &sc->max_chains); - TUNABLE_INT_FETCH("hw.mpr.enable_ssu", &sc->enable_ssu); - TUNABLE_INT_FETCH("hw.mpr.spinup_wait_time", &sc->spinup_wait_time); /* Grab the unit-instance variables */ snprintf(tmpstr, sizeof(tmpstr), "dev.mpr.%d.debug_level", @@ -1387,14 +1402,6 @@ mpr_get_tunables(struct mpr_softc *sc) snprintf(tmpstr, sizeof(tmpstr), "dev.mpr.%d.exclude_ids", device_get_unit(sc->mpr_dev)); TUNABLE_STR_FETCH(tmpstr, sc->exclude_ids, sizeof(sc->exclude_ids)); - - snprintf(tmpstr, sizeof(tmpstr), "dev.mpr.%d.enable_ssu", - device_get_unit(sc->mpr_dev)); - TUNABLE_INT_FETCH(tmpstr, &sc->enable_ssu); - - snprintf(tmpstr, sizeof(tmpstr), "dev.mpr.%d.spinup_wait_time", - device_get_unit(sc->mpr_dev)); - TUNABLE_INT_FETCH(tmpstr, &sc->spinup_wait_time); } static void @@ -1467,20 +1474,11 @@ mpr_setup_sysctl(struct mpr_softc *sc) OID_AUTO, "max_chains", CTLFLAG_RD, &sc->max_chains, 0,"maximum chain frames that will be allocated"); - SYSCTL_ADD_INT(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), - OID_AUTO, "enable_ssu", CTLFLAG_RW, &sc->enable_ssu, 0, - "enable SSU to SATA SSD/HDD at shutdown"); - #if __FreeBSD_version >= 900030 SYSCTL_ADD_UQUAD(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), OID_AUTO, "chain_alloc_fail", CTLFLAG_RD, &sc->chain_alloc_fail, "chain allocation failures"); #endif //FreeBSD_version >= 900030 - - SYSCTL_ADD_INT(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), - OID_AUTO, "spinup_wait_time", CTLFLAG_RD, - &sc->spinup_wait_time, DEFAULT_SPINUP_WAIT, "seconds to wait for " - "spinup after SATA ID error"); } int @@ -2098,7 +2096,7 @@ mpr_update_events(struct mpr_softc *sc, (reply->IOCStatus & MPI2_IOCSTATUS_MASK) != MPI2_IOCSTATUS_SUCCESS) error = ENXIO; - if (reply) + if(reply) mpr_print_event(sc, reply); mpr_dprint(sc, MPR_TRACE, "%s finished error %d\n", __func__, error); @@ -2165,8 +2163,8 @@ mpr_deregister_events(struct mpr_softc * * Add a chain element as the next SGE for the specified command. * Reset cm_sge and cm_sgesize to indicate all the available space. Chains are * only required for IEEE commands. Therefore there is no code for commands - * that have the MPR_CM_FLAGS_SGE_SIMPLE flag set (and those commands - * shouldn't be requesting chains). + * that have the MPR_CM_FLAGS_SGE_SIMPLE flag set (and those commands shouldn't + * be requesting chains). */ static int mpr_add_chain(struct mpr_command *cm, int segsleft) @@ -2248,9 +2246,9 @@ mpr_add_chain(struct mpr_command *cm, in /* * Add one scatter-gather element to the scatter-gather list for a command. - * Maintain cm_sglsize and cm_sge as the remaining size and pointer to the - * next SGE to fill in, respectively. In Gen3, the MPI SGL does not have a - * chain, so don't consider any chain additions. + * Maintain cm_sglsize and cm_sge as the remaining size and pointer to the next + * SGE to fill in, respectively. In Gen3, the MPI SGL does not have a chain, + * so don't consider any chain additions. */ int mpr_push_sge(struct mpr_command *cm, MPI2_SGE_SIMPLE64 *sge, size_t len, @@ -2662,7 +2660,7 @@ mpr_request_polled(struct mpr_softc *sc, } } - if (error) { + if(error) { mpr_dprint(sc, MPR_FAULT, "Calling Reinit from %s\n", __func__); rc = mpr_reinit(sc); mpr_dprint(sc, MPR_FAULT, "Reinit %s\n", (rc == 0) ? @@ -2719,12 +2717,9 @@ mpr_read_config_page(struct mpr_softc *s cm->cm_data = params->buffer; cm->cm_length = params->length; - if (cm->cm_data != NULL) { - cm->cm_sge = &req->PageBufferSGE; - cm->cm_sglsize = sizeof(MPI2_SGE_IO_UNION); - cm->cm_flags = MPR_CM_FLAGS_SGE_SIMPLE | MPR_CM_FLAGS_DATAIN; - } else - cm->cm_sge = NULL; + cm->cm_sge = &req->PageBufferSGE; + cm->cm_sglsize = sizeof(MPI2_SGE_IO_UNION); + cm->cm_flags = MPR_CM_FLAGS_SGE_SIMPLE | MPR_CM_FLAGS_DATAIN; cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; cm->cm_complete_data = params; @@ -2781,12 +2776,9 @@ mpr_config_complete(struct mpr_softc *sc goto done; } params->status = reply->IOCStatus; - if (params->hdr.Struct.PageType == MPI2_CONFIG_PAGETYPE_EXTENDED) { + if (params->hdr.Ext.ExtPageType != 0) { params->hdr.Ext.ExtPageType = reply->ExtPageType; params->hdr.Ext.ExtPageLength = reply->ExtPageLength; - params->hdr.Ext.PageType = reply->Header.PageType; - params->hdr.Ext.PageNumber = reply->Header.PageNumber; - params->hdr.Ext.PageVersion = reply->Header.PageVersion; } else { params->hdr.Struct.PageType = reply->Header.PageType; params->hdr.Struct.PageNumber = reply->Header.PageNumber; Modified: head/sys/dev/mpr/mpr_config.c ============================================================================== --- head/sys/dev/mpr/mpr_config.c Thu May 28 18:06:03 2015 (r283659) +++ head/sys/dev/mpr/mpr_config.c Thu May 28 18:14:55 2015 (r283660) @@ -1,6 +1,5 @@ /*- - * Copyright (c) 2011-2015 LSI Corp. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2011-2014 LSI Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -24,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD + * LSI MPT-Fusion Host Adapter FreeBSD */ #include Modified: head/sys/dev/mpr/mpr_ioctl.h ============================================================================== --- head/sys/dev/mpr/mpr_ioctl.h Thu May 28 18:06:03 2015 (r283659) +++ head/sys/dev/mpr/mpr_ioctl.h Thu May 28 18:14:55 2015 (r283660) @@ -27,13 +27,12 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD userland interface + * LSI MPT-Fusion Host Adapter FreeBSD userland interface * * $FreeBSD$ */ /*- - * Copyright (c) 2011-2015 LSI Corp. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2011-2014 LSI Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -57,7 +56,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD + * LSI MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ Modified: head/sys/dev/mpr/mpr_mapping.c ============================================================================== --- head/sys/dev/mpr/mpr_mapping.c Thu May 28 18:06:03 2015 (r283659) +++ head/sys/dev/mpr/mpr_mapping.c Thu May 28 18:14:55 2015 (r283660) @@ -1,6 +1,5 @@ /*- - * Copyright (c) 2011-2015 LSI Corp. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2011-2014 LSI Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -24,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD + * LSI MPT-Fusion Host Adapter FreeBSD */ #include @@ -327,13 +326,11 @@ _mapping_get_high_missing_mt_idx(struct { u32 map_idx, high_idx = MPR_ENCTABLE_BAD_IDX; u8 high_missing_count = 0; - u32 start_idx, end_idx, start_idx_ir, end_idx_ir; + u32 start_idx, end_idx, start_idx_ir = 0, end_idx_ir; struct dev_mapping_table *mt_entry; u16 ioc_pg8_flags = le16toh(sc->ioc_pg8.Flags); start_idx = 0; - start_idx_ir = 0; - end_idx_ir = 0; end_idx = sc->max_devices; if (ioc_pg8_flags & MPI2_IOCPAGE8_FLAGS_RESERVED_TARGETID_0) start_idx = 1; @@ -890,14 +887,14 @@ _mapping_get_dev_info(struct mpr_softc * u16 ioc_pg8_flags = le16toh(sc->ioc_pg8.Flags); Mpi2ConfigReply_t mpi_reply; Mpi2SasDevicePage0_t sas_device_pg0; - u8 entry, enc_idx, phy_idx, sata_end_device; + u8 entry, enc_idx, phy_idx; u32 map_idx, index, device_info; struct _map_phy_change *phy_change, *tmp_phy_change; uint64_t sas_address; struct enc_mapping_table *et_entry; struct dev_mapping_table *mt_entry; u8 add_code = MPI2_EVENT_SAS_TOPO_RC_TARG_ADDED; - int rc = 1; + int rc; for (entry = 0; entry < topo_change->num_entries; entry++) { phy_change = &topo_change->phy_details[entry]; @@ -911,36 +908,41 @@ _mapping_get_dev_info(struct mpr_softc * continue; } - /* - * Always get SATA Identify information because this is used - * to determine if Start/Stop Unit should be sent to the drive - * when the system is shutdown. - */ device_info = le32toh(sas_device_pg0.DeviceInfo); - sas_address = sas_device_pg0.SASAddress.High; - sas_address = (sas_address << 32) | - sas_device_pg0.SASAddress.Low; - sata_end_device = 0; - if ((device_info & MPI2_SAS_DEVICE_INFO_END_DEVICE) && - (device_info & MPI2_SAS_DEVICE_INFO_SATA_DEVICE)) { - sata_end_device = 1; - rc = mprsas_get_sas_address_for_sata_disk(sc, - &sas_address, phy_change->dev_handle, device_info, - &phy_change->is_SATA_SSD); - if (rc) { - mpr_dprint(sc, MPR_ERROR, "%s: failed to get " - "disk type (SSD or HDD) and SAS Address " - "for SATA device with handle 0x%04x\n", - __func__, phy_change->dev_handle); - } else { + if ((ioc_pg8_flags & MPI2_IOCPAGE8_FLAGS_MASK_MAPPING_MODE) == + MPI2_IOCPAGE8_FLAGS_DEVICE_PERSISTENCE_MAPPING) { + if ((device_info & MPI2_SAS_DEVICE_INFO_END_DEVICE) && + (device_info & MPI2_SAS_DEVICE_INFO_SATA_DEVICE)) { + rc = mprsas_get_sas_address_for_sata_disk(sc, + &sas_address, phy_change->dev_handle, + device_info); + if (rc) { + printf("%s: failed to compute the " + "hashed SAS Address for SATA " + "device with handle 0x%04x\n", + __func__, phy_change->dev_handle); + sas_address = + sas_device_pg0.SASAddress.High; + sas_address = (sas_address << 32) | + sas_device_pg0.SASAddress.Low; + } mpr_dprint(sc, MPR_INFO, "SAS Address for SATA " "device = %jx\n", sas_address); + } else { + sas_address = + sas_device_pg0.SASAddress.High; + sas_address = (sas_address << 32) | + sas_device_pg0.SASAddress.Low; } + } else { + sas_address = sas_device_pg0.SASAddress.High; + sas_address = (sas_address << 32) | + sas_device_pg0.SASAddress.Low; } - phy_change->physical_id = sas_address; phy_change->slot = le16toh(sas_device_pg0.Slot); - phy_change->device_info = le32toh(sas_device_pg0.DeviceInfo); + phy_change->device_info = + le32toh(sas_device_pg0.DeviceInfo); if ((ioc_pg8_flags & MPI2_IOCPAGE8_FLAGS_MASK_MAPPING_MODE) == MPI2_IOCPAGE8_FLAGS_ENCLOSURE_SLOT_MAPPING) { @@ -948,10 +950,10 @@ _mapping_get_dev_info(struct mpr_softc * topo_change->enc_handle); if (enc_idx == MPR_ENCTABLE_BAD_IDX) { phy_change->is_processed = 1; - mpr_dprint(sc, MPR_MAPPING, "%s: failed to add " - "the device with handle 0x%04x because the " - "enclosure is not in the mapping table\n", - __func__, phy_change->dev_handle); + printf("%s: failed to add the device with " + "handle 0x%04x because the enclosure is " + "not in the mapping table\n", __func__, + phy_change->dev_handle); continue; } if (!((phy_change->device_info & Modified: head/sys/dev/mpr/mpr_mapping.h ============================================================================== --- head/sys/dev/mpr/mpr_mapping.h Thu May 28 18:06:03 2015 (r283659) +++ head/sys/dev/mpr/mpr_mapping.h Thu May 28 18:14:55 2015 (r283660) @@ -1,6 +1,5 @@ /*- - * Copyright (c) 2011-2015 LSI Corp. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2011-2014 LSI Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -24,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD + * LSI MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ @@ -39,7 +38,6 @@ * @dev_handle: device handle for the device pointed by this entry * @slot: slot ID * @is_processed: Flag to indicate whether this entry is processed or not - * @is_SATA_SSD: 1 if this is a SATA device AND an SSD, 0 otherwise */ struct _map_phy_change { uint64_t physical_id; @@ -48,8 +46,6 @@ struct _map_phy_change { uint16_t slot; uint8_t reason; uint8_t is_processed; - uint8_t is_SATA_SSD; - uint8_t reserved; }; /** @@ -70,6 +66,6 @@ struct _map_topology_change { extern int mprsas_get_sas_address_for_sata_disk(struct mpr_softc *ioc, - u64 *sas_address, u16 handle, u32 device_info, u8 *is_SATA_SSD); + u64 *sas_address, u16 handle, u32 device_info); #endif Modified: head/sys/dev/mpr/mpr_pci.c ============================================================================== --- head/sys/dev/mpr/mpr_pci.c Thu May 28 18:06:03 2015 (r283659) +++ head/sys/dev/mpr/mpr_pci.c Thu May 28 18:14:55 2015 (r283660) @@ -27,7 +27,7 @@ #include __FBSDID("$FreeBSD$"); -/* PCI/PCI-X/PCIe bus interface for the Avago Tech (LSI) MPT3 controllers */ +/* PCI/PCI-X/PCIe bus interface for the LSI MPT2 controllers */ /* TODO Move headers to mprvar */ #include @@ -99,17 +99,17 @@ struct mpr_ident { const char *desc; } mpr_identifiers[] = { { MPI2_MFGPAGE_VENDORID_LSI, MPI25_MFGPAGE_DEVID_SAS3004, - 0xffff, 0xffff, 0, "Avago Technologies (LSI) SAS3004" }, + 0xffff, 0xffff, 0, "LSI SAS3004" }, { MPI2_MFGPAGE_VENDORID_LSI, MPI25_MFGPAGE_DEVID_SAS3008, - 0xffff, 0xffff, 0, "Avago Technologies (LSI) SAS3008" }, + 0xffff, 0xffff, 0, "LSI SAS3008" }, { MPI2_MFGPAGE_VENDORID_LSI, MPI25_MFGPAGE_DEVID_SAS3108_1, - 0xffff, 0xffff, 0, "Avago Technologies (LSI) SAS3108_1" }, + 0xffff, 0xffff, 0, "LSI SAS3108_1" }, { MPI2_MFGPAGE_VENDORID_LSI, MPI25_MFGPAGE_DEVID_SAS3108_2, - 0xffff, 0xffff, 0, "Avago Technologies (LSI) SAS3108_2" }, + 0xffff, 0xffff, 0, "LSI SAS3108_2" }, { MPI2_MFGPAGE_VENDORID_LSI, MPI25_MFGPAGE_DEVID_SAS3108_5, - 0xffff, 0xffff, 0, "Avago Technologies (LSI) SAS3108_5" }, + 0xffff, 0xffff, 0, "LSI SAS3108_5" }, { MPI2_MFGPAGE_VENDORID_LSI, MPI25_MFGPAGE_DEVID_SAS3108_6, - 0xffff, 0xffff, 0, "Avago Technologies (LSI) SAS3108_6" }, + 0xffff, 0xffff, 0, "LSI SAS3108_6" }, { 0, 0, 0, 0, 0, NULL } }; Modified: head/sys/dev/mpr/mpr_sas.c ============================================================================== --- head/sys/dev/mpr/mpr_sas.c Thu May 28 18:06:03 2015 (r283659) +++ head/sys/dev/mpr/mpr_sas.c Thu May 28 18:14:55 2015 (r283660) @@ -1,7 +1,6 @@ /*- * Copyright (c) 2009 Yahoo! Inc. - * Copyright (c) 2011-2015 LSI Corp. - * Copyright (c) 2013-2015 Avago Technologies + * Copyright (c) 2011-2014 LSI Corp. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -24,15 +23,12 @@ * 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. - * - * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD - * */ #include __FBSDID("$FreeBSD$"); -/* Communications core for Avago Technologies (LSI) MPT3 */ +/* Communications core for LSI MPT2 */ /* TODO Move headers to mprvar */ #include @@ -126,10 +122,14 @@ static void mprsas_scsiio_complete(struc static void mprsas_action_resetdev(struct mprsas_softc *, union ccb *); static void mprsas_resetdev_complete(struct mpr_softc *, struct mpr_command *); -static int mprsas_send_abort(struct mpr_softc *sc, struct mpr_command *tm, +static int mprsas_send_abort(struct mpr_softc *sc, struct mpr_command *tm, struct mpr_command *cm); +static int mprsas_send_reset(struct mpr_softc *sc, struct mpr_command *tm, + uint8_t type); static void mprsas_async(void *callback_arg, uint32_t code, struct cam_path *path, void *arg); +static void mprsas_prepare_ssu(struct mpr_softc *sc, struct cam_path *path, + struct ccb_getdev *cgd); #if (__FreeBSD_version < 901503) || \ ((__FreeBSD_version >= 1000000) && (__FreeBSD_version < 1000006)) static void mprsas_check_eedp(struct mpr_softc *sc, struct cam_path *path, @@ -142,12 +142,13 @@ static void mprsas_portenable_complete(s struct mpr_command *cm); #if __FreeBSD_version >= 900026 -static void mprsas_smpio_complete(struct mpr_softc *sc, - struct mpr_command *cm); +static void +mprsas_smpio_complete(struct mpr_softc *sc, struct mpr_command *cm); static void mprsas_send_smpcmd(struct mprsas_softc *sassc, - union ccb *ccb, uint64_t sasaddr); -static void mprsas_action_smpio(struct mprsas_softc *sassc, union ccb *ccb); -#endif //FreeBSD_version >= 900026 + union ccb *ccb, uint64_t sasaddr); +static void +mprsas_action_smpio(struct mprsas_softc *sassc, union ccb *ccb); +#endif struct mprsas_target * mprsas_find_target_by_handle(struct mprsas_softc *sassc, int start, @@ -229,7 +230,7 @@ mprsas_startup_decrement(struct mprsas_s } } -/* The firmware requires us to stop sending commands when we're doing task +/* LSI's firmware requires us to stop sending commands when we're doing task * management, so refcount the TMs and keep the simq frozen when any are in * use. */ @@ -240,31 +241,35 @@ mprsas_alloc_tm(struct mpr_softc *sc) MPR_FUNCTRACE(sc); tm = mpr_alloc_high_priority_command(sc); + if (tm != NULL) { + if (sc->sassc->tm_count++ == 0) { + mpr_dprint(sc, MPR_RECOVERY, + "%s freezing simq\n", __func__); + xpt_freeze_simq(sc->sassc->sim, 1); + } + mpr_dprint(sc, MPR_RECOVERY, "%s tm_count %u\n", __func__, + sc->sassc->tm_count); + } return tm; } void mprsas_free_tm(struct mpr_softc *sc, struct mpr_command *tm) { - MPR_FUNCTRACE(sc); + mpr_dprint(sc, MPR_TRACE, "%s", __func__); if (tm == NULL) return; - /* - * For TM's the devq is frozen for the device. Unfreeze it here and - * free the resources used for freezing the devq. Must clear the - * INRESET flag as well or scsi I/O will not work. - */ - if (tm->cm_targ != NULL) { - tm->cm_targ->flags &= ~MPRSAS_TARGET_INRESET; - } - if (tm->cm_ccb) { - mpr_dprint(sc, MPR_INFO, "Unfreezing devq for target ID %d\n", - tm->cm_targ->tid); - xpt_release_devq(tm->cm_ccb->ccb_h.path, 1, TRUE); - xpt_free_path(tm->cm_ccb->ccb_h.path); - xpt_free_ccb(tm->cm_ccb); + /* if there are no TMs in use, we can release the simq. We use our + * own refcount so that it's easier for a diag reset to cleanup and + * release the simq. + */ + if (--sc->sassc->tm_count == 0) { + mpr_dprint(sc, MPR_RECOVERY, "%s releasing simq\n", __func__); + xpt_release_simq(sc->sassc->sim, 1); } + mpr_dprint(sc, MPR_RECOVERY, "%s tm_count %u\n", __func__, + sc->sassc->tm_count); mpr_free_high_priority_command(sc, tm); } @@ -293,8 +298,8 @@ mprsas_rescan_target(struct mpr_softc *s return; } - if (xpt_create_path(&ccb->ccb_h.path, NULL, pathid, targetid, - CAM_LUN_WILDCARD) != CAM_REQ_CMP) { + if (xpt_create_path(&ccb->ccb_h.path, NULL, pathid, + targetid, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { mpr_dprint(sc, MPR_ERROR, "unable to create path for rescan\n"); xpt_free_ccb(ccb); return; @@ -468,16 +473,11 @@ mprsas_prepare_volume_remove(struct mprs MPI2_REQ_DESCRIPT_FLAGS_HIGH_PRIORITY; cm->cm_complete = mprsas_remove_volume; cm->cm_complete_data = (void *)(uintptr_t)handle; - - mpr_dprint(sc, MPR_INFO, "%s: Sending reset for target ID %d\n", - __func__, targ->tid); - mprsas_prepare_for_tm(sc, cm, targ, CAM_LUN_WILDCARD); - mpr_map_command(sc, cm); } /* - * The MPT3 firmware performs debounce on the link to avoid transient link + * The MPT2 firmware performs debounce on the link to avoid transient link * errors and false removals. When it does decide that link has been lost * and a device needs to go away, it expects that the host will perform a * target reset and then an op remove. The reset has the side-effect of @@ -532,11 +532,6 @@ mprsas_prepare_remove(struct mprsas_soft MPI2_REQ_DESCRIPT_FLAGS_HIGH_PRIORITY; cm->cm_complete = mprsas_remove_device; cm->cm_complete_data = (void *)(uintptr_t)handle; - - mpr_dprint(sc, MPR_INFO, "%s: Sending reset for target ID %d\n", - __func__, targ->tid); - mprsas_prepare_for_tm(sc, cm, targ, CAM_LUN_WILDCARD); - mpr_map_command(sc, cm); } @@ -601,10 +596,10 @@ mprsas_remove_device(struct mpr_softc *s mpr_map_command(sc, tm); - mpr_dprint(sc, MPR_INFO, "clearing target %u handle 0x%04x\n", + mpr_dprint(sc, MPR_XINFO, "clearing target %u handle 0x%04x\n", targ->tid, handle); if (targ->encl_level_valid) { - mpr_dprint(sc, MPR_INFO, "At enclosure level %d, slot %d, " + mpr_dprint(sc, MPR_XINFO, "At enclosure level %d, slot %d, " "connector name (%4s)\n", targ->encl_level, targ->encl_slot, targ->connector_name); } @@ -613,7 +608,7 @@ mprsas_remove_device(struct mpr_softc *s mpr_dprint(sc, MPR_XINFO, "Completing missed command %p\n", tm); ccb = tm->cm_complete_data; - mprsas_set_ccbstatus(ccb, CAM_DEV_NOT_THERE); + ccb->ccb_h.status = CAM_DEV_NOT_THERE; mprsas_scsiio_complete(sc, tm); } } @@ -731,7 +726,7 @@ mpr_attach_sas(struct mpr_softc *sc) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Thu May 28 18:24:28 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 64195411; Thu, 28 May 2015 18:24:28 +0000 (UTC) (envelope-from slm@FreeBSD.org) Received: from svn.freebsd.org (svn.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 51D6D8C4; Thu, 28 May 2015 18:24:28 +0000 (UTC) (envelope-from slm@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4SIOSEc079713; Thu, 28 May 2015 18:24:28 GMT (envelope-from slm@FreeBSD.org) Received: (from slm@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4SIONL7079682; Thu, 28 May 2015 18:24:23 GMT (envelope-from slm@FreeBSD.org) Message-Id: <201505281824.t4SIONL7079682@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: slm set sender to slm@FreeBSD.org using -f From: Stephen McConnell Date: Thu, 28 May 2015 18:24:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283661 - in head/sys/dev/mpr: . mpi X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 18:24:28 -0000 Author: slm Date: Thu May 28 18:24:22 2015 New Revision: 283661 URL: https://svnweb.freebsd.org/changeset/base/283661 Log: The wrong commit message was given with r283632. This is the correct message. - Updated all files with 2015 Avago copyright, and updated LSI's copyright dates. - Changed all of the PCI device strings from LSI to Avago Technologies (LSI). - Added a sysctl variable to control how StartStopUnit behavior works. User can select to spin down disks based on if disk is SSD or HDD. - Inquiry data is required to tell if a disk will support SSU at shutdown or not. Due to the addition of mpssas_async, which gets Advanced Info but not Inquiry data, the setting of supports_SSU was moved to the mpssas_scsiio_complete function, which snoops for any Inquiry commands. And, since disks are shutdown as a target and not a LUN, this process was simplified by basing it on targets and not LUNs. - Added a sysctl variable that sets the amount of time to retry after sending a failed SATA ID command. This helps with some bad disks and large disks that require a lot of time to spin up. Part of this change was to add a callout to handle timeouts with the SATA ID command. The callout function is called mpssas_ata_id_timeout(). (Fixes PR 191348) - Changed the way resets work by allowing I/O to continue to devices that are not currently under a reset condition. This uses devq's instead of simq's and makes use of the MPSSAS_TARGET_INRESET flag. This change also adds a function called mpssas_prepare_tm(). - Some changes were made to reduce code duplication when getting a SAS address for a SATA disk. - Fixed some formatting and whitespace. - Bump version of mps driver to 9.255.01.00-fbsd PR: 191348 Reviewed by: ken, scottl Approved by: ken, scottl MFC after: 1 week Modified: head/sys/dev/mpr/mpi/mpi2.h head/sys/dev/mpr/mpi/mpi2_cnfg.h head/sys/dev/mpr/mpi/mpi2_hbd.h head/sys/dev/mpr/mpi/mpi2_history.txt head/sys/dev/mpr/mpi/mpi2_init.h head/sys/dev/mpr/mpi/mpi2_ioc.h head/sys/dev/mpr/mpi/mpi2_ra.h head/sys/dev/mpr/mpi/mpi2_raid.h head/sys/dev/mpr/mpi/mpi2_sas.h head/sys/dev/mpr/mpi/mpi2_targ.h head/sys/dev/mpr/mpi/mpi2_tool.h head/sys/dev/mpr/mpi/mpi2_type.h head/sys/dev/mpr/mpr.c head/sys/dev/mpr/mpr_config.c head/sys/dev/mpr/mpr_ioctl.h head/sys/dev/mpr/mpr_mapping.c head/sys/dev/mpr/mpr_mapping.h head/sys/dev/mpr/mpr_pci.c head/sys/dev/mpr/mpr_sas.c head/sys/dev/mpr/mpr_sas.h head/sys/dev/mpr/mpr_sas_lsi.c head/sys/dev/mpr/mpr_user.c head/sys/dev/mpr/mprvar.h Modified: head/sys/dev/mpr/mpi/mpi2.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2.h Thu May 28 18:14:55 2015 (r283660) +++ head/sys/dev/mpr/mpi/mpi2.h Thu May 28 18:24:22 2015 (r283661) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2013 LSI Corp. + * Copyright (c) 2012-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,13 +27,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2000-2013 LSI Corporation. + * Copyright (c) 2000-2015 LSI Corporation. + * Copyright (c) 2013-2015 Avago Technologies * * * Name: mpi2.h Modified: head/sys/dev/mpr/mpi/mpi2_cnfg.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_cnfg.h Thu May 28 18:14:55 2015 (r283660) +++ head/sys/dev/mpr/mpi/mpi2_cnfg.h Thu May 28 18:24:22 2015 (r283661) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2013 LSI Corp. + * Copyright (c) 2012-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,13 +27,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2000-2013 LSI Corporation. + * Copyright (c) 2000-2015 LSI Corporation. + * Copyright (c) 2013-2015 Avago Technologies * * * Name: mpi2_cnfg.h Modified: head/sys/dev/mpr/mpi/mpi2_hbd.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_hbd.h Thu May 28 18:14:55 2015 (r283660) +++ head/sys/dev/mpr/mpi/mpi2_hbd.h Thu May 28 18:24:22 2015 (r283661) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2013 LSI Corp. + * Copyright (c) 2012-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,13 +27,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2009-2011 LSI Corporation. + * Copyright (c) 2009-2015 LSI Corporation. + * Copyright (c) 2013-2015 Avago Technologies * * * Name: mpi2_hbd.h Modified: head/sys/dev/mpr/mpi/mpi2_history.txt ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_history.txt Thu May 28 18:14:55 2015 (r283660) +++ head/sys/dev/mpr/mpi/mpi2_history.txt Thu May 28 18:24:22 2015 (r283661) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2013 LSI Corp. + * Copyright (c) 2012-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,7 +27,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ @@ -35,7 +36,8 @@ Fusion-MPT MPI 2.0 / 2.5 Header File Change History ============================== - Copyright (c) 2000-2013 LSI Corporation. + Copyright (c) 2000-2015 LSI Corporation. + Copyright (c) 2013-2015 Avago Technologies --------------------------------------- Header Set Release Version: 02.00.33 Modified: head/sys/dev/mpr/mpi/mpi2_init.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_init.h Thu May 28 18:14:55 2015 (r283660) +++ head/sys/dev/mpr/mpi/mpi2_init.h Thu May 28 18:24:22 2015 (r283661) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2013 LSI Corp. + * Copyright (c) 2012-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,13 +27,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2000-2013 LSI Corporation. + * Copyright (c) 2000-2015 LSI Corporation. + * Copyright (c) 2013-2015 Avago Technologies * * * Name: mpi2_init.h Modified: head/sys/dev/mpr/mpi/mpi2_ioc.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_ioc.h Thu May 28 18:14:55 2015 (r283660) +++ head/sys/dev/mpr/mpi/mpi2_ioc.h Thu May 28 18:24:22 2015 (r283661) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2013 LSI Corp. + * Copyright (c) 2012-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,13 +27,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2000-2013 LSI Corporation. + * Copyright (c) 2000-2015 LSI Corporation. + * Copyright (c) 2013-2015 Avago Technologies * * * Name: mpi2_ioc.h Modified: head/sys/dev/mpr/mpi/mpi2_ra.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_ra.h Thu May 28 18:14:55 2015 (r283660) +++ head/sys/dev/mpr/mpi/mpi2_ra.h Thu May 28 18:24:22 2015 (r283661) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2013 LSI Corp. + * Copyright (c) 2012-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,13 +27,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2009 LSI Corporation. + * Copyright (c) 2012-2015 LSI Corporation. + * Copyright (c) 2013-2015 Avago Technologies * * * Name: mpi2_ra.h Modified: head/sys/dev/mpr/mpi/mpi2_raid.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_raid.h Thu May 28 18:14:55 2015 (r283660) +++ head/sys/dev/mpr/mpi/mpi2_raid.h Thu May 28 18:24:22 2015 (r283661) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2013 LSI Corp. + * Copyright (c) 2012-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,13 +27,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2000-2013 LSI Corporation. + * Copyright (c) 2000-2015 LSI Corporation. + * Copyright (c) 2013-2015 Avago Technologies * * * Name: mpi2_raid.h Modified: head/sys/dev/mpr/mpi/mpi2_sas.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_sas.h Thu May 28 18:14:55 2015 (r283660) +++ head/sys/dev/mpr/mpi/mpi2_sas.h Thu May 28 18:24:22 2015 (r283661) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2013 LSI Corp. + * Copyright (c) 2012-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,13 +27,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2000-2013 LSI Corporation. + * Copyright (c) 2000-2015 LSI Corporation. + * Copyright (c) 2013-2015 Avago Technologies * * * Name: mpi2_sas.h Modified: head/sys/dev/mpr/mpi/mpi2_targ.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_targ.h Thu May 28 18:14:55 2015 (r283660) +++ head/sys/dev/mpr/mpi/mpi2_targ.h Thu May 28 18:24:22 2015 (r283661) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2013 LSI Corp. + * Copyright (c) 2012-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,13 +27,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2000-2012 LSI Corporation. + * Copyright (c) 2000-2015 LSI Corporation. + * Copyright (c) 2013-2015 Avago Technologies * * * Name: mpi2_targ.h Modified: head/sys/dev/mpr/mpi/mpi2_tool.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_tool.h Thu May 28 18:14:55 2015 (r283660) +++ head/sys/dev/mpr/mpi/mpi2_tool.h Thu May 28 18:24:22 2015 (r283661) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2013 LSI Corp. + * Copyright (c) 2012-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,13 +27,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2000-2013 LSI Corporation. + * Copyright (c) 2000-2015 LSI Corporation. + * Copyright (c) 2013-2015 Avago Technologies * * * Name: mpi2_tool.h Modified: head/sys/dev/mpr/mpi/mpi2_type.h ============================================================================== --- head/sys/dev/mpr/mpi/mpi2_type.h Thu May 28 18:14:55 2015 (r283660) +++ head/sys/dev/mpr/mpi/mpi2_type.h Thu May 28 18:24:22 2015 (r283661) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2013 LSI Corp. + * Copyright (c) 2012-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -26,13 +27,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ /* - * Copyright (c) 2000-2007 LSI Corporation. + * Copyright (c) 2000-2015 LSI Corporation. + * Copyright (c) 2013-2015 Avago Technologies * * * Name: mpi2_type.h Modified: head/sys/dev/mpr/mpr.c ============================================================================== --- head/sys/dev/mpr/mpr.c Thu May 28 18:14:55 2015 (r283660) +++ head/sys/dev/mpr/mpr.c Thu May 28 18:24:22 2015 (r283661) @@ -1,6 +1,7 @@ /*- * Copyright (c) 2009 Yahoo! Inc. - * Copyright (c) 2012-2014 LSI Corp. + * Copyright (c) 2011-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -24,12 +25,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD + * */ #include __FBSDID("$FreeBSD$"); -/* Communications core for LSI MPT2 */ +/* Communications core for Avago Technologies (LSI) MPT3 */ /* TODO Move headers to mprvar */ #include @@ -72,7 +75,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include static int mpr_diag_reset(struct mpr_softc *sc, int sleep_flag); static int mpr_init_queues(struct mpr_softc *sc); @@ -352,11 +354,9 @@ mpr_transition_operational(struct mpr_so static int mpr_iocfacts_allocate(struct mpr_softc *sc, uint8_t attaching) { - int error, i; + int error; Mpi2IOCFactsReply_t saved_facts; uint8_t saved_mode, reallocating; - struct mprsas_lun *lun, *lun_tmp; - struct mprsas_target *targ; mpr_dprint(sc, MPR_TRACE, "%s\n", __func__); @@ -513,27 +513,7 @@ mpr_iocfacts_allocate(struct mpr_softc * */ if (reallocating) { mpr_iocfacts_free(sc); - - /* - * The number of targets is based on IOC Facts, so free all of - * the allocated LUNs for each target and then the target buffer - * itself. - */ - for (i=0; i< saved_facts.MaxTargets; i++) { - targ = &sc->sassc->targets[i]; - SLIST_FOREACH_SAFE(lun, &targ->luns, lun_link, - lun_tmp) { - free(lun, M_MPR); - } - } - free(sc->sassc->targets, M_MPR); - - sc->sassc->targets = malloc(sizeof(struct mprsas_target) * - sc->facts->MaxTargets, M_MPR, M_WAITOK|M_ZERO); - if (!sc->sassc->targets) { - panic("%s failed to alloc targets with error %d\n", - __func__, ENOMEM); - } + mprsas_realloc_targets(sc, saved_facts.MaxTargets); } /* @@ -775,7 +755,7 @@ mpr_reinit(struct mpr_softc *sc) /* the end of discovery will release the simq, so we're done. */ mpr_dprint(sc, MPR_INFO, "%s finished sc %p post %u free %u\n", __func__, sc, sc->replypostindex, sc->replyfreeindex); - mprsas_release_simq_reinit(sassc); + mprsas_release_simq_reinit(sassc); return 0; } @@ -816,7 +796,8 @@ mpr_wait_db_ack(struct mpr_softc *sc, in * 0.5 milisecond */ if (mtx_owned(&sc->mpr_mtx) && sleep_flag == CAN_SLEEP) - msleep(&sc->msleep_fake_chan, &sc->mpr_mtx, 0, "mprdba", hz/1000); + msleep(&sc->msleep_fake_chan, &sc->mpr_mtx, 0, "mprdba", + hz/1000); else if (sleep_flag == CAN_SLEEP) pause("mprdba", hz/1000); else @@ -982,7 +963,7 @@ mpr_enqueue_request(struct mpr_softc *sc reply_descriptor rd; MPR_FUNCTRACE(sc); - mpr_dprint(sc, MPR_TRACE, "%s SMID %u cm %p ccb %p\n", __func__, + mpr_dprint(sc, MPR_TRACE, "SMID %u cm %p ccb %p\n", cm->cm_desc.Default.SMID, cm, cm->cm_ccb); if (sc->mpr_flags & MPR_FLAGS_ATTACH_DONE && !(sc->mpr_flags & @@ -1372,6 +1353,8 @@ mpr_get_tunables(struct mpr_softc *sc) sc->disable_msix = 0; sc->disable_msi = 0; sc->max_chains = MPR_CHAIN_FRAMES; + sc->enable_ssu = MPR_SSU_ENABLE_SSD_DISABLE_HDD; + sc->spinup_wait_time = DEFAULT_SPINUP_WAIT; /* * Grab the global variables. @@ -1380,6 +1363,8 @@ mpr_get_tunables(struct mpr_softc *sc) TUNABLE_INT_FETCH("hw.mpr.disable_msix", &sc->disable_msix); TUNABLE_INT_FETCH("hw.mpr.disable_msi", &sc->disable_msi); TUNABLE_INT_FETCH("hw.mpr.max_chains", &sc->max_chains); + TUNABLE_INT_FETCH("hw.mpr.enable_ssu", &sc->enable_ssu); + TUNABLE_INT_FETCH("hw.mpr.spinup_wait_time", &sc->spinup_wait_time); /* Grab the unit-instance variables */ snprintf(tmpstr, sizeof(tmpstr), "dev.mpr.%d.debug_level", @@ -1402,6 +1387,14 @@ mpr_get_tunables(struct mpr_softc *sc) snprintf(tmpstr, sizeof(tmpstr), "dev.mpr.%d.exclude_ids", device_get_unit(sc->mpr_dev)); TUNABLE_STR_FETCH(tmpstr, sc->exclude_ids, sizeof(sc->exclude_ids)); + + snprintf(tmpstr, sizeof(tmpstr), "dev.mpr.%d.enable_ssu", + device_get_unit(sc->mpr_dev)); + TUNABLE_INT_FETCH(tmpstr, &sc->enable_ssu); + + snprintf(tmpstr, sizeof(tmpstr), "dev.mpr.%d.spinup_wait_time", + device_get_unit(sc->mpr_dev)); + TUNABLE_INT_FETCH(tmpstr, &sc->spinup_wait_time); } static void @@ -1474,11 +1467,20 @@ mpr_setup_sysctl(struct mpr_softc *sc) OID_AUTO, "max_chains", CTLFLAG_RD, &sc->max_chains, 0,"maximum chain frames that will be allocated"); + SYSCTL_ADD_INT(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), + OID_AUTO, "enable_ssu", CTLFLAG_RW, &sc->enable_ssu, 0, + "enable SSU to SATA SSD/HDD at shutdown"); + #if __FreeBSD_version >= 900030 SYSCTL_ADD_UQUAD(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), OID_AUTO, "chain_alloc_fail", CTLFLAG_RD, &sc->chain_alloc_fail, "chain allocation failures"); #endif //FreeBSD_version >= 900030 + + SYSCTL_ADD_INT(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), + OID_AUTO, "spinup_wait_time", CTLFLAG_RD, + &sc->spinup_wait_time, DEFAULT_SPINUP_WAIT, "seconds to wait for " + "spinup after SATA ID error"); } int @@ -2096,7 +2098,7 @@ mpr_update_events(struct mpr_softc *sc, (reply->IOCStatus & MPI2_IOCSTATUS_MASK) != MPI2_IOCSTATUS_SUCCESS) error = ENXIO; - if(reply) + if (reply) mpr_print_event(sc, reply); mpr_dprint(sc, MPR_TRACE, "%s finished error %d\n", __func__, error); @@ -2163,8 +2165,8 @@ mpr_deregister_events(struct mpr_softc * * Add a chain element as the next SGE for the specified command. * Reset cm_sge and cm_sgesize to indicate all the available space. Chains are * only required for IEEE commands. Therefore there is no code for commands - * that have the MPR_CM_FLAGS_SGE_SIMPLE flag set (and those commands shouldn't - * be requesting chains). + * that have the MPR_CM_FLAGS_SGE_SIMPLE flag set (and those commands + * shouldn't be requesting chains). */ static int mpr_add_chain(struct mpr_command *cm, int segsleft) @@ -2246,9 +2248,9 @@ mpr_add_chain(struct mpr_command *cm, in /* * Add one scatter-gather element to the scatter-gather list for a command. - * Maintain cm_sglsize and cm_sge as the remaining size and pointer to the next - * SGE to fill in, respectively. In Gen3, the MPI SGL does not have a chain, - * so don't consider any chain additions. + * Maintain cm_sglsize and cm_sge as the remaining size and pointer to the + * next SGE to fill in, respectively. In Gen3, the MPI SGL does not have a + * chain, so don't consider any chain additions. */ int mpr_push_sge(struct mpr_command *cm, MPI2_SGE_SIMPLE64 *sge, size_t len, @@ -2660,7 +2662,7 @@ mpr_request_polled(struct mpr_softc *sc, } } - if(error) { + if (error) { mpr_dprint(sc, MPR_FAULT, "Calling Reinit from %s\n", __func__); rc = mpr_reinit(sc); mpr_dprint(sc, MPR_FAULT, "Reinit %s\n", (rc == 0) ? @@ -2717,9 +2719,12 @@ mpr_read_config_page(struct mpr_softc *s cm->cm_data = params->buffer; cm->cm_length = params->length; - cm->cm_sge = &req->PageBufferSGE; - cm->cm_sglsize = sizeof(MPI2_SGE_IO_UNION); - cm->cm_flags = MPR_CM_FLAGS_SGE_SIMPLE | MPR_CM_FLAGS_DATAIN; + if (cm->cm_data != NULL) { + cm->cm_sge = &req->PageBufferSGE; + cm->cm_sglsize = sizeof(MPI2_SGE_IO_UNION); + cm->cm_flags = MPR_CM_FLAGS_SGE_SIMPLE | MPR_CM_FLAGS_DATAIN; + } else + cm->cm_sge = NULL; cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; cm->cm_complete_data = params; @@ -2776,9 +2781,12 @@ mpr_config_complete(struct mpr_softc *sc goto done; } params->status = reply->IOCStatus; - if (params->hdr.Ext.ExtPageType != 0) { + if (params->hdr.Struct.PageType == MPI2_CONFIG_PAGETYPE_EXTENDED) { params->hdr.Ext.ExtPageType = reply->ExtPageType; params->hdr.Ext.ExtPageLength = reply->ExtPageLength; + params->hdr.Ext.PageType = reply->Header.PageType; + params->hdr.Ext.PageNumber = reply->Header.PageNumber; + params->hdr.Ext.PageVersion = reply->Header.PageVersion; } else { params->hdr.Struct.PageType = reply->Header.PageType; params->hdr.Struct.PageNumber = reply->Header.PageNumber; Modified: head/sys/dev/mpr/mpr_config.c ============================================================================== --- head/sys/dev/mpr/mpr_config.c Thu May 28 18:14:55 2015 (r283660) +++ head/sys/dev/mpr/mpr_config.c Thu May 28 18:24:22 2015 (r283661) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2011-2014 LSI Corp. + * Copyright (c) 2011-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -23,7 +24,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD */ #include Modified: head/sys/dev/mpr/mpr_ioctl.h ============================================================================== --- head/sys/dev/mpr/mpr_ioctl.h Thu May 28 18:14:55 2015 (r283660) +++ head/sys/dev/mpr/mpr_ioctl.h Thu May 28 18:24:22 2015 (r283661) @@ -27,12 +27,13 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD userland interface + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD userland interface * * $FreeBSD$ */ /*- - * Copyright (c) 2011-2014 LSI Corp. + * Copyright (c) 2011-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -56,7 +57,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ Modified: head/sys/dev/mpr/mpr_mapping.c ============================================================================== --- head/sys/dev/mpr/mpr_mapping.c Thu May 28 18:14:55 2015 (r283660) +++ head/sys/dev/mpr/mpr_mapping.c Thu May 28 18:24:22 2015 (r283661) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2011-2014 LSI Corp. + * Copyright (c) 2011-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -23,7 +24,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD */ #include @@ -326,11 +327,13 @@ _mapping_get_high_missing_mt_idx(struct { u32 map_idx, high_idx = MPR_ENCTABLE_BAD_IDX; u8 high_missing_count = 0; - u32 start_idx, end_idx, start_idx_ir = 0, end_idx_ir; + u32 start_idx, end_idx, start_idx_ir, end_idx_ir; struct dev_mapping_table *mt_entry; u16 ioc_pg8_flags = le16toh(sc->ioc_pg8.Flags); start_idx = 0; + start_idx_ir = 0; + end_idx_ir = 0; end_idx = sc->max_devices; if (ioc_pg8_flags & MPI2_IOCPAGE8_FLAGS_RESERVED_TARGETID_0) start_idx = 1; @@ -887,14 +890,14 @@ _mapping_get_dev_info(struct mpr_softc * u16 ioc_pg8_flags = le16toh(sc->ioc_pg8.Flags); Mpi2ConfigReply_t mpi_reply; Mpi2SasDevicePage0_t sas_device_pg0; - u8 entry, enc_idx, phy_idx; + u8 entry, enc_idx, phy_idx, sata_end_device; u32 map_idx, index, device_info; struct _map_phy_change *phy_change, *tmp_phy_change; uint64_t sas_address; struct enc_mapping_table *et_entry; struct dev_mapping_table *mt_entry; u8 add_code = MPI2_EVENT_SAS_TOPO_RC_TARG_ADDED; - int rc; + int rc = 1; for (entry = 0; entry < topo_change->num_entries; entry++) { phy_change = &topo_change->phy_details[entry]; @@ -908,41 +911,36 @@ _mapping_get_dev_info(struct mpr_softc * continue; } + /* + * Always get SATA Identify information because this is used + * to determine if Start/Stop Unit should be sent to the drive + * when the system is shutdown. + */ device_info = le32toh(sas_device_pg0.DeviceInfo); - if ((ioc_pg8_flags & MPI2_IOCPAGE8_FLAGS_MASK_MAPPING_MODE) == - MPI2_IOCPAGE8_FLAGS_DEVICE_PERSISTENCE_MAPPING) { - if ((device_info & MPI2_SAS_DEVICE_INFO_END_DEVICE) && - (device_info & MPI2_SAS_DEVICE_INFO_SATA_DEVICE)) { - rc = mprsas_get_sas_address_for_sata_disk(sc, - &sas_address, phy_change->dev_handle, - device_info); - if (rc) { - printf("%s: failed to compute the " - "hashed SAS Address for SATA " - "device with handle 0x%04x\n", - __func__, phy_change->dev_handle); - sas_address = - sas_device_pg0.SASAddress.High; - sas_address = (sas_address << 32) | - sas_device_pg0.SASAddress.Low; - } + sas_address = sas_device_pg0.SASAddress.High; + sas_address = (sas_address << 32) | + sas_device_pg0.SASAddress.Low; + sata_end_device = 0; + if ((device_info & MPI2_SAS_DEVICE_INFO_END_DEVICE) && + (device_info & MPI2_SAS_DEVICE_INFO_SATA_DEVICE)) { + sata_end_device = 1; + rc = mprsas_get_sas_address_for_sata_disk(sc, + &sas_address, phy_change->dev_handle, device_info, + &phy_change->is_SATA_SSD); + if (rc) { + mpr_dprint(sc, MPR_ERROR, "%s: failed to get " + "disk type (SSD or HDD) and SAS Address " + "for SATA device with handle 0x%04x\n", + __func__, phy_change->dev_handle); + } else { mpr_dprint(sc, MPR_INFO, "SAS Address for SATA " "device = %jx\n", sas_address); - } else { - sas_address = - sas_device_pg0.SASAddress.High; - sas_address = (sas_address << 32) | - sas_device_pg0.SASAddress.Low; } - } else { - sas_address = sas_device_pg0.SASAddress.High; - sas_address = (sas_address << 32) | - sas_device_pg0.SASAddress.Low; } + phy_change->physical_id = sas_address; phy_change->slot = le16toh(sas_device_pg0.Slot); - phy_change->device_info = - le32toh(sas_device_pg0.DeviceInfo); + phy_change->device_info = le32toh(sas_device_pg0.DeviceInfo); if ((ioc_pg8_flags & MPI2_IOCPAGE8_FLAGS_MASK_MAPPING_MODE) == MPI2_IOCPAGE8_FLAGS_ENCLOSURE_SLOT_MAPPING) { @@ -950,10 +948,10 @@ _mapping_get_dev_info(struct mpr_softc * topo_change->enc_handle); if (enc_idx == MPR_ENCTABLE_BAD_IDX) { phy_change->is_processed = 1; - printf("%s: failed to add the device with " - "handle 0x%04x because the enclosure is " - "not in the mapping table\n", __func__, - phy_change->dev_handle); + mpr_dprint(sc, MPR_MAPPING, "%s: failed to add " + "the device with handle 0x%04x because the " + "enclosure is not in the mapping table\n", + __func__, phy_change->dev_handle); continue; } if (!((phy_change->device_info & Modified: head/sys/dev/mpr/mpr_mapping.h ============================================================================== --- head/sys/dev/mpr/mpr_mapping.h Thu May 28 18:14:55 2015 (r283660) +++ head/sys/dev/mpr/mpr_mapping.h Thu May 28 18:24:22 2015 (r283661) @@ -1,5 +1,6 @@ /*- - * Copyright (c) 2011-2014 LSI Corp. + * Copyright (c) 2011-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -23,7 +24,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * LSI MPT-Fusion Host Adapter FreeBSD + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD * * $FreeBSD$ */ @@ -38,6 +39,7 @@ * @dev_handle: device handle for the device pointed by this entry * @slot: slot ID * @is_processed: Flag to indicate whether this entry is processed or not + * @is_SATA_SSD: 1 if this is a SATA device AND an SSD, 0 otherwise */ struct _map_phy_change { uint64_t physical_id; @@ -46,6 +48,8 @@ struct _map_phy_change { uint16_t slot; uint8_t reason; uint8_t is_processed; + uint8_t is_SATA_SSD; + uint8_t reserved; }; /** @@ -66,6 +70,6 @@ struct _map_topology_change { extern int mprsas_get_sas_address_for_sata_disk(struct mpr_softc *ioc, - u64 *sas_address, u16 handle, u32 device_info); + u64 *sas_address, u16 handle, u32 device_info, u8 *is_SATA_SSD); #endif Modified: head/sys/dev/mpr/mpr_pci.c ============================================================================== --- head/sys/dev/mpr/mpr_pci.c Thu May 28 18:14:55 2015 (r283660) +++ head/sys/dev/mpr/mpr_pci.c Thu May 28 18:24:22 2015 (r283661) @@ -27,7 +27,7 @@ #include __FBSDID("$FreeBSD$"); -/* PCI/PCI-X/PCIe bus interface for the LSI MPT2 controllers */ +/* PCI/PCI-X/PCIe bus interface for the Avago Tech (LSI) MPT3 controllers */ /* TODO Move headers to mprvar */ #include @@ -99,17 +99,17 @@ struct mpr_ident { const char *desc; } mpr_identifiers[] = { { MPI2_MFGPAGE_VENDORID_LSI, MPI25_MFGPAGE_DEVID_SAS3004, - 0xffff, 0xffff, 0, "LSI SAS3004" }, + 0xffff, 0xffff, 0, "Avago Technologies (LSI) SAS3004" }, { MPI2_MFGPAGE_VENDORID_LSI, MPI25_MFGPAGE_DEVID_SAS3008, - 0xffff, 0xffff, 0, "LSI SAS3008" }, + 0xffff, 0xffff, 0, "Avago Technologies (LSI) SAS3008" }, { MPI2_MFGPAGE_VENDORID_LSI, MPI25_MFGPAGE_DEVID_SAS3108_1, - 0xffff, 0xffff, 0, "LSI SAS3108_1" }, + 0xffff, 0xffff, 0, "Avago Technologies (LSI) SAS3108_1" }, { MPI2_MFGPAGE_VENDORID_LSI, MPI25_MFGPAGE_DEVID_SAS3108_2, - 0xffff, 0xffff, 0, "LSI SAS3108_2" }, + 0xffff, 0xffff, 0, "Avago Technologies (LSI) SAS3108_2" }, { MPI2_MFGPAGE_VENDORID_LSI, MPI25_MFGPAGE_DEVID_SAS3108_5, - 0xffff, 0xffff, 0, "LSI SAS3108_5" }, + 0xffff, 0xffff, 0, "Avago Technologies (LSI) SAS3108_5" }, { MPI2_MFGPAGE_VENDORID_LSI, MPI25_MFGPAGE_DEVID_SAS3108_6, - 0xffff, 0xffff, 0, "LSI SAS3108_6" }, + 0xffff, 0xffff, 0, "Avago Technologies (LSI) SAS3108_6" }, { 0, 0, 0, 0, 0, NULL } }; Modified: head/sys/dev/mpr/mpr_sas.c ============================================================================== --- head/sys/dev/mpr/mpr_sas.c Thu May 28 18:14:55 2015 (r283660) +++ head/sys/dev/mpr/mpr_sas.c Thu May 28 18:24:22 2015 (r283661) @@ -1,6 +1,7 @@ /*- * Copyright (c) 2009 Yahoo! Inc. - * Copyright (c) 2011-2014 LSI Corp. + * Copyright (c) 2011-2015 LSI Corp. + * Copyright (c) 2013-2015 Avago Technologies * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -23,12 +24,15 @@ * 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. + * + * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD + * */ #include __FBSDID("$FreeBSD$"); -/* Communications core for LSI MPT2 */ +/* Communications core for Avago Technologies (LSI) MPT3 */ /* TODO Move headers to mprvar */ #include @@ -122,14 +126,10 @@ static void mprsas_scsiio_complete(struc static void mprsas_action_resetdev(struct mprsas_softc *, union ccb *); static void mprsas_resetdev_complete(struct mpr_softc *, struct mpr_command *); -static int mprsas_send_abort(struct mpr_softc *sc, struct mpr_command *tm, +static int mprsas_send_abort(struct mpr_softc *sc, struct mpr_command *tm, struct mpr_command *cm); -static int mprsas_send_reset(struct mpr_softc *sc, struct mpr_command *tm, - uint8_t type); static void mprsas_async(void *callback_arg, uint32_t code, struct cam_path *path, void *arg); -static void mprsas_prepare_ssu(struct mpr_softc *sc, struct cam_path *path, - struct ccb_getdev *cgd); #if (__FreeBSD_version < 901503) || \ ((__FreeBSD_version >= 1000000) && (__FreeBSD_version < 1000006)) static void mprsas_check_eedp(struct mpr_softc *sc, struct cam_path *path, @@ -142,13 +142,12 @@ static void mprsas_portenable_complete(s struct mpr_command *cm); #if __FreeBSD_version >= 900026 -static void -mprsas_smpio_complete(struct mpr_softc *sc, struct mpr_command *cm); +static void mprsas_smpio_complete(struct mpr_softc *sc, + struct mpr_command *cm); static void mprsas_send_smpcmd(struct mprsas_softc *sassc, - union ccb *ccb, uint64_t sasaddr); -static void -mprsas_action_smpio(struct mprsas_softc *sassc, union ccb *ccb); -#endif + union ccb *ccb, uint64_t sasaddr); +static void mprsas_action_smpio(struct mprsas_softc *sassc, union ccb *ccb); +#endif //FreeBSD_version >= 900026 struct mprsas_target * mprsas_find_target_by_handle(struct mprsas_softc *sassc, int start, @@ -230,7 +229,7 @@ mprsas_startup_decrement(struct mprsas_s } } -/* LSI's firmware requires us to stop sending commands when we're doing task +/* The firmware requires us to stop sending commands when we're doing task * management, so refcount the TMs and keep the simq frozen when any are in * use. */ @@ -241,35 +240,31 @@ mprsas_alloc_tm(struct mpr_softc *sc) MPR_FUNCTRACE(sc); tm = mpr_alloc_high_priority_command(sc); - if (tm != NULL) { - if (sc->sassc->tm_count++ == 0) { - mpr_dprint(sc, MPR_RECOVERY, - "%s freezing simq\n", __func__); - xpt_freeze_simq(sc->sassc->sim, 1); - } - mpr_dprint(sc, MPR_RECOVERY, "%s tm_count %u\n", __func__, - sc->sassc->tm_count); - } return tm; } void mprsas_free_tm(struct mpr_softc *sc, struct mpr_command *tm) { - mpr_dprint(sc, MPR_TRACE, "%s", __func__); + MPR_FUNCTRACE(sc); if (tm == NULL) return; - /* if there are no TMs in use, we can release the simq. We use our - * own refcount so that it's easier for a diag reset to cleanup and - * release the simq. - */ - if (--sc->sassc->tm_count == 0) { - mpr_dprint(sc, MPR_RECOVERY, "%s releasing simq\n", __func__); - xpt_release_simq(sc->sassc->sim, 1); + /* + * For TM's the devq is frozen for the device. Unfreeze it here and + * free the resources used for freezing the devq. Must clear the + * INRESET flag as well or scsi I/O will not work. + */ + if (tm->cm_targ != NULL) { + tm->cm_targ->flags &= ~MPRSAS_TARGET_INRESET; + } + if (tm->cm_ccb) { + mpr_dprint(sc, MPR_INFO, "Unfreezing devq for target ID %d\n", + tm->cm_targ->tid); + xpt_release_devq(tm->cm_ccb->ccb_h.path, 1, TRUE); + xpt_free_path(tm->cm_ccb->ccb_h.path); + xpt_free_ccb(tm->cm_ccb); } - mpr_dprint(sc, MPR_RECOVERY, "%s tm_count %u\n", __func__, - sc->sassc->tm_count); mpr_free_high_priority_command(sc, tm); } @@ -298,8 +293,8 @@ mprsas_rescan_target(struct mpr_softc *s return; } - if (xpt_create_path(&ccb->ccb_h.path, NULL, pathid, - targetid, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { + if (xpt_create_path(&ccb->ccb_h.path, NULL, pathid, targetid, + CAM_LUN_WILDCARD) != CAM_REQ_CMP) { mpr_dprint(sc, MPR_ERROR, "unable to create path for rescan\n"); xpt_free_ccb(ccb); return; @@ -473,11 +468,16 @@ mprsas_prepare_volume_remove(struct mprs MPI2_REQ_DESCRIPT_FLAGS_HIGH_PRIORITY; cm->cm_complete = mprsas_remove_volume; cm->cm_complete_data = (void *)(uintptr_t)handle; + + mpr_dprint(sc, MPR_INFO, "%s: Sending reset for target ID %d\n", + __func__, targ->tid); + mprsas_prepare_for_tm(sc, cm, targ, CAM_LUN_WILDCARD); + mpr_map_command(sc, cm); } /* - * The MPT2 firmware performs debounce on the link to avoid transient link + * The MPT3 firmware performs debounce on the link to avoid transient link * errors and false removals. When it does decide that link has been lost * and a device needs to go away, it expects that the host will perform a * target reset and then an op remove. The reset has the side-effect of @@ -532,6 +532,11 @@ mprsas_prepare_remove(struct mprsas_soft MPI2_REQ_DESCRIPT_FLAGS_HIGH_PRIORITY; cm->cm_complete = mprsas_remove_device; cm->cm_complete_data = (void *)(uintptr_t)handle; + + mpr_dprint(sc, MPR_INFO, "%s: Sending reset for target ID %d\n", + __func__, targ->tid); + mprsas_prepare_for_tm(sc, cm, targ, CAM_LUN_WILDCARD); + mpr_map_command(sc, cm); } @@ -596,10 +601,10 @@ mprsas_remove_device(struct mpr_softc *s mpr_map_command(sc, tm); - mpr_dprint(sc, MPR_XINFO, "clearing target %u handle 0x%04x\n", + mpr_dprint(sc, MPR_INFO, "clearing target %u handle 0x%04x\n", targ->tid, handle); if (targ->encl_level_valid) { - mpr_dprint(sc, MPR_XINFO, "At enclosure level %d, slot %d, " + mpr_dprint(sc, MPR_INFO, "At enclosure level %d, slot %d, " "connector name (%4s)\n", targ->encl_level, targ->encl_slot, targ->connector_name); } @@ -608,7 +613,7 @@ mprsas_remove_device(struct mpr_softc *s mpr_dprint(sc, MPR_XINFO, "Completing missed command %p\n", tm); ccb = tm->cm_complete_data; - ccb->ccb_h.status = CAM_DEV_NOT_THERE; + mprsas_set_ccbstatus(ccb, CAM_DEV_NOT_THERE); mprsas_scsiio_complete(sc, tm); } } @@ -726,7 +731,7 @@ mpr_attach_sas(struct mpr_softc *sc) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Thu May 28 18:34:04 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 21B3F679; Thu, 28 May 2015 18:34:04 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 10328B14; Thu, 28 May 2015 18:34:04 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4SIY3jT084639; Thu, 28 May 2015 18:34:03 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4SIY399084635; Thu, 28 May 2015 18:34:03 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505281834.t4SIY399084635@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Thu, 28 May 2015 18:34:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283662 - head/sys/netinet X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 18:34:04 -0000 Author: tuexen Date: Thu May 28 18:34:02 2015 New Revision: 283662 URL: https://svnweb.freebsd.org/changeset/base/283662 Log: Fix a bug where messages would not be sent in SHUTDOWN_RECEIVED state. This problem was reported by Mark Bonnekessel and Markus Boese. Thanks to Irene Ruengeler for helping me to fix the cause of the problem. It can be tested with the following packetdrill script: +0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3 +0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR) +0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0 // Check the handshake with an empty(!) cookie +0.1 connect(3, ..., ...) = -1 EINPROGRESS (Operation now in progress) +0.0 > sctp: INIT[flgs=0, tag=1, a_rwnd=..., os=..., is=..., tsn=0, ...] +0.1 < sctp: INIT_ACK[flgs=0, tag=2, a_rwnd=10000, os=1, is=1, tsn=0, STATE_COOKIE[len=4, val=...]] +0.0 > sctp: COOKIE_ECHO[flgs=0, len=4, val=...] +0.1 < sctp: COOKIE_ACK[flgs=0] +0.0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0 +0.0 write(3, ..., 1024) = 1024 +0.0 > sctp: DATA[flgs=BE, len=1040, tsn=0, sid=0, ssn=0, ppid=0] +0.0 write(3, ..., 1024) = 1024 // Pending due to Nagle +0.0 < sctp: SHUTDOWN[flgs=0, cum_tsn=0] +0.0 > sctp: DATA[flgs=BE, len=1040, tsn=1, sid=0, ssn=1, ppid=0] +0.0 < sctp: SACK[flgs=0, cum_tsn=1, a_rwnd=10000, gaps=[], dups=[]] // Do we need another SHUTDOWN here? +0.0 > sctp: SHUTDOWN_ACK[flgs=0] +0.0 < sctp: SHUTDOWN_COMPLETE[flgs=0] +0.0 close(3) = 0 MFC after: 3 days Modified: head/sys/netinet/sctp_asconf.c head/sys/netinet/sctp_output.c Modified: head/sys/netinet/sctp_asconf.c ============================================================================== --- head/sys/netinet/sctp_asconf.c Thu May 28 18:24:22 2015 (r283661) +++ head/sys/netinet/sctp_asconf.c Thu May 28 18:34:02 2015 (r283662) @@ -1977,7 +1977,8 @@ sctp_addr_mgmt_assoc(struct sctp_inpcb * * sent when the state goes open. */ if (status == 0 && - SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_OPEN) { + ((SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_OPEN) || + (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_SHUTDOWN_RECEIVED))) { #ifdef SCTP_TIMER_BASED_ASCONF sctp_timer_start(SCTP_TIMER_TYPE_ASCONF, inp, stcb, stcb->asoc.primary_destination); @@ -2225,7 +2226,8 @@ sctp_asconf_iterator_stcb(struct sctp_in * count of queued params. If in the non-open * state, these get sent when the assoc goes open. */ - if (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_OPEN) { + if ((SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_OPEN) || + (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) { if (status >= 0) { num_queued++; } @@ -2285,7 +2287,8 @@ sctp_set_primary_ip_address_sa(struct sc "set_primary_ip_address_sa: queued on tcb=%p, ", (void *)stcb); SCTPDBG_ADDR(SCTP_DEBUG_ASCONF1, sa); - if (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_OPEN) { + if ((SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_OPEN) || + (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) { #ifdef SCTP_TIMER_BASED_ASCONF sctp_timer_start(SCTP_TIMER_TYPE_ASCONF, stcb->sctp_ep, stcb, @@ -2321,7 +2324,8 @@ sctp_set_primary_ip_address(struct sctp_ SCTPDBG(SCTP_DEBUG_ASCONF1, "set_primary_ip_address: queued on stcb=%p, ", (void *)stcb); SCTPDBG_ADDR(SCTP_DEBUG_ASCONF1, &ifa->address.sa); - if (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_OPEN) { + if ((SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_OPEN) || + (SCTP_GET_STATE(&stcb->asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) { #ifdef SCTP_TIMER_BASED_ASCONF sctp_timer_start(SCTP_TIMER_TYPE_ASCONF, stcb->sctp_ep, stcb, Modified: head/sys/netinet/sctp_output.c ============================================================================== --- head/sys/netinet/sctp_output.c Thu May 28 18:24:22 2015 (r283661) +++ head/sys/netinet/sctp_output.c Thu May 28 18:34:02 2015 (r283662) @@ -8535,7 +8535,8 @@ again_one_more_time: omtu = 0; break; } - if ((((asoc->state & SCTP_STATE_OPEN) == SCTP_STATE_OPEN) && + if ((((SCTP_GET_STATE(asoc) == SCTP_STATE_OPEN) || + (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_RECEIVED)) && (skip_data_for_this_net == 0)) || (cookie)) { TAILQ_FOREACH_SAFE(chk, &asoc->send_queue, sctp_next, nchk) { From owner-svn-src-all@FreeBSD.ORG Thu May 28 18:52:33 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A876FA94; Thu, 28 May 2015 18:52:33 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 7E1AFFAC; Thu, 28 May 2015 18:52:33 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4SIqXMW094301; Thu, 28 May 2015 18:52:33 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4SIqXbg094299; Thu, 28 May 2015 18:52:33 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505281852.t4SIqXbg094299@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Thu, 28 May 2015 18:52:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283664 - head/sys/netinet X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 18:52:33 -0000 Author: tuexen Date: Thu May 28 18:52:32 2015 New Revision: 283664 URL: https://svnweb.freebsd.org/changeset/base/283664 Log: Retire SCTP_DONT_DO_PRIVADDR_SCOPE which was never defined. MFC after: 3 days Modified: head/sys/netinet/sctp_output.c head/sys/netinet/sctp_pcb.c Modified: head/sys/netinet/sctp_output.c ============================================================================== --- head/sys/netinet/sctp_output.c Thu May 28 18:34:29 2015 (r283663) +++ head/sys/netinet/sctp_output.c Thu May 28 18:52:32 2015 (r283664) @@ -5591,11 +5591,7 @@ do_a_abort: stc.ipv6_addr_legal = 0; stc.ipv4_addr_legal = 1; } -#ifdef SCTP_DONT_DO_PRIVADDR_SCOPE - stc.ipv4_scope = 1; -#else stc.ipv4_scope = 0; -#endif if (net == NULL) { to = src; switch (dst->sa_family) { @@ -5616,13 +5612,9 @@ do_a_abort: stc.laddr_type = SCTP_IPV4_ADDRESS; /* scope_id is only for v6 */ stc.scope_id = 0; -#ifndef SCTP_DONT_DO_PRIVADDR_SCOPE if (IN4_ISPRIVATE_ADDRESS(&src4->sin_addr)) { stc.ipv4_scope = 1; } -#else - stc.ipv4_scope = 1; -#endif /* SCTP_DONT_DO_PRIVADDR_SCOPE */ /* Must use the address in this case */ if (sctp_is_address_on_local_host(src, vrf_id)) { stc.loopback_scope = 1; Modified: head/sys/netinet/sctp_pcb.c ============================================================================== --- head/sys/netinet/sctp_pcb.c Thu May 28 18:34:29 2015 (r283663) +++ head/sys/netinet/sctp_pcb.c Thu May 28 18:52:32 2015 (r283664) @@ -3792,13 +3792,9 @@ sctp_add_remote_addr(struct sctp_tcb *st /* assure len is set */ sin->sin_len = sizeof(struct sockaddr_in); if (set_scope) { -#ifdef SCTP_DONT_DO_PRIVADDR_SCOPE - stcb->asoc.scope.ipv4_local_scope = 1; -#else if (IN4_ISPRIVATE_ADDRESS(&sin->sin_addr)) { stcb->asoc.scope.ipv4_local_scope = 1; } -#endif /* SCTP_DONT_DO_PRIVADDR_SCOPE */ } else { /* Validate the address is in scope */ if ((IN4_ISPRIVATE_ADDRESS(&sin->sin_addr)) && From owner-svn-src-all@FreeBSD.ORG Thu May 28 19:28:09 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id CAD5A448; Thu, 28 May 2015 19:28:09 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 9FF229B2; Thu, 28 May 2015 19:28:09 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4SJS9Oe009945; Thu, 28 May 2015 19:28:09 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4SJS94f009944; Thu, 28 May 2015 19:28:09 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505281928.t4SJS94f009944@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Thu, 28 May 2015 19:28:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283665 - head/sys/netinet X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 19:28:09 -0000 Author: tuexen Date: Thu May 28 19:28:08 2015 New Revision: 283665 URL: https://svnweb.freebsd.org/changeset/base/283665 Log: Take source and destination address into account when determining the scope. This fixes a problem when a client with a global address connects to a server with a private address. Thanks to Irene Ruengeler in helping me to find the issue. MFC after: 3 days Modified: head/sys/netinet/sctp_output.c Modified: head/sys/netinet/sctp_output.c ============================================================================== --- head/sys/netinet/sctp_output.c Thu May 28 18:52:32 2015 (r283664) +++ head/sys/netinet/sctp_output.c Thu May 28 19:28:08 2015 (r283665) @@ -5612,7 +5612,8 @@ do_a_abort: stc.laddr_type = SCTP_IPV4_ADDRESS; /* scope_id is only for v6 */ stc.scope_id = 0; - if (IN4_ISPRIVATE_ADDRESS(&src4->sin_addr)) { + if ((IN4_ISPRIVATE_ADDRESS(&src4->sin_addr)) || + (IN4_ISPRIVATE_ADDRESS(&dst4->sin_addr))) { stc.ipv4_scope = 1; } /* Must use the address in this case */ @@ -5636,16 +5637,18 @@ do_a_abort: stc.local_scope = 0; stc.site_scope = 1; stc.ipv4_scope = 1; - } else if (IN6_IS_ADDR_LINKLOCAL(&src6->sin6_addr)) { + } else if (IN6_IS_ADDR_LINKLOCAL(&src6->sin6_addr) || + IN6_IS_ADDR_LINKLOCAL(&dst6->sin6_addr)) { /* - * If the new destination is a - * LINK_LOCAL we must have common - * both site and local scope. Don't - * set local scope though since we - * must depend on the source to be - * added implicitly. We cannot - * assure just because we share one - * link that all links are common. + * If the new destination or source + * is a LINK_LOCAL we must have + * common both site and local scope. + * Don't set local scope though + * since we must depend on the + * source to be added implicitly. We + * cannot assure just because we + * share one link that all links are + * common. */ stc.local_scope = 0; stc.site_scope = 1; @@ -5661,11 +5664,12 @@ do_a_abort: * pull out the scope_id from * incoming pkt */ - } else if (IN6_IS_ADDR_SITELOCAL(&src6->sin6_addr)) { + } else if (IN6_IS_ADDR_SITELOCAL(&src6->sin6_addr) || + IN6_IS_ADDR_SITELOCAL(&dst6->sin6_addr)) { /* - * If the new destination is - * SITE_LOCAL then we must have site - * scope in common. + * If the new destination or source + * is SITE_LOCAL then we must have + * site scope in common. */ stc.site_scope = 1; } From owner-svn-src-all@FreeBSD.ORG Thu May 28 20:33:29 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 342F66EF; Thu, 28 May 2015 20:33:29 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 15DCFC2C; Thu, 28 May 2015 20:33:29 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4SKXSJs044911; Thu, 28 May 2015 20:33:28 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4SKXSTF044910; Thu, 28 May 2015 20:33:28 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505282033.t4SKXSTF044910@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Thu, 28 May 2015 20:33:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283666 - head/sys/netinet X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 20:33:29 -0000 Author: tuexen Date: Thu May 28 20:33:28 2015 New Revision: 283666 URL: https://svnweb.freebsd.org/changeset/base/283666 Log: Report the MTU consistently as specified in https://tools.ietf.org/html/rfc6458 Thanks to Irene Ruengeler for helping me to fix this bug. MFC after: 3 days Modified: head/sys/netinet/sctp_usrreq.c Modified: head/sys/netinet/sctp_usrreq.c ============================================================================== --- head/sys/netinet/sctp_usrreq.c Thu May 28 19:28:08 2015 (r283665) +++ head/sys/netinet/sctp_usrreq.c Thu May 28 20:33:28 2015 (r283666) @@ -2439,17 +2439,23 @@ flags_out: /* Applies to the specific association */ paddrp->spp_flags = 0; if (net != NULL) { - int ovh; - - if (inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) { - ovh = SCTP_MED_OVERHEAD; - } else { - ovh = SCTP_MED_V4_OVERHEAD; - } - paddrp->spp_hbinterval = net->heart_beat_delay; paddrp->spp_pathmaxrxt = net->failure_threshold; - paddrp->spp_pathmtu = net->mtu - ovh; + paddrp->spp_pathmtu = net->mtu; + switch (net->ro._l_addr.sa.sa_family) { +#ifdef INET + case AF_INET: + paddrp->spp_pathmtu -= SCTP_MIN_V4_OVERHEAD; + break; +#endif +#ifdef INET6 + case AF_INET6: + paddrp->spp_pathmtu -= SCTP_MIN_V4_OVERHEAD; + break; +#endif + default: + break; + } /* get flags for HB */ if (net->dest_state & SCTP_ADDR_NOHB) { paddrp->spp_flags |= SPP_HB_DISABLE; @@ -2479,7 +2485,7 @@ flags_out: * value */ paddrp->spp_pathmaxrxt = stcb->asoc.def_net_failure; - paddrp->spp_pathmtu = sctp_get_frag_point(stcb, &stcb->asoc); + paddrp->spp_pathmtu = 0; if (stcb->asoc.default_dscp & 0x01) { paddrp->spp_dscp = stcb->asoc.default_dscp & 0xfc; paddrp->spp_flags |= SPP_DSCP; @@ -2615,6 +2621,20 @@ flags_out: paddri->spinfo_rto = net->RTO; paddri->spinfo_assoc_id = sctp_get_associd(stcb); paddri->spinfo_mtu = net->mtu; + switch (addr->sa_family) { +#if defined(INET) + case AF_INET: + paddri->spinfo_mtu -= SCTP_MIN_V4_OVERHEAD; + break; +#endif +#if defined(INET6) + case AF_INET6: + paddri->spinfo_mtu -= SCTP_MIN_OVERHEAD; + break; +#endif + default: + break; + } SCTP_TCB_UNLOCK(stcb); *optsize = sizeof(struct sctp_paddrinfo); } else { @@ -2691,6 +2711,20 @@ flags_out: sstat->sstat_primary.spinfo_srtt = net->lastsa >> SCTP_RTT_SHIFT; sstat->sstat_primary.spinfo_rto = net->RTO; sstat->sstat_primary.spinfo_mtu = net->mtu; + switch (stcb->asoc.primary_destination->ro._l_addr.sa.sa_family) { +#if defined(INET) + case AF_INET: + sstat->sstat_primary.spinfo_mtu -= SCTP_MIN_V4_OVERHEAD; + break; +#endif +#if defined(INET6) + case AF_INET6: + sstat->sstat_primary.spinfo_mtu -= SCTP_MIN_OVERHEAD; + break; +#endif + default: + break; + } sstat->sstat_primary.spinfo_assoc_id = sctp_get_associd(stcb); SCTP_TCB_UNLOCK(stcb); *optsize = sizeof(struct sctp_status); @@ -5188,19 +5222,6 @@ sctp_setopt(struct socket *so, int optna } if (stcb != NULL) { /************************TCB SPECIFIC SET ******************/ - /* - * do we change the timer for HB, we run - * only one? - */ - int ovh = 0; - - if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) { - ovh = SCTP_MED_OVERHEAD; - } else { - ovh = SCTP_MED_V4_OVERHEAD; - } - - /* network sets ? */ if (net != NULL) { /************************NET SPECIFIC SET ******************/ if (paddrp->spp_flags & SPP_HB_DISABLE) { @@ -5234,7 +5255,21 @@ sctp_setopt(struct socket *so, int optna SCTP_FROM_SCTP_USRREQ + SCTP_LOC_11); } net->dest_state |= SCTP_ADDR_NO_PMTUD; - net->mtu = paddrp->spp_pathmtu + ovh; + net->mtu = paddrp->spp_pathmtu; + switch (net->ro._l_addr.sa.sa_family) { +#ifdef INET + case AF_INET: + net->mtu += SCTP_MIN_V4_OVERHEAD; + break; +#endif +#ifdef INET6 + case AF_INET6: + net->mtu += SCTP_MIN_OVERHEAD; + break; +#endif + default: + break; + } if (net->mtu < stcb->asoc.smallest_mtu) { sctp_pathmtu_adjustment(stcb, net->mtu); } @@ -5362,7 +5397,21 @@ sctp_setopt(struct socket *so, int optna SCTP_FROM_SCTP_USRREQ + SCTP_LOC_16); } net->dest_state |= SCTP_ADDR_NO_PMTUD; - net->mtu = paddrp->spp_pathmtu + ovh; + net->mtu = paddrp->spp_pathmtu; + switch (net->ro._l_addr.sa.sa_family) { +#ifdef INET + case AF_INET: + net->mtu += SCTP_MIN_V4_OVERHEAD; + break; +#endif +#ifdef INET6 + case AF_INET6: + net->mtu += SCTP_MIN_OVERHEAD; + break; +#endif + default: + break; + } if (net->mtu < stcb->asoc.smallest_mtu) { sctp_pathmtu_adjustment(stcb, net->mtu); } From owner-svn-src-all@FreeBSD.ORG Thu May 28 20:56:14 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 357F1EAC; Thu, 28 May 2015 20:56:14 +0000 (UTC) (envelope-from erj@FreeBSD.org) Received: from svn.freebsd.org (svn.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 186A5136; Thu, 28 May 2015 20:56:14 +0000 (UTC) (envelope-from erj@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4SKuDp5055754; Thu, 28 May 2015 20:56:13 GMT (envelope-from erj@FreeBSD.org) Received: (from erj@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4SKuCIX055744; Thu, 28 May 2015 20:56:12 GMT (envelope-from erj@FreeBSD.org) Message-Id: <201505282056.t4SKuCIX055744@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: erj set sender to erj@FreeBSD.org using -f From: Eric Joyner Date: Thu, 28 May 2015 20:56:12 +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: r283668 - in stable/10/sys: conf dev/ixgbe modules modules/ix modules/ixgbe modules/ixv X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 20:56:14 -0000 Author: erj Date: Thu May 28 20:56:11 2015 New Revision: 283668 URL: https://svnweb.freebsd.org/changeset/base/283668 Log: Fix build issue and incompatibilites introduced by r283620. - Re-introduce "device ixgbe" option for kernel configs. This allows users to continue using existing kernel configurations, while still letting if_ix and if_ixv exist to allow ifconfig magic to work. Though the amd64 GENERIC config has "device ix" and "device ixv" instead of "device ixgbe". This is achieved by making the if_ixgbe module a stub that depends on if_ix and if_ixv. - Replace if_baudrate assignment with if_initbaudrate() call. Thanks to jhb@ for the stub module suggestion and pointing out the if_baudrate error. Approved by: jfv (mentor) Added: stable/10/sys/dev/ixgbe/ixgbe.c (contents, props changed) Modified: stable/10/sys/conf/files stable/10/sys/dev/ixgbe/if_ix.c stable/10/sys/modules/Makefile stable/10/sys/modules/ix/Makefile stable/10/sys/modules/ixgbe/Makefile stable/10/sys/modules/ixv/Makefile Modified: stable/10/sys/conf/files ============================================================================== --- stable/10/sys/conf/files Thu May 28 20:36:37 2015 (r283667) +++ stable/10/sys/conf/files Thu May 28 20:56:11 2015 (r283668) @@ -1716,35 +1716,37 @@ iwn6050.fw optional iwn6050fw | iwnfw dev/ixgb/if_ixgb.c optional ixgb dev/ixgb/ixgb_ee.c optional ixgb dev/ixgb/ixgb_hw.c optional ixgb -dev/ixgbe/if_ix.c optional ix inet \ +dev/ixgbe/ixgbe.c optional ixgbe inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe -DSMP" -dev/ixgbe/if_ixv.c optional ixv inet \ +dev/ixgbe/if_ix.c optional ix inet | ixgbe inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe -DSMP" -dev/ixgbe/ix_txrx.c optional ixv inet \ +dev/ixgbe/if_ixv.c optional ixv inet | ixgbe inet \ + compile-with "${NORMAL_C} -I$S/dev/ixgbe -DSMP" +dev/ixgbe/ix_txrx.c optional ix inet | ixv inet | ixgbe inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" -dev/ixgbe/ixgbe_phy.c optional ix ixv inet \ +dev/ixgbe/ixgbe_phy.c optional ix inet | ixv inet | ixgbe inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" -dev/ixgbe/ixgbe_api.c optional ix ixv inet \ +dev/ixgbe/ixgbe_api.c optional ix inet | ixv inet | ixgbe inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" -dev/ixgbe/ixgbe_common.c optional ix ixv inet \ +dev/ixgbe/ixgbe_common.c optional ix inet | ixv inet | ixgbe inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" -dev/ixgbe/ixgbe_mbx.c optional ix ixv inet \ +dev/ixgbe/ixgbe_mbx.c optional ix inet | ixv inet | ixgbe inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" -dev/ixgbe/ixgbe_vf.c optional ix ixv inet \ +dev/ixgbe/ixgbe_vf.c optional ix inet | ixv inet | ixgbe inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" -dev/ixgbe/ixgbe_82598.c optional ix ixv inet \ +dev/ixgbe/ixgbe_82598.c optional ix inet | ixv inet | ixgbe inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" -dev/ixgbe/ixgbe_82599.c optional ix ixv inet \ +dev/ixgbe/ixgbe_82599.c optional ix inet | ixv inet | ixgbe inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" -dev/ixgbe/ixgbe_x540.c optional ix ixv inet \ +dev/ixgbe/ixgbe_x540.c optional ix inet | ixv inet | ixgbe inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" -dev/ixgbe/ixgbe_x550.c optional ix ixv inet \ +dev/ixgbe/ixgbe_x550.c optional ix inet | ixv inet | ixgbe inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" -dev/ixgbe/ixgbe_dcb.c optional ix ixv inet \ +dev/ixgbe/ixgbe_dcb.c optional ix inet | ixv inet | ixgbe inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" -dev/ixgbe/ixgbe_dcb_82598.c optional ix ixv inet \ +dev/ixgbe/ixgbe_dcb_82598.c optional ix inet | ixv inet | ixgbe inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" -dev/ixgbe/ixgbe_dcb_82599.c optional ix ixv inet \ +dev/ixgbe/ixgbe_dcb_82599.c optional ix inet | ixv inet | ixgbe inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixl/if_ixl.c optional ixl inet \ compile-with "${NORMAL_C} -I$S/dev/ixl" Modified: stable/10/sys/dev/ixgbe/if_ix.c ============================================================================== --- stable/10/sys/dev/ixgbe/if_ix.c Thu May 28 20:36:37 2015 (r283667) +++ stable/10/sys/dev/ixgbe/if_ix.c Thu May 28 20:56:11 2015 (r283668) @@ -2491,20 +2491,11 @@ ixgbe_setup_interface(device_t dev, stru return (-1); } if_initname(ifp, device_get_name(dev), device_get_unit(dev)); - ifp->if_baudrate = IF_Gbps(10); + if_initbaudrate(ifp, IF_Gbps(10)); ifp->if_init = ixgbe_init; ifp->if_softc = adapter; ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; ifp->if_ioctl = ixgbe_ioctl; -#if __FreeBSD_version >= 1100036 - if_setgetcounterfn(ifp, ixgbe_get_counter); -#endif -#if __FreeBSD_version >= 1100045 - /* TSO parameters */ - ifp->if_hw_tsomax = 65518; - ifp->if_hw_tsomaxsegcount = IXGBE_82599_SCATTER; - ifp->if_hw_tsomaxsegsize = 2048; -#endif #ifndef IXGBE_LEGACY_TX ifp->if_transmit = ixgbe_mq_start; ifp->if_qflush = ixgbe_qflush; Added: stable/10/sys/dev/ixgbe/ixgbe.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/10/sys/dev/ixgbe/ixgbe.c Thu May 28 20:56:11 2015 (r283668) @@ -0,0 +1,50 @@ +/****************************************************************************** + + Copyright (c) 2001-2015, Intel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. Neither the name of the Intel Corporation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + +******************************************************************************/ +/*$FreeBSD$*/ + +#include +#include +#include +#include + +static int +mod_event(module_t mod, int cmd, void *arg) +{ + return (0); +} + +static moduledata_t ixgbe_mod = {"if_ixgbe", mod_event}; +DECLARE_MODULE(ixgbe, ixgbe_mod, SI_SUB_EXEC, SI_ORDER_ANY); +MODULE_DEPEND(ixgbe, ix, 1, 1, 1); +MODULE_DEPEND(ixgbe, ixv, 1, 1, 1); + Modified: stable/10/sys/modules/Makefile ============================================================================== --- stable/10/sys/modules/Makefile Thu May 28 20:36:37 2015 (r283667) +++ stable/10/sys/modules/Makefile Thu May 28 20:56:11 2015 (r283668) @@ -171,9 +171,10 @@ SUBDIR= \ ${_iwifw} \ ${_iwn} \ ${_iwnfw} \ - ${_ixgb} \ ${_ix} \ ${_ixv} \ + ${_ixgb} \ + ${_ixgbe} \ ${_ixl} \ ${_ixlv} \ jme \ @@ -616,6 +617,8 @@ _iwn= iwn .if ${MK_SOURCELESS_UCODE} != "no" _iwnfw= iwnfw .endif +_ix= ix +_ixv= ixv _ixgb= ixgb _ixgbe= ixgbe _mly= mly @@ -722,6 +725,8 @@ _iwn= iwn .if ${MK_SOURCELESS_UCODE} != "no" _iwnfw= iwnfw .endif +_ix= ix +_ixv= ixv _ixgb= ixgb _ixgbe= ixgbe _ixl= ixl Modified: stable/10/sys/modules/ix/Makefile ============================================================================== --- stable/10/sys/modules/ix/Makefile Thu May 28 20:36:37 2015 (r283667) +++ stable/10/sys/modules/ix/Makefile Thu May 28 20:56:11 2015 (r283668) @@ -4,7 +4,7 @@ KMOD = if_ix SRCS = device_if.h bus_if.h pci_if.h -SRCS += opt_inet.h opt_inet6.h opt_rss.h +SRCS += opt_inet.h opt_inet6.h SRCS += if_ix.c ix_txrx.c # Shared source SRCS += ixgbe_common.c ixgbe_api.c ixgbe_phy.c ixgbe_mbx.c ixgbe_vf.c Modified: stable/10/sys/modules/ixgbe/Makefile ============================================================================== --- stable/10/sys/modules/ixgbe/Makefile Thu May 28 20:36:37 2015 (r283667) +++ stable/10/sys/modules/ixgbe/Makefile Thu May 28 20:56:11 2015 (r283668) @@ -1,29 +1,10 @@ #$FreeBSD$ -.include - .PATH: ${.CURDIR}/../../dev/ixgbe KMOD = if_ixgbe SRCS = device_if.h bus_if.h pci_if.h -SRCS += opt_inet.h opt_inet6.h -SRCS += ixgbe.c ixv.c -# Shared source -SRCS += ixgbe_common.c ixgbe_api.c ixgbe_phy.c ixgbe_mbx.c ixgbe_vf.c -SRCS += ixgbe_dcb.c ixgbe_dcb_82598.c ixgbe_dcb_82599.c -SRCS += ixgbe_82599.c ixgbe_82598.c ixgbe_x540.c +SRCS += ixgbe.c CFLAGS+= -I${.CURDIR}/../../dev/ixgbe -DSMP -.if !defined(KERNBUILDDIR) -.if ${MK_INET_SUPPORT} != "no" -opt_inet.h: - @echo "#define INET 1" > ${.TARGET} -.endif - -.if ${MK_INET6_SUPPORT} != "no" -opt_inet6.h: - @echo "#define INET6 1" > ${.TARGET} -.endif -.endif - .include Modified: stable/10/sys/modules/ixv/Makefile ============================================================================== --- stable/10/sys/modules/ixv/Makefile Thu May 28 20:36:37 2015 (r283667) +++ stable/10/sys/modules/ixv/Makefile Thu May 28 20:56:11 2015 (r283668) @@ -4,7 +4,7 @@ KMOD = if_ixv SRCS = device_if.h bus_if.h pci_if.h -SRCS += opt_inet.h opt_inet6.h opt_rss.h +SRCS += opt_inet.h opt_inet6.h SRCS += if_ixv.c ix_txrx.c # Shared source SRCS += ixgbe_common.c ixgbe_api.c ixgbe_phy.c ixgbe_mbx.c ixgbe_vf.c From owner-svn-src-all@FreeBSD.ORG Thu May 28 21:07:00 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4DB05266; Thu, 28 May 2015 21:07:00 +0000 (UTC) (envelope-from pfg@FreeBSD.org) Received: from svn.freebsd.org (svn.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 3C0D23DD; Thu, 28 May 2015 21:07:00 +0000 (UTC) (envelope-from pfg@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4SL70W0061145; Thu, 28 May 2015 21:07:00 GMT (envelope-from pfg@FreeBSD.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4SL70xF061144; Thu, 28 May 2015 21:07:00 GMT (envelope-from pfg@FreeBSD.org) Message-Id: <201505282107.t4SL70xF061144@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: pfg set sender to pfg@FreeBSD.org using -f From: "Pedro F. Giffuni" Date: Thu, 28 May 2015 21:07:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283669 - head/sys/fs/ext2fs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 21:07:00 -0000 Author: pfg Date: Thu May 28 21:06:59 2015 New Revision: 283669 URL: https://svnweb.freebsd.org/changeset/base/283669 Log: Provide VOP_GETPAGES_ASYNC() for extfs. Merge the filesystem specific part from r274914 to ext2fs. I only did regular testing with the change but UFS and our ext2fs are similar enough that the code should just work with the new sendfile. Discussed with: glebius Modified: head/sys/fs/ext2fs/ext2_vnops.c Modified: head/sys/fs/ext2fs/ext2_vnops.c ============================================================================== --- head/sys/fs/ext2fs/ext2_vnops.c Thu May 28 20:56:11 2015 (r283668) +++ head/sys/fs/ext2fs/ext2_vnops.c Thu May 28 21:06:59 2015 (r283669) @@ -128,6 +128,7 @@ struct vop_vector ext2_vnodeops = { .vop_create = ext2_create, .vop_fsync = ext2_fsync, .vop_getpages = vnode_pager_local_getpages, + .vop_getpages_async = vnode_pager_local_getpages_async, .vop_getattr = ext2_getattr, .vop_inactive = ext2_inactive, .vop_ioctl = ext2_ioctl, From owner-svn-src-all@FreeBSD.ORG Thu May 28 21:31:48 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id EB4946BC; Thu, 28 May 2015 21:31:48 +0000 (UTC) (envelope-from ricera10@gmail.com) Received: from mail-ig0-f179.google.com (mail-ig0-f179.google.com [209.85.213.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id B6D23C87; Thu, 28 May 2015 21:31:48 +0000 (UTC) (envelope-from ricera10@gmail.com) Received: by igbpi8 with SMTP id pi8so148505igb.1; Thu, 28 May 2015 14:31:47 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-type; bh=Wvj9ytgNa+uVg71vxSDQpPvH110dVJUxbBdnY2+BJQE=; b=aq2fYGzs/yCgb0FqJpN16gCVJ9qQWlro476QHjSyYMt+mpDaStc9AKQmS/Iuh9OE8X gQCZMDkG7txjUXqOm7MpPEAjZP10pBcwmeP45MiZi6KYw/RI1wYU3upjW/I1yMrv/UZ1 wtTQQU5waFzBBe2F8ieHBwKgySevDtXOmOctinTpccMZyhtyEsOMRW9tpSFS8FKHlAdR e9DM0I0LtIij1FnVOFLK5wlXN5KievJi594nGztgjYwdhPHvcpPKv2whuRmLh28sC1tu zOe2jtl33g32SYzifGq+Mi4dC2YTJXvMgBZ3gC6FIzm66bRCVzyv+FpKxzflJKNDWxeo PnNA== X-Received: by 10.50.103.97 with SMTP id fv1mr14033482igb.27.1432846982715; Thu, 28 May 2015 14:03:02 -0700 (PDT) Received: from mail-ie0-f176.google.com (mail-ie0-f176.google.com. [209.85.223.176]) by mx.google.com with ESMTPSA id x10sm2987708igl.0.2015.05.28.14.03.02 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 28 May 2015 14:03:02 -0700 (PDT) Received: by iesa3 with SMTP id a3so48410060ies.2; Thu, 28 May 2015 14:03:02 -0700 (PDT) X-Received: by 10.50.36.72 with SMTP id o8mr13896562igj.16.1432846982287; Thu, 28 May 2015 14:03:02 -0700 (PDT) MIME-Version: 1.0 References: <201505271744.t4RHiC04024525@svn.freebsd.org> <1987595.JGalSDZ3Rh@ralph.baldwin.cx> <4977499.IGj0rLHqPU@ralph.baldwin.cx> In-Reply-To: <4977499.IGj0rLHqPU@ralph.baldwin.cx> From: Eric Joyner Date: Thu, 28 May 2015 21:03:01 +0000 Message-ID: Subject: Re: svn commit: r283620 - in stable/10/sys: amd64/conf conf dev/ixgbe modules modules/ix modules/ixv To: John Baldwin Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Content-Type: text/plain; charset=UTF-8 X-Content-Filtered-By: Mailman/MimeDel 2.1.20 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 21:31:49 -0000 On Thu, May 28, 2015 at 9:27 AM John Baldwin wrote: > On Thursday, May 28, 2015 04:23:49 PM Eric Joyner wrote: > > Ok; I'm working on it now. I've implemented your recommendation for an > > ixgbe stub that loads both if_ix and if_ixv, but Jack offered an > > alternative of just letting sys/dev/ixgbe/Makefile make an if_ixgbe > module > > that combines if_ix and if_ixv. Looking at conf files for other > > architectures, it sounds like it would be a better idea to just do that > for > > stable/10, and completely remove the ix and ixv Makefiles and module > > directories. I don't think anyone really cares to have a separate if_ix > and > > if_ixv modules over just one if_ixgbe module. > > I probably prefer that you do actually have if_ix and if_ixv. There's > always > the ifconfig hack for NIC drivers that wants to autoload if_.ko to > consider. I think it is also more friendly to users if 10 supports both > the > old and new models as it gives them more time to transition. However, > reverting back to a single if_ixgbe.ko is also ok. > > > On Thu, May 28, 2015 at 8:49 AM John Baldwin wrote: > > > > > On Wednesday, May 27, 2015 05:44:12 PM Eric Joyner wrote: > > > > Author: erj > > > > Date: Wed May 27 17:44:11 2015 > > > > New Revision: 283620 > > > > URL: https://svnweb.freebsd.org/changeset/base/283620 > > > > > > > > Log: > > > > MFC ixgbe commits for 10.2: > > > > > > > > - r280182 - Split the driver into independent pf/vf loadables > > > > - r280197 - Resolve build issues > > > > - r280204 - Fix multiple same-name devclasses > > > > - r280228 - Fix i386 LINT build issues / remove unused variable > > > > - r280252 - Fix building ixgbe with gcc > > > > - r280962 - Make changes to busdma code similar to r257541 > > > > - r281772 & r281773 - Remove unused variable > > > > - partial r282280 - stats counter update (ix-only) > > > > - r282289 - Add X550 support > > > > - r282290 - Add X550 makefile updates > > > > - r282293 - Add ixgbe_x550.c to conf/files > > > > - r282299 - Fix gcc compile (extraneous extern declaration) > > > > > > > > Finally, add ix_txrx.c to conf/files because it's required for > compile > > > in stable/10. > > > > > > FYI, this has broken 'make tinderbox' for all 32-bit kernels that > include > > > ix or ixgbe: > > > > > > /usr/home/john/work/freebsd/stable/10/sys/dev/ixgbe/if_ix.c:2494:21: > > > error: impl > > > icit conversion from 'unsigned long long' to 'u_long' (aka 'unsigned > > > long') chan > > > ges value from 10000000000 to 1410065408 > [-Werror,-Wconstant-conversion] > > > ifp->if_baudrate = IF_Gbps(10); > > > ~ ^~~~~~~~~~~ > > > /usr/home/john/work/freebsd/stable/10/sys/net/if.h:187:21: note: > expanded > > > from m > > > acro 'IF_Gbps' > > > #define IF_Gbps(x) (IF_Mbps((x) * 1000)) /* gigabits/sec. */ > > > ^~~~~~~~~~~~~~~~~~~ > > > /usr/home/john/work/freebsd/stable/10/sys/net/if.h:186:21: note: > expanded > > > from m > > > acro 'IF_Mbps' > > > #define IF_Mbps(x) (IF_Kbps((x) * 1000)) /* megabits/sec. */ > > > ^~~~~~~~~~~~~~~~~~~ > > > /usr/home/john/work/freebsd/stable/10/sys/net/if.h:185:36: note: > expanded > > > from macro 'IF_Kbps' > > > #define IF_Kbps(x) ((uintmax_t)(x) * 1000) /* kilobits/sec. */ > > > ~~~~~~~~~~~~~~~^~~~~~ > > > 1 error generated. > > > *** [if_ix.o] Error code 1 > > > > > > On 10.x you need to use if_initbaudrate() instead of setting > if_baudrate > > > directly. > > > > > > -- > > > John Baldwin > > > > > > > -- > John Baldwin > I put the stub module in and removed the direct if_baudrate assignment in r283668. From owner-svn-src-all@FreeBSD.ORG Thu May 28 22:01:56 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 65EF2BD0; Thu, 28 May 2015 22:01:56 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.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 517953F2; Thu, 28 May 2015 22:01:56 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4SM1unP088026; Thu, 28 May 2015 22:01:56 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4SM1p6x087963; Thu, 28 May 2015 22:01:51 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <201505282201.t4SM1p6x087963@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Thu, 28 May 2015 22:01:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283670 - in head: . share/man/man9 sys/conf sys/dev/ixl sys/dev/pci sys/modules/ixl X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 22:01:56 -0000 Author: jhb Date: Thu May 28 22:01:50 2015 New Revision: 283670 URL: https://svnweb.freebsd.org/changeset/base/283670 Log: Create a separate kobj interface for leaf-driver PCI IOV methods. Leaf drivers should not import the PCI bus interface to add IOV handling. Instead, move the IOV client methods to a separate kobj interface. Differential Revision: https://reviews.freebsd.org/D2584 Reviewed by: rstone Added: head/share/man/man9/PCI_IOV_ADD_VF.9 - copied, changed from r283669, head/share/man/man9/PCI_ADD_VF.9 head/share/man/man9/PCI_IOV_INIT.9 - copied, changed from r283669, head/share/man/man9/PCI_INIT_IOV.9 head/share/man/man9/PCI_IOV_UNINIT.9 - copied, changed from r283669, head/share/man/man9/PCI_UNINIT_IOV.9 head/sys/dev/pci/pci_iov.h (contents, props changed) head/sys/dev/pci/pci_iov_if.m (contents, props changed) Deleted: head/share/man/man9/PCI_ADD_VF.9 head/share/man/man9/PCI_INIT_IOV.9 head/share/man/man9/PCI_UNINIT_IOV.9 Modified: head/ObsoleteFiles.inc head/share/man/man9/Makefile head/share/man/man9/pci.9 head/share/man/man9/pci_iov_schema.9 head/sys/conf/files head/sys/conf/kmod.mk head/sys/dev/ixl/if_ixl.c head/sys/dev/ixl/ixl.h head/sys/dev/pci/pci_if.m head/sys/dev/pci/pci_iov.c head/sys/dev/pci/pcivar.h head/sys/modules/ixl/Makefile (contents, props changed) Modified: head/ObsoleteFiles.inc ============================================================================== --- head/ObsoleteFiles.inc Thu May 28 21:06:59 2015 (r283669) +++ head/ObsoleteFiles.inc Thu May 28 22:01:50 2015 (r283670) @@ -38,6 +38,10 @@ # xargs -n1 | sort | uniq -d; # done +# 20150528: PCI IOV device driver methods moved to a separate kobj interface. +OLD_FILES+=usr/share/man/man9/PCI_ADD_VF.9 +OLD_FILES+=usr/share/man/man9/PCI_INIT_IOV.9 +OLD_FILES+=usr/share/man/man9/PCI_UNINIT_IOV.9 # 20150525: new clang import which bumps version from 3.6.0 to 3.6.1. OLD_FILES+=usr/lib/clang/3.6.0/include/__stddef_max_align_t.h OLD_FILES+=usr/lib/clang/3.6.0/include/__wmmintrin_aes.h Modified: head/share/man/man9/Makefile ============================================================================== --- head/share/man/man9/Makefile Thu May 28 21:06:59 2015 (r283669) +++ head/share/man/man9/Makefile Thu May 28 22:01:50 2015 (r283670) @@ -195,10 +195,10 @@ MAN= accept_filter.9 \ p_candebug.9 \ p_cansee.9 \ pci.9 \ - PCI_ADD_VF.9 \ - PCI_INIT_IOV.9 \ + PCI_IOV_ADD_VF.9 \ + PCI_IOV_INIT.9 \ pci_iov_schema.9 \ - PCI_UNINIT_IOV.9 \ + PCI_IOV_UNINIT.9 \ pfil.9 \ pfind.9 \ pget.9 \ Copied and modified: head/share/man/man9/PCI_IOV_ADD_VF.9 (from r283669, head/share/man/man9/PCI_ADD_VF.9) ============================================================================== --- head/share/man/man9/PCI_ADD_VF.9 Thu May 28 21:06:59 2015 (r283669, copy source) +++ head/share/man/man9/PCI_IOV_ADD_VF.9 Thu May 28 22:01:50 2015 (r283670) @@ -25,38 +25,37 @@ .\" .\" $FreeBSD$ .\" -.Dd May 24, 2014 -.Dt PCI_ADD_VF 9 +.Dd May 28, 2015 +.Dt PCI_IOV_ADD_VF 9 .Os .Sh NAME -.Nm PCI_ADD_VF +.Nm PCI_IOV_ADD_VF .Nd inform a PF driver that a VF is being created .Sh SYNOPSIS .In sys/bus.h .In machine/stdarg.h .In sys/nv.h -.In dev/pci/pcireg.h -.In dev/pci/pcivar.h +.In dev/pci/pci_iov.h .Ft int -.Fn PCI_ADD_VF "device_t dev" "uint16_t vfnum" "const nvlist_t *vf_config" +.Fn PCI_IOV_ADD_VF "device_t dev" "uint16_t vfnum" "const nvlist_t *vf_config" .Sh DESCRIPTION The -.Fn PCI_ADD_VF +.Fn PCI_IOV_ADD_VF method is called by the PCI Single-Root I/O Virtualization .Pq SR-IOV infrastructure when it is initializating a new Virtual Function (VF) as a child of the given Physical Function (PF) device. This method will not be called until a successful call to -.Xr PCI_INIT_IOV 9 +.Xr PCI_IOV_INIT 9 has been made. It is not guaranteed that this method will be called following a successful call to -.Xr PCI_INIT_IOV 9 . +.Xr PCI_IOV_INIT 9 . If the infrastructure encounters a failure to allocate resources following the call to -.Xr PCI_INIT_IOV 9 , +.Xr PCI_IOV_INIT 9 , the VF creation will be aborted and -.Xr PCI_UNINIT_IOV 9 +.Xr PCI_IOV_UNINIT 9 will be called immediately without any preceding calls to .Nm . .Pp @@ -87,15 +86,15 @@ Note that it is possible for the user to different VF devices that are children of the same PF. The PF driver must not cache configuration parameters passed in previous calls to -.Fn PCI_ADD_VF +.Fn PCI_IOV_ADD_VF for other VFs and apply those parameters to the current VF. .Pp This function will not be called twice for the same .Fa vf_num on the same PF device without -.Xr PCI_UNINIT_IOV 9 +.Xr PCI_IOV_UNINIT 9 and -.Xr PCI_INIT_IOV 9 +.Xr PCI_IOV_INIT 9 first being called, in that order. .Sh RETURN VALUES This method returns 0 on success, otherwise an appropriate error is returned. @@ -106,8 +105,8 @@ the PF. .Xr nv 9 , .Xr pci 9 , .Xr pci_iov_schema 9 , -.Xr PCI_INIT_IOV 9 , -.Xr PCI_UNINIT_IOV 9 +.Xr PCI_IOV_INIT 9 , +.Xr PCI_IOV_UNINIT 9 .Sh AUTHORS This manual page was written by .An Ryan Stone Aq Mt rstone@FreeBSD.org . Copied and modified: head/share/man/man9/PCI_IOV_INIT.9 (from r283669, head/share/man/man9/PCI_INIT_IOV.9) ============================================================================== --- head/share/man/man9/PCI_INIT_IOV.9 Thu May 28 21:06:59 2015 (r283669, copy source) +++ head/share/man/man9/PCI_IOV_INIT.9 Thu May 28 22:01:50 2015 (r283670) @@ -25,23 +25,22 @@ .\" .\" $FreeBSD$ .\" -.Dd May 24, 2014 -.Dt PCI_INIT_IOV 9 +.Dd May 28, 2015 +.Dt PCI_IOV_INIT 9 .Os .Sh NAME -.Nm PCI_INIT_IOV +.Nm PCI_IOV_INIT .Nd enable SR-IOV on a PF device .Sh SYNOPSIS .In sys/bus.h .In machine/stdarg.h .In sys/nv.h -.In dev/pci/pcireg.h -.In dev/pci/pcivar.h +.In dev/pci/pci_iov.h .Ft int -.Fn PCI_INIT_IOV "device_t dev" "uint16_t num_vfs" "const nvlist_t *pf_config" +.Fn PCI_IOV_INIT "device_t dev" "uint16_t num_vfs" "const nvlist_t *pf_config" .Sh DESCRIPTION The -.Fn PCI_INIT_IOV +.Fn PCI_IOV_INIT method is called by the PCI Single-Root I/O Virtualization (SR-IOV) infrastucture when the user requests that SR-IOV be enabled on a Physical Function (PF). @@ -70,7 +69,7 @@ valid values specified in the schema. .Pp If this method returns successfully, then this method will not be called again on the same device until after a call to -.Xr PCI_UNINIT_IOV . +.Xr PCI_IOV_UNINIT . .Sh RETURN VALUES Returns 0 on success, otherwise an appropriate error is returned. If this method returns an error then the SR-IOV configuration will be aborted @@ -79,8 +78,8 @@ and no VFs will be created. .Xr nv 9 , .Xr pci 9 , .Xr pci_iov_schema 9 , -.Xr PCI_ADD_VF 9 , -.Xr PCI_UNINIT_IOV 9 +.Xr PCI_IOV_ADD_VF 9 , +.Xr PCI_IOV_UNINIT 9 .Sh AUTHORS This manual page was written by .An Ryan Stone Aq Mt rstone@FreeBSD.org . Copied and modified: head/share/man/man9/PCI_IOV_UNINIT.9 (from r283669, head/share/man/man9/PCI_UNINIT_IOV.9) ============================================================================== --- head/share/man/man9/PCI_UNINIT_IOV.9 Thu May 28 21:06:59 2015 (r283669, copy source) +++ head/share/man/man9/PCI_IOV_UNINIT.9 Thu May 28 22:01:50 2015 (r283670) @@ -25,21 +25,20 @@ .\" .\" $FreeBSD$ .\" -.Dd May 24, 2014 -.Dt PCI_UNINIT_IOV 9 +.Dd May 28, 2015 +.Dt PCI_IOV_UNINIT 9 .Os .Sh NAME -.Nm PCI_UNINIT_IOV +.Nm PCI_IOV_UNINIT .Nd disable SR-IOV on a PF device .Sh SYNOPSIS .In sys/bus.h -.In dev/pci/pcireg.h -.In dev/pci/pcivar.h +.In dev/pci/pci_iov.h .Ft void -.Fn PCI_UNINIT_IOV "device_t dev" +.Fn PCI_IOV_UNINIT "device_t dev" .Sh DESCRIPTION The -.Fn PCI_UNINIT_IOV +.Fn PCI_IOV_UNINIT method is called by the PCI Single-Root I/O Virtualization (SR-IOV) infrastructure when the user requests that SR-IOV be disabled on a Physical Function (PF). @@ -48,17 +47,17 @@ resources that it has allocated and disa configuration in the device. .Pp This method will only be called following a successful call to -.Xr PCI_INIT_IOV . +.Xr PCI_IOV_INIT . It is not guaranteed that -.Xr PCI_ADD_VF +.Xr PCI_IOV_ADD_VF will have been called for any Virtual Function (VF) after the call to -.Xr PCI_INIT_IOV +.Xr PCI_IOV_INIT and before the call to .Nm . .Sh SEE ALSO .Xr pci 9 , -.Xr PCI_ADD_VF 9 , -.Xr PCI_INIT_IOV 9 +.Xr PCI_IOV_ADD_VF 9 , +.Xr PCI_IOV_INIT 9 .Sh AUTHORS This manual page was written by .An Ryan Stone Aq Mt rstone@FreeBSD.org . Modified: head/share/man/man9/pci.9 ============================================================================== --- head/share/man/man9/pci.9 Thu May 28 21:06:59 2015 (r283669) +++ head/share/man/man9/pci.9 Thu May 28 22:01:50 2015 (r283670) @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 24, 2014 +.Dd May 28, 2015 .Dt PCI 9 .Os .Sh NAME @@ -97,10 +97,6 @@ .Ft int .Fn pci_get_vpd_readonly "device_t dev" "const char *kw" "const char **vptr" .Ft int -.Fn pci_iov_attach "device_t dev" "nvlist_t *pf_schema" "nvlist_t *vf_schema" -.Ft int -.Fn pci_iov_detach "device_t dev" -.Ft int .Fn pci_msi_count "device_t dev" .Ft int .Fn pci_msix_count "device_t dev" @@ -122,6 +118,11 @@ .Fn pci_set_powerstate "device_t dev" "int state" .Ft void .Fn pci_write_config "device_t dev" "int reg" "uint32_t val" "int width" +.In dev/pci/pci_iov.h +.Ft int +.Fn pci_iov_attach "device_t dev" "nvlist_t *pf_schema" "nvlist_t *vf_schema" +.Ft int +.Fn pci_iov_detach "device_t dev" .Sh DESCRIPTION The .Nm @@ -446,10 +447,10 @@ function is used to advertise that the g supports PCI Single-Root I/O Virtualization .Po SR-IOV Pc . A driver that supports SR-IOV must implement the -.Xr PCI_INIT_IOV 9 , -.Xr PCI_ADD_VF 9 +.Xr PCI_IOV_INIT 9 , +.Xr PCI_IOV_ADD_VF 9 and -.Xr PCI_UNIT_IOV 9 +.Xr PCI_IOV_UNINIT 9 methods. This function should be called during the .Xr DEVICE_ATTACH 9 Modified: head/share/man/man9/pci_iov_schema.9 ============================================================================== --- head/share/man/man9/pci_iov_schema.9 Thu May 28 21:06:59 2015 (r283669) +++ head/share/man/man9/pci_iov_schema.9 Thu May 28 22:01:50 2015 (r283670) @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 25, 2014 +.Dd May 28, 2015 .Dt pci_iov_schema 9 .Os .Sh NAME @@ -258,8 +258,8 @@ The function returns a pointer to the allocated schema, or NULL if a failure occurs. .Sh SEE ALSO .Xr pci 9 , -.Xr PCI_ADD_VF 9 , -.Xr PCI_INIT_IOV 9 +.Xr PCI_IOV_ADD_VF 9 , +.Xr PCI_IOV_INIT 9 .Sh AUTHORS This manual page was written by .An Ryan Stone Aq rstone@FreeBSD.org . Modified: head/sys/conf/files ============================================================================== --- head/sys/conf/files Thu May 28 21:06:59 2015 (r283669) +++ head/sys/conf/files Thu May 28 22:01:50 2015 (r283670) @@ -2024,6 +2024,7 @@ dev/pci/isa_pci.c optional pci isa dev/pci/pci.c optional pci dev/pci/pci_if.m standard dev/pci/pci_iov.c optional pci pci_iov +dev/pci/pci_iov_if.m standard dev/pci/pci_iov_schema.c optional pci pci_iov dev/pci/pci_pci.c optional pci dev/pci/pci_subr.c optional pci Modified: head/sys/conf/kmod.mk ============================================================================== --- head/sys/conf/kmod.mk Thu May 28 21:06:59 2015 (r283669) +++ head/sys/conf/kmod.mk Thu May 28 22:01:50 2015 (r283670) @@ -349,7 +349,7 @@ MFILES?= dev/acpica/acpi_if.m dev/acpi_s dev/mbox/mbox_if.m dev/mmc/mmcbr_if.m dev/mmc/mmcbus_if.m \ dev/mii/miibus_if.m dev/mvs/mvs_if.m dev/ofw/ofw_bus_if.m \ dev/pccard/card_if.m dev/pccard/power_if.m dev/pci/pci_if.m \ - dev/pci/pcib_if.m dev/ppbus/ppbus_if.m \ + dev/pci/pci_iov_if.m dev/pci/pcib_if.m dev/ppbus/ppbus_if.m \ dev/sdhci/sdhci_if.m dev/smbus/smbus_if.m dev/spibus/spibus_if.m \ dev/sound/pci/hda/hdac_if.m \ dev/sound/pcm/ac97_if.m dev/sound/pcm/channel_if.m \ Modified: head/sys/dev/ixl/if_ixl.c ============================================================================== --- head/sys/dev/ixl/if_ixl.c Thu May 28 21:06:59 2015 (r283669) +++ head/sys/dev/ixl/if_ixl.c Thu May 28 22:01:50 2015 (r283670) @@ -199,8 +199,8 @@ static int ixl_sysctl_switch_config(SYSC #ifdef PCI_IOV static int ixl_adminq_err_to_errno(enum i40e_admin_queue_err err); -static int ixl_init_iov(device_t dev, uint16_t num_vfs, const nvlist_t*); -static void ixl_uninit_iov(device_t dev); +static int ixl_iov_init(device_t dev, uint16_t num_vfs, const nvlist_t*); +static void ixl_iov_uninit(device_t dev); static int ixl_add_vf(device_t dev, uint16_t vfnum, const nvlist_t*); static void ixl_handle_vf_msg(struct ixl_pf *, @@ -222,9 +222,9 @@ static device_method_t ixl_methods[] = { DEVMETHOD(device_detach, ixl_detach), DEVMETHOD(device_shutdown, ixl_shutdown), #ifdef PCI_IOV - DEVMETHOD(pci_init_iov, ixl_init_iov), - DEVMETHOD(pci_uninit_iov, ixl_uninit_iov), - DEVMETHOD(pci_add_vf, ixl_add_vf), + DEVMETHOD(pci_iov_init, ixl_iov_init), + DEVMETHOD(pci_iov_uninit, ixl_iov_uninit), + DEVMETHOD(pci_iov_add_vf, ixl_add_vf), #endif {0, 0} }; @@ -6456,7 +6456,7 @@ ixl_adminq_err_to_errno(enum i40e_admin_ } static int -ixl_init_iov(device_t dev, uint16_t num_vfs, const nvlist_t *params) +ixl_iov_init(device_t dev, uint16_t num_vfs, const nvlist_t *params) { struct ixl_pf *pf; struct i40e_hw *hw; @@ -6504,7 +6504,7 @@ fail: } static void -ixl_uninit_iov(device_t dev) +ixl_iov_uninit(device_t dev) { struct ixl_pf *pf; struct i40e_hw *hw; Modified: head/sys/dev/ixl/ixl.h ============================================================================== --- head/sys/dev/ixl/ixl.h Thu May 28 21:06:59 2015 (r283669) +++ head/sys/dev/ixl/ixl.h Thu May 28 22:01:50 2015 (r283670) @@ -93,6 +93,7 @@ #ifdef PCI_IOV #include #include +#include #endif #include "i40e_type.h" Modified: head/sys/dev/pci/pci_if.m ============================================================================== --- head/sys/dev/pci/pci_if.m Thu May 28 21:06:59 2015 (r283669) +++ head/sys/dev/pci/pci_if.m Thu May 28 22:01:50 2015 (r283670) @@ -214,22 +214,6 @@ METHOD int iov_detach { device_t child; }; -METHOD int init_iov { - device_t dev; - uint16_t num_vfs; - const struct nvlist *config; -}; - -METHOD void uninit_iov { - device_t dev; -}; - -METHOD int add_vf { - device_t dev; - uint16_t vfnum; - const struct nvlist *config; -}; - METHOD device_t create_iov_child { device_t bus; device_t pf; @@ -237,4 +221,3 @@ METHOD device_t create_iov_child { uint16_t vid; uint16_t did; } DEFAULT null_create_iov_child; - Modified: head/sys/dev/pci/pci_iov.c ============================================================================== --- head/sys/dev/pci/pci_iov.c Thu May 28 21:06:59 2015 (r283669) +++ head/sys/dev/pci/pci_iov.c Thu May 28 22:01:50 2015 (r283670) @@ -53,11 +53,11 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include -#include "pci_if.h" #include "pcib_if.h" static MALLOC_DEFINE(M_SRIOV, "sr_iov", "PCI SR-IOV allocations"); @@ -483,13 +483,13 @@ pci_iov_config_page_size(struct pci_devi } static int -pci_init_iov(device_t dev, uint16_t num_vfs, const nvlist_t *config) +pci_iov_init(device_t dev, uint16_t num_vfs, const nvlist_t *config) { const nvlist_t *device, *driver_config; device = nvlist_get_nvlist(config, PF_CONFIG_NAME); driver_config = nvlist_get_nvlist(device, DRIVER_CONFIG_NAME); - return (PCI_INIT_IOV(dev, num_vfs, driver_config)); + return (PCI_IOV_INIT(dev, num_vfs, driver_config)); } static int @@ -595,7 +595,7 @@ pci_iov_enumerate_vfs(struct pci_devinfo pci_iov_add_bars(iov, vfinfo); - error = PCI_ADD_VF(dev, i, driver_config); + error = PCI_IOV_ADD_VF(dev, i, driver_config); if (error != 0) { device_printf(dev, "Failed to add VF %d\n", i); pci_delete_child(bus, vf); @@ -652,7 +652,7 @@ pci_iov_config(struct cdev *cdev, struct if (error != 0) goto out; - error = pci_init_iov(dev, num_vfs, config); + error = pci_iov_init(dev, num_vfs, config); if (error != 0) goto out; iov_inited = 1; @@ -700,7 +700,7 @@ pci_iov_config(struct cdev *cdev, struct return (0); out: if (iov_inited) - PCI_UNINIT_IOV(dev); + PCI_IOV_UNINIT(dev); for (i = 0; i <= PCIR_MAX_BAR_0; i++) { if (iov->iov_bar[i].res != NULL) { @@ -793,7 +793,7 @@ pci_iov_delete(struct cdev *cdev) if (pci_iov_is_child_vf(iov, vf)) pci_delete_child(bus, vf); } - PCI_UNINIT_IOV(dev); + PCI_IOV_UNINIT(dev); iov_ctl = IOV_READ(dinfo, PCIR_SRIOV_CTL, 2); iov_ctl &= ~(PCIM_SRIOV_VF_EN | PCIM_SRIOV_VF_MSE); Added: head/sys/dev/pci/pci_iov.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/dev/pci/pci_iov.h Thu May 28 22:01:50 2015 (r283670) @@ -0,0 +1,49 @@ +/*- + * Copyright (c) 2013-2015 Sandvine 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. + * + * $FreeBSD$ + */ + +#ifndef _PCI_IOV_H_ +#define _PCI_IOV_H_ + +#include "pci_iov_if.h" + +struct nvlist; + +static __inline int +pci_iov_attach(device_t dev, struct nvlist *pf_schema, struct nvlist *vf_schema) +{ + return (PCI_IOV_ATTACH(device_get_parent(dev), dev, pf_schema, + vf_schema)); +} + +static __inline int +pci_iov_detach(device_t dev) +{ + return (PCI_IOV_DETACH(device_get_parent(dev), dev)); +} + +#endif /* !_PCI_IOV_H_ */ Added: head/sys/dev/pci/pci_iov_if.m ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/dev/pci/pci_iov_if.m Thu May 28 22:01:50 2015 (r283670) @@ -0,0 +1,52 @@ +#- +# Copyright (c) 2013-2015 Sandvine 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. +# +# $FreeBSD$ +# + +#include + +INTERFACE pci_iov; + +HEADER { + struct nvlist; +} + + +METHOD int init { + device_t dev; + uint16_t num_vfs; + const struct nvlist *config; +}; + +METHOD void uninit { + device_t dev; +}; + +METHOD int add_vf { + device_t dev; + uint16_t vfnum; + const struct nvlist *config; +}; Modified: head/sys/dev/pci/pcivar.h ============================================================================== --- head/sys/dev/pci/pcivar.h Thu May 28 21:06:59 2015 (r283669) +++ head/sys/dev/pci/pcivar.h Thu May 28 22:01:50 2015 (r283670) @@ -39,8 +39,6 @@ typedef uint64_t pci_addr_t; -struct nvlist; - /* Config registers for PCI-PCI and PCI-Cardbus bridges. */ struct pcicfg_bridge { uint8_t br_seclat; @@ -536,19 +534,6 @@ pci_child_added(device_t dev) return (PCI_CHILD_ADDED(device_get_parent(dev), dev)); } -static __inline int -pci_iov_attach(device_t dev, struct nvlist *pf_schema, struct nvlist *vf_schema) -{ - return (PCI_IOV_ATTACH(device_get_parent(dev), dev, pf_schema, - vf_schema)); -} - -static __inline int -pci_iov_detach(device_t dev) -{ - return (PCI_IOV_DETACH(device_get_parent(dev), dev)); -} - device_t pci_find_bsf(uint8_t, uint8_t, uint8_t); device_t pci_find_dbsf(uint32_t, uint8_t, uint8_t, uint8_t); device_t pci_find_device(uint16_t, uint16_t); Modified: head/sys/modules/ixl/Makefile ============================================================================== --- head/sys/modules/ixl/Makefile Thu May 28 21:06:59 2015 (r283669) +++ head/sys/modules/ixl/Makefile Thu May 28 22:01:50 2015 (r283670) @@ -3,7 +3,7 @@ .PATH: ${.CURDIR}/../../dev/ixl KMOD = if_ixl -SRCS = device_if.h bus_if.h pci_if.h opt_bdg.h +SRCS = device_if.h bus_if.h pci_if.h pci_iov_if.h opt_bdg.h SRCS += opt_inet.h opt_inet6.h opt_rss.h SRCS += if_ixl.c ixl_txrx.c i40e_osdep.c From owner-svn-src-all@FreeBSD.ORG Thu May 28 22:06:06 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9D1FFD7C; Thu, 28 May 2015 22:06:06 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from svn.freebsd.org (svn.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 8A5BB614; Thu, 28 May 2015 22:06:06 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4SM6687090528; Thu, 28 May 2015 22:06:06 GMT (envelope-from brooks@FreeBSD.org) Received: (from brooks@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4SM66Xj090527; Thu, 28 May 2015 22:06:06 GMT (envelope-from brooks@FreeBSD.org) Message-Id: <201505282206.t4SM66Xj090527@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: brooks set sender to brooks@FreeBSD.org using -f From: Brooks Davis Date: Thu, 28 May 2015 22:06:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283671 - head/sys/sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 May 2015 22:06:06 -0000 Author: brooks Date: Thu May 28 22:06:05 2015 New Revision: 283671 URL: https://svnweb.freebsd.org/changeset/base/283671 Log: Revert r102953 The bitfile padding was always unallocated on real-world FreeBSD systems and depended on the assumption that (abs(sizeof(long) - sizeof(char*)) <= 32). Differential Revision: https://reviews.freebsd.org/D2667 Reviewed by: eadler Sponsored by: DARPA, AFRL Modified: head/sys/sys/nlist_aout.h Modified: head/sys/sys/nlist_aout.h ============================================================================== --- head/sys/sys/nlist_aout.h Thu May 28 22:01:50 2015 (r283670) +++ head/sys/sys/nlist_aout.h Thu May 28 22:06:05 2015 (r283671) @@ -56,8 +56,6 @@ struct nlist { } n_un; #else const char *n_name; /* symbol name (in memory) */ - int : 8 * (sizeof(long) > sizeof(char *) ? - sizeof(long) - sizeof(char *) : sizeof(char *) - sizeof(long)); #endif unsigned char n_type; /* type defines */ char n_other; /* ".type" and binding information */ From owner-svn-src-all@FreeBSD.ORG Fri May 29 00:46:15 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A941393D; Fri, 29 May 2015 00:46:15 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.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 950181E4E; Fri, 29 May 2015 00:46:15 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4T0kF79071389; Fri, 29 May 2015 00:46:15 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4T0kF4b071388; Fri, 29 May 2015 00:46:15 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201505290046.t4T0kF4b071388@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Fri, 29 May 2015 00:46: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: r283672 - stable/10/release X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 00:46:15 -0000 Author: gjb Date: Fri May 29 00:46:14 2015 New Revision: 283672 URL: https://svnweb.freebsd.org/changeset/base/283672 Log: MFC r283573, r283574, r283575, r283576, r283580, r283593, r283618: r283573: Remove a continuation on error, since the relevant behavior can only occur if a particular file exists. r283574: Set STAGE_TARGETS only if RELEASEDIR exists. r283575: Remove duplicate exists() sanity check. r283576: Reindent after previous commit. r283580: Use SVNREVISION and BUILDDATE if passed into the make(1) environment, fallback to trying to figure it out otherwise. r283593: Fix a typo in a comment. r283618: Invert the build date and svn revision to match the namimg convention that has been in use for a while. Sponsored by: The FreeBSD Foundation Modified: stable/10/release/Makefile.mirrors Directory Properties: stable/10/ (props changed) Modified: stable/10/release/Makefile.mirrors ============================================================================== --- stable/10/release/Makefile.mirrors Thu May 28 22:06:05 2015 (r283671) +++ stable/10/release/Makefile.mirrors Fri May 29 00:46:14 2015 (r283672) @@ -16,7 +16,9 @@ RELEASEDIR?= /R FTPDIR?= ${RELEASEDIR}/ftp-stage +.if exists(${RELEASEDIR}) STAGE_TARGETS?= iso-images-stage +.endif .if (defined(EMBEDDED_TARGET) && !empty(EMBEDDED_TARGET)) || (defined(EMBEDDEDBUILD) && !empty(EMBEDDEDBUILD)) . if ${TARGET} == "arm" || ${EMBEDDED_TARGET} == "arm" @@ -28,24 +30,26 @@ EMBEDDED= 1 .if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT" SNAPSHOT= 1 TLD?= ${FTPDIR}/snapshots -. for _D in /usr/bin /usr/local/bin -. for _S in svnversion svnliteversion -. if exists(${_D}/${_S}) +. if !defined(SVNREVISION) || empty(SVNREVISION) +. for _D in /usr/bin /usr/local/bin +. for _S in svnversion svnliteversion +. if exists(${_D}/${_S}) SVNVERSION?= ${_D}/${_S} -. endif +. endif +. endfor . endfor -. endfor -. if exists(${.CURDIR}/${.OBJDIR}/dist/base/bin/sh) +. if exists(${SVNVERSION}) && !empty(SVNVERSION) +SVNREVISION!= ${SVNVERSION} ${WORLDDIR}/Makefile +. endif +. endif # !defined(SVNREVISION) +. if !defined(BUILDDATE) || empty(BUILDDATE) +. if exists(${.CURDIR}/${.OBJDIR}/dist/base/bin/sh) BUILDDATE!= cd ${.CURDIR} && date -j -f '%s' $$(stat -f "%c" ${.OBJDIR}/dist/base/bin/sh) +%Y%m%d -. else +. else BUILDDATE!= date +%Y%m%d +. endif . endif -. if exists(${SVNVERSION}) && !empty(SVNVERSION) -SVNREVISION!= ${SVNVERSION} ${WORLDDIR}/Makefile -_SNAP_SUFFIX:= -r${SVNREVISION}-${BUILDDATE} -. else -_SNAP_SUFFIX:= -${BUILDDATE} -. endif +_SNAP_SUFFIX:= ${BUILDDATE}-r${SVNREVISION} .else # release SNAPSHOT= @@ -83,18 +87,16 @@ remove-old-bits: iso-images-stage: mkdir -p ${ISO_DIR} mkdir -p ${TLD}/ISO-IMAGES/${REVISION} -.if exists(${RELEASEDIR}) - @# Assume we have images to copy. -. if defined(SNAPSHOT) && !empty(SNAPSHOT) +.if defined(SNAPSHOT) && !empty(SNAPSHOT) cd ${RELEASEDIR} && rm -f CHECKSUM.* -. for IMAGE in ${IMAGES} -. if defined(EMBEDDED) && !empty(EMBEDDED) -. if defined(OLDNAME) && !empty(OLDNAME) +. for IMAGE in ${IMAGES} +. if defined(EMBEDDED) && !empty(EMBEDDED) +. if defined(OLDNAME) && !empty(OLDNAME) @# arm/armv6 IMX6 -> WANDBOARD, for example. cd ${RELEASEDIR} && \ mv ${OSRELEASE}-${OLDNAME}.${IMAGE}.xz \ ${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz -. endif +. endif cd ${RELEASEDIR} && \ mv ${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz \ ${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz @@ -103,31 +105,31 @@ iso-images-stage: cd ${TLD}/ISO-IMAGES/${REVISION} && \ ln -s \ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX}.${IMAGE}.xz -. endif # not embedded -. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}) +. endif # not embedded +. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}) cd ${RELEASEDIR} && \ mv ${OSRELEASE}-${IMAGE} \ - ${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} || true + ${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} cp -p ${RELEASEDIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} \ ${ISO_DIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} cd ${TLD}/ISO-IMAGES/${REVISION} && \ ln -s \ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE} -. endif -. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz) +. endif +. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz) cd ${RELEASEDIR} && \ mv ${OSRELEASE}-${IMAGE}.xz \ - ${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz || true + ${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz cp -p ${RELEASEDIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz \ ${ISO_DIR}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz cd ${TLD}/ISO-IMAGES/${REVISION} && \ ln -s \ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${SNAP_SUFFIX}-${IMAGE}.xz -. endif -. endfor # images loop +. endif +. endfor # images loop cd ${RELEASEDIR} && rm -f CHECKSUM.* -. for CHECKSUM in ${CHECKSUM_FILES} -. if defined(EMBEDDED) && !empty(EMBEDDED) +. for CHECKSUM in ${CHECKSUM_FILES} +. if defined(EMBEDDED) && !empty(EMBEDDED) cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \ CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX} cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX} \ @@ -135,7 +137,7 @@ iso-images-stage: cd ${TLD}/ISO-IMAGES/${REVISION} && \ ln -s \ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME}-${SNAP_SUFFIX} -. else # not embedded +. else # not embedded cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \ CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX} cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX} \ @@ -143,42 +145,42 @@ iso-images-stage: cd ${TLD}/ISO-IMAGES/${REVISION} && \ ln -s \ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${SNAP_SUFFIX} -. endif # -. endfor # checksum files -. else # not snapshot -. for IMAGE in ${IMAGES} -. if defined(EMBEDDED) && !empty(EMBEDDED) -. if defined(OLDNAME) && !empty(OLDNAME) +. endif # +. endfor # checksum files +.else # not snapshot +. for IMAGE in ${IMAGES} +. if defined(EMBEDDED) && !empty(EMBEDDED) +. if defined(OLDNAME) && !empty(OLDNAME) @# arm/armv6 IMX6 -> WANDBOARD, for example. cd ${RELEASEDIR} && \ mv ${OSRELEASE}-${OLDNAME}.${IMAGE}.xz \ ${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz -. endif +. endif cp -p ${RELEASEDIR}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz \ ${ISO_DIR}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz cd ${TLD}/ISO-IMAGES/${REVISION} && \ ln -s \ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${BOARDNAME}.${IMAGE}.xz -. endif # not embedded -. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}) +. endif # not embedded +. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}) cd ${RELEASEDIR} && \ cp -p ${RELEASEDIR}/${OSRELEASE}-${IMAGE} \ ${ISO_DIR}/${OSRELEASE}-${IMAGE} cd ${TLD}/ISO-IMAGES/${REVISION} && \ ln -s \ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE} -. endif -. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz) +. endif +. if exists(${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz) cp -p ${RELEASEDIR}/${OSRELEASE}-${IMAGE}.xz \ ${ISO_DIR}/${OSRELEASE}-${IMAGE}.xz cd ${TLD}/ISO-IMAGES/${REVISION} && \ ln -s \ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/${OSRELEASE}-${IMAGE}.xz -. endif -. endfor # images loop +. endif +. endfor # images loop cd ${RELEASEDIR} && rm -f CHECKSUM.* -. for CHECKSUM in ${CHECKSUM_FILES} -. if defined(EMBEDDED) && !empty(EMBEDDED) +. for CHECKSUM in ${CHECKSUM_FILES} +. if defined(EMBEDDED) && !empty(EMBEDDED) cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \ CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME} cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME} \ @@ -186,7 +188,7 @@ iso-images-stage: cd ${TLD}/ISO-IMAGES/${REVISION} && \ ln -s \ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE}-${BOARDNAME} -. else # not embedded +. else # not embedded cd ${RELEASEDIR} && ${CHECKSUM:tl} ${OSRELEASE}* > \ CHECKSUM.${CHECKSUM}-${OSRELEASE} cp -p ${RELEASEDIR}/CHECKSUM.${CHECKSUM}-${OSRELEASE} \ @@ -194,17 +196,16 @@ iso-images-stage: cd ${TLD}/ISO-IMAGES/${REVISION} && \ ln -s \ ../../${TARGET}/${TARGET_ARCH}/ISO-IMAGES/${REVISION}/CHECKSUM.${CHECKSUM}-${OSRELEASE} -. endif -. endfor # checksum files -. endif # release -. if exists(${RELEASEDIR}/ftp) +. endif +. endfor # checksum files +.endif # release +.if exists(${RELEASEDIR}/ftp) mkdir -p ${FTP_DIR} cp -p ${RELEASEDIR}/ftp/*.txz ${RELEASEDIR}/ftp/MANIFEST ${FTP_DIR} cd ${TLD}/${TARGET} && \ ln -s ${TARGET_ARCH}/${REVISION}-${BRANCH} \ ${REVISION}-${BRANCH} -. endif -.endif # no RELEASEDIR +.endif vm-images-stage: mkdir -p ${VM_DIR} From owner-svn-src-all@FreeBSD.ORG Fri May 29 02:15:06 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 540096DB; Fri, 29 May 2015 02:15:06 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.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 435DF12B1; Fri, 29 May 2015 02:15:06 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4T2F6cM015539; Fri, 29 May 2015 02:15:06 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4T2F5Oi015537; Fri, 29 May 2015 02:15:05 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201505290215.t4T2F5Oi015537@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Fri, 29 May 2015 02:15:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283673 - head/release/arm X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 02:15:06 -0000 Author: gjb Date: Fri May 29 02:15:05 2015 New Revision: 283673 URL: https://svnweb.freebsd.org/changeset/base/283673 Log: Sort configuration options for consistency with other boards. MFC after: 3 days Sponsored by: The FreeBSD Foundation Modified: head/release/arm/PANDABOARD.conf head/release/arm/RPI2.conf Modified: head/release/arm/PANDABOARD.conf ============================================================================== --- head/release/arm/PANDABOARD.conf Fri May 29 00:46:14 2015 (r283672) +++ head/release/arm/PANDABOARD.conf Fri May 29 02:15:05 2015 (r283673) @@ -8,13 +8,13 @@ EMBEDDED_TARGET="arm" EMBEDDED_TARGET_ARCH="armv6" EMBEDDEDPORTS="sysutils/u-boot-pandaboard" KERNEL="PANDABOARD" -NODOC=1 WORLD_FLAGS="${WORLD_FLAGS} UBLDR_LOADADDR=0x88000000" IMAGE_SIZE="1G" PART_SCHEME="MBR" FAT_SIZE="2m" FAT_TYPE="12" MD_ARGS="-x 63 -y 255" +NODOC=1 arm_install_uboot() { UBOOT_DIR="/usr/local/share/u-boot/u-boot-pandaboard" Modified: head/release/arm/RPI2.conf ============================================================================== --- head/release/arm/RPI2.conf Fri May 29 00:46:14 2015 (r283672) +++ head/release/arm/RPI2.conf Fri May 29 02:15:05 2015 (r283673) @@ -8,13 +8,13 @@ EMBEDDED_TARGET="arm" EMBEDDED_TARGET_ARCH="armv6" EMBEDDEDPORTS="sysutils/u-boot-rpi2" KERNEL="RPI2" -NODOC=1 WORLD_FLAGS="${WORLD_FLAGS} UBLDR_LOADADDR=0x2000000" IMAGE_SIZE="1G" PART_SCHEME="MBR" FAT_SIZE="50m" FAT_TYPE="16" MD_ARGS="-x 63 -y 255" +NODOC=1 arm_install_uboot() { UBOOT_DIR="/usr/local/share/u-boot/u-boot-rpi2" From owner-svn-src-all@FreeBSD.ORG Fri May 29 02:16:41 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 51109836; Fri, 29 May 2015 02:16:41 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.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 405ED12C6; Fri, 29 May 2015 02:16:41 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4T2GfO6015787; Fri, 29 May 2015 02:16:41 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4T2Gf7g015786; Fri, 29 May 2015 02:16:41 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201505290216.t4T2Gf7g015786@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Fri, 29 May 2015 02:16:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283674 - head/release/arm X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 02:16:41 -0000 Author: gjb Date: Fri May 29 02:16:40 2015 New Revision: 283674 URL: https://svnweb.freebsd.org/changeset/base/283674 Log: Export 'BOARDNAME' when differs from the KERNCONF. MFC after: 3 days Sponsored by: The FreeBSD Foundation Modified: head/release/arm/WANDBOARD.conf Modified: head/release/arm/WANDBOARD.conf ============================================================================== --- head/release/arm/WANDBOARD.conf Fri May 29 02:15:05 2015 (r283673) +++ head/release/arm/WANDBOARD.conf Fri May 29 02:16:40 2015 (r283674) @@ -15,6 +15,7 @@ FAT_SIZE="50m -b 16384" FAT_TYPE="16" MD_ARGS="-x 63 -y 255" NODOC=1 +export BOARDNAME="WANDBOARD" arm_install_uboot() { UBOOT_DIR="/usr/local/share/u-boot/u-boot-wandboard" From owner-svn-src-all@FreeBSD.ORG Fri May 29 03:47:36 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id BDB1D131; Fri, 29 May 2015 03:47:36 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org (svn.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 ABEB3176B; Fri, 29 May 2015 03:47:36 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4T3lajB060473; Fri, 29 May 2015 03:47:36 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4T3lZ2p060468; Fri, 29 May 2015 03:47:35 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201505290347.t4T3lZ2p060468@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Fri, 29 May 2015 03:47: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: r283675 - stable/10/sys/ofed/include/linux X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 03:47:37 -0000 Author: markj Date: Fri May 29 03:47:35 2015 New Revision: 283675 URL: https://svnweb.freebsd.org/changeset/base/283675 Log: MFC r282331: Don't drop the idr lock before verifying that the newly-inserted element is present in the tree. MFC r282741: find_next_bit() and find_next_zero_bit(): if the caller-specified offset lies within the last block of the bit set and no bits are set beyond the offset, terminate the search immediately instead of continuing as though there are further blocks in the set and subsequently returning an incorrect result. MFC r282743: Ensure that msecs_to_jiffies(0) == 0. Modified: stable/10/sys/ofed/include/linux/bitops.h stable/10/sys/ofed/include/linux/jiffies.h stable/10/sys/ofed/include/linux/linux_idr.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/ofed/include/linux/bitops.h ============================================================================== --- stable/10/sys/ofed/include/linux/bitops.h Fri May 29 02:16:40 2015 (r283674) +++ stable/10/sys/ofed/include/linux/bitops.h Fri May 29 03:47:35 2015 (r283675) @@ -165,6 +165,8 @@ find_next_bit(unsigned long *addr, unsig mask = (*addr) & ~BIT_MASK(offs); if (mask) return (bit + __ffsl(mask)); + if (size - bit <= BITS_PER_LONG) + return (size); bit += BITS_PER_LONG; addr++; } @@ -203,6 +205,8 @@ find_next_zero_bit(unsigned long *addr, mask = ~(*addr) & ~BIT_MASK(offs); if (mask) return (bit + __ffsl(mask)); + if (size - bit <= BITS_PER_LONG) + return (size); bit += BITS_PER_LONG; addr++; } Modified: stable/10/sys/ofed/include/linux/jiffies.h ============================================================================== --- stable/10/sys/ofed/include/linux/jiffies.h Fri May 29 02:16:40 2015 (r283674) +++ stable/10/sys/ofed/include/linux/jiffies.h Fri May 29 03:47:35 2015 (r283675) @@ -42,7 +42,7 @@ msecs_to_jiffies(int msec) tv.tv_sec = msec / 1000; tv.tv_usec = (msec % 1000) * 1000; - return (tvtohz(&tv)); + return (tvtohz(&tv) - 1); } #define jiffies ticks Modified: stable/10/sys/ofed/include/linux/linux_idr.c ============================================================================== --- stable/10/sys/ofed/include/linux/linux_idr.c Fri May 29 02:16:40 2015 (r283674) +++ stable/10/sys/ofed/include/linux/linux_idr.c Fri May 29 03:47:35 2015 (r283675) @@ -185,27 +185,37 @@ out: return (res); } -void * -idr_find(struct idr *idr, int id) +static inline void * +idr_find_locked(struct idr *idr, int id) { struct idr_layer *il; void *res; int layer; - res = NULL; + mtx_assert(&idr->lock, MA_OWNED); + id &= MAX_ID_MASK; - mtx_lock(&idr->lock); + res = NULL; il = idr->top; layer = idr->layers - 1; if (il == NULL || id > idr_max(idr)) - goto out; + return (NULL); while (layer && il) { il = il->ary[idr_pos(id, layer)]; layer--; } if (il != NULL) res = il->ary[id & IDR_MASK]; -out: + return (res); +} + +void * +idr_find(struct idr *idr, int id) +{ + void *res; + + mtx_lock(&idr->lock); + res = idr_find_locked(idr, id); mtx_unlock(&idr->lock); return (res); } @@ -331,13 +341,13 @@ idr_get_new(struct idr *idr, void *ptr, } error = 0; out: - mtx_unlock(&idr->lock); #ifdef INVARIANTS - if (error == 0 && idr_find(idr, id) != ptr) { + if (error == 0 && idr_find_locked(idr, id) != ptr) { panic("idr_get_new: Failed for idr %p, id %d, ptr %p\n", idr, id, ptr); } #endif + mtx_unlock(&idr->lock); return (error); } @@ -438,12 +448,12 @@ restart: } error = 0; out: - mtx_unlock(&idr->lock); #ifdef INVARIANTS - if (error == 0 && idr_find(idr, id) != ptr) { + if (error == 0 && idr_find_locked(idr, id) != ptr) { panic("idr_get_new_above: Failed for idr %p, id %d, ptr %p\n", idr, id, ptr); } #endif + mtx_unlock(&idr->lock); return (error); } From owner-svn-src-all@FreeBSD.ORG Fri May 29 04:01:42 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id BB0BF2D9; Fri, 29 May 2015 04:01:42 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org (svn.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 A69A21B2A; Fri, 29 May 2015 04:01:42 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4T41gkn069579; Fri, 29 May 2015 04:01:42 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4T41dJg069548; Fri, 29 May 2015 04:01:39 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201505290401.t4T41dJg069548@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Fri, 29 May 2015 04:01:39 +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: r283676 - in stable/10: share/man/man9 sys/cddl/contrib/opensolaris/uts/common/dtrace sys/cddl/dev/dtrace sys/cddl/dev/dtrace/amd64 sys/cddl/dev/dtrace/i386 sys/cddl/dev/dtrace/mips 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-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 04:01:42 -0000 Author: markj Date: Fri May 29 04:01:39 2015 New Revision: 283676 URL: https://svnweb.freebsd.org/changeset/base/283676 Log: MFC r281915: Make vpanic() externally visible. MFC r281916: Fix DTrace's panic() action. Modified: stable/10/share/man/man9/Makefile stable/10/share/man/man9/panic.9 stable/10/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c stable/10/sys/cddl/dev/dtrace/amd64/dtrace_asm.S stable/10/sys/cddl/dev/dtrace/dtrace_hacks.c stable/10/sys/cddl/dev/dtrace/i386/dtrace_asm.S stable/10/sys/cddl/dev/dtrace/mips/dtrace_asm.S stable/10/sys/cddl/dev/dtrace/powerpc/dtrace_asm.S stable/10/sys/kern/kern_shutdown.c stable/10/sys/sys/systm.h Directory Properties: stable/10/ (props changed) Modified: stable/10/share/man/man9/Makefile ============================================================================== --- stable/10/share/man/man9/Makefile Fri May 29 03:47:35 2015 (r283675) +++ stable/10/share/man/man9/Makefile Fri May 29 04:01:39 2015 (r283676) @@ -1002,6 +1002,7 @@ MLINKS+=mutex.9 mtx_assert.9 \ mutex.9 mtx_unlock_spin_flags.9 MLINKS+=namei.9 NDFREE.9 \ namei.9 NDINIT.9 +MLINKS+=panic.9 vpanic.9 MLINKS+=pbuf.9 getpbuf.9 \ pbuf.9 relpbuf.9 \ pbuf.9 trypbuf.9 Modified: stable/10/share/man/man9/panic.9 ============================================================================== --- stable/10/share/man/man9/panic.9 Fri May 29 03:47:35 2015 (r283675) +++ stable/10/share/man/man9/panic.9 Fri May 29 04:01:39 2015 (r283676) @@ -31,7 +31,7 @@ .\" .\" $FreeBSD$ .\" -.Dd August 11, 1995 +.Dd April 23, 2015 .Dt PANIC 9 .Os .Sh NAME @@ -42,10 +42,14 @@ .In sys/systm.h .Ft void .Fn panic "const char *fmt" ... +.Ft void +.Fn vpanic "const char *fmt" "va_list ap" .Sh DESCRIPTION The .Fn panic -function terminates the running system. +and +.Fn vpanic +functions terminate the running system. The message .Fa fmt is a Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c Fri May 29 03:47:35 2015 (r283675) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c Fri May 29 04:01:39 2015 (r283676) @@ -606,7 +606,11 @@ dtrace_panic(const char *format, ...) va_list alist; va_start(alist, format); +#ifdef __FreeBSD__ + vpanic(format, alist); +#else dtrace_vpanic(format, alist); +#endif va_end(alist); } Modified: stable/10/sys/cddl/dev/dtrace/amd64/dtrace_asm.S ============================================================================== --- stable/10/sys/cddl/dev/dtrace/amd64/dtrace_asm.S Fri May 29 03:47:35 2015 (r283675) +++ stable/10/sys/cddl/dev/dtrace/amd64/dtrace_asm.S Fri May 29 04:01:39 2015 (r283676) @@ -363,211 +363,3 @@ dtrace_interrupt_enable(dtrace_icookie_t popfq ret END(dtrace_interrupt_enable) - -/* - * The panic() and cmn_err() functions invoke vpanic() as a common entry point - * into the panic code implemented in panicsys(). vpanic() is responsible - * for passing through the format string and arguments, and constructing a - * regs structure on the stack into which it saves the current register - * values. If we are not dying due to a fatal trap, these registers will - * then be preserved in panicbuf as the current processor state. Before - * invoking panicsys(), vpanic() activates the first panic trigger (see - * common/os/panic.c) and switches to the panic_stack if successful. Note that - * DTrace takes a slightly different panic path if it must panic from probe - * context. Instead of calling panic, it calls into dtrace_vpanic(), which - * sets up the initial stack as vpanic does, calls dtrace_panic_trigger(), and - * branches back into vpanic(). - */ - -/* -void -vpanic(const char *format, va_list alist) -*/ - ENTRY(vpanic) /* Initial stack layout: */ - - pushq %rbp /* | %rip | 0x60 */ - movq %rsp, %rbp /* | %rbp | 0x58 */ - pushfq /* | rfl | 0x50 */ - pushq %r11 /* | %r11 | 0x48 */ - pushq %r10 /* | %r10 | 0x40 */ - pushq %rbx /* | %rbx | 0x38 */ - pushq %rax /* | %rax | 0x30 */ - pushq %r9 /* | %r9 | 0x28 */ - pushq %r8 /* | %r8 | 0x20 */ - pushq %rcx /* | %rcx | 0x18 */ - pushq %rdx /* | %rdx | 0x10 */ - pushq %rsi /* | %rsi | 0x8 alist */ - pushq %rdi /* | %rdi | 0x0 format */ - - movq %rsp, %rbx /* %rbx = current %rsp */ - - leaq panic_quiesce(%rip), %rdi /* %rdi = &panic_quiesce */ - call panic_trigger /* %eax = panic_trigger() */ - -vpanic_common: - /* - * The panic_trigger result is in %eax from the call above, and - * dtrace_panic places it in %eax before branching here. - * The rdmsr instructions that follow below will clobber %eax so - * we stash the panic_trigger result in %r11d. - */ - movl %eax, %r11d - cmpl $0, %r11d - je 0f - - /* - * If panic_trigger() was successful, we are the first to initiate a - * panic: we now switch to the reserved panic_stack before continuing. - */ - leaq panic_stack(%rip), %rsp - addq $PANICSTKSIZE, %rsp -0: subq $REGSIZE, %rsp - /* - * Now that we've got everything set up, store the register values as - * they were when we entered vpanic() to the designated location in - * the regs structure we allocated on the stack. - */ -#ifdef notyet - movq 0x0(%rbx), %rcx - movq %rcx, REGOFF_RDI(%rsp) - movq 0x8(%rbx), %rcx - movq %rcx, REGOFF_RSI(%rsp) - movq 0x10(%rbx), %rcx - movq %rcx, REGOFF_RDX(%rsp) - movq 0x18(%rbx), %rcx - movq %rcx, REGOFF_RCX(%rsp) - movq 0x20(%rbx), %rcx - - movq %rcx, REGOFF_R8(%rsp) - movq 0x28(%rbx), %rcx - movq %rcx, REGOFF_R9(%rsp) - movq 0x30(%rbx), %rcx - movq %rcx, REGOFF_RAX(%rsp) - movq 0x38(%rbx), %rcx - movq %rcx, REGOFF_RBX(%rsp) - movq 0x58(%rbx), %rcx - - movq %rcx, REGOFF_RBP(%rsp) - movq 0x40(%rbx), %rcx - movq %rcx, REGOFF_R10(%rsp) - movq 0x48(%rbx), %rcx - movq %rcx, REGOFF_R11(%rsp) - movq %r12, REGOFF_R12(%rsp) - - movq %r13, REGOFF_R13(%rsp) - movq %r14, REGOFF_R14(%rsp) - movq %r15, REGOFF_R15(%rsp) - - xorl %ecx, %ecx - movw %ds, %cx - movq %rcx, REGOFF_DS(%rsp) - movw %es, %cx - movq %rcx, REGOFF_ES(%rsp) - movw %fs, %cx - movq %rcx, REGOFF_FS(%rsp) - movw %gs, %cx - movq %rcx, REGOFF_GS(%rsp) - - movq $0, REGOFF_TRAPNO(%rsp) - - movq $0, REGOFF_ERR(%rsp) - leaq vpanic(%rip), %rcx - movq %rcx, REGOFF_RIP(%rsp) - movw %cs, %cx - movzwq %cx, %rcx - movq %rcx, REGOFF_CS(%rsp) - movq 0x50(%rbx), %rcx - movq %rcx, REGOFF_RFL(%rsp) - movq %rbx, %rcx - addq $0x60, %rcx - movq %rcx, REGOFF_RSP(%rsp) - movw %ss, %cx - movzwq %cx, %rcx - movq %rcx, REGOFF_SS(%rsp) - - /* - * panicsys(format, alist, rp, on_panic_stack) - */ - movq REGOFF_RDI(%rsp), %rdi /* format */ - movq REGOFF_RSI(%rsp), %rsi /* alist */ - movq %rsp, %rdx /* struct regs */ - movl %r11d, %ecx /* on_panic_stack */ - call panicsys - addq $REGSIZE, %rsp -#endif - popq %rdi - popq %rsi - popq %rdx - popq %rcx - popq %r8 - popq %r9 - popq %rax - popq %rbx - popq %r10 - popq %r11 - popfq - leave - ret - END(vpanic) - -/* -void -dtrace_vpanic(const char *format, va_list alist) -*/ - ENTRY(dtrace_vpanic) /* Initial stack layout: */ - - pushq %rbp /* | %rip | 0x60 */ - movq %rsp, %rbp /* | %rbp | 0x58 */ - pushfq /* | rfl | 0x50 */ - pushq %r11 /* | %r11 | 0x48 */ - pushq %r10 /* | %r10 | 0x40 */ - pushq %rbx /* | %rbx | 0x38 */ - pushq %rax /* | %rax | 0x30 */ - pushq %r9 /* | %r9 | 0x28 */ - pushq %r8 /* | %r8 | 0x20 */ - pushq %rcx /* | %rcx | 0x18 */ - pushq %rdx /* | %rdx | 0x10 */ - pushq %rsi /* | %rsi | 0x8 alist */ - pushq %rdi /* | %rdi | 0x0 format */ - - movq %rsp, %rbx /* %rbx = current %rsp */ - - leaq panic_quiesce(%rip), %rdi /* %rdi = &panic_quiesce */ - call dtrace_panic_trigger /* %eax = dtrace_panic_trigger() */ - jmp vpanic_common - - END(dtrace_vpanic) - -/* -int -panic_trigger(int *tp) -*/ - ENTRY(panic_trigger) - xorl %eax, %eax - movl $0xdefacedd, %edx - lock - xchgl %edx, (%rdi) - cmpl $0, %edx - je 0f - movl $0, %eax - ret -0: movl $1, %eax - ret - END(panic_trigger) - -/* -int -dtrace_panic_trigger(int *tp) -*/ - ENTRY(dtrace_panic_trigger) - xorl %eax, %eax - movl $0xdefacedd, %edx - lock - xchgl %edx, (%rdi) - cmpl $0, %edx - je 0f - movl $0, %eax - ret -0: movl $1, %eax - ret - END(dtrace_panic_trigger) Modified: stable/10/sys/cddl/dev/dtrace/dtrace_hacks.c ============================================================================== --- stable/10/sys/cddl/dev/dtrace/dtrace_hacks.c Fri May 29 03:47:35 2015 (r283675) +++ stable/10/sys/cddl/dev/dtrace/dtrace_hacks.c Fri May 29 04:01:39 2015 (r283676) @@ -3,9 +3,6 @@ dtrace_cacheid_t dtrace_predcache_id; -int panic_quiesce; -char panic_stack[PANICSTKSIZE]; - boolean_t priv_policy_only(const cred_t *a, int b, boolean_t c) { Modified: stable/10/sys/cddl/dev/dtrace/i386/dtrace_asm.S ============================================================================== --- stable/10/sys/cddl/dev/dtrace/i386/dtrace_asm.S Fri May 29 03:47:35 2015 (r283675) +++ stable/10/sys/cddl/dev/dtrace/i386/dtrace_asm.S Fri May 29 04:01:39 2015 (r283676) @@ -355,167 +355,3 @@ void dtrace_interrupt_enable(dtrace_icoo popfl ret END(dtrace_interrupt_enable) - -/* - * The panic() and cmn_err() functions invoke vpanic() as a common entry point - * into the panic code implemented in panicsys(). vpanic() is responsible - * for passing through the format string and arguments, and constructing a - * regs structure on the stack into which it saves the current register - * values. If we are not dying due to a fatal trap, these registers will - * then be preserved in panicbuf as the current processor state. Before - * invoking panicsys(), vpanic() activates the first panic trigger (see - * common/os/panic.c) and switches to the panic_stack if successful. Note that - * DTrace takes a slightly different panic path if it must panic from probe - * context. Instead of calling panic, it calls into dtrace_vpanic(), which - * sets up the initial stack as vpanic does, calls dtrace_panic_trigger(), and - * branches back into vpanic(). - */ -/* -void vpanic(const char *format, va_list alist) -*/ - ENTRY(vpanic) /* Initial stack layout: */ - - pushl %ebp /* | %eip | 20 */ - movl %esp, %ebp /* | %ebp | 16 */ - pushl %eax /* | %eax | 12 */ - pushl %ebx /* | %ebx | 8 */ - pushl %ecx /* | %ecx | 4 */ - pushl %edx /* | %edx | 0 */ - - movl %esp, %ebx /* %ebx = current stack pointer */ - - lea panic_quiesce, %eax /* %eax = &panic_quiesce */ - pushl %eax /* push &panic_quiesce */ - call panic_trigger /* %eax = panic_trigger() */ - addl $4, %esp /* reset stack pointer */ - -vpanic_common: - cmpl $0, %eax /* if (%eax == 0) */ - je 0f /* goto 0f; */ - - /* - * If panic_trigger() was successful, we are the first to initiate a - * panic: we now switch to the reserved panic_stack before continuing. - */ - lea panic_stack, %esp /* %esp = panic_stack */ - addl $PANICSTKSIZE, %esp /* %esp += PANICSTKSIZE */ - -0: subl $REGSIZE, %esp /* allocate struct regs */ - - /* - * Now that we've got everything set up, store the register values as - * they were when we entered vpanic() to the designated location in - * the regs structure we allocated on the stack. - */ -#ifdef notyet - mov %gs, %edx - mov %edx, REGOFF_GS(%esp) - mov %fs, %edx - mov %edx, REGOFF_FS(%esp) - mov %es, %edx - mov %edx, REGOFF_ES(%esp) - mov %ds, %edx - mov %edx, REGOFF_DS(%esp) - movl %edi, REGOFF_EDI(%esp) - movl %esi, REGOFF_ESI(%esp) - movl 16(%ebx), %ecx - movl %ecx, REGOFF_EBP(%esp) - movl %ebx, %ecx - addl $20, %ecx - movl %ecx, REGOFF_ESP(%esp) - movl 8(%ebx), %ecx - movl %ecx, REGOFF_EBX(%esp) - movl 0(%ebx), %ecx - movl %ecx, REGOFF_EDX(%esp) - movl 4(%ebx), %ecx - movl %ecx, REGOFF_ECX(%esp) - movl 12(%ebx), %ecx - movl %ecx, REGOFF_EAX(%esp) - movl $0, REGOFF_TRAPNO(%esp) - movl $0, REGOFF_ERR(%esp) - lea vpanic, %ecx - movl %ecx, REGOFF_EIP(%esp) - mov %cs, %edx - movl %edx, REGOFF_CS(%esp) - pushfl - popl %ecx - movl %ecx, REGOFF_EFL(%esp) - movl $0, REGOFF_UESP(%esp) - mov %ss, %edx - movl %edx, REGOFF_SS(%esp) - - movl %esp, %ecx /* %ecx = ®s */ - pushl %eax /* push on_panic_stack */ - pushl %ecx /* push ®s */ - movl 12(%ebp), %ecx /* %ecx = alist */ - pushl %ecx /* push alist */ - movl 8(%ebp), %ecx /* %ecx = format */ - pushl %ecx /* push format */ - call panicsys /* panicsys(); */ - addl $16, %esp /* pop arguments */ - - addl $REGSIZE, %esp -#endif - popl %edx - popl %ecx - popl %ebx - popl %eax - leave - ret - END(vpanic) - -/* -void dtrace_vpanic(const char *format, va_list alist) -*/ - ENTRY(dtrace_vpanic) /* Initial stack layout: */ - - pushl %ebp /* | %eip | 20 */ - movl %esp, %ebp /* | %ebp | 16 */ - pushl %eax /* | %eax | 12 */ - pushl %ebx /* | %ebx | 8 */ - pushl %ecx /* | %ecx | 4 */ - pushl %edx /* | %edx | 0 */ - - movl %esp, %ebx /* %ebx = current stack pointer */ - - lea panic_quiesce, %eax /* %eax = &panic_quiesce */ - pushl %eax /* push &panic_quiesce */ - call dtrace_panic_trigger /* %eax = dtrace_panic_trigger() */ - addl $4, %esp /* reset stack pointer */ - jmp vpanic_common /* jump back to common code */ - - END(dtrace_vpanic) - -/* -int -panic_trigger(int *tp) -*/ - ENTRY(panic_trigger) - xorl %eax, %eax - movl $0xdefacedd, %edx - lock - xchgl %edx, (%edi) - cmpl $0, %edx - je 0f - movl $0, %eax - ret -0: movl $1, %eax - ret - END(panic_trigger) - -/* -int -dtrace_panic_trigger(int *tp) -*/ - ENTRY(dtrace_panic_trigger) - xorl %eax, %eax - movl $0xdefacedd, %edx - lock - xchgl %edx, (%edi) - cmpl $0, %edx - je 0f - movl $0, %eax - ret -0: movl $1, %eax - ret - END(dtrace_panic_trigger) Modified: stable/10/sys/cddl/dev/dtrace/mips/dtrace_asm.S ============================================================================== --- stable/10/sys/cddl/dev/dtrace/mips/dtrace_asm.S Fri May 29 03:47:35 2015 (r283675) +++ stable/10/sys/cddl/dev/dtrace/mips/dtrace_asm.S Fri May 29 04:01:39 2015 (r283676) @@ -249,49 +249,6 @@ LEAF(dtrace_invop_uninit) END(dtrace_invop_uninit) /* - * The panic() and cmn_err() functions invoke vpanic() as a common entry point - * into the panic code implemented in panicsys(). vpanic() is responsible - * for passing through the format string and arguments, and constructing a - * regs structure on the stack into which it saves the current register - * values. If we are not dying due to a fatal trap, these registers will - * then be preserved in panicbuf as the current processor state. Before - * invoking panicsys(), vpanic() activates the first panic trigger (see - * common/os/panic.c) and switches to the panic_stack if successful. Note that - * DTrace takes a slightly different panic path if it must panic from probe - * context. Instead of calling panic, it calls into dtrace_vpanic(), which - * sets up the initial stack as vpanic does, calls dtrace_panic_trigger(), and - * branches back into vpanic(). - */ - -/* -void -vpanic(const char *format, va_list alist) -*/ -LEAF(vpanic) /* Initial stack layout: */ - -vpanic_common: - j ra - nop -END(vpanic) - - - -/* -void -dtrace_vpanic(const char *format, va_list alist) -*/ -LEAF(dtrace_vpanic) /* Initial stack layout: */ - -#if 0 - jal dtrace_panic_trigger /* %eax = dtrace_panic_trigger() */ - nop -#endif - j vpanic_common - nop - -END(dtrace_vpanic) - -/* uintptr_t dtrace_caller(int aframes) */ @@ -300,4 +257,3 @@ LEAF(dtrace_caller) j ra nop END(dtrace_caller) - Modified: stable/10/sys/cddl/dev/dtrace/powerpc/dtrace_asm.S ============================================================================== --- stable/10/sys/cddl/dev/dtrace/powerpc/dtrace_asm.S Fri May 29 03:47:35 2015 (r283675) +++ stable/10/sys/cddl/dev/dtrace/powerpc/dtrace_asm.S Fri May 29 04:01:39 2015 (r283676) @@ -161,45 +161,6 @@ ASENTRY_NOPROF(dtrace_copystr) END(dtrace_copystr) /* - * The panic() and cmn_err() functions invoke vpanic() as a common entry point - * into the panic code implemented in panicsys(). vpanic() is responsible - * for passing through the format string and arguments, and constructing a - * regs structure on the stack into which it saves the current register - * values. If we are not dying due to a fatal trap, these registers will - * then be preserved in panicbuf as the current processor state. Before - * invoking panicsys(), vpanic() activates the first panic trigger (see - * common/os/panic.c) and switches to the panic_stack if successful. Note that - * DTrace takes a slightly different panic path if it must panic from probe - * context. Instead of calling panic, it calls into dtrace_vpanic(), which - * sets up the initial stack as vpanic does, calls dtrace_panic_trigger(), and - * branches back into vpanic(). - */ - -/* -void -vpanic(const char *format, va_list alist) -*/ -ASENTRY_NOPROF(vpanic) /* Initial stack layout: */ - -vpanic_common: - blr -END(vpanic) - - - -/* -void -dtrace_vpanic(const char *format, va_list alist) -*/ -ASENTRY_NOPROF(dtrace_vpanic) /* Initial stack layout: */ - -#if 0 - bl dtrace_panic_trigger /* %eax = dtrace_panic_trigger() */ -#endif - b vpanic_common -END(dtrace_vpanic) - -/* uintptr_t dtrace_caller(int aframes) */ @@ -207,4 +168,3 @@ ASENTRY_NOPROF(dtrace_caller) li %r3, -1 blr END(dtrace_caller) - Modified: stable/10/sys/kern/kern_shutdown.c ============================================================================== --- stable/10/sys/kern/kern_shutdown.c Fri May 29 03:47:35 2015 (r283675) +++ stable/10/sys/kern/kern_shutdown.c Fri May 29 04:01:39 2015 (r283676) @@ -157,7 +157,6 @@ static void poweroff_wait(void *, int); static void shutdown_halt(void *junk, int howto); static void shutdown_panic(void *junk, int howto); static void shutdown_reset(void *junk, int howto); -static void vpanic(const char *fmt, va_list ap) __dead2; /* register various local shutdown events */ static void @@ -688,7 +687,7 @@ panic(const char *fmt, ...) vpanic(fmt, ap); } -static void +void vpanic(const char *fmt, va_list ap) { #ifdef SMP Modified: stable/10/sys/sys/systm.h ============================================================================== --- stable/10/sys/sys/systm.h Fri May 29 03:47:35 2015 (r283675) +++ stable/10/sys/sys/systm.h Fri May 29 04:01:39 2015 (r283676) @@ -187,6 +187,7 @@ void *phashinit(int count, struct malloc void g_waitidle(void); void panic(const char *, ...) __dead2 __printflike(1, 2); +void vpanic(const char *, __va_list) __dead2 __printflike(1, 0); void cpu_boot(int); void cpu_flush_dcache(void *, size_t); From owner-svn-src-all@FreeBSD.ORG Fri May 29 04:22:58 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 647695A8; Fri, 29 May 2015 04:22:58 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org (svn.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 5297C1FB4; Fri, 29 May 2015 04:22:58 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4T4Mw2r079547; Fri, 29 May 2015 04:22:58 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4T4MwKt079546; Fri, 29 May 2015 04:22:58 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201505290422.t4T4MwKt079546@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Fri, 29 May 2015 04:22:58 +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: r283677 - stable/10/sys/cddl/contrib/opensolaris/uts/common/dtrace X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 04:22:58 -0000 Author: markj Date: Fri May 29 04:22:57 2015 New Revision: 283677 URL: https://svnweb.freebsd.org/changeset/base/283677 Log: MFC r277915: Don't attempt to disable enabled fasttrap probes in an exiting process. MFC r277914: fasttrap_sigtrap(): use tdsendsignal() to send SIGTRAP. Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c Fri May 29 04:01:39 2015 (r283676) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c Fri May 29 04:22:57 2015 (r283677) @@ -295,7 +295,7 @@ fasttrap_sigtrap(proc_t *p, kthread_t *t ksi->ksi_code = TRAP_DTRACE; ksi->ksi_addr = (caddr_t)pc; PROC_LOCK(p); - (void) tdksignal(t, SIGTRAP, ksi); + (void) tdsendsignal(p, t, SIGTRAP, ksi); PROC_UNLOCK(p); #endif } @@ -1296,8 +1296,13 @@ fasttrap_pid_disable(void *arg, dtrace_i */ if ((p = pfind(probe->ftp_pid)) != NULL) { #ifdef __FreeBSD__ - _PHOLD(p); - PROC_UNLOCK(p); + if (p->p_flag & P_WEXIT) { + PROC_UNLOCK(p); + p = NULL; + } else { + _PHOLD(p); + PROC_UNLOCK(p); + } #endif } From owner-svn-src-all@FreeBSD.ORG Fri May 29 05:28:25 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id AFEBBE5E; Fri, 29 May 2015 05:28:25 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (svn.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 9E8371CD2; Fri, 29 May 2015 05:28:25 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4T5SPvJ011316; Fri, 29 May 2015 05:28:25 GMT (envelope-from rpaulo@FreeBSD.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4T5SPGt011315; Fri, 29 May 2015 05:28:25 GMT (envelope-from rpaulo@FreeBSD.org) Message-Id: <201505290528.t4T5SPGt011315@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: rpaulo set sender to rpaulo@FreeBSD.org using -f From: Rui Paulo Date: Fri, 29 May 2015 05:28:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283678 - head/sys/dev/acpi_support X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 05:28:25 -0000 Author: rpaulo Date: Fri May 29 05:28:24 2015 New Revision: 283678 URL: https://svnweb.freebsd.org/changeset/base/283678 Log: acpi_ibm: add per-model default events mask. Add support for the hotkeys on a Lenovo X1 3rd gen. This also enables event reporting by default. Modified: head/sys/dev/acpi_support/acpi_ibm.c Modified: head/sys/dev/acpi_support/acpi_ibm.c ============================================================================== --- head/sys/dev/acpi_support/acpi_ibm.c Fri May 29 04:22:57 2015 (r283677) +++ head/sys/dev/acpi_support/acpi_ibm.c Fri May 29 05:28:24 2015 (r283678) @@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$"); #include "opt_acpi.h" #include +#include #include #include #include @@ -261,6 +262,37 @@ static struct { { NULL, 0, NULL, 0 } }; +/* + * Per-model default list of event mask. + */ +#define ACPI_IBM_HKEY_RFKILL_MASK (1 << 4) +#define ACPI_IBM_HKEY_DSWITCH_MASK (1 << 6) +#define ACPI_IBM_HKEY_BRIGHTNESS_UP_MASK (1 << 15) +#define ACPI_IBM_HKEY_BRIGHTNESS_DOWN_MASK (1 << 16) +#define ACPI_IBM_HKEY_SEARCH_MASK (1 << 18) +#define ACPI_IBM_HKEY_MICMUTE_MASK (1 << 26) +#define ACPI_IBM_HKEY_SETTINGS_MASK (1 << 28) +#define ACPI_IBM_HKEY_VIEWOPEN_MASK (1 << 30) +#define ACPI_IBM_HKEY_VIEWALL_MASK (1 << 31) + +struct acpi_ibm_models { + const char *maker; + const char *product; + uint32_t eventmask; +} acpi_ibm_models[] = { + { "LENOVO", "20BSCTO1WW", + ACPI_IBM_HKEY_RFKILL_MASK | + ACPI_IBM_HKEY_DSWITCH_MASK | + ACPI_IBM_HKEY_BRIGHTNESS_UP_MASK | + ACPI_IBM_HKEY_BRIGHTNESS_DOWN_MASK | + ACPI_IBM_HKEY_SEARCH_MASK | + ACPI_IBM_HKEY_MICMUTE_MASK | + ACPI_IBM_HKEY_SETTINGS_MASK | + ACPI_IBM_HKEY_VIEWOPEN_MASK | + ACPI_IBM_HKEY_VIEWALL_MASK + } +}; + ACPI_SERIAL_DECL(ibm, "ACPI IBM extras"); static int acpi_ibm_probe(device_t dev); @@ -354,7 +386,9 @@ acpi_ibm_probe(device_t dev) static int acpi_ibm_attach(device_t dev) { + int i; struct acpi_ibm_softc *sc; + char *maker, *product; devclass_t ec_devclass; ACPI_FUNCTION_TRACE((char *)(uintptr_t) __func__); @@ -448,6 +482,27 @@ acpi_ibm_attach(device_t dev) sc->led_dev = led_create_state(ibm_led, sc, "thinklight", (sc->light_val ? 1 : 0)); + /* Enable per-model events. */ + maker = kern_getenv("smbios.system.maker"); + product = kern_getenv("smbios.system.product"); + for (i = 0; i < nitems(acpi_ibm_models); i++) { + if (strcmp(maker, acpi_ibm_models[i].maker) == 0 && + strcmp(product, acpi_ibm_models[i].product) == 0) { + ACPI_SERIAL_BEGIN(ibm); + acpi_ibm_sysctl_set(sc, ACPI_IBM_METHOD_EVENTMASK, + acpi_ibm_models[i].eventmask); + ACPI_SERIAL_END(ibm); + } + } + freeenv(maker); + freeenv(product); + + /* Enable events by default. */ + ACPI_SERIAL_BEGIN(ibm); + acpi_ibm_sysctl_set(sc, ACPI_IBM_METHOD_EVENTS, 1); + ACPI_SERIAL_END(ibm); + + return (0); } @@ -770,7 +825,6 @@ acpi_ibm_sysctl_init(struct acpi_ibm_sof switch (method) { case ACPI_IBM_METHOD_EVENTS: - /* Events are disabled by default */ return (TRUE); case ACPI_IBM_METHOD_EVENTMASK: @@ -1229,7 +1283,6 @@ acpi_ibm_notify(ACPI_HANDLE h, UINT32 no for (;;) { acpi_GetInteger(acpi_get_handle(dev), IBM_NAME_EVENTS_GET, &event); - if (event == 0) break; From owner-svn-src-all@FreeBSD.ORG Fri May 29 05:44:58 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0703B135; Fri, 29 May 2015 05:44:58 +0000 (UTC) (envelope-from arybchik@FreeBSD.org) Received: from svn.freebsd.org (svn.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 CF2D6111D; Fri, 29 May 2015 05:44:57 +0000 (UTC) (envelope-from arybchik@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4T5iv80021439; Fri, 29 May 2015 05:44:57 GMT (envelope-from arybchik@FreeBSD.org) Received: (from arybchik@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4T5ivP0021437; Fri, 29 May 2015 05:44:57 GMT (envelope-from arybchik@FreeBSD.org) Message-Id: <201505290544.t4T5ivP0021437@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: arybchik set sender to arybchik@FreeBSD.org using -f From: Andrew Rybchenko Date: Fri, 29 May 2015 05:44:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283679 - in head/sys: dev/sfxge modules/sfxge X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 05:44:58 -0000 Author: arybchik Date: Fri May 29 05:44:56 2015 New Revision: 283679 URL: https://svnweb.freebsd.org/changeset/base/283679 Log: sfxge: do not use DEBUG_FLAGS to enable extra debug checks DEBUG_FLAGS are set to DEBUG option value when kernel is built. For example, it is -g in GENERIC config to have debug symbols. Also DEBUG_FLAGS are used to determine if ctfconvert should keep debug symbols. Since we redefined DEBUG_FLAGS, debug symbols were always missing. ctfconvert complains about it during kernel build. It is incorrect to append DEBUG_FLAGS, since if DEBUG has no -g (or similar), we'll have no debug symbols and ctfconvert will complain. If it incorrect to always have -g in our DEBUG_FLAGS, since debug symbols presence should be controllable by kernel config. So, just add disabled by default addition of -DDEBUG=1 to CFLAGS. Reviewed by: imp Sponsored by: Solarflare Communications, Inc. MFC after: 2 days Differential Revision: https://reviews.freebsd.org/D2666 Modified: head/sys/dev/sfxge/sfxge_version.h head/sys/modules/sfxge/Makefile Modified: head/sys/dev/sfxge/sfxge_version.h ============================================================================== --- head/sys/dev/sfxge/sfxge_version.h Fri May 29 05:28:24 2015 (r283678) +++ head/sys/dev/sfxge/sfxge_version.h Fri May 29 05:44:56 2015 (r283679) @@ -36,6 +36,6 @@ #ifndef _SFXGE_VERSION_H #define _SFXGE_VERSION_H -#define SFXGE_VERSION_STRING "v4.5.1.1018" +#define SFXGE_VERSION_STRING "v4.5.2.1000" #endif /* _SFXGE_DRIVER_VERSION_H */ Modified: head/sys/modules/sfxge/Makefile ============================================================================== --- head/sys/modules/sfxge/Makefile Fri May 29 05:28:24 2015 (r283678) +++ head/sys/modules/sfxge/Makefile Fri May 29 05:44:56 2015 (r283679) @@ -34,6 +34,7 @@ SRCS+= hunt_nvram.c hunt_rx.c hunt_phy.c SRCS+= hunt_filter.c SRCS+= hunt_impl.h -DEBUG_FLAGS= -DDEBUG=1 +# Extra debug checks +#CFLAGS += -DDEBUG=1 .include From owner-svn-src-all@FreeBSD.ORG Fri May 29 05:46:58 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D8CF62B0; Fri, 29 May 2015 05:46:58 +0000 (UTC) (envelope-from dchagin@FreeBSD.org) Received: from svn.freebsd.org (svn.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 C707E1144; Fri, 29 May 2015 05:46:58 +0000 (UTC) (envelope-from dchagin@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4T5kwR1021800; Fri, 29 May 2015 05:46:58 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4T5kwEB021798; Fri, 29 May 2015 05:46:58 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505290546.t4T5kwEB021798@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Fri, 29 May 2015 05:46:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283680 - head/sys/modules X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 05:46:59 -0000 Author: dchagin Date: Fri May 29 05:46:58 2015 New Revision: 283680 URL: https://svnweb.freebsd.org/changeset/base/283680 Log: Move linux64 and linux_common to it's right place and make them not depend on bhyve. Submitted by: Oliver Pinter Modified: head/sys/modules/Makefile Modified: head/sys/modules/Makefile ============================================================================== --- head/sys/modules/Makefile Fri May 29 05:44:56 2015 (r283679) +++ head/sys/modules/Makefile Fri May 29 05:46:58 2015 (r283680) @@ -517,6 +517,7 @@ _ixv= ixv _linprocfs= linprocfs _linsysfs= linsysfs _linux= linux +_linux_common= linux_common .if ${MK_OFED} != "no" _linuxapi= linuxapi .endif @@ -621,6 +622,7 @@ _x86bios= x86bios .if ${MACHINE_CPUARCH} == "amd64" _ixl= ixl _ixlv= ixlv +_linux64= linux64 _ntb= ntb _qlxge= qlxge _qlxgb= qlxgb @@ -629,8 +631,6 @@ _sfxge= sfxge .if ${MK_BHYVE} != "no" || defined(ALL_MODULES) _vmm= vmm -_linux_common= linux_common -_linux64= linux64 .endif .endif From owner-svn-src-all@FreeBSD.ORG Fri May 29 05:50:34 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A6B2C419; Fri, 29 May 2015 05:50:34 +0000 (UTC) (envelope-from dchagin@FreeBSD.org) Received: from svn.freebsd.org (svn.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 952C6119F; Fri, 29 May 2015 05:50:34 +0000 (UTC) (envelope-from dchagin@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4T5oYuN022877; Fri, 29 May 2015 05:50:34 GMT (envelope-from dchagin@FreeBSD.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4T5oYqt022875; Fri, 29 May 2015 05:50:34 GMT (envelope-from dchagin@FreeBSD.org) Message-Id: <201505290550.t4T5oYqt022875@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dchagin set sender to dchagin@FreeBSD.org using -f From: Dmitry Chagin Date: Fri, 29 May 2015 05:50:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283681 - head/sys/modules X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 05:50:34 -0000 Author: dchagin Date: Fri May 29 05:50:33 2015 New Revision: 283681 URL: https://svnweb.freebsd.org/changeset/base/283681 Log: The linux_common module only for 64bit Linuxulators. Its my fault. Modified: head/sys/modules/Makefile Modified: head/sys/modules/Makefile ============================================================================== --- head/sys/modules/Makefile Fri May 29 05:46:58 2015 (r283680) +++ head/sys/modules/Makefile Fri May 29 05:50:33 2015 (r283681) @@ -517,7 +517,6 @@ _ixv= ixv _linprocfs= linprocfs _linsysfs= linsysfs _linux= linux -_linux_common= linux_common .if ${MK_OFED} != "no" _linuxapi= linuxapi .endif @@ -623,6 +622,7 @@ _x86bios= x86bios _ixl= ixl _ixlv= ixlv _linux64= linux64 +_linux_common= linux_common _ntb= ntb _qlxge= qlxge _qlxgb= qlxgb From owner-svn-src-all@FreeBSD.ORG Fri May 29 05:58:22 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 04C9562A; Fri, 29 May 2015 05:58:22 +0000 (UTC) (envelope-from arybchik@FreeBSD.org) Received: from svn.freebsd.org (svn.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 E5DC11368; Fri, 29 May 2015 05:58:21 +0000 (UTC) (envelope-from arybchik@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4T5wL96027203; Fri, 29 May 2015 05:58:21 GMT (envelope-from arybchik@FreeBSD.org) Received: (from arybchik@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4T5wL8q027202; Fri, 29 May 2015 05:58:21 GMT (envelope-from arybchik@FreeBSD.org) Message-Id: <201505290558.t4T5wL8q027202@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: arybchik set sender to arybchik@FreeBSD.org using -f From: Andrew Rybchenko Date: Fri, 29 May 2015 05:58: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: r283682 - stable/10/sys/dev/sfxge X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 05:58:22 -0000 Author: arybchik Date: Fri May 29 05:58:21 2015 New Revision: 283682 URL: https://svnweb.freebsd.org/changeset/base/283682 Log: MFC: r283599 sfxge: mask ifmedia options (pauses) when looking for matching mode Sponsored by: Solarflare Communications, Inc. Modified: stable/10/sys/dev/sfxge/sfxge_port.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/sfxge/sfxge_port.c ============================================================================== --- stable/10/sys/dev/sfxge/sfxge_port.c Fri May 29 05:50:33 2015 (r283681) +++ stable/10/sys/dev/sfxge/sfxge_port.c Fri May 29 05:58:21 2015 (r283682) @@ -710,6 +710,8 @@ sfxge_link_mode_to_phy_cap(efx_link_mode static int sfxge_phy_cap_mask(struct sfxge_softc *sc, int ifmedia, uint32_t *phy_cap_mask) { + /* Get global options (duplex), type and subtype bits */ + int ifmedia_masked = ifmedia & (IFM_GMASK | IFM_NMASK | IFM_TMASK); efx_phy_media_type_t medium_type; boolean_t mode_found = B_FALSE; uint32_t cap_mask, mode_cap_mask; @@ -725,7 +727,7 @@ sfxge_phy_cap_mask(struct sfxge_softc *s efx_phy_adv_cap_get(sc->enp, EFX_PHY_CAP_PERM, &cap_mask); for (mode = EFX_LINK_10HDX; mode < EFX_LINK_NMODES; mode++) { - if (ifmedia == sfxge_link_mode[medium_type][mode]) { + if (ifmedia_masked == sfxge_link_mode[medium_type][mode]) { mode_found = B_TRUE; break; } @@ -736,8 +738,8 @@ sfxge_phy_cap_mask(struct sfxge_softc *s * If media is not in the table, it must be IFM_AUTO. */ KASSERT((cap_mask & (1 << EFX_PHY_CAP_AN)) && - ifmedia == (IFM_ETHER | IFM_AUTO), - ("%s: no mode for media %d", __func__, ifmedia)); + ifmedia_masked == (IFM_ETHER | IFM_AUTO), + ("%s: no mode for media %#x", __func__, ifmedia)); *phy_cap_mask = (cap_mask & ~(1 << EFX_PHY_CAP_ASYM)); return (0); } From owner-svn-src-all@FreeBSD.ORG Fri May 29 07:48:31 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 14336681; Fri, 29 May 2015 07:48:31 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.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 008C91C7D; Fri, 29 May 2015 07:48:31 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4T7mUDk081222; Fri, 29 May 2015 07:48:30 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4T7mU6k081221; Fri, 29 May 2015 07:48:30 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201505290748.t4T7mU6k081221@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Fri, 29 May 2015 07:48:30 +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: r283690 - 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-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 07:48:31 -0000 Author: kib Date: Fri May 29 07:48:30 2015 New Revision: 283690 URL: https://svnweb.freebsd.org/changeset/base/283690 Log: MFC r282948: Use bare mmap(2) to allocate space for the per-thread keys, instead of malloc(). This allows third party mallocs, which use pthread_setspecific(3) on the allocation path, to work. Modified: stable/10/lib/libthr/thread/thr_spec.c Directory Properties: stable/10/ (props changed) Modified: stable/10/lib/libthr/thread/thr_spec.c ============================================================================== --- stable/10/lib/libthr/thread/thr_spec.c Fri May 29 06:45:32 2015 (r283689) +++ stable/10/lib/libthr/thread/thr_spec.c Fri May 29 07:48:30 2015 (r283690) @@ -30,6 +30,7 @@ */ #include "namespace.h" +#include #include #include #include @@ -40,7 +41,6 @@ #include "thr_private.h" -/* Static variables: */ struct pthread_key _thread_keytable[PTHREAD_KEYS_MAX]; __weak_reference(_pthread_key_create, pthread_key_create); @@ -50,7 +50,7 @@ __weak_reference(_pthread_setspecific, p int -_pthread_key_create(pthread_key_t *key, void (*destructor) (void *)) +_pthread_key_create(pthread_key_t *key, void (*destructor)(void *)) { struct pthread *curthread; int i; @@ -59,7 +59,6 @@ _pthread_key_create(pthread_key_t *key, curthread = _get_curthread(); - /* Lock the key table: */ THR_LOCK_ACQUIRE(curthread, &_keytable_lock); for (i = 0; i < PTHREAD_KEYS_MAX; i++) { @@ -68,14 +67,12 @@ _pthread_key_create(pthread_key_t *key, _thread_keytable[i].destructor = destructor; _thread_keytable[i].seqno++; - /* Unlock the key table: */ THR_LOCK_RELEASE(curthread, &_keytable_lock); *key = i + 1; return (0); } } - /* Unlock the key table: */ THR_LOCK_RELEASE(curthread, &_keytable_lock); return (EAGAIN); } @@ -83,44 +80,40 @@ _pthread_key_create(pthread_key_t *key, int _pthread_key_delete(pthread_key_t userkey) { - struct pthread *curthread = _get_curthread(); - int key = userkey - 1; - int ret = 0; - - if ((unsigned int)key < PTHREAD_KEYS_MAX) { - /* Lock the key table: */ - THR_LOCK_ACQUIRE(curthread, &_keytable_lock); - - if (_thread_keytable[key].allocated) - _thread_keytable[key].allocated = 0; - else - ret = EINVAL; - - /* Unlock the key table: */ - THR_LOCK_RELEASE(curthread, &_keytable_lock); - } else + struct pthread *curthread; + int key, ret; + + key = userkey - 1; + if ((unsigned int)key >= PTHREAD_KEYS_MAX) + return (EINVAL); + curthread = _get_curthread(); + THR_LOCK_ACQUIRE(curthread, &_keytable_lock); + if (_thread_keytable[key].allocated) { + _thread_keytable[key].allocated = 0; + ret = 0; + } else { ret = EINVAL; + } + THR_LOCK_RELEASE(curthread, &_keytable_lock); return (ret); } void _thread_cleanupspecific(void) { - struct pthread *curthread = _get_curthread(); - void (*destructor)( void *); - const void *data = NULL; - int key; - int i; + struct pthread *curthread; + void (*destructor)(void *); + const void *data; + int i, key; + curthread = _get_curthread(); if (curthread->specific == NULL) return; - - /* Lock the key table: */ THR_LOCK_ACQUIRE(curthread, &_keytable_lock); - for (i = 0; (i < PTHREAD_DESTRUCTOR_ITERATIONS) && - (curthread->specific_data_count > 0); i++) { - for (key = 0; (key < PTHREAD_KEYS_MAX) && - (curthread->specific_data_count > 0); key++) { + for (i = 0; i < PTHREAD_DESTRUCTOR_ITERATIONS && + curthread->specific_data_count > 0; i++) { + for (key = 0; key < PTHREAD_KEYS_MAX && + curthread->specific_data_count > 0; key++) { destructor = NULL; if (_thread_keytable[key].allocated && @@ -128,31 +121,29 @@ _thread_cleanupspecific(void) if (curthread->specific[key].seqno == _thread_keytable[key].seqno) { data = curthread->specific[key].data; - destructor = _thread_keytable[key].destructor; + destructor = _thread_keytable[key]. + destructor; } curthread->specific[key].data = NULL; curthread->specific_data_count--; - } - else if (curthread->specific[key].data != NULL) { + } else if (curthread->specific[key].data != NULL) { /* - * This can happen if the key is deleted via - * pthread_key_delete without first setting the value - * to NULL in all threads. POSIX says that the - * destructor is not invoked in this case. + * This can happen if the key is + * deleted via pthread_key_delete + * without first setting the value to + * NULL in all threads. POSIX says + * that the destructor is not invoked + * in this case. */ curthread->specific[key].data = NULL; curthread->specific_data_count--; } /* - * If there is a destructor, call it - * with the key table entry unlocked: + * If there is a destructor, call it with the + * key table entry unlocked. */ if (destructor != NULL) { - /* - * Don't hold the lock while calling the - * destructor: - */ THR_LOCK_RELEASE(curthread, &_keytable_lock); destructor(__DECONST(void *, data)); THR_LOCK_ACQUIRE(curthread, &_keytable_lock); @@ -160,102 +151,92 @@ _thread_cleanupspecific(void) } } THR_LOCK_RELEASE(curthread, &_keytable_lock); - free(curthread->specific); + munmap(curthread->specific, PTHREAD_KEYS_MAX * sizeof(struct + pthread_specific_elem)); curthread->specific = NULL; - if (curthread->specific_data_count > 0) + if (curthread->specific_data_count > 0) { stderr_debug("Thread %p has exited with leftover " "thread-specific data after %d destructor iterations\n", curthread, PTHREAD_DESTRUCTOR_ITERATIONS); -} - -static inline struct pthread_specific_elem * -pthread_key_allocate_data(void) -{ - struct pthread_specific_elem *new_data; - - new_data = (struct pthread_specific_elem *) - calloc(1, sizeof(struct pthread_specific_elem) * PTHREAD_KEYS_MAX); - return (new_data); + } } int _pthread_setspecific(pthread_key_t userkey, const void *value) { - struct pthread *pthread; - pthread_key_t key = userkey - 1; - int ret = 0; + struct pthread *pthread; + void *tmp; + pthread_key_t key; + + key = userkey - 1; + if ((unsigned int)key >= PTHREAD_KEYS_MAX || + !_thread_keytable[key].allocated) + return (EINVAL); - /* Point to the running thread: */ pthread = _get_curthread(); - - if ((pthread->specific) || - (pthread->specific = pthread_key_allocate_data())) { - if ((unsigned int)key < PTHREAD_KEYS_MAX) { - if (_thread_keytable[key].allocated) { - if (pthread->specific[key].data == NULL) { - if (value != NULL) - pthread->specific_data_count++; - } else if (value == NULL) - pthread->specific_data_count--; - pthread->specific[key].data = value; - pthread->specific[key].seqno = - _thread_keytable[key].seqno; - ret = 0; - } else - ret = EINVAL; - } else - ret = EINVAL; - } else - ret = ENOMEM; - return (ret); + if (pthread->specific == NULL) { + tmp = mmap(NULL, PTHREAD_KEYS_MAX * + sizeof(struct pthread_specific_elem), + PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0); + if (tmp == MAP_FAILED) + return (ENOMEM); + pthread->specific = tmp; + } + if (pthread->specific[key].data == NULL) { + if (value != NULL) + pthread->specific_data_count++; + } else if (value == NULL) + pthread->specific_data_count--; + pthread->specific[key].data = value; + pthread->specific[key].seqno = _thread_keytable[key].seqno; + return (0); } void * _pthread_getspecific(pthread_key_t userkey) { - struct pthread *pthread; - pthread_key_t key = userkey - 1; - const void *data; + struct pthread *pthread; + const void *data; + pthread_key_t key; + + /* Check if there is specific data. */ + key = userkey - 1; + if ((unsigned int)key >= PTHREAD_KEYS_MAX) + return (NULL); - /* Point to the running thread: */ pthread = _get_curthread(); - - /* Check if there is specific data: */ - if (pthread->specific != NULL && (unsigned int)key < PTHREAD_KEYS_MAX) { - /* Check if this key has been used before: */ - if (_thread_keytable[key].allocated && - (pthread->specific[key].seqno == _thread_keytable[key].seqno)) { - /* Return the value: */ - data = pthread->specific[key].data; - } else { - /* - * This key has not been used before, so return NULL - * instead: - */ - data = NULL; - } - } else - /* No specific data has been created, so just return NULL: */ + /* Check if this key has been used before. */ + if (_thread_keytable[key].allocated && pthread->specific != NULL && + pthread->specific[key].seqno == _thread_keytable[key].seqno) { + /* Return the value: */ + data = pthread->specific[key].data; + } else { + /* + * This key has not been used before, so return NULL + * instead. + */ data = NULL; + } return (__DECONST(void *, data)); } void _thr_tsd_unload(struct dl_phdr_info *phdr_info) { - struct pthread *curthread = _get_curthread(); + struct pthread *curthread; void (*destructor)(void *); int key; + curthread = _get_curthread(); THR_LOCK_ACQUIRE(curthread, &_keytable_lock); for (key = 0; key < PTHREAD_KEYS_MAX; key++) { - if (_thread_keytable[key].allocated) { - destructor = _thread_keytable[key].destructor; - if (destructor != NULL) { - if (__elf_phdr_match_addr(phdr_info, destructor)) - _thread_keytable[key].destructor = NULL; - } - } + if (!_thread_keytable[key].allocated) + continue; + destructor = _thread_keytable[key].destructor; + if (destructor == NULL) + continue; + if (__elf_phdr_match_addr(phdr_info, destructor)) + _thread_keytable[key].destructor = NULL; } THR_LOCK_RELEASE(curthread, &_keytable_lock); } From owner-svn-src-all@FreeBSD.ORG Fri May 29 08:08:48 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9A4CC9B7; Fri, 29 May 2015 08:08:48 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail104.syd.optusnet.com.au (mail104.syd.optusnet.com.au [211.29.132.246]) by mx1.freebsd.org (Postfix) with ESMTP id 43CA710E3; Fri, 29 May 2015 08:08:47 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from c211-30-166-197.carlnfd1.nsw.optusnet.com.au (c211-30-166-197.carlnfd1.nsw.optusnet.com.au [211.30.166.197]) by mail104.syd.optusnet.com.au (Postfix) with ESMTPS id D0E744222B8; Fri, 29 May 2015 17:40:17 +1000 (AEST) Date: Fri, 29 May 2015 17:40:16 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Brooks Davis cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283671 - head/sys/sys In-Reply-To: <201505282206.t4SM66Xj090527@svn.freebsd.org> Message-ID: <20150529154745.F900@besplex.bde.org> References: <201505282206.t4SM66Xj090527@svn.freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Optus-CM-Score: 0 X-Optus-CM-Analysis: v=2.1 cv=L/MkHYj8 c=1 sm=1 tr=0 a=KA6XNC2GZCFrdESI5ZmdjQ==:117 a=PO7r1zJSAAAA:8 a=kj9zAlcOel0A:10 a=JzwRw_2MAAAA:8 a=1DlgUux01Rw1lqr8Y2QA:9 a=dDaus2_H6VzgkISI:21 a=9N4ftvBHopxhL89l:21 a=CjuIK1q_8ugA:10 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 08:08:48 -0000 On Thu, 28 May 2015, Brooks Davis wrote: > Log: > Revert r102953 > > The bitfile padding was always unallocated on real-world FreeBSD systems and > depended on the assumption that (abs(sizeof(long) - sizeof(char*)) <= 32). Actually, it was bit-field padding that depended on the assumption that (abs(sizeof(long) - sizeof(char*)) <= CHAR_BIT * sizeof(int). It did work under this assumption, and was needed on non-real-world FreeBSD systems with correctly-sized longs. Why break it? A correctly-sized long is twice as large as a machine register, so it is 64 bits on i386 and 128 bits on amd64. The 32 bits extra for this on i386 was supported by the padding, but the 64-bits extra for this on amd64 is too many. Compilers now support an __int128_t type on amd64. This is the correctly- sized long for amd64. But it is too difficult to use since it is not spelled "long". There is null support for printing this type, and it being even longer than intmax_t must cause problems (e.g., casting it to intmax_t for printing it doesn't work). This is unusable, and not permitted by standardards (intmax_t is specified to be capable of representing any value of _any_ signed integer type, although it is not required to have rank >= that of any signed integer type). Expanding intmax_t to 128 bits to support this type would cause larger problems since it would break all ABIs that use intmax_t and pessimize most internal uses of intmax_t. Similar bit-field padding in is more important and depends on even more relationships between type sizes, but handles up to 64 bits of padding using 2 bit-fields. BTW, someone broke namespaces in . Old versions were careful to use struct __timespec in the !__BSD_VISIBLE case. Some time after 2001, POSIX itself was broken to allow (but not require) to declare struct timespec. FreeBSD was changed to take advantage of this simplification, but by declaring and using struct timespec unconditionaly it broke support for older versions of POSIX that don't allow this, and turned its delicately layered includes into nonsense instead of over- engineering. Breaking removed just 1 set of delicate bit-field padding. Many cases were handled by ignoring the problem and/or living with historical behaviour: from sys/stat.h: X #if __BSD_VISIBLE X struct timespec st_atimespec; /* time of last access */ X struct timespec st_mtimespec; /* time of last data modification */ X struct timespec st_ctimespec; /* time of last file status change */ X #else X time_t st_atime; /* time of last access */ X long st_atimensec; /* nsec of last access */ X time_t st_mtime; /* time of last data modification */ X long st_mtimensec; /* nsec of last data modification */ X time_t st_ctime; /* time of last file status change */ X long st_ctimensec; /* nsec of last file status change */ X #endif Here the nsec fields aren't really usable in the !__BSD_VISIBLE case. They are essentially just sloppy padding using longs. This happens to work on all supported arches. If time_t is 64 bits and long is 32 bits, or vice versa, there may be padding from 96 total bits to 128, but it is consistent. X off_t st_size; /* file size, in bytes */ X __int64_t st_blocks; /* blocks allocated for file */ X __uint32_t st_blksize; /* optimal blocksize for I/O */ X fflags_t st_flags; /* user defined flags for file */ X __uint32_t st_gen; /* file generation number */ X __int32_t st_lspare; X #if __BSD_VISIBLE X struct timespec st_birthtimespec; /* time of file creation */ X /* X * Explicitly pad st_birthtimespec to 16 bytes so that the size of X * struct stat is backwards compatible. We use bitfields instead X * of an array of chars so that this doesn't require a C99 compiler X * to compile if the size of the padding is 0. We use 2 bitfields X * to cover up to 64 bits on 32-bit machines. We assume that X * CHAR_BIT is 8... X */ X unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec)); X unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec)); X #else X time_t st_birthtime; /* time of file creation */ X long st_birthtimensec; /* nsec of file creation */ X unsigned int :(8 / 2) * (16 - (int)sizeof(struct __timespec)); X unsigned int :(8 / 2) * (16 - (int)sizeof(struct __timespec)); X #endif Breaking the ifdef removed the second set of padding, but birthtimes still need explicit padding in the struct case here and in struct nstat (BTW, struct nstat is garbage. It has something to do with NetBSD compatibility, but with no other support for NetBSD compatibility struct nstat is unsable and unused). Someone, probably me, was more careful here than in nlist_aout.h. Apparently the padding actually needs to be wider than 32 bits in cases of interest. This is handled by using 2 bit-fields. The assumption that CHAR_BIT is 8 is guaranteed in later versions of POSIX. > Modified: > head/sys/sys/nlist_aout.h > > Modified: head/sys/sys/nlist_aout.h > ============================================================================== > --- head/sys/sys/nlist_aout.h Thu May 28 22:01:50 2015 (r283670) > +++ head/sys/sys/nlist_aout.h Thu May 28 22:06:05 2015 (r283671) > @@ -56,8 +56,6 @@ struct nlist { > } n_un; > #else > const char *n_name; /* symbol name (in memory) */ > - int : 8 * (sizeof(long) > sizeof(char *) ? > - sizeof(long) - sizeof(char *) : sizeof(char *) - sizeof(long)); The complication for unions can probably be handled by unnamed unions or just C99 initializers, but old aout code shouldn't depend on new features like that. Unnamed unions are probably still too nonstandard to use in any header visible to applications. I thought that they were a standard feature, but when I tried to use them recently, I found that the gcc syntax for them was limited, and you have to use -fms-extensions to get more usable support, but that is more unportable. > #endif > unsigned char n_type; /* type defines */ > char n_other; /* ".type" and binding information */ Bruce From owner-svn-src-all@FreeBSD.ORG Fri May 29 08:31:16 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7B8DFCDC; Fri, 29 May 2015 08:31:16 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 690281717; Fri, 29 May 2015 08:31:16 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4T8VGnY004785; Fri, 29 May 2015 08:31:16 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4T8VGCL004784; Fri, 29 May 2015 08:31:16 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505290831.t4T8VGCL004784@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 08:31:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283691 - head/sys/netinet X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 08:31:16 -0000 Author: tuexen Date: Fri May 29 08:31:15 2015 New Revision: 283691 URL: https://svnweb.freebsd.org/changeset/base/283691 Log: Remove printf() noise... MFC after: 3 days Modified: head/sys/netinet/sctp_output.c Modified: head/sys/netinet/sctp_output.c ============================================================================== --- head/sys/netinet/sctp_output.c Fri May 29 07:48:30 2015 (r283690) +++ head/sys/netinet/sctp_output.c Fri May 29 08:31:15 2015 (r283691) @@ -3160,8 +3160,6 @@ again_with_private_addresses_allowed: sifa = NULL; continue; } - } else { - SCTP_PRINTF("Stcb is null - no print\n"); } atomic_add_int(&sifa->refcount, 1); goto out; From owner-svn-src-all@FreeBSD.ORG Fri May 29 09:18:00 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 41BC8569; Fri, 29 May 2015 09:18:00 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.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 2FA161107; Fri, 29 May 2015 09:18:00 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4T9I0T6025095; Fri, 29 May 2015 09:18:00 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4T9I0uM025094; Fri, 29 May 2015 09:18:00 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201505290918.t4T9I0uM025094@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Fri, 29 May 2015 09:18:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283692 - head/sys/x86/iommu X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 09:18:00 -0000 Author: kib Date: Fri May 29 09:17:59 2015 New Revision: 283692 URL: https://svnweb.freebsd.org/changeset/base/283692 Log: Explicitely enable queued invalidation completion interrupt when the queue is started, not relying on the interrupt remaping method to happen. Also disable interrupts when shooting down the queue. Sponsored by: The FreeBSD Foundation MFC after: 1 week Modified: head/sys/x86/iommu/intel_qi.c Modified: head/sys/x86/iommu/intel_qi.c ============================================================================== --- head/sys/x86/iommu/intel_qi.c Fri May 29 08:31:15 2015 (r283691) +++ head/sys/x86/iommu/intel_qi.c Fri May 29 09:17:59 2015 (r283692) @@ -411,6 +411,7 @@ dmar_init_qi(struct dmar_unit *unit) ics = DMAR_ICS_IWC; dmar_write4(unit, DMAR_ICS_REG, ics); } + dmar_enable_qi_intr(unit); DMAR_UNLOCK(unit); return (0); @@ -434,6 +435,7 @@ dmar_fini_qi(struct dmar_unit *unit) dmar_qi_advance_tail(unit); dmar_qi_wait_for_seq(unit, &gseq, false); /* only after the quisce, disable queue */ + dmar_disable_qi_intr(unit); dmar_disable_qi(unit); KASSERT(unit->inv_seq_waiters == 0, ("dmar%d: waiters on disabled queue", unit->unit)); From owner-svn-src-all@FreeBSD.ORG Fri May 29 09:23:21 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4C158712; Fri, 29 May 2015 09:23:21 +0000 (UTC) (envelope-from andrew@FreeBSD.org) Received: from svn.freebsd.org (svn.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 398921308; Fri, 29 May 2015 09:23:21 +0000 (UTC) (envelope-from andrew@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4T9NLLB029426; Fri, 29 May 2015 09:23:21 GMT (envelope-from andrew@FreeBSD.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4T9NLrf029425; Fri, 29 May 2015 09:23:21 GMT (envelope-from andrew@FreeBSD.org) Message-Id: <201505290923.t4T9NLrf029425@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: andrew set sender to andrew@FreeBSD.org using -f From: Andrew Turner Date: Fri, 29 May 2015 09:23:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283693 - head/lib/libc/gen X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 09:23:21 -0000 Author: andrew Date: Fri May 29 09:23:20 2015 New Revision: 283693 URL: https://svnweb.freebsd.org/changeset/base/283693 Log: Fix __isinfl on architectures where double == long double. This is the case on at least ARM and PowerPC. MFC after: 1 week Modified: head/lib/libc/gen/isinf.c Modified: head/lib/libc/gen/isinf.c ============================================================================== --- head/lib/libc/gen/isinf.c Fri May 29 09:17:59 2015 (r283692) +++ head/lib/libc/gen/isinf.c Fri May 29 09:23:20 2015 (r283693) @@ -26,6 +26,8 @@ * $FreeBSD$ */ +#include + #include #include "fpmath.h" @@ -62,9 +64,9 @@ __isinfl(long double e) u.e = e; mask_nbit_l(u); -#ifndef __alpha__ - return (u.bits.exp == 32767 && u.bits.manl == 0 && u.bits.manh == 0); -#else +#if LDBL_MANT_DIG == 53 return (u.bits.exp == 2047 && u.bits.manl == 0 && u.bits.manh == 0); +#else + return (u.bits.exp == 32767 && u.bits.manl == 0 && u.bits.manh == 0); #endif } From owner-svn-src-all@FreeBSD.ORG Fri May 29 09:26:11 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7D04BA41; Fri, 29 May 2015 09:26:11 +0000 (UTC) (envelope-from andrew@FreeBSD.org) Received: from svn.freebsd.org (svn.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 6B20F132A; Fri, 29 May 2015 09:26:11 +0000 (UTC) (envelope-from andrew@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4T9QBfB030152; Fri, 29 May 2015 09:26:11 GMT (envelope-from andrew@FreeBSD.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4T9QBVE030151; Fri, 29 May 2015 09:26:11 GMT (envelope-from andrew@FreeBSD.org) Message-Id: <201505290926.t4T9QBVE030151@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: andrew set sender to andrew@FreeBSD.org using -f From: Andrew Turner Date: Fri, 29 May 2015 09:26:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283694 - head/lib/libc/gen X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 09:26:11 -0000 Author: andrew Date: Fri May 29 09:26:10 2015 New Revision: 283694 URL: https://svnweb.freebsd.org/changeset/base/283694 Log: Fix __fpclassifyl when double == long double. As with r283693 this is needed on ARM and PowerPC. MFC after: 1 Week Modified: head/lib/libc/gen/fpclassify.c Modified: head/lib/libc/gen/fpclassify.c ============================================================================== --- head/lib/libc/gen/fpclassify.c Fri May 29 09:23:20 2015 (r283693) +++ head/lib/libc/gen/fpclassify.c Fri May 29 09:26:10 2015 (r283694) @@ -29,6 +29,8 @@ #include +#include + #include #include @@ -84,10 +86,18 @@ __fpclassifyl(long double e) return (FP_SUBNORMAL); } mask_nbit_l(u); /* Mask normalization bit if applicable. */ +#if LDBL_MANT_DIG == 53 + if (u.bits.exp == 2047) { + if ((u.bits.manl | u.bits.manh) == 0) + return (FP_INFINITE); + return (FP_NAN); + } +#else if (u.bits.exp == 32767) { if ((u.bits.manl | u.bits.manh) == 0) return (FP_INFINITE); return (FP_NAN); } +#endif return (FP_NORMAL); } From owner-svn-src-all@FreeBSD.ORG Fri May 29 09:28:13 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D3373C34; Fri, 29 May 2015 09:28:13 +0000 (UTC) (envelope-from andrew@fubar.geek.nz) Received: from kif.fubar.geek.nz (kif.fubar.geek.nz [178.62.119.249]) by mx1.freebsd.org (Postfix) with ESMTP id A003D135A; Fri, 29 May 2015 09:28:13 +0000 (UTC) (envelope-from andrew@fubar.geek.nz) Received: from bender.Home (unknown [2.126.248.96]) by kif.fubar.geek.nz (Postfix) with ESMTPSA id BBBA2D7A67; Fri, 29 May 2015 09:27:35 +0000 (UTC) Date: Fri, 29 May 2015 10:27:33 +0100 From: Andrew Turner Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283693 - head/lib/libc/gen Message-ID: <20150529102733.5e179627@bender.Home> In-Reply-To: <201505290923.t4T9NLrf029425@svn.freebsd.org> References: <201505290923.t4T9NLrf029425@svn.freebsd.org> X-Mailer: Claws Mail 3.11.1 (GTK+ 2.24.27; amd64-portbld-freebsd10.0) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 09:28:13 -0000 On Fri, 29 May 2015 09:23:21 +0000 (UTC) Andrew Turner wrote: > Author: andrew > Date: Fri May 29 09:23:20 2015 > New Revision: 283693 > URL: https://svnweb.freebsd.org/changeset/base/283693 > > Log: > Fix __isinfl on architectures where double == long double. This is > the case on at least ARM and PowerPC. > > MFC after: 1 week Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D2652 Andrew From owner-svn-src-all@FreeBSD.ORG Fri May 29 10:07:21 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4FE846E8; Fri, 29 May 2015 10:07:21 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org (svn.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 3E2171D4F; Fri, 29 May 2015 10:07:21 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TA7L4g050046; Fri, 29 May 2015 10:07:21 GMT (envelope-from bapt@FreeBSD.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TA7LZx050045; Fri, 29 May 2015 10:07:21 GMT (envelope-from bapt@FreeBSD.org) Message-Id: <201505291007.t4TA7LZx050045@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: bapt set sender to bapt@FreeBSD.org using -f From: Baptiste Daroussin Date: Fri, 29 May 2015 10:07:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283695 - head/usr.sbin/pw X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 10:07:21 -0000 Author: bapt Date: Fri May 29 10:07:20 2015 New Revision: 283695 URL: https://svnweb.freebsd.org/changeset/base/283695 Log: Remove dead declaration PR: 195928 MFC after: 2 days Modified: head/usr.sbin/pw/pwupd.h Modified: head/usr.sbin/pw/pwupd.h ============================================================================== --- head/usr.sbin/pw/pwupd.h Fri May 29 09:26:10 2015 (r283694) +++ head/usr.sbin/pw/pwupd.h Fri May 29 10:07:20 2015 (r283695) @@ -93,7 +93,6 @@ char * getpwpath(char const * file); int addgrent(struct group * grp); int delgrent(struct group * grp); int chggrent(char const * name, struct group * grp); -int editgroups(char *name, char **groups); int setgrdir(const char * dir); char * getgrpath(const char *file); From owner-svn-src-all@FreeBSD.ORG Fri May 29 10:24:17 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id DB486A77; Fri, 29 May 2015 10:24:17 +0000 (UTC) (envelope-from ae@FreeBSD.org) Received: from svn.freebsd.org (svn.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 C94981198; Fri, 29 May 2015 10:24:17 +0000 (UTC) (envelope-from ae@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TAOHvg059479; Fri, 29 May 2015 10:24:17 GMT (envelope-from ae@FreeBSD.org) Received: (from ae@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TAOHwX059477; Fri, 29 May 2015 10:24:17 GMT (envelope-from ae@FreeBSD.org) Message-Id: <201505291024.t4TAOHwX059477@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ae set sender to ae@FreeBSD.org using -f From: "Andrey V. Elsukov" Date: Fri, 29 May 2015 10:24:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283696 - head/sys/netinet6 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 10:24:18 -0000 Author: ae Date: Fri May 29 10:24:16 2015 New Revision: 283696 URL: https://svnweb.freebsd.org/changeset/base/283696 Log: Move RTM announces into generic code to be independent from Layer2 code. This fixes bug introduced in 274988, when announces about new addresses don't sent for tunneling interfaces. Reported by: tuexen@ MFC after: 1 week Modified: head/sys/netinet6/in6.c head/sys/netinet6/nd6.c Modified: head/sys/netinet6/in6.c ============================================================================== --- head/sys/netinet6/in6.c Fri May 29 10:07:20 2015 (r283695) +++ head/sys/netinet6/in6.c Fri May 29 10:24:16 2015 (r283696) @@ -1279,6 +1279,7 @@ in6_broadcast_ifa(struct ifnet *ifp, str nd6_dad_start((struct ifaddr *)ia, delay); } + in6_newaddrmsg(ia, RTM_ADD); ifa_free(&ia->ia_ifa); return (error); } @@ -1327,6 +1328,7 @@ in6_purgeaddr(struct ifaddr *ifa) ia->ia_flags &= ~IFA_ROUTE; } + in6_newaddrmsg(ia, RTM_DELETE); in6_unlink_ifa(ia, ifp); } Modified: head/sys/netinet6/nd6.c ============================================================================== --- head/sys/netinet6/nd6.c Fri May 29 10:07:20 2015 (r283695) +++ head/sys/netinet6/nd6.c Fri May 29 10:24:16 2015 (r283696) @@ -2185,7 +2185,6 @@ nd6_add_ifa_lle(struct in6_ifaddr *ia) ln->la_expire = 0; /* for IPv6 this means permanent */ ln->ln_state = ND6_LLINFO_REACHABLE; LLE_WUNLOCK(ln); - in6_newaddrmsg(ia, RTM_ADD); return (0); } @@ -2205,8 +2204,6 @@ nd6_rem_ifa_lle(struct in6_ifaddr *ia) struct sockaddr_in6 mask, addr; struct ifnet *ifp; - in6_newaddrmsg(ia, RTM_DELETE); - ifp = ia->ia_ifa.ifa_ifp; memcpy(&addr, &ia->ia_addr, sizeof(ia->ia_addr)); memcpy(&mask, &ia->ia_prefixmask, sizeof(ia->ia_prefixmask)); From owner-svn-src-all@FreeBSD.ORG Fri May 29 11:00:19 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 761AF3A8; Fri, 29 May 2015 11:00:19 +0000 (UTC) (envelope-from baptiste.daroussin@gmail.com) Received: from mail-wi0-x236.google.com (mail-wi0-x236.google.com [IPv6:2a00:1450:400c:c05::236]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 0684519F1; Fri, 29 May 2015 11:00:19 +0000 (UTC) (envelope-from baptiste.daroussin@gmail.com) Received: by wicmc15 with SMTP id mc15so12715894wic.1; Fri, 29 May 2015 04:00:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=3IVa5s40C6uwFEcLOeTcO0Iex2eQVoKZcqyqTzDyt5k=; b=khA8EAvqv6cmC7E5lOAPK4QbEAYn/lXNBWzrsoQJC6LzxeGyP6lTam3BOtqwWkUqX+ AbSWgjwXVfS3qlIm9vO7+7VRuS73oOSnCyW8w5z16FJP9KWV3Y0+X42yluuXP4bLiRsx 6rRme4C8heAvjyv0vINUlzKP7S/SPwdxxVhUX66HYZ5lR1N/jfAbN7qvsWHMlAhaE4LT NHIv6hOBILNi0RW8/LgvgjicxgY83IuzaxGl8M1DyU7mO6vkLY6yp9PVewLsWYmBgEaN wvUOQZo7NndprPyArKoyVV8KI7wxnGxF4F/tl+6i+3EO4aShmcLNF3VVl7yLzG6LICpn /ZOQ== X-Received: by 10.180.95.101 with SMTP id dj5mr5373532wib.16.1432897217086; Fri, 29 May 2015 04:00:17 -0700 (PDT) Received: from ivaldir.etoilebsd.net ([2001:41d0:8:db4c::1]) by mx.google.com with ESMTPSA id gs7sm2561421wib.10.2015.05.29.04.00.15 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 29 May 2015 04:00:15 -0700 (PDT) Sender: Baptiste Daroussin Date: Fri, 29 May 2015 13:00:13 +0200 From: Baptiste Daroussin To: Oliver Pinter Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org, fichtner@opnsense.org Subject: Re: svn commit: r282314 - in head: include lib/libc/stdlib Message-ID: <20150529110013.GC70327@ivaldir.etoilebsd.net> References: <201505011832.t41IWGSs002284@svn.freebsd.org> <20150503140634.GA80213@ivaldir.etoilebsd.net> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="jy6Sn24JjFx/iggw" Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 11:00:19 -0000 --jy6Sn24JjFx/iggw Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sat, May 16, 2015 at 10:06:36PM +0200, Oliver Pinter wrote: > On 5/3/15, Oliver Pinter wrote: > > On 5/3/15, Baptiste Daroussin wrote: > >> On Sun, May 03, 2015 at 04:00:15PM +0200, Oliver Pinter wrote: > >>> On 5/1/15, Baptiste Daroussin wrote: > >>> > Author: bapt > >>> > Date: Fri May 1 18:32:16 2015 > >>> > New Revision: 282314 > >>> > URL: https://svnweb.freebsd.org/changeset/base/282314 > >>> > > >>> > Log: > >>> > Import reallocarray(3) from OpenBSD > >>> > > >>> > Add a manpage for it, assign the copyright to the OpenBSD project= on > >>> > it > >>> > since it > >>> > is mostly copy/paste from OpenBSD manpage. > >>> > style(9) fixes > >>> > > >>> > Differential Revision: https://reviews.freebsd.org/D2420 > >>> > Reviewed by: kib > >>> > > >>> > Added: > >>> > head/lib/libc/stdlib/reallocarray.3 (contents, props changed) > >>> > head/lib/libc/stdlib/reallocarray.c (contents, props changed) > >>> > Modified: > >>> > head/include/stdlib.h > >>> > head/lib/libc/stdlib/Makefile.inc > >>> > head/lib/libc/stdlib/Symbol.map > >>> > > >>> > Modified: head/include/stdlib.h > >>> > ... > >>> > +} > >>> > >>> Hey Bapt! > >>> > >>> Do you have any plan to MFC these changes to 10-STABLE? > >> > >> I had no plan to but you are the 5th one to ask me about that :) > >> So yes I may MFC that in a couple of weeks. > >> > > Cool! Thanks! >=20 > Hi Baptiste! >=20 > Is the any ongoing efforts to merge this stuff to 10-STABLE? If you > have a patch and you need help, then ping me. >=20 Symbol versionning in 10 is different that in CURRENT, to avoid messing up,= I'll just not merge it to 10. If one wants to give it a try: svn merge -c 282314,282321,282472,282994 ^/head Best regards, Bapt --jy6Sn24JjFx/iggw Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iEYEARECAAYFAlVoRr0ACgkQ8kTtMUmk6EwNggCaAi76jpz9PZfTOQAMs5eGOhje jU8AnAy51Oc3YE4OQOhky3KjPHD/tF1d =vP+A -----END PGP SIGNATURE----- --jy6Sn24JjFx/iggw-- From owner-svn-src-all@FreeBSD.ORG Fri May 29 11:01:46 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C1959502; Fri, 29 May 2015 11:01:46 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 AFC2D1ADE; Fri, 29 May 2015 11:01:46 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TB1kVs078739; Fri, 29 May 2015 11:01:46 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TB1kT2078738; Fri, 29 May 2015 11:01:46 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291101.t4TB1kT2078738@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 11:01: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: r283697 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 11:01:46 -0000 Author: tuexen Date: Fri May 29 11:01:46 2015 New Revision: 283697 URL: https://svnweb.freebsd.org/changeset/base/283697 Log: MFC r273634: Fix a use of an uninitialized variable by makeing sure that sctp_med_chunk_output() always initialized the reason_code instead of relying on the caller. The variable is only used for debugging purpose. This issue was reported by Peter Bostroem from Google. Modified: stable/10/sys/netinet/sctp_output.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_output.c ============================================================================== --- stable/10/sys/netinet/sctp_output.c Fri May 29 10:24:16 2015 (r283696) +++ stable/10/sys/netinet/sctp_output.c Fri May 29 11:01:46 2015 (r283697) @@ -6734,7 +6734,7 @@ sctp_sendall_iterator(struct sctp_inpcb if (do_chunk_output) sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_USR_SEND, SCTP_SO_NOT_LOCKED); else if (added_control) { - int num_out = 0, reason = 0, now_filled = 0; + int num_out, reason, now_filled = 0; struct timeval now; int frag_point; @@ -7800,6 +7800,7 @@ sctp_med_chunk_output(struct sctp_inpcb int quit_now = 0; *num_out = 0; + *reason_code = 0; auth_keyid = stcb->asoc.authinfo.active_keyid; if ((asoc->state & SCTP_STATE_SHUTDOWN_PENDING) || (asoc->state & SCTP_STATE_SHUTDOWN_RECEIVED) || @@ -9931,7 +9932,7 @@ sctp_chunk_output(struct sctp_inpcb *inp */ struct sctp_association *asoc; struct sctp_nets *net; - int error = 0, num_out = 0, tot_out = 0, ret = 0, reason_code = 0; + int error = 0, num_out, tot_out = 0, ret = 0, reason_code; unsigned int burst_cnt = 0; struct timeval now; int now_filled = 0; From owner-svn-src-all@FreeBSD.ORG Fri May 29 11:04:56 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E85CCADE; Fri, 29 May 2015 11:04:56 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 BCFF61B4A; Fri, 29 May 2015 11:04:56 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TB4u0Q080243; Fri, 29 May 2015 11:04:56 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TB4uCD080242; Fri, 29 May 2015 11:04:56 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291104.t4TB4uCD080242@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 11: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: r283698 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 11:04:57 -0000 Author: tuexen Date: Fri May 29 11:04:55 2015 New Revision: 283698 URL: https://svnweb.freebsd.org/changeset/base/283698 Log: MFC r273925: Don't zero the stats before they are read out. Modified: stable/10/sys/netinet/sctp_sysctl.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_sysctl.c ============================================================================== --- stable/10/sys/netinet/sctp_sysctl.c Fri May 29 11:01:46 2015 (r283697) +++ stable/10/sys/netinet/sctp_sysctl.c Fri May 29 11:04:55 2015 (r283698) @@ -636,26 +636,27 @@ sctp_sysctl_handle_stats(SYSCTL_HANDLER_ int error; #if defined(SMP) && defined(SCTP_USE_PERCPU_STAT) - struct sctpstat sb_temp; struct sctpstat *sarry; struct sctpstat sb; int cpu; + #endif + struct sctpstat sb_temp; if ((req->newptr != NULL) && (req->newlen != sizeof(struct sctpstat))) { return (EINVAL); } - -#if defined(SMP) && defined(SCTP_USE_PERCPU_STAT) - memset(&sb, 0, sizeof(sb)); - memset(&sb_temp, 0, sizeof(sb_temp)); + memset(&sb_temp, 0, sizeof(struct sctpstat)); if (req->newptr != NULL) { - error = SYSCTL_IN(req, &sb_temp, sizeof(sb_temp)); - if (error != 0) + error = SYSCTL_IN(req, &sb_temp, sizeof(struct sctpstat)); + if (error != 0) { return (error); + } } +#if defined(SMP) && defined(SCTP_USE_PERCPU_STAT) + memset(&sb, 0, sizeof(sb)); for (cpu = 0; cpu < mp_maxid; cpu++) { sarry = &SCTP_BASE_STATS[cpu]; if (sarry->sctps_discontinuitytime.tv_sec > sb.sctps_discontinuitytime.tv_sec) { @@ -783,15 +784,19 @@ sctp_sysctl_handle_stats(SYSCTL_HANDLER_ sb.sctps_send_burst_avoid += sarry->sctps_send_burst_avoid; sb.sctps_send_cwnd_avoid += sarry->sctps_send_cwnd_avoid; sb.sctps_fwdtsn_map_over += sarry->sctps_fwdtsn_map_over; - if (req->newptr != NULL) + if (req->newptr != NULL) { memcpy(sarry, &sb_temp, sizeof(struct sctpstat)); + } } error = SYSCTL_OUT(req, &sb, sizeof(struct sctpstat)); #else - error = SYSCTL_IN(req, &SCTP_BASE_STATS, sizeof(struct sctpstat)); - if (error) - return (error); error = SYSCTL_OUT(req, &SCTP_BASE_STATS, sizeof(struct sctpstat)); + if (error != 0) { + return (error); + } + if (req->newptr != NULL) { + memcpy(&SCTP_BASE_STATS, &sb_temp, sizeof(struct sctpstat)); + } #endif return (error); } From owner-svn-src-all@FreeBSD.ORG Fri May 29 11:15:02 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 098BD5E9; Fri, 29 May 2015 11:15:02 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 EB67C1DC5; Fri, 29 May 2015 11:15:01 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TBF1dY086497; Fri, 29 May 2015 11:15:01 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TBF1Yh086492; Fri, 29 May 2015 11:15:01 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291115.t4TBF1Yh086492@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 11:15:01 +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: r283699 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 11:15:02 -0000 Author: tuexen Date: Fri May 29 11:15:00 2015 New Revision: 283699 URL: https://svnweb.freebsd.org/changeset/base/283699 Log: MFC r275567: Fix the support of mapped IPv4 addresses. Thanks to Mark Bonnekessel and Markus Boese for making me aware of the problems. Modified: stable/10/sys/netinet/sctp_usrreq.c stable/10/sys/netinet/sctputil.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_usrreq.c ============================================================================== --- stable/10/sys/netinet/sctp_usrreq.c Fri May 29 11:04:55 2015 (r283698) +++ stable/10/sys/netinet/sctp_usrreq.c Fri May 29 11:15:00 2015 (r283699) @@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$"); #include #include #ifdef INET6 +#include #endif #include #include @@ -1373,10 +1374,14 @@ sctp_count_max_addresses_vrf(struct sctp switch (sctp_ifa->address.sa.sa_family) { #ifdef INET case AF_INET: +#ifdef INET6 if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_NEEDS_MAPPED_V4)) cnt += sizeof(struct sockaddr_in6); else cnt += sizeof(struct sockaddr_in); +#else + cnt += sizeof(struct sockaddr_in); +#endif break; #endif #ifdef INET6 @@ -1396,10 +1401,14 @@ sctp_count_max_addresses_vrf(struct sctp switch (laddr->ifa->address.sa.sa_family) { #ifdef INET case AF_INET: +#ifdef INET6 if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_NEEDS_MAPPED_V4)) cnt += sizeof(struct sockaddr_in6); else cnt += sizeof(struct sockaddr_in); +#else + cnt += sizeof(struct sockaddr_in); +#endif break; #endif #ifdef INET6 @@ -2217,23 +2226,27 @@ flags_out: size = 0; /* Count the sizes */ TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) { - if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_NEEDS_MAPPED_V4)) { - size += sizeof(struct sockaddr_in6); - } else { - switch (((struct sockaddr *)&net->ro._l_addr)->sa_family) { + switch (net->ro._l_addr.sa.sa_family) { #ifdef INET - case AF_INET: + case AF_INET: +#ifdef INET6 + if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_NEEDS_MAPPED_V4)) { + size += sizeof(struct sockaddr_in6); + } else { size += sizeof(struct sockaddr_in); - break; + } +#else + size += sizeof(struct sockaddr_in); +#endif + break; #endif #ifdef INET6 - case AF_INET6: - size += sizeof(struct sockaddr_in6); - break; + case AF_INET6: + size += sizeof(struct sockaddr_in6); + break; #endif - default: - break; - } + default: + break; } } SCTP_TCB_UNLOCK(stcb); @@ -2265,24 +2278,28 @@ flags_out: sas = (struct sockaddr_storage *)&saddr->addr[0]; TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) { - if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_NEEDS_MAPPED_V4)) { - cpsz = sizeof(struct sockaddr_in6); - } else { - switch (((struct sockaddr *)&net->ro._l_addr)->sa_family) { + switch (net->ro._l_addr.sa.sa_family) { #ifdef INET - case AF_INET: + case AF_INET: +#ifdef INET6 + if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_NEEDS_MAPPED_V4)) { + cpsz = sizeof(struct sockaddr_in6); + } else { cpsz = sizeof(struct sockaddr_in); - break; + } +#else + cpsz = sizeof(struct sockaddr_in); +#endif + break; #endif #ifdef INET6 - case AF_INET6: - cpsz = sizeof(struct sockaddr_in6); - break; + case AF_INET6: + cpsz = sizeof(struct sockaddr_in6); + break; #endif - default: - cpsz = 0; - break; - } + default: + cpsz = 0; + break; } if (cpsz == 0) { break; @@ -2293,15 +2310,15 @@ flags_out: } #if defined(INET) && defined(INET6) if ((sctp_is_feature_on(inp, SCTP_PCB_FLAGS_NEEDS_MAPPED_V4)) && - (((struct sockaddr *)&net->ro._l_addr)->sa_family == AF_INET)) { + (net->ro._l_addr.sa.sa_family == AF_INET)) { /* Must map the address */ - in6_sin_2_v4mapsin6((struct sockaddr_in *)&net->ro._l_addr, + in6_sin_2_v4mapsin6(&net->ro._l_addr.sin, (struct sockaddr_in6 *)sas); } else { -#endif memcpy(sas, &net->ro._l_addr, cpsz); -#if defined(INET) && defined(INET6) } +#else + memcpy(sas, &net->ro._l_addr, cpsz); #endif ((struct sockaddr_in *)sas)->sin_port = stcb->rport; @@ -2338,13 +2355,35 @@ flags_out: { struct sctp_paddrparams *paddrp; struct sctp_nets *net; + struct sockaddr *addr; + +#if defined(INET) && defined(INET6) + struct sockaddr_in sin_store; + +#endif SCTP_CHECK_AND_CAST(paddrp, optval, struct sctp_paddrparams, *optsize); SCTP_FIND_STCB(inp, stcb, paddrp->spp_assoc_id); - net = NULL; - if (stcb) { - net = sctp_findnet(stcb, (struct sockaddr *)&paddrp->spp_address); +#if defined(INET) && defined(INET6) + if (paddrp->spp_address.ss_family == AF_INET6) { + struct sockaddr_in6 *sin6; + + sin6 = (struct sockaddr_in6 *)&paddrp->spp_address; + if (IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr)) { + in6_sin6_2_sin(&sin_store, sin6); + addr = (struct sockaddr *)&sin_store; + } else { + addr = (struct sockaddr *)&paddrp->spp_address; + } + } else { + addr = (struct sockaddr *)&paddrp->spp_address; + } +#else + addr = (struct sockaddr *)&paddrp->spp_address; +#endif + if (stcb != NULL) { + net = sctp_findnet(stcb, addr); } else { /* * We increment here since @@ -2353,22 +2392,20 @@ flags_out: * the locked tcb (last argument) is NOT a * TCB.. aka NULL. */ + net = NULL; SCTP_INP_INCR_REF(inp); - stcb = sctp_findassociation_ep_addr(&inp, (struct sockaddr *)&paddrp->spp_address, &net, NULL, NULL); + stcb = sctp_findassociation_ep_addr(&inp, addr, &net, NULL, NULL); if (stcb == NULL) { SCTP_INP_DECR_REF(inp); } } - if (stcb && (net == NULL)) { - struct sockaddr *sa; - - sa = (struct sockaddr *)&paddrp->spp_address; + if ((stcb != NULL) && (net == NULL)) { #ifdef INET - if (sa->sa_family == AF_INET) { + if (addr->sa_family == AF_INET) { struct sockaddr_in *sin; - sin = (struct sockaddr_in *)sa; - if (sin->sin_addr.s_addr) { + sin = (struct sockaddr_in *)addr; + if (sin->sin_addr.s_addr != INADDR_ANY) { error = EINVAL; SCTP_TCB_UNLOCK(stcb); SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, error); @@ -2377,10 +2414,10 @@ flags_out: } else #endif #ifdef INET6 - if (sa->sa_family == AF_INET6) { + if (addr->sa_family == AF_INET6) { struct sockaddr_in6 *sin6; - sin6 = (struct sockaddr_in6 *)sa; + sin6 = (struct sockaddr_in6 *)addr; if (!IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr)) { error = EINVAL; SCTP_TCB_UNLOCK(stcb); @@ -2396,10 +2433,10 @@ flags_out: break; } } - if (stcb) { + if (stcb != NULL) { /* Applies to the specific association */ paddrp->spp_flags = 0; - if (net) { + if (net != NULL) { int ovh; if (inp->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) { @@ -2515,13 +2552,35 @@ flags_out: { struct sctp_paddrinfo *paddri; struct sctp_nets *net; + struct sockaddr *addr; + +#if defined(INET) && defined(INET6) + struct sockaddr_in sin_store; + +#endif SCTP_CHECK_AND_CAST(paddri, optval, struct sctp_paddrinfo, *optsize); SCTP_FIND_STCB(inp, stcb, paddri->spinfo_assoc_id); - net = NULL; - if (stcb) { - net = sctp_findnet(stcb, (struct sockaddr *)&paddri->spinfo_address); +#if defined(INET) && defined(INET6) + if (paddri->spinfo_address.ss_family == AF_INET6) { + struct sockaddr_in6 *sin6; + + sin6 = (struct sockaddr_in6 *)&paddri->spinfo_address; + if (IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr)) { + in6_sin6_2_sin(&sin_store, sin6); + addr = (struct sockaddr *)&sin_store; + } else { + addr = (struct sockaddr *)&paddri->spinfo_address; + } + } else { + addr = (struct sockaddr *)&paddri->spinfo_address; + } +#else + addr = (struct sockaddr *)&paddri->spinfo_address; +#endif + if (stcb != NULL) { + net = sctp_findnet(stcb, addr); } else { /* * We increment here since @@ -2530,14 +2589,15 @@ flags_out: * the locked tcb (last argument) is NOT a * TCB.. aka NULL. */ + net = NULL; SCTP_INP_INCR_REF(inp); - stcb = sctp_findassociation_ep_addr(&inp, (struct sockaddr *)&paddri->spinfo_address, &net, NULL, NULL); + stcb = sctp_findassociation_ep_addr(&inp, addr, &net, NULL, NULL); if (stcb == NULL) { SCTP_INP_DECR_REF(inp); } } - if ((stcb) && (net)) { + if ((stcb != NULL) && (net != NULL)) { if (net->dest_state & SCTP_ADDR_UNCONFIRMED) { /* It's unconfirmed */ paddri->spinfo_state = SCTP_UNCONFIRMED; @@ -2556,7 +2616,7 @@ flags_out: SCTP_TCB_UNLOCK(stcb); *optsize = sizeof(struct sctp_paddrinfo); } else { - if (stcb) { + if (stcb != NULL) { SCTP_TCB_UNLOCK(stcb); } SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, ENOENT); @@ -2773,16 +2833,32 @@ flags_out: SCTP_FIND_STCB(inp, stcb, ssp->ssp_assoc_id); if (stcb) { - /* simply copy out the sockaddr_storage... */ - size_t len; + union sctp_sockstore *addr; - len = *optsize; - if (len > stcb->asoc.primary_destination->ro._l_addr.sa.sa_len) - len = stcb->asoc.primary_destination->ro._l_addr.sa.sa_len; - - memcpy(&ssp->ssp_addr, - &stcb->asoc.primary_destination->ro._l_addr, - len); + addr = &stcb->asoc.primary_destination->ro._l_addr; + switch (addr->sa.sa_family) { +#ifdef INET + case AF_INET: +#ifdef INET6 + if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_NEEDS_MAPPED_V4)) { + in6_sin_2_v4mapsin6(&addr->sin, + (struct sockaddr_in6 *)&ssp->ssp_addr); + } else { + memcpy(&ssp->ssp_addr, &addr->sin, sizeof(struct sockaddr_in)); + } +#else + memcpy(&ssp->ssp_addr, &addr->sin, sizeof(struct sockaddr_in)); +#endif + break; +#endif +#ifdef INET6 + case AF_INET6: + memcpy(&ssp->ssp_addr, &addr->sin6, sizeof(struct sockaddr_in6)); + break; +#endif + default: + break; + } SCTP_TCB_UNLOCK(stcb); *optsize = sizeof(struct sctp_setprim); } else { @@ -3122,13 +3198,35 @@ flags_out: { struct sctp_paddrthlds *thlds; struct sctp_nets *net; + struct sockaddr *addr; + +#if defined(INET) && defined(INET6) + struct sockaddr_in sin_store; + +#endif SCTP_CHECK_AND_CAST(thlds, optval, struct sctp_paddrthlds, *optsize); SCTP_FIND_STCB(inp, stcb, thlds->spt_assoc_id); - net = NULL; - if (stcb) { - net = sctp_findnet(stcb, (struct sockaddr *)&thlds->spt_address); +#if defined(INET) && defined(INET6) + if (thlds->spt_address.ss_family == AF_INET6) { + struct sockaddr_in6 *sin6; + + sin6 = (struct sockaddr_in6 *)&thlds->spt_address; + if (IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr)) { + in6_sin6_2_sin(&sin_store, sin6); + addr = (struct sockaddr *)&sin_store; + } else { + addr = (struct sockaddr *)&thlds->spt_address; + } + } else { + addr = (struct sockaddr *)&thlds->spt_address; + } +#else + addr = (struct sockaddr *)&thlds->spt_address; +#endif + if (stcb != NULL) { + net = sctp_findnet(stcb, addr); } else { /* * We increment here since @@ -3137,22 +3235,20 @@ flags_out: * the locked tcb (last argument) is NOT a * TCB.. aka NULL. */ + net = NULL; SCTP_INP_INCR_REF(inp); - stcb = sctp_findassociation_ep_addr(&inp, (struct sockaddr *)&thlds->spt_address, &net, NULL, NULL); + stcb = sctp_findassociation_ep_addr(&inp, addr, &net, NULL, NULL); if (stcb == NULL) { SCTP_INP_DECR_REF(inp); } } - if (stcb && (net == NULL)) { - struct sockaddr *sa; - - sa = (struct sockaddr *)&thlds->spt_address; + if ((stcb != NULL) && (net == NULL)) { #ifdef INET - if (sa->sa_family == AF_INET) { + if (addr->sa_family == AF_INET) { struct sockaddr_in *sin; - sin = (struct sockaddr_in *)sa; - if (sin->sin_addr.s_addr) { + sin = (struct sockaddr_in *)addr; + if (sin->sin_addr.s_addr != INADDR_ANY) { error = EINVAL; SCTP_TCB_UNLOCK(stcb); SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, error); @@ -3161,10 +3257,10 @@ flags_out: } else #endif #ifdef INET6 - if (sa->sa_family == AF_INET6) { + if (addr->sa_family == AF_INET6) { struct sockaddr_in6 *sin6; - sin6 = (struct sockaddr_in6 *)sa; + sin6 = (struct sockaddr_in6 *)addr; if (!IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr)) { error = EINVAL; SCTP_TCB_UNLOCK(stcb); @@ -3180,8 +3276,8 @@ flags_out: break; } } - if (stcb) { - if (net) { + if (stcb != NULL) { + if (net != NULL) { thlds->spt_pathmaxrxt = net->failure_threshold; thlds->spt_pathpfthld = net->pf_threshold; } else { @@ -3213,12 +3309,35 @@ flags_out: { struct sctp_udpencaps *encaps; struct sctp_nets *net; + struct sockaddr *addr; + +#if defined(INET) && defined(INET6) + struct sockaddr_in sin_store; + +#endif SCTP_CHECK_AND_CAST(encaps, optval, struct sctp_udpencaps, *optsize); SCTP_FIND_STCB(inp, stcb, encaps->sue_assoc_id); +#if defined(INET) && defined(INET6) + if (encaps->sue_address.ss_family == AF_INET6) { + struct sockaddr_in6 *sin6; + + sin6 = (struct sockaddr_in6 *)&encaps->sue_address; + if (IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr)) { + in6_sin6_2_sin(&sin_store, sin6); + addr = (struct sockaddr *)&sin_store; + } else { + addr = (struct sockaddr *)&encaps->sue_address; + } + } else { + addr = (struct sockaddr *)&encaps->sue_address; + } +#else + addr = (struct sockaddr *)&encaps->sue_address; +#endif if (stcb) { - net = sctp_findnet(stcb, (struct sockaddr *)&encaps->sue_address); + net = sctp_findnet(stcb, addr); } else { /* * We increment here since @@ -3229,21 +3348,18 @@ flags_out: */ net = NULL; SCTP_INP_INCR_REF(inp); - stcb = sctp_findassociation_ep_addr(&inp, (struct sockaddr *)&encaps->sue_address, &net, NULL, NULL); + stcb = sctp_findassociation_ep_addr(&inp, addr, &net, NULL, NULL); if (stcb == NULL) { SCTP_INP_DECR_REF(inp); } } - if (stcb && (net == NULL)) { - struct sockaddr *sa; - - sa = (struct sockaddr *)&encaps->sue_address; + if ((stcb != NULL) && (net == NULL)) { #ifdef INET - if (sa->sa_family == AF_INET) { + if (addr->sa_family == AF_INET) { struct sockaddr_in *sin; - sin = (struct sockaddr_in *)sa; - if (sin->sin_addr.s_addr) { + sin = (struct sockaddr_in *)addr; + if (sin->sin_addr.s_addr != INADDR_ANY) { error = EINVAL; SCTP_TCB_UNLOCK(stcb); SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, error); @@ -3252,10 +3368,10 @@ flags_out: } else #endif #ifdef INET6 - if (sa->sa_family == AF_INET6) { + if (addr->sa_family == AF_INET6) { struct sockaddr_in6 *sin6; - sin6 = (struct sockaddr_in6 *)sa; + sin6 = (struct sockaddr_in6 *)addr; if (!IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr)) { error = EINVAL; SCTP_TCB_UNLOCK(stcb); @@ -3271,7 +3387,7 @@ flags_out: break; } } - if (stcb) { + if (stcb != NULL) { if (net) { encaps->sue_port = net->port; } else { @@ -4950,12 +5066,35 @@ sctp_setopt(struct socket *so, int optna { struct sctp_paddrparams *paddrp; struct sctp_nets *net; + struct sockaddr *addr; + +#if defined(INET) && defined(INET6) + struct sockaddr_in sin_store; + +#endif SCTP_CHECK_AND_CAST(paddrp, optval, struct sctp_paddrparams, optsize); SCTP_FIND_STCB(inp, stcb, paddrp->spp_assoc_id); - net = NULL; - if (stcb) { - net = sctp_findnet(stcb, (struct sockaddr *)&paddrp->spp_address); + +#if defined(INET) && defined(INET6) + if (paddrp->spp_address.ss_family == AF_INET6) { + struct sockaddr_in6 *sin6; + + sin6 = (struct sockaddr_in6 *)&paddrp->spp_address; + if (IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr)) { + in6_sin6_2_sin(&sin_store, sin6); + addr = (struct sockaddr *)&sin_store; + } else { + addr = (struct sockaddr *)&paddrp->spp_address; + } + } else { + addr = (struct sockaddr *)&paddrp->spp_address; + } +#else + addr = (struct sockaddr *)&paddrp->spp_address; +#endif + if (stcb != NULL) { + net = sctp_findnet(stcb, addr); } else { /* * We increment here since @@ -4964,25 +5103,22 @@ sctp_setopt(struct socket *so, int optna * the locked tcb (last argument) is NOT a * TCB.. aka NULL. */ + net = NULL; SCTP_INP_INCR_REF(inp); - stcb = sctp_findassociation_ep_addr(&inp, - (struct sockaddr *)&paddrp->spp_address, + stcb = sctp_findassociation_ep_addr(&inp, addr, &net, NULL, NULL); if (stcb == NULL) { SCTP_INP_DECR_REF(inp); } } - if (stcb && (net == NULL)) { - struct sockaddr *sa; - - sa = (struct sockaddr *)&paddrp->spp_address; + if ((stcb != NULL) && (net == NULL)) { #ifdef INET - if (sa->sa_family == AF_INET) { + if (addr->sa_family == AF_INET) { struct sockaddr_in *sin; - sin = (struct sockaddr_in *)sa; - if (sin->sin_addr.s_addr) { + sin = (struct sockaddr_in *)addr; + if (sin->sin_addr.s_addr != INADDR_ANY) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); SCTP_TCB_UNLOCK(stcb); error = EINVAL; @@ -4991,10 +5127,10 @@ sctp_setopt(struct socket *so, int optna } else #endif #ifdef INET6 - if (sa->sa_family == AF_INET6) { + if (addr->sa_family == AF_INET6) { struct sockaddr_in6 *sin6; - sin6 = (struct sockaddr_in6 *)sa; + sin6 = (struct sockaddr_in6 *)addr; if (!IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr)) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); SCTP_TCB_UNLOCK(stcb); @@ -5023,7 +5159,7 @@ sctp_setopt(struct socket *so, int optna SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); return (EINVAL); } - if (stcb) { + if (stcb != NULL) { /************************TCB SPECIFIC SET ******************/ /* * do we change the timer for HB, we run @@ -5038,7 +5174,7 @@ sctp_setopt(struct socket *so, int optna } /* network sets ? */ - if (net) { + if (net != NULL) { /************************NET SPECIFIC SET ******************/ if (paddrp->spp_flags & SPP_HB_DISABLE) { if (!(net->dest_state & SCTP_ADDR_UNCONFIRMED) && @@ -5123,7 +5259,7 @@ sctp_setopt(struct socket *so, int optna #endif } else { /************************ASSOC ONLY -- NO NET SPECIFIC SET ******************/ - if (paddrp->spp_pathmaxrxt) { + if (paddrp->spp_pathmaxrxt != 0) { stcb->asoc.def_net_failure = paddrp->spp_pathmaxrxt; TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) { if (net->dest_state & SCTP_ADDR_PF) { @@ -5154,14 +5290,14 @@ sctp_setopt(struct socket *so, int optna } } if (paddrp->spp_flags & SPP_HB_ENABLE) { - if (paddrp->spp_hbinterval) { + if (paddrp->spp_hbinterval != 0) { stcb->asoc.heart_beat_delay = paddrp->spp_hbinterval; } else if (paddrp->spp_flags & SPP_HB_TIME_IS_ZERO) { stcb->asoc.heart_beat_delay = 0; } /* Turn back on the timer */ TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) { - if (paddrp->spp_hbinterval) { + if (paddrp->spp_hbinterval != 0) { net->heart_beat_delay = paddrp->spp_hbinterval; } else if (paddrp->spp_flags & SPP_HB_TIME_IS_ZERO) { net->heart_beat_delay = 0; @@ -5242,12 +5378,12 @@ sctp_setopt(struct socket *so, int optna * set it with the options on the * socket */ - if (paddrp->spp_pathmaxrxt) { + if (paddrp->spp_pathmaxrxt != 0) { inp->sctp_ep.def_net_failure = paddrp->spp_pathmaxrxt; } if (paddrp->spp_flags & SPP_HB_TIME_IS_ZERO) inp->sctp_ep.sctp_timeoutticks[SCTP_TIMER_HEARTBEAT] = 0; - else if (paddrp->spp_hbinterval) { + else if (paddrp->spp_hbinterval != 0) { if (paddrp->spp_hbinterval > SCTP_MAX_HB_INTERVAL) paddrp->spp_hbinterval = SCTP_MAX_HB_INTERVAL; inp->sctp_ep.sctp_timeoutticks[SCTP_TIMER_HEARTBEAT] = MSEC_TO_TICKS(paddrp->spp_hbinterval); @@ -5413,13 +5549,35 @@ sctp_setopt(struct socket *so, int optna { struct sctp_setprim *spa; struct sctp_nets *net; + struct sockaddr *addr; + +#if defined(INET) && defined(INET6) + struct sockaddr_in sin_store; + +#endif SCTP_CHECK_AND_CAST(spa, optval, struct sctp_setprim, optsize); SCTP_FIND_STCB(inp, stcb, spa->ssp_assoc_id); - net = NULL; - if (stcb) { - net = sctp_findnet(stcb, (struct sockaddr *)&spa->ssp_addr); +#if defined(INET) && defined(INET6) + if (spa->ssp_addr.ss_family == AF_INET6) { + struct sockaddr_in6 *sin6; + + sin6 = (struct sockaddr_in6 *)&spa->ssp_addr; + if (IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr)) { + in6_sin6_2_sin(&sin_store, sin6); + addr = (struct sockaddr *)&sin_store; + } else { + addr = (struct sockaddr *)&spa->ssp_addr; + } + } else { + addr = (struct sockaddr *)&spa->ssp_addr; + } +#else + addr = (struct sockaddr *)&spa->ssp_addr; +#endif + if (stcb != NULL) { + net = sctp_findnet(stcb, addr); } else { /* * We increment here since @@ -5428,16 +5586,16 @@ sctp_setopt(struct socket *so, int optna * the locked tcb (last argument) is NOT a * TCB.. aka NULL. */ + net = NULL; SCTP_INP_INCR_REF(inp); - stcb = sctp_findassociation_ep_addr(&inp, - (struct sockaddr *)&spa->ssp_addr, + stcb = sctp_findassociation_ep_addr(&inp, addr, &net, NULL, NULL); if (stcb == NULL) { SCTP_INP_DECR_REF(inp); } } - if ((stcb) && (net)) { + if ((stcb != NULL) && (net != NULL)) { if ((net != stcb->asoc.primary_destination) && (!(net->dest_state & SCTP_ADDR_UNCONFIRMED))) { /* Ok we need to set it */ @@ -5454,7 +5612,7 @@ sctp_setopt(struct socket *so, int optna SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); error = EINVAL; } - if (stcb) { + if (stcb != NULL) { SCTP_TCB_UNLOCK(stcb); } break; @@ -5476,14 +5634,36 @@ sctp_setopt(struct socket *so, int optna case SCTP_SET_PEER_PRIMARY_ADDR: { struct sctp_setpeerprim *sspp; + struct sockaddr *addr; + +#if defined(INET) && defined(INET6) + struct sockaddr_in sin_store; + +#endif SCTP_CHECK_AND_CAST(sspp, optval, struct sctp_setpeerprim, optsize); SCTP_FIND_STCB(inp, stcb, sspp->sspp_assoc_id); if (stcb != NULL) { struct sctp_ifa *ifa; - ifa = sctp_find_ifa_by_addr((struct sockaddr *)&sspp->sspp_addr, - stcb->asoc.vrf_id, SCTP_ADDR_NOT_LOCKED); +#if defined(INET) && defined(INET6) + if (sspp->sspp_addr.ss_family == AF_INET6) { + struct sockaddr_in6 *sin6; + + sin6 = (struct sockaddr_in6 *)&sspp->sspp_addr; + if (IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr)) { + in6_sin6_2_sin(&sin_store, sin6); + addr = (struct sockaddr *)&sin_store; + } else { + addr = (struct sockaddr *)&sspp->sspp_addr; + } + } else { + addr = (struct sockaddr *)&sspp->sspp_addr; + } +#else + addr = (struct sockaddr *)&sspp->sspp_addr; +#endif + ifa = sctp_find_ifa_by_addr(addr, stcb->asoc.vrf_id, SCTP_ADDR_NOT_LOCKED); if (ifa == NULL) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); error = EINVAL; @@ -5514,13 +5694,13 @@ sctp_setopt(struct socket *so, int optna goto out_of_it; } } else { - switch (sspp->sspp_addr.ss_family) { + switch (addr->sa_family) { #ifdef INET case AF_INET: { struct sockaddr_in *sin; - sin = (struct sockaddr_in *)&sspp->sspp_addr; + sin = (struct sockaddr_in *)addr; if (prison_check_ip4(inp->ip_inp.inp.inp_cred, &sin->sin_addr) != 0) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); @@ -5535,7 +5715,7 @@ sctp_setopt(struct socket *so, int optna { struct sockaddr_in6 *sin6; - sin6 = (struct sockaddr_in6 *)&sspp->sspp_addr; + sin6 = (struct sockaddr_in6 *)addr; if (prison_check_ip6(inp->ip_inp.inp.inp_cred, &sin6->sin6_addr) != 0) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); @@ -5551,8 +5731,7 @@ sctp_setopt(struct socket *so, int optna goto out_of_it; } } - if (sctp_set_primary_ip_address_sa(stcb, - (struct sockaddr *)&sspp->sspp_addr) != 0) { + if (sctp_set_primary_ip_address_sa(stcb, addr) != 0) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); error = EINVAL; } @@ -5903,12 +6082,35 @@ sctp_setopt(struct socket *so, int optna { struct sctp_paddrthlds *thlds; struct sctp_nets *net; + struct sockaddr *addr; + +#if defined(INET) && defined(INET6) + struct sockaddr_in sin_store; + +#endif SCTP_CHECK_AND_CAST(thlds, optval, struct sctp_paddrthlds, optsize); SCTP_FIND_STCB(inp, stcb, thlds->spt_assoc_id); - net = NULL; - if (stcb) { - net = sctp_findnet(stcb, (struct sockaddr *)&thlds->spt_address); + +#if defined(INET) && defined(INET6) + if (thlds->spt_address.ss_family == AF_INET6) { + struct sockaddr_in6 *sin6; + + sin6 = (struct sockaddr_in6 *)&thlds->spt_address; + if (IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr)) { + in6_sin6_2_sin(&sin_store, sin6); + addr = (struct sockaddr *)&sin_store; + } else { + addr = (struct sockaddr *)&thlds->spt_address; + } + } else { + addr = (struct sockaddr *)&thlds->spt_address; + } +#else + addr = (struct sockaddr *)&thlds->spt_address; +#endif + if (stcb != NULL) { + net = sctp_findnet(stcb, addr); } else { /* * We increment here since @@ -5917,25 +6119,22 @@ sctp_setopt(struct socket *so, int optna * the locked tcb (last argument) is NOT a * TCB.. aka NULL. */ + net = NULL; SCTP_INP_INCR_REF(inp); - stcb = sctp_findassociation_ep_addr(&inp, - (struct sockaddr *)&thlds->spt_address, + stcb = sctp_findassociation_ep_addr(&inp, addr, &net, NULL, NULL); if (stcb == NULL) { SCTP_INP_DECR_REF(inp); } } - if (stcb && (net == NULL)) { - struct sockaddr *sa; - - sa = (struct sockaddr *)&thlds->spt_address; + if ((stcb != NULL) && (net == NULL)) { #ifdef INET - if (sa->sa_family == AF_INET) { + if (addr->sa_family == AF_INET) { struct sockaddr_in *sin; - sin = (struct sockaddr_in *)sa; - if (sin->sin_addr.s_addr) { + sin = (struct sockaddr_in *)addr; + if (sin->sin_addr.s_addr != INADDR_ANY) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); SCTP_TCB_UNLOCK(stcb); error = EINVAL; @@ -5944,10 +6143,10 @@ sctp_setopt(struct socket *so, int optna } else #endif #ifdef INET6 - if (sa->sa_family == AF_INET6) { + if (addr->sa_family == AF_INET6) { struct sockaddr_in6 *sin6; - sin6 = (struct sockaddr_in6 *)sa; + sin6 = (struct sockaddr_in6 *)addr; if (!IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr)) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); SCTP_TCB_UNLOCK(stcb); @@ -5963,8 +6162,8 @@ sctp_setopt(struct socket *so, int optna break; } } - if (stcb) { - if (net) { + if (stcb != NULL) { + if (net != NULL) { if (net->dest_state & SCTP_ADDR_PF) { if ((net->failure_threshold > thlds->spt_pathmaxrxt) || (net->failure_threshold <= thlds->spt_pathpfthld)) { @@ -6044,11 +6243,35 @@ sctp_setopt(struct socket *so, int optna { struct sctp_udpencaps *encaps; struct sctp_nets *net; + struct sockaddr *addr; + +#if defined(INET) && defined(INET6) + struct sockaddr_in sin_store; + +#endif SCTP_CHECK_AND_CAST(encaps, optval, struct sctp_udpencaps, optsize); SCTP_FIND_STCB(inp, stcb, encaps->sue_assoc_id); - if (stcb) { - net = sctp_findnet(stcb, (struct sockaddr *)&encaps->sue_address); + +#if defined(INET) && defined(INET6) + if (encaps->sue_address.ss_family == AF_INET6) { + struct sockaddr_in6 *sin6; + + sin6 = (struct sockaddr_in6 *)&encaps->sue_address; + if (IN6_IS_ADDR_V4MAPPED(&sin6->sin6_addr)) { + in6_sin6_2_sin(&sin_store, sin6); + addr = (struct sockaddr *)&sin_store; + } else { + addr = (struct sockaddr *)&encaps->sue_address; + } + } else { + addr = (struct sockaddr *)&encaps->sue_address; + } +#else + addr = (struct sockaddr *)&encaps->sue_address; +#endif + if (stcb != NULL) { + net = sctp_findnet(stcb, addr); } else { /* * We increment here since @@ -6059,22 +6282,19 @@ sctp_setopt(struct socket *so, int optna */ net = NULL; SCTP_INP_INCR_REF(inp); - stcb = sctp_findassociation_ep_addr(&inp, (struct sockaddr *)&encaps->sue_address, &net, NULL, NULL); + stcb = sctp_findassociation_ep_addr(&inp, addr, &net, NULL, NULL); if (stcb == NULL) { SCTP_INP_DECR_REF(inp); } } - if (stcb && (net == NULL)) { - struct sockaddr *sa; - - sa = (struct sockaddr *)&encaps->sue_address; + if ((stcb != NULL) && (net == NULL)) { #ifdef INET - if (sa->sa_family == AF_INET) { + if (addr->sa_family == AF_INET) { struct sockaddr_in *sin; - sin = (struct sockaddr_in *)sa; - if (sin->sin_addr.s_addr) { + sin = (struct sockaddr_in *)addr; + if (sin->sin_addr.s_addr != INADDR_ANY) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); SCTP_TCB_UNLOCK(stcb); error = EINVAL; @@ -6083,10 +6303,10 @@ sctp_setopt(struct socket *so, int optna } else #endif #ifdef INET6 - if (sa->sa_family == AF_INET6) { + if (addr->sa_family == AF_INET6) { struct sockaddr_in6 *sin6; - sin6 = (struct sockaddr_in6 *)sa; + sin6 = (struct sockaddr_in6 *)addr; if (!IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr)) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); SCTP_TCB_UNLOCK(stcb); @@ -6102,8 +6322,8 @@ sctp_setopt(struct socket *so, int optna break; } } - if (stcb) { - if (net) { + if (stcb != NULL) { + if (net != NULL) { net->port = encaps->sue_port; } else { stcb->asoc.port = encaps->sue_port; Modified: stable/10/sys/netinet/sctputil.c ============================================================================== --- stable/10/sys/netinet/sctputil.c Fri May 29 11:04:55 2015 (r283698) +++ stable/10/sys/netinet/sctputil.c Fri May 29 11:15:00 2015 (r283699) @@ -2760,7 +2760,16 @@ sctp_notify_peer_addr_change(struct sctp switch (sa->sa_family) { #ifdef INET case AF_INET: +#ifdef INET6 + if (sctp_is_feature_on(stcb->sctp_ep, SCTP_PCB_FLAGS_NEEDS_MAPPED_V4)) { *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Fri May 29 11:18:07 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 66D3E28B; Fri, 29 May 2015 11:18:07 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 54A431E2A; Fri, 29 May 2015 11:18:07 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TBI7jS090501; Fri, 29 May 2015 11:18:07 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TBI7Vj090499; Fri, 29 May 2015 11:18:07 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291118.t4TBI7Vj090499@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 11:18: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: r283700 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 11:18:07 -0000 Author: tuexen Date: Fri May 29 11:18:06 2015 New Revision: 283700 URL: https://svnweb.freebsd.org/changeset/base/283700 Log: MFC r275574: Include the received chunk padding when reporting an unknown chunk. Modified: stable/10/sys/netinet/sctp_input.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_input.c ============================================================================== --- stable/10/sys/netinet/sctp_input.c Fri May 29 11:15:00 2015 (r283699) +++ stable/10/sys/netinet/sctp_input.c Fri May 29 11:18:06 2015 (r283700) @@ -5503,10 +5503,12 @@ process_control_chunks: if ((ch->chunk_type & 0x40) && (stcb != NULL)) { struct mbuf *mm; struct sctp_paramhdr *phd; + int len; mm = sctp_get_mbuf_for_msg(sizeof(struct sctp_paramhdr), 0, M_NOWAIT, 1, MT_DATA); if (mm) { + len = min(SCTP_SIZE32(chk_length), (uint32_t) (length - *offset)); phd = mtod(mm, struct sctp_paramhdr *); /* * We cheat and use param type since @@ -5516,11 +5518,11 @@ process_control_chunks: * names. */ phd->param_type = htons(SCTP_CAUSE_UNRECOG_CHUNK); - phd->param_length = htons(chk_length + sizeof(*phd)); + phd->param_length = htons(len + sizeof(*phd)); SCTP_BUF_LEN(mm) = sizeof(*phd); - SCTP_BUF_NEXT(mm) = SCTP_M_COPYM(m, *offset, chk_length, M_NOWAIT); + SCTP_BUF_NEXT(mm) = SCTP_M_COPYM(m, *offset, len, M_NOWAIT); if (SCTP_BUF_NEXT(mm)) { - if (sctp_pad_lastmbuf(SCTP_BUF_NEXT(mm), SCTP_SIZE32(chk_length) - chk_length, NULL) == NULL) { + if (sctp_pad_lastmbuf(SCTP_BUF_NEXT(mm), SCTP_SIZE32(len) - len, NULL) == NULL) { sctp_m_freem(mm); } else { #ifdef SCTP_MBUF_LOGGING From owner-svn-src-all@FreeBSD.ORG Fri May 29 11:19:30 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E15079E4; Fri, 29 May 2015 11:19:30 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 CF64D1E41; Fri, 29 May 2015 11:19:30 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TBJUlN091561; Fri, 29 May 2015 11:19:30 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TBJUnW091560; Fri, 29 May 2015 11:19:30 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291119.t4TBJUnW091560@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 11:19:30 +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: r283701 - stable/10/lib/libc/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-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 11:19:31 -0000 Author: tuexen Date: Fri May 29 11:19:30 2015 New Revision: 283701 URL: https://svnweb.freebsd.org/changeset/base/283701 Log: MFC r275682: Fix a typo reported by Lennart Grahl. Modified: stable/10/lib/libc/net/sctp_sys_calls.c Directory Properties: stable/10/ (props changed) Modified: stable/10/lib/libc/net/sctp_sys_calls.c ============================================================================== --- stable/10/lib/libc/net/sctp_sys_calls.c Fri May 29 11:18:06 2015 (r283700) +++ stable/10/lib/libc/net/sctp_sys_calls.c Fri May 29 11:19:30 2015 (r283701) @@ -886,7 +886,7 @@ sctp_recvv(int sd, struct sctp_rcvinfo *rcvinfo; struct sctp_nxtinfo *nxtinfo; - if (((info != NULL) && (infolen == NULL)) | + if (((info != NULL) && (infolen == NULL)) || ((info == NULL) && (infolen != NULL) && (*infolen != 0)) || ((info != NULL) && (infotype == NULL))) { errno = EINVAL; From owner-svn-src-all@FreeBSD.ORG Fri May 29 11:21:35 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0D08BB34; Fri, 29 May 2015 11:21:35 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 D55DB1FDE; Fri, 29 May 2015 11:21:34 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TBLYDO095065; Fri, 29 May 2015 11:21:34 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TBLYYH095064; Fri, 29 May 2015 11:21:34 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291121.t4TBLYYH095064@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 11:21:34 +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: r283702 - stable/10/lib/libc/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-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 11:21:35 -0000 Author: tuexen Date: Fri May 29 11:21:34 2015 New Revision: 283702 URL: https://svnweb.freebsd.org/changeset/base/283702 Log: MFC r275857: Initilize the msg_flags field consistently in all code paths. Reported by: Coverity CID: 1018726 Modified: stable/10/lib/libc/net/sctp_sys_calls.c Directory Properties: stable/10/ (props changed) Modified: stable/10/lib/libc/net/sctp_sys_calls.c ============================================================================== --- stable/10/lib/libc/net/sctp_sys_calls.c Fri May 29 11:19:30 2015 (r283701) +++ stable/10/lib/libc/net/sctp_sys_calls.c Fri May 29 11:21:34 2015 (r283702) @@ -597,6 +597,7 @@ sctp_sendmsg(int s, msg.msg_iovlen = 1; msg.msg_control = cmsgbuf; msg.msg_controllen = CMSG_SPACE(sizeof(struct sctp_sndrcvinfo)); + msg.msg_flags = 0; cmsg = (struct cmsghdr *)cmsgbuf; cmsg->cmsg_level = IPPROTO_SCTP; cmsg->cmsg_type = SCTP_SNDRCV; @@ -663,6 +664,7 @@ sctp_send(int sd, const void *data, size msg.msg_iovlen = 1; msg.msg_control = cmsgbuf; msg.msg_controllen = CMSG_SPACE(sizeof(struct sctp_sndrcvinfo)); + msg.msg_flags = 0; cmsg = (struct cmsghdr *)cmsgbuf; cmsg->cmsg_level = IPPROTO_SCTP; cmsg->cmsg_type = SCTP_SNDRCV; @@ -820,7 +822,6 @@ sctp_recvmsg(int s, errno = EINVAL; return (-1); } - msg.msg_flags = 0; iov.iov_base = dbuf; iov.iov_len = len; msg.msg_name = (caddr_t)from; @@ -832,6 +833,7 @@ sctp_recvmsg(int s, msg.msg_iovlen = 1; msg.msg_control = cmsgbuf; msg.msg_controllen = sizeof(cmsgbuf); + msg.msg_flags = 0; sz = recvmsg(s, &msg, *msg_flags); *msg_flags = msg.msg_flags; if (sz <= 0) { @@ -905,6 +907,7 @@ sctp_recvv(int sd, msg.msg_iovlen = iovlen; msg.msg_control = cmsgbuf; msg.msg_controllen = sizeof(cmsgbuf); + msg.msg_flags = 0; ret = recvmsg(sd, &msg, *flags); *flags = msg.msg_flags; if ((ret > 0) && From owner-svn-src-all@FreeBSD.ORG Fri May 29 11:25:39 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4B0D6CBB; Fri, 29 May 2015 11:25:39 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 398B9106D; Fri, 29 May 2015 11:25:39 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TBPdGj096206; Fri, 29 May 2015 11:25:39 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TBPdcW096205; Fri, 29 May 2015 11:25:39 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291125.t4TBPdcW096205@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 11:25:39 +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: r283703 - stable/10/sys/netinet6 X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 11:25:39 -0000 Author: tuexen Date: Fri May 29 11:25:38 2015 New Revision: 283703 URL: https://svnweb.freebsd.org/changeset/base/283703 Log: MFC r275868: Plug a memory leak in an error code path. Reported by: Coverity CID: 1018936 Modified: stable/10/sys/netinet6/sctp6_usrreq.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet6/sctp6_usrreq.c ============================================================================== --- stable/10/sys/netinet6/sctp6_usrreq.c Fri May 29 11:21:34 2015 (r283702) +++ stable/10/sys/netinet6/sctp6_usrreq.c Fri May 29 11:25:38 2015 (r283703) @@ -1129,8 +1129,11 @@ sctp6_peeraddr(struct socket *so, struct SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, ENOENT); return (ENOENT); } - if ((error = sa6_recoverscope(sin6)) != 0) + if ((error = sa6_recoverscope(sin6)) != 0) { + SCTP_FREE_SONAME(sin6); + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP6_USRREQ, error); return (error); + } *addr = (struct sockaddr *)sin6; return (0); } From owner-svn-src-all@FreeBSD.ORG Fri May 29 11:40:51 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5F4F13CF; Fri, 29 May 2015 11:40:51 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 4D808138F; Fri, 29 May 2015 11:40:51 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TBepcj003127; Fri, 29 May 2015 11:40:51 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TBepvT003126; Fri, 29 May 2015 11:40:51 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291140.t4TBepvT003126@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 11:40:51 +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: r283704 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 11:40:51 -0000 Author: tuexen Date: Fri May 29 11:40:50 2015 New Revision: 283704 URL: https://svnweb.freebsd.org/changeset/base/283704 Log: MFC r275869: Add a missing break. Reported by: Coverity CID: 1232014 Modified: stable/10/sys/netinet/sctp_pcb.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_pcb.c ============================================================================== --- stable/10/sys/netinet/sctp_pcb.c Fri May 29 11:25:38 2015 (r283703) +++ stable/10/sys/netinet/sctp_pcb.c Fri May 29 11:40:50 2015 (r283704) @@ -6466,6 +6466,7 @@ sctp_load_addresses_from_init(struct sct switch (pr_supported->chunk_types[i]) { case SCTP_ASCONF: peer_supports_asconf = 1; + break; case SCTP_ASCONF_ACK: peer_supports_asconf_ack = 1; break; From owner-svn-src-all@FreeBSD.ORG Fri May 29 11:43:52 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0D03B534; Fri, 29 May 2015 11:43:52 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 EE2761578; Fri, 29 May 2015 11:43:51 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TBhpPC006452; Fri, 29 May 2015 11:43:51 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TBhpHB006451; Fri, 29 May 2015 11:43:51 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291143.t4TBhpHB006451@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 11:43:51 +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: r283705 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 11:43:52 -0000 Author: tuexen Date: Fri May 29 11:43:51 2015 New Revision: 283705 URL: https://svnweb.freebsd.org/changeset/base/283705 Log: MFC r275954: Cleanup the code. Reported by: Coverity CID: 1232003 Modified: stable/10/sys/netinet/sctp_usrreq.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_usrreq.c ============================================================================== --- stable/10/sys/netinet/sctp_usrreq.c Fri May 29 11:40:50 2015 (r283704) +++ stable/10/sys/netinet/sctp_usrreq.c Fri May 29 11:43:51 2015 (r283705) @@ -3644,12 +3644,6 @@ flags_out: (sid < stcb->asoc.streamoutcnt) && ((policy == SCTP_PR_SCTP_ALL) || (PR_SCTP_VALID_POLICY(policy)))) { -#else - if ((stcb != NULL) && - (policy != SCTP_PR_SCTP_NONE) && - (sid < stcb->asoc.streamoutcnt) && - (policy == SCTP_PR_SCTP_ALL)) { -#endif if (policy == SCTP_PR_SCTP_ALL) { sprstat->sprstat_abandoned_unsent = stcb->asoc.strmout[sid].abandoned_unsent[0]; sprstat->sprstat_abandoned_sent = stcb->asoc.strmout[sid].abandoned_sent[0]; @@ -3657,6 +3651,13 @@ flags_out: sprstat->sprstat_abandoned_unsent = stcb->asoc.strmout[sid].abandoned_unsent[policy]; sprstat->sprstat_abandoned_sent = stcb->asoc.strmout[sid].abandoned_sent[policy]; } +#else + if ((stcb != NULL) && + (policy == SCTP_PR_SCTP_ALL) && + (sid < stcb->asoc.streamoutcnt)) { + sprstat->sprstat_abandoned_unsent = stcb->asoc.strmout[sid].abandoned_unsent[0]; + sprstat->sprstat_abandoned_sent = stcb->asoc.strmout[sid].abandoned_sent[0]; +#endif SCTP_TCB_UNLOCK(stcb); *optsize = sizeof(struct sctp_prstatus); } else { From owner-svn-src-all@FreeBSD.ORG Fri May 29 11:47:55 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 870D26C0; Fri, 29 May 2015 11:47:55 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 5AE8515B2; Fri, 29 May 2015 11:47:55 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TBlt7W007062; Fri, 29 May 2015 11:47:55 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TBltt8007061; Fri, 29 May 2015 11:47:55 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291147.t4TBltt8007061@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 11:47: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: r283706 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 11:47:55 -0000 Author: tuexen Date: Fri May 29 11:47:54 2015 New Revision: 283706 URL: https://svnweb.freebsd.org/changeset/base/283706 Log: MFC r275967: Fix and harmonize the validation of PR-SCTP policies. Reported by: Coverity CID: 1232044 Modified: stable/10/sys/netinet/sctp_usrreq.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_usrreq.c ============================================================================== --- stable/10/sys/netinet/sctp_usrreq.c Fri May 29 11:43:51 2015 (r283705) +++ stable/10/sys/netinet/sctp_usrreq.c Fri May 29 11:47:54 2015 (r283706) @@ -3640,10 +3640,10 @@ flags_out: policy = sprstat->sprstat_policy; #if defined(SCTP_DETAILED_STR_STATS) if ((stcb != NULL) && - (policy != SCTP_PR_SCTP_NONE) && (sid < stcb->asoc.streamoutcnt) && - ((policy == SCTP_PR_SCTP_ALL) || - (PR_SCTP_VALID_POLICY(policy)))) { + (policy != SCTP_PR_SCTP_NONE) && + ((policy <= SCTP_PR_SCTP_MAX) || + (policy == SCTP_PR_SCTP_ALL))) { if (policy == SCTP_PR_SCTP_ALL) { sprstat->sprstat_abandoned_unsent = stcb->asoc.strmout[sid].abandoned_unsent[0]; sprstat->sprstat_abandoned_sent = stcb->asoc.strmout[sid].abandoned_sent[0]; @@ -3653,8 +3653,8 @@ flags_out: } #else if ((stcb != NULL) && - (policy == SCTP_PR_SCTP_ALL) && - (sid < stcb->asoc.streamoutcnt)) { + (sid < stcb->asoc.streamoutcnt) && + (policy == SCTP_PR_SCTP_ALL)) { sprstat->sprstat_abandoned_unsent = stcb->asoc.strmout[sid].abandoned_unsent[0]; sprstat->sprstat_abandoned_sent = stcb->asoc.strmout[sid].abandoned_sent[0]; #endif @@ -3677,8 +3677,8 @@ flags_out: policy = sprstat->sprstat_policy; if ((stcb != NULL) && (policy != SCTP_PR_SCTP_NONE) && - ((policy == SCTP_PR_SCTP_ALL) || - (PR_SCTP_VALID_POLICY(policy)))) { + ((policy <= SCTP_PR_SCTP_MAX) || + (policy == SCTP_PR_SCTP_ALL))) { if (policy == SCTP_PR_SCTP_ALL) { sprstat->sprstat_abandoned_unsent = stcb->asoc.abandoned_unsent[0]; sprstat->sprstat_abandoned_sent = stcb->asoc.abandoned_sent[0]; @@ -6042,7 +6042,7 @@ sctp_setopt(struct socket *so, int optna SCTP_CHECK_AND_CAST(info, optval, struct sctp_default_prinfo, optsize); SCTP_FIND_STCB(inp, stcb, info->pr_assoc_id); - if (PR_SCTP_INVALID_POLICY(info->pr_policy)) { + if (info->pr_policy > SCTP_PR_SCTP_MAX) { SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); error = EINVAL; break; From owner-svn-src-all@FreeBSD.ORG Fri May 29 11:52:33 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 75DCC857; Fri, 29 May 2015 11:52:33 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 49D7A17AD; Fri, 29 May 2015 11:52:33 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TBqXng011284; Fri, 29 May 2015 11:52:33 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TBqXgT011283; Fri, 29 May 2015 11:52:33 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291152.t4TBqXgT011283@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 11:52:33 +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: r283707 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 11:52:33 -0000 Author: tuexen Date: Fri May 29 11:52:32 2015 New Revision: 283707 URL: https://svnweb.freebsd.org/changeset/base/283707 Log: MFC r276009: Don't check twice that inp is not NULL. Reported by: Coverity CID: 748671 Modified: stable/10/sys/netinet/sctputil.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctputil.c ============================================================================== --- stable/10/sys/netinet/sctputil.c Fri May 29 11:47:54 2015 (r283706) +++ stable/10/sys/netinet/sctputil.c Fri May 29 11:52:32 2015 (r283707) @@ -1949,7 +1949,7 @@ sctp_timer_start(int t_type, struct sctp * though we use a different timer. We also add the HB timer * PLUS a random jitter. */ - if ((inp == NULL) || (stcb == NULL) || (net == NULL)) { + if ((stcb == NULL) || (net == NULL)) { return; } else { uint32_t rndval; @@ -2004,9 +2004,6 @@ sctp_timer_start(int t_type, struct sctp * nothing needed but the endpoint here ususually about 60 * minutes. */ - if (inp == NULL) { - return; - } tmr = &inp->sctp_ep.signature_change; to_ticks = inp->sctp_ep.sctp_timeoutticks[SCTP_TIMER_SIGNATURE]; break; @@ -2023,9 +2020,6 @@ sctp_timer_start(int t_type, struct sctp * timer since that has stopped and we are in the GONE * state. */ - if (inp == NULL) { - return; - } tmr = &inp->sctp_ep.signature_change; to_ticks = MSEC_TO_TICKS(SCTP_INP_KILL_TIMEOUT); break; @@ -2034,10 +2028,7 @@ sctp_timer_start(int t_type, struct sctp * Here we use the value found in the EP for PMTU ususually * about 10 minutes. */ - if ((stcb == NULL) || (inp == NULL)) { - return; - } - if (net == NULL) { + if ((stcb == NULL) || (net == NULL)) { return; } if (net->dest_state & SCTP_ADDR_NO_PMTUD) { @@ -2063,7 +2054,7 @@ sctp_timer_start(int t_type, struct sctp * Here we use the endpoints shutdown guard timer usually * about 3 minutes. */ - if ((inp == NULL) || (stcb == NULL)) { + if (stcb == NULL) { return; } to_ticks = inp->sctp_ep.sctp_timeoutticks[SCTP_TIMER_MAXSHUTDOWN]; From owner-svn-src-all@FreeBSD.ORG Fri May 29 12:03:05 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8388BCEB; Fri, 29 May 2015 12:03:05 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 649421A24; Fri, 29 May 2015 12:03:05 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TC35tl016547; Fri, 29 May 2015 12:03:05 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TC33UC016536; Fri, 29 May 2015 12:03:03 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291203.t4TC33UC016536@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 12:03:03 +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: r283708 - in stable/10/sys: netinet netinet6 X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 12:03:05 -0000 Author: tuexen Date: Fri May 29 12:03:02 2015 New Revision: 283708 URL: https://svnweb.freebsd.org/changeset/base/283708 Log: MFC r276914: Minimize the usage of SCTP_BUF_IS_EXTENDED. This should help Robert... Modified: stable/10/sys/netinet/sctp_bsd_addr.c stable/10/sys/netinet/sctp_indata.c stable/10/sys/netinet/sctp_input.c stable/10/sys/netinet/sctp_output.c stable/10/sys/netinet/sctputil.c stable/10/sys/netinet/sctputil.h stable/10/sys/netinet6/sctp6_usrreq.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_bsd_addr.c ============================================================================== --- stable/10/sys/netinet/sctp_bsd_addr.c Fri May 29 11:52:32 2015 (r283707) +++ stable/10/sys/netinet/sctp_bsd_addr.c Fri May 29 12:03:02 2015 (r283708) @@ -402,9 +402,7 @@ sctp_get_mbuf_for_msg(unsigned int space } #ifdef SCTP_MBUF_LOGGING if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { - if (SCTP_BUF_IS_EXTENDED(m)) { - sctp_log_mb(m, SCTP_MBUF_IALLOC); - } + sctp_log_mb(m, SCTP_MBUF_IALLOC); } #endif return (m); Modified: stable/10/sys/netinet/sctp_indata.c ============================================================================== --- stable/10/sys/netinet/sctp_indata.c Fri May 29 11:52:32 2015 (r283707) +++ stable/10/sys/netinet/sctp_indata.c Fri May 29 12:03:02 2015 (r283708) @@ -1493,13 +1493,7 @@ sctp_process_a_data_chunk(struct sctp_tc the_len, M_NOWAIT); #ifdef SCTP_MBUF_LOGGING if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { - struct mbuf *mat; - - for (mat = dmbuf; mat; mat = SCTP_BUF_NEXT(mat)) { - if (SCTP_BUF_IS_EXTENDED(mat)) { - sctp_log_mb(mat, SCTP_MBUF_ICOPY); - } - } + sctp_log_mbc(dmbuf, SCTP_MBUF_ICOPY); } #endif } else { Modified: stable/10/sys/netinet/sctp_input.c ============================================================================== --- stable/10/sys/netinet/sctp_input.c Fri May 29 11:52:32 2015 (r283707) +++ stable/10/sys/netinet/sctp_input.c Fri May 29 12:03:02 2015 (r283708) @@ -2443,13 +2443,7 @@ sctp_handle_cookie_echo(struct mbuf *m, } #ifdef SCTP_MBUF_LOGGING if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { - struct mbuf *mat; - - for (mat = m_sig; mat; mat = SCTP_BUF_NEXT(mat)) { - if (SCTP_BUF_IS_EXTENDED(mat)) { - sctp_log_mb(mat, SCTP_MBUF_SPLIT); - } - } + sctp_log_mbc(m_sig, SCTP_MBUF_SPLIT); } #endif @@ -5527,13 +5521,7 @@ process_control_chunks: } else { #ifdef SCTP_MBUF_LOGGING if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { - struct mbuf *mat; - - for (mat = SCTP_BUF_NEXT(mm); mat; mat = SCTP_BUF_NEXT(mat)) { - if (SCTP_BUF_IS_EXTENDED(mat)) { - sctp_log_mb(mat, SCTP_MBUF_ICOPY); - } - } + sctp_log_mbc(SCTP_BUF_NEXT(mm), SCTP_MBUF_ICOPY); } #endif sctp_queue_op_err(stcb, mm); @@ -6038,13 +6026,7 @@ sctp_input_with_port(struct mbuf *i_pak, #ifdef SCTP_MBUF_LOGGING /* Log in any input mbufs */ if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { - struct mbuf *mat; - - for (mat = m; mat; mat = SCTP_BUF_NEXT(mat)) { - if (SCTP_BUF_IS_EXTENDED(mat)) { - sctp_log_mb(mat, SCTP_MBUF_INPUT); - } - } + sctp_log_mbc(m, SCTP_MBUF_INPUT); } #endif #ifdef SCTP_PACKET_LOGGING Modified: stable/10/sys/netinet/sctp_output.c ============================================================================== --- stable/10/sys/netinet/sctp_output.c Fri May 29 11:52:32 2015 (r283707) +++ stable/10/sys/netinet/sctp_output.c Fri May 29 12:03:02 2015 (r283708) @@ -3846,13 +3846,7 @@ sctp_add_cookie(struct mbuf *init, int i } #ifdef SCTP_MBUF_LOGGING if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { - struct mbuf *mat; - - for (mat = copy_init; mat; mat = SCTP_BUF_NEXT(mat)) { - if (SCTP_BUF_IS_EXTENDED(mat)) { - sctp_log_mb(mat, SCTP_MBUF_ICOPY); - } - } + sctp_log_mbc(copy_init, SCTP_MBUF_ICOPY); } #endif copy_initack = SCTP_M_COPYM(initack, initack_offset, M_COPYALL, @@ -3864,13 +3858,7 @@ sctp_add_cookie(struct mbuf *init, int i } #ifdef SCTP_MBUF_LOGGING if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { - struct mbuf *mat; - - for (mat = copy_initack; mat; mat = SCTP_BUF_NEXT(mat)) { - if (SCTP_BUF_IS_EXTENDED(mat)) { - sctp_log_mb(mat, SCTP_MBUF_ICOPY); - } - } + sctp_log_mbc(copy_initack, SCTP_MBUF_ICOPY); } #endif /* easy side we just drop it on the end */ @@ -6482,13 +6470,7 @@ error_out: appendchain = SCTP_M_COPYM(clonechain, 0, M_COPYALL, M_NOWAIT); #ifdef SCTP_MBUF_LOGGING if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { - struct mbuf *mat; - - for (mat = appendchain; mat; mat = SCTP_BUF_NEXT(mat)) { - if (SCTP_BUF_IS_EXTENDED(mat)) { - sctp_log_mb(mat, SCTP_MBUF_ICOPY); - } - } + sctp_log_mbc(appendchain, SCTP_MBUF_ICOPY); } #endif } @@ -6581,13 +6563,7 @@ sctp_sendall_iterator(struct sctp_inpcb } #ifdef SCTP_MBUF_LOGGING if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { - struct mbuf *mat; - - for (mat = m; mat; mat = SCTP_BUF_NEXT(mat)) { - if (SCTP_BUF_IS_EXTENDED(mat)) { - sctp_log_mb(mat, SCTP_MBUF_ICOPY); - } - } + sctp_log_mbc(m, SCTP_MBUF_ICOPY); } #endif } else { @@ -7371,13 +7347,7 @@ dont_do_it: } #ifdef SCTP_MBUF_LOGGING if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { - struct mbuf *mat; - - for (mat = chk->data; mat; mat = SCTP_BUF_NEXT(mat)) { - if (SCTP_BUF_IS_EXTENDED(mat)) { - sctp_log_mb(mat, SCTP_MBUF_ICOPY); - } - } + sctp_log_mbc(chk->data, SCTP_MBUF_ICOPY); } #endif /* Pull off the data */ @@ -8973,13 +8943,7 @@ sctp_send_cookie_echo(struct mbuf *m, } #ifdef SCTP_MBUF_LOGGING if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { - struct mbuf *mat; - - for (mat = cookie; mat; mat = SCTP_BUF_NEXT(mat)) { - if (SCTP_BUF_IS_EXTENDED(mat)) { - sctp_log_mb(mat, SCTP_MBUF_ICOPY); - } - } + sctp_log_mbc(cookie, SCTP_MBUF_ICOPY); } #endif break; @@ -9045,13 +9009,7 @@ sctp_send_heartbeat_ack(struct sctp_tcb } #ifdef SCTP_MBUF_LOGGING if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { - struct mbuf *mat; - - for (mat = outchain; mat; mat = SCTP_BUF_NEXT(mat)) { - if (SCTP_BUF_IS_EXTENDED(mat)) { - sctp_log_mb(mat, SCTP_MBUF_ICOPY); - } - } + sctp_log_mbc(outchain, SCTP_MBUF_ICOPY); } #endif chdr = mtod(outchain, struct sctp_chunkhdr *); @@ -9330,13 +9288,7 @@ sctp_send_asconf_ack(struct sctp_tcb *st } #ifdef SCTP_MBUF_LOGGING if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { - struct mbuf *mat; - - for (mat = m_ack; mat; mat = SCTP_BUF_NEXT(mat)) { - if (SCTP_BUF_IS_EXTENDED(mat)) { - sctp_log_mb(mat, SCTP_MBUF_ICOPY); - } - } + sctp_log_mbc(m_ack, SCTP_MBUF_ICOPY); } #endif Modified: stable/10/sys/netinet/sctputil.c ============================================================================== --- stable/10/sys/netinet/sctputil.c Fri May 29 11:52:32 2015 (r283707) +++ stable/10/sys/netinet/sctputil.c Fri May 29 12:03:02 2015 (r283708) @@ -217,6 +217,7 @@ sctp_log_fr(uint32_t biggest_tsn, uint32 sctp_clog.x.misc.log4); } +#ifdef SCTP_MBUF_LOGGING void sctp_log_mb(struct mbuf *m, int from) { @@ -243,6 +244,18 @@ sctp_log_mb(struct mbuf *m, int from) } void +sctp_log_mbc(struct mbuf *m, int from) +{ + struct mbuf *mat; + + for (mat = m; mat; mat = SCTP_BUF_NEXT(mat)) { + sctp_log_mb(mat, from); + } +} + +#endif + +void sctp_log_strm_del(struct sctp_queued_to_read *control, struct sctp_queued_to_read *poschk, int from) { struct sctp_cwnd_log sctp_clog; @@ -413,7 +426,8 @@ sctp_log_rwnd_set(uint8_t from, uint32_t sctp_clog.x.misc.log4); } -void +#ifdef SCTP_MBCNT_LOGGING +static void sctp_log_mbcnt(uint8_t from, uint32_t total_oq, uint32_t book, uint32_t total_mbcnt_q, uint32_t mbcnt) { struct sctp_cwnd_log sctp_clog; @@ -431,6 +445,8 @@ sctp_log_mbcnt(uint8_t from, uint32_t to sctp_clog.x.misc.log4); } +#endif + void sctp_misc_ints(uint8_t from, uint32_t a, uint32_t b, uint32_t c, uint32_t d) { @@ -6157,9 +6173,7 @@ struct mbuf * sctp_m_free(struct mbuf *m) { if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { - if (SCTP_BUF_IS_EXTENDED(m)) { - sctp_log_mb(m, SCTP_MBUF_IFREE); - } + sctp_log_mb(m, SCTP_MBUF_IFREE); } return (m_free(m)); } Modified: stable/10/sys/netinet/sctputil.h ============================================================================== --- stable/10/sys/netinet/sctputil.h Fri May 29 11:52:32 2015 (r283707) +++ stable/10/sys/netinet/sctputil.h Fri May 29 12:03:02 2015 (r283708) @@ -349,10 +349,16 @@ void sctp_log_strm_del_alt(struct sctp_t void sctp_log_nagle_event(struct sctp_tcb *stcb, int action); +#ifdef SCTP_MBUF_LOGGING void sctp_log_mb(struct mbuf *m, int from); void + sctp_log_mbc(struct mbuf *m, int from); + +#endif + +void sctp_sblog(struct sockbuf *sb, struct sctp_tcb *stcb, int from, int incr); @@ -369,7 +375,6 @@ void sctp_log_lock(struct sctp_inpcb *in void sctp_log_maxburst(struct sctp_tcb *stcb, struct sctp_nets *, int, int, uint8_t); void sctp_log_block(uint8_t, struct sctp_association *, int); void sctp_log_rwnd(uint8_t, uint32_t, uint32_t, uint32_t); -void sctp_log_mbcnt(uint8_t, uint32_t, uint32_t, uint32_t, uint32_t); void sctp_log_rwnd_set(uint8_t, uint32_t, uint32_t, uint32_t, uint32_t); int sctp_fill_stat_log(void *, size_t *); void sctp_log_fr(uint32_t, uint32_t, uint32_t, int); Modified: stable/10/sys/netinet6/sctp6_usrreq.c ============================================================================== --- stable/10/sys/netinet6/sctp6_usrreq.c Fri May 29 11:52:32 2015 (r283707) +++ stable/10/sys/netinet6/sctp6_usrreq.c Fri May 29 12:03:02 2015 (r283708) @@ -94,13 +94,7 @@ sctp6_input_with_port(struct mbuf **i_pa #ifdef SCTP_MBUF_LOGGING /* Log in any input mbufs */ if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { - struct mbuf *mat; - - for (mat = m; mat; mat = SCTP_BUF_NEXT(mat)) { - if (SCTP_BUF_IS_EXTENDED(mat)) { - sctp_log_mb(mat, SCTP_MBUF_INPUT); - } - } + sctp_log_mbc(m, SCTP_MBUF_INPUT); } #endif #ifdef SCTP_PACKET_LOGGING From owner-svn-src-all@FreeBSD.ORG Fri May 29 12:06:01 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4E813F51; Fri, 29 May 2015 12:06:01 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 3CEC31A4E; Fri, 29 May 2015 12:06:01 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TC61ZO017105; Fri, 29 May 2015 12:06:01 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TC61A8017104; Fri, 29 May 2015 12:06:01 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291206.t4TC61A8017104@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 12:06:01 +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: r283709 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 12:06:01 -0000 Author: tuexen Date: Fri May 29 12:06:00 2015 New Revision: 283709 URL: https://svnweb.freebsd.org/changeset/base/283709 Log: MFC r277030: Remove dead code. Reported by: Coverity CID: 748666 Modified: stable/10/sys/netinet/sctp_pcb.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_pcb.c ============================================================================== --- stable/10/sys/netinet/sctp_pcb.c Fri May 29 12:03:02 2015 (r283708) +++ stable/10/sys/netinet/sctp_pcb.c Fri May 29 12:06:00 2015 (r283709) @@ -2166,11 +2166,6 @@ sctp_findassoc_by_vtag(struct sockaddr * SCTP_INP_INFO_RLOCK(); head = &SCTP_BASE_INFO(sctp_asochash)[SCTP_PCBHASH_ASOC(vtag, SCTP_BASE_INFO(hashasocmark))]; - if (head == NULL) { - /* invalid vtag */ - SCTP_INP_INFO_RUNLOCK(); - return (NULL); - } LIST_FOREACH(stcb, head, sctp_asocs) { SCTP_INP_RLOCK(stcb->sctp_ep); if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_SOCKET_ALLGONE) { @@ -6755,10 +6750,6 @@ sctp_is_vtag_good(uint32_t tag, uint16_t SCTP_INP_INFO_RLOCK(); head = &SCTP_BASE_INFO(sctp_asochash)[SCTP_PCBHASH_ASOC(tag, SCTP_BASE_INFO(hashasocmark))]; - if (head == NULL) { - /* invalid vtag */ - goto skip_vtag_check; - } LIST_FOREACH(stcb, head, sctp_asocs) { /* * We choose not to lock anything here. TCB's can't be @@ -6782,8 +6773,6 @@ sctp_is_vtag_good(uint32_t tag, uint16_t return (0); } } -skip_vtag_check: - chain = &SCTP_BASE_INFO(vtag_timewait)[(tag % SCTP_STACK_VTAG_HASH_SIZE)]; /* Now what about timed wait ? */ LIST_FOREACH(twait_block, chain, sctp_nxt_tagblock) { From owner-svn-src-all@FreeBSD.ORG Fri May 29 12:08:50 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 976BE287; Fri, 29 May 2015 12:08:50 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 859141A81; Fri, 29 May 2015 12:08:50 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TC8o5C017634; Fri, 29 May 2015 12:08:50 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TC8oV4017633; Fri, 29 May 2015 12:08:50 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291208.t4TC8oV4017633@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 12:08: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: r283710 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 12:08:50 -0000 Author: tuexen Date: Fri May 29 12:08:49 2015 New Revision: 283710 URL: https://svnweb.freebsd.org/changeset/base/283710 Log: MFC r277031 Remove dead code. Reported by: Coverity CID: 748665 Modified: stable/10/sys/netinet/sctp_pcb.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_pcb.c ============================================================================== --- stable/10/sys/netinet/sctp_pcb.c Fri May 29 12:06:00 2015 (r283709) +++ stable/10/sys/netinet/sctp_pcb.c Fri May 29 12:08:49 2015 (r283710) @@ -1441,9 +1441,6 @@ sctp_findassociation_ep_addr(struct sctp } head = &inp->sctp_tcbhash[SCTP_PCBHASH_ALLADDR(rport, inp->sctp_hashmark)]; - if (head == NULL) { - goto null_return; - } LIST_FOREACH(stcb, head, sctp_tcbhash) { if (stcb->rport != rport) { /* remote port does not match */ From owner-svn-src-all@FreeBSD.ORG Fri May 29 12:11:15 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0FD563DD; Fri, 29 May 2015 12:11:15 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 D7D621C19; Fri, 29 May 2015 12:11:14 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TCBEpm020513; Fri, 29 May 2015 12:11:14 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TCBEPv020512; Fri, 29 May 2015 12:11:14 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291211.t4TCBEPv020512@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 12:11: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: r283711 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 12:11:15 -0000 Author: tuexen Date: Fri May 29 12:11:14 2015 New Revision: 283711 URL: https://svnweb.freebsd.org/changeset/base/283711 Log: MFC r277033: Remove dead code. Reported by: Coverity CID: 748660, 748661 Modified: stable/10/sys/netinet/sctp_asconf.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_asconf.c ============================================================================== --- stable/10/sys/netinet/sctp_asconf.c Fri May 29 12:08:49 2015 (r283710) +++ stable/10/sys/netinet/sctp_asconf.c Fri May 29 12:11:14 2015 (r283711) @@ -1419,7 +1419,6 @@ sctp_asconf_queue_sa_delete(struct sctp_ { struct sctp_ifa *ifa; struct sctp_asconf_addr *aa, *aa_next; - uint32_t vrf_id; if (stcb == NULL) { return (-1); @@ -1451,12 +1450,7 @@ sctp_asconf_queue_sa_delete(struct sctp_ } /* for each aa */ /* find any existing ifa-- NOTE ifa CAN be allowed to be NULL */ - if (stcb) { - vrf_id = stcb->asoc.vrf_id; - } else { - vrf_id = SCTP_DEFAULT_VRFID; - } - ifa = sctp_find_ifa_by_addr(sa, vrf_id, SCTP_ADDR_NOT_LOCKED); + ifa = sctp_find_ifa_by_addr(sa, stcb->asoc.vrf_id, SCTP_ADDR_NOT_LOCKED); /* adding new request to the queue */ SCTP_MALLOC(aa, struct sctp_asconf_addr *, sizeof(*aa), @@ -2782,7 +2776,6 @@ sctp_process_initack_addresses(struct sc struct sctp_ipv4addr_param addr4_store; #endif - uint32_t vrf_id; SCTPDBG(SCTP_DEBUG_ASCONF2, "processing init-ack addresses\n"); if (stcb == NULL) /* Un-needed check for SA */ @@ -2850,12 +2843,7 @@ sctp_process_initack_addresses(struct sc } /* see if this address really (still) exists */ - if (stcb) { - vrf_id = stcb->asoc.vrf_id; - } else { - vrf_id = SCTP_DEFAULT_VRFID; - } - sctp_ifa = sctp_find_ifa_by_addr(&store.sa, vrf_id, + sctp_ifa = sctp_find_ifa_by_addr(&store.sa, stcb->asoc.vrf_id, SCTP_ADDR_NOT_LOCKED); if (sctp_ifa == NULL) { /* address doesn't exist anymore */ From owner-svn-src-all@FreeBSD.ORG Fri May 29 12:13:34 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id AC1D15BB; Fri, 29 May 2015 12:13:34 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail105.syd.optusnet.com.au (mail105.syd.optusnet.com.au [211.29.132.249]) by mx1.freebsd.org (Postfix) with ESMTP id 542761CB6; Fri, 29 May 2015 12:13:34 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from c211-30-166-197.carlnfd1.nsw.optusnet.com.au (c211-30-166-197.carlnfd1.nsw.optusnet.com.au [211.30.166.197]) by mail105.syd.optusnet.com.au (Postfix) with ESMTPS id EAA681041DF8; Fri, 29 May 2015 22:13:21 +1000 (AEST) Date: Fri, 29 May 2015 22:13:19 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Andrew Turner cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283693 - head/lib/libc/gen In-Reply-To: <201505290923.t4T9NLrf029425@svn.freebsd.org> Message-ID: <20150529204844.H1965@besplex.bde.org> References: <201505290923.t4T9NLrf029425@svn.freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Optus-CM-Score: 0 X-Optus-CM-Analysis: v=2.1 cv=L/MkHYj8 c=1 sm=1 tr=0 a=KA6XNC2GZCFrdESI5ZmdjQ==:117 a=PO7r1zJSAAAA:8 a=kj9zAlcOel0A:10 a=JzwRw_2MAAAA:8 a=StFR8Df7wEdXKxfvVd0A:9 a=FBKdIa_ITWnxkK1Z:21 a=ckpE6Dq_-Ae_lcXi:21 a=CjuIK1q_8ugA:10 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 12:13:34 -0000 On Fri, 29 May 2015, Andrew Turner wrote: > Log: > Fix __isinfl on architectures where double == long double. This is the > case on at least ARM and PowerPC. Urk. I rarely look at the parts of libm misplaced outside of libc. > Modified: head/lib/libc/gen/isinf.c > ============================================================================== > --- head/lib/libc/gen/isinf.c Fri May 29 09:17:59 2015 (r283692) > +++ head/lib/libc/gen/isinf.c Fri May 29 09:23:20 2015 (r283693) > @@ -26,6 +26,8 @@ > * $FreeBSD$ > */ > > +#include > + > #include > > #include "fpmath.h" > @@ -62,9 +64,9 @@ __isinfl(long double e) > > u.e = e; > mask_nbit_l(u); > -#ifndef __alpha__ > - return (u.bits.exp == 32767 && u.bits.manl == 0 && u.bits.manh == 0); > -#else > +#if LDBL_MANT_DIG == 53 > return (u.bits.exp == 2047 && u.bits.manl == 0 && u.bits.manh == 0); > +#else > + return (u.bits.exp == 32767 && u.bits.manl == 0 && u.bits.manh == 0); > #endif > } This is still quite bad (slow and unportable) code. It should be rarely executed, because is isinf() should be inlined (isinf() is a type-generic macro and the specific float, double and long double versions are only directly accessible as implementation details). clang inlines it well. However, isinf() is poorly implemented as a selection of one of the slow extern versions in libc, so the compiler can never see it to optimize it except using hacks like '#undef isinf' -- the compiler can only see the calls to the slow extern versions that it doesn't understand. This is hard to implement better. Translating isinf() to __builtin_isinf() is no good since __builtin_isinf() doesn't exist for some compilers and is not inlined by other compilers. Also, most uses of mask_nbit_l() are wrong, and the one above is no exception. In the above, masking out the normalization bit prevents detection of +-pseudo-Inf in ld80 format (same bits as +-Inf but normalization bit clear). IIRC, +-pseudo-Inf is treated as a signaling NaN by the hardware. The best implementation of isinf(x) seems to be (fabs(x) == INFINITY), with certain complications. clang's ininling gives exactly this on both amd64 and i386 IIRC. Complications: - INFINITY is float precision, but that is sufficiently type-generic - fabs() is unfortunately not type-generic, so selection of fabsf()/fabs()/fabsl() is needed. fabs*() doesn't suffer from the same inlining problems as isinf() so it gets inlined properly - perhaps fabs(x) can be avoided using (x) == -INFINITY || (x) == INFINITY. This requires more care to avoid multiple evaluation of (x) and a smarter compiler to convert it to fabs(x). A smart compiler is also needed to do the reverse conversion if fabs(x) is slow - problems with signaling NaNs. Classification should work without generating an exception for signaling NaNs. They sometimes do, and the code that looks at their bits as in the libc version has the best chance of avoiding exception. clang's inlining and the direct comparison may be invalid since they always give the exception. However, just loading a value or passing it to a function may raise an exception. This is very MD. On i386, loading a signaling-NaN float or double raises an exception, but loading a long double one doesn't; passing a signaling value to a function tends to raise an exception give a signal for floats and doubles by loading them to copy them, but copying through integer registers doesn't. On amd64, loading and parameter passing in the usual ways never raises an exception. It is easiest to ignore this problem and let signaling NaNs raise an exception in undocumented circumstances. Code that cares about efficiency, like most of libm, never uses isinf() or other classification functions because the functions are or might be too slow. libm mostly avoids isinf() by looking at bits, just like this libc code. Looking at bits tends to be slow for long doubles and also slow for doubles on 32-bit arches, but is the best possible method when there is more than one thing to classify. The extern versions of isinf() and classification macros lose mainly by being extern, so that if they are used then the bits would have to be extracted many times per function. Otherwise, libm uses: - in cproj*(), csqrt*(), and ctanh*() just the slow standard macro. These functions wouldn't have passed an adequate review. - in catrig*.c, a home made isinf(x) defined as fabs*(x) == INFINITY. isnan() is less important than isinf(), but has similar problems. Just about the same ones, except the one fixed in this commit. Somehow isnan() never had a libc version for isnanl(). The current mess for isnan() in libc is: - no isnan*() at all in libc in the !PIC case. This works because the mess in libm and math.h is smaller for isnan*() (see below) - __isnan() and __isnanf() in libc for the PIC case. The source code has a ~10 year old comment saying that they are only there until we can bump libm's major version number. This number has been bumped a few times. Symbol versioning might make this a non-problem too. Another part of the comment suggests that it is only a hack to not provide these functions in the !PIC case (to avoid linkage problems). I use old libc.a that still has these functions and see the linkage problems, and hack around them in libm instead. The current mess for isnan() in libm is: - isnan(x) is not so poorly implemented as a selection of one of the static inline versions in math.h. These use the simplistic (x) != (x) implementation. I now seem to remember that this is due to the compatibility problems from conflicts with historical mistakes in libc was even larger than for isinf(), and we use these static inline versions because this avoids all linkage problems for fresh compiles and the implementation is good enough. Home made versions of isnan() are not as easy to write as ones for isinf(), because the portability of (x) != (x) is unclear. This expression the same unwanted signals for signaling NaNs as (x) == INFINITY. I think that is the only problem with IEEE NaNs. Code that checks for NaNs is just more likely to care about the signaling case than code that checks for Infinities. Bruce From owner-svn-src-all@FreeBSD.ORG Fri May 29 12:13:52 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id DAD06704; Fri, 29 May 2015 12:13:52 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 C90F71CC4; Fri, 29 May 2015 12:13:52 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TCDqaW022054; Fri, 29 May 2015 12:13:52 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TCDqqw022053; Fri, 29 May 2015 12:13:52 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291213.t4TCDqqw022053@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 12:13:52 +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: r283712 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 12:13:53 -0000 Author: tuexen Date: Fri May 29 12:13:52 2015 New Revision: 283712 URL: https://svnweb.freebsd.org/changeset/base/283712 Log: MFC r277034: Remove dead code. Reported by: Coverity CID: 748663 Modified: stable/10/sys/netinet/sctp_input.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_input.c ============================================================================== --- stable/10/sys/netinet/sctp_input.c Fri May 29 12:11:14 2015 (r283711) +++ stable/10/sys/netinet/sctp_input.c Fri May 29 12:13:52 2015 (r283712) @@ -2595,7 +2595,7 @@ sctp_handle_cookie_echo(struct mbuf *m, /* This should not happen */ return (NULL); } - if ((*stcb == NULL) && to) { + if (*stcb == NULL) { /* Yep, lets check */ *stcb = sctp_findassociation_ep_addr(inp_p, to, netp, dst, NULL); if (*stcb == NULL) { @@ -2634,9 +2634,6 @@ sctp_handle_cookie_echo(struct mbuf *m, } } } - if (to == NULL) { - return (NULL); - } cookie_len -= SCTP_SIGNATURE_SIZE; if (*stcb == NULL) { /* this is the "normal" case... get a new TCB */ From owner-svn-src-all@FreeBSD.ORG Fri May 29 12:17:21 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id EAB439E8; Fri, 29 May 2015 12:17:21 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 D8A311CFB; Fri, 29 May 2015 12:17:21 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TCHLYb022799; Fri, 29 May 2015 12:17:21 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TCHL3D022798; Fri, 29 May 2015 12:17:21 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291217.t4TCHL3D022798@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 12:17: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: r283713 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 12:17:22 -0000 Author: tuexen Date: Fri May 29 12:17:21 2015 New Revision: 283713 URL: https://svnweb.freebsd.org/changeset/base/283713 Log: MFC r277046: Remove dead code. Reported by: Coverity CID: 1018053 Modified: stable/10/sys/netinet/sctp_asconf.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_asconf.c ============================================================================== --- stable/10/sys/netinet/sctp_asconf.c Fri May 29 12:13:52 2015 (r283712) +++ stable/10/sys/netinet/sctp_asconf.c Fri May 29 12:17:21 2015 (r283713) @@ -596,7 +596,7 @@ sctp_handle_asconf(struct mbuf *m, unsig uint32_t serial_num; struct mbuf *n, *m_ack, *m_result, *m_tail; struct sctp_asconf_ack_chunk *ack_cp; - struct sctp_asconf_paramhdr *aph, *ack_aph; + struct sctp_asconf_paramhdr *aph; struct sctp_ipv6addr_param *p_addr; unsigned int asconf_limit, cnt; int error = 0; /* did an error occur? */ @@ -679,13 +679,6 @@ sctp_handle_asconf(struct mbuf *m, unsig } /* param_length is already validated in process_control... */ offset += ntohs(p_addr->ph.param_length); /* skip lookup addr */ - - /* get pointer to first asconf param in ASCONF-ACK */ - ack_aph = (struct sctp_asconf_paramhdr *)(mtod(m_ack, caddr_t)+sizeof(struct sctp_asconf_ack_chunk)); - if (ack_aph == NULL) { - SCTPDBG(SCTP_DEBUG_ASCONF1, "Gak in asconf2\n"); - return; - } /* get pointer to first asconf param in ASCONF */ aph = (struct sctp_asconf_paramhdr *)sctp_m_getptr(m, offset, sizeof(struct sctp_asconf_paramhdr), (uint8_t *) & aparam_buf); if (aph == NULL) { From owner-svn-src-all@FreeBSD.ORG Fri May 29 12:19:42 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3FD9CB38; Fri, 29 May 2015 12:19:42 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 2DB3B1D06; Fri, 29 May 2015 12:19:42 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TCJgfV023156; Fri, 29 May 2015 12:19:42 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TCJgRp023155; Fri, 29 May 2015 12:19:42 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291219.t4TCJgRp023155@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 12:19:42 +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: r283714 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 12:19:42 -0000 Author: tuexen Date: Fri May 29 12:19:41 2015 New Revision: 283714 URL: https://svnweb.freebsd.org/changeset/base/283714 Log: MFC r277049: Remove dead code. Reported by: Coverity CID: 1018052 Modified: stable/10/sys/netinet/sctputil.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctputil.c ============================================================================== --- stable/10/sys/netinet/sctputil.c Fri May 29 12:17:21 2015 (r283713) +++ stable/10/sys/netinet/sctputil.c Fri May 29 12:19:41 2015 (r283714) @@ -5047,7 +5047,6 @@ sctp_find_ifa_by_addr(struct sockaddr *a vrf = sctp_find_vrf(vrf_id); if (vrf == NULL) { -stage_right: if (holds_lock == 0) SCTP_IPI_ADDR_RUNLOCK(); return (NULL); @@ -5067,15 +5066,6 @@ stage_right: return (NULL); } LIST_FOREACH(sctp_ifap, hash_head, next_bucket) { - if (sctp_ifap == NULL) { -#ifdef INVARIANTS - panic("Huh LIST_FOREACH corrupt"); - goto stage_right; -#else - SCTP_PRINTF("LIST corrupt of sctp_ifap's?\n"); - goto stage_right; -#endif - } if (addr->sa_family != sctp_ifap->address.sa.sa_family) continue; #ifdef INET From owner-svn-src-all@FreeBSD.ORG Fri May 29 12:22:36 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 63884C82; Fri, 29 May 2015 12:22:36 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 513D41EEB; Fri, 29 May 2015 12:22:36 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TCMa4q027285; Fri, 29 May 2015 12:22:36 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TCMaqZ027284; Fri, 29 May 2015 12:22:36 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291222.t4TCMaqZ027284@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 12:22: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: r283715 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 12:22:36 -0000 Author: tuexen Date: Fri May 29 12:22:35 2015 New Revision: 283715 URL: https://svnweb.freebsd.org/changeset/base/283715 Log: MFC r277053: Remove dead code. Reported by: Coverity CID: 748664 Modified: stable/10/sys/netinet/sctp_output.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_output.c ============================================================================== --- stable/10/sys/netinet/sctp_output.c Fri May 29 12:19:41 2015 (r283714) +++ stable/10/sys/netinet/sctp_output.c Fri May 29 12:22:35 2015 (r283715) @@ -8917,12 +8917,11 @@ sctp_send_cookie_echo(struct mbuf *m, struct sctp_tmit_chunk *chk; uint16_t ptype, plen; + SCTP_TCB_LOCK_ASSERT(stcb); /* First find the cookie in the param area */ cookie = NULL; at = offset + sizeof(struct sctp_init_chunk); - - SCTP_TCB_LOCK_ASSERT(stcb); - do { + for (;;) { phdr = sctp_get_next_param(m, at, &parm, sizeof(parm)); if (phdr == NULL) { return (-3); @@ -8949,13 +8948,8 @@ sctp_send_cookie_echo(struct mbuf *m, break; } at += SCTP_SIZE32(plen); - } while (phdr); - if (cookie == NULL) { - /* Did not find the cookie */ - return (-3); } /* ok, we got the cookie lets change it into a cookie echo chunk */ - /* first the change from param to cookie */ hdr = mtod(cookie, struct sctp_chunkhdr *); hdr->chunk_type = SCTP_COOKIE_ECHO; From owner-svn-src-all@FreeBSD.ORG Fri May 29 12:25:11 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D75AEEEA; Fri, 29 May 2015 12:25:11 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 C53541F0A; Fri, 29 May 2015 12:25:11 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TCPBGl027714; Fri, 29 May 2015 12:25:11 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TCPBwe027713; Fri, 29 May 2015 12:25:11 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291225.t4TCPBwe027713@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 12:25:11 +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: r283716 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 12:25:12 -0000 Author: tuexen Date: Fri May 29 12:25:11 2015 New Revision: 283716 URL: https://svnweb.freebsd.org/changeset/base/283716 Log: MFC r277337: Remove an unused variable. Reported by: Coverity CID: 750999 Modified: stable/10/sys/netinet/sctp_usrreq.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_usrreq.c ============================================================================== --- stable/10/sys/netinet/sctp_usrreq.c Fri May 29 12:22:35 2015 (r283715) +++ stable/10/sys/netinet/sctp_usrreq.c Fri May 29 12:25:11 2015 (r283716) @@ -4724,7 +4724,6 @@ sctp_setopt(struct socket *so, int optna case SCTP_CONNECT_X_COMPLETE: { struct sockaddr *sa; - struct sctp_nets *net; /* FIXME MT: check correct? */ SCTP_CHECK_AND_CAST(sa, optval, struct sockaddr, optsize); @@ -4735,7 +4734,6 @@ sctp_setopt(struct socket *so, int optna stcb = LIST_FIRST(&inp->sctp_asoc_list); if (stcb) { SCTP_TCB_LOCK(stcb); - net = sctp_findnet(stcb, sa); } SCTP_INP_RUNLOCK(inp); } else { @@ -4747,7 +4745,7 @@ sctp_setopt(struct socket *so, int optna * TCB.. aka NULL. */ SCTP_INP_INCR_REF(inp); - stcb = sctp_findassociation_ep_addr(&inp, sa, &net, NULL, NULL); + stcb = sctp_findassociation_ep_addr(&inp, sa, NULL, NULL, NULL); if (stcb == NULL) { SCTP_INP_DECR_REF(inp); } From owner-svn-src-all@FreeBSD.ORG Fri May 29 12:27:46 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 47853B0; Fri, 29 May 2015 12:27:46 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 358A91F20; Fri, 29 May 2015 12:27:46 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TCRkw3028082; Fri, 29 May 2015 12:27:46 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TCRkcD028081; Fri, 29 May 2015 12:27:46 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291227.t4TCRkcD028081@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 12:27: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: r283717 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 12:27:46 -0000 Author: tuexen Date: Fri May 29 12:27:45 2015 New Revision: 283717 URL: https://svnweb.freebsd.org/changeset/base/283717 Log: MFC r277347: Add protection code to free memory in case of processing an address which is neither IPv4 or IPv6. Reported by: Coverity CID: 749311 Modified: stable/10/sys/netinet/sctp_asconf.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_asconf.c ============================================================================== --- stable/10/sys/netinet/sctp_asconf.c Fri May 29 12:25:11 2015 (r283716) +++ stable/10/sys/netinet/sctp_asconf.c Fri May 29 12:27:45 2015 (r283717) @@ -3346,6 +3346,11 @@ sctp_asconf_send_nat_state_update(struct TAILQ_INSERT_TAIL(&stcb->asoc.asconf_queue, aa, next); break; #endif + default: + SCTPDBG(SCTP_DEBUG_ASCONF1, + "sctp_asconf_send_nat_state_update: unknown address family\n"); + SCTP_FREE(aa, SCTP_M_ASC_ADDR); + return; } SCTP_MALLOC(aa, struct sctp_asconf_addr *, sizeof(*aa), SCTP_M_ASC_ADDR); @@ -3379,6 +3384,11 @@ sctp_asconf_send_nat_state_update(struct TAILQ_INSERT_TAIL(&stcb->asoc.asconf_queue, aa, next); break; #endif + default: + SCTPDBG(SCTP_DEBUG_ASCONF1, + "sctp_asconf_send_nat_state_update: unknown address family\n"); + SCTP_FREE(aa, SCTP_M_ASC_ADDR); + return; } /* Now we must hunt the addresses and add all global addresses */ if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_BOUNDALL) { From owner-svn-src-all@FreeBSD.ORG Fri May 29 12:30:20 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8430D213; Fri, 29 May 2015 12:30:20 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 721F8100A; Fri, 29 May 2015 12:30:20 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TCUKc7028555; Fri, 29 May 2015 12:30:20 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TCUKAe028554; Fri, 29 May 2015 12:30:20 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291230.t4TCUKAe028554@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 12:30: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: r283718 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 12:30:20 -0000 Author: tuexen Date: Fri May 29 12:30:19 2015 New Revision: 283718 URL: https://svnweb.freebsd.org/changeset/base/283718 Log: MFC r277348: Remove an unnecessary check. Reported by: Coverity CID: 749576 Modified: stable/10/sys/netinet/sctp_input.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_input.c ============================================================================== --- stable/10/sys/netinet/sctp_input.c Fri May 29 12:27:45 2015 (r283717) +++ stable/10/sys/netinet/sctp_input.c Fri May 29 12:30:19 2015 (r283718) @@ -3108,7 +3108,6 @@ sctp_handle_ecn_cwr(struct sctp_cwr_chun uint32_t cwr_tsn; cwr_tsn = ntohl(cp->tsn); - override = cp->ch.chunk_flags & SCTP_CWR_REDUCE_OVERRIDE; TAILQ_FOREACH(chk, &stcb->asoc.control_send_queue, sctp_next) { if (chk->rec.chunk_id.id != SCTP_ECN_ECHO) { @@ -3124,10 +3123,8 @@ sctp_handle_ecn_cwr(struct sctp_cwr_chun stcb->asoc.ecn_echo_cnt_onq--; TAILQ_REMOVE(&stcb->asoc.control_send_queue, chk, sctp_next); - if (chk->data) { - sctp_m_freem(chk->data); - chk->data = NULL; - } + sctp_m_freem(chk->data); + chk->data = NULL; stcb->asoc.ctrl_queue_cnt--; sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); if (override == 0) { From owner-svn-src-all@FreeBSD.ORG Fri May 29 12:33:03 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2B05C371; Fri, 29 May 2015 12:33:03 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 18C5C1134; Fri, 29 May 2015 12:33:03 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TCX2vJ032525; Fri, 29 May 2015 12:33:02 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TCX2UP032524; Fri, 29 May 2015 12:33:02 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291233.t4TCX2UP032524@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 12:33:02 +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: r283719 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 12:33:03 -0000 Author: tuexen Date: Fri May 29 12:33:02 2015 New Revision: 283719 URL: https://svnweb.freebsd.org/changeset/base/283719 Log: MFC r277350: Fix a bug which only shows up when an mbuf allocation failed. Therefore chances are low that we hit this. Reported by: Coverity CID: 1018886 Modified: stable/10/sys/netinet/sctp_output.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_output.c ============================================================================== --- stable/10/sys/netinet/sctp_output.c Fri May 29 12:30:19 2015 (r283718) +++ stable/10/sys/netinet/sctp_output.c Fri May 29 12:33:02 2015 (r283719) @@ -7420,7 +7420,7 @@ dont_do_it: SCTP_TCB_SEND_LOCK(stcb); send_lock_up = 1; } - if (chk->data == NULL) { + if (sp->data == NULL) { /* unsteal the data */ sp->data = chk->data; sp->tail_mbuf = chk->last_mbuf; From owner-svn-src-all@FreeBSD.ORG Fri May 29 12:35:21 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D59B54E3; Fri, 29 May 2015 12:35:21 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 C2DEE1158; Fri, 29 May 2015 12:35:21 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TCZLei032915; Fri, 29 May 2015 12:35:21 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TCZLZm032914; Fri, 29 May 2015 12:35:21 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291235.t4TCZLZm032914@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 12:35: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: r283720 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 12:35:22 -0000 Author: tuexen Date: Fri May 29 12:35:21 2015 New Revision: 283720 URL: https://svnweb.freebsd.org/changeset/base/283720 Log: MFC r277380: Code cleanup. Reported by: Coverity CID: 749578 Modified: stable/10/sys/netinet/sctp_timer.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_timer.c ============================================================================== --- stable/10/sys/netinet/sctp_timer.c Fri May 29 12:33:02 2015 (r283719) +++ stable/10/sys/netinet/sctp_timer.c Fri May 29 12:35:21 2015 (r283720) @@ -337,7 +337,7 @@ sctp_find_alternate_net(struct sctp_tcb return (NULL); } } - do { + for (;;) { alt = TAILQ_NEXT(mnet, sctp_next); if (alt == NULL) { once++; @@ -356,7 +356,6 @@ sctp_find_alternate_net(struct sctp_tcb } alt->src_addr_selected = 0; } - /* sa_ignore NO_NULL_CHK */ if (((alt->dest_state & SCTP_ADDR_REACHABLE) == SCTP_ADDR_REACHABLE) && (alt->ro.ro_rt != NULL) && (!(alt->dest_state & SCTP_ADDR_UNCONFIRMED))) { @@ -364,14 +363,14 @@ sctp_find_alternate_net(struct sctp_tcb break; } mnet = alt; - } while (alt != NULL); + } if (alt == NULL) { /* Case where NO insv network exists (dormant state) */ /* we rotate destinations */ once = 0; mnet = net; - do { + for (;;) { if (mnet == NULL) { return (TAILQ_FIRST(&stcb->asoc.nets)); } @@ -382,15 +381,17 @@ sctp_find_alternate_net(struct sctp_tcb break; } alt = TAILQ_FIRST(&stcb->asoc.nets); + if (alt == NULL) { + break; + } } - /* sa_ignore NO_NULL_CHK */ if ((!(alt->dest_state & SCTP_ADDR_UNCONFIRMED)) && (alt != net)) { /* Found an alternate address */ break; } mnet = alt; - } while (alt != NULL); + } } if (alt == NULL) { return (net); From owner-svn-src-all@FreeBSD.ORG Fri May 29 12:45:56 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E803385D; Fri, 29 May 2015 12:45:56 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 BC00D13AF; Fri, 29 May 2015 12:45:56 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TCju7i037924; Fri, 29 May 2015 12:45:56 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TCjuOZ037923; Fri, 29 May 2015 12:45:56 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291245.t4TCjuOZ037923@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 12:45: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: r283721 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 12:45:57 -0000 Author: tuexen Date: Fri May 29 12:45:55 2015 New Revision: 283721 URL: https://svnweb.freebsd.org/changeset/base/283721 Log: MFC r277424: Remove comparisons which are not necessary. With manual intervention. Reported by: Coverity CID: 1237826, 1237844, 1237847 Modified: stable/10/sys/netinet/sctp_sysctl.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_sysctl.c ============================================================================== --- stable/10/sys/netinet/sctp_sysctl.c Fri May 29 12:35:21 2015 (r283720) +++ stable/10/sys/netinet/sctp_sysctl.c Fri May 29 12:45:55 2015 (r283721) @@ -569,8 +569,12 @@ sctp_sysctl_handle_udp_tunneling(SYSCTL_ error = sysctl_handle_int(oidp, &new, 0, req); if ((error == 0) && (req->newptr != NULL)) { +#if (SCTPCTL_UDP_TUNNELING_PORT_MIN == 0) + if (new > SCTPCTL_UDP_TUNNELING_PORT_MAX) { +#else if ((new < SCTPCTL_UDP_TUNNELING_PORT_MIN) || (new > SCTPCTL_UDP_TUNNELING_PORT_MAX)) { +#endif error = EINVAL; } else { SCTP_INP_INFO_WLOCK(); @@ -598,9 +602,14 @@ sctp_sysctl_handle_auth(SYSCTL_HANDLER_A error = sysctl_handle_int(oidp, &new, 0, req); if ((error == 0) && (req->newptr != NULL)) { +#if (SCTPCTL_AUTH_DISABLE_MIN ==0) + if ((new > SCTPCTL_AUTH_DISABLE_MAX) || + ((new == 1) && (SCTP_BASE_SYSCTL(sctp_asconf_enable) == 1))) { +#else if ((new < SCTPCTL_AUTH_DISABLE_MIN) || (new > SCTPCTL_AUTH_DISABLE_MAX) || ((new == 1) && (SCTP_BASE_SYSCTL(sctp_asconf_enable) == 1))) { +#endif error = EINVAL; } else { SCTP_BASE_SYSCTL(sctp_auth_disable) = new; @@ -619,9 +628,14 @@ sctp_sysctl_handle_asconf(SYSCTL_HANDLER error = sysctl_handle_int(oidp, &new, 0, req); if ((error == 0) && (req->newptr != NULL)) { +#if (SCTPCTL_ASCONF_ENABLE_MIN == 0) + if ((new > SCTPCTL_ASCONF_ENABLE_MAX) || + ((new == 1) && (SCTP_BASE_SYSCTL(sctp_auth_disable) == 1))) { +#else if ((new < SCTPCTL_ASCONF_ENABLE_MIN) || (new > SCTPCTL_ASCONF_ENABLE_MAX) || ((new == 1) && (SCTP_BASE_SYSCTL(sctp_auth_disable) == 1))) { +#endif error = EINVAL; } else { SCTP_BASE_SYSCTL(sctp_asconf_enable) = new; From owner-svn-src-all@FreeBSD.ORG Fri May 29 12:48:15 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 6FD47AA1; Fri, 29 May 2015 12:48:15 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 5DDBB13C4; Fri, 29 May 2015 12:48:15 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TCmFgj038305; Fri, 29 May 2015 12:48:15 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TCmFk1038304; Fri, 29 May 2015 12:48:15 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291248.t4TCmFk1038304@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 12:48: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: r283722 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 12:48:15 -0000 Author: tuexen Date: Fri May 29 12:48:14 2015 New Revision: 283722 URL: https://svnweb.freebsd.org/changeset/base/283722 Log: MFC r277815: Whitespace change. Modified: stable/10/sys/netinet/sctp_usrreq.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_usrreq.c ============================================================================== --- stable/10/sys/netinet/sctp_usrreq.c Fri May 29 12:45:55 2015 (r283721) +++ stable/10/sys/netinet/sctp_usrreq.c Fri May 29 12:48:14 2015 (r283722) @@ -4054,7 +4054,6 @@ sctp_setopt(struct socket *so, int optna SCTP_TCB_UNLOCK(stcb); } SCTP_INP_RUNLOCK(inp); - } else { /* * Can't set stream value without From owner-svn-src-all@FreeBSD.ORG Fri May 29 12:50:53 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id BB514C0C; Fri, 29 May 2015 12:50:53 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 A8F0714B2; Fri, 29 May 2015 12:50:53 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TCorWM041151; Fri, 29 May 2015 12:50:53 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TCorU1041150; Fri, 29 May 2015 12:50:53 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291250.t4TCorU1041150@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 12:50:53 +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: r283723 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 12:50:53 -0000 Author: tuexen Date: Fri May 29 12:50:53 2015 New Revision: 283723 URL: https://svnweb.freebsd.org/changeset/base/283723 Log: MFC r279841: Fix a typo. Modified: stable/10/sys/netinet/sctp_timer.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_timer.c ============================================================================== --- stable/10/sys/netinet/sctp_timer.c Fri May 29 12:48:14 2015 (r283722) +++ stable/10/sys/netinet/sctp_timer.c Fri May 29 12:50:53 2015 (r283723) @@ -152,7 +152,7 @@ sctp_threshold_management(struct sctp_in struct mbuf *op_err; op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, - "Association error couter exceeded"); + "Association error counter exceeded"); inp->last_abort_code = SCTP_FROM_SCTP_TIMER + SCTP_LOC_1; sctp_abort_an_association(inp, stcb, op_err, SCTP_SO_NOT_LOCKED); return (1); From owner-svn-src-all@FreeBSD.ORG Fri May 29 12:54:33 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C5404DA0; Fri, 29 May 2015 12:54:33 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 B1DD11657; Fri, 29 May 2015 12:54:33 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TCsXmO042851; Fri, 29 May 2015 12:54:33 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TCsVEX042831; Fri, 29 May 2015 12:54:31 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291254.t4TCsVEX042831@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 12:54:31 +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: r283724 - in stable/10: lib/libc/net sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 12:54:33 -0000 Author: tuexen Date: Fri May 29 12:54:30 2015 New Revision: 283724 URL: https://svnweb.freebsd.org/changeset/base/283724 Log: MFC r279859: Add a SCTP socket option to limit the cwnd for each path. Modified: stable/10/lib/libc/net/sctp_sys_calls.c stable/10/sys/netinet/sctp.h stable/10/sys/netinet/sctp_cc_functions.c stable/10/sys/netinet/sctp_input.c stable/10/sys/netinet/sctp_pcb.c stable/10/sys/netinet/sctp_pcb.h stable/10/sys/netinet/sctp_peeloff.c stable/10/sys/netinet/sctp_structs.h stable/10/sys/netinet/sctp_usrreq.c stable/10/sys/netinet/sctputil.c Directory Properties: stable/10/ (props changed) Modified: stable/10/lib/libc/net/sctp_sys_calls.c ============================================================================== --- stable/10/lib/libc/net/sctp_sys_calls.c Fri May 29 12:50:53 2015 (r283723) +++ stable/10/lib/libc/net/sctp_sys_calls.c Fri May 29 12:54:30 2015 (r283724) @@ -383,6 +383,9 @@ sctp_opt_info(int sd, sctp_assoc_t id, i case SCTP_PR_ASSOC_STATUS: ((struct sctp_prstatus *)arg)->sprstat_assoc_id = id; break; + case SCTP_MAX_CWND: + ((struct sctp_assoc_value *)arg)->assoc_id = id; + break; default: break; } Modified: stable/10/sys/netinet/sctp.h ============================================================================== --- stable/10/sys/netinet/sctp.h Fri May 29 12:50:53 2015 (r283723) +++ stable/10/sys/netinet/sctp.h Fri May 29 12:54:30 2015 (r283724) @@ -128,6 +128,7 @@ struct sctp_paramhdr { #define SCTP_RECONFIG_SUPPORTED 0x00000029 #define SCTP_NRSACK_SUPPORTED 0x00000030 #define SCTP_PKTDROP_SUPPORTED 0x00000031 +#define SCTP_MAX_CWND 0x00000032 /* * read-only options Modified: stable/10/sys/netinet/sctp_cc_functions.c ============================================================================== --- stable/10/sys/netinet/sctp_cc_functions.c Fri May 29 12:50:53 2015 (r283723) +++ stable/10/sys/netinet/sctp_cc_functions.c Fri May 29 12:54:30 2015 (r283724) @@ -53,6 +53,19 @@ __FBSDID("$FreeBSD$"); #define SHIFT_MPTCP_MULTI 8 static void +sctp_enforce_cwnd_limit(struct sctp_association *assoc, struct sctp_nets *net) +{ + if ((assoc->max_cwnd > 0) && + (net->cwnd > assoc->max_cwnd) && + (net->cwnd > (net->mtu - sizeof(struct sctphdr)))) { + net->cwnd = assoc->max_cwnd; + if (net->cwnd < (net->mtu - sizeof(struct sctphdr))) { + net->cwnd = net->mtu - sizeof(struct sctphdr); + } + } +} + +static void sctp_set_initial_cc_param(struct sctp_tcb *stcb, struct sctp_nets *net) { struct sctp_association *assoc; @@ -80,6 +93,7 @@ sctp_set_initial_cc_param(struct sctp_tc net->cwnd = net->mtu - sizeof(struct sctphdr); } } + sctp_enforce_cwnd_limit(assoc, net); net->ssthresh = assoc->peers_rwnd; SDT_PROBE(sctp, cwnd, net, init, stcb->asoc.my_vtag, ((stcb->sctp_ep->sctp_lport << 16) | (stcb->rport)), net, @@ -178,6 +192,7 @@ sctp_cwnd_update_after_fr(struct sctp_tc } } net->cwnd = net->ssthresh; + sctp_enforce_cwnd_limit(asoc, net); SDT_PROBE(sctp, cwnd, net, fr, stcb->asoc.my_vtag, ((stcb->sctp_ep->sctp_lport << 16) | (stcb->rport)), net, old_cwnd, net->cwnd); @@ -426,6 +441,7 @@ cc_bw_decrease(struct sctp_tcb *stcb, st if ((net->cc_mod.rtcc.vol_reduce) && (inst_ind != SCTP_INST_GAINING)) { net->cwnd += net->mtu; + sctp_enforce_cwnd_limit(&stcb->asoc, net); net->cc_mod.rtcc.vol_reduce--; } net->cc_mod.rtcc.last_step_state = 2; @@ -457,6 +473,7 @@ cc_bw_decrease(struct sctp_tcb *stcb, st if ((net->cc_mod.rtcc.vol_reduce) && (inst_ind != SCTP_INST_GAINING)) { net->cwnd += net->mtu; + sctp_enforce_cwnd_limit(&stcb->asoc, net); net->cc_mod.rtcc.vol_reduce--; } net->cc_mod.rtcc.last_step_state = 3; @@ -488,6 +505,7 @@ cc_bw_decrease(struct sctp_tcb *stcb, st if ((net->cc_mod.rtcc.vol_reduce) && (inst_ind != SCTP_INST_GAINING)) { net->cwnd += net->mtu; + sctp_enforce_cwnd_limit(&stcb->asoc, net); net->cc_mod.rtcc.vol_reduce--; } net->cc_mod.rtcc.last_step_state = 4; @@ -882,6 +900,7 @@ sctp_cwnd_update_after_sack_common(struc break; } net->cwnd += incr; + sctp_enforce_cwnd_limit(asoc, net); if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_CWND_MONITOR_ENABLE) { sctp_log_cwnd(stcb, net, incr, SCTP_CWND_LOG_FROM_SS); @@ -948,6 +967,7 @@ sctp_cwnd_update_after_sack_common(struc break; } net->cwnd += incr; + sctp_enforce_cwnd_limit(asoc, net); SDT_PROBE(sctp, cwnd, net, ack, stcb->asoc.my_vtag, ((stcb->sctp_ep->sctp_lport << 16) | (stcb->rport)), @@ -1227,6 +1247,7 @@ sctp_cwnd_update_after_packet_dropped(st /* We always have 1 MTU */ net->cwnd = net->mtu; } + sctp_enforce_cwnd_limit(&stcb->asoc, net); if (net->cwnd - old_cwnd != 0) { /* log only changes */ SDT_PROBE(sctp, cwnd, net, pd, @@ -1251,6 +1272,7 @@ sctp_cwnd_update_after_output(struct sct net->ssthresh = net->cwnd; if (burst_limit) { net->cwnd = (net->flight_size + (burst_limit * net->mtu)); + sctp_enforce_cwnd_limit(&stcb->asoc, net); SDT_PROBE(sctp, cwnd, net, bl, stcb->asoc.my_vtag, ((stcb->sctp_ep->sctp_lport << 16) | (stcb->rport)), @@ -1589,6 +1611,7 @@ static void sctp_hs_cwnd_increase(struct sctp_tcb *stcb, struct sctp_nets *net) { int cur_val, i, indx, incr; + int old_cwnd = net->cwnd; cur_val = net->cwnd >> 10; indx = SCTP_HS_TABLE_SIZE - 1; @@ -1597,14 +1620,8 @@ sctp_hs_cwnd_increase(struct sctp_tcb *s /* normal mode */ if (net->net_ack > net->mtu) { net->cwnd += net->mtu; - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_CWND_MONITOR_ENABLE) { - sctp_log_cwnd(stcb, net, net->mtu, SCTP_CWND_LOG_FROM_SS); - } } else { net->cwnd += net->net_ack; - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_CWND_MONITOR_ENABLE) { - sctp_log_cwnd(stcb, net, net->net_ack, SCTP_CWND_LOG_FROM_SS); - } } } else { for (i = net->last_hs_used; i < SCTP_HS_TABLE_SIZE; i++) { @@ -1616,9 +1633,10 @@ sctp_hs_cwnd_increase(struct sctp_tcb *s net->last_hs_used = indx; incr = ((sctp_cwnd_adjust[indx].increase) << 10); net->cwnd += incr; - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_CWND_MONITOR_ENABLE) { - sctp_log_cwnd(stcb, net, incr, SCTP_CWND_LOG_FROM_SS); - } + } + sctp_enforce_cwnd_limit(&stcb->asoc, net); + if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_CWND_MONITOR_ENABLE) { + sctp_log_cwnd(stcb, net, (net->cwnd - old_cwnd), SCTP_CWND_LOG_FROM_SS); } } @@ -1657,6 +1675,7 @@ sctp_hs_cwnd_decrease(struct sctp_tcb *s net->last_hs_used = indx; } } + sctp_enforce_cwnd_limit(&stcb->asoc, net); if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_CWND_MONITOR_ENABLE) { sctp_log_cwnd(stcb, net, (net->cwnd - old_cwnd), SCTP_CWND_LOG_FROM_FR); } @@ -1788,9 +1807,7 @@ sctp_hs_cwnd_update_after_sack(struct sc if (net->cwnd <= net->ssthresh) { /* We are in slow start */ if (net->flight_size + net->net_ack >= net->cwnd) { - sctp_hs_cwnd_increase(stcb, net); - } else { if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_CWND_LOGGING_ENABLE) { sctp_log_cwnd(stcb, net, net->net_ack, @@ -1804,6 +1821,7 @@ sctp_hs_cwnd_update_after_sack(struct sc (net->partial_bytes_acked >= net->cwnd)) { net->partial_bytes_acked -= net->cwnd; net->cwnd += net->mtu; + sctp_enforce_cwnd_limit(asoc, net); if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_CWND_MONITOR_ENABLE) { sctp_log_cwnd(stcb, net, net->mtu, SCTP_CWND_LOG_FROM_CA); @@ -2042,6 +2060,7 @@ htcp_cong_avoid(struct sctp_tcb *stcb, s SCTP_CWND_LOG_FROM_SS); } } + sctp_enforce_cwnd_limit(&stcb->asoc, net); } else { if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_CWND_LOGGING_ENABLE) { sctp_log_cwnd(stcb, net, net->net_ack, @@ -2063,6 +2082,7 @@ htcp_cong_avoid(struct sctp_tcb *stcb, s */ net->cwnd += net->mtu; net->partial_bytes_acked = 0; + sctp_enforce_cwnd_limit(&stcb->asoc, net); htcp_alpha_update(&net->cc_mod.htcp_ca); if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_CWND_MONITOR_ENABLE) { sctp_log_cwnd(stcb, net, net->mtu, @@ -2109,6 +2129,7 @@ sctp_htcp_set_initial_cc_param(struct sc */ net->cwnd = min((net->mtu * 4), max((2 * net->mtu), SCTP_INITIAL_CWND)); net->ssthresh = stcb->asoc.peers_rwnd; + sctp_enforce_cwnd_limit(&stcb->asoc, net); htcp_init(net); if (SCTP_BASE_SYSCTL(sctp_logging_level) & (SCTP_CWND_MONITOR_ENABLE | SCTP_CWND_LOGGING_ENABLE)) { @@ -2212,6 +2233,7 @@ sctp_htcp_cwnd_update_after_fr(struct sc htcp_reset(&net->cc_mod.htcp_ca); net->ssthresh = htcp_recalc_ssthresh(net); net->cwnd = net->ssthresh; + sctp_enforce_cwnd_limit(asoc, net); if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_CWND_MONITOR_ENABLE) { sctp_log_cwnd(stcb, net, (net->cwnd - old_cwnd), SCTP_CWND_LOG_FROM_FR); @@ -2291,6 +2313,7 @@ sctp_htcp_cwnd_update_after_ecn_echo(str net->RTO <<= 1; } net->cwnd = net->ssthresh; + sctp_enforce_cwnd_limit(&stcb->asoc, net); if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_CWND_MONITOR_ENABLE) { sctp_log_cwnd(stcb, net, (net->cwnd - old_cwnd), SCTP_CWND_LOG_FROM_SAT); } Modified: stable/10/sys/netinet/sctp_input.c ============================================================================== --- stable/10/sys/netinet/sctp_input.c Fri May 29 12:50:53 2015 (r283723) +++ stable/10/sys/netinet/sctp_input.c Fri May 29 12:54:30 2015 (r283724) @@ -2763,6 +2763,7 @@ sctp_handle_cookie_echo(struct mbuf *m, inp->sctp_mobility_features = (*inp_p)->sctp_mobility_features; inp->sctp_socket = so; inp->sctp_frag_point = (*inp_p)->sctp_frag_point; + inp->max_cwnd = (*inp_p)->max_cwnd; inp->sctp_cmt_on_off = (*inp_p)->sctp_cmt_on_off; inp->ecn_supported = (*inp_p)->ecn_supported; inp->prsctp_supported = (*inp_p)->prsctp_supported; Modified: stable/10/sys/netinet/sctp_pcb.c ============================================================================== --- stable/10/sys/netinet/sctp_pcb.c Fri May 29 12:50:53 2015 (r283723) +++ stable/10/sys/netinet/sctp_pcb.c Fri May 29 12:54:30 2015 (r283724) @@ -2474,6 +2474,7 @@ sctp_inpcb_alloc(struct socket *so, uint inp->sctp_associd_counter = 1; inp->partial_delivery_point = SCTP_SB_LIMIT_RCV(so) >> SCTP_PARTIAL_DELIVERY_SHIFT; inp->sctp_frag_point = SCTP_DEFAULT_MAXSEGMENT; + inp->max_cwnd = 0; inp->sctp_cmt_on_off = SCTP_BASE_SYSCTL(sctp_cmt_on_off); inp->ecn_supported = (uint8_t) SCTP_BASE_SYSCTL(sctp_ecn_enable); inp->prsctp_supported = (uint8_t) SCTP_BASE_SYSCTL(sctp_pr_enable); Modified: stable/10/sys/netinet/sctp_pcb.h ============================================================================== --- stable/10/sys/netinet/sctp_pcb.h Fri May 29 12:50:53 2015 (r283723) +++ stable/10/sys/netinet/sctp_pcb.h Fri May 29 12:54:30 2015 (r283724) @@ -404,6 +404,7 @@ struct sctp_inpcb { uint32_t sctp_frag_point; uint32_t partial_delivery_point; uint32_t sctp_context; + uint32_t max_cwnd; uint8_t local_strreset_support; uint32_t sctp_cmt_on_off; uint8_t ecn_supported; Modified: stable/10/sys/netinet/sctp_peeloff.c ============================================================================== --- stable/10/sys/netinet/sctp_peeloff.c Fri May 29 12:50:53 2015 (r283723) +++ stable/10/sys/netinet/sctp_peeloff.c Fri May 29 12:54:30 2015 (r283724) @@ -127,6 +127,7 @@ sctp_do_peeloff(struct socket *head, str n_inp->pktdrop_supported = inp->pktdrop_supported; n_inp->partial_delivery_point = inp->partial_delivery_point; n_inp->sctp_context = inp->sctp_context; + n_inp->max_cwnd = inp->max_cwnd; n_inp->local_strreset_support = inp->local_strreset_support; n_inp->inp_starting_point_for_iterator = NULL; /* copy in the authentication parameters from the original endpoint */ Modified: stable/10/sys/netinet/sctp_structs.h ============================================================================== --- stable/10/sys/netinet/sctp_structs.h Fri May 29 12:50:53 2015 (r283723) +++ stable/10/sys/netinet/sctp_structs.h Fri May 29 12:54:30 2015 (r283724) @@ -1199,6 +1199,7 @@ struct sctp_association { uint8_t sctp_cmt_pf; uint8_t use_precise_time; uint64_t sctp_features; + uint32_t max_cwnd; uint16_t port; /* remote UDP encapsulation port */ /* * The mapping array is used to track out of order sequences above Modified: stable/10/sys/netinet/sctp_usrreq.c ============================================================================== --- stable/10/sys/netinet/sctp_usrreq.c Fri May 29 12:50:53 2015 (r283723) +++ stable/10/sys/netinet/sctp_usrreq.c Fri May 29 12:54:30 2015 (r283724) @@ -3694,6 +3694,33 @@ flags_out: } break; } + case SCTP_MAX_CWND: + { + struct sctp_assoc_value *av; + + SCTP_CHECK_AND_CAST(av, optval, struct sctp_assoc_value, *optsize); + SCTP_FIND_STCB(inp, stcb, av->assoc_id); + + if (stcb) { + av->assoc_value = stcb->asoc.max_cwnd; + SCTP_TCB_UNLOCK(stcb); + } else { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || + (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || + (av->assoc_id == SCTP_FUTURE_ASSOC)) { + SCTP_INP_RLOCK(inp); + av->assoc_value = inp->max_cwnd; + SCTP_INP_RUNLOCK(inp); + } else { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; + } + } + if (error == 0) { + *optsize = sizeof(struct sctp_assoc_value); + } + break; + } default: SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, ENOPROTOOPT); error = ENOPROTOOPT; @@ -6572,6 +6599,42 @@ sctp_setopt(struct socket *so, int optna } break; } + case SCTP_MAX_CWND: + { + struct sctp_assoc_value *av; + struct sctp_nets *net; + + SCTP_CHECK_AND_CAST(av, optval, struct sctp_assoc_value, optsize); + SCTP_FIND_STCB(inp, stcb, av->assoc_id); + + if (stcb) { + stcb->asoc.max_cwnd = av->assoc_value; + if (stcb->asoc.max_cwnd > 0) { + TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) { + if ((net->cwnd > stcb->asoc.max_cwnd) && + (net->cwnd > (net->mtu - sizeof(struct sctphdr)))) { + net->cwnd = stcb->asoc.max_cwnd; + if (net->cwnd < (net->mtu - sizeof(struct sctphdr))) { + net->cwnd = net->mtu - sizeof(struct sctphdr); + } + } + } + } + SCTP_TCB_UNLOCK(stcb); + } else { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || + (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || + (av->assoc_id == SCTP_FUTURE_ASSOC)) { + SCTP_INP_WLOCK(inp); + inp->max_cwnd = av->assoc_value; + SCTP_INP_WUNLOCK(inp); + } else { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; + } + } + break; + } default: SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, ENOPROTOOPT); error = ENOPROTOOPT; Modified: stable/10/sys/netinet/sctputil.c ============================================================================== --- stable/10/sys/netinet/sctputil.c Fri May 29 12:50:53 2015 (r283723) +++ stable/10/sys/netinet/sctputil.c Fri May 29 12:54:30 2015 (r283724) @@ -936,6 +936,7 @@ sctp_init_asoc(struct sctp_inpcb *inp, s asoc->sctp_frag_point = inp->sctp_frag_point; asoc->sctp_features = inp->sctp_features; asoc->default_dscp = inp->sctp_ep.default_dscp; + asoc->max_cwnd = inp->max_cwnd; #ifdef INET6 if (inp->sctp_ep.default_flowlabel) { asoc->default_flowlabel = inp->sctp_ep.default_flowlabel; From owner-svn-src-all@FreeBSD.ORG Fri May 29 12:57:05 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 520EFF14; Fri, 29 May 2015 12:57:05 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 3FE6F167F; Fri, 29 May 2015 12:57:05 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TCv53K043271; Fri, 29 May 2015 12:57:05 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TCv56Z043270; Fri, 29 May 2015 12:57:05 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291257.t4TCv56Z043270@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 12:57: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: r283725 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 12:57:05 -0000 Author: tuexen Date: Fri May 29 12:57:04 2015 New Revision: 283725 URL: https://svnweb.freebsd.org/changeset/base/283725 Log: MFC r279863: Unlock the stcb when using setsockopt() for the SCTP_PEER_ADDR_THLDS option. Modified: stable/10/sys/netinet/sctp_usrreq.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_usrreq.c ============================================================================== --- stable/10/sys/netinet/sctp_usrreq.c Fri May 29 12:54:30 2015 (r283724) +++ stable/10/sys/netinet/sctp_usrreq.c Fri May 29 12:57:04 2015 (r283725) @@ -6249,6 +6249,7 @@ sctp_setopt(struct socket *so, int optna stcb->asoc.def_net_failure = thlds->spt_pathmaxrxt; stcb->asoc.def_net_pf_threshold = thlds->spt_pathpfthld; } + SCTP_TCB_UNLOCK(stcb); } else { if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || From owner-svn-src-all@FreeBSD.ORG Fri May 29 12:59:19 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 50823E7; Fri, 29 May 2015 12:59:19 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 2431E1696; Fri, 29 May 2015 12:59:19 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TCxJPk043618; Fri, 29 May 2015 12:59:19 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TCxItT043617; Fri, 29 May 2015 12:59:18 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291259.t4TCxItT043617@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 12:59:18 +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: r283726 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 12:59:19 -0000 Author: tuexen Date: Fri May 29 12:59:18 2015 New Revision: 283726 URL: https://svnweb.freebsd.org/changeset/base/283726 Log: MFC r279867: Keep track on the socket lock state. This fixes a bug showing up on Mac OS X. Modified: stable/10/sys/netinet/sctputil.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctputil.c ============================================================================== --- stable/10/sys/netinet/sctputil.c Fri May 29 12:57:04 2015 (r283725) +++ stable/10/sys/netinet/sctputil.c Fri May 29 12:59:18 2015 (r283726) @@ -2745,7 +2745,11 @@ set_error: static void sctp_notify_peer_addr_change(struct sctp_tcb *stcb, uint32_t state, - struct sockaddr *sa, uint32_t error) + struct sockaddr *sa, uint32_t error, int so_locked +#if !defined(__APPLE__) && !defined(SCTP_SO_LOCK_TESTING) + SCTP_UNUSED +#endif +) { struct mbuf *m_notify; struct sctp_paddr_change *spc; @@ -2828,7 +2832,7 @@ sctp_notify_peer_addr_change(struct sctp control, &stcb->sctp_socket->so_rcv, 1, SCTP_READ_LOCK_NOT_HELD, - SCTP_SO_NOT_LOCKED); + so_locked); } @@ -3592,7 +3596,7 @@ sctp_ulp_notify(uint32_t notification, s net = (struct sctp_nets *)data; sctp_notify_peer_addr_change(stcb, SCTP_ADDR_UNREACHABLE, - (struct sockaddr *)&net->ro._l_addr, error); + (struct sockaddr *)&net->ro._l_addr, error, so_locked); break; } case SCTP_NOTIFY_INTERFACE_UP: @@ -3601,7 +3605,7 @@ sctp_ulp_notify(uint32_t notification, s net = (struct sctp_nets *)data; sctp_notify_peer_addr_change(stcb, SCTP_ADDR_AVAILABLE, - (struct sockaddr *)&net->ro._l_addr, error); + (struct sockaddr *)&net->ro._l_addr, error, so_locked); break; } case SCTP_NOTIFY_INTERFACE_CONFIRMED: @@ -3610,7 +3614,7 @@ sctp_ulp_notify(uint32_t notification, s net = (struct sctp_nets *)data; sctp_notify_peer_addr_change(stcb, SCTP_ADDR_CONFIRMED, - (struct sockaddr *)&net->ro._l_addr, error); + (struct sockaddr *)&net->ro._l_addr, error, so_locked); break; } case SCTP_NOTIFY_SPECIAL_SP_FAIL: @@ -3681,15 +3685,15 @@ sctp_ulp_notify(uint32_t notification, s break; case SCTP_NOTIFY_ASCONF_ADD_IP: sctp_notify_peer_addr_change(stcb, SCTP_ADDR_ADDED, data, - error); + error, so_locked); break; case SCTP_NOTIFY_ASCONF_DELETE_IP: sctp_notify_peer_addr_change(stcb, SCTP_ADDR_REMOVED, data, - error); + error, so_locked); break; case SCTP_NOTIFY_ASCONF_SET_PRIMARY: sctp_notify_peer_addr_change(stcb, SCTP_ADDR_MADE_PRIM, data, - error); + error, so_locked); break; case SCTP_NOTIFY_PEER_SHUTDOWN: sctp_notify_shutdown_event(stcb); From owner-svn-src-all@FreeBSD.ORG Fri May 29 13:02:00 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B213726F; Fri, 29 May 2015 13:02:00 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 A01A21885; Fri, 29 May 2015 13:02:00 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TD20cs047717; Fri, 29 May 2015 13:02:00 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TD206q047715; Fri, 29 May 2015 13:02:00 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291302.t4TD206q047715@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 13:02:00 +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: r283727 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 13:02:00 -0000 Author: tuexen Date: Fri May 29 13:02:00 2015 New Revision: 283727 URL: https://svnweb.freebsd.org/changeset/base/283727 Log: MFC r279886: Fix the adaptation of the path state when thresholds are changed using the SCTP_PEER_ADDR_THLDS socket option. Modified: stable/10/sys/netinet/sctp_usrreq.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_usrreq.c ============================================================================== --- stable/10/sys/netinet/sctp_usrreq.c Fri May 29 12:59:18 2015 (r283726) +++ stable/10/sys/netinet/sctp_usrreq.c Fri May 29 13:02:00 2015 (r283727) @@ -6189,14 +6189,16 @@ sctp_setopt(struct socket *so, int optna } if (stcb != NULL) { if (net != NULL) { + net->failure_threshold = thlds->spt_pathmaxrxt; + net->pf_threshold = thlds->spt_pathpfthld; if (net->dest_state & SCTP_ADDR_PF) { - if ((net->failure_threshold > thlds->spt_pathmaxrxt) || - (net->failure_threshold <= thlds->spt_pathpfthld)) { + if ((net->error_count > net->failure_threshold) || + (net->error_count <= net->pf_threshold)) { net->dest_state &= ~SCTP_ADDR_PF; } } else { - if ((net->failure_threshold > thlds->spt_pathpfthld) && - (net->failure_threshold <= thlds->spt_pathmaxrxt)) { + if ((net->error_count > net->pf_threshold) && + (net->error_count <= net->failure_threshold)) { net->dest_state |= SCTP_ADDR_PF; sctp_send_hb(stcb, net, SCTP_SO_LOCKED); sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_TIMER + SCTP_LOC_3); @@ -6204,28 +6206,28 @@ sctp_setopt(struct socket *so, int optna } } if (net->dest_state & SCTP_ADDR_REACHABLE) { - if (net->failure_threshold > thlds->spt_pathmaxrxt) { + if (net->error_count > net->failure_threshold) { net->dest_state &= ~SCTP_ADDR_REACHABLE; sctp_ulp_notify(SCTP_NOTIFY_INTERFACE_DOWN, stcb, 0, net, SCTP_SO_LOCKED); } } else { - if (net->failure_threshold <= thlds->spt_pathmaxrxt) { + if (net->error_count <= net->failure_threshold) { net->dest_state |= SCTP_ADDR_REACHABLE; sctp_ulp_notify(SCTP_NOTIFY_INTERFACE_UP, stcb, 0, net, SCTP_SO_LOCKED); } } - net->failure_threshold = thlds->spt_pathmaxrxt; - net->pf_threshold = thlds->spt_pathpfthld; } else { TAILQ_FOREACH(net, &stcb->asoc.nets, sctp_next) { + net->failure_threshold = thlds->spt_pathmaxrxt; + net->pf_threshold = thlds->spt_pathpfthld; if (net->dest_state & SCTP_ADDR_PF) { - if ((net->failure_threshold > thlds->spt_pathmaxrxt) || - (net->failure_threshold <= thlds->spt_pathpfthld)) { + if ((net->error_count > net->failure_threshold) || + (net->error_count <= net->pf_threshold)) { net->dest_state &= ~SCTP_ADDR_PF; } } else { - if ((net->failure_threshold > thlds->spt_pathpfthld) && - (net->failure_threshold <= thlds->spt_pathmaxrxt)) { + if ((net->error_count > net->pf_threshold) && + (net->error_count <= net->failure_threshold)) { net->dest_state |= SCTP_ADDR_PF; sctp_send_hb(stcb, net, SCTP_SO_LOCKED); sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net, SCTP_FROM_SCTP_TIMER + SCTP_LOC_3); @@ -6233,18 +6235,16 @@ sctp_setopt(struct socket *so, int optna } } if (net->dest_state & SCTP_ADDR_REACHABLE) { - if (net->failure_threshold > thlds->spt_pathmaxrxt) { + if (net->error_count > net->failure_threshold) { net->dest_state &= ~SCTP_ADDR_REACHABLE; sctp_ulp_notify(SCTP_NOTIFY_INTERFACE_DOWN, stcb, 0, net, SCTP_SO_LOCKED); } } else { - if (net->failure_threshold <= thlds->spt_pathmaxrxt) { + if (net->error_count <= net->failure_threshold) { net->dest_state |= SCTP_ADDR_REACHABLE; sctp_ulp_notify(SCTP_NOTIFY_INTERFACE_UP, stcb, 0, net, SCTP_SO_LOCKED); } } - net->failure_threshold = thlds->spt_pathmaxrxt; - net->pf_threshold = thlds->spt_pathpfthld; } stcb->asoc.def_net_failure = thlds->spt_pathmaxrxt; stcb->asoc.def_net_pf_threshold = thlds->spt_pathpfthld; From owner-svn-src-all@FreeBSD.ORG Fri May 29 13:06:16 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 30A183EA; Fri, 29 May 2015 13:06:16 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 1E82418B8; Fri, 29 May 2015 13:06:16 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TD6Fs2048323; Fri, 29 May 2015 13:06:15 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TD6FqB048322; Fri, 29 May 2015 13:06:15 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291306.t4TD6FqB048322@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 13: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: r283728 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 13:06:16 -0000 Author: tuexen Date: Fri May 29 13:06:15 2015 New Revision: 283728 URL: https://svnweb.freebsd.org/changeset/base/283728 Log: MFC r280371: Remove a useless assignment. Modified: stable/10/sys/netinet/sctp_output.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_output.c ============================================================================== --- stable/10/sys/netinet/sctp_output.c Fri May 29 13:02:00 2015 (r283727) +++ stable/10/sys/netinet/sctp_output.c Fri May 29 13:06:15 2015 (r283728) @@ -9302,8 +9302,6 @@ sctp_send_asconf_ack(struct sctp_tcb *st atomic_add_int(&chk->whoTo->ref_count, 1); } chk->data = m_ack; - chk->send_size = 0; - /* Get size */ chk->send_size = ack->len; chk->sent = SCTP_DATAGRAM_UNSENT; chk->snd_count = 0; From owner-svn-src-all@FreeBSD.ORG Fri May 29 13:08:44 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 395D0708; Fri, 29 May 2015 13:08:44 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 270AB18ED; Fri, 29 May 2015 13:08:44 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TD8iYf048800; Fri, 29 May 2015 13:08:44 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TD8iBP048799; Fri, 29 May 2015 13:08:44 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291308.t4TD8iBP048799@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 13:08:43 +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: r283729 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 13:08:44 -0000 Author: tuexen Date: Fri May 29 13:08:43 2015 New Revision: 283729 URL: https://svnweb.freebsd.org/changeset/base/283729 Log: MFC r280404: When an ICMP message is received and the MTU shrinks, only mark outstanding chunks for retransmissions. Modified: stable/10/sys/netinet/sctp_usrreq.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_usrreq.c ============================================================================== --- stable/10/sys/netinet/sctp_usrreq.c Fri May 29 13:06:15 2015 (r283728) +++ stable/10/sys/netinet/sctp_usrreq.c Fri May 29 13:08:43 2015 (r283729) @@ -125,21 +125,19 @@ sctp_pathmtu_adjustment(struct sctp_tcb if (chk->sent < SCTP_DATAGRAM_RESEND) { sctp_flight_size_decrease(chk); sctp_total_flight_decrease(stcb, chk); - } - if (chk->sent != SCTP_DATAGRAM_RESEND) { + chk->sent = SCTP_DATAGRAM_RESEND; sctp_ucount_incr(stcb->asoc.sent_queue_retran_cnt); + chk->rec.data.doing_fast_retransmit = 0; + if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_FLIGHT_LOGGING_ENABLE) { + sctp_misc_ints(SCTP_FLIGHT_LOG_DOWN_PMTU, + chk->whoTo->flight_size, + chk->book_size, + (uintptr_t) chk->whoTo, + chk->rec.data.TSN_seq); + } + /* Clear any time so NO RTT is being done */ + chk->do_rtt = 0; } - chk->sent = SCTP_DATAGRAM_RESEND; - chk->rec.data.doing_fast_retransmit = 0; - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_FLIGHT_LOGGING_ENABLE) { - sctp_misc_ints(SCTP_FLIGHT_LOG_DOWN_PMTU, - chk->whoTo->flight_size, - chk->book_size, - (uintptr_t) chk->whoTo, - chk->rec.data.TSN_seq); - } - /* Clear any time so NO RTT is being done */ - chk->do_rtt = 0; } } } From owner-svn-src-all@FreeBSD.ORG Fri May 29 13:11:14 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 34B5A87F; Fri, 29 May 2015 13:11:14 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 22CC91A65; Fri, 29 May 2015 13:11:14 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TDBDBe052335; Fri, 29 May 2015 13:11:13 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TDBD8Z052334; Fri, 29 May 2015 13:11:13 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291311.t4TDBD8Z052334@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 13:11:13 +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: r283730 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 13:11:14 -0000 Author: tuexen Date: Fri May 29 13:11:13 2015 New Revision: 283730 URL: https://svnweb.freebsd.org/changeset/base/283730 Log: MFC r280439: Fix an accounting bug related to the per stream chunk counter. While there, don't refer to a net articifically. Modified: stable/10/sys/netinet/sctputil.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctputil.c ============================================================================== --- stable/10/sys/netinet/sctputil.c Fri May 29 13:08:43 2015 (r283729) +++ stable/10/sys/netinet/sctputil.c Fri May 29 13:11:13 2015 (r283730) @@ -4891,13 +4891,9 @@ sctp_release_pr_sctp_chunk(struct sctp_t chk->rec.data.payloadtype = sp->ppid; chk->rec.data.context = sp->context; chk->flags = sp->act_flags; - if (sp->net) - chk->whoTo = sp->net; - else - chk->whoTo = stcb->asoc.primary_destination; - atomic_add_int(&chk->whoTo->ref_count, 1); + chk->whoTo = NULL; chk->rec.data.TSN_seq = atomic_fetchadd_int(&stcb->asoc.sending_seq, 1); - stcb->asoc.pr_sctp_cnt++; + strq->chunks_on_queues++; TAILQ_INSERT_TAIL(&stcb->asoc.sent_queue, chk, sctp_next); stcb->asoc.sent_queue_cnt++; stcb->asoc.pr_sctp_cnt++; From owner-svn-src-all@FreeBSD.ORG Fri May 29 13:13:13 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 99301AD5; Fri, 29 May 2015 13:13:13 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 86C4B1B0F; Fri, 29 May 2015 13:13:13 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TDDDwW053277; Fri, 29 May 2015 13:13:13 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TDDD7e053276; Fri, 29 May 2015 13:13:13 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291313.t4TDDD7e053276@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 13:13:13 +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: r283731 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 13:13:13 -0000 Author: tuexen Date: Fri May 29 13:13:12 2015 New Revision: 283731 URL: https://svnweb.freebsd.org/changeset/base/283731 Log: MFC r280440: Fix the bug in the handling of fragmented abandoned SCTP user messages reported in https://code.google.com/p/sctp-refimpl/issues/detail?id=11 Thanks to Lally Singh for reporting it. Modified: stable/10/sys/netinet/sctp_indata.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_indata.c ============================================================================== --- stable/10/sys/netinet/sctp_indata.c Fri May 29 13:11:13 2015 (r283730) +++ stable/10/sys/netinet/sctp_indata.c Fri May 29 13:13:12 2015 (r283731) @@ -2597,12 +2597,14 @@ sctp_process_segment_range(struct sctp_t * cumack trackers for first transmissions, * and retransmissions. */ - if ((tp1->whoTo->find_pseudo_cumack == 1) && (tp1->sent < SCTP_DATAGRAM_RESEND) && + if ((tp1->sent < SCTP_DATAGRAM_RESEND) && + (tp1->whoTo->find_pseudo_cumack == 1) && (tp1->snd_count == 1)) { tp1->whoTo->pseudo_cumack = tp1->rec.data.TSN_seq; tp1->whoTo->find_pseudo_cumack = 0; } - if ((tp1->whoTo->find_rtx_pseudo_cumack == 1) && (tp1->sent < SCTP_DATAGRAM_RESEND) && + if ((tp1->sent < SCTP_DATAGRAM_RESEND) && + (tp1->whoTo->find_rtx_pseudo_cumack == 1) && (tp1->snd_count > 1)) { tp1->whoTo->rtx_pseudo_cumack = tp1->rec.data.TSN_seq; tp1->whoTo->find_rtx_pseudo_cumack = 0; @@ -3512,7 +3514,7 @@ sctp_window_probe_recovery(struct sctp_t if ((tp1->sent >= SCTP_DATAGRAM_ACKED) || (tp1->data == NULL)) { /* TSN's skipped we do NOT move back. */ sctp_misc_ints(SCTP_FLIGHT_LOG_DWN_WP_FWD, - tp1->whoTo->flight_size, + tp1->whoTo ? tp1->whoTo->flight_size : 0, tp1->book_size, (uintptr_t) tp1->whoTo, tp1->rec.data.TSN_seq); From owner-svn-src-all@FreeBSD.ORG Fri May 29 13:18:12 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0AC07CA9; Fri, 29 May 2015 13:18:12 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 E00A01B7A; Fri, 29 May 2015 13:18:11 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TDIBQl054007; Fri, 29 May 2015 13:18:11 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TDIBH0054005; Fri, 29 May 2015 13:18:11 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291318.t4TDIBH0054005@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 13:18:11 +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: r283732 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 13:18:12 -0000 Author: tuexen Date: Fri May 29 13:18:10 2015 New Revision: 283732 URL: https://svnweb.freebsd.org/changeset/base/283732 Log: MFC r280459: Fix two bugs which resulted in a screwed up end point list: * Use a save way to walk throught a list while manipulting it. * Have to appropiate locks in place. Joint work with rrs@ Modified: stable/10/sys/netinet/sctp_pcb.c stable/10/sys/netinet/sctp_usrreq.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_pcb.c ============================================================================== --- stable/10/sys/netinet/sctp_pcb.c Fri May 29 13:13:12 2015 (r283731) +++ stable/10/sys/netinet/sctp_pcb.c Fri May 29 13:18:10 2015 (r283732) @@ -1867,7 +1867,7 @@ sctp_swap_inpcb_for_listen(struct sctp_i { /* For 1-2-1 with port reuse */ struct sctppcbhead *head; - struct sctp_inpcb *tinp; + struct sctp_inpcb *tinp, *ninp; if (sctp_is_feature_off(inp, SCTP_PCB_FLAGS_PORTREUSE)) { /* only works with port reuse on */ @@ -1877,10 +1877,11 @@ sctp_swap_inpcb_for_listen(struct sctp_i return (0); } SCTP_INP_RUNLOCK(inp); + SCTP_INP_INFO_WLOCK(); head = &SCTP_BASE_INFO(sctp_ephash)[SCTP_PCBHASH_ALLADDR(inp->sctp_lport, SCTP_BASE_INFO(hashmark))]; /* Kick out all non-listeners to the TCP hash */ - LIST_FOREACH(tinp, head, sctp_hash) { + LIST_FOREACH_SAFE(tinp, head, sctp_hash, ninp) { if (tinp->sctp_lport != inp->sctp_lport) { continue; } @@ -1908,6 +1909,7 @@ sctp_swap_inpcb_for_listen(struct sctp_i LIST_INSERT_HEAD(head, inp, sctp_hash); SCTP_INP_WUNLOCK(inp); SCTP_INP_RLOCK(inp); + SCTP_INP_INFO_WUNLOCK(); return (0); } Modified: stable/10/sys/netinet/sctp_usrreq.c ============================================================================== --- stable/10/sys/netinet/sctp_usrreq.c Fri May 29 13:13:12 2015 (r283731) +++ stable/10/sys/netinet/sctp_usrreq.c Fri May 29 13:18:10 2015 (r283732) @@ -6965,8 +6965,8 @@ sctp_listen(struct socket *so, int backl #endif SOCK_LOCK(so); error = solisten_proto_check(so); + SOCK_UNLOCK(so); if (error) { - SOCK_UNLOCK(so); SCTP_INP_RUNLOCK(inp); return (error); } @@ -6979,28 +6979,27 @@ sctp_listen(struct socket *so, int backl * move the guy that was listener to the TCP Pool. */ if (sctp_swap_inpcb_for_listen(inp)) { - goto in_use; + SCTP_INP_RUNLOCK(inp); + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EADDRINUSE); + return (EADDRINUSE); } } if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) && (inp->sctp_flags & SCTP_PCB_FLAGS_CONNECTED)) { /* We are already connected AND the TCP model */ -in_use: SCTP_INP_RUNLOCK(inp); - SOCK_UNLOCK(so); SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EADDRINUSE); return (EADDRINUSE); } SCTP_INP_RUNLOCK(inp); if (inp->sctp_flags & SCTP_PCB_FLAGS_UNBOUND) { /* We must do a bind. */ - SOCK_UNLOCK(so); if ((error = sctp_inpcb_bind(so, NULL, NULL, p))) { /* bind error, probably perm */ return (error); } - SOCK_LOCK(so); } + SOCK_LOCK(so); /* It appears for 7.0 and on, we must always call this. */ solisten_proto(so, backlog); if (inp->sctp_flags & SCTP_PCB_FLAGS_UDPTYPE) { From owner-svn-src-all@FreeBSD.ORG Fri May 29 13:20:40 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0B6CBF50; Fri, 29 May 2015 13:20:40 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 EDC371C1E; Fri, 29 May 2015 13:20:39 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TDKdKv055073; Fri, 29 May 2015 13:20:39 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TDKd8N055072; Fri, 29 May 2015 13:20:39 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291320.t4TDKd8N055072@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 13:20:39 +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: r283733 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 13:20:40 -0000 Author: tuexen Date: Fri May 29 13:20:39 2015 New Revision: 283733 URL: https://svnweb.freebsd.org/changeset/base/283733 Log: MFC r280634: Use the reference count of the right SCTP inp. Joint work with rrs@ Modified: stable/10/sys/netinet/sctp_usrreq.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_usrreq.c ============================================================================== --- stable/10/sys/netinet/sctp_usrreq.c Fri May 29 13:18:10 2015 (r283732) +++ stable/10/sys/netinet/sctp_usrreq.c Fri May 29 13:20:39 2015 (r283733) @@ -6953,7 +6953,7 @@ sctp_listen(struct socket *so, int backl SCTP_INP_DECR_REF(tinp); return (EADDRINUSE); } else if (tinp) { - SCTP_INP_DECR_REF(inp); + SCTP_INP_DECR_REF(tinp); } } } From owner-svn-src-all@FreeBSD.ORG Fri May 29 13:23:17 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A11D9183; Fri, 29 May 2015 13:23:17 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 8F0AE1DC0; Fri, 29 May 2015 13:23:17 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TDNHUt058549; Fri, 29 May 2015 13:23:17 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TDNHto058548; Fri, 29 May 2015 13:23:17 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291323.t4TDNHto058548@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 13:23: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: r283734 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 13:23:17 -0000 Author: tuexen Date: Fri May 29 13:23:16 2015 New Revision: 283734 URL: https://svnweb.freebsd.org/changeset/base/283734 Log: MFC r280642: Make sure that we don't free an SCTP shared key too early. Thanks to Pouyan Sepehrdad from Qualcomm Product Security Initiative for reporting the issue. Modified: stable/10/sys/netinet/sctp_auth.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_auth.c ============================================================================== --- stable/10/sys/netinet/sctp_auth.c Fri May 29 13:20:39 2015 (r283733) +++ stable/10/sys/netinet/sctp_auth.c Fri May 29 13:23:16 2015 (r283734) @@ -576,13 +576,12 @@ sctp_auth_key_release(struct sctp_tcb *s /* decrement the ref count */ if (skey) { - sctp_free_sharedkey(skey); SCTPDBG(SCTP_DEBUG_AUTH2, "%s: stcb %p key %u refcount release to %d\n", __FUNCTION__, (void *)stcb, key_id, skey->refcount); /* see if a notification should be generated */ - if ((skey->refcount <= 1) && (skey->deactivated)) { + if ((skey->refcount <= 2) && (skey->deactivated)) { /* notify ULP that key is no longer used */ sctp_ulp_notify(SCTP_NOTIFY_AUTH_FREE_KEY, stcb, key_id, 0, so_locked); @@ -590,6 +589,7 @@ sctp_auth_key_release(struct sctp_tcb *s "%s: stcb %p key %u no longer used, %d\n", __FUNCTION__, (void *)stcb, key_id, skey->refcount); } + sctp_free_sharedkey(skey); } } From owner-svn-src-all@FreeBSD.ORG Fri May 29 13:24:22 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5EEA22D0; Fri, 29 May 2015 13:24:22 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.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 4B81D1DD2; Fri, 29 May 2015 13:24:22 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TDOM2S058766; Fri, 29 May 2015 13:24:22 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TDOHLt058740; Fri, 29 May 2015 13:24:17 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201505291324.t4TDOHLt058740@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Fri, 29 May 2015 13:24:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283735 - in head/sys: amd64/amd64 amd64/ia32 dev/pci kern ufs/ffs ufs/ufs x86/iommu X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 13:24:22 -0000 Author: kib Date: Fri May 29 13:24:17 2015 New Revision: 283735 URL: https://svnweb.freebsd.org/changeset/base/283735 Log: Remove several write-only variables, all reported by the gcc 4.9 buildkernel run. Some of them were write-only under some kernel options, e.g. variables keeping values only used by CTR() macros. It costs nothing to the code readability and correctness to eliminate the warnings in those cases too by removing the local cached values used only for single-access. Review: https://reviews.freebsd.org/D2665 Reviewed by: rodrigc Looked at by: bjk Sponsored by: The FreeBSD Foundation MFC after: 1 week Modified: head/sys/amd64/amd64/pmap.c head/sys/amd64/amd64/vm_machdep.c head/sys/amd64/ia32/ia32_reg.c head/sys/dev/pci/pci.c head/sys/kern/kern_exit.c head/sys/kern/kern_synch.c head/sys/kern/vfs_cluster.c head/sys/kern/vfs_init.c head/sys/ufs/ffs/ffs_softdep.c head/sys/ufs/ffs/ffs_suspend.c head/sys/ufs/ffs/ffs_vfsops.c head/sys/ufs/ffs/ffs_vnops.c head/sys/ufs/ufs/ufs_bmap.c head/sys/ufs/ufs/ufs_dirhash.c head/sys/x86/iommu/busdma_dmar.c head/sys/x86/iommu/intel_idpgtbl.c Modified: head/sys/amd64/amd64/pmap.c ============================================================================== --- head/sys/amd64/amd64/pmap.c Fri May 29 13:23:16 2015 (r283734) +++ head/sys/amd64/amd64/pmap.c Fri May 29 13:24:17 2015 (r283735) @@ -3935,7 +3935,6 @@ pmap_promote_pde(pmap_t pmap, pd_entry_t pd_entry_t newpde; pt_entry_t *firstpte, oldpte, pa, *pte; pt_entry_t PG_G, PG_A, PG_M, PG_RW, PG_V; - vm_offset_t oldpteva; vm_page_t mpte; int PG_PTE_CACHE; @@ -3995,10 +3994,9 @@ setpte: if (!atomic_cmpset_long(pte, oldpte, oldpte & ~PG_RW)) goto setpte; oldpte &= ~PG_RW; - oldpteva = (oldpte & PG_FRAME & PDRMASK) | - (va & ~PDRMASK); CTR2(KTR_PMAP, "pmap_promote_pde: protect for va %#lx" - " in pmap %p", oldpteva, pmap); + " in pmap %p", (oldpte & PG_FRAME & PDRMASK) | + (va & ~PDRMASK), pmap); } if ((oldpte & PG_PTE_PROMOTE) != (newpde & PG_PTE_PROMOTE)) { atomic_add_long(&pmap_pde_p_failures, 1); Modified: head/sys/amd64/amd64/vm_machdep.c ============================================================================== --- head/sys/amd64/amd64/vm_machdep.c Fri May 29 13:23:16 2015 (r283734) +++ head/sys/amd64/amd64/vm_machdep.c Fri May 29 13:24:17 2015 (r283735) @@ -155,7 +155,6 @@ cpu_fork(td1, p2, td2, flags) struct pcb *pcb2; struct mdproc *mdp1, *mdp2; struct proc_ldt *pldt; - pmap_t pmap2; p1 = td1->td_proc; if ((flags & RFPROC) == 0) { @@ -218,7 +217,6 @@ cpu_fork(td1, p2, td2, flags) * Set registers for trampoline to user mode. Leave space for the * return address on stack. These are the kernel mode register values. */ - pmap2 = vmspace_pmap(p2->p_vmspace); pcb2->pcb_r12 = (register_t)fork_return; /* fork_trampoline argument */ pcb2->pcb_rbp = 0; pcb2->pcb_rsp = (register_t)td2->td_frame - sizeof(void *); Modified: head/sys/amd64/ia32/ia32_reg.c ============================================================================== --- head/sys/amd64/ia32/ia32_reg.c Fri May 29 13:23:16 2015 (r283734) +++ head/sys/amd64/ia32/ia32_reg.c Fri May 29 13:24:17 2015 (r283735) @@ -79,11 +79,9 @@ __FBSDID("$FreeBSD$"); int fill_regs32(struct thread *td, struct reg32 *regs) { - struct pcb *pcb; struct trapframe *tp; tp = td->td_frame; - pcb = td->td_pcb; if (tp->tf_flags & TF_HASSEGS) { regs->r_gs = tp->tf_gs; regs->r_fs = tp->tf_fs; @@ -113,18 +111,16 @@ fill_regs32(struct thread *td, struct re int set_regs32(struct thread *td, struct reg32 *regs) { - struct pcb *pcb; struct trapframe *tp; tp = td->td_frame; if (!EFL_SECURE(regs->r_eflags, tp->tf_rflags) || !CS_SECURE(regs->r_cs)) return (EINVAL); - pcb = td->td_pcb; tp->tf_gs = regs->r_gs; tp->tf_fs = regs->r_fs; tp->tf_es = regs->r_es; tp->tf_ds = regs->r_ds; - set_pcb_flags(pcb, PCB_FULL_IRET); + set_pcb_flags(td->td_pcb, PCB_FULL_IRET); tp->tf_flags = TF_HASSEGS; tp->tf_rdi = regs->r_edi; tp->tf_rsi = regs->r_esi; Modified: head/sys/dev/pci/pci.c ============================================================================== --- head/sys/dev/pci/pci.c Fri May 29 13:23:16 2015 (r283734) +++ head/sys/dev/pci/pci.c Fri May 29 13:24:17 2015 (r283735) @@ -2389,7 +2389,7 @@ pci_set_powerstate_method(device_t dev, struct pci_devinfo *dinfo = device_get_ivars(child); pcicfgregs *cfg = &dinfo->cfg; uint16_t status; - int result, oldstate, highest, delay; + int oldstate, highest, delay; if (cfg->pp.pp_cap == 0) return (EOPNOTSUPP); @@ -2424,7 +2424,6 @@ pci_set_powerstate_method(device_t dev, delay = 0; status = PCI_READ_CONFIG(dev, child, cfg->pp.pp_status, 2) & ~PCIM_PSTAT_DMASK; - result = 0; switch (state) { case PCI_POWERSTATE_D0: status |= PCIM_PSTAT_D0; @@ -2989,7 +2988,6 @@ static void pci_ata_maps(device_t bus, device_t dev, struct resource_list *rl, int force, uint32_t prefetchmask) { - struct resource *r; int rid, type, progif; #if 0 /* if this device supports PCI native addressing use it */ @@ -3012,11 +3010,11 @@ pci_ata_maps(device_t bus, device_t dev, } else { rid = PCIR_BAR(0); resource_list_add(rl, type, rid, 0x1f0, 0x1f7, 8); - r = resource_list_reserve(rl, bus, dev, type, &rid, 0x1f0, + (void)resource_list_reserve(rl, bus, dev, type, &rid, 0x1f0, 0x1f7, 8, 0); rid = PCIR_BAR(1); resource_list_add(rl, type, rid, 0x3f6, 0x3f6, 1); - r = resource_list_reserve(rl, bus, dev, type, &rid, 0x3f6, + (void)resource_list_reserve(rl, bus, dev, type, &rid, 0x3f6, 0x3f6, 1, 0); } if (progif & PCIP_STORAGE_IDE_MODESEC) { @@ -3027,11 +3025,11 @@ pci_ata_maps(device_t bus, device_t dev, } else { rid = PCIR_BAR(2); resource_list_add(rl, type, rid, 0x170, 0x177, 8); - r = resource_list_reserve(rl, bus, dev, type, &rid, 0x170, + (void)resource_list_reserve(rl, bus, dev, type, &rid, 0x170, 0x177, 8, 0); rid = PCIR_BAR(3); resource_list_add(rl, type, rid, 0x376, 0x376, 1); - r = resource_list_reserve(rl, bus, dev, type, &rid, 0x376, + (void)resource_list_reserve(rl, bus, dev, type, &rid, 0x376, 0x376, 1, 0); } pci_add_map(bus, dev, PCIR_BAR(4), rl, force, @@ -3727,7 +3725,6 @@ pci_detach(device_t dev) static void pci_set_power_child(device_t dev, device_t child, int state) { - struct pci_devinfo *dinfo; device_t pcib; int dstate; @@ -3739,7 +3736,6 @@ pci_set_power_child(device_t dev, device * are handled separately. */ pcib = device_get_parent(dev); - dinfo = device_get_ivars(child); dstate = state; if (device_is_attached(child) && PCIB_POWER_FOR_SLEEP(pcib, child, &dstate) == 0) Modified: head/sys/kern/kern_exit.c ============================================================================== --- head/sys/kern/kern_exit.c Fri May 29 13:23:16 2015 (r283734) +++ head/sys/kern/kern_exit.c Fri May 29 13:24:17 2015 (r283735) @@ -964,12 +964,10 @@ proc_to_reap(struct thread *td, struct p int *status, int options, struct __wrusage *wrusage, siginfo_t *siginfo, int check_only) { - struct proc *q; struct rusage *rup; sx_assert(&proctree_lock, SA_XLOCKED); - q = td->td_proc; PROC_LOCK(p); switch (idtype) { Modified: head/sys/kern/kern_synch.c ============================================================================== --- head/sys/kern/kern_synch.c Fri May 29 13:23:16 2015 (r283734) +++ head/sys/kern/kern_synch.c Fri May 29 13:24:17 2015 (r283735) @@ -414,11 +414,9 @@ mi_switch(int flags, struct thread *newt { uint64_t runtime, new_switchtime; struct thread *td; - struct proc *p; td = curthread; /* XXX */ THREAD_LOCK_ASSERT(td, MA_OWNED | MA_NOTRECURSED); - p = td->td_proc; /* XXX */ KASSERT(!TD_ON_RUNQ(td), ("mi_switch: called by old code")); #ifdef INVARIANTS if (!TD_ON_LOCK(td) && !TD_IS_RUNNING(td)) @@ -458,7 +456,7 @@ mi_switch(int flags, struct thread *newt PCPU_INC(cnt.v_swtch); PCPU_SET(switchticks, ticks); CTR4(KTR_PROC, "mi_switch: old thread %ld (td_sched %p, pid %ld, %s)", - td->td_tid, td->td_sched, p->p_pid, td->td_name); + td->td_tid, td->td_sched, td->td_proc->p_pid, td->td_name); #if (KTR_COMPILE & KTR_SCHED) != 0 if (TD_IS_IDLETHREAD(td)) KTR_STATE1(KTR_SCHED, "thread", sched_tdname(td), "idle", @@ -474,7 +472,7 @@ mi_switch(int flags, struct thread *newt "prio:%d", td->td_priority); CTR4(KTR_PROC, "mi_switch: new thread %ld (td_sched %p, pid %ld, %s)", - td->td_tid, td->td_sched, p->p_pid, td->td_name); + td->td_tid, td->td_sched, td->td_proc->p_pid, td->td_name); /* * If the last thread was exiting, finish cleaning it up. Modified: head/sys/kern/vfs_cluster.c ============================================================================== --- head/sys/kern/vfs_cluster.c Fri May 29 13:23:16 2015 (r283734) +++ head/sys/kern/vfs_cluster.c Fri May 29 13:24:17 2015 (r283735) @@ -310,7 +310,6 @@ static struct buf * cluster_rbuild(struct vnode *vp, u_quad_t filesize, daddr_t lbn, daddr_t blkno, long size, int run, int gbflags, struct buf *fbp) { - struct bufobj *bo; struct buf *bp, *tbp; daddr_t bn; off_t off; @@ -376,7 +375,6 @@ cluster_rbuild(struct vnode *vp, u_quad_ bp->b_npages = 0; inc = btodb(size); - bo = &vp->v_bufobj; for (bn = blkno, i = 0; i < run; ++i, bn += inc) { if (i == 0) { VM_OBJECT_WLOCK(tbp->b_bufobj->bo_object); Modified: head/sys/kern/vfs_init.c ============================================================================== --- head/sys/kern/vfs_init.c Fri May 29 13:23:16 2015 (r283734) +++ head/sys/kern/vfs_init.c Fri May 29 13:24:17 2015 (r283735) @@ -311,9 +311,7 @@ static int vfs_unregister(struct vfsconf *vfc) { struct vfsconf *vfsp; - int error, i, maxtypenum; - - i = vfc->vfc_typenum; + int error, maxtypenum; vfsconf_lock(); vfsp = vfs_byname_locked(vfc->vfc_name); Modified: head/sys/ufs/ffs/ffs_softdep.c ============================================================================== --- head/sys/ufs/ffs/ffs_softdep.c Fri May 29 13:23:16 2015 (r283734) +++ head/sys/ufs/ffs/ffs_softdep.c Fri May 29 13:24:17 2015 (r283735) @@ -4691,12 +4691,10 @@ softdep_setup_dotdot_link(dp, ip) struct inodedep *inodedep; struct jaddref *jaddref; struct vnode *dvp; - struct vnode *vp; KASSERT(MOUNTEDSOFTDEP(UFSTOVFS(dp->i_ump)) != 0, ("softdep_setup_dotdot_link called on non-softdep filesystem")); dvp = ITOV(dp); - vp = ITOV(ip); jaddref = NULL; /* * We don't set MKDIR_PARENT as this is not tied to a mkdir and @@ -7052,7 +7050,6 @@ trunc_dependencies(ip, freeblks, lastlbn struct bufobj *bo; struct vnode *vp; struct buf *bp; - struct fs *fs; int blkoff; /* @@ -7061,7 +7058,6 @@ trunc_dependencies(ip, freeblks, lastlbn * Once they are all there, walk the list and get rid of * any dependencies. */ - fs = ip->i_fs; vp = ITOV(ip); bo = &vp->v_bufobj; BO_LOCK(bo); @@ -9493,12 +9489,10 @@ handle_written_sbdep(sbdep, bp) struct buf *bp; { struct inodedep *inodedep; - struct mount *mp; struct fs *fs; LOCK_OWNED(sbdep->sb_ump); fs = sbdep->sb_fs; - mp = UFSTOVFS(sbdep->sb_ump); /* * If the superblock doesn't match the in-memory list start over. */ Modified: head/sys/ufs/ffs/ffs_suspend.c ============================================================================== --- head/sys/ufs/ffs/ffs_suspend.c Fri May 29 13:23:16 2015 (r283734) +++ head/sys/ufs/ffs/ffs_suspend.c Fri May 29 13:24:17 2015 (r283735) @@ -177,7 +177,6 @@ out: static int ffs_susp_suspend(struct mount *mp) { - struct fs *fs; struct ufsmount *ump; int error; @@ -189,7 +188,6 @@ ffs_susp_suspend(struct mount *mp) return (EBUSY); ump = VFSTOUFS(mp); - fs = ump->um_fs; /* * Make sure the calling thread is permitted to access the mounted Modified: head/sys/ufs/ffs/ffs_vfsops.c ============================================================================== --- head/sys/ufs/ffs/ffs_vfsops.c Fri May 29 13:23:16 2015 (r283734) +++ head/sys/ufs/ffs/ffs_vfsops.c Fri May 29 13:24:17 2015 (r283735) @@ -1486,7 +1486,7 @@ ffs_sync(mp, waitfor) struct inode *ip; struct ufsmount *ump = VFSTOUFS(mp); struct fs *fs; - int error, count, wait, lockreq, allerror = 0; + int error, count, lockreq, allerror = 0; int suspend; int suspended; int secondary_writes; @@ -1495,7 +1495,6 @@ ffs_sync(mp, waitfor) int softdep_accdeps; struct bufobj *bo; - wait = 0; suspend = 0; suspended = 0; td = curthread; @@ -1517,10 +1516,8 @@ ffs_sync(mp, waitfor) suspend = 1; waitfor = MNT_WAIT; } - if (waitfor == MNT_WAIT) { - wait = 1; + if (waitfor == MNT_WAIT) lockreq = LK_EXCLUSIVE; - } lockreq |= LK_INTERLOCK | LK_SLEEPFAIL; loop: /* Grab snapshot of secondary write counts */ @@ -2024,7 +2021,6 @@ static int ffs_bufwrite(struct buf *bp) { struct buf *newbp; - int oldflags; CTR3(KTR_BUF, "bufwrite(%p) vp %p flags %X", bp, bp->b_vp, bp->b_flags); if (bp->b_flags & B_INVAL) { @@ -2032,8 +2028,6 @@ ffs_bufwrite(struct buf *bp) return (0); } - oldflags = bp->b_flags; - if (!BUF_ISLOCKED(bp)) panic("bufwrite: buffer is not busy???"); /* Modified: head/sys/ufs/ffs/ffs_vnops.c ============================================================================== --- head/sys/ufs/ffs/ffs_vnops.c Fri May 29 13:23:16 2015 (r283734) +++ head/sys/ufs/ffs/ffs_vnops.c Fri May 29 13:24:17 2015 (r283735) @@ -1366,11 +1366,6 @@ struct vop_openextattr_args { }; */ { - struct inode *ip; - struct fs *fs; - - ip = VTOI(ap->a_vp); - fs = ip->i_fs; if (ap->a_vp->v_type == VCHR || ap->a_vp->v_type == VBLK) return (EOPNOTSUPP); @@ -1394,11 +1389,6 @@ struct vop_closeextattr_args { }; */ { - struct inode *ip; - struct fs *fs; - - ip = VTOI(ap->a_vp); - fs = ip->i_fs; if (ap->a_vp->v_type == VCHR || ap->a_vp->v_type == VBLK) return (EOPNOTSUPP); @@ -1512,13 +1502,11 @@ vop_getextattr { */ { struct inode *ip; - struct fs *fs; u_char *eae, *p; unsigned easize; int error, ealen; ip = VTOI(ap->a_vp); - fs = ip->i_fs; if (ap->a_vp->v_type == VCHR || ap->a_vp->v_type == VBLK) return (EOPNOTSUPP); @@ -1567,14 +1555,12 @@ vop_listextattr { */ { struct inode *ip; - struct fs *fs; u_char *eae, *p, *pe, *pn; unsigned easize; uint32_t ul; int error, ealen; ip = VTOI(ap->a_vp); - fs = ip->i_fs; if (ap->a_vp->v_type == VCHR || ap->a_vp->v_type == VBLK) return (EOPNOTSUPP); Modified: head/sys/ufs/ufs/ufs_bmap.c ============================================================================== --- head/sys/ufs/ufs/ufs_bmap.c Fri May 29 13:23:16 2015 (r283734) +++ head/sys/ufs/ufs/ufs_bmap.c Fri May 29 13:24:17 2015 (r283735) @@ -114,7 +114,6 @@ ufs_bmaparray(vp, bn, bnp, nbp, runp, ru struct buf *bp; struct ufsmount *ump; struct mount *mp; - struct vnode *devvp; struct indir a[NIADDR+1], *ap; ufs2_daddr_t daddr; ufs_lbn_t metalbn; @@ -125,7 +124,6 @@ ufs_bmaparray(vp, bn, bnp, nbp, runp, ru ip = VTOI(vp); mp = vp->v_mount; ump = VFSTOUFS(mp); - devvp = ump->um_devvp; if (runp) { maxrun = mp->mnt_iosize_max / mp->mnt_stat.f_iosize - 1; Modified: head/sys/ufs/ufs/ufs_dirhash.c ============================================================================== --- head/sys/ufs/ufs/ufs_dirhash.c Fri May 29 13:23:16 2015 (r283734) +++ head/sys/ufs/ufs/ufs_dirhash.c Fri May 29 13:24:17 2015 (r283735) @@ -190,9 +190,7 @@ ufsdirhash_create(struct inode *ip) struct dirhash *ndh; struct dirhash *dh; struct vnode *vp; - int error; - error = 0; ndh = dh = NULL; vp = ip->i_vnode; for (;;) { @@ -274,11 +272,9 @@ static struct dirhash * ufsdirhash_acquire(struct inode *ip) { struct dirhash *dh; - struct vnode *vp; ASSERT_VOP_ELOCKED(ip->i_vnode, __FUNCTION__); - vp = ip->i_vnode; dh = ip->i_dirhash; if (dh == NULL) return (NULL); Modified: head/sys/x86/iommu/busdma_dmar.c ============================================================================== --- head/sys/x86/iommu/busdma_dmar.c Fri May 29 13:23:16 2015 (r283734) +++ head/sys/x86/iommu/busdma_dmar.c Fri May 29 13:24:17 2015 (r283735) @@ -818,7 +818,6 @@ dmar_bus_task_dmamap(void *arg, int pend struct bus_dma_tag_dmar *tag; struct bus_dmamap_dmar *map; struct dmar_unit *unit; - struct dmar_ctx *ctx; unit = arg; DMAR_LOCK(unit); @@ -826,7 +825,6 @@ dmar_bus_task_dmamap(void *arg, int pend TAILQ_REMOVE(&unit->delayed_maps, map, delay_link); DMAR_UNLOCK(unit); tag = map->tag; - ctx = map->tag->ctx; map->cansleep = true; map->locked = false; bus_dmamap_load_mem((bus_dma_tag_t)tag, (bus_dmamap_t)map, @@ -847,9 +845,7 @@ dmar_bus_task_dmamap(void *arg, int pend static void dmar_bus_schedule_dmamap(struct dmar_unit *unit, struct bus_dmamap_dmar *map) { - struct dmar_ctx *ctx; - ctx = map->tag->ctx; map->locked = false; DMAR_LOCK(unit); TAILQ_INSERT_TAIL(&unit->delayed_maps, map, delay_link); Modified: head/sys/x86/iommu/intel_idpgtbl.c ============================================================================== --- head/sys/x86/iommu/intel_idpgtbl.c Fri May 29 13:23:16 2015 (r283734) +++ head/sys/x86/iommu/intel_idpgtbl.c Fri May 29 13:24:17 2015 (r283735) @@ -108,7 +108,7 @@ static void ctx_idmap_nextlvl(struct idpgtbl *tbl, int lvl, vm_pindex_t idx, dmar_gaddr_t addr) { - vm_page_t m, m1; + vm_page_t m1; dmar_pte_t *pte; struct sf_buf *sf; dmar_gaddr_t f, pg_sz; @@ -118,7 +118,7 @@ ctx_idmap_nextlvl(struct idpgtbl *tbl, i VM_OBJECT_ASSERT_LOCKED(tbl->pgtbl_obj); if (addr >= tbl->maxaddr) return; - m = dmar_pgalloc(tbl->pgtbl_obj, idx, DMAR_PGF_OBJL | DMAR_PGF_WAITOK | + (void)dmar_pgalloc(tbl->pgtbl_obj, idx, DMAR_PGF_OBJL | DMAR_PGF_WAITOK | DMAR_PGF_ZERO); base = idx * DMAR_NPTEPG + 1; /* Index of the first child page of idx */ pg_sz = pglvl_page_size(tbl->pglvl, lvl); @@ -598,7 +598,7 @@ ctx_unmap_buf_locked(struct dmar_ctx *ct dmar_pte_t *pte; struct sf_buf *sf; vm_pindex_t idx; - dmar_gaddr_t pg_sz, base1, size1; + dmar_gaddr_t pg_sz; int lvl; DMAR_CTX_ASSERT_PGLOCKED(ctx); @@ -625,8 +625,6 @@ ctx_unmap_buf_locked(struct dmar_ctx *ct KASSERT((flags & ~DMAR_PGF_WAITOK) == 0, ("invalid flags %x", flags)); pg_sz = 0; /* silence gcc */ - base1 = base; - size1 = size; flags |= DMAR_PGF_OBJL; TD_PREP_PINNED_ASSERT; From owner-svn-src-all@FreeBSD.ORG Fri May 29 13:26:07 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 09127455; Fri, 29 May 2015 13:26:07 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 D01D71DFF; Fri, 29 May 2015 13:26:06 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TDQ67Q059162; Fri, 29 May 2015 13:26:06 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TDQ66m059159; Fri, 29 May 2015 13:26:06 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291326.t4TDQ66m059159@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 13:26:06 +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: r283736 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 13:26:07 -0000 Author: tuexen Date: Fri May 29 13:26:05 2015 New Revision: 283736 URL: https://svnweb.freebsd.org/changeset/base/283736 Log: MFC r280714: Improve the selection of the destination address of SACK chunks. This fixes https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=196755 and is joint work with rrs@. Modified: stable/10/sys/netinet/sctp_output.c stable/10/sys/netinet/sctp_structs.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_output.c ============================================================================== --- stable/10/sys/netinet/sctp_output.c Fri May 29 13:24:17 2015 (r283735) +++ stable/10/sys/netinet/sctp_output.c Fri May 29 13:26:05 2015 (r283736) @@ -10425,32 +10425,17 @@ sctp_send_sack(struct sctp_tcb *stcb, in a_chk->sent = SCTP_DATAGRAM_UNSENT; a_chk->whoTo = NULL; - if ((asoc->numduptsns) || - (!(asoc->last_data_chunk_from->dest_state & SCTP_ADDR_REACHABLE))) { + if (!(asoc->last_data_chunk_from->dest_state & SCTP_ADDR_REACHABLE)) { /*- - * Ok, we have some duplicates or the destination for the - * sack is unreachable, lets see if we can select an - * alternate than asoc->last_data_chunk_from + * Ok, the destination for the SACK is unreachable, lets see if + * we can select an alternate to asoc->last_data_chunk_from */ - if ((asoc->last_data_chunk_from->dest_state & SCTP_ADDR_REACHABLE) && - (asoc->used_alt_onsack > asoc->numnets)) { - /* We used an alt last time, don't this time */ - a_chk->whoTo = NULL; - } else { - asoc->used_alt_onsack++; - a_chk->whoTo = sctp_find_alternate_net(stcb, asoc->last_data_chunk_from, 0); - } + a_chk->whoTo = sctp_find_alternate_net(stcb, asoc->last_data_chunk_from, 0); if (a_chk->whoTo == NULL) { /* Nope, no alternate */ a_chk->whoTo = asoc->last_data_chunk_from; - asoc->used_alt_onsack = 0; } } else { - /* - * No duplicates so we use the last place we received data - * from. - */ - asoc->used_alt_onsack = 0; a_chk->whoTo = asoc->last_data_chunk_from; } if (a_chk->whoTo) { Modified: stable/10/sys/netinet/sctp_structs.h ============================================================================== --- stable/10/sys/netinet/sctp_structs.h Fri May 29 13:24:17 2015 (r283735) +++ stable/10/sys/netinet/sctp_structs.h Fri May 29 13:26:05 2015 (r283736) @@ -1174,7 +1174,6 @@ struct sctp_association { struct sctp_scoping scope; /* flags to handle send alternate net tracking */ - uint8_t used_alt_onsack; uint8_t used_alt_asconfack; uint8_t fast_retran_loss_recovery; uint8_t sat_t3_loss_recovery; From owner-svn-src-all@FreeBSD.ORG Fri May 29 13:28:25 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id AA5EE64E; Fri, 29 May 2015 13:28:25 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 983C11E2D; Fri, 29 May 2015 13:28:25 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TDSPZl059498; Fri, 29 May 2015 13:28:25 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TDSPVx059497; Fri, 29 May 2015 13:28:25 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291328.t4TDSPVx059497@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 13:28:25 +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: r283737 - stable/10/lib/libc/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-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 13:28:25 -0000 Author: tuexen Date: Fri May 29 13:28:24 2015 New Revision: 283737 URL: https://svnweb.freebsd.org/changeset/base/283737 Log: MFC r280782: Add an SCTP symbol which was missed in https://svnweb.freebsd.org/base?view=revision&revision=169622 This fixes https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=197783 Thanks to Jukka Ukkonen for reporting the bug and providing a fix. Modified: stable/10/lib/libc/net/Symbol.map Directory Properties: stable/10/ (props changed) Modified: stable/10/lib/libc/net/Symbol.map ============================================================================== --- stable/10/lib/libc/net/Symbol.map Fri May 29 13:26:05 2015 (r283736) +++ stable/10/lib/libc/net/Symbol.map Fri May 29 13:28:24 2015 (r283737) @@ -124,6 +124,7 @@ FBSD_1.0 { in6addr_nodelocal_allnodes; in6addr_linklocal_allnodes; sctp_getaddrlen; + sctp_getassocid; sctp_bindx; sctp_connectx; sctp_peeloff; From owner-svn-src-all@FreeBSD.ORG Fri May 29 13:30:38 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B4E9A7C5; Fri, 29 May 2015 13:30:38 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 A31F51E97; Fri, 29 May 2015 13:30:38 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TDUcJF060621; Fri, 29 May 2015 13:30:38 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TDUcYZ060620; Fri, 29 May 2015 13:30:38 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291330.t4TDUcYZ060620@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 13:30:38 +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: r283738 - stable/10/usr.bin/sockstat X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 13:30:38 -0000 Author: tuexen Date: Fri May 29 13:30:37 2015 New Revision: 283738 URL: https://svnweb.freebsd.org/changeset/base/283738 Log: MFC r281202: The code says "or", not "either or". So fix the documentation. Modified: stable/10/usr.bin/sockstat/sockstat.1 Directory Properties: stable/10/ (props changed) Modified: stable/10/usr.bin/sockstat/sockstat.1 ============================================================================== --- stable/10/usr.bin/sockstat/sockstat.1 Fri May 29 13:28:24 2015 (r283737) +++ stable/10/usr.bin/sockstat/sockstat.1 Fri May 29 13:30:37 2015 (r283738) @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 16, 2012 +.Dd April 7, 2015 .Dt SOCKSTAT 1 .Os .Sh NAME @@ -69,7 +69,7 @@ or do not contain the IPv6 loopback addr .It Fl l Show listening sockets. .It Fl p Ar ports -Only show Internet sockets if either the local or foreign port number +Only show Internet sockets if the local or foreign port number is on the specified list. The .Ar ports From owner-svn-src-all@FreeBSD.ORG Fri May 29 13:32:09 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0FF0A9EE; Fri, 29 May 2015 13:32:09 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 F1A481043; Fri, 29 May 2015 13:32:08 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TDW8xk063778; Fri, 29 May 2015 13:32:08 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TDW80S063777; Fri, 29 May 2015 13:32:08 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291332.t4TDW80S063777@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 13:32:08 +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: r283739 - stable/10/lib/libc/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-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 13:32:09 -0000 Author: tuexen Date: Fri May 29 13:32:08 2015 New Revision: 283739 URL: https://svnweb.freebsd.org/changeset/base/283739 Log: MFC r281884: A complete user message is signalled with the MSG_EOR flag, not the MSG_EOF flag. Thanks to Valentin Nechayev for reporting the issue. Modified: stable/10/lib/libc/net/sctp_recvmsg.3 Directory Properties: stable/10/ (props changed) Modified: stable/10/lib/libc/net/sctp_recvmsg.3 ============================================================================== --- stable/10/lib/libc/net/sctp_recvmsg.3 Fri May 29 13:30:37 2015 (r283738) +++ stable/10/lib/libc/net/sctp_recvmsg.3 Fri May 29 13:32:08 2015 (r283739) @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd August 13, 2007 +.Dd April 23, 2015 .Dt SCTP_RECVMSG 3 .Os .Sh NAME @@ -98,13 +98,13 @@ receive buffer, then the argument will .Em not have the -.Dv MSG_EOF +.Dv MSG_EOR flag applied. If the message is a complete message then the .Fa flags argument will have -.Dv MSG_EOF +.Dv MSG_EOR set. Locally detected errors are indicated by a return value of -1 with From owner-svn-src-all@FreeBSD.ORG Fri May 29 13:33:45 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 304C4B79; Fri, 29 May 2015 13:33:45 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail109.syd.optusnet.com.au (mail109.syd.optusnet.com.au [211.29.132.80]) by mx1.freebsd.org (Postfix) with ESMTP id E96D31066; Fri, 29 May 2015 13:33:44 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from c211-30-166-197.carlnfd1.nsw.optusnet.com.au (c211-30-166-197.carlnfd1.nsw.optusnet.com.au [211.30.166.197]) by mail109.syd.optusnet.com.au (Postfix) with ESMTPS id 012F2D62170; Fri, 29 May 2015 23:13:33 +1000 (AEST) Date: Fri, 29 May 2015 23:13:33 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Andrew Turner cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283694 - head/lib/libc/gen In-Reply-To: <201505290926.t4T9QBVE030151@svn.freebsd.org> Message-ID: <20150529221743.D1965@besplex.bde.org> References: <201505290926.t4T9QBVE030151@svn.freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Optus-CM-Score: 0 X-Optus-CM-Analysis: v=2.1 cv=QeFf4Krv c=1 sm=1 tr=0 a=KA6XNC2GZCFrdESI5ZmdjQ==:117 a=PO7r1zJSAAAA:8 a=kj9zAlcOel0A:10 a=JzwRw_2MAAAA:8 a=_BaMDy3rIB0_iexLCQAA:9 a=CjuIK1q_8ugA:10 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 13:33:45 -0000 On Fri, 29 May 2015, Andrew Turner wrote: > Log: > Fix __fpclassifyl when double == long double. As with r283693 this is > needed on ARM and PowerPC. > > MFC after: 1 Week > > Modified: > head/lib/libc/gen/fpclassify.c > > Modified: head/lib/libc/gen/fpclassify.c > ============================================================================== > --- head/lib/libc/gen/fpclassify.c Fri May 29 09:23:20 2015 (r283693) > +++ head/lib/libc/gen/fpclassify.c Fri May 29 09:26:10 2015 (r283694) > @@ -29,6 +29,8 @@ > > #include > > +#include > + > #include > #include > > @@ -84,10 +86,18 @@ __fpclassifyl(long double e) > return (FP_SUBNORMAL); > } > mask_nbit_l(u); /* Mask normalization bit if applicable. */ > +#if LDBL_MANT_DIG == 53 > + if (u.bits.exp == 2047) { > + if ((u.bits.manl | u.bits.manh) == 0) > + return (FP_INFINITE); > + return (FP_NAN); > + } > +#else > if (u.bits.exp == 32767) { > if ((u.bits.manl | u.bits.manh) == 0) > return (FP_INFINITE); > return (FP_NAN); > } > +#endif > return (FP_NORMAL); > } This can be written without any ifdefs by spelling 2047 and 32767 as LBDL_MUMBLE. However, I prefer explicit values, with masks spelled in hex as 0x7fff or 7ff, not as above or as (2 * LDBL_MAX_EXP - 1). However2, grepping for the usual spelling of such masks shows that the above is a wrong fix -- a style bug. All long double functions where long double is just double should be weak aliases to the double functions. This method is used for all nontrivial functions. The above code is pessimized to support the intermediate version with everything looking the same but parametrized by macros and struct layouts. bits.exp, bits.manh and bits.manl have all sorts of sizes so that they look the same, but this gives pessimal code for arches where the sizes are unnatural and the compiler can't repack to better ones. There are no examples of ifdefs for the weak aliases that apply directly here. Usually the long double version is in a file by itself and is ommitted for arches without real long doubles by not putting it in the MD Makefile. Here and for isinf*(), all the libc functions are in the same file, so ifdefs would be needed. You may also need to keep the extern __*l() functions for library compatibility. This is for functions that are only in libc as 10 year old compatibility hacks for 20 year old mistakes :-(, If the above is ifdefed, then it may as well handle the normalization bit correctly using another ifdef. There are just 3 supported cases: - 64-bit long doubles (really doubles). Normalization is implicit; there are no invalid formats and tests can ignore the normalization bit - 80-bit long doubles. Don't clobber the normalization bit, but check that it is consistent - 128-bit long doubles. Like 64-bit ones for normalization. __isnanl() seems to be broken in one more place (unless you fixed this too). libm has another extern copy of __isnanl() in s_isnanl.c. This is compiled in both the PIC and !PIC cases, while the one in libc is only compiled in the PIC case. I think this copy is even more unreachable than the one in libc. As mentioned in a previous reply, math.h has a copy of __isnanl() which is the one normally used, and it is missing most of the bugs. Bruce From owner-svn-src-all@FreeBSD.ORG Fri May 29 13:34:32 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 43147CCD; Fri, 29 May 2015 13:34:32 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 176291075; Fri, 29 May 2015 13:34:32 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TDYVhX064154; Fri, 29 May 2015 13:34:31 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TDYV9m064153; Fri, 29 May 2015 13:34:31 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291334.t4TDYV9m064153@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 13:34:31 +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: r283740 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 13:34:32 -0000 Author: tuexen Date: Fri May 29 13:34:31 2015 New Revision: 283740 URL: https://svnweb.freebsd.org/changeset/base/283740 Log: MFC r282042: Don't panic under INVARIANTS when receiving a SACK which cumacks a TSN never sent. While there, fix two typos. Modified: stable/10/sys/netinet/sctp_indata.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_indata.c ============================================================================== --- stable/10/sys/netinet/sctp_indata.c Fri May 29 13:32:08 2015 (r283739) +++ stable/10/sys/netinet/sctp_indata.c Fri May 29 13:34:31 2015 (r283740) @@ -3614,24 +3614,17 @@ sctp_express_handle_sack(struct sctp_tcb send_s = asoc->sending_seq; } if (SCTP_TSN_GE(cumack, send_s)) { -#ifndef INVARIANTS struct mbuf *op_err; char msg[SCTP_DIAG_INFO_LEN]; -#endif -#ifdef INVARIANTS - panic("Impossible sack 1"); -#else - *abort_now = 1; /* XXX */ - snprintf(msg, sizeof(msg), "Cum ack %8.8x greater or equal then TSN %8.8x", + snprintf(msg, sizeof(msg), "Cum ack %8.8x greater or equal than TSN %8.8x", cumack, send_s); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_25; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); return; -#endif } } asoc->this_sack_highest_gap = cumack; @@ -4195,7 +4188,7 @@ sctp_handle_sack(struct mbuf *m, int off hopeless_peer: *abort_now = 1; /* XXX */ - snprintf(msg, sizeof(msg), "Cum ack %8.8x greater or equal then TSN %8.8x", + snprintf(msg, sizeof(msg), "Cum ack %8.8x greater or equal than TSN %8.8x", cum_ack, send_s); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_25; From owner-svn-src-all@FreeBSD.ORG Fri May 29 13:37:05 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3779A13B; Fri, 29 May 2015 13:37:05 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 2552C10D9; Fri, 29 May 2015 13:37:05 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TDb5me064570; Fri, 29 May 2015 13:37:05 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TDb5Cg064569; Fri, 29 May 2015 13:37:05 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505291337.t4TDb5Cg064569@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Fri, 29 May 2015 13:37: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: r283741 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 13:37:05 -0000 Author: tuexen Date: Fri May 29 13:37:04 2015 New Revision: 283741 URL: https://svnweb.freebsd.org/changeset/base/283741 Log: MFC r282810: Ensure that the COOKIE-ACK can be sent over UDP if the COOKIE-ECHO was received over UDP. Thanks to Felix Weinrank for makeing me aware of the problem and to Irene Ruengeler for providing the fix. Modified: stable/10/sys/netinet/sctp_input.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_input.c ============================================================================== --- stable/10/sys/netinet/sctp_input.c Fri May 29 13:34:31 2015 (r283740) +++ stable/10/sys/netinet/sctp_input.c Fri May 29 13:37:04 2015 (r283741) @@ -2325,12 +2325,13 @@ sctp_process_cookie_new(struct mbuf *m, sctp_is_feature_on(inp, SCTP_PCB_FLAGS_AUTOCLOSE)) { sctp_timer_start(SCTP_TIMER_TYPE_AUTOCLOSE, inp, stcb, NULL); } - /* calculate the RTT */ (void)SCTP_GETTIME_TIMEVAL(&stcb->asoc.time_entered); if ((netp) && (*netp)) { + /* calculate the RTT and set the encaps port */ (*netp)->RTO = sctp_calculate_rto(stcb, asoc, *netp, &cookie->time_entered, sctp_align_unsafe_makecopy, SCTP_RTT_FROM_NON_DATA); + (*netp)->port = port; } /* respond with a COOKIE-ACK */ sctp_send_cookie_ack(stcb); From owner-svn-src-all@FreeBSD.ORG Fri May 29 14:02:37 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E9FD7B09; Fri, 29 May 2015 14:02:37 +0000 (UTC) (envelope-from maxim@FreeBSD.org) Received: from svn.freebsd.org (svn.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 D848C1865; Fri, 29 May 2015 14:02:37 +0000 (UTC) (envelope-from maxim@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TE2bhO079192; Fri, 29 May 2015 14:02:37 GMT (envelope-from maxim@FreeBSD.org) Received: (from maxim@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TE2bs2079191; Fri, 29 May 2015 14:02:37 GMT (envelope-from maxim@FreeBSD.org) Message-Id: <201505291402.t4TE2bs2079191@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: maxim set sender to maxim@FreeBSD.org using -f From: Maxim Konovalov Date: Fri, 29 May 2015 14:02:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283742 - head/sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 14:02:38 -0000 Author: maxim Date: Fri May 29 14:02:37 2015 New Revision: 283742 URL: https://svnweb.freebsd.org/changeset/base/283742 Log: arm64 added to CSCOPE_ARCHDIR. Modified: head/sys/Makefile Modified: head/sys/Makefile ============================================================================== --- head/sys/Makefile Fri May 29 13:37:04 2015 (r283741) +++ head/sys/Makefile Fri May 29 14:02:37 2015 (r283742) @@ -8,7 +8,7 @@ CSCOPEDIRS= boot bsm cam cddl compat con rpc security sys ufs vm xdr xen ${CSCOPE_ARCHDIR} .if !defined(CSCOPE_ARCHDIR) .if defined(ALL_ARCH) -CSCOPE_ARCHDIR = amd64 arm i386 mips pc98 powerpc sparc64 x86 +CSCOPE_ARCHDIR = amd64 arm arm64 i386 mips pc98 powerpc sparc64 x86 .else CSCOPE_ARCHDIR = ${MACHINE} .if ${MACHINE} != ${MACHINE_CPUARCH} From owner-svn-src-all@FreeBSD.ORG Fri May 29 14:03:08 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 26338C4B; Fri, 29 May 2015 14:03:08 +0000 (UTC) (envelope-from maxim@FreeBSD.org) Received: from svn.freebsd.org (svn.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 14577186B; Fri, 29 May 2015 14:03:08 +0000 (UTC) (envelope-from maxim@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TE37Jd079326; Fri, 29 May 2015 14:03:07 GMT (envelope-from maxim@FreeBSD.org) Received: (from maxim@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TE37r2079325; Fri, 29 May 2015 14:03:07 GMT (envelope-from maxim@FreeBSD.org) Message-Id: <201505291403.t4TE37r2079325@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: maxim set sender to maxim@FreeBSD.org using -f From: Maxim Konovalov Date: Fri, 29 May 2015 14:03:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283743 - head/sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 14:03:08 -0000 Author: maxim Date: Fri May 29 14:03:07 2015 New Revision: 283743 URL: https://svnweb.freebsd.org/changeset/base/283743 Log: Kill EoL whitespace. Modified: head/sys/Makefile Modified: head/sys/Makefile ============================================================================== --- head/sys/Makefile Fri May 29 14:02:37 2015 (r283742) +++ head/sys/Makefile Fri May 29 14:03:07 2015 (r283743) @@ -10,7 +10,7 @@ CSCOPEDIRS= boot bsm cam cddl compat con .if defined(ALL_ARCH) CSCOPE_ARCHDIR = amd64 arm arm64 i386 mips pc98 powerpc sparc64 x86 .else -CSCOPE_ARCHDIR = ${MACHINE} +CSCOPE_ARCHDIR = ${MACHINE} .if ${MACHINE} != ${MACHINE_CPUARCH} CSCOPE_ARCHDIR += ${MACHINE_CPUARCH} .endif From owner-svn-src-all@FreeBSD.ORG Fri May 29 14:35:18 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9401BDE1; Fri, 29 May 2015 14:35:18 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.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 809B81FA7; Fri, 29 May 2015 14:35:18 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TEZIAA095308; Fri, 29 May 2015 14:35:18 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TEZHq6095300; Fri, 29 May 2015 14:35:17 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201505291435.t4TEZHq6095300@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Fri, 29 May 2015 14:35:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283744 - in head/sys/dev/ath: . ath_rate/sample X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 14:35:18 -0000 Author: glebius Date: Fri May 29 14:35:16 2015 New Revision: 283744 URL: https://svnweb.freebsd.org/changeset/base/283744 Log: Use device_printf() instead of if_printf(). No functional changes. Modified: head/sys/dev/ath/ath_rate/sample/sample.c head/sys/dev/ath/if_ath.c head/sys/dev/ath/if_ath_rx.c head/sys/dev/ath/if_ath_tdma.c head/sys/dev/ath/if_ath_tx.c Modified: head/sys/dev/ath/ath_rate/sample/sample.c ============================================================================== --- head/sys/dev/ath/ath_rate/sample/sample.c Fri May 29 14:03:07 2015 (r283743) +++ head/sys/dev/ath/ath_rate/sample/sample.c Fri May 29 14:35:16 2015 (r283744) @@ -843,9 +843,11 @@ update_stats(struct ath_softc *sc, struc } static void -badrate(struct ifnet *ifp, int series, int hwrate, int tries, int status) +badrate(struct ath_softc *sc, int series, int hwrate, int tries, int status) { - if_printf(ifp, "bad series%d hwrate 0x%x, tries %u ts_status 0x%x\n", + + device_printf(sc->sc_dev, + "bad series%d hwrate 0x%x, tries %u ts_status 0x%x\n", series, hwrate, tries, status); } @@ -891,9 +893,10 @@ ath_rate_tx_complete(struct ath_softc *s if (!mrr || ts->ts_finaltsi == 0) { if (!IS_RATE_DEFINED(sn, final_rix)) { - device_printf(sc->sc_dev, "%s: ts_rate=%d ts_finaltsi=%d, final_rix=%d\n", + device_printf(sc->sc_dev, + "%s: ts_rate=%d ts_finaltsi=%d, final_rix=%d\n", __func__, ts->ts_rate, ts->ts_finaltsi, final_rix); - badrate(ifp, 0, ts->ts_rate, long_tries, status); + badrate(sc, 0, ts->ts_rate, long_tries, status); return; } /* @@ -945,7 +948,7 @@ ath_rate_tx_complete(struct ath_softc *s for (i = 0; i < 4; i++) { if (rc[i].tries && !IS_RATE_DEFINED(sn, rc[i].rix)) - badrate(ifp, 0, rc[i].ratecode, rc[i].tries, + badrate(sc, 0, rc[i].ratecode, rc[i].tries, status); } Modified: head/sys/dev/ath/if_ath.c ============================================================================== --- head/sys/dev/ath/if_ath.c Fri May 29 14:03:07 2015 (r283743) +++ head/sys/dev/ath/if_ath.c Fri May 29 14:35:16 2015 (r283744) @@ -595,7 +595,6 @@ ath_attach(u_int16_t devid, struct ath_s ic->ic_softc = sc; ic->ic_name = device_get_nameunit(sc->sc_dev); - /* set these up early for if_printf use */ if_initname(ifp, device_get_name(sc->sc_dev), device_get_unit(sc->sc_dev)); CURVNET_RESTORE(); @@ -612,8 +611,8 @@ ath_attach(u_int16_t devid, struct ath_s ah = ath_hal_attach(devid, sc, sc->sc_st, sc->sc_sh, sc->sc_eepromdata, &ah_config, &status); if (ah == NULL) { - if_printf(ifp, "unable to attach hardware; HAL status %u\n", - status); + device_printf(sc->sc_dev, + "unable to attach hardware; HAL status %u\n", status); error = ENXIO; goto bad; } @@ -664,8 +663,9 @@ ath_attach(u_int16_t devid, struct ath_s */ sc->sc_keymax = ath_hal_keycachesize(ah); if (sc->sc_keymax > ATH_KEYMAX) { - if_printf(ifp, "Warning, using only %u of %u key cache slots\n", - ATH_KEYMAX, sc->sc_keymax); + device_printf(sc->sc_dev, + "Warning, using only %u of %u key cache slots\n", + ATH_KEYMAX, sc->sc_keymax); sc->sc_keymax = ATH_KEYMAX; } /* @@ -704,14 +704,14 @@ ath_attach(u_int16_t devid, struct ath_s */ error = ath_desc_alloc(sc); if (error != 0) { - if_printf(ifp, "failed to allocate TX descriptors: %d\n", - error); + device_printf(sc->sc_dev, + "failed to allocate TX descriptors: %d\n", error); goto bad; } error = ath_txdma_setup(sc); if (error != 0) { - if_printf(ifp, "failed to allocate TX descriptors: %d\n", - error); + device_printf(sc->sc_dev, + "failed to allocate TX descriptors: %d\n", error); goto bad; } @@ -720,8 +720,8 @@ ath_attach(u_int16_t devid, struct ath_s */ error = ath_rxdma_setup(sc); if (error != 0) { - if_printf(ifp, "failed to allocate RX descriptors: %d\n", - error); + device_printf(sc->sc_dev, + "failed to allocate RX descriptors: %d\n", error); goto bad; } @@ -752,20 +752,22 @@ ath_attach(u_int16_t devid, struct ath_s */ sc->sc_bhalq = ath_beaconq_setup(sc); if (sc->sc_bhalq == (u_int) -1) { - if_printf(ifp, "unable to setup a beacon xmit queue!\n"); + device_printf(sc->sc_dev, + "unable to setup a beacon xmit queue!\n"); error = EIO; goto bad2; } sc->sc_cabq = ath_txq_setup(sc, HAL_TX_QUEUE_CAB, 0); if (sc->sc_cabq == NULL) { - if_printf(ifp, "unable to setup CAB xmit queue!\n"); + device_printf(sc->sc_dev, "unable to setup CAB xmit queue!\n"); error = EIO; goto bad2; } /* NB: insure BK queue is the lowest priority h/w queue */ if (!ath_tx_setup(sc, WME_AC_BK, HAL_WME_AC_BK)) { - if_printf(ifp, "unable to setup xmit queue for %s traffic!\n", - ieee80211_wme_acnames[WME_AC_BK]); + device_printf(sc->sc_dev, + "unable to setup xmit queue for %s traffic!\n", + ieee80211_wme_acnames[WME_AC_BK]); error = EIO; goto bad2; } @@ -1828,8 +1830,8 @@ ath_vap_delete(struct ieee80211vap *vap) * be reset if we just destroyed the last vap). */ if (ath_startrecv(sc) != 0) - if_printf(ifp, "%s: unable to restart recv logic\n", - __func__); + device_printf(sc->sc_dev, + "%s: unable to restart recv logic\n", __func__); if (sc->sc_beacons) { /* restart beacons */ #ifdef IEEE80211_SUPPORT_TDMA if (sc->sc_tdma) @@ -2316,7 +2318,7 @@ ath_fatal_proc(void *arg, int pending) u_int32_t len; void *sp; - if_printf(ifp, "hardware error; resetting\n"); + device_printf(sc->sc_dev, "hardware error; resetting\n"); /* * Fatal errors are unrecoverable. Typically these * are caused by DMA errors. Collect h/w state from @@ -2325,9 +2327,9 @@ ath_fatal_proc(void *arg, int pending) if (ath_hal_getfatalstate(sc->sc_ah, &sp, &len)) { KASSERT(len >= 6*sizeof(u_int32_t), ("len %u bytes", len)); state = sp; - if_printf(ifp, "0x%08x 0x%08x 0x%08x, 0x%08x 0x%08x 0x%08x\n", - state[0], state[1] , state[2], state[3], - state[4], state[5]); + device_printf(sc->sc_dev, + "0x%08x 0x%08x 0x%08x, 0x%08x 0x%08x 0x%08x\n", state[0], + state[1] , state[2], state[3], state[4], state[5]); } ath_reset(ifp, ATH_RESET_NOLOSS); } @@ -2434,7 +2436,8 @@ ath_bmiss_proc(void *arg, int pending) */ if (ath_hal_gethangstate(sc->sc_ah, 0xff, &hangs) && hangs != 0) { ath_reset(ifp, ATH_RESET_NOLOSS); - if_printf(ifp, "bb hang detected (0x%x), resetting\n", hangs); + device_printf(sc->sc_dev, + "bb hang detected (0x%x), resetting\n", hangs); } else { ath_reset(ifp, ATH_RESET_NOLOSS); ieee80211_beacon_miss(ifp->if_l2com); @@ -2509,9 +2512,10 @@ ath_init(void *arg) ath_hal_setchainmasks(sc->sc_ah, sc->sc_cur_txchainmask, sc->sc_cur_rxchainmask); - if (!ath_hal_reset(ah, sc->sc_opmode, ic->ic_curchan, AH_FALSE, &status)) { - if_printf(ifp, "unable to reset hardware; hal status %u\n", - status); + if (!ath_hal_reset(ah, sc->sc_opmode, ic->ic_curchan, AH_FALSE, + &status)) { + device_printf(sc->sc_dev, + "unable to reset hardware; hal status %u\n", status); ATH_UNLOCK(sc); return; } @@ -2569,7 +2573,7 @@ ath_init(void *arg) * here except setup the interrupt mask. */ if (ath_startrecv(sc) != 0) { - if_printf(ifp, "unable to start recv logic\n"); + device_printf(sc->sc_dev, "unable to start recv logic\n"); ath_power_restore_power_state(sc); ATH_UNLOCK(sc); return; @@ -2911,8 +2915,9 @@ ath_reset(struct ifnet *ifp, ATH_RESET_T ath_hal_setchainmasks(sc->sc_ah, sc->sc_cur_txchainmask, sc->sc_cur_rxchainmask); if (!ath_hal_reset(ah, sc->sc_opmode, ic->ic_curchan, AH_TRUE, &status)) - if_printf(ifp, "%s: unable to reset hardware; hal status %u\n", - __func__, status); + device_printf(sc->sc_dev, + "%s: unable to reset hardware; hal status %u\n", + __func__, status); sc->sc_diversity = ath_hal_getdiversity(ah); ATH_RX_LOCK(sc); @@ -2941,7 +2946,8 @@ ath_reset(struct ifnet *ifp, ATH_RESET_T ath_hal_setenforcetxop(sc->sc_ah, 0); if (ath_startrecv(sc) != 0) /* restart recv */ - if_printf(ifp, "%s: unable to start recv logic\n", __func__); + device_printf(sc->sc_dev, + "%s: unable to start recv logic\n", __func__); /* * We may be doing a reset in response to an ioctl * that changes the channel so update any state that @@ -3747,7 +3753,7 @@ ath_reset_proc(void *arg, int pending) struct ifnet *ifp = sc->sc_ifp; #if 0 - if_printf(ifp, "%s: resetting\n", __func__); + device_printf(sc->sc_dev, "%s: resetting\n", __func__); #endif ath_reset(ifp, ATH_RESET_NOLOSS); } @@ -3763,15 +3769,15 @@ ath_bstuck_proc(void *arg, int pending) uint32_t hangs = 0; if (ath_hal_gethangstate(sc->sc_ah, 0xff, &hangs) && hangs != 0) - if_printf(ifp, "bb hang detected (0x%x)\n", hangs); + device_printf(sc->sc_dev, "bb hang detected (0x%x)\n", hangs); #ifdef ATH_DEBUG_ALQ if (if_ath_alq_checkdebug(&sc->sc_alq, ATH_ALQ_STUCK_BEACON)) if_ath_alq_post(&sc->sc_alq, ATH_ALQ_STUCK_BEACON, 0, NULL); #endif - if_printf(ifp, "stuck beacon; resetting (bmiss count %u)\n", - sc->sc_bmisscount); + device_printf(sc->sc_dev, "stuck beacon; resetting (bmiss count %u)\n", + sc->sc_bmisscount); sc->sc_stats.ast_bstuck++; /* * This assumes that there's no simultaneous channel mode change @@ -3803,7 +3809,6 @@ ath_descdma_alloc_desc(struct ath_softc ((_dd)->dd_desc_paddr + ((caddr_t)(_ds) - (caddr_t)(_dd)->dd_desc)) #define ATH_DESC_4KB_BOUND_CHECK(_daddr, _len) \ ((((u_int32_t)(_daddr) & 0xFFF) > (0x1000 - (_len))) ? 1 : 0) - struct ifnet *ifp = sc->sc_ifp; int error; dd->dd_descsize = ds_size; @@ -3844,7 +3849,8 @@ ath_descdma_alloc_desc(struct ath_softc NULL, /* lockarg */ &dd->dd_dmat); if (error != 0) { - if_printf(ifp, "cannot allocate %s DMA tag\n", dd->dd_name); + device_printf(sc->sc_dev, + "cannot allocate %s DMA tag\n", dd->dd_name); return error; } @@ -3853,8 +3859,9 @@ ath_descdma_alloc_desc(struct ath_softc BUS_DMA_NOWAIT | BUS_DMA_COHERENT, &dd->dd_dmamap); if (error != 0) { - if_printf(ifp, "unable to alloc memory for %u %s descriptors, " - "error %u\n", ndesc, dd->dd_name, error); + device_printf(sc->sc_dev, + "unable to alloc memory for %u %s descriptors, error %u\n", + ndesc, dd->dd_name, error); goto fail1; } @@ -3863,8 +3870,9 @@ ath_descdma_alloc_desc(struct ath_softc ath_load_cb, &dd->dd_desc_paddr, BUS_DMA_NOWAIT); if (error != 0) { - if_printf(ifp, "unable to map %s descriptors, error %u\n", - dd->dd_name, error); + device_printf(sc->sc_dev, + "unable to map %s descriptors, error %u\n", + dd->dd_name, error); goto fail2; } @@ -3894,7 +3902,6 @@ ath_descdma_setup(struct ath_softc *sc, ((_dd)->dd_desc_paddr + ((caddr_t)(_ds) - (caddr_t)(_dd)->dd_desc)) #define ATH_DESC_4KB_BOUND_CHECK(_daddr, _len) \ ((((u_int32_t)(_daddr) & 0xFFF) > (0x1000 - (_len))) ? 1 : 0) - struct ifnet *ifp = sc->sc_ifp; uint8_t *ds; struct ath_buf *bf; int i, bsize, error; @@ -3914,8 +3921,9 @@ ath_descdma_setup(struct ath_softc *sc, bsize = sizeof(struct ath_buf) * nbuf; bf = malloc(bsize, M_ATHDEV, M_NOWAIT | M_ZERO); if (bf == NULL) { - if_printf(ifp, "malloc of %s buffers failed, size %u\n", - dd->dd_name, bsize); + device_printf(sc->sc_dev, + "malloc of %s buffers failed, size %u\n", + dd->dd_name, bsize); goto fail3; } dd->dd_bufptr = bf; @@ -3941,8 +3949,9 @@ ath_descdma_setup(struct ath_softc *sc, error = bus_dmamap_create(sc->sc_dmat, BUS_DMA_NOWAIT, &bf->bf_dmamap); if (error != 0) { - if_printf(ifp, "unable to create dmamap for %s " - "buffer %u, error %u\n", dd->dd_name, i, error); + device_printf(sc->sc_dev, "unable to create dmamap " + "for %s buffer %u, error %u\n", + dd->dd_name, i, error); ath_descdma_cleanup(sc, dd, head); return error; } @@ -3978,7 +3987,6 @@ ath_descdma_setup_rx_edma(struct ath_sof struct ath_descdma *dd, ath_bufhead *head, const char *name, int nbuf, int rx_status_len) { - struct ifnet *ifp = sc->sc_ifp; struct ath_buf *bf; int i, bsize, error; @@ -4001,8 +4009,9 @@ ath_descdma_setup_rx_edma(struct ath_sof bsize = sizeof(struct ath_buf) * nbuf; bf = malloc(bsize, M_ATHDEV, M_NOWAIT | M_ZERO); if (bf == NULL) { - if_printf(ifp, "malloc of %s buffers failed, size %u\n", - dd->dd_name, bsize); + device_printf(sc->sc_dev, + "malloc of %s buffers failed, size %u\n", + dd->dd_name, bsize); error = ENOMEM; goto fail3; } @@ -4017,8 +4026,9 @@ ath_descdma_setup_rx_edma(struct ath_sof error = bus_dmamap_create(sc->sc_dmat, BUS_DMA_NOWAIT, &bf->bf_dmamap); if (error != 0) { - if_printf(ifp, "unable to create dmamap for %s " - "buffer %u, error %u\n", dd->dd_name, i, error); + device_printf(sc->sc_dev, "unable to create dmamap " + "for %s buffer %u, error %u\n", + dd->dd_name, i, error); ath_descdma_cleanup(sc, dd, head); return error; } @@ -4392,9 +4402,8 @@ ath_txq_update(struct ath_softc *sc, int qi.tqi_aifs, qi.tqi_cwmin, qi.tqi_cwmax, qi.tqi_burstTime); if (!ath_hal_settxqueueprops(ah, txq->axq_qnum, &qi)) { - if_printf(ifp, "unable to update hardware queue " - "parameters for %s traffic!\n", - ieee80211_wme_acnames[ac]); + device_printf(sc->sc_dev, "unable to update hardware queue " + "parameters for %s traffic!\n", ieee80211_wme_acnames[ac]); return 0; } else { ath_hal_resettxqueue(ah, txq->axq_qnum); /* push to h/w */ @@ -5560,7 +5569,7 @@ ath_chan_set(struct ath_softc *sc, struc ath_hal_setchainmasks(sc->sc_ah, sc->sc_cur_txchainmask, sc->sc_cur_rxchainmask); if (!ath_hal_reset(ah, sc->sc_opmode, chan, AH_TRUE, &status)) { - if_printf(ifp, "%s: unable to reset " + device_printf(sc->sc_dev, "%s: unable to reset " "channel %u (%u MHz, flags 0x%x), hal status %u\n", __func__, ieee80211_chan2ieee(ic, chan), chan->ic_freq, chan->ic_flags, status); @@ -5599,8 +5608,8 @@ ath_chan_set(struct ath_softc *sc, struc * Re-enable rx framework. */ if (ath_startrecv(sc) != 0) { - if_printf(ifp, "%s: unable to restart recv logic\n", - __func__); + device_printf(sc->sc_dev, + "%s: unable to restart recv logic\n", __func__); ret = EIO; goto finish; } @@ -6375,8 +6384,9 @@ ath_getchannels(struct ath_softc *sc) status = ath_hal_init_channels(ah, ic->ic_channels, IEEE80211_CHAN_MAX, &ic->ic_nchans, HAL_MODE_ALL, CTRY_DEFAULT, SKU_NONE, AH_TRUE); if (status != HAL_OK) { - if_printf(ifp, "%s: unable to collect channel list from hal, " - "status %d\n", __func__, status); + device_printf(sc->sc_dev, + "%s: unable to collect channel list from hal, status %d\n", + __func__, status); return EINVAL; } (void) ath_hal_getregdomain(ah, &sc->sc_eerd); @@ -6538,10 +6548,10 @@ ath_watchdog(void *arg) if (ath_hal_gethangstate(sc->sc_ah, 0xffff, &hangs) && hangs != 0) { - if_printf(ifp, "%s hang detected (0x%x)\n", + device_printf(sc->sc_dev, "%s hang detected (0x%x)\n", hangs & 0xff ? "bb" : "mac", hangs); } else - if_printf(ifp, "device timeout\n"); + device_printf(sc->sc_dev, "device timeout\n"); do_reset = 1; if_inc_counter(ifp, IFCOUNTER_OERRORS, 1); sc->sc_stats.ast_watchdog++; @@ -6786,31 +6796,32 @@ ath_ioctl(struct ifnet *ifp, u_long cmd, static void ath_announce(struct ath_softc *sc) { - struct ifnet *ifp = sc->sc_ifp; struct ath_hal *ah = sc->sc_ah; - if_printf(ifp, "AR%s mac %d.%d RF%s phy %d.%d\n", + device_printf(sc->sc_dev, "AR%s mac %d.%d RF%s phy %d.%d\n", ath_hal_mac_name(ah), ah->ah_macVersion, ah->ah_macRev, ath_hal_rf_name(ah), ah->ah_phyRev >> 4, ah->ah_phyRev & 0xf); - if_printf(ifp, "2GHz radio: 0x%.4x; 5GHz radio: 0x%.4x\n", + device_printf(sc->sc_dev, "2GHz radio: 0x%.4x; 5GHz radio: 0x%.4x\n", ah->ah_analog2GhzRev, ah->ah_analog5GhzRev); if (bootverbose) { int i; for (i = 0; i <= WME_AC_VO; i++) { struct ath_txq *txq = sc->sc_ac2q[i]; - if_printf(ifp, "Use hw queue %u for %s traffic\n", - txq->axq_qnum, ieee80211_wme_acnames[i]); + device_printf(sc->sc_dev, + "Use hw queue %u for %s traffic\n", + txq->axq_qnum, ieee80211_wme_acnames[i]); } - if_printf(ifp, "Use hw queue %u for CAB traffic\n", - sc->sc_cabq->axq_qnum); - if_printf(ifp, "Use hw queue %u for beacons\n", sc->sc_bhalq); + device_printf(sc->sc_dev, "Use hw queue %u for CAB traffic\n", + sc->sc_cabq->axq_qnum); + device_printf(sc->sc_dev, "Use hw queue %u for beacons\n", + sc->sc_bhalq); } if (ath_rxbuf != ATH_RXBUF) - if_printf(ifp, "using %u rx buffers\n", ath_rxbuf); + device_printf(sc->sc_dev, "using %u rx buffers\n", ath_rxbuf); if (ath_txbuf != ATH_TXBUF) - if_printf(ifp, "using %u tx buffers\n", ath_txbuf); + device_printf(sc->sc_dev, "using %u tx buffers\n", ath_txbuf); if (sc->sc_mcastkey && bootverbose) - if_printf(ifp, "using multicast key search\n"); + device_printf(sc->sc_dev, "using multicast key search\n"); } static void Modified: head/sys/dev/ath/if_ath_rx.c ============================================================================== --- head/sys/dev/ath/if_ath_rx.c Fri May 29 14:03:07 2015 (r283743) +++ head/sys/dev/ath/if_ath_rx.c Fri May 29 14:35:16 2015 (r283744) @@ -1037,7 +1037,7 @@ ath_rx_proc(struct ath_softc *sc, int re bf = TAILQ_FIRST(&sc->sc_rxbuf); if (sc->sc_rxslink && bf == NULL) { /* NB: shouldn't happen */ - if_printf(ifp, "%s: no buffer!\n", __func__); + device_printf(sc->sc_dev, "%s: no buffer!\n", __func__); break; } else if (bf == NULL) { /* @@ -1054,7 +1054,7 @@ ath_rx_proc(struct ath_softc *sc, int re * will be no mbuf; try again to re-populate it. */ /* XXX make debug msg */ - if_printf(ifp, "%s: no mbuf!\n", __func__); + device_printf(sc->sc_dev, "%s: no mbuf!\n", __func__); TAILQ_REMOVE(&sc->sc_rxbuf, bf, bf_list); goto rx_proc_next; } Modified: head/sys/dev/ath/if_ath_tdma.c ============================================================================== --- head/sys/dev/ath/if_ath_tdma.c Fri May 29 14:03:07 2015 (r283743) +++ head/sys/dev/ath/if_ath_tdma.c Fri May 29 14:35:16 2015 (r283744) @@ -259,7 +259,7 @@ ath_tdma_config(struct ath_softc *sc, st if (vap == NULL) { vap = TAILQ_FIRST(&ic->ic_vaps); /* XXX */ if (vap == NULL) { - if_printf(ifp, "%s: no vaps?\n", __func__); + device_printf(sc->sc_dev, "%s: no vaps?\n", __func__); return; } } Modified: head/sys/dev/ath/if_ath_tx.c ============================================================================== --- head/sys/dev/ath/if_ath_tx.c Fri May 29 14:03:07 2015 (r283743) +++ head/sys/dev/ath/if_ath_tx.c Fri May 29 14:35:16 2015 (r283744) @@ -1691,8 +1691,8 @@ ath_tx_normal_setup(struct ath_softc *sc flags |= HAL_TXDESC_NOACK; break; default: - if_printf(ifp, "bogus frame type 0x%x (%s)\n", - wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK, __func__); + device_printf(sc->sc_dev, "bogus frame type 0x%x (%s)\n", + wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK, __func__); /* XXX statistic */ /* XXX free tx dmamap */ ath_freetx(m0); From owner-svn-src-all@FreeBSD.ORG Fri May 29 14:38:09 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 65829F58; Fri, 29 May 2015 14:38:09 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-ie0-x230.google.com (mail-ie0-x230.google.com [IPv6:2607:f8b0:4001:c03::230]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 37F971FD1; Fri, 29 May 2015 14:38:09 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: by iesa3 with SMTP id a3so64332013ies.2; Fri, 29 May 2015 07:38:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=WL/BDB51aXqNg8c+71ZG9ZdsJu3lRCnwmM2Gj6QOMD0=; b=xVrfQzIxkHJM/FsoYJihCTXAQmxalh3B0qyC+9istGfe9waYkQgcoC72+y4NyI2ThT iAAy7XTgm9PMI858R/1sYhDmuyl6HuoRDqKiSfV3zjYPevGbReN/J3sM3LQNRo7JeBsN ylfsTRw12Z3PUCVT397IvV6kf/cMiGm2lYzfG1ulFuwRJt5HS8gqq9wYyGDqklIfohTh EppTBbux+rtDrLPF10zzZzgeZsxZL5JXqaybJMIzR/y31WMBmnQR8u6qq3Mvdp+96NEW yyIq3+mH31vPEQ9feIZblQdP+hqgcd/w9OXyiM9L+5p+lhWkeDA1mhoyqVxP8ab8ycmE eLCQ== MIME-Version: 1.0 X-Received: by 10.50.164.165 with SMTP id yr5mr4399334igb.6.1432910288451; Fri, 29 May 2015 07:38:08 -0700 (PDT) Sender: adrian.chadd@gmail.com Received: by 10.36.38.133 with HTTP; Fri, 29 May 2015 07:38:07 -0700 (PDT) In-Reply-To: <201505291435.t4TEZHq6095300@svn.freebsd.org> References: <201505291435.t4TEZHq6095300@svn.freebsd.org> Date: Fri, 29 May 2015 07:38:07 -0700 X-Google-Sender-Auth: t6D8o6rpCfs64osg9f8iQ4QcWaw Message-ID: Subject: Re: svn commit: r283744 - in head/sys/dev/ath: . ath_rate/sample From: Adrian Chadd To: Gleb Smirnoff Cc: "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-head@freebsd.org" Content-Type: text/plain; charset=UTF-8 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 14:38:09 -0000 (Yes, gleb did ask me first on iRC. Thanks gleb!) -a On 29 May 2015 at 07:35, Gleb Smirnoff wrote: > Author: glebius > Date: Fri May 29 14:35:16 2015 > New Revision: 283744 > URL: https://svnweb.freebsd.org/changeset/base/283744 > > Log: > Use device_printf() instead of if_printf(). No functional changes. > > Modified: > head/sys/dev/ath/ath_rate/sample/sample.c > head/sys/dev/ath/if_ath.c > head/sys/dev/ath/if_ath_rx.c > head/sys/dev/ath/if_ath_tdma.c > head/sys/dev/ath/if_ath_tx.c > > Modified: head/sys/dev/ath/ath_rate/sample/sample.c > ============================================================================== > --- head/sys/dev/ath/ath_rate/sample/sample.c Fri May 29 14:03:07 2015 (r283743) > +++ head/sys/dev/ath/ath_rate/sample/sample.c Fri May 29 14:35:16 2015 (r283744) > @@ -843,9 +843,11 @@ update_stats(struct ath_softc *sc, struc > } > > static void > -badrate(struct ifnet *ifp, int series, int hwrate, int tries, int status) > +badrate(struct ath_softc *sc, int series, int hwrate, int tries, int status) > { > - if_printf(ifp, "bad series%d hwrate 0x%x, tries %u ts_status 0x%x\n", > + > + device_printf(sc->sc_dev, > + "bad series%d hwrate 0x%x, tries %u ts_status 0x%x\n", > series, hwrate, tries, status); > } > > @@ -891,9 +893,10 @@ ath_rate_tx_complete(struct ath_softc *s > > if (!mrr || ts->ts_finaltsi == 0) { > if (!IS_RATE_DEFINED(sn, final_rix)) { > - device_printf(sc->sc_dev, "%s: ts_rate=%d ts_finaltsi=%d, final_rix=%d\n", > + device_printf(sc->sc_dev, > + "%s: ts_rate=%d ts_finaltsi=%d, final_rix=%d\n", > __func__, ts->ts_rate, ts->ts_finaltsi, final_rix); > - badrate(ifp, 0, ts->ts_rate, long_tries, status); > + badrate(sc, 0, ts->ts_rate, long_tries, status); > return; > } > /* > @@ -945,7 +948,7 @@ ath_rate_tx_complete(struct ath_softc *s > > for (i = 0; i < 4; i++) { > if (rc[i].tries && !IS_RATE_DEFINED(sn, rc[i].rix)) > - badrate(ifp, 0, rc[i].ratecode, rc[i].tries, > + badrate(sc, 0, rc[i].ratecode, rc[i].tries, > status); > } > > > Modified: head/sys/dev/ath/if_ath.c > ============================================================================== > --- head/sys/dev/ath/if_ath.c Fri May 29 14:03:07 2015 (r283743) > +++ head/sys/dev/ath/if_ath.c Fri May 29 14:35:16 2015 (r283744) > @@ -595,7 +595,6 @@ ath_attach(u_int16_t devid, struct ath_s > ic->ic_softc = sc; > ic->ic_name = device_get_nameunit(sc->sc_dev); > > - /* set these up early for if_printf use */ > if_initname(ifp, device_get_name(sc->sc_dev), > device_get_unit(sc->sc_dev)); > CURVNET_RESTORE(); > @@ -612,8 +611,8 @@ ath_attach(u_int16_t devid, struct ath_s > ah = ath_hal_attach(devid, sc, sc->sc_st, sc->sc_sh, > sc->sc_eepromdata, &ah_config, &status); > if (ah == NULL) { > - if_printf(ifp, "unable to attach hardware; HAL status %u\n", > - status); > + device_printf(sc->sc_dev, > + "unable to attach hardware; HAL status %u\n", status); > error = ENXIO; > goto bad; > } > @@ -664,8 +663,9 @@ ath_attach(u_int16_t devid, struct ath_s > */ > sc->sc_keymax = ath_hal_keycachesize(ah); > if (sc->sc_keymax > ATH_KEYMAX) { > - if_printf(ifp, "Warning, using only %u of %u key cache slots\n", > - ATH_KEYMAX, sc->sc_keymax); > + device_printf(sc->sc_dev, > + "Warning, using only %u of %u key cache slots\n", > + ATH_KEYMAX, sc->sc_keymax); > sc->sc_keymax = ATH_KEYMAX; > } > /* > @@ -704,14 +704,14 @@ ath_attach(u_int16_t devid, struct ath_s > */ > error = ath_desc_alloc(sc); > if (error != 0) { > - if_printf(ifp, "failed to allocate TX descriptors: %d\n", > - error); > + device_printf(sc->sc_dev, > + "failed to allocate TX descriptors: %d\n", error); > goto bad; > } > error = ath_txdma_setup(sc); > if (error != 0) { > - if_printf(ifp, "failed to allocate TX descriptors: %d\n", > - error); > + device_printf(sc->sc_dev, > + "failed to allocate TX descriptors: %d\n", error); > goto bad; > } > > @@ -720,8 +720,8 @@ ath_attach(u_int16_t devid, struct ath_s > */ > error = ath_rxdma_setup(sc); > if (error != 0) { > - if_printf(ifp, "failed to allocate RX descriptors: %d\n", > - error); > + device_printf(sc->sc_dev, > + "failed to allocate RX descriptors: %d\n", error); > goto bad; > } > > @@ -752,20 +752,22 @@ ath_attach(u_int16_t devid, struct ath_s > */ > sc->sc_bhalq = ath_beaconq_setup(sc); > if (sc->sc_bhalq == (u_int) -1) { > - if_printf(ifp, "unable to setup a beacon xmit queue!\n"); > + device_printf(sc->sc_dev, > + "unable to setup a beacon xmit queue!\n"); > error = EIO; > goto bad2; > } > sc->sc_cabq = ath_txq_setup(sc, HAL_TX_QUEUE_CAB, 0); > if (sc->sc_cabq == NULL) { > - if_printf(ifp, "unable to setup CAB xmit queue!\n"); > + device_printf(sc->sc_dev, "unable to setup CAB xmit queue!\n"); > error = EIO; > goto bad2; > } > /* NB: insure BK queue is the lowest priority h/w queue */ > if (!ath_tx_setup(sc, WME_AC_BK, HAL_WME_AC_BK)) { > - if_printf(ifp, "unable to setup xmit queue for %s traffic!\n", > - ieee80211_wme_acnames[WME_AC_BK]); > + device_printf(sc->sc_dev, > + "unable to setup xmit queue for %s traffic!\n", > + ieee80211_wme_acnames[WME_AC_BK]); > error = EIO; > goto bad2; > } > @@ -1828,8 +1830,8 @@ ath_vap_delete(struct ieee80211vap *vap) > * be reset if we just destroyed the last vap). > */ > if (ath_startrecv(sc) != 0) > - if_printf(ifp, "%s: unable to restart recv logic\n", > - __func__); > + device_printf(sc->sc_dev, > + "%s: unable to restart recv logic\n", __func__); > if (sc->sc_beacons) { /* restart beacons */ > #ifdef IEEE80211_SUPPORT_TDMA > if (sc->sc_tdma) > @@ -2316,7 +2318,7 @@ ath_fatal_proc(void *arg, int pending) > u_int32_t len; > void *sp; > > - if_printf(ifp, "hardware error; resetting\n"); > + device_printf(sc->sc_dev, "hardware error; resetting\n"); > /* > * Fatal errors are unrecoverable. Typically these > * are caused by DMA errors. Collect h/w state from > @@ -2325,9 +2327,9 @@ ath_fatal_proc(void *arg, int pending) > if (ath_hal_getfatalstate(sc->sc_ah, &sp, &len)) { > KASSERT(len >= 6*sizeof(u_int32_t), ("len %u bytes", len)); > state = sp; > - if_printf(ifp, "0x%08x 0x%08x 0x%08x, 0x%08x 0x%08x 0x%08x\n", > - state[0], state[1] , state[2], state[3], > - state[4], state[5]); > + device_printf(sc->sc_dev, > + "0x%08x 0x%08x 0x%08x, 0x%08x 0x%08x 0x%08x\n", state[0], > + state[1] , state[2], state[3], state[4], state[5]); > } > ath_reset(ifp, ATH_RESET_NOLOSS); > } > @@ -2434,7 +2436,8 @@ ath_bmiss_proc(void *arg, int pending) > */ > if (ath_hal_gethangstate(sc->sc_ah, 0xff, &hangs) && hangs != 0) { > ath_reset(ifp, ATH_RESET_NOLOSS); > - if_printf(ifp, "bb hang detected (0x%x), resetting\n", hangs); > + device_printf(sc->sc_dev, > + "bb hang detected (0x%x), resetting\n", hangs); > } else { > ath_reset(ifp, ATH_RESET_NOLOSS); > ieee80211_beacon_miss(ifp->if_l2com); > @@ -2509,9 +2512,10 @@ ath_init(void *arg) > ath_hal_setchainmasks(sc->sc_ah, sc->sc_cur_txchainmask, > sc->sc_cur_rxchainmask); > > - if (!ath_hal_reset(ah, sc->sc_opmode, ic->ic_curchan, AH_FALSE, &status)) { > - if_printf(ifp, "unable to reset hardware; hal status %u\n", > - status); > + if (!ath_hal_reset(ah, sc->sc_opmode, ic->ic_curchan, AH_FALSE, > + &status)) { > + device_printf(sc->sc_dev, > + "unable to reset hardware; hal status %u\n", status); > ATH_UNLOCK(sc); > return; > } > @@ -2569,7 +2573,7 @@ ath_init(void *arg) > * here except setup the interrupt mask. > */ > if (ath_startrecv(sc) != 0) { > - if_printf(ifp, "unable to start recv logic\n"); > + device_printf(sc->sc_dev, "unable to start recv logic\n"); > ath_power_restore_power_state(sc); > ATH_UNLOCK(sc); > return; > @@ -2911,8 +2915,9 @@ ath_reset(struct ifnet *ifp, ATH_RESET_T > ath_hal_setchainmasks(sc->sc_ah, sc->sc_cur_txchainmask, > sc->sc_cur_rxchainmask); > if (!ath_hal_reset(ah, sc->sc_opmode, ic->ic_curchan, AH_TRUE, &status)) > - if_printf(ifp, "%s: unable to reset hardware; hal status %u\n", > - __func__, status); > + device_printf(sc->sc_dev, > + "%s: unable to reset hardware; hal status %u\n", > + __func__, status); > sc->sc_diversity = ath_hal_getdiversity(ah); > > ATH_RX_LOCK(sc); > @@ -2941,7 +2946,8 @@ ath_reset(struct ifnet *ifp, ATH_RESET_T > ath_hal_setenforcetxop(sc->sc_ah, 0); > > if (ath_startrecv(sc) != 0) /* restart recv */ > - if_printf(ifp, "%s: unable to start recv logic\n", __func__); > + device_printf(sc->sc_dev, > + "%s: unable to start recv logic\n", __func__); > /* > * We may be doing a reset in response to an ioctl > * that changes the channel so update any state that > @@ -3747,7 +3753,7 @@ ath_reset_proc(void *arg, int pending) > struct ifnet *ifp = sc->sc_ifp; > > #if 0 > - if_printf(ifp, "%s: resetting\n", __func__); > + device_printf(sc->sc_dev, "%s: resetting\n", __func__); > #endif > ath_reset(ifp, ATH_RESET_NOLOSS); > } > @@ -3763,15 +3769,15 @@ ath_bstuck_proc(void *arg, int pending) > uint32_t hangs = 0; > > if (ath_hal_gethangstate(sc->sc_ah, 0xff, &hangs) && hangs != 0) > - if_printf(ifp, "bb hang detected (0x%x)\n", hangs); > + device_printf(sc->sc_dev, "bb hang detected (0x%x)\n", hangs); > > #ifdef ATH_DEBUG_ALQ > if (if_ath_alq_checkdebug(&sc->sc_alq, ATH_ALQ_STUCK_BEACON)) > if_ath_alq_post(&sc->sc_alq, ATH_ALQ_STUCK_BEACON, 0, NULL); > #endif > > - if_printf(ifp, "stuck beacon; resetting (bmiss count %u)\n", > - sc->sc_bmisscount); > + device_printf(sc->sc_dev, "stuck beacon; resetting (bmiss count %u)\n", > + sc->sc_bmisscount); > sc->sc_stats.ast_bstuck++; > /* > * This assumes that there's no simultaneous channel mode change > @@ -3803,7 +3809,6 @@ ath_descdma_alloc_desc(struct ath_softc > ((_dd)->dd_desc_paddr + ((caddr_t)(_ds) - (caddr_t)(_dd)->dd_desc)) > #define ATH_DESC_4KB_BOUND_CHECK(_daddr, _len) \ > ((((u_int32_t)(_daddr) & 0xFFF) > (0x1000 - (_len))) ? 1 : 0) > - struct ifnet *ifp = sc->sc_ifp; > int error; > > dd->dd_descsize = ds_size; > @@ -3844,7 +3849,8 @@ ath_descdma_alloc_desc(struct ath_softc > NULL, /* lockarg */ > &dd->dd_dmat); > if (error != 0) { > - if_printf(ifp, "cannot allocate %s DMA tag\n", dd->dd_name); > + device_printf(sc->sc_dev, > + "cannot allocate %s DMA tag\n", dd->dd_name); > return error; > } > > @@ -3853,8 +3859,9 @@ ath_descdma_alloc_desc(struct ath_softc > BUS_DMA_NOWAIT | BUS_DMA_COHERENT, > &dd->dd_dmamap); > if (error != 0) { > - if_printf(ifp, "unable to alloc memory for %u %s descriptors, " > - "error %u\n", ndesc, dd->dd_name, error); > + device_printf(sc->sc_dev, > + "unable to alloc memory for %u %s descriptors, error %u\n", > + ndesc, dd->dd_name, error); > goto fail1; > } > > @@ -3863,8 +3870,9 @@ ath_descdma_alloc_desc(struct ath_softc > ath_load_cb, &dd->dd_desc_paddr, > BUS_DMA_NOWAIT); > if (error != 0) { > - if_printf(ifp, "unable to map %s descriptors, error %u\n", > - dd->dd_name, error); > + device_printf(sc->sc_dev, > + "unable to map %s descriptors, error %u\n", > + dd->dd_name, error); > goto fail2; > } > > @@ -3894,7 +3902,6 @@ ath_descdma_setup(struct ath_softc *sc, > ((_dd)->dd_desc_paddr + ((caddr_t)(_ds) - (caddr_t)(_dd)->dd_desc)) > #define ATH_DESC_4KB_BOUND_CHECK(_daddr, _len) \ > ((((u_int32_t)(_daddr) & 0xFFF) > (0x1000 - (_len))) ? 1 : 0) > - struct ifnet *ifp = sc->sc_ifp; > uint8_t *ds; > struct ath_buf *bf; > int i, bsize, error; > @@ -3914,8 +3921,9 @@ ath_descdma_setup(struct ath_softc *sc, > bsize = sizeof(struct ath_buf) * nbuf; > bf = malloc(bsize, M_ATHDEV, M_NOWAIT | M_ZERO); > if (bf == NULL) { > - if_printf(ifp, "malloc of %s buffers failed, size %u\n", > - dd->dd_name, bsize); > + device_printf(sc->sc_dev, > + "malloc of %s buffers failed, size %u\n", > + dd->dd_name, bsize); > goto fail3; > } > dd->dd_bufptr = bf; > @@ -3941,8 +3949,9 @@ ath_descdma_setup(struct ath_softc *sc, > error = bus_dmamap_create(sc->sc_dmat, BUS_DMA_NOWAIT, > &bf->bf_dmamap); > if (error != 0) { > - if_printf(ifp, "unable to create dmamap for %s " > - "buffer %u, error %u\n", dd->dd_name, i, error); > + device_printf(sc->sc_dev, "unable to create dmamap " > + "for %s buffer %u, error %u\n", > + dd->dd_name, i, error); > ath_descdma_cleanup(sc, dd, head); > return error; > } > @@ -3978,7 +3987,6 @@ ath_descdma_setup_rx_edma(struct ath_sof > struct ath_descdma *dd, ath_bufhead *head, > const char *name, int nbuf, int rx_status_len) > { > - struct ifnet *ifp = sc->sc_ifp; > struct ath_buf *bf; > int i, bsize, error; > > @@ -4001,8 +4009,9 @@ ath_descdma_setup_rx_edma(struct ath_sof > bsize = sizeof(struct ath_buf) * nbuf; > bf = malloc(bsize, M_ATHDEV, M_NOWAIT | M_ZERO); > if (bf == NULL) { > - if_printf(ifp, "malloc of %s buffers failed, size %u\n", > - dd->dd_name, bsize); > + device_printf(sc->sc_dev, > + "malloc of %s buffers failed, size %u\n", > + dd->dd_name, bsize); > error = ENOMEM; > goto fail3; > } > @@ -4017,8 +4026,9 @@ ath_descdma_setup_rx_edma(struct ath_sof > error = bus_dmamap_create(sc->sc_dmat, BUS_DMA_NOWAIT, > &bf->bf_dmamap); > if (error != 0) { > - if_printf(ifp, "unable to create dmamap for %s " > - "buffer %u, error %u\n", dd->dd_name, i, error); > + device_printf(sc->sc_dev, "unable to create dmamap " > + "for %s buffer %u, error %u\n", > + dd->dd_name, i, error); > ath_descdma_cleanup(sc, dd, head); > return error; > } > @@ -4392,9 +4402,8 @@ ath_txq_update(struct ath_softc *sc, int > qi.tqi_aifs, qi.tqi_cwmin, qi.tqi_cwmax, qi.tqi_burstTime); > > if (!ath_hal_settxqueueprops(ah, txq->axq_qnum, &qi)) { > - if_printf(ifp, "unable to update hardware queue " > - "parameters for %s traffic!\n", > - ieee80211_wme_acnames[ac]); > + device_printf(sc->sc_dev, "unable to update hardware queue " > + "parameters for %s traffic!\n", ieee80211_wme_acnames[ac]); > return 0; > } else { > ath_hal_resettxqueue(ah, txq->axq_qnum); /* push to h/w */ > @@ -5560,7 +5569,7 @@ ath_chan_set(struct ath_softc *sc, struc > ath_hal_setchainmasks(sc->sc_ah, sc->sc_cur_txchainmask, > sc->sc_cur_rxchainmask); > if (!ath_hal_reset(ah, sc->sc_opmode, chan, AH_TRUE, &status)) { > - if_printf(ifp, "%s: unable to reset " > + device_printf(sc->sc_dev, "%s: unable to reset " > "channel %u (%u MHz, flags 0x%x), hal status %u\n", > __func__, ieee80211_chan2ieee(ic, chan), > chan->ic_freq, chan->ic_flags, status); > @@ -5599,8 +5608,8 @@ ath_chan_set(struct ath_softc *sc, struc > * Re-enable rx framework. > */ > if (ath_startrecv(sc) != 0) { > - if_printf(ifp, "%s: unable to restart recv logic\n", > - __func__); > + device_printf(sc->sc_dev, > + "%s: unable to restart recv logic\n", __func__); > ret = EIO; > goto finish; > } > @@ -6375,8 +6384,9 @@ ath_getchannels(struct ath_softc *sc) > status = ath_hal_init_channels(ah, ic->ic_channels, IEEE80211_CHAN_MAX, > &ic->ic_nchans, HAL_MODE_ALL, CTRY_DEFAULT, SKU_NONE, AH_TRUE); > if (status != HAL_OK) { > - if_printf(ifp, "%s: unable to collect channel list from hal, " > - "status %d\n", __func__, status); > + device_printf(sc->sc_dev, > + "%s: unable to collect channel list from hal, status %d\n", > + __func__, status); > return EINVAL; > } > (void) ath_hal_getregdomain(ah, &sc->sc_eerd); > @@ -6538,10 +6548,10 @@ ath_watchdog(void *arg) > > if (ath_hal_gethangstate(sc->sc_ah, 0xffff, &hangs) && > hangs != 0) { > - if_printf(ifp, "%s hang detected (0x%x)\n", > + device_printf(sc->sc_dev, "%s hang detected (0x%x)\n", > hangs & 0xff ? "bb" : "mac", hangs); > } else > - if_printf(ifp, "device timeout\n"); > + device_printf(sc->sc_dev, "device timeout\n"); > do_reset = 1; > if_inc_counter(ifp, IFCOUNTER_OERRORS, 1); > sc->sc_stats.ast_watchdog++; > @@ -6786,31 +6796,32 @@ ath_ioctl(struct ifnet *ifp, u_long cmd, > static void > ath_announce(struct ath_softc *sc) > { > - struct ifnet *ifp = sc->sc_ifp; > struct ath_hal *ah = sc->sc_ah; > > - if_printf(ifp, "AR%s mac %d.%d RF%s phy %d.%d\n", > + device_printf(sc->sc_dev, "AR%s mac %d.%d RF%s phy %d.%d\n", > ath_hal_mac_name(ah), ah->ah_macVersion, ah->ah_macRev, > ath_hal_rf_name(ah), ah->ah_phyRev >> 4, ah->ah_phyRev & 0xf); > - if_printf(ifp, "2GHz radio: 0x%.4x; 5GHz radio: 0x%.4x\n", > + device_printf(sc->sc_dev, "2GHz radio: 0x%.4x; 5GHz radio: 0x%.4x\n", > ah->ah_analog2GhzRev, ah->ah_analog5GhzRev); > if (bootverbose) { > int i; > for (i = 0; i <= WME_AC_VO; i++) { > struct ath_txq *txq = sc->sc_ac2q[i]; > - if_printf(ifp, "Use hw queue %u for %s traffic\n", > - txq->axq_qnum, ieee80211_wme_acnames[i]); > + device_printf(sc->sc_dev, > + "Use hw queue %u for %s traffic\n", > + txq->axq_qnum, ieee80211_wme_acnames[i]); > } > - if_printf(ifp, "Use hw queue %u for CAB traffic\n", > - sc->sc_cabq->axq_qnum); > - if_printf(ifp, "Use hw queue %u for beacons\n", sc->sc_bhalq); > + device_printf(sc->sc_dev, "Use hw queue %u for CAB traffic\n", > + sc->sc_cabq->axq_qnum); > + device_printf(sc->sc_dev, "Use hw queue %u for beacons\n", > + sc->sc_bhalq); > } > if (ath_rxbuf != ATH_RXBUF) > - if_printf(ifp, "using %u rx buffers\n", ath_rxbuf); > + device_printf(sc->sc_dev, "using %u rx buffers\n", ath_rxbuf); > if (ath_txbuf != ATH_TXBUF) > - if_printf(ifp, "using %u tx buffers\n", ath_txbuf); > + device_printf(sc->sc_dev, "using %u tx buffers\n", ath_txbuf); > if (sc->sc_mcastkey && bootverbose) > - if_printf(ifp, "using multicast key search\n"); > + device_printf(sc->sc_dev, "using multicast key search\n"); > } > > static void > > Modified: head/sys/dev/ath/if_ath_rx.c > ============================================================================== > --- head/sys/dev/ath/if_ath_rx.c Fri May 29 14:03:07 2015 (r283743) > +++ head/sys/dev/ath/if_ath_rx.c Fri May 29 14:35:16 2015 (r283744) > @@ -1037,7 +1037,7 @@ ath_rx_proc(struct ath_softc *sc, int re > > bf = TAILQ_FIRST(&sc->sc_rxbuf); > if (sc->sc_rxslink && bf == NULL) { /* NB: shouldn't happen */ > - if_printf(ifp, "%s: no buffer!\n", __func__); > + device_printf(sc->sc_dev, "%s: no buffer!\n", __func__); > break; > } else if (bf == NULL) { > /* > @@ -1054,7 +1054,7 @@ ath_rx_proc(struct ath_softc *sc, int re > * will be no mbuf; try again to re-populate it. > */ > /* XXX make debug msg */ > - if_printf(ifp, "%s: no mbuf!\n", __func__); > + device_printf(sc->sc_dev, "%s: no mbuf!\n", __func__); > TAILQ_REMOVE(&sc->sc_rxbuf, bf, bf_list); > goto rx_proc_next; > } > > Modified: head/sys/dev/ath/if_ath_tdma.c > ============================================================================== > --- head/sys/dev/ath/if_ath_tdma.c Fri May 29 14:03:07 2015 (r283743) > +++ head/sys/dev/ath/if_ath_tdma.c Fri May 29 14:35:16 2015 (r283744) > @@ -259,7 +259,7 @@ ath_tdma_config(struct ath_softc *sc, st > if (vap == NULL) { > vap = TAILQ_FIRST(&ic->ic_vaps); /* XXX */ > if (vap == NULL) { > - if_printf(ifp, "%s: no vaps?\n", __func__); > + device_printf(sc->sc_dev, "%s: no vaps?\n", __func__); > return; > } > } > > Modified: head/sys/dev/ath/if_ath_tx.c > ============================================================================== > --- head/sys/dev/ath/if_ath_tx.c Fri May 29 14:03:07 2015 (r283743) > +++ head/sys/dev/ath/if_ath_tx.c Fri May 29 14:35:16 2015 (r283744) > @@ -1691,8 +1691,8 @@ ath_tx_normal_setup(struct ath_softc *sc > flags |= HAL_TXDESC_NOACK; > break; > default: > - if_printf(ifp, "bogus frame type 0x%x (%s)\n", > - wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK, __func__); > + device_printf(sc->sc_dev, "bogus frame type 0x%x (%s)\n", > + wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK, __func__); > /* XXX statistic */ > /* XXX free tx dmamap */ > ath_freetx(m0); > From owner-svn-src-all@FreeBSD.ORG Fri May 29 16:26:08 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id EC7079BB; Fri, 29 May 2015 16:26:08 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.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 C090C1AFE; Fri, 29 May 2015 16:26:08 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TGQ8fL050400; Fri, 29 May 2015 16:26:08 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TGQ8mt050399; Fri, 29 May 2015 16:26:08 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201505291626.t4TGQ8mt050399@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Fri, 29 May 2015 16:26:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283745 - head/sys/kern X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 16:26:09 -0000 Author: kib Date: Fri May 29 16:26:08 2015 New Revision: 283745 URL: https://svnweb.freebsd.org/changeset/base/283745 Log: When delivering a signal with default disposition to the thread, tdsigwakeup() increases the priority of the low-priority threads, to give them a chance to be terminated timely. Also, kernel allows user to signal kernel processes. The combined effect is that signalling idle process bump a priority of the selected delivery thread, which starts eating CPU. Check for the delivery thread be an idle thread and do not raise its priority then. The signal delivery to the kernel threads must be opt-in feature. Kernel thread should explicitely declare the ability to handle signals directed to it. E.g., nfsd threads check for signal as an indication of exit request. Most threads do not handle signals at all, and queuing the signal to them causes odd side-effects. Most innocent consequence is the memory leak due to queued ksiginfo, which is never deleted from the sigqueue. Code to prevent even queuing signals to the kernel threads is trivial, but it requires careful examination of each call to kproc/kthread creation to decide should the signalling be allowed. The commit is a stop-gap measure which fixes the immediate case for now. PR: 200493 Reported and tested by: trasz Discussed with: trasz, emaste Sponsored by: The FreeBSD Foundation MFC after: 1 week Modified: head/sys/kern/kern_sig.c Modified: head/sys/kern/kern_sig.c ============================================================================== --- head/sys/kern/kern_sig.c Fri May 29 14:35:16 2015 (r283744) +++ head/sys/kern/kern_sig.c Fri May 29 16:26:08 2015 (r283745) @@ -2368,9 +2368,12 @@ tdsigwakeup(struct thread *td, int sig, thread_lock(td); /* * Bring the priority of a thread up if we want it to get - * killed in this lifetime. + * killed in this lifetime. Be careful to avoid bumping the + * priority of the idle thread, since we still allow to signal + * kernel processes. */ - if (action == SIG_DFL && (prop & SA_KILL) && td->td_priority > PUSER) + if (action == SIG_DFL && (prop & SA_KILL) != 0 && + td->td_priority > PUSER && !TD_IS_IDLETHREAD(td)) sched_prio(td, PUSER); if (TD_ON_SLEEPQ(td)) { /* @@ -2408,7 +2411,7 @@ tdsigwakeup(struct thread *td, int sig, /* * Give low priority threads a better chance to run. */ - if (td->td_priority > PUSER) + if (td->td_priority > PUSER && !TD_IS_IDLETHREAD(td)) sched_prio(td, PUSER); wakeup_swapper = sleepq_abort(td, intrval); From owner-svn-src-all@FreeBSD.ORG Fri May 29 17:43:15 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 57D9FC78; Fri, 29 May 2015 17:43:15 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from svn.freebsd.org (svn.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 458AC1E62; Fri, 29 May 2015 17:43:15 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4THhFIl092044; Fri, 29 May 2015 17:43:15 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4THhF0V092043; Fri, 29 May 2015 17:43:15 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201505291743.t4THhF0V092043@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Fri, 29 May 2015 17:43: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: r283748 - stable/10/contrib/ipfilter/tools X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 17:43:15 -0000 Author: emaste Date: Fri May 29 17:43:14 2015 New Revision: 283748 URL: https://svnweb.freebsd.org/changeset/base/283748 Log: MFC r283295: ipf(1): Use strchr(3) instead of deprecated index(3) Sponsored by: The FreeBSD Foundation Modified: stable/10/contrib/ipfilter/tools/ipf.c Directory Properties: stable/10/ (props changed) Modified: stable/10/contrib/ipfilter/tools/ipf.c ============================================================================== --- stable/10/contrib/ipfilter/tools/ipf.c Fri May 29 17:01:15 2015 (r283747) +++ stable/10/contrib/ipfilter/tools/ipf.c Fri May 29 17:43:14 2015 (r283748) @@ -296,7 +296,7 @@ static void packetlogon(opt) printf("set log flag: nomatch\n"); change = 1; } - if (strstr(opt, "block") || index(opt, 'd')) { + if (strstr(opt, "block") || strchr(opt, 'd')) { flag |= FF_LOGBLOCK; if (opts & OPT_VERBOSE) printf("set log flag: block\n"); From owner-svn-src-all@FreeBSD.ORG Fri May 29 19:42:56 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 678CBE53; Fri, 29 May 2015 19:42:56 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from svn.freebsd.org (svn.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 55F4C1D1B; Fri, 29 May 2015 19:42:56 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TJgu6B054239; Fri, 29 May 2015 19:42:56 GMT (envelope-from brooks@FreeBSD.org) Received: (from brooks@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TJguGL054238; Fri, 29 May 2015 19:42:56 GMT (envelope-from brooks@FreeBSD.org) Message-Id: <201505291942.t4TJguGL054238@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: brooks set sender to brooks@FreeBSD.org using -f From: Brooks Davis Date: Fri, 29 May 2015 19:42:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283751 - in head/lib/libc: arm/sys mips/sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 19:42:56 -0000 Author: brooks Date: Fri May 29 19:42:55 2015 New Revision: 283751 URL: https://svnweb.freebsd.org/changeset/base/283751 Log: Removed unused special fork() implementations. The arm version hasn't been used in ages. The mips version uses a valid, but pointless check of v1 and has been unhooked from the build since r276630. Differential Revision: https://reviews.freebsd.org/D2592 Reviewed by: emaste Sponsored by: DARPA, AFRL Deleted: head/lib/libc/arm/sys/fork.S head/lib/libc/mips/sys/fork.S Modified: head/lib/libc/mips/sys/Makefile.inc Modified: head/lib/libc/mips/sys/Makefile.inc ============================================================================== --- head/lib/libc/mips/sys/Makefile.inc Fri May 29 18:17:47 2015 (r283750) +++ head/lib/libc/mips/sys/Makefile.inc Fri May 29 19:42:55 2015 (r283751) @@ -3,7 +3,7 @@ SRCS+= trivial-vdso_tc.c MDASM= Ovfork.S brk.S cerror.S exect.S \ - fork.S pipe.S ptrace.S sbrk.S syscall.S + pipe.S ptrace.S sbrk.S syscall.S # Don't generate default code for these syscalls: NOASM= break.o exit.o getlogin.o openbsd_poll.o sstk.o vfork.o yield.o From owner-svn-src-all@FreeBSD.ORG Fri May 29 20:00:03 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 05E5D306; Fri, 29 May 2015 20:00:03 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from svn.freebsd.org (svn.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 E81E91FCC; Fri, 29 May 2015 20:00:02 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TK025i060597; Fri, 29 May 2015 20:00:02 GMT (envelope-from davidcs@FreeBSD.org) Received: (from davidcs@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TK028Q060596; Fri, 29 May 2015 20:00:02 GMT (envelope-from davidcs@FreeBSD.org) Message-Id: <201505292000.t4TK028Q060596@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: davidcs set sender to davidcs@FreeBSD.org using -f From: David C Somayajulu Date: Fri, 29 May 2015 20:00:02 +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: r283752 - stable/10/sys/dev/bxe X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 20:00:03 -0000 Author: davidcs Date: Fri May 29 20:00:02 2015 New Revision: 283752 URL: https://svnweb.freebsd.org/changeset/base/283752 Log: MFC r283269 Submitted by:gary.zambrano@qlogic.com Approved by:davidcs@freebsd.org Modified: stable/10/sys/dev/bxe/bxe.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/bxe/bxe.c ============================================================================== --- stable/10/sys/dev/bxe/bxe.c Fri May 29 19:42:55 2015 (r283751) +++ stable/10/sys/dev/bxe/bxe.c Fri May 29 20:00:02 2015 (r283752) @@ -3111,7 +3111,7 @@ static inline void bxe_update_sge_prod(struct bxe_softc *sc, struct bxe_fastpath *fp, uint16_t sge_len, - struct eth_end_agg_rx_cqe *cqe) + union eth_sgl_or_raw_data *cqe) { uint16_t last_max, last_elem, first_elem; uint16_t delta = 0; @@ -3124,17 +3124,17 @@ bxe_update_sge_prod(struct bxe_softc /* first mark all used pages */ for (i = 0; i < sge_len; i++) { BIT_VEC64_CLEAR_BIT(fp->sge_mask, - RX_SGE(le16toh(cqe->sgl_or_raw_data.sgl[i]))); + RX_SGE(le16toh(cqe->sgl[i]))); } BLOGD(sc, DBG_LRO, "fp[%02d] fp_cqe->sgl[%d] = %d\n", fp->index, sge_len - 1, - le16toh(cqe->sgl_or_raw_data.sgl[sge_len - 1])); + le16toh(cqe->sgl[sge_len - 1])); /* assume that the last SGE index is the biggest */ bxe_update_last_max_sge(fp, - le16toh(cqe->sgl_or_raw_data.sgl[sge_len - 1])); + le16toh(cqe->sgl[sge_len - 1])); last_max = RX_SGE(fp->last_max_sge); last_elem = last_max >> BIT_VEC64_ELEM_SHIFT; @@ -3250,6 +3250,53 @@ bxe_tpa_stop_exit: } static uint8_t +bxe_service_rxsgl( + struct bxe_fastpath *fp, + uint16_t len, + uint16_t lenonbd, + struct mbuf *m, + struct eth_fast_path_rx_cqe *cqe_fp) +{ + struct mbuf *m_frag; + uint16_t frags, frag_len; + uint16_t sge_idx = 0; + uint16_t j; + uint8_t i, rc = 0; + uint32_t frag_size; + + /* adjust the mbuf */ + m->m_len = lenonbd; + + frag_size = len - lenonbd; + frags = SGE_PAGE_ALIGN(frag_size) >> SGE_PAGE_SHIFT; + + for (i = 0, j = 0; i < frags; i += PAGES_PER_SGE, j++) { + sge_idx = RX_SGE(le16toh(cqe_fp->sgl_or_raw_data.sgl[j])); + + m_frag = fp->rx_sge_mbuf_chain[sge_idx].m; + frag_len = min(frag_size, (uint32_t)(SGE_PAGE_SIZE)); + m_frag->m_len = frag_len; + + /* allocate a new mbuf for the SGE */ + rc = bxe_alloc_rx_sge_mbuf(fp, sge_idx); + if (rc) { + /* Leave all remaining SGEs in the ring! */ + return (rc); + } + fp->eth_q_stats.mbuf_alloc_sge--; + + /* concatenate the fragment to the head mbuf */ + m_cat(m, m_frag); + + frag_size -= frag_len; + } + + bxe_update_sge_prod(fp->sc, fp, frags, &cqe_fp->sgl_or_raw_data); + + return rc; +} + +static uint8_t bxe_rxeof(struct bxe_softc *sc, struct bxe_fastpath *fp) { @@ -3289,7 +3336,7 @@ bxe_rxeof(struct bxe_softc *sc, struct eth_fast_path_rx_cqe *cqe_fp; uint8_t cqe_fp_flags; enum eth_rx_cqe_type cqe_fp_type; - uint16_t len, pad; + uint16_t len, lenonbd, pad; struct mbuf *m = NULL; comp_ring_cons = RCQ(sw_cq_cons); @@ -3304,7 +3351,7 @@ bxe_rxeof(struct bxe_softc *sc, BLOGD(sc, DBG_RX, "fp[%02d] Rx hw_cq_cons=%d hw_sw_cons=%d " "BD prod=%d cons=%d CQE type=0x%x err=0x%x " - "status=0x%x rss_hash=0x%x vlan=0x%x len=%u\n", + "status=0x%x rss_hash=0x%x vlan=0x%x len=%u lenonbd=%u\n", fp->index, hw_cq_cons, sw_cq_cons, @@ -3315,7 +3362,8 @@ bxe_rxeof(struct bxe_softc *sc, cqe_fp->status_flags, le32toh(cqe_fp->rss_hash_result), le16toh(cqe_fp->vlan_tag), - le16toh(cqe_fp->pkt_len_or_gro_seg_len)); + le16toh(cqe_fp->pkt_len_or_gro_seg_len), + le16toh(cqe_fp->len_on_bd)); /* is this a slowpath msg? */ if (__predict_false(CQE_TYPE_SLOW(cqe_fp_type))) { @@ -3362,7 +3410,7 @@ bxe_rxeof(struct bxe_softc *sc, bxe_tpa_stop(sc, fp, tpa_info, queue, pages, &cqe->end_agg_cqe, comp_ring_cons); - bxe_update_sge_prod(sc, fp, pages, &cqe->end_agg_cqe); + bxe_update_sge_prod(sc, fp, pages, &cqe->end_agg_cqe.sgl_or_raw_data); goto next_cqe; } @@ -3378,6 +3426,7 @@ bxe_rxeof(struct bxe_softc *sc, } len = le16toh(cqe_fp->pkt_len_or_gro_seg_len); + lenonbd = le16toh(cqe_fp->len_on_bd); pad = cqe_fp->placement_offset; m = rx_buf->m; @@ -3424,6 +3473,12 @@ bxe_rxeof(struct bxe_softc *sc, m_adj(m, pad); m->m_pkthdr.len = m->m_len = len; + if (len != lenonbd){ + rc = bxe_service_rxsgl(fp, len, lenonbd, m, cqe_fp); + if (rc) + break; + } + /* assign packet to this interface interface */ m->m_pkthdr.rcvif = ifp; @@ -6217,30 +6272,27 @@ static void bxe_set_fp_rx_buf_size(struct bxe_softc *sc) { int i; + uint32_t rx_buf_size; - BLOGD(sc, DBG_LOAD, "mtu = %d\n", sc->mtu); + rx_buf_size = (IP_HEADER_ALIGNMENT_PADDING + ETH_OVERHEAD + sc->mtu); for (i = 0; i < sc->num_queues; i++) { - /* get the Rx buffer size for RX frames */ - sc->fp[i].rx_buf_size = - (IP_HEADER_ALIGNMENT_PADDING + - ETH_OVERHEAD + - sc->mtu); - - BLOGD(sc, DBG_LOAD, "rx_buf_size for fp[%02d] = %d\n", - i, sc->fp[i].rx_buf_size); - - /* get the mbuf allocation size for RX frames */ - if (sc->fp[i].rx_buf_size <= MCLBYTES) { + if(rx_buf_size <= MCLBYTES){ + sc->fp[i].rx_buf_size = rx_buf_size; + sc->fp[i].mbuf_alloc_size = MCLBYTES; + }else if (rx_buf_size <= MJUMPAGESIZE){ + sc->fp[i].rx_buf_size = rx_buf_size; + sc->fp[i].mbuf_alloc_size = MJUMPAGESIZE; + }else if (rx_buf_size <= (MJUMPAGESIZE + MCLBYTES)){ + sc->fp[i].rx_buf_size = MCLBYTES; + sc->fp[i].mbuf_alloc_size = MCLBYTES; + }else if (rx_buf_size <= (2 * MJUMPAGESIZE)){ + sc->fp[i].rx_buf_size = MJUMPAGESIZE; + sc->fp[i].mbuf_alloc_size = MJUMPAGESIZE; + }else { + sc->fp[i].rx_buf_size = MCLBYTES; sc->fp[i].mbuf_alloc_size = MCLBYTES; - } else if (sc->fp[i].rx_buf_size <= BCM_PAGE_SIZE) { - sc->fp[i].mbuf_alloc_size = PAGE_SIZE; - } else { - sc->fp[i].mbuf_alloc_size = MJUM9BYTES; } - - BLOGD(sc, DBG_LOAD, "mbuf_alloc_size for fp[%02d] = %d\n", - i, sc->fp[i].mbuf_alloc_size); } } From owner-svn-src-all@FreeBSD.ORG Fri May 29 20:22:54 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B714098E; Fri, 29 May 2015 20:22:54 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org (svn.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 8BF671721; Fri, 29 May 2015 20:22:54 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TKMsdh074982; Fri, 29 May 2015 20:22:54 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TKMsT5074981; Fri, 29 May 2015 20:22:54 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201505292022.t4TKMsT5074981@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Fri, 29 May 2015 20:22:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283753 - head/sys/fs/nfsserver X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 20:22:54 -0000 Author: rmacklem Date: Fri May 29 20:22:53 2015 New Revision: 283753 URL: https://svnweb.freebsd.org/changeset/base/283753 Log: Make the NFS server use shared vnode locks for a few cases that are allowed by the VFS/VOP interface instead of using exclusive locks. MFC after: 2 weeks Modified: head/sys/fs/nfsserver/nfs_nfsdsocket.c Modified: head/sys/fs/nfsserver/nfs_nfsdsocket.c ============================================================================== --- head/sys/fs/nfsserver/nfs_nfsdsocket.c Fri May 29 20:00:02 2015 (r283752) +++ head/sys/fs/nfsserver/nfs_nfsdsocket.c Fri May 29 20:22:53 2015 (r283753) @@ -440,9 +440,12 @@ nfsrvd_dorpc(struct nfsrv_descript *nd, if (nd->nd_procnum == NFSPROC_READ || nd->nd_procnum == NFSPROC_WRITE || nd->nd_procnum == NFSPROC_READDIR || + nd->nd_procnum == NFSPROC_READDIRPLUS || nd->nd_procnum == NFSPROC_READLINK || nd->nd_procnum == NFSPROC_GETATTR || - nd->nd_procnum == NFSPROC_ACCESS) + nd->nd_procnum == NFSPROC_ACCESS || + nd->nd_procnum == NFSPROC_FSSTAT || + nd->nd_procnum == NFSPROC_FSINFO) lktype = LK_SHARED; else lktype = LK_EXCLUSIVE; @@ -544,7 +547,7 @@ static void nfsrvd_compound(struct nfsrv_descript *nd, int isdgram, u_char *tag, int taglen, u_int32_t minorvers, NFSPROC_T *p) { - int i, op, op0 = 0; + int i, lktype, op, op0 = 0; u_int32_t *tl; struct nfsclient *clp, *nclp; int numops, error = 0, igotlock; @@ -953,11 +956,15 @@ nfsrvd_compound(struct nfsrv_descript *n panic("nfsrvd_compound"); if (nfsv4_opflag[op].needscfh) { if (vp != NULL) { - if (nfsv4_opflag[op].modifyfs) + lktype = nfsv4_opflag[op].lktype; + if (nfsv4_opflag[op].modifyfs) { vn_start_write(vp, &temp_mp, V_WAIT); - if (NFSVOPLOCK(vp, nfsv4_opflag[op].lktype) - == 0) + if (op == NFSV4OP_WRITE && + MNT_SHARED_WRITES(temp_mp)) + lktype = LK_SHARED; + } + if (NFSVOPLOCK(vp, lktype) == 0) VREF(vp); else nd->nd_repstat = NFSERR_PERM; From owner-svn-src-all@FreeBSD.ORG Fri May 29 20:35:48 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 897ADDF1; Fri, 29 May 2015 20:35:48 +0000 (UTC) (envelope-from brooks@spindle.one-eyed-alien.net) Received: from spindle.one-eyed-alien.net (spindle.one-eyed-alien.net [199.48.129.229]) (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 64B7319CE; Fri, 29 May 2015 20:35:48 +0000 (UTC) (envelope-from brooks@spindle.one-eyed-alien.net) Received: by spindle.one-eyed-alien.net (Postfix, from userid 3001) id AB47B5A9F25; Fri, 29 May 2015 20:35:46 +0000 (UTC) Date: Fri, 29 May 2015 20:35:46 +0000 From: Brooks Davis To: Bruce Evans Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283671 - head/sys/sys Message-ID: <20150529203546.GN38480@spindle.one-eyed-alien.net> References: <201505282206.t4SM66Xj090527@svn.freebsd.org> <20150529154745.F900@besplex.bde.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="iJXiJc/TAIT2rh2r" Content-Disposition: inline In-Reply-To: <20150529154745.F900@besplex.bde.org> User-Agent: Mutt/1.5.23 (2014-03-12) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 20:35:48 -0000 --iJXiJc/TAIT2rh2r Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Fri, May 29, 2015 at 05:40:16PM +1000, Bruce Evans wrote: > On Thu, 28 May 2015, Brooks Davis wrote: >=20 > > Log: > > Revert r102953 > > > > The bitfile padding was always unallocated on real-world FreeBSD syste= ms and > > depended on the assumption that (abs(sizeof(long) - sizeof(char*)) <= =3D 32). >=20 > Actually, it was bit-field padding that depended on the assumption that > (abs(sizeof(long) - sizeof(char*)) <=3D CHAR_BIT * sizeof(int). >=20 > It did work under this assumption, and was needed on non-real-world FreeB= SD > systems with correctly-sized longs. Why break it? It doesn't work on CHERI where pointers are 64, 128 or 256 bits depending on the compilation mode and hardware type (in the latter two cases they are not arithmetic types). If this was something we were worried about in practice, forcing the alignment of n_name and n_type to max(sizeof(long), sizeof(char *)) would accomplish the padding in a way that works for any compiler we care about and irrespective of size. -- Brooks --iJXiJc/TAIT2rh2r Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAEBAgAGBQJVaM2iAAoJEKzQXbSebgfA4mYH/2ZDRkoi6tbeAdahDWWkcx7F gHRWvtfIHbxpnGTyC8KouDTh3ELY3Rl24jpQIY2iGqNuI7yc7I77w1yDIgmnbrBX bOM2tChfD9oL9DFN5OTc5rHocgu6lyZxrAPJeKNycQnEsfzkSHr2SPui6mu2gYDQ cHSFlpvT+hU2PqSyPNPwS5G5Sq/Jh8ByFhHNgMIE/qeo6WTT6MPtctybCZCBFBSi Mx0wHwpLgoDDLkp1ZBiKfwAJqdh9m3IBLixYUVpVEKBRIaVkSlMOITRoM3OKKyPs LtCkzGzIqVR5qwfQeP1w+0P4lBfo5QNNQojQL1CaJmzaELTVl7bKXm+LfunDZZc= =sFYM -----END PGP SIGNATURE----- --iJXiJc/TAIT2rh2r-- From owner-svn-src-all@FreeBSD.ORG Fri May 29 20:50:42 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 52750298; Fri, 29 May 2015 20:50:42 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org (svn.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 26CDF1CE9; Fri, 29 May 2015 20:50:42 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TKogvZ086592; Fri, 29 May 2015 20:50:42 GMT (envelope-from marcel@FreeBSD.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TKoggD086591; Fri, 29 May 2015 20:50:42 GMT (envelope-from marcel@FreeBSD.org) Message-Id: <201505292050.t4TKoggD086591@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: marcel set sender to marcel@FreeBSD.org using -f From: Marcel Moolenaar Date: Fri, 29 May 2015 20:50:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283754 - head/sys/dev/mmc X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 20:50:42 -0000 Author: marcel Date: Fri May 29 20:50:41 2015 New Revision: 283754 URL: https://svnweb.freebsd.org/changeset/base/283754 Log: Do not set d_fwsectors nor d_fwheads. Primarily because the values tend to be invalid. On a Beaglebone Black, we get 8192 sectors per track and that causes major breakages. Differential Revision: D2646 Reviewed by: ian@ imp@ Modified: head/sys/dev/mmc/mmcsd.c Modified: head/sys/dev/mmc/mmcsd.c ============================================================================== --- head/sys/dev/mmc/mmcsd.c Fri May 29 20:22:53 2015 (r283753) +++ head/sys/dev/mmc/mmcsd.c Fri May 29 20:50:41 2015 (r283754) @@ -163,33 +163,10 @@ mmcsd_attach(device_t dev) d->d_sectorsize = mmc_get_sector_size(dev); d->d_maxsize = mmc_get_max_data(dev) * d->d_sectorsize; d->d_mediasize = (off_t)mmc_get_media_size(dev) * d->d_sectorsize; - d->d_stripeoffset = 0; d->d_stripesize = mmc_get_erase_sector(dev) * d->d_sectorsize; d->d_unit = device_get_unit(dev); d->d_flags = DISKFLAG_CANDELETE; - d->d_delmaxsize = mmc_get_erase_sector(dev) * d->d_sectorsize * 1; /* conservative */ - /* - * The d_fw* values are fake. However, layout is aided by making the - * number of fwsectors equal to the erase sectors from the drive since - * we set the stripe size equal to that. We set fwheads such that there - * are ~20 cylinder groups since all values are somewhat arbitrary here - * and this gives good behavior with ffs without wasting too much - * space. Sadly, geom_part wants to round partitions to these - * values. While not bad, in and of itself, the values we present here - * will almost certainly be different then the values that USB SD - * adapters use and there's too much variation between brands to just - * use those values here. Also SD to ATA adapters favor traditional - * ata sizes, which are different again from the USB adapters (which - * favor SCSI values). This rounding leads to a loss of up to 5% of the - * usable space (usually much less, but that's why 20 was selected: to - * limit this effect at a few percent). gpart needs a way to override - * this behavior for situations like this, but doesn't provide - * one. Perhaps this behavior should be tunable as well, but maybe that - * belongs in the disk layer. These values will be much better than - * the default ones. - */ - d->d_fwsectors = mmc_get_erase_sector(dev); - d->d_fwheads = mmc_get_media_size(dev) / (d->d_fwsectors * 20); + d->d_delmaxsize = mmc_get_erase_sector(dev) * d->d_sectorsize; strlcpy(d->d_ident, mmc_get_card_sn_string(dev), sizeof(d->d_ident)); strlcpy(d->d_descr, mmc_get_card_id_string(dev), sizeof(d->d_descr)); From owner-svn-src-all@FreeBSD.ORG Fri May 29 21:30:12 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7EC1032B; Fri, 29 May 2015 21:30:12 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from svn.freebsd.org (svn.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 602441863; Fri, 29 May 2015 21:30:12 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TLUC2s006841; Fri, 29 May 2015 21:30:12 GMT (envelope-from davidcs@FreeBSD.org) Received: (from davidcs@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TLUBmf006829; Fri, 29 May 2015 21:30:11 GMT (envelope-from davidcs@FreeBSD.org) Message-Id: <201505292130.t4TLUBmf006829@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: davidcs set sender to davidcs@FreeBSD.org using -f From: David C Somayajulu Date: Fri, 29 May 2015 21:30:11 +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: r283755 - stable/10/sys/dev/bxe X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 21:30:12 -0000 Author: davidcs Date: Fri May 29 21:30:11 2015 New Revision: 283755 URL: https://svnweb.freebsd.org/changeset/base/283755 Log: MFC r283274 Submitted by: gary.zambrano@qlogic.com Approved by:davidcs@freebsd.org Modified: stable/10/sys/dev/bxe/bxe.c stable/10/sys/dev/bxe/bxe_stats.c stable/10/sys/dev/bxe/bxe_stats.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/bxe/bxe.c ============================================================================== --- stable/10/sys/dev/bxe/bxe.c Fri May 29 20:50:41 2015 (r283754) +++ stable/10/sys/dev/bxe/bxe.c Fri May 29 21:30:11 2015 (r283755) @@ -27,7 +27,7 @@ #include __FBSDID("$FreeBSD$"); -#define BXE_DRIVER_VERSION "1.78.78" +#define BXE_DRIVER_VERSION "1.78.79" #include "bxe.h" #include "ecore_sp.h" @@ -483,6 +483,8 @@ static const struct { 4, STATS_FLAGS_FUNC, "rx_pkts"}, { STATS_OFFSET32(rx_tpa_pkts), 4, STATS_FLAGS_FUNC, "rx_tpa_pkts"}, + { STATS_OFFSET32(rx_jumbo_sge_pkts), + 4, STATS_FLAGS_FUNC, "rx_jumbo_sge_pkts"}, { STATS_OFFSET32(rx_soft_errors), 4, STATS_FLAGS_FUNC, "rx_soft_errors"}, { STATS_OFFSET32(rx_hw_csum_errors), @@ -594,6 +596,8 @@ static const struct { 4, "rx_pkts"}, { Q_STATS_OFFSET32(rx_tpa_pkts), 4, "rx_tpa_pkts"}, + { Q_STATS_OFFSET32(rx_jumbo_sge_pkts), + 4, "rx_jumbo_sge_pkts"}, { Q_STATS_OFFSET32(rx_soft_errors), 4, "rx_soft_errors"}, { Q_STATS_OFFSET32(rx_hw_csum_errors), @@ -3477,6 +3481,7 @@ bxe_rxeof(struct bxe_softc *sc, rc = bxe_service_rxsgl(fp, len, lenonbd, m, cqe_fp); if (rc) break; + fp->eth_q_stats.rx_jumbo_sge_pkts++; } /* assign packet to this interface interface */ @@ -6851,42 +6856,40 @@ bxe_alloc_fp_buffers(struct bxe_softc *s fp->rx_cq_prod = cqe_ring_prod; fp->eth_q_stats.rx_calls = fp->eth_q_stats.rx_pkts = 0; - if (sc->ifnet->if_capenable & IFCAP_LRO) { - max_agg_queues = MAX_AGG_QS(sc); + max_agg_queues = MAX_AGG_QS(sc); - fp->tpa_enable = TRUE; + fp->tpa_enable = TRUE; - /* fill the TPA pool */ - for (j = 0; j < max_agg_queues; j++) { - rc = bxe_alloc_rx_tpa_mbuf(fp, j); - if (rc != 0) { - BLOGE(sc, "mbuf alloc fail for fp[%02d] TPA queue %d\n", + /* fill the TPA pool */ + for (j = 0; j < max_agg_queues; j++) { + rc = bxe_alloc_rx_tpa_mbuf(fp, j); + if (rc != 0) { + BLOGE(sc, "mbuf alloc fail for fp[%02d] TPA queue %d\n", i, j); - fp->tpa_enable = FALSE; - goto bxe_alloc_fp_buffers_error; - } - - fp->rx_tpa_info[j].state = BXE_TPA_STATE_STOP; + fp->tpa_enable = FALSE; + goto bxe_alloc_fp_buffers_error; } - if (fp->tpa_enable) { - /* fill the RX SGE chain */ - ring_prod = 0; - for (j = 0; j < RX_SGE_USABLE; j++) { - rc = bxe_alloc_rx_sge_mbuf(fp, ring_prod); - if (rc != 0) { - BLOGE(sc, "mbuf alloc fail for fp[%02d] SGE %d\n", - i, ring_prod); - fp->tpa_enable = FALSE; - ring_prod = 0; - goto bxe_alloc_fp_buffers_error; - } + fp->rx_tpa_info[j].state = BXE_TPA_STATE_STOP; + } - ring_prod = RX_SGE_NEXT(ring_prod); + if (fp->tpa_enable) { + /* fill the RX SGE chain */ + ring_prod = 0; + for (j = 0; j < RX_SGE_USABLE; j++) { + rc = bxe_alloc_rx_sge_mbuf(fp, ring_prod); + if (rc != 0) { + BLOGE(sc, "mbuf alloc fail for fp[%02d] SGE %d\n", + i, ring_prod); + fp->tpa_enable = FALSE; + ring_prod = 0; + goto bxe_alloc_fp_buffers_error; } - fp->rx_sge_prod = ring_prod; + ring_prod = RX_SGE_NEXT(ring_prod); } + + fp->rx_sge_prod = ring_prod; } } @@ -11770,28 +11773,26 @@ bxe_pf_rx_q_prep(struct bxe_softc uint16_t sge_sz = 0; uint16_t tpa_agg_size = 0; - if (sc->ifnet->if_capenable & IFCAP_LRO) { - pause->sge_th_lo = SGE_TH_LO(sc); - pause->sge_th_hi = SGE_TH_HI(sc); + pause->sge_th_lo = SGE_TH_LO(sc); + pause->sge_th_hi = SGE_TH_HI(sc); - /* validate SGE ring has enough to cross high threshold */ - if (sc->dropless_fc && + /* validate SGE ring has enough to cross high threshold */ + if (sc->dropless_fc && (pause->sge_th_hi + FW_PREFETCH_CNT) > (RX_SGE_USABLE_PER_PAGE * RX_SGE_NUM_PAGES)) { - BLOGW(sc, "sge ring threshold limit\n"); - } + BLOGW(sc, "sge ring threshold limit\n"); + } - /* minimum max_aggregation_size is 2*MTU (two full buffers) */ - tpa_agg_size = (2 * sc->mtu); - if (tpa_agg_size < sc->max_aggregation_size) { - tpa_agg_size = sc->max_aggregation_size; - } + /* minimum max_aggregation_size is 2*MTU (two full buffers) */ + tpa_agg_size = (2 * sc->mtu); + if (tpa_agg_size < sc->max_aggregation_size) { + tpa_agg_size = sc->max_aggregation_size; + } - max_sge = SGE_PAGE_ALIGN(sc->mtu) >> SGE_PAGE_SHIFT; - max_sge = ((max_sge + PAGES_PER_SGE - 1) & + max_sge = SGE_PAGE_ALIGN(sc->mtu) >> SGE_PAGE_SHIFT; + max_sge = ((max_sge + PAGES_PER_SGE - 1) & (~(PAGES_PER_SGE - 1))) >> PAGES_PER_SGE_SHIFT; - sge_sz = (uint16_t)min(SGE_PAGES, 0xffff); - } + sge_sz = (uint16_t)min(SGE_PAGES, 0xffff); /* pause - not for e1 */ if (!CHIP_IS_E1(sc)) { Modified: stable/10/sys/dev/bxe/bxe_stats.c ============================================================================== --- stable/10/sys/dev/bxe/bxe_stats.c Fri May 29 20:50:41 2015 (r283754) +++ stable/10/sys/dev/bxe/bxe_stats.c Fri May 29 21:30:11 2015 (r283755) @@ -1227,6 +1227,7 @@ bxe_drv_stats_update(struct bxe_softc *s UPDATE_ESTAT_QSTAT(rx_calls); UPDATE_ESTAT_QSTAT(rx_pkts); UPDATE_ESTAT_QSTAT(rx_tpa_pkts); + UPDATE_ESTAT_QSTAT(rx_jumbo_sge_pkts); UPDATE_ESTAT_QSTAT(rx_soft_errors); UPDATE_ESTAT_QSTAT(rx_hw_csum_errors); UPDATE_ESTAT_QSTAT(rx_ofld_frames_csum_ip); Modified: stable/10/sys/dev/bxe/bxe_stats.h ============================================================================== --- stable/10/sys/dev/bxe/bxe_stats.h Fri May 29 20:50:41 2015 (r283754) +++ stable/10/sys/dev/bxe/bxe_stats.h Fri May 29 21:30:11 2015 (r283755) @@ -218,6 +218,7 @@ struct bxe_eth_stats { uint32_t rx_calls; uint32_t rx_pkts; uint32_t rx_tpa_pkts; + uint32_t rx_jumbo_sge_pkts; uint32_t rx_soft_errors; uint32_t rx_hw_csum_errors; uint32_t rx_ofld_frames_csum_ip; @@ -318,6 +319,7 @@ struct bxe_eth_q_stats { uint32_t rx_calls; uint32_t rx_pkts; uint32_t rx_tpa_pkts; + uint32_t rx_jumbo_sge_pkts; uint32_t rx_soft_errors; uint32_t rx_hw_csum_errors; uint32_t rx_ofld_frames_csum_ip; @@ -411,6 +413,7 @@ struct bxe_eth_q_stats_old { uint32_t rx_calls_old; uint32_t rx_pkts_old; uint32_t rx_tpa_pkts_old; + uint32_t rx_jumbo_sge_pkts_old; uint32_t rx_soft_errors_old; uint32_t rx_hw_csum_errors_old; uint32_t rx_ofld_frames_csum_ip_old; From owner-svn-src-all@FreeBSD.ORG Fri May 29 22:27:48 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id DB6945E7; Fri, 29 May 2015 22:27:48 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from svn.freebsd.org (svn.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 C87A21875; Fri, 29 May 2015 22:27:48 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TMRmgW037064; Fri, 29 May 2015 22:27:48 GMT (envelope-from davidcs@FreeBSD.org) Received: (from davidcs@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TMRm1A037063; Fri, 29 May 2015 22:27:48 GMT (envelope-from davidcs@FreeBSD.org) Message-Id: <201505292227.t4TMRm1A037063@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: davidcs set sender to davidcs@FreeBSD.org using -f From: David C Somayajulu Date: Fri, 29 May 2015 22:27:48 +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: r283756 - stable/9/sys/dev/bxe X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 22:27:49 -0000 Author: davidcs Date: Fri May 29 22:27:48 2015 New Revision: 283756 URL: https://svnweb.freebsd.org/changeset/base/283756 Log: MFC r283269 Submitted by: gary.zambrano@qlogic.com Approved by:davidcs@freebsd.org Modified: stable/9/sys/dev/bxe/bxe.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/dev/ (props changed) Modified: stable/9/sys/dev/bxe/bxe.c ============================================================================== --- stable/9/sys/dev/bxe/bxe.c Fri May 29 21:30:11 2015 (r283755) +++ stable/9/sys/dev/bxe/bxe.c Fri May 29 22:27:48 2015 (r283756) @@ -3111,7 +3111,7 @@ static inline void bxe_update_sge_prod(struct bxe_softc *sc, struct bxe_fastpath *fp, uint16_t sge_len, - struct eth_end_agg_rx_cqe *cqe) + union eth_sgl_or_raw_data *cqe) { uint16_t last_max, last_elem, first_elem; uint16_t delta = 0; @@ -3124,17 +3124,17 @@ bxe_update_sge_prod(struct bxe_softc /* first mark all used pages */ for (i = 0; i < sge_len; i++) { BIT_VEC64_CLEAR_BIT(fp->sge_mask, - RX_SGE(le16toh(cqe->sgl_or_raw_data.sgl[i]))); + RX_SGE(le16toh(cqe->sgl[i]))); } BLOGD(sc, DBG_LRO, "fp[%02d] fp_cqe->sgl[%d] = %d\n", fp->index, sge_len - 1, - le16toh(cqe->sgl_or_raw_data.sgl[sge_len - 1])); + le16toh(cqe->sgl[sge_len - 1])); /* assume that the last SGE index is the biggest */ bxe_update_last_max_sge(fp, - le16toh(cqe->sgl_or_raw_data.sgl[sge_len - 1])); + le16toh(cqe->sgl[sge_len - 1])); last_max = RX_SGE(fp->last_max_sge); last_elem = last_max >> BIT_VEC64_ELEM_SHIFT; @@ -3250,6 +3250,53 @@ bxe_tpa_stop_exit: } static uint8_t +bxe_service_rxsgl( + struct bxe_fastpath *fp, + uint16_t len, + uint16_t lenonbd, + struct mbuf *m, + struct eth_fast_path_rx_cqe *cqe_fp) +{ + struct mbuf *m_frag; + uint16_t frags, frag_len; + uint16_t sge_idx = 0; + uint16_t j; + uint8_t i, rc = 0; + uint32_t frag_size; + + /* adjust the mbuf */ + m->m_len = lenonbd; + + frag_size = len - lenonbd; + frags = SGE_PAGE_ALIGN(frag_size) >> SGE_PAGE_SHIFT; + + for (i = 0, j = 0; i < frags; i += PAGES_PER_SGE, j++) { + sge_idx = RX_SGE(le16toh(cqe_fp->sgl_or_raw_data.sgl[j])); + + m_frag = fp->rx_sge_mbuf_chain[sge_idx].m; + frag_len = min(frag_size, (uint32_t)(SGE_PAGE_SIZE)); + m_frag->m_len = frag_len; + + /* allocate a new mbuf for the SGE */ + rc = bxe_alloc_rx_sge_mbuf(fp, sge_idx); + if (rc) { + /* Leave all remaining SGEs in the ring! */ + return (rc); + } + fp->eth_q_stats.mbuf_alloc_sge--; + + /* concatenate the fragment to the head mbuf */ + m_cat(m, m_frag); + + frag_size -= frag_len; + } + + bxe_update_sge_prod(fp->sc, fp, frags, &cqe_fp->sgl_or_raw_data); + + return rc; +} + +static uint8_t bxe_rxeof(struct bxe_softc *sc, struct bxe_fastpath *fp) { @@ -3289,7 +3336,7 @@ bxe_rxeof(struct bxe_softc *sc, struct eth_fast_path_rx_cqe *cqe_fp; uint8_t cqe_fp_flags; enum eth_rx_cqe_type cqe_fp_type; - uint16_t len, pad; + uint16_t len, lenonbd, pad; struct mbuf *m = NULL; comp_ring_cons = RCQ(sw_cq_cons); @@ -3304,7 +3351,7 @@ bxe_rxeof(struct bxe_softc *sc, BLOGD(sc, DBG_RX, "fp[%02d] Rx hw_cq_cons=%d hw_sw_cons=%d " "BD prod=%d cons=%d CQE type=0x%x err=0x%x " - "status=0x%x rss_hash=0x%x vlan=0x%x len=%u\n", + "status=0x%x rss_hash=0x%x vlan=0x%x len=%u lenonbd=%u\n", fp->index, hw_cq_cons, sw_cq_cons, @@ -3315,7 +3362,8 @@ bxe_rxeof(struct bxe_softc *sc, cqe_fp->status_flags, le32toh(cqe_fp->rss_hash_result), le16toh(cqe_fp->vlan_tag), - le16toh(cqe_fp->pkt_len_or_gro_seg_len)); + le16toh(cqe_fp->pkt_len_or_gro_seg_len), + le16toh(cqe_fp->len_on_bd)); /* is this a slowpath msg? */ if (__predict_false(CQE_TYPE_SLOW(cqe_fp_type))) { @@ -3362,7 +3410,7 @@ bxe_rxeof(struct bxe_softc *sc, bxe_tpa_stop(sc, fp, tpa_info, queue, pages, &cqe->end_agg_cqe, comp_ring_cons); - bxe_update_sge_prod(sc, fp, pages, &cqe->end_agg_cqe); + bxe_update_sge_prod(sc, fp, pages, &cqe->end_agg_cqe.sgl_or_raw_data); goto next_cqe; } @@ -3378,6 +3426,7 @@ bxe_rxeof(struct bxe_softc *sc, } len = le16toh(cqe_fp->pkt_len_or_gro_seg_len); + lenonbd = le16toh(cqe_fp->len_on_bd); pad = cqe_fp->placement_offset; m = rx_buf->m; @@ -3424,6 +3473,12 @@ bxe_rxeof(struct bxe_softc *sc, m_adj(m, pad); m->m_pkthdr.len = m->m_len = len; + if (len != lenonbd){ + rc = bxe_service_rxsgl(fp, len, lenonbd, m, cqe_fp); + if (rc) + break; + } + /* assign packet to this interface interface */ m->m_pkthdr.rcvif = ifp; @@ -6226,30 +6281,27 @@ static void bxe_set_fp_rx_buf_size(struct bxe_softc *sc) { int i; + uint32_t rx_buf_size; - BLOGD(sc, DBG_LOAD, "mtu = %d\n", sc->mtu); + rx_buf_size = (IP_HEADER_ALIGNMENT_PADDING + ETH_OVERHEAD + sc->mtu); for (i = 0; i < sc->num_queues; i++) { - /* get the Rx buffer size for RX frames */ - sc->fp[i].rx_buf_size = - (IP_HEADER_ALIGNMENT_PADDING + - ETH_OVERHEAD + - sc->mtu); - - BLOGD(sc, DBG_LOAD, "rx_buf_size for fp[%02d] = %d\n", - i, sc->fp[i].rx_buf_size); - - /* get the mbuf allocation size for RX frames */ - if (sc->fp[i].rx_buf_size <= MCLBYTES) { + if(rx_buf_size <= MCLBYTES){ + sc->fp[i].rx_buf_size = rx_buf_size; + sc->fp[i].mbuf_alloc_size = MCLBYTES; + }else if (rx_buf_size <= MJUMPAGESIZE){ + sc->fp[i].rx_buf_size = rx_buf_size; + sc->fp[i].mbuf_alloc_size = MJUMPAGESIZE; + }else if (rx_buf_size <= (MJUMPAGESIZE + MCLBYTES)){ + sc->fp[i].rx_buf_size = MCLBYTES; + sc->fp[i].mbuf_alloc_size = MCLBYTES; + }else if (rx_buf_size <= (2 * MJUMPAGESIZE)){ + sc->fp[i].rx_buf_size = MJUMPAGESIZE; + sc->fp[i].mbuf_alloc_size = MJUMPAGESIZE; + }else { + sc->fp[i].rx_buf_size = MCLBYTES; sc->fp[i].mbuf_alloc_size = MCLBYTES; - } else if (sc->fp[i].rx_buf_size <= BCM_PAGE_SIZE) { - sc->fp[i].mbuf_alloc_size = PAGE_SIZE; - } else { - sc->fp[i].mbuf_alloc_size = MJUM9BYTES; } - - BLOGD(sc, DBG_LOAD, "mbuf_alloc_size for fp[%02d] = %d\n", - i, sc->fp[i].mbuf_alloc_size); } } From owner-svn-src-all@FreeBSD.ORG Fri May 29 22:33:08 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 6092E803; Fri, 29 May 2015 22:33:08 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from svn.freebsd.org (svn.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 425B31A9C; Fri, 29 May 2015 22:33:08 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TMX8we041703; Fri, 29 May 2015 22:33:08 GMT (envelope-from davidcs@FreeBSD.org) Received: (from davidcs@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TMX77g041700; Fri, 29 May 2015 22:33:07 GMT (envelope-from davidcs@FreeBSD.org) Message-Id: <201505292233.t4TMX77g041700@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: davidcs set sender to davidcs@FreeBSD.org using -f From: David C Somayajulu Date: Fri, 29 May 2015 22:33:07 +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: r283757 - stable/9/sys/dev/bxe X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 22:33:08 -0000 Author: davidcs Date: Fri May 29 22:33:06 2015 New Revision: 283757 URL: https://svnweb.freebsd.org/changeset/base/283757 Log: MFC r283274 Submitted by: gary.zambrano@qlogic.com Approved by:davidcs@freebsd.org Modified: stable/9/sys/dev/bxe/bxe.c stable/9/sys/dev/bxe/bxe_stats.c stable/9/sys/dev/bxe/bxe_stats.h Directory Properties: stable/9/sys/ (props changed) stable/9/sys/dev/ (props changed) Modified: stable/9/sys/dev/bxe/bxe.c ============================================================================== --- stable/9/sys/dev/bxe/bxe.c Fri May 29 22:27:48 2015 (r283756) +++ stable/9/sys/dev/bxe/bxe.c Fri May 29 22:33:06 2015 (r283757) @@ -27,7 +27,7 @@ #include __FBSDID("$FreeBSD$"); -#define BXE_DRIVER_VERSION "1.78.78" +#define BXE_DRIVER_VERSION "1.78.79" #include "bxe.h" #include "ecore_sp.h" @@ -483,6 +483,8 @@ static const struct { 4, STATS_FLAGS_FUNC, "rx_pkts"}, { STATS_OFFSET32(rx_tpa_pkts), 4, STATS_FLAGS_FUNC, "rx_tpa_pkts"}, + { STATS_OFFSET32(rx_jumbo_sge_pkts), + 4, STATS_FLAGS_FUNC, "rx_jumbo_sge_pkts"}, { STATS_OFFSET32(rx_soft_errors), 4, STATS_FLAGS_FUNC, "rx_soft_errors"}, { STATS_OFFSET32(rx_hw_csum_errors), @@ -594,6 +596,8 @@ static const struct { 4, "rx_pkts"}, { Q_STATS_OFFSET32(rx_tpa_pkts), 4, "rx_tpa_pkts"}, + { Q_STATS_OFFSET32(rx_jumbo_sge_pkts), + 4, "rx_jumbo_sge_pkts"}, { Q_STATS_OFFSET32(rx_soft_errors), 4, "rx_soft_errors"}, { Q_STATS_OFFSET32(rx_hw_csum_errors), @@ -3477,6 +3481,7 @@ bxe_rxeof(struct bxe_softc *sc, rc = bxe_service_rxsgl(fp, len, lenonbd, m, cqe_fp); if (rc) break; + fp->eth_q_stats.rx_jumbo_sge_pkts++; } /* assign packet to this interface interface */ @@ -6860,42 +6865,40 @@ bxe_alloc_fp_buffers(struct bxe_softc *s fp->rx_cq_prod = cqe_ring_prod; fp->eth_q_stats.rx_calls = fp->eth_q_stats.rx_pkts = 0; - if (sc->ifnet->if_capenable & IFCAP_LRO) { - max_agg_queues = MAX_AGG_QS(sc); + max_agg_queues = MAX_AGG_QS(sc); - fp->tpa_enable = TRUE; + fp->tpa_enable = TRUE; - /* fill the TPA pool */ - for (j = 0; j < max_agg_queues; j++) { - rc = bxe_alloc_rx_tpa_mbuf(fp, j); - if (rc != 0) { - BLOGE(sc, "mbuf alloc fail for fp[%02d] TPA queue %d\n", + /* fill the TPA pool */ + for (j = 0; j < max_agg_queues; j++) { + rc = bxe_alloc_rx_tpa_mbuf(fp, j); + if (rc != 0) { + BLOGE(sc, "mbuf alloc fail for fp[%02d] TPA queue %d\n", i, j); - fp->tpa_enable = FALSE; - goto bxe_alloc_fp_buffers_error; - } - - fp->rx_tpa_info[j].state = BXE_TPA_STATE_STOP; + fp->tpa_enable = FALSE; + goto bxe_alloc_fp_buffers_error; } - if (fp->tpa_enable) { - /* fill the RX SGE chain */ - ring_prod = 0; - for (j = 0; j < RX_SGE_USABLE; j++) { - rc = bxe_alloc_rx_sge_mbuf(fp, ring_prod); - if (rc != 0) { - BLOGE(sc, "mbuf alloc fail for fp[%02d] SGE %d\n", - i, ring_prod); - fp->tpa_enable = FALSE; - ring_prod = 0; - goto bxe_alloc_fp_buffers_error; - } + fp->rx_tpa_info[j].state = BXE_TPA_STATE_STOP; + } - ring_prod = RX_SGE_NEXT(ring_prod); + if (fp->tpa_enable) { + /* fill the RX SGE chain */ + ring_prod = 0; + for (j = 0; j < RX_SGE_USABLE; j++) { + rc = bxe_alloc_rx_sge_mbuf(fp, ring_prod); + if (rc != 0) { + BLOGE(sc, "mbuf alloc fail for fp[%02d] SGE %d\n", + i, ring_prod); + fp->tpa_enable = FALSE; + ring_prod = 0; + goto bxe_alloc_fp_buffers_error; } - fp->rx_sge_prod = ring_prod; + ring_prod = RX_SGE_NEXT(ring_prod); } + + fp->rx_sge_prod = ring_prod; } } @@ -11779,28 +11782,26 @@ bxe_pf_rx_q_prep(struct bxe_softc uint16_t sge_sz = 0; uint16_t tpa_agg_size = 0; - if (sc->ifnet->if_capenable & IFCAP_LRO) { - pause->sge_th_lo = SGE_TH_LO(sc); - pause->sge_th_hi = SGE_TH_HI(sc); + pause->sge_th_lo = SGE_TH_LO(sc); + pause->sge_th_hi = SGE_TH_HI(sc); - /* validate SGE ring has enough to cross high threshold */ - if (sc->dropless_fc && + /* validate SGE ring has enough to cross high threshold */ + if (sc->dropless_fc && (pause->sge_th_hi + FW_PREFETCH_CNT) > (RX_SGE_USABLE_PER_PAGE * RX_SGE_NUM_PAGES)) { - BLOGW(sc, "sge ring threshold limit\n"); - } + BLOGW(sc, "sge ring threshold limit\n"); + } - /* minimum max_aggregation_size is 2*MTU (two full buffers) */ - tpa_agg_size = (2 * sc->mtu); - if (tpa_agg_size < sc->max_aggregation_size) { - tpa_agg_size = sc->max_aggregation_size; - } + /* minimum max_aggregation_size is 2*MTU (two full buffers) */ + tpa_agg_size = (2 * sc->mtu); + if (tpa_agg_size < sc->max_aggregation_size) { + tpa_agg_size = sc->max_aggregation_size; + } - max_sge = SGE_PAGE_ALIGN(sc->mtu) >> SGE_PAGE_SHIFT; - max_sge = ((max_sge + PAGES_PER_SGE - 1) & + max_sge = SGE_PAGE_ALIGN(sc->mtu) >> SGE_PAGE_SHIFT; + max_sge = ((max_sge + PAGES_PER_SGE - 1) & (~(PAGES_PER_SGE - 1))) >> PAGES_PER_SGE_SHIFT; - sge_sz = (uint16_t)min(SGE_PAGES, 0xffff); - } + sge_sz = (uint16_t)min(SGE_PAGES, 0xffff); /* pause - not for e1 */ if (!CHIP_IS_E1(sc)) { Modified: stable/9/sys/dev/bxe/bxe_stats.c ============================================================================== --- stable/9/sys/dev/bxe/bxe_stats.c Fri May 29 22:27:48 2015 (r283756) +++ stable/9/sys/dev/bxe/bxe_stats.c Fri May 29 22:33:06 2015 (r283757) @@ -1227,6 +1227,7 @@ bxe_drv_stats_update(struct bxe_softc *s UPDATE_ESTAT_QSTAT(rx_calls); UPDATE_ESTAT_QSTAT(rx_pkts); UPDATE_ESTAT_QSTAT(rx_tpa_pkts); + UPDATE_ESTAT_QSTAT(rx_jumbo_sge_pkts); UPDATE_ESTAT_QSTAT(rx_soft_errors); UPDATE_ESTAT_QSTAT(rx_hw_csum_errors); UPDATE_ESTAT_QSTAT(rx_ofld_frames_csum_ip); Modified: stable/9/sys/dev/bxe/bxe_stats.h ============================================================================== --- stable/9/sys/dev/bxe/bxe_stats.h Fri May 29 22:27:48 2015 (r283756) +++ stable/9/sys/dev/bxe/bxe_stats.h Fri May 29 22:33:06 2015 (r283757) @@ -218,6 +218,7 @@ struct bxe_eth_stats { uint32_t rx_calls; uint32_t rx_pkts; uint32_t rx_tpa_pkts; + uint32_t rx_jumbo_sge_pkts; uint32_t rx_soft_errors; uint32_t rx_hw_csum_errors; uint32_t rx_ofld_frames_csum_ip; @@ -318,6 +319,7 @@ struct bxe_eth_q_stats { uint32_t rx_calls; uint32_t rx_pkts; uint32_t rx_tpa_pkts; + uint32_t rx_jumbo_sge_pkts; uint32_t rx_soft_errors; uint32_t rx_hw_csum_errors; uint32_t rx_ofld_frames_csum_ip; @@ -411,6 +413,7 @@ struct bxe_eth_q_stats_old { uint32_t rx_calls_old; uint32_t rx_pkts_old; uint32_t rx_tpa_pkts_old; + uint32_t rx_jumbo_sge_pkts_old; uint32_t rx_soft_errors_old; uint32_t rx_hw_csum_errors_old; uint32_t rx_ofld_frames_csum_ip_old; From owner-svn-src-all@FreeBSD.ORG Fri May 29 23:02:14 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A9A22CC5; Fri, 29 May 2015 23:02:14 +0000 (UTC) (envelope-from erj@FreeBSD.org) Received: from svn.freebsd.org (svn.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 9615B116F; Fri, 29 May 2015 23:02:14 +0000 (UTC) (envelope-from erj@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TN2EnW056674; Fri, 29 May 2015 23:02:14 GMT (envelope-from erj@FreeBSD.org) Received: (from erj@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TN2DrI056654; Fri, 29 May 2015 23:02:13 GMT (envelope-from erj@FreeBSD.org) Message-Id: <201505292302.t4TN2DrI056654@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: erj set sender to erj@FreeBSD.org using -f From: Eric Joyner Date: Fri, 29 May 2015 23:02:13 +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: r283758 - in stable/10: sbin/ifconfig sys/net sys/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-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 23:02:14 -0000 Author: erj Date: Fri May 29 23:02:12 2015 New Revision: 283758 URL: https://svnweb.freebsd.org/changeset/base/283758 Log: MFC r281236 -- extended media types in if_media.h. Approved by: jfv (mentor) Modified: stable/10/sbin/ifconfig/ifmedia.c stable/10/sys/net/ieee8023ad_lacp.c stable/10/sys/net/if.c stable/10/sys/net/if_media.c stable/10/sys/net/if_media.h stable/10/sys/sys/sockio.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sbin/ifconfig/ifmedia.c ============================================================================== --- stable/10/sbin/ifconfig/ifmedia.c Fri May 29 22:33:06 2015 (r283757) +++ stable/10/sbin/ifconfig/ifmedia.c Fri May 29 23:02:12 2015 (r283758) @@ -109,11 +109,17 @@ media_status(int s) { struct ifmediareq ifmr; int *media_list, i; + int xmedia = 1; (void) memset(&ifmr, 0, sizeof(ifmr)); (void) strncpy(ifmr.ifm_name, name, sizeof(ifmr.ifm_name)); - if (ioctl(s, SIOCGIFMEDIA, (caddr_t)&ifmr) < 0) { + /* + * Check if interface supports extended media types. + */ + if (ioctl(s, SIOCGIFXMEDIA, (caddr_t)&ifmr) < 0) + xmedia = 0; + if (xmedia == 0 && ioctl(s, SIOCGIFMEDIA, (caddr_t)&ifmr) < 0) { /* * Interface doesn't support SIOC{G,S}IFMEDIA. */ @@ -130,8 +136,13 @@ media_status(int s) err(1, "malloc"); ifmr.ifm_ulist = media_list; - if (ioctl(s, SIOCGIFMEDIA, (caddr_t)&ifmr) < 0) - err(1, "SIOCGIFMEDIA"); + if (xmedia) { + if (ioctl(s, SIOCGIFXMEDIA, (caddr_t)&ifmr) < 0) + err(1, "SIOCGIFXMEDIA"); + } else { + if (ioctl(s, SIOCGIFMEDIA, (caddr_t)&ifmr) < 0) + err(1, "SIOCGIFMEDIA"); + } printf("\tmedia: "); print_media_word(ifmr.ifm_current, 1); @@ -194,6 +205,7 @@ ifmedia_getstate(int s) { static struct ifmediareq *ifmr = NULL; int *mwords; + int xmedia = 1; if (ifmr == NULL) { ifmr = (struct ifmediareq *)malloc(sizeof(struct ifmediareq)); @@ -213,7 +225,10 @@ ifmedia_getstate(int s) * the current media type and the top-level type. */ - if (ioctl(s, SIOCGIFMEDIA, (caddr_t)ifmr) < 0) { + if (ioctl(s, SIOCGIFXMEDIA, (caddr_t)ifmr) < 0) { + xmedia = 0; + } + if (xmedia == 0 && ioctl(s, SIOCGIFMEDIA, (caddr_t)ifmr) < 0) { err(1, "SIOCGIFMEDIA"); } @@ -225,8 +240,13 @@ ifmedia_getstate(int s) err(1, "malloc"); ifmr->ifm_ulist = mwords; - if (ioctl(s, SIOCGIFMEDIA, (caddr_t)ifmr) < 0) - err(1, "SIOCGIFMEDIA"); + if (xmedia) { + if (ioctl(s, SIOCGIFXMEDIA, (caddr_t)ifmr) < 0) + err(1, "SIOCGIFXMEDIA"); + } else { + if (ioctl(s, SIOCGIFMEDIA, (caddr_t)ifmr) < 0) + err(1, "SIOCGIFMEDIA"); + } } return ifmr; Modified: stable/10/sys/net/ieee8023ad_lacp.c ============================================================================== --- stable/10/sys/net/ieee8023ad_lacp.c Fri May 29 22:33:06 2015 (r283757) +++ stable/10/sys/net/ieee8023ad_lacp.c Fri May 29 23:02:12 2015 (r283758) @@ -1114,12 +1114,16 @@ lacp_compose_key(struct lacp_port *lp) case IFM_100_T4: case IFM_100_VG: case IFM_100_T2: + case IFM_100_T: key = IFM_100_TX; break; case IFM_1000_SX: case IFM_1000_LX: case IFM_1000_CX: case IFM_1000_T: + case IFM_1000_KX: + case IFM_1000_SGMII: + case IFM_1000_CX_SGMII: key = IFM_1000_SX; break; case IFM_10G_LR: @@ -1129,15 +1133,53 @@ lacp_compose_key(struct lacp_port *lp) case IFM_10G_TWINAX_LONG: case IFM_10G_LRM: case IFM_10G_T: + case IFM_10G_KX4: + case IFM_10G_KR: + case IFM_10G_CR1: + case IFM_10G_ER: + case IFM_10G_SFI: key = IFM_10G_LR; break; + case IFM_20G_KR2: + key = IFM_20G_KR2; + break; + case IFM_2500_KX: + case IFM_2500_T: + key = IFM_2500_KX; + break; + case IFM_5000_T: + key = IFM_5000_T; + break; + case IFM_50G_PCIE: + case IFM_50G_CR2: + case IFM_50G_KR2: + key = IFM_50G_PCIE; + break; + case IFM_56G_R4: + key = IFM_56G_R4; + break; + case IFM_25G_PCIE: + case IFM_25G_CR: + case IFM_25G_KR: + case IFM_25G_SR: + key = IFM_25G_PCIE; + break; case IFM_40G_CR4: case IFM_40G_SR4: case IFM_40G_LR4: + case IFM_40G_XLPPI: + case IFM_40G_KR4: key = IFM_40G_CR4; break; + case IFM_100G_CR4: + case IFM_100G_SR4: + case IFM_100G_KR4: + case IFM_100G_LR4: + key = IFM_100G_CR4; + break; default: key = subtype; + break; } /* bit 5..14: (some bits of) if_index of lagg device */ key |= 0x7fe0 & ((sc->sc_ifp->if_index) << 5); Modified: stable/10/sys/net/if.c ============================================================================== --- stable/10/sys/net/if.c Fri May 29 22:33:06 2015 (r283757) +++ stable/10/sys/net/if.c Fri May 29 23:02:12 2015 (r283758) @@ -2571,6 +2571,7 @@ ifhwioctl(u_long cmd, struct ifnet *ifp, case SIOCGIFPDSTADDR: case SIOCGLIFPHYADDR: case SIOCGIFMEDIA: + case SIOCGIFXMEDIA: case SIOCGIFGENERIC: if (ifp->if_ioctl == NULL) return (EOPNOTSUPP); Modified: stable/10/sys/net/if_media.c ============================================================================== --- stable/10/sys/net/if_media.c Fri May 29 22:33:06 2015 (r283757) +++ stable/10/sys/net/if_media.c Fri May 29 23:02:12 2015 (r283758) @@ -68,6 +68,7 @@ static struct ifmedia_entry *ifmedia_mat int flags, int mask); #ifdef IFMEDIA_DEBUG +#include int ifmedia_debug = 0; SYSCTL_INT(_debug, OID_AUTO, ifmedia, CTLFLAG_RW, &ifmedia_debug, 0, "if_media debugging msgs"); @@ -193,6 +194,21 @@ ifmedia_set(ifm, target) } /* + * Given a media word, return one suitable for an application + * using the original encoding. + */ +static int +compat_media(int media) +{ + + if (IFM_TYPE(media) == IFM_ETHER && IFM_SUBTYPE(media) > IFM_OTHER) { + media &= ~(IFM_ETH_XTYPE|IFM_TMASK); + media |= IFM_OTHER; + } + return (media); +} + +/* * Device-independent media ioctl support function. */ int @@ -271,6 +287,7 @@ ifmedia_ioctl(ifp, ifr, ifm, cmd) * Get list of available media and current media on interface. */ case SIOCGIFMEDIA: + case SIOCGIFXMEDIA: { struct ifmedia_entry *ep; int *kptr, count; @@ -278,8 +295,13 @@ ifmedia_ioctl(ifp, ifr, ifm, cmd) kptr = NULL; /* XXX gcc */ - ifmr->ifm_active = ifmr->ifm_current = ifm->ifm_cur ? - ifm->ifm_cur->ifm_media : IFM_NONE; + if (cmd == SIOCGIFMEDIA) { + ifmr->ifm_active = ifmr->ifm_current = ifm->ifm_cur ? + compat_media(ifm->ifm_cur->ifm_media) : IFM_NONE; + } else { + ifmr->ifm_active = ifmr->ifm_current = ifm->ifm_cur ? + ifm->ifm_cur->ifm_media : IFM_NONE; + } ifmr->ifm_mask = ifm->ifm_mask; ifmr->ifm_status = 0; (*ifm->ifm_status)(ifp, ifmr); @@ -398,8 +420,7 @@ ifmedia_baudrate(int mword) int i; for (i = 0; ifmedia_baudrate_descriptions[i].ifmb_word != 0; i++) { - if ((mword & (IFM_NMASK|IFM_TMASK)) == - ifmedia_baudrate_descriptions[i].ifmb_word) + if (IFM_TYPE_MATCH(mword, ifmedia_baudrate_descriptions[i].ifmb_word)) return (ifmedia_baudrate_descriptions[i].ifmb_baudrate); } @@ -505,7 +526,7 @@ ifmedia_printword(ifmw) printf("\n"); return; } - printf(desc->ifmt_string); + printf("%s", desc->ifmt_string); /* Any mode. */ for (desc = ttos->modes; desc && desc->ifmt_string != NULL; desc++) Modified: stable/10/sys/net/if_media.h ============================================================================== --- stable/10/sys/net/if_media.h Fri May 29 22:33:06 2015 (r283757) +++ stable/10/sys/net/if_media.h Fri May 29 23:02:12 2015 (r283758) @@ -115,7 +115,7 @@ uint64_t ifmedia_baudrate(int); * ---- ------- * 0-4 Media variant * 5-7 Media type - * 8-15 Type specific options + * 8-15 Type specific options (includes added variant bits on Ethernet) * 16-18 Mode (for multi-mode devices) * 19 RFU * 20-27 Shared (global) options @@ -124,8 +124,18 @@ uint64_t ifmedia_baudrate(int); /* * Ethernet + * In order to use more than 31 subtypes, Ethernet uses some of the option + * bits as part of the subtype field. See the options section below for + * relevant definitions */ #define IFM_ETHER 0x00000020 +#define IFM_ETHER_SUBTYPE(x) (((x) & IFM_TMASK) | \ + (((x) & (IFM_ETH_XTYPE >> IFM_ETH_XSHIFT)) << IFM_ETH_XSHIFT)) +#define IFM_X(x) IFM_ETHER_SUBTYPE(x) /* internal shorthand */ +#define IFM_ETHER_SUBTYPE_SET(x) (IFM_ETHER_SUBTYPE(x) | IFM_ETHER) +#define IFM_ETHER_SUBTYPE_GET(x) ((x) & (IFM_TMASK|IFM_ETH_XTYPE)) +#define IFM_ETHER_IS_EXTENDED(x) ((x) & IFM_ETH_XTYPE) + #define IFM_10_T 3 /* 10BaseT - RJ45 */ #define IFM_10_2 4 /* 10Base2 - Thinnet */ #define IFM_10_5 5 /* 10Base5 - AUI */ @@ -153,15 +163,49 @@ uint64_t ifmedia_baudrate(int); #define IFM_40G_CR4 27 /* 40GBase-CR4 */ #define IFM_40G_SR4 28 /* 40GBase-SR4 */ #define IFM_40G_LR4 29 /* 40GBase-LR4 */ +#define IFM_1000_KX 30 /* 1000Base-KX backplane */ +#define IFM_OTHER 31 /* Other: one of the following */ + +/* following types are not visible to old binaries using only IFM_TMASK */ +#define IFM_10G_KX4 IFM_X(32) /* 10GBase-KX4 backplane */ +#define IFM_10G_KR IFM_X(33) /* 10GBase-KR backplane */ +#define IFM_10G_CR1 IFM_X(34) /* 10GBase-CR1 Twinax splitter */ +#define IFM_20G_KR2 IFM_X(35) /* 20GBase-KR2 backplane */ +#define IFM_2500_KX IFM_X(36) /* 2500Base-KX backplane */ +#define IFM_2500_T IFM_X(37) /* 2500Base-T - RJ45 (NBaseT) */ +#define IFM_5000_T IFM_X(38) /* 5000Base-T - RJ45 (NBaseT) */ +#define IFM_50G_PCIE IFM_X(39) /* 50G Ethernet over PCIE */ +#define IFM_25G_PCIE IFM_X(40) /* 25G Ethernet over PCIE */ +#define IFM_1000_SGMII IFM_X(41) /* 1G media interface */ +#define IFM_10G_SFI IFM_X(42) /* 10G media interface */ +#define IFM_40G_XLPPI IFM_X(43) /* 40G media interface */ +#define IFM_1000_CX_SGMII IFM_X(44) /* 1000Base-CX-SGMII */ +#define IFM_40G_KR4 IFM_X(45) /* 40GBase-KR4 */ +#define IFM_10G_ER IFM_X(46) /* 10GBase-ER */ +#define IFM_100G_CR4 IFM_X(47) /* 100GBase-CR4 */ +#define IFM_100G_SR4 IFM_X(48) /* 100GBase-SR4 */ +#define IFM_100G_KR4 IFM_X(49) /* 100GBase-KR4 */ +#define IFM_100G_LR4 IFM_X(50) /* 100GBase-LR4 */ +#define IFM_56G_R4 IFM_X(51) /* 56GBase-R4 */ +#define IFM_100_T IFM_X(52) /* 100BaseT - RJ45 */ +#define IFM_25G_CR IFM_X(53) /* 25GBase-CR */ +#define IFM_25G_KR IFM_X(54) /* 25GBase-KR */ +#define IFM_25G_SR IFM_X(55) /* 25GBase-SR */ +#define IFM_50G_CR2 IFM_X(56) /* 50GBase-CR2 */ +#define IFM_50G_KR2 IFM_X(57) /* 50GBase-KR2 */ + /* * Please update ieee8023ad_lacp.c:lacp_compose_key() * after adding new Ethernet media types. */ -/* note 31 is the max! */ +/* Note IFM_X(511) is the max! */ +/* Ethernet option values; includes bits used for extended variant field */ #define IFM_ETH_MASTER 0x00000100 /* master mode (1000baseT) */ #define IFM_ETH_RXPAUSE 0x00000200 /* receive PAUSE frames */ #define IFM_ETH_TXPAUSE 0x00000400 /* transmit PAUSE frames */ +#define IFM_ETH_XTYPE 0x00007800 /* extended media variants */ +#define IFM_ETH_XSHIFT 6 /* shift XTYPE next to TMASK */ /* * Token ring @@ -304,7 +348,10 @@ uint64_t ifmedia_baudrate(int); * Macros to extract various bits of information from the media word. */ #define IFM_TYPE(x) ((x) & IFM_NMASK) -#define IFM_SUBTYPE(x) ((x) & IFM_TMASK) +#define IFM_SUBTYPE(x) \ + (IFM_TYPE(x) == IFM_ETHER ? IFM_ETHER_SUBTYPE_GET(x) : ((x) & IFM_TMASK)) +#define IFM_TYPE_MATCH(x,y) \ + (IFM_TYPE(x) == IFM_TYPE(y) && IFM_SUBTYPE(x) == IFM_SUBTYPE(y)) #define IFM_TYPE_OPTIONS(x) ((x) & IFM_OMASK) #define IFM_INST(x) (((x) & IFM_IMASK) >> IFM_ISHIFT) #define IFM_OPTIONS(x) ((x) & (IFM_OMASK | IFM_GMASK)) @@ -369,6 +416,34 @@ struct ifmedia_description { { IFM_40G_CR4, "40Gbase-CR4" }, \ { IFM_40G_SR4, "40Gbase-SR4" }, \ { IFM_40G_LR4, "40Gbase-LR4" }, \ + { IFM_1000_KX, "1000Base-KX" }, \ + { IFM_OTHER, "Other" }, \ + { IFM_10G_KX4, "10GBase-KX4" }, \ + { IFM_10G_KR, "10GBase-KR" }, \ + { IFM_10G_CR1, "10GBase-CR1" }, \ + { IFM_20G_KR2, "20GBase-KR2" }, \ + { IFM_2500_KX, "2500Base-KX" }, \ + { IFM_2500_T, "2500Base-T" }, \ + { IFM_5000_T, "5000Base-T" }, \ + { IFM_50G_PCIE, "PCIExpress-50G" }, \ + { IFM_25G_PCIE, "PCIExpress-25G" }, \ + { IFM_1000_SGMII, "1000Base-SGMII" }, \ + { IFM_10G_SFI, "10GBase-SFI" }, \ + { IFM_40G_XLPPI, "40GBase-XLPPI" }, \ + { IFM_1000_CX_SGMII, "1000Base-CX-SGMII" }, \ + { IFM_40G_KR4, "40GBase-KR4" }, \ + { IFM_10G_ER, "10GBase-ER" }, \ + { IFM_100G_CR4, "100GBase-CR4" }, \ + { IFM_100G_SR4, "100GBase-SR4" }, \ + { IFM_100G_KR4, "100GBase-KR4" }, \ + { IFM_100G_LR4, "100GBase-LR4" }, \ + { IFM_56G_R4, "56GBase-R4" }, \ + { IFM_100_T, "100BaseT" }, \ + { IFM_25G_CR, "25GBase-CR" }, \ + { IFM_25G_KR, "25GBase-KR" }, \ + { IFM_25G_SR, "25GBase-SR" }, \ + { IFM_50G_CR2, "50GBase-CR2" }, \ + { IFM_50G_KR2, "50GBase-KR2" }, \ { 0, NULL }, \ } @@ -670,6 +745,33 @@ struct ifmedia_baudrate { { IFM_ETHER | IFM_40G_CR4, IF_Gbps(40ULL) }, \ { IFM_ETHER | IFM_40G_SR4, IF_Gbps(40ULL) }, \ { IFM_ETHER | IFM_40G_LR4, IF_Gbps(40ULL) }, \ + { IFM_ETHER | IFM_1000_KX, IF_Mbps(1000) }, \ + { IFM_ETHER | IFM_10G_KX4, IF_Gbps(10ULL) }, \ + { IFM_ETHER | IFM_10G_KR, IF_Gbps(10ULL) }, \ + { IFM_ETHER | IFM_10G_CR1, IF_Gbps(10ULL) }, \ + { IFM_ETHER | IFM_20G_KR2, IF_Gbps(20ULL) }, \ + { IFM_ETHER | IFM_2500_KX, IF_Mbps(2500) }, \ + { IFM_ETHER | IFM_2500_T, IF_Mbps(2500) }, \ + { IFM_ETHER | IFM_5000_T, IF_Mbps(5000) }, \ + { IFM_ETHER | IFM_50G_PCIE, IF_Gbps(50ULL) }, \ + { IFM_ETHER | IFM_25G_PCIE, IF_Gbps(25ULL) }, \ + { IFM_ETHER | IFM_1000_SGMII, IF_Mbps(1000) }, \ + { IFM_ETHER | IFM_10G_SFI, IF_Gbps(10ULL) }, \ + { IFM_ETHER | IFM_40G_XLPPI, IF_Gbps(40ULL) }, \ + { IFM_ETHER | IFM_1000_CX_SGMII, IF_Mbps(1000) }, \ + { IFM_ETHER | IFM_40G_KR4, IF_Gbps(40ULL) }, \ + { IFM_ETHER | IFM_10G_ER, IF_Gbps(10ULL) }, \ + { IFM_ETHER | IFM_100G_CR4, IF_Gbps(100ULL) }, \ + { IFM_ETHER | IFM_100G_SR4, IF_Gbps(100ULL) }, \ + { IFM_ETHER | IFM_100G_KR4, IF_Gbps(100ULL) }, \ + { IFM_ETHER | IFM_100G_LR4, IF_Gbps(100ULL) }, \ + { IFM_ETHER | IFM_56G_R4, IF_Gbps(56ULL) }, \ + { IFM_ETHER | IFM_100_T, IF_Mbps(100ULL) }, \ + { IFM_ETHER | IFM_25G_CR, IF_Gbps(25ULL) }, \ + { IFM_ETHER | IFM_25G_KR, IF_Gbps(25ULL) }, \ + { IFM_ETHER | IFM_25G_SR, IF_Gbps(25ULL) }, \ + { IFM_ETHER | IFM_50G_CR2, IF_Gbps(50ULL) }, \ + { IFM_ETHER | IFM_50G_KR2, IF_Gbps(50ULL) }, \ \ { IFM_TOKEN | IFM_TOK_STP4, IF_Mbps(4) }, \ { IFM_TOKEN | IFM_TOK_STP16, IF_Mbps(16) }, \ Modified: stable/10/sys/sys/sockio.h ============================================================================== --- stable/10/sys/sys/sockio.h Fri May 29 22:33:06 2015 (r283757) +++ stable/10/sys/sys/sockio.h Fri May 29 23:02:12 2015 (r283758) @@ -127,5 +127,6 @@ #define SIOCGIFGROUP _IOWR('i', 136, struct ifgroupreq) /* get ifgroups */ #define SIOCDIFGROUP _IOW('i', 137, struct ifgroupreq) /* delete ifgroup */ #define SIOCGIFGMEMB _IOWR('i', 138, struct ifgroupreq) /* get members */ +#define SIOCGIFXMEDIA _IOWR('i', 139, struct ifmediareq) /* get net xmedia */ #endif /* !_SYS_SOCKIO_H_ */ From owner-svn-src-all@FreeBSD.ORG Fri May 29 23:28:56 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 42F9D186; Fri, 29 May 2015 23:28:56 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from svn.freebsd.org (svn.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 2FD2D1676; Fri, 29 May 2015 23:28:56 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TNSuXj067478; Fri, 29 May 2015 23:28:56 GMT (envelope-from davidcs@FreeBSD.org) Received: (from davidcs@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TNSuQ2067477; Fri, 29 May 2015 23:28:56 GMT (envelope-from davidcs@FreeBSD.org) Message-Id: <201505292328.t4TNSuQ2067477@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: davidcs set sender to davidcs@FreeBSD.org using -f From: David C Somayajulu Date: Fri, 29 May 2015 23:28:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r283759 - stable/8/sys/dev/bxe X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 23:28:56 -0000 Author: davidcs Date: Fri May 29 23:28:55 2015 New Revision: 283759 URL: https://svnweb.freebsd.org/changeset/base/283759 Log: MFC r283269 Submitted by: gary.zambrano@qlogic.com Approved by:davidcs@freebsd.org Modified: stable/8/sys/dev/bxe/bxe.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/dev/ (props changed) Modified: stable/8/sys/dev/bxe/bxe.c ============================================================================== --- stable/8/sys/dev/bxe/bxe.c Fri May 29 23:02:12 2015 (r283758) +++ stable/8/sys/dev/bxe/bxe.c Fri May 29 23:28:55 2015 (r283759) @@ -3111,7 +3111,7 @@ static inline void bxe_update_sge_prod(struct bxe_softc *sc, struct bxe_fastpath *fp, uint16_t sge_len, - struct eth_end_agg_rx_cqe *cqe) + union eth_sgl_or_raw_data *cqe) { uint16_t last_max, last_elem, first_elem; uint16_t delta = 0; @@ -3124,17 +3124,17 @@ bxe_update_sge_prod(struct bxe_softc /* first mark all used pages */ for (i = 0; i < sge_len; i++) { BIT_VEC64_CLEAR_BIT(fp->sge_mask, - RX_SGE(le16toh(cqe->sgl_or_raw_data.sgl[i]))); + RX_SGE(le16toh(cqe->sgl[i]))); } BLOGD(sc, DBG_LRO, "fp[%02d] fp_cqe->sgl[%d] = %d\n", fp->index, sge_len - 1, - le16toh(cqe->sgl_or_raw_data.sgl[sge_len - 1])); + le16toh(cqe->sgl[sge_len - 1])); /* assume that the last SGE index is the biggest */ bxe_update_last_max_sge(fp, - le16toh(cqe->sgl_or_raw_data.sgl[sge_len - 1])); + le16toh(cqe->sgl[sge_len - 1])); last_max = RX_SGE(fp->last_max_sge); last_elem = last_max >> BIT_VEC64_ELEM_SHIFT; @@ -3250,6 +3250,53 @@ bxe_tpa_stop_exit: } static uint8_t +bxe_service_rxsgl( + struct bxe_fastpath *fp, + uint16_t len, + uint16_t lenonbd, + struct mbuf *m, + struct eth_fast_path_rx_cqe *cqe_fp) +{ + struct mbuf *m_frag; + uint16_t frags, frag_len; + uint16_t sge_idx = 0; + uint16_t j; + uint8_t i, rc = 0; + uint32_t frag_size; + + /* adjust the mbuf */ + m->m_len = lenonbd; + + frag_size = len - lenonbd; + frags = SGE_PAGE_ALIGN(frag_size) >> SGE_PAGE_SHIFT; + + for (i = 0, j = 0; i < frags; i += PAGES_PER_SGE, j++) { + sge_idx = RX_SGE(le16toh(cqe_fp->sgl_or_raw_data.sgl[j])); + + m_frag = fp->rx_sge_mbuf_chain[sge_idx].m; + frag_len = min(frag_size, (uint32_t)(SGE_PAGE_SIZE)); + m_frag->m_len = frag_len; + + /* allocate a new mbuf for the SGE */ + rc = bxe_alloc_rx_sge_mbuf(fp, sge_idx); + if (rc) { + /* Leave all remaining SGEs in the ring! */ + return (rc); + } + fp->eth_q_stats.mbuf_alloc_sge--; + + /* concatenate the fragment to the head mbuf */ + m_cat(m, m_frag); + + frag_size -= frag_len; + } + + bxe_update_sge_prod(fp->sc, fp, frags, &cqe_fp->sgl_or_raw_data); + + return rc; +} + +static uint8_t bxe_rxeof(struct bxe_softc *sc, struct bxe_fastpath *fp) { @@ -3289,7 +3336,7 @@ bxe_rxeof(struct bxe_softc *sc, struct eth_fast_path_rx_cqe *cqe_fp; uint8_t cqe_fp_flags; enum eth_rx_cqe_type cqe_fp_type; - uint16_t len, pad; + uint16_t len, lenonbd, pad; struct mbuf *m = NULL; comp_ring_cons = RCQ(sw_cq_cons); @@ -3304,7 +3351,7 @@ bxe_rxeof(struct bxe_softc *sc, BLOGD(sc, DBG_RX, "fp[%02d] Rx hw_cq_cons=%d hw_sw_cons=%d " "BD prod=%d cons=%d CQE type=0x%x err=0x%x " - "status=0x%x rss_hash=0x%x vlan=0x%x len=%u\n", + "status=0x%x rss_hash=0x%x vlan=0x%x len=%u lenonbd=%u\n", fp->index, hw_cq_cons, sw_cq_cons, @@ -3315,7 +3362,8 @@ bxe_rxeof(struct bxe_softc *sc, cqe_fp->status_flags, le32toh(cqe_fp->rss_hash_result), le16toh(cqe_fp->vlan_tag), - le16toh(cqe_fp->pkt_len_or_gro_seg_len)); + le16toh(cqe_fp->pkt_len_or_gro_seg_len), + le16toh(cqe_fp->len_on_bd)); /* is this a slowpath msg? */ if (__predict_false(CQE_TYPE_SLOW(cqe_fp_type))) { @@ -3362,7 +3410,7 @@ bxe_rxeof(struct bxe_softc *sc, bxe_tpa_stop(sc, fp, tpa_info, queue, pages, &cqe->end_agg_cqe, comp_ring_cons); - bxe_update_sge_prod(sc, fp, pages, &cqe->end_agg_cqe); + bxe_update_sge_prod(sc, fp, pages, &cqe->end_agg_cqe.sgl_or_raw_data); goto next_cqe; } @@ -3378,6 +3426,7 @@ bxe_rxeof(struct bxe_softc *sc, } len = le16toh(cqe_fp->pkt_len_or_gro_seg_len); + lenonbd = le16toh(cqe_fp->len_on_bd); pad = cqe_fp->placement_offset; m = rx_buf->m; @@ -3424,6 +3473,12 @@ bxe_rxeof(struct bxe_softc *sc, m_adj(m, pad); m->m_pkthdr.len = m->m_len = len; + if (len != lenonbd){ + rc = bxe_service_rxsgl(fp, len, lenonbd, m, cqe_fp); + if (rc) + break; + } + /* assign packet to this interface interface */ m->m_pkthdr.rcvif = ifp; @@ -6226,30 +6281,27 @@ static void bxe_set_fp_rx_buf_size(struct bxe_softc *sc) { int i; + uint32_t rx_buf_size; - BLOGD(sc, DBG_LOAD, "mtu = %d\n", sc->mtu); + rx_buf_size = (IP_HEADER_ALIGNMENT_PADDING + ETH_OVERHEAD + sc->mtu); for (i = 0; i < sc->num_queues; i++) { - /* get the Rx buffer size for RX frames */ - sc->fp[i].rx_buf_size = - (IP_HEADER_ALIGNMENT_PADDING + - ETH_OVERHEAD + - sc->mtu); - - BLOGD(sc, DBG_LOAD, "rx_buf_size for fp[%02d] = %d\n", - i, sc->fp[i].rx_buf_size); - - /* get the mbuf allocation size for RX frames */ - if (sc->fp[i].rx_buf_size <= MCLBYTES) { + if(rx_buf_size <= MCLBYTES){ + sc->fp[i].rx_buf_size = rx_buf_size; + sc->fp[i].mbuf_alloc_size = MCLBYTES; + }else if (rx_buf_size <= MJUMPAGESIZE){ + sc->fp[i].rx_buf_size = rx_buf_size; + sc->fp[i].mbuf_alloc_size = MJUMPAGESIZE; + }else if (rx_buf_size <= (MJUMPAGESIZE + MCLBYTES)){ + sc->fp[i].rx_buf_size = MCLBYTES; + sc->fp[i].mbuf_alloc_size = MCLBYTES; + }else if (rx_buf_size <= (2 * MJUMPAGESIZE)){ + sc->fp[i].rx_buf_size = MJUMPAGESIZE; + sc->fp[i].mbuf_alloc_size = MJUMPAGESIZE; + }else { + sc->fp[i].rx_buf_size = MCLBYTES; sc->fp[i].mbuf_alloc_size = MCLBYTES; - } else if (sc->fp[i].rx_buf_size <= BCM_PAGE_SIZE) { - sc->fp[i].mbuf_alloc_size = PAGE_SIZE; - } else { - sc->fp[i].mbuf_alloc_size = MJUM9BYTES; } - - BLOGD(sc, DBG_LOAD, "mbuf_alloc_size for fp[%02d] = %d\n", - i, sc->fp[i].mbuf_alloc_size); } } From owner-svn-src-all@FreeBSD.ORG Fri May 29 23:33:50 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9E34140C; Fri, 29 May 2015 23:33:50 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from svn.freebsd.org (svn.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 7F66B1891; Fri, 29 May 2015 23:33:50 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TNXoEU071844; Fri, 29 May 2015 23:33:50 GMT (envelope-from davidcs@FreeBSD.org) Received: (from davidcs@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TNXnOR071840; Fri, 29 May 2015 23:33:49 GMT (envelope-from davidcs@FreeBSD.org) Message-Id: <201505292333.t4TNXnOR071840@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: davidcs set sender to davidcs@FreeBSD.org using -f From: David C Somayajulu Date: Fri, 29 May 2015 23:33:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r283760 - stable/8/sys/dev/bxe X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 23:33:50 -0000 Author: davidcs Date: Fri May 29 23:33:49 2015 New Revision: 283760 URL: https://svnweb.freebsd.org/changeset/base/283760 Log: MFC r283274 Submitted by:gary.zambrano@qlogic.com Modified: stable/8/sys/dev/bxe/bxe.c stable/8/sys/dev/bxe/bxe_stats.c stable/8/sys/dev/bxe/bxe_stats.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/dev/ (props changed) Modified: stable/8/sys/dev/bxe/bxe.c ============================================================================== --- stable/8/sys/dev/bxe/bxe.c Fri May 29 23:28:55 2015 (r283759) +++ stable/8/sys/dev/bxe/bxe.c Fri May 29 23:33:49 2015 (r283760) @@ -27,7 +27,7 @@ #include __FBSDID("$FreeBSD$"); -#define BXE_DRIVER_VERSION "1.78.78" +#define BXE_DRIVER_VERSION "1.78.79" #include "bxe.h" #include "ecore_sp.h" @@ -483,6 +483,8 @@ static const struct { 4, STATS_FLAGS_FUNC, "rx_pkts"}, { STATS_OFFSET32(rx_tpa_pkts), 4, STATS_FLAGS_FUNC, "rx_tpa_pkts"}, + { STATS_OFFSET32(rx_jumbo_sge_pkts), + 4, STATS_FLAGS_FUNC, "rx_jumbo_sge_pkts"}, { STATS_OFFSET32(rx_soft_errors), 4, STATS_FLAGS_FUNC, "rx_soft_errors"}, { STATS_OFFSET32(rx_hw_csum_errors), @@ -594,6 +596,8 @@ static const struct { 4, "rx_pkts"}, { Q_STATS_OFFSET32(rx_tpa_pkts), 4, "rx_tpa_pkts"}, + { Q_STATS_OFFSET32(rx_jumbo_sge_pkts), + 4, "rx_jumbo_sge_pkts"}, { Q_STATS_OFFSET32(rx_soft_errors), 4, "rx_soft_errors"}, { Q_STATS_OFFSET32(rx_hw_csum_errors), @@ -3477,6 +3481,7 @@ bxe_rxeof(struct bxe_softc *sc, rc = bxe_service_rxsgl(fp, len, lenonbd, m, cqe_fp); if (rc) break; + fp->eth_q_stats.rx_jumbo_sge_pkts++; } /* assign packet to this interface interface */ @@ -6860,42 +6865,40 @@ bxe_alloc_fp_buffers(struct bxe_softc *s fp->rx_cq_prod = cqe_ring_prod; fp->eth_q_stats.rx_calls = fp->eth_q_stats.rx_pkts = 0; - if (sc->ifnet->if_capenable & IFCAP_LRO) { - max_agg_queues = MAX_AGG_QS(sc); + max_agg_queues = MAX_AGG_QS(sc); - fp->tpa_enable = TRUE; + fp->tpa_enable = TRUE; - /* fill the TPA pool */ - for (j = 0; j < max_agg_queues; j++) { - rc = bxe_alloc_rx_tpa_mbuf(fp, j); - if (rc != 0) { - BLOGE(sc, "mbuf alloc fail for fp[%02d] TPA queue %d\n", + /* fill the TPA pool */ + for (j = 0; j < max_agg_queues; j++) { + rc = bxe_alloc_rx_tpa_mbuf(fp, j); + if (rc != 0) { + BLOGE(sc, "mbuf alloc fail for fp[%02d] TPA queue %d\n", i, j); - fp->tpa_enable = FALSE; - goto bxe_alloc_fp_buffers_error; - } - - fp->rx_tpa_info[j].state = BXE_TPA_STATE_STOP; + fp->tpa_enable = FALSE; + goto bxe_alloc_fp_buffers_error; } - if (fp->tpa_enable) { - /* fill the RX SGE chain */ - ring_prod = 0; - for (j = 0; j < RX_SGE_USABLE; j++) { - rc = bxe_alloc_rx_sge_mbuf(fp, ring_prod); - if (rc != 0) { - BLOGE(sc, "mbuf alloc fail for fp[%02d] SGE %d\n", - i, ring_prod); - fp->tpa_enable = FALSE; - ring_prod = 0; - goto bxe_alloc_fp_buffers_error; - } + fp->rx_tpa_info[j].state = BXE_TPA_STATE_STOP; + } - ring_prod = RX_SGE_NEXT(ring_prod); + if (fp->tpa_enable) { + /* fill the RX SGE chain */ + ring_prod = 0; + for (j = 0; j < RX_SGE_USABLE; j++) { + rc = bxe_alloc_rx_sge_mbuf(fp, ring_prod); + if (rc != 0) { + BLOGE(sc, "mbuf alloc fail for fp[%02d] SGE %d\n", + i, ring_prod); + fp->tpa_enable = FALSE; + ring_prod = 0; + goto bxe_alloc_fp_buffers_error; } - fp->rx_sge_prod = ring_prod; + ring_prod = RX_SGE_NEXT(ring_prod); } + + fp->rx_sge_prod = ring_prod; } } @@ -11779,28 +11782,26 @@ bxe_pf_rx_q_prep(struct bxe_softc uint16_t sge_sz = 0; uint16_t tpa_agg_size = 0; - if (sc->ifnet->if_capenable & IFCAP_LRO) { - pause->sge_th_lo = SGE_TH_LO(sc); - pause->sge_th_hi = SGE_TH_HI(sc); + pause->sge_th_lo = SGE_TH_LO(sc); + pause->sge_th_hi = SGE_TH_HI(sc); - /* validate SGE ring has enough to cross high threshold */ - if (sc->dropless_fc && + /* validate SGE ring has enough to cross high threshold */ + if (sc->dropless_fc && (pause->sge_th_hi + FW_PREFETCH_CNT) > (RX_SGE_USABLE_PER_PAGE * RX_SGE_NUM_PAGES)) { - BLOGW(sc, "sge ring threshold limit\n"); - } + BLOGW(sc, "sge ring threshold limit\n"); + } - /* minimum max_aggregation_size is 2*MTU (two full buffers) */ - tpa_agg_size = (2 * sc->mtu); - if (tpa_agg_size < sc->max_aggregation_size) { - tpa_agg_size = sc->max_aggregation_size; - } + /* minimum max_aggregation_size is 2*MTU (two full buffers) */ + tpa_agg_size = (2 * sc->mtu); + if (tpa_agg_size < sc->max_aggregation_size) { + tpa_agg_size = sc->max_aggregation_size; + } - max_sge = SGE_PAGE_ALIGN(sc->mtu) >> SGE_PAGE_SHIFT; - max_sge = ((max_sge + PAGES_PER_SGE - 1) & + max_sge = SGE_PAGE_ALIGN(sc->mtu) >> SGE_PAGE_SHIFT; + max_sge = ((max_sge + PAGES_PER_SGE - 1) & (~(PAGES_PER_SGE - 1))) >> PAGES_PER_SGE_SHIFT; - sge_sz = (uint16_t)min(SGE_PAGES, 0xffff); - } + sge_sz = (uint16_t)min(SGE_PAGES, 0xffff); /* pause - not for e1 */ if (!CHIP_IS_E1(sc)) { Modified: stable/8/sys/dev/bxe/bxe_stats.c ============================================================================== --- stable/8/sys/dev/bxe/bxe_stats.c Fri May 29 23:28:55 2015 (r283759) +++ stable/8/sys/dev/bxe/bxe_stats.c Fri May 29 23:33:49 2015 (r283760) @@ -1227,6 +1227,7 @@ bxe_drv_stats_update(struct bxe_softc *s UPDATE_ESTAT_QSTAT(rx_calls); UPDATE_ESTAT_QSTAT(rx_pkts); UPDATE_ESTAT_QSTAT(rx_tpa_pkts); + UPDATE_ESTAT_QSTAT(rx_jumbo_sge_pkts); UPDATE_ESTAT_QSTAT(rx_soft_errors); UPDATE_ESTAT_QSTAT(rx_hw_csum_errors); UPDATE_ESTAT_QSTAT(rx_ofld_frames_csum_ip); Modified: stable/8/sys/dev/bxe/bxe_stats.h ============================================================================== --- stable/8/sys/dev/bxe/bxe_stats.h Fri May 29 23:28:55 2015 (r283759) +++ stable/8/sys/dev/bxe/bxe_stats.h Fri May 29 23:33:49 2015 (r283760) @@ -218,6 +218,7 @@ struct bxe_eth_stats { uint32_t rx_calls; uint32_t rx_pkts; uint32_t rx_tpa_pkts; + uint32_t rx_jumbo_sge_pkts; uint32_t rx_soft_errors; uint32_t rx_hw_csum_errors; uint32_t rx_ofld_frames_csum_ip; @@ -318,6 +319,7 @@ struct bxe_eth_q_stats { uint32_t rx_calls; uint32_t rx_pkts; uint32_t rx_tpa_pkts; + uint32_t rx_jumbo_sge_pkts; uint32_t rx_soft_errors; uint32_t rx_hw_csum_errors; uint32_t rx_ofld_frames_csum_ip; @@ -411,6 +413,7 @@ struct bxe_eth_q_stats_old { uint32_t rx_calls_old; uint32_t rx_pkts_old; uint32_t rx_tpa_pkts_old; + uint32_t rx_jumbo_sge_pkts_old; uint32_t rx_soft_errors_old; uint32_t rx_hw_csum_errors_old; uint32_t rx_ofld_frames_csum_ip_old; From owner-svn-src-all@FreeBSD.ORG Fri May 29 23:37:28 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 6D53F607; Fri, 29 May 2015 23:37:28 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from svn.freebsd.org (svn.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 5A00018BC; Fri, 29 May 2015 23:37:28 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4TNbSiw072420; Fri, 29 May 2015 23:37:28 GMT (envelope-from davidcs@FreeBSD.org) Received: (from davidcs@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4TNbS8p072419; Fri, 29 May 2015 23:37:28 GMT (envelope-from davidcs@FreeBSD.org) Message-Id: <201505292337.t4TNbS8p072419@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: davidcs set sender to davidcs@FreeBSD.org using -f From: David C Somayajulu Date: Fri, 29 May 2015 23:37:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org Subject: svn commit: r283761 - stable/7/sys/dev/bxe X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 May 2015 23:37:28 -0000 Author: davidcs Date: Fri May 29 23:37:27 2015 New Revision: 283761 URL: https://svnweb.freebsd.org/changeset/base/283761 Log: MFC r283269 Submitted by: gary.zambrano@qlogic.com Modified: stable/7/sys/dev/bxe/bxe.c Directory Properties: stable/7/sys/ (props changed) Modified: stable/7/sys/dev/bxe/bxe.c ============================================================================== --- stable/7/sys/dev/bxe/bxe.c Fri May 29 23:33:49 2015 (r283760) +++ stable/7/sys/dev/bxe/bxe.c Fri May 29 23:37:27 2015 (r283761) @@ -3111,7 +3111,7 @@ static inline void bxe_update_sge_prod(struct bxe_softc *sc, struct bxe_fastpath *fp, uint16_t sge_len, - struct eth_end_agg_rx_cqe *cqe) + union eth_sgl_or_raw_data *cqe) { uint16_t last_max, last_elem, first_elem; uint16_t delta = 0; @@ -3124,17 +3124,17 @@ bxe_update_sge_prod(struct bxe_softc /* first mark all used pages */ for (i = 0; i < sge_len; i++) { BIT_VEC64_CLEAR_BIT(fp->sge_mask, - RX_SGE(le16toh(cqe->sgl_or_raw_data.sgl[i]))); + RX_SGE(le16toh(cqe->sgl[i]))); } BLOGD(sc, DBG_LRO, "fp[%02d] fp_cqe->sgl[%d] = %d\n", fp->index, sge_len - 1, - le16toh(cqe->sgl_or_raw_data.sgl[sge_len - 1])); + le16toh(cqe->sgl[sge_len - 1])); /* assume that the last SGE index is the biggest */ bxe_update_last_max_sge(fp, - le16toh(cqe->sgl_or_raw_data.sgl[sge_len - 1])); + le16toh(cqe->sgl[sge_len - 1])); last_max = RX_SGE(fp->last_max_sge); last_elem = last_max >> BIT_VEC64_ELEM_SHIFT; @@ -3250,6 +3250,53 @@ bxe_tpa_stop_exit: } static uint8_t +bxe_service_rxsgl( + struct bxe_fastpath *fp, + uint16_t len, + uint16_t lenonbd, + struct mbuf *m, + struct eth_fast_path_rx_cqe *cqe_fp) +{ + struct mbuf *m_frag; + uint16_t frags, frag_len; + uint16_t sge_idx = 0; + uint16_t j; + uint8_t i, rc = 0; + uint32_t frag_size; + + /* adjust the mbuf */ + m->m_len = lenonbd; + + frag_size = len - lenonbd; + frags = SGE_PAGE_ALIGN(frag_size) >> SGE_PAGE_SHIFT; + + for (i = 0, j = 0; i < frags; i += PAGES_PER_SGE, j++) { + sge_idx = RX_SGE(le16toh(cqe_fp->sgl_or_raw_data.sgl[j])); + + m_frag = fp->rx_sge_mbuf_chain[sge_idx].m; + frag_len = min(frag_size, (uint32_t)(SGE_PAGE_SIZE)); + m_frag->m_len = frag_len; + + /* allocate a new mbuf for the SGE */ + rc = bxe_alloc_rx_sge_mbuf(fp, sge_idx); + if (rc) { + /* Leave all remaining SGEs in the ring! */ + return (rc); + } + fp->eth_q_stats.mbuf_alloc_sge--; + + /* concatenate the fragment to the head mbuf */ + m_cat(m, m_frag); + + frag_size -= frag_len; + } + + bxe_update_sge_prod(fp->sc, fp, frags, &cqe_fp->sgl_or_raw_data); + + return rc; +} + +static uint8_t bxe_rxeof(struct bxe_softc *sc, struct bxe_fastpath *fp) { @@ -3289,7 +3336,7 @@ bxe_rxeof(struct bxe_softc *sc, struct eth_fast_path_rx_cqe *cqe_fp; uint8_t cqe_fp_flags; enum eth_rx_cqe_type cqe_fp_type; - uint16_t len, pad; + uint16_t len, lenonbd, pad; struct mbuf *m = NULL; comp_ring_cons = RCQ(sw_cq_cons); @@ -3304,7 +3351,7 @@ bxe_rxeof(struct bxe_softc *sc, BLOGD(sc, DBG_RX, "fp[%02d] Rx hw_cq_cons=%d hw_sw_cons=%d " "BD prod=%d cons=%d CQE type=0x%x err=0x%x " - "status=0x%x rss_hash=0x%x vlan=0x%x len=%u\n", + "status=0x%x rss_hash=0x%x vlan=0x%x len=%u lenonbd=%u\n", fp->index, hw_cq_cons, sw_cq_cons, @@ -3315,7 +3362,8 @@ bxe_rxeof(struct bxe_softc *sc, cqe_fp->status_flags, le32toh(cqe_fp->rss_hash_result), le16toh(cqe_fp->vlan_tag), - le16toh(cqe_fp->pkt_len_or_gro_seg_len)); + le16toh(cqe_fp->pkt_len_or_gro_seg_len), + le16toh(cqe_fp->len_on_bd)); /* is this a slowpath msg? */ if (__predict_false(CQE_TYPE_SLOW(cqe_fp_type))) { @@ -3362,7 +3410,7 @@ bxe_rxeof(struct bxe_softc *sc, bxe_tpa_stop(sc, fp, tpa_info, queue, pages, &cqe->end_agg_cqe, comp_ring_cons); - bxe_update_sge_prod(sc, fp, pages, &cqe->end_agg_cqe); + bxe_update_sge_prod(sc, fp, pages, &cqe->end_agg_cqe.sgl_or_raw_data); goto next_cqe; } @@ -3378,6 +3426,7 @@ bxe_rxeof(struct bxe_softc *sc, } len = le16toh(cqe_fp->pkt_len_or_gro_seg_len); + lenonbd = le16toh(cqe_fp->len_on_bd); pad = cqe_fp->placement_offset; m = rx_buf->m; @@ -3424,6 +3473,12 @@ bxe_rxeof(struct bxe_softc *sc, m_adj(m, pad); m->m_pkthdr.len = m->m_len = len; + if (len != lenonbd){ + rc = bxe_service_rxsgl(fp, len, lenonbd, m, cqe_fp); + if (rc) + break; + } + /* assign packet to this interface interface */ m->m_pkthdr.rcvif = ifp; @@ -6228,30 +6283,27 @@ static void bxe_set_fp_rx_buf_size(struct bxe_softc *sc) { int i; + uint32_t rx_buf_size; - BLOGD(sc, DBG_LOAD, "mtu = %d\n", sc->mtu); + rx_buf_size = (IP_HEADER_ALIGNMENT_PADDING + ETH_OVERHEAD + sc->mtu); for (i = 0; i < sc->num_queues; i++) { - /* get the Rx buffer size for RX frames */ - sc->fp[i].rx_buf_size = - (IP_HEADER_ALIGNMENT_PADDING + - ETH_OVERHEAD + - sc->mtu); - - BLOGD(sc, DBG_LOAD, "rx_buf_size for fp[%02d] = %d\n", - i, sc->fp[i].rx_buf_size); - - /* get the mbuf allocation size for RX frames */ - if (sc->fp[i].rx_buf_size <= MCLBYTES) { + if(rx_buf_size <= MCLBYTES){ + sc->fp[i].rx_buf_size = rx_buf_size; + sc->fp[i].mbuf_alloc_size = MCLBYTES; + }else if (rx_buf_size <= MJUMPAGESIZE){ + sc->fp[i].rx_buf_size = rx_buf_size; + sc->fp[i].mbuf_alloc_size = MJUMPAGESIZE; + }else if (rx_buf_size <= (MJUMPAGESIZE + MCLBYTES)){ + sc->fp[i].rx_buf_size = MCLBYTES; + sc->fp[i].mbuf_alloc_size = MCLBYTES; + }else if (rx_buf_size <= (2 * MJUMPAGESIZE)){ + sc->fp[i].rx_buf_size = MJUMPAGESIZE; + sc->fp[i].mbuf_alloc_size = MJUMPAGESIZE; + }else { + sc->fp[i].rx_buf_size = MCLBYTES; sc->fp[i].mbuf_alloc_size = MCLBYTES; - } else if (sc->fp[i].rx_buf_size <= BCM_PAGE_SIZE) { - sc->fp[i].mbuf_alloc_size = PAGE_SIZE; - } else { - sc->fp[i].mbuf_alloc_size = MJUM9BYTES; } - - BLOGD(sc, DBG_LOAD, "mbuf_alloc_size for fp[%02d] = %d\n", - i, sc->fp[i].mbuf_alloc_size); } } From owner-svn-src-all@FreeBSD.ORG Sat May 30 01:04:46 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 42DDE3AE; Sat, 30 May 2015 01:04:46 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org (svn.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 300581E22; Sat, 30 May 2015 01:04:46 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4U14kmv019396; Sat, 30 May 2015 01:04:46 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4U14kHi019395; Sat, 30 May 2015 01:04:46 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201505300104.t4U14kHi019395@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Sat, 30 May 2015 01:04: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: r283762 - stable/10/usr.sbin/mountd X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 01:04:46 -0000 Author: rmacklem Date: Sat May 30 01:04:45 2015 New Revision: 283762 URL: https://svnweb.freebsd.org/changeset/base/283762 Log: MFC: r283008 Add a warning message to mountd for exported file systems that are automounted, since that configuration isn't supported. This still allows the export, since two emails I received felt that this should not be disabled. It sends the message to syslog(LOG_ERR..), so that it goes to the same places as the other messages related to /etc/exports problems, even though it is a warning and not an error. Modified: stable/10/usr.sbin/mountd/mountd.c Directory Properties: stable/10/ (props changed) Modified: stable/10/usr.sbin/mountd/mountd.c ============================================================================== --- stable/10/usr.sbin/mountd/mountd.c Fri May 29 23:37:27 2015 (r283761) +++ stable/10/usr.sbin/mountd/mountd.c Sat May 30 01:04:45 2015 (r283762) @@ -1424,6 +1424,9 @@ get_exportlist_one(void) } if (check_dirpath(cp) && statfs(cp, &fsb) >= 0) { + if ((fsb.f_flags & MNT_AUTOMOUNTED) != 0) + syslog(LOG_ERR, "Warning: exporting of " + "automounted fs %s not supported", cp); if (got_nondir) { syslog(LOG_ERR, "dirs must be first"); getexp_err(ep, tgrp); From owner-svn-src-all@FreeBSD.ORG Sat May 30 03:46:16 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 991D0524; Sat, 30 May 2015 03:46:16 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail109.syd.optusnet.com.au (mail109.syd.optusnet.com.au [211.29.132.80]) by mx1.freebsd.org (Postfix) with ESMTP id 5DE1B11A7; Sat, 30 May 2015 03:46:15 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from c211-30-166-197.carlnfd1.nsw.optusnet.com.au (c211-30-166-197.carlnfd1.nsw.optusnet.com.au [211.30.166.197]) by mail109.syd.optusnet.com.au (Postfix) with ESMTPS id 9C17FD67C19; Sat, 30 May 2015 13:46:13 +1000 (AEST) Date: Sat, 30 May 2015 13:46:09 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Brooks Davis cc: Bruce Evans , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283671 - head/sys/sys In-Reply-To: <20150529203546.GN38480@spindle.one-eyed-alien.net> Message-ID: <20150530125541.J971@besplex.bde.org> References: <201505282206.t4SM66Xj090527@svn.freebsd.org> <20150529154745.F900@besplex.bde.org> <20150529203546.GN38480@spindle.one-eyed-alien.net> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Optus-CM-Score: 0 X-Optus-CM-Analysis: v=2.1 cv=QeFf4Krv c=1 sm=1 tr=0 a=KA6XNC2GZCFrdESI5ZmdjQ==:117 a=PO7r1zJSAAAA:8 a=kj9zAlcOel0A:10 a=JzwRw_2MAAAA:8 a=Nq2kLsgBvFHZ9_RP6hwA:9 a=CjuIK1q_8ugA:10 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 03:46:16 -0000 On Fri, 29 May 2015, Brooks Davis wrote: > On Fri, May 29, 2015 at 05:40:16PM +1000, Bruce Evans wrote: >> On Thu, 28 May 2015, Brooks Davis wrote: >> >>> Log: >>> Revert r102953 >>> >>> The bitfile padding was always unallocated on real-world FreeBSD systems and >>> depended on the assumption that (abs(sizeof(long) - sizeof(char*)) <= 32). >> >> Actually, it was bit-field padding that depended on the assumption that >> (abs(sizeof(long) - sizeof(char*)) <= CHAR_BIT * sizeof(int). >> >> It did work under this assumption, and was needed on non-real-world FreeBSD >> systems with correctly-sized longs. Why break it? Actually, it only worked under the assumption that sizeof(long) >= sizeof(char *) && . It was nonsense when sizeof(char *) > sizeof(long). Then there is no way to unpad the char * field to reduce the size, and no need for any padding or unpadding to change the size since the char * field has the same size as the union (under additional assumptions about alignment). The nonsense actually negatived the (negative) unpadding to get positive padding that compiled. > It doesn't work on CHERI where pointers are 64, 128 or 256 bits > depending on the compilation mode and hardware type (in the latter two > cases they are not arithmetic types). That was a nonsense case. If you just fix the old code to use the correct padding of 0 in this case, CHERI wouldn't notice the problem. > If this was something we were worried about in practice, forcing the > alignment of n_name and n_type to max(sizeof(long), sizeof(char *)) > would accomplish the padding in a way that works for any compiler we > care about and irrespective of size. This would defeat care taken elsewhere to use only C90 features in headers. But __aligned() is already used a lot. Since it affects semantics, it is correctly not defined as nothing, except in the broken lint case. Newer arches probably shouldn't support aout. Then it is another bug to include aout headers. But the nlist_aout.h header is really common for elf and aout -- the only aout-only part of it is the union half of the ifdef. It is in much better shape than the documentation for nlist(3) -- nlist() is now used mainly for elf, but is only documented for aout. Bruce From owner-svn-src-all@FreeBSD.ORG Sat May 30 04:15:10 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 59326899; Sat, 30 May 2015 04:15:10 +0000 (UTC) (envelope-from yaneurabeya@gmail.com) Received: from mail-qk0-x236.google.com (mail-qk0-x236.google.com [IPv6:2607:f8b0:400d:c09::236]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 1477718AF; Sat, 30 May 2015 04:15:10 +0000 (UTC) (envelope-from yaneurabeya@gmail.com) Received: by qkhq76 with SMTP id q76so27330995qkh.2; Fri, 29 May 2015 21:15:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=mOlimapsK0GV6DRg2N/VfDwIYQQiVods9dEZi5OLkEk=; b=oAjffUVn5oU5Xx+6RTbS2nvicQas2ZtOUWWUdLBsEhEn39Ydxzrik4OUDeBlPiOy+F rEFaY1UFTIQshWpiBHd4e2Ns/fS+fJNso/g2l6HywH7S0uyd2V6m/xYsuVQ28Fn1Jh+D QmmFGyIJwk9HkAoJxe+/vitSTqNgGG9l+ROtPGy5iptR/ORteXKU5kqnDIV0oGheZQJv +6l1zil4bBBFbmyTA7yeUYXAdIZFDX5eFj/n4OqW9TgyFo2Agc3ZmzAnvcy+vGogj0U8 NsjyozEUfDRTnRl6sILwMq/w+bhdVQGg/Q6gCcfnPUNHH2gS/1tPX1EgoQbIfUxYk9+v 79ow== MIME-Version: 1.0 X-Received: by 10.140.90.99 with SMTP id w90mr13106907qgd.57.1432959308932; Fri, 29 May 2015 21:15:08 -0700 (PDT) Received: by 10.140.98.73 with HTTP; Fri, 29 May 2015 21:15:08 -0700 (PDT) In-Reply-To: References: <201505271744.t4RHiC04024525@svn.freebsd.org> <16669147.Y9s9XdOlga@ralph.baldwin.cx> Date: Fri, 29 May 2015 21:15:08 -0700 Message-ID: Subject: Re: svn commit: r283620 - in stable/10/sys: amd64/conf conf dev/ixgbe modules modules/ix modules/ixv From: NGie Cooper To: John Baldwin Cc: Eric Joyner , Jack F Vogel , "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-stable@freebsd.org" , "svn-src-stable-10@freebsd.org" Content-Type: text/plain; charset=UTF-8 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 04:15:10 -0000 On Wed, May 27, 2015 at 12:30 PM, NGie Cooper wrote: > On Wed, May 27, 2015 at 12:09 PM, John Baldwin wrote: >> On Wednesday, May 27, 2015 05:44:12 PM Eric Joyner wrote: >>> Author: erj >>> Date: Wed May 27 17:44:11 2015 >>> New Revision: 283620 >>> URL: https://svnweb.freebsd.org/changeset/base/283620 >>> >>> Log: >>> MFC ixgbe commits for 10.2: >>> >>> - r280182 - Split the driver into independent pf/vf loadables >>> - r280197 - Resolve build issues >>> - r280204 - Fix multiple same-name devclasses >>> - r280228 - Fix i386 LINT build issues / remove unused variable >>> - r280252 - Fix building ixgbe with gcc >>> - r280962 - Make changes to busdma code similar to r257541 >>> - r281772 & r281773 - Remove unused variable >>> - partial r282280 - stats counter update (ix-only) >>> - r282289 - Add X550 support >>> - r282290 - Add X550 makefile updates >>> - r282293 - Add ixgbe_x550.c to conf/files >>> - r282299 - Fix gcc compile (extraneous extern declaration) >>> >>> Finally, add ix_txrx.c to conf/files because it's required for compile in stable/10. >>> >>> Approved by: jfv (mentor) >> >> It would be better to not break existing kernel configs for 10. You could >> hack the lines in sys/conf/files to allow either 'device ix' or 'device ixgbe' >> to work by using 'optional ixgbe ix', etc. You wouldn't need to document it >> in NOTES and you could leave your existing changes in GENERIC, but this would >> avoid surprises for folks who were using custom kernel configs. >> >> Similarly, you probably want to allow 'kldload ixgbe' or 'ixgbe_load="YES"' >> in loader.conf to still work. You can try just installing an 'ixgbe.ko' >> symlink via the module's Makefile, though I'm not sure that will work >> correctly for the loader.conf case. If it doesn't, then the other route is >> to create a stub ixgbe.c file that MODULE_DEPEND()'s on the ix and ixv driver >> modules so that it autoloads if_ix.ko and if_ixv.ko as dependencies when it >> is loaded. > > +100 This change also makes things slightly annoying if you used `MODULES_OVERRIDE+=ixgbe` previously in src.conf or $KERNCONF stable/9 and stable/10. I'll see if I can implement a backwards compatibility shim for stable/9 and stable/10 at least, because I've been bitten by this once today with a dumbed down kernel config.. Thanks, -NGie From owner-svn-src-all@FreeBSD.ORG Sat May 30 04:49:21 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 39ABFBD1; Sat, 30 May 2015 04:49:21 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from svn.freebsd.org (svn.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 1B1AF1F67; Sat, 30 May 2015 04:49:21 +0000 (UTC) (envelope-from davidcs@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4U4nKhg030277; Sat, 30 May 2015 04:49:20 GMT (envelope-from davidcs@FreeBSD.org) Received: (from davidcs@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4U4nKFO030271; Sat, 30 May 2015 04:49:20 GMT (envelope-from davidcs@FreeBSD.org) Message-Id: <201505300449.t4U4nKFO030271@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: davidcs set sender to davidcs@FreeBSD.org using -f From: David C Somayajulu Date: Sat, 30 May 2015 04:49:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org Subject: svn commit: r283763 - stable/7/sys/dev/bxe X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 04:49:21 -0000 Author: davidcs Date: Sat May 30 04:49:19 2015 New Revision: 283763 URL: https://svnweb.freebsd.org/changeset/base/283763 Log: MFC r283274 Add stat counters for Jumbo Frames using SGE ring. Also remove the checks for IFCAP_LRO in bxe_alloc_fp_buffers() and bxe_pf_rx_q_prep() since both TPA and Jumbo can use SGE ring. Submitted by:gary.zambrano@qlogic.com Modified: stable/7/sys/dev/bxe/bxe.c stable/7/sys/dev/bxe/bxe_stats.c stable/7/sys/dev/bxe/bxe_stats.h Directory Properties: stable/7/sys/ (props changed) Modified: stable/7/sys/dev/bxe/bxe.c ============================================================================== --- stable/7/sys/dev/bxe/bxe.c Sat May 30 01:04:45 2015 (r283762) +++ stable/7/sys/dev/bxe/bxe.c Sat May 30 04:49:19 2015 (r283763) @@ -27,7 +27,7 @@ #include __FBSDID("$FreeBSD$"); -#define BXE_DRIVER_VERSION "1.78.78" +#define BXE_DRIVER_VERSION "1.78.79" #include "bxe.h" #include "ecore_sp.h" @@ -483,6 +483,8 @@ static const struct { 4, STATS_FLAGS_FUNC, "rx_pkts"}, { STATS_OFFSET32(rx_tpa_pkts), 4, STATS_FLAGS_FUNC, "rx_tpa_pkts"}, + { STATS_OFFSET32(rx_jumbo_sge_pkts), + 4, STATS_FLAGS_FUNC, "rx_jumbo_sge_pkts"}, { STATS_OFFSET32(rx_soft_errors), 4, STATS_FLAGS_FUNC, "rx_soft_errors"}, { STATS_OFFSET32(rx_hw_csum_errors), @@ -594,6 +596,8 @@ static const struct { 4, "rx_pkts"}, { Q_STATS_OFFSET32(rx_tpa_pkts), 4, "rx_tpa_pkts"}, + { Q_STATS_OFFSET32(rx_jumbo_sge_pkts), + 4, "rx_jumbo_sge_pkts"}, { Q_STATS_OFFSET32(rx_soft_errors), 4, "rx_soft_errors"}, { Q_STATS_OFFSET32(rx_hw_csum_errors), @@ -3477,6 +3481,7 @@ bxe_rxeof(struct bxe_softc *sc, rc = bxe_service_rxsgl(fp, len, lenonbd, m, cqe_fp); if (rc) break; + fp->eth_q_stats.rx_jumbo_sge_pkts++; } /* assign packet to this interface interface */ @@ -6862,42 +6867,40 @@ bxe_alloc_fp_buffers(struct bxe_softc *s fp->rx_cq_prod = cqe_ring_prod; fp->eth_q_stats.rx_calls = fp->eth_q_stats.rx_pkts = 0; - if (sc->ifnet->if_capenable & IFCAP_LRO) { - max_agg_queues = MAX_AGG_QS(sc); + max_agg_queues = MAX_AGG_QS(sc); - fp->tpa_enable = TRUE; + fp->tpa_enable = TRUE; - /* fill the TPA pool */ - for (j = 0; j < max_agg_queues; j++) { - rc = bxe_alloc_rx_tpa_mbuf(fp, j); - if (rc != 0) { - BLOGE(sc, "mbuf alloc fail for fp[%02d] TPA queue %d\n", + /* fill the TPA pool */ + for (j = 0; j < max_agg_queues; j++) { + rc = bxe_alloc_rx_tpa_mbuf(fp, j); + if (rc != 0) { + BLOGE(sc, "mbuf alloc fail for fp[%02d] TPA queue %d\n", i, j); - fp->tpa_enable = FALSE; - goto bxe_alloc_fp_buffers_error; - } - - fp->rx_tpa_info[j].state = BXE_TPA_STATE_STOP; + fp->tpa_enable = FALSE; + goto bxe_alloc_fp_buffers_error; } - if (fp->tpa_enable) { - /* fill the RX SGE chain */ - ring_prod = 0; - for (j = 0; j < RX_SGE_USABLE; j++) { - rc = bxe_alloc_rx_sge_mbuf(fp, ring_prod); - if (rc != 0) { - BLOGE(sc, "mbuf alloc fail for fp[%02d] SGE %d\n", - i, ring_prod); - fp->tpa_enable = FALSE; - ring_prod = 0; - goto bxe_alloc_fp_buffers_error; - } + fp->rx_tpa_info[j].state = BXE_TPA_STATE_STOP; + } - ring_prod = RX_SGE_NEXT(ring_prod); + if (fp->tpa_enable) { + /* fill the RX SGE chain */ + ring_prod = 0; + for (j = 0; j < RX_SGE_USABLE; j++) { + rc = bxe_alloc_rx_sge_mbuf(fp, ring_prod); + if (rc != 0) { + BLOGE(sc, "mbuf alloc fail for fp[%02d] SGE %d\n", + i, ring_prod); + fp->tpa_enable = FALSE; + ring_prod = 0; + goto bxe_alloc_fp_buffers_error; } - fp->rx_sge_prod = ring_prod; + ring_prod = RX_SGE_NEXT(ring_prod); } + + fp->rx_sge_prod = ring_prod; } } @@ -11781,28 +11784,26 @@ bxe_pf_rx_q_prep(struct bxe_softc uint16_t sge_sz = 0; uint16_t tpa_agg_size = 0; - if (sc->ifnet->if_capenable & IFCAP_LRO) { - pause->sge_th_lo = SGE_TH_LO(sc); - pause->sge_th_hi = SGE_TH_HI(sc); + pause->sge_th_lo = SGE_TH_LO(sc); + pause->sge_th_hi = SGE_TH_HI(sc); - /* validate SGE ring has enough to cross high threshold */ - if (sc->dropless_fc && + /* validate SGE ring has enough to cross high threshold */ + if (sc->dropless_fc && (pause->sge_th_hi + FW_PREFETCH_CNT) > (RX_SGE_USABLE_PER_PAGE * RX_SGE_NUM_PAGES)) { - BLOGW(sc, "sge ring threshold limit\n"); - } + BLOGW(sc, "sge ring threshold limit\n"); + } - /* minimum max_aggregation_size is 2*MTU (two full buffers) */ - tpa_agg_size = (2 * sc->mtu); - if (tpa_agg_size < sc->max_aggregation_size) { - tpa_agg_size = sc->max_aggregation_size; - } + /* minimum max_aggregation_size is 2*MTU (two full buffers) */ + tpa_agg_size = (2 * sc->mtu); + if (tpa_agg_size < sc->max_aggregation_size) { + tpa_agg_size = sc->max_aggregation_size; + } - max_sge = SGE_PAGE_ALIGN(sc->mtu) >> SGE_PAGE_SHIFT; - max_sge = ((max_sge + PAGES_PER_SGE - 1) & + max_sge = SGE_PAGE_ALIGN(sc->mtu) >> SGE_PAGE_SHIFT; + max_sge = ((max_sge + PAGES_PER_SGE - 1) & (~(PAGES_PER_SGE - 1))) >> PAGES_PER_SGE_SHIFT; - sge_sz = (uint16_t)min(SGE_PAGES, 0xffff); - } + sge_sz = (uint16_t)min(SGE_PAGES, 0xffff); /* pause - not for e1 */ if (!CHIP_IS_E1(sc)) { Modified: stable/7/sys/dev/bxe/bxe_stats.c ============================================================================== --- stable/7/sys/dev/bxe/bxe_stats.c Sat May 30 01:04:45 2015 (r283762) +++ stable/7/sys/dev/bxe/bxe_stats.c Sat May 30 04:49:19 2015 (r283763) @@ -1227,6 +1227,7 @@ bxe_drv_stats_update(struct bxe_softc *s UPDATE_ESTAT_QSTAT(rx_calls); UPDATE_ESTAT_QSTAT(rx_pkts); UPDATE_ESTAT_QSTAT(rx_tpa_pkts); + UPDATE_ESTAT_QSTAT(rx_jumbo_sge_pkts); UPDATE_ESTAT_QSTAT(rx_soft_errors); UPDATE_ESTAT_QSTAT(rx_hw_csum_errors); UPDATE_ESTAT_QSTAT(rx_ofld_frames_csum_ip); Modified: stable/7/sys/dev/bxe/bxe_stats.h ============================================================================== --- stable/7/sys/dev/bxe/bxe_stats.h Sat May 30 01:04:45 2015 (r283762) +++ stable/7/sys/dev/bxe/bxe_stats.h Sat May 30 04:49:19 2015 (r283763) @@ -218,6 +218,7 @@ struct bxe_eth_stats { uint32_t rx_calls; uint32_t rx_pkts; uint32_t rx_tpa_pkts; + uint32_t rx_jumbo_sge_pkts; uint32_t rx_soft_errors; uint32_t rx_hw_csum_errors; uint32_t rx_ofld_frames_csum_ip; @@ -318,6 +319,7 @@ struct bxe_eth_q_stats { uint32_t rx_calls; uint32_t rx_pkts; uint32_t rx_tpa_pkts; + uint32_t rx_jumbo_sge_pkts; uint32_t rx_soft_errors; uint32_t rx_hw_csum_errors; uint32_t rx_ofld_frames_csum_ip; @@ -411,6 +413,7 @@ struct bxe_eth_q_stats_old { uint32_t rx_calls_old; uint32_t rx_pkts_old; uint32_t rx_tpa_pkts_old; + uint32_t rx_jumbo_sge_pkts_old; uint32_t rx_soft_errors_old; uint32_t rx_hw_csum_errors_old; uint32_t rx_ofld_frames_csum_ip_old; From owner-svn-src-all@FreeBSD.ORG Sat May 30 08:54:43 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id AD599FA1; Sat, 30 May 2015 08:54:43 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.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 9B2F71686; Sat, 30 May 2015 08:54:43 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4U8shJS053885; Sat, 30 May 2015 08:54:43 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4U8shXM053884; Sat, 30 May 2015 08:54:43 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201505300854.t4U8shXM053884@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Sat, 30 May 2015 08:54:43 +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: r283765 - stable/10/sys/kern X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 08:54:43 -0000 Author: kib Date: Sat May 30 08:54:42 2015 New Revision: 283765 URL: https://svnweb.freebsd.org/changeset/base/283765 Log: MFC r283320: Always obey thread request to not stop on non-boundary. Modified: stable/10/sys/kern/kern_thread.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/kern/kern_thread.c ============================================================================== --- stable/10/sys/kern/kern_thread.c Sat May 30 08:01:16 2015 (r283764) +++ stable/10/sys/kern/kern_thread.c Sat May 30 08:54:42 2015 (r283765) @@ -867,12 +867,9 @@ thread_suspend_check(int return_instead) return (ERESTART); /* - * Ignore suspend requests for stop signals if they - * are deferred. + * Ignore suspend requests if they are deferred. */ - if ((P_SHOULDSTOP(p) == P_STOPPED_SIG || - (p->p_flag & P_TOTAL_STOP) != 0) && - (td->td_flags & TDF_SBDRY) != 0) { + if ((td->td_flags & TDF_SBDRY) != 0) { KASSERT(return_instead, ("TDF_SBDRY set for unsafe thread_suspend_check")); return (0); From owner-svn-src-all@FreeBSD.ORG Sat May 30 12:17:20 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 44FADBBA; Sat, 30 May 2015 12:17:20 +0000 (UTC) (envelope-from grembo@FreeBSD.org) Received: from svn.freebsd.org (svn.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 30BFA1183; Sat, 30 May 2015 12:17:20 +0000 (UTC) (envelope-from grembo@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4UCHKcC056034; Sat, 30 May 2015 12:17:20 GMT (envelope-from grembo@FreeBSD.org) Received: (from grembo@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4UCHJtI056026; Sat, 30 May 2015 12:17:19 GMT (envelope-from grembo@FreeBSD.org) Message-Id: <201505301217.t4UCHJtI056026@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: grembo set sender to grembo@FreeBSD.org using -f From: Michael Gmelin Date: Sat, 30 May 2015 12:17:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283766 - in head: share/man/man4 sys/conf sys/dev/ichiic sys/modules/i2c/controllers sys/modules/i2c/controllers/ichiic X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 12:17:20 -0000 Author: grembo (ports committer) Date: Sat May 30 12:17:18 2015 New Revision: 283766 URL: https://svnweb.freebsd.org/changeset/base/283766 Log: ig4 - Intel fourth gen integrated I2C SMBus driver. Differential Revision: https://reviews.freebsd.org/D2372 Reviewed by: jhb, wblock, adrian Approved by: jhb, wblock Relnotes: yes Added: head/share/man/man4/ig4.4 (contents, props changed) head/sys/dev/ichiic/ head/sys/dev/ichiic/ig4_iic.c (contents, props changed) head/sys/dev/ichiic/ig4_pci.c (contents, props changed) head/sys/dev/ichiic/ig4_reg.h (contents, props changed) head/sys/dev/ichiic/ig4_var.h (contents, props changed) head/sys/modules/i2c/controllers/ichiic/ head/sys/modules/i2c/controllers/ichiic/Makefile (contents, props changed) Modified: head/share/man/man4/Makefile head/sys/conf/files head/sys/modules/i2c/controllers/Makefile Modified: head/share/man/man4/Makefile ============================================================================== --- head/share/man/man4/Makefile Sat May 30 08:54:42 2015 (r283765) +++ head/share/man/man4/Makefile Sat May 30 12:17:18 2015 (r283766) @@ -192,6 +192,7 @@ MAN= aac.4 \ icmp6.4 \ ida.4 \ ifmib.4 \ + ig4.4 \ igb.4 \ igmp.4 \ iic.4 \ Added: head/share/man/man4/ig4.4 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/share/man/man4/ig4.4 Sat May 30 12:17:18 2015 (r283766) @@ -0,0 +1,79 @@ +.\" Copyright (c) 2015 Michael Gmelin +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" $FreeBSD$ +.\" +.Dd May 30, 2015 +.Dt IG4 4 +.Os +.Sh NAME +.Nm ig4 +.Nd Intel(R) fourth generation mobile CPU integrated I2C SMBus driver +.Sh SYNOPSIS +To compile this driver into the kernel, place the following lines into +the kernel configuration file: +.Bd -ragged -offset indent +.Cd "device ig4" +.Cd "device smbus" +.Ed +.Pp +Alternatively, to load the driver as a module at boot time, place the following line in +.Xr loader.conf 5 : +.Bd -literal -offset indent +ig4_load="YES" +.Ed +.Sh DESCRIPTION +The +.Nm +driver provides access to peripherals attached to an I2C SMB controller. +.Nm +supports the SMBus controller found in fourth generation Intel(R) Core(TM) +processors based on the mobile U-processor line for intelligent systems. +This includes the i7-4650U, i5-4300U, i3-4010U, and 2980U. +.Sh SYSCTL VARIABLES +These +.Xr sysctl 8 +variables are available: +.Bl -tag -width "debug.ig4_dump" +.It Va debug.ig4_dump +Setting this to a non-zero value dumps controller registers to console and +syslog once. +The sysctl resets to zero immediately. +.El +.Sh SEE ALSO +.Xr smb 4 , +.Xr smbus 4 +.Sh AUTHORS +.An -nosplit +The +.Nm +driver was written for DragonFly BSD by +.An Matthew Dillon +and subsequently ported to +.Fx +by +.An Michael Gmelin Aq Mt freebsd@grem.de . +.Pp +This manual page was written by +.An Michael Gmelin Aq Mt freebsd@grem.de . Modified: head/sys/conf/files ============================================================================== --- head/sys/conf/files Sat May 30 08:54:42 2015 (r283765) +++ head/sys/conf/files Sat May 30 12:17:18 2015 (r283766) @@ -1427,6 +1427,8 @@ dev/hptiop/hptiop.c optional hptiop scb dev/hwpmc/hwpmc_logging.c optional hwpmc dev/hwpmc/hwpmc_mod.c optional hwpmc dev/hwpmc/hwpmc_soft.c optional hwpmc +dev/ichiic/ig4_iic.c optional ichiic +dev/ichiic/ig4_pci.c optional ichiic pci dev/ichsmb/ichsmb.c optional ichsmb dev/ichsmb/ichsmb_pci.c optional ichsmb pci dev/ida/ida.c optional ida Added: head/sys/dev/ichiic/ig4_iic.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/dev/ichiic/ig4_iic.c Sat May 30 12:17:18 2015 (r283766) @@ -0,0 +1,966 @@ +/* + * Copyright (c) 2014 The DragonFly Project. All rights reserved. + * + * This code is derived from software contributed to The DragonFly Project + * by Matthew Dillon and was subsequently ported + * to FreeBSD by Michael Gmelin + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of The DragonFly Project nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific, prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * Intel fourth generation mobile cpus integrated I2C device, smbus driver. + * + * See ig4_reg.h for datasheet reference and notes. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include +#include + +#define TRANS_NORMAL 1 +#define TRANS_PCALL 2 +#define TRANS_BLOCK 3 + +static void ig4iic_start(void *xdev); +static void ig4iic_intr(void *cookie); +static void ig4iic_dump(ig4iic_softc_t *sc); + +static int ig4_dump; +SYSCTL_INT(_debug, OID_AUTO, ig4_dump, CTLTYPE_INT | CTLFLAG_RW, + &ig4_dump, 0, ""); + +/* + * Low-level inline support functions + */ +static __inline void +reg_write(ig4iic_softc_t *sc, uint32_t reg, uint32_t value) +{ + bus_write_4(sc->regs_res, reg, value); + bus_barrier(sc->regs_res, reg, 4, BUS_SPACE_BARRIER_WRITE); +} + +static __inline uint32_t +reg_read(ig4iic_softc_t *sc, uint32_t reg) +{ + uint32_t value; + + bus_barrier(sc->regs_res, reg, 4, BUS_SPACE_BARRIER_READ); + value = bus_read_4(sc->regs_res, reg); + return (value); +} + +/* + * Enable or disable the controller and wait for the controller to acknowledge + * the state change. + */ +static int +set_controller(ig4iic_softc_t *sc, uint32_t ctl) +{ + int retry; + int error; + uint32_t v; + + reg_write(sc, IG4_REG_I2C_EN, ctl); + error = SMB_ETIMEOUT; + + for (retry = 100; retry > 0; --retry) { + v = reg_read(sc, IG4_REG_ENABLE_STATUS); + if (((v ^ ctl) & IG4_I2C_ENABLE) == 0) { + error = 0; + break; + } + mtx_sleep(sc, &sc->mutex, 0, "i2cslv", 1); + } + return (error); +} + +/* + * Wait up to 25ms for the requested status using a 25uS polling loop. + */ +static int +wait_status(ig4iic_softc_t *sc, uint32_t status) +{ + uint32_t v; + int error; + int txlvl = -1; + u_int count_us = 0; + u_int limit_us = 25000; /* 25ms */ + + error = SMB_ETIMEOUT; + + for (;;) { + /* + * Check requested status + */ + v = reg_read(sc, IG4_REG_I2C_STA); + if (v & status) { + error = 0; + break; + } + + /* + * When waiting for receive data break-out if the interrupt + * loaded data into the FIFO. + */ + if (status & IG4_STATUS_RX_NOTEMPTY) { + if (sc->rpos != sc->rnext) { + error = 0; + break; + } + } + + /* + * When waiting for the transmit FIFO to become empty, + * reset the timeout if we see a change in the transmit + * FIFO level as progress is being made. + */ + if (status & IG4_STATUS_TX_EMPTY) { + v = reg_read(sc, IG4_REG_TXFLR) & IG4_FIFOLVL_MASK; + if (txlvl != v) { + txlvl = v; + count_us = 0; + } + } + + /* + * Stop if we've run out of time. + */ + if (count_us >= limit_us) + break; + + /* + * When waiting for receive data let the interrupt do its + * work, otherwise poll with the lock held. + */ + if (status & IG4_STATUS_RX_NOTEMPTY) { + mtx_sleep(sc, &sc->mutex, PZERO, "i2cwait", + (hz + 99) / 100); /* sleep up to 10ms */ + count_us += 10000; + } else { + DELAY(25); + count_us += 25; + } + } + + return (error); +} + +/* + * Read I2C data. The data might have already been read by + * the interrupt code, otherwise it is sitting in the data + * register. + */ +static uint8_t +data_read(ig4iic_softc_t *sc) +{ + uint8_t c; + + if (sc->rpos == sc->rnext) { + c = (uint8_t)reg_read(sc, IG4_REG_DATA_CMD); + } else { + c = sc->rbuf[sc->rpos & IG4_RBUFMASK]; + ++sc->rpos; + } + return (c); +} + +/* + * Set the slave address. The controller must be disabled when + * changing the address. + * + * This operation does not issue anything to the I2C bus but sets + * the target address for when the controller later issues a START. + */ +static void +set_slave_addr(ig4iic_softc_t *sc, uint8_t slave, int trans_op) +{ + uint32_t tar; + uint32_t ctl; + int use_10bit; + + use_10bit = sc->use_10bit; + if (trans_op & SMB_TRANS_7BIT) + use_10bit = 0; + if (trans_op & SMB_TRANS_10BIT) + use_10bit = 1; + + if (sc->slave_valid && sc->last_slave == slave && + sc->use_10bit == use_10bit) { + return; + } + sc->use_10bit = use_10bit; + + /* + * Wait for TXFIFO to drain before disabling the controller. + * + * If a write message has not been completed it's really a + * programming error, but for now in that case issue an extra + * byte + STOP. + * + * If a read message has not been completed it's also a programming + * error, for now just ignore it. + */ + wait_status(sc, IG4_STATUS_TX_NOTFULL); + if (sc->write_started) { + reg_write(sc, IG4_REG_DATA_CMD, IG4_DATA_STOP); + sc->write_started = 0; + } + if (sc->read_started) + sc->read_started = 0; + wait_status(sc, IG4_STATUS_TX_EMPTY); + + set_controller(sc, 0); + ctl = reg_read(sc, IG4_REG_CTL); + ctl &= ~IG4_CTL_10BIT; + ctl |= IG4_CTL_RESTARTEN; + + tar = slave; + if (sc->use_10bit) { + tar |= IG4_TAR_10BIT; + ctl |= IG4_CTL_10BIT; + } + reg_write(sc, IG4_REG_CTL, ctl); + reg_write(sc, IG4_REG_TAR_ADD, tar); + set_controller(sc, IG4_I2C_ENABLE); + sc->slave_valid = 1; + sc->last_slave = slave; +} + +/* + * Issue START with byte command, possible count, and a variable length + * read or write buffer, then possible turn-around read. The read also + * has a possible count received. + * + * For SMBUS - + * + * Quick: START+ADDR+RD/WR STOP + * + * Normal: START+ADDR+WR CMD DATA..DATA STOP + * + * START+ADDR+RD CMD + * RESTART+ADDR RDATA..RDATA STOP + * (can also be used for I2C transactions) + * + * Process Call: START+ADDR+WR CMD DATAL DATAH + * RESTART+ADDR+RD RDATAL RDATAH STOP + * + * Block: START+ADDR+RD CMD + * RESTART+ADDR+RD RCOUNT DATA... STOP + * + * START+ADDR+WR CMD + * RESTART+ADDR+WR WCOUNT DATA... STOP + * + * For I2C - basically, no *COUNT fields, possibly no *CMD field. If the + * sender needs to issue a 2-byte command it will incorporate it + * into the write buffer and also set NOCMD. + * + * Generally speaking, the START+ADDR / RESTART+ADDR is handled automatically + * by the controller at the beginning of a command sequence or on a data + * direction turn-around, and we only need to tell it when to issue the STOP. + */ +static int +smb_transaction(ig4iic_softc_t *sc, char cmd, int op, + char *wbuf, int wcount, char *rbuf, int rcount, int *actualp) +{ + int error; + int unit; + uint32_t last; + + /* + * Debugging - dump registers + */ + if (ig4_dump) { + unit = device_get_unit(sc->dev); + if (ig4_dump & (1 << unit)) { + ig4_dump &= ~(1 << unit); + ig4iic_dump(sc); + } + } + + /* + * Issue START or RESTART with next data byte, clear any previous + * abort condition that may have been holding the txfifo in reset. + */ + last = IG4_DATA_RESTART; + reg_read(sc, IG4_REG_CLR_TX_ABORT); + if (actualp) + *actualp = 0; + + /* + * Issue command if not told otherwise (smbus). + */ + if ((op & SMB_TRANS_NOCMD) == 0) { + error = wait_status(sc, IG4_STATUS_TX_NOTFULL); + if (error) + goto done; + last |= (u_char)cmd; + if (wcount == 0 && rcount == 0 && (op & SMB_TRANS_NOSTOP) == 0) + last |= IG4_DATA_STOP; + reg_write(sc, IG4_REG_DATA_CMD, last); + last = 0; + } + + /* + * Clean out any previously received data. + */ + if (sc->rpos != sc->rnext && + (op & SMB_TRANS_NOREPORT) == 0) { + device_printf(sc->dev, + "discarding %d bytes of spurious data\n", + sc->rnext - sc->rpos); + } + sc->rpos = 0; + sc->rnext = 0; + + /* + * If writing and not told otherwise, issue the write count (smbus). + */ + if (wcount && (op & SMB_TRANS_NOCNT) == 0) { + error = wait_status(sc, IG4_STATUS_TX_NOTFULL); + if (error) + goto done; + last |= (u_char)cmd; + reg_write(sc, IG4_REG_DATA_CMD, last); + last = 0; + } + + /* + * Bulk write (i2c) + */ + while (wcount) { + error = wait_status(sc, IG4_STATUS_TX_NOTFULL); + if (error) + goto done; + last |= (u_char)*wbuf; + if (wcount == 1 && rcount == 0 && (op & SMB_TRANS_NOSTOP) == 0) + last |= IG4_DATA_STOP; + reg_write(sc, IG4_REG_DATA_CMD, last); + --wcount; + ++wbuf; + last = 0; + } + + /* + * Issue reads to xmit FIFO (strange, I know) to tell the controller + * to clock in data. At the moment just issue one read ahead to + * pipeline the incoming data. + * + * NOTE: In the case of NOCMD and wcount == 0 we still issue a + * RESTART here, even if the data direction has not changed + * from the previous CHAINing call. This we force the RESTART. + * (A new START is issued automatically by the controller in + * the other nominal cases such as a data direction change or + * a previous STOP was issued). + * + * If this will be the last byte read we must also issue the STOP + * at the end of the read. + */ + if (rcount) { + last = IG4_DATA_RESTART | IG4_DATA_COMMAND_RD; + if (rcount == 1 && + (op & (SMB_TRANS_NOSTOP | SMB_TRANS_NOCNT)) == + SMB_TRANS_NOCNT) { + last |= IG4_DATA_STOP; + } + reg_write(sc, IG4_REG_DATA_CMD, last); + last = IG4_DATA_COMMAND_RD; + } + + /* + * Bulk read (i2c) and count field handling (smbus) + */ + while (rcount) { + /* + * Maintain a pipeline by queueing the allowance for the next + * read before waiting for the current read. + */ + if (rcount > 1) { + if (op & SMB_TRANS_NOCNT) + last = (rcount == 2) ? IG4_DATA_STOP : 0; + else + last = 0; + reg_write(sc, IG4_REG_DATA_CMD, IG4_DATA_COMMAND_RD | + last); + } + error = wait_status(sc, IG4_STATUS_RX_NOTEMPTY); + if (error) { + if ((op & SMB_TRANS_NOREPORT) == 0) { + device_printf(sc->dev, + "rx timeout addr 0x%02x\n", + sc->last_slave); + } + goto done; + } + last = data_read(sc); + + if (op & SMB_TRANS_NOCNT) { + *rbuf = (u_char)last; + ++rbuf; + --rcount; + if (actualp) + ++*actualp; + } else { + /* + * Handle count field (smbus), which is not part of + * the rcount'ed buffer. The first read data in a + * bulk transfer is the count. + * + * XXX if rcount is loaded as 0 how do I generate a + * STOP now without issuing another RD or WR? + */ + if (rcount > (u_char)last) + rcount = (u_char)last; + op |= SMB_TRANS_NOCNT; + } + } + error = 0; +done: + /* XXX wait for xmit buffer to become empty */ + last = reg_read(sc, IG4_REG_TX_ABRT_SOURCE); + + return (error); +} + +/* + * SMBUS API FUNCTIONS + * + * Called from ig4iic_pci_attach/detach() + */ +int +ig4iic_attach(ig4iic_softc_t *sc) +{ + int error; + uint32_t v; + + v = reg_read(sc, IG4_REG_COMP_TYPE); + v = reg_read(sc, IG4_REG_COMP_PARAM1); + v = reg_read(sc, IG4_REG_GENERAL); + if ((v & IG4_GENERAL_SWMODE) == 0) { + v |= IG4_GENERAL_SWMODE; + reg_write(sc, IG4_REG_GENERAL, v); + v = reg_read(sc, IG4_REG_GENERAL); + } + + v = reg_read(sc, IG4_REG_SW_LTR_VALUE); + v = reg_read(sc, IG4_REG_AUTO_LTR_VALUE); + + v = reg_read(sc, IG4_REG_COMP_VER); + if (v != IG4_COMP_VER) { + error = ENXIO; + goto done; + } + v = reg_read(sc, IG4_REG_SS_SCL_HCNT); + v = reg_read(sc, IG4_REG_SS_SCL_LCNT); + v = reg_read(sc, IG4_REG_FS_SCL_HCNT); + v = reg_read(sc, IG4_REG_FS_SCL_LCNT); + v = reg_read(sc, IG4_REG_SDA_HOLD); + + v = reg_read(sc, IG4_REG_SS_SCL_HCNT); + reg_write(sc, IG4_REG_FS_SCL_HCNT, v); + v = reg_read(sc, IG4_REG_SS_SCL_LCNT); + reg_write(sc, IG4_REG_FS_SCL_LCNT, v); + + /* + * Program based on a 25000 Hz clock. This is a bit of a + * hack (obviously). The defaults are 400 and 470 for standard + * and 60 and 130 for fast. The defaults for standard fail + * utterly (presumably cause an abort) because the clock time + * is ~18.8ms by default. This brings it down to ~4ms (for now). + */ + reg_write(sc, IG4_REG_SS_SCL_HCNT, 100); + reg_write(sc, IG4_REG_SS_SCL_LCNT, 125); + reg_write(sc, IG4_REG_FS_SCL_HCNT, 100); + reg_write(sc, IG4_REG_FS_SCL_LCNT, 125); + + /* + * Use a threshold of 1 so we get interrupted on each character, + * allowing us to use mtx_sleep() in our poll code. Not perfect + * but this is better than using DELAY() for receiving data. + */ + reg_write(sc, IG4_REG_RX_TL, 1); + + reg_write(sc, IG4_REG_CTL, + IG4_CTL_MASTER | + IG4_CTL_SLAVE_DISABLE | + IG4_CTL_RESTARTEN | + IG4_CTL_SPEED_STD); + + sc->smb = device_add_child(sc->dev, "smbus", -1); + if (sc->smb == NULL) { + device_printf(sc->dev, "smbus driver not found\n"); + error = ENXIO; + goto done; + } + +#if 0 + /* + * Don't do this, it blows up the PCI config + */ + reg_write(sc, IG4_REG_RESETS, IG4_RESETS_ASSERT); + reg_write(sc, IG4_REG_RESETS, IG4_RESETS_DEASSERT); +#endif + + /* + * Interrupt on STOP detect or receive character ready + */ + reg_write(sc, IG4_REG_INTR_MASK, IG4_INTR_STOP_DET | + IG4_INTR_RX_FULL); + mtx_lock(&sc->mutex); + if (set_controller(sc, 0)) + device_printf(sc->dev, "controller error during attach-1\n"); + if (set_controller(sc, IG4_I2C_ENABLE)) + device_printf(sc->dev, "controller error during attach-2\n"); + mtx_unlock(&sc->mutex); + error = bus_setup_intr(sc->dev, sc->intr_res, INTR_TYPE_MISC | INTR_MPSAFE, + NULL, ig4iic_intr, sc, &sc->intr_handle); + if (error) { + device_printf(sc->dev, + "Unable to setup irq: error %d\n", error); + } + + sc->enum_hook.ich_func = ig4iic_start; + sc->enum_hook.ich_arg = sc->dev; + + /* We have to wait until interrupts are enabled. I2C read and write + * only works if the interrupts are available. + */ + if (config_intrhook_establish(&sc->enum_hook) != 0) + error = ENOMEM; + else + error = 0; + +done: + return (error); +} + +void +ig4iic_start(void *xdev) +{ + int error; + ig4iic_softc_t *sc; + device_t dev = (device_t)xdev; + + sc = device_get_softc(dev); + + config_intrhook_disestablish(&sc->enum_hook); + + /* Attach us to the smbus */ + error = bus_generic_attach(sc->dev); + if (error) { + device_printf(sc->dev, + "failed to attach child: error %d\n", error); + } +} + + + +int +ig4iic_detach(ig4iic_softc_t *sc) +{ + int error; + + if (device_is_attached(sc->dev)) { + error = bus_generic_detach(sc->dev); + if (error) + return (error); + } + if (sc->smb) + device_delete_child(sc->dev, sc->smb); + if (sc->intr_handle) + bus_teardown_intr(sc->dev, sc->intr_res, sc->intr_handle); + + mtx_lock(&sc->mutex); + + sc->smb = NULL; + sc->intr_handle = NULL; + reg_write(sc, IG4_REG_INTR_MASK, 0); + reg_read(sc, IG4_REG_CLR_INTR); + set_controller(sc, 0); + + mtx_unlock(&sc->mutex); + return (0); +} + +int +ig4iic_smb_callback(device_t dev, int index, void *data) +{ + ig4iic_softc_t *sc = device_get_softc(dev); + int error; + + mtx_lock(&sc->mutex); + + switch (index) { + case SMB_REQUEST_BUS: + error = 0; + break; + case SMB_RELEASE_BUS: + error = 0; + break; + default: + error = SMB_EABORT; + break; + } + + mtx_unlock(&sc->mutex); + + return (error); +} + +/* + * Quick command. i.e. START + cmd + R/W + STOP and no data. It is + * unclear to me how I could implement this with the intel i2c controller + * because the controler sends STARTs and STOPs automatically with data. + */ +int +ig4iic_smb_quick(device_t dev, u_char slave, int how) +{ + ig4iic_softc_t *sc = device_get_softc(dev); + int error; + + mtx_lock(&sc->mutex); + + switch (how) { + case SMB_QREAD: + error = SMB_ENOTSUPP; + break; + case SMB_QWRITE: + error = SMB_ENOTSUPP; + break; + default: + error = SMB_ENOTSUPP; + break; + } + mtx_unlock(&sc->mutex); + + return (error); +} + +/* + * Incremental send byte without stop (?). It is unclear why the slave + * address is specified if this presumably is used in combination with + * ig4iic_smb_quick(). + * + * (Also, how would this work anyway? Issue the last byte with writeb()?) + */ +int +ig4iic_smb_sendb(device_t dev, u_char slave, char byte) +{ + ig4iic_softc_t *sc = device_get_softc(dev); + uint32_t cmd; + int error; + + mtx_lock(&sc->mutex); + + set_slave_addr(sc, slave, 0); + cmd = byte; + if (wait_status(sc, IG4_STATUS_TX_NOTFULL) == 0) { + reg_write(sc, IG4_REG_DATA_CMD, cmd); + error = 0; + } else { + error = SMB_ETIMEOUT; + } + + mtx_unlock(&sc->mutex); + return (error); +} + +/* + * Incremental receive byte without stop (?). It is unclear why the slave + * address is specified if this presumably is used in combination with + * ig4iic_smb_quick(). + */ +int +ig4iic_smb_recvb(device_t dev, u_char slave, char *byte) +{ + ig4iic_softc_t *sc = device_get_softc(dev); + int error; + + mtx_lock(&sc->mutex); + + set_slave_addr(sc, slave, 0); + reg_write(sc, IG4_REG_DATA_CMD, IG4_DATA_COMMAND_RD); + if (wait_status(sc, IG4_STATUS_RX_NOTEMPTY) == 0) { + *byte = data_read(sc); + error = 0; + } else { + *byte = 0; + error = SMB_ETIMEOUT; + } + + mtx_unlock(&sc->mutex); + return (error); +} + +/* + * Write command and single byte in transaction. + */ +int +ig4iic_smb_writeb(device_t dev, u_char slave, char cmd, char byte) +{ + ig4iic_softc_t *sc = device_get_softc(dev); + int error; + + mtx_lock(&sc->mutex); + + set_slave_addr(sc, slave, 0); + error = smb_transaction(sc, cmd, SMB_TRANS_NOCNT, + &byte, 1, NULL, 0, NULL); + + mtx_unlock(&sc->mutex); + return (error); +} + +/* + * Write command and single word in transaction. + */ +int +ig4iic_smb_writew(device_t dev, u_char slave, char cmd, short word) +{ + ig4iic_softc_t *sc = device_get_softc(dev); + char buf[2]; + int error; + + mtx_lock(&sc->mutex); + + set_slave_addr(sc, slave, 0); + buf[0] = word & 0xFF; + buf[1] = word >> 8; + error = smb_transaction(sc, cmd, SMB_TRANS_NOCNT, + buf, 2, NULL, 0, NULL); + + mtx_unlock(&sc->mutex); + return (error); +} + +/* + * write command and read single byte in transaction. + */ +int +ig4iic_smb_readb(device_t dev, u_char slave, char cmd, char *byte) +{ + ig4iic_softc_t *sc = device_get_softc(dev); + int error; + + mtx_lock(&sc->mutex); + + set_slave_addr(sc, slave, 0); + error = smb_transaction(sc, cmd, SMB_TRANS_NOCNT, + NULL, 0, byte, 1, NULL); + + mtx_unlock(&sc->mutex); + return (error); +} + +/* + * write command and read word in transaction. + */ +int +ig4iic_smb_readw(device_t dev, u_char slave, char cmd, short *word) +{ + ig4iic_softc_t *sc = device_get_softc(dev); + char buf[2]; + int error; + + mtx_lock(&sc->mutex); + + set_slave_addr(sc, slave, 0); + if ((error = smb_transaction(sc, cmd, SMB_TRANS_NOCNT, + NULL, 0, buf, 2, NULL)) == 0) { + *word = (u_char)buf[0] | ((u_char)buf[1] << 8); + } + + mtx_unlock(&sc->mutex); + return (error); +} + +/* + * write command and word and read word in transaction + */ +int +ig4iic_smb_pcall(device_t dev, u_char slave, char cmd, + short sdata, short *rdata) +{ + ig4iic_softc_t *sc = device_get_softc(dev); + char rbuf[2]; + char wbuf[2]; + int error; + + mtx_lock(&sc->mutex); + + set_slave_addr(sc, slave, 0); + wbuf[0] = sdata & 0xFF; + wbuf[1] = sdata >> 8; + if ((error = smb_transaction(sc, cmd, SMB_TRANS_NOCNT, + wbuf, 2, rbuf, 2, NULL)) == 0) { + *rdata = (u_char)rbuf[0] | ((u_char)rbuf[1] << 8); + } + + mtx_unlock(&sc->mutex); + return (error); +} + +int +ig4iic_smb_bwrite(device_t dev, u_char slave, char cmd, + u_char wcount, char *buf) +{ + ig4iic_softc_t *sc = device_get_softc(dev); + int error; + + mtx_lock(&sc->mutex); + + set_slave_addr(sc, slave, 0); + error = smb_transaction(sc, cmd, 0, + buf, wcount, NULL, 0, NULL); + + mtx_unlock(&sc->mutex); + return (error); +} + +int +ig4iic_smb_bread(device_t dev, u_char slave, char cmd, + u_char *countp_char, char *buf) +{ + ig4iic_softc_t *sc = device_get_softc(dev); + int rcount = *countp_char; + int error; + + mtx_lock(&sc->mutex); + + set_slave_addr(sc, slave, 0); + error = smb_transaction(sc, cmd, 0, + NULL, 0, buf, rcount, &rcount); + *countp_char = rcount; + + mtx_unlock(&sc->mutex); + return (error); +} + +int +ig4iic_smb_trans(device_t dev, int slave, char cmd, int op, + char *wbuf, int wcount, char *rbuf, int rcount, + int *actualp) +{ + ig4iic_softc_t *sc = device_get_softc(dev); + int error; + + mtx_lock(&sc->mutex); + + set_slave_addr(sc, slave, op); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sat May 30 13:48:06 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 443E54C1; Sat, 30 May 2015 13:48:06 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 1CB071629; Sat, 30 May 2015 13:48:06 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from ralph.baldwin.cx (pool-173-54-116-245.nwrknj.fios.verizon.net [173.54.116.245]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 02E10B988; Sat, 30 May 2015 09:48:05 -0400 (EDT) From: John Baldwin To: Eric Joyner Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: Re: svn commit: r283620 - in stable/10/sys: amd64/conf conf dev/ixgbe modules modules/ix modules/ixv Date: Thu, 28 May 2015 18:04:54 -0400 Message-ID: <2770534.B2yRm8IhJm@ralph.baldwin.cx> User-Agent: KMail/4.14.3 (FreeBSD/10.1-STABLE; KDE/4.14.3; amd64; ; ) In-Reply-To: References: <201505271744.t4RHiC04024525@svn.freebsd.org> <4977499.IGj0rLHqPU@ralph.baldwin.cx> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Sat, 30 May 2015 09:48:05 -0400 (EDT) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 13:48:06 -0000 On Thursday, May 28, 2015 09:03:01 PM Eric Joyner wrote: > I put the stub module in and removed the direct if_baudrate assignment > in r283668. Thanks! -- John Baldwin From owner-svn-src-all@FreeBSD.ORG Sat May 30 15:08:52 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D41B2F9B; Sat, 30 May 2015 15:08:52 +0000 (UTC) (envelope-from sjg@FreeBSD.org) Received: from svn.freebsd.org (svn.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 C2610175B; Sat, 30 May 2015 15:08:52 +0000 (UTC) (envelope-from sjg@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4UF8qT8044114; Sat, 30 May 2015 15:08:52 GMT (envelope-from sjg@FreeBSD.org) Received: (from sjg@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4UF8qHm044113; Sat, 30 May 2015 15:08:52 GMT (envelope-from sjg@FreeBSD.org) Message-Id: <201505301508.t4UF8qHm044113@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: sjg set sender to sjg@FreeBSD.org using -f From: "Simon J. Gerraty" Date: Sat, 30 May 2015 15:08:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283767 - head/share/mk X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 15:08:52 -0000 Author: sjg Date: Sat May 30 15:08:52 2015 New Revision: 283767 URL: https://svnweb.freebsd.org/changeset/base/283767 Log: Define SRCTOP in src.sys.mk Because src.sys.mk should only ever be found in the src tree we can use its position (.PARSEDIR) to set SRCTOP. Reviewed by: bapt, imp Modified: head/share/mk/src.sys.mk Modified: head/share/mk/src.sys.mk ============================================================================== --- head/share/mk/src.sys.mk Sat May 30 12:17:18 2015 (r283766) +++ head/share/mk/src.sys.mk Sat May 30 15:08:52 2015 (r283767) @@ -5,13 +5,16 @@ # to preserve historical (and useful) behavior. Changes here need to # be reflected there so SRCCONF isn't included multiple times. +# make sure this is defined in a consistent manner +SRCTOP:= ${.PARSEDIR:tA:H:H} + # Allow user to configure things that only effect src tree builds. SRCCONF?= /etc/src.conf .if (exists(${SRCCONF}) || ${SRCCONF} != "/etc/src.conf") && !target(_srcconf_included_) -.include "${SRCCONF}" +.sinclude "${SRCCONF}" _srcconf_included_: .NOTMAIN .endif -# If we were found via .../share/mk we need to replace that in +# If we were found via .../share/mk we need to replace that # with ${.PARSEDIR:tA} so that we can be found by # sub-makes launched from objdir. .if ${.MAKEFLAGS:M.../share/mk} != "" From owner-svn-src-all@FreeBSD.ORG Sat May 30 15:13:19 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 35B07176; Sat, 30 May 2015 15:13:19 +0000 (UTC) (envelope-from sjg@FreeBSD.org) Received: from svn.freebsd.org (svn.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 23F0F1959; Sat, 30 May 2015 15:13:19 +0000 (UTC) (envelope-from sjg@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4UFDJHt048358; Sat, 30 May 2015 15:13:19 GMT (envelope-from sjg@FreeBSD.org) Received: (from sjg@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4UFDJx5048357; Sat, 30 May 2015 15:13:19 GMT (envelope-from sjg@FreeBSD.org) Message-Id: <201505301513.t4UFDJx5048357@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: sjg set sender to sjg@FreeBSD.org using -f From: "Simon J. Gerraty" Date: Sat, 30 May 2015 15:13:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283768 - head/share/mk X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 15:13:19 -0000 Author: sjg Date: Sat May 30 15:13:18 2015 New Revision: 283768 URL: https://svnweb.freebsd.org/changeset/base/283768 Log: Use SRCTOP when defining ROOTOBJDIR Excplicitly check rather than assume that .CURDIR is a component of .OBJDIR Otherwise check for OBJTOP and if that is a match use it. Modified: head/share/mk/src.libnames.mk Modified: head/share/mk/src.libnames.mk ============================================================================== --- head/share/mk/src.libnames.mk Sat May 30 15:08:52 2015 (r283767) +++ head/share/mk/src.libnames.mk Sat May 30 15:13:18 2015 (r283768) @@ -9,8 +9,12 @@ .include -ROOTSRCDIR= ${.MAKE.MAKEFILES:M*/src.libnames.mk:H:H:H} -ROOTOBJDIR= ${.OBJDIR:S/${.CURDIR}//}${ROOTSRCDIR} +.if ${.OBJDIR:S,${.CURDIR},,} != ${.OBJDIR} +ROOTOBJDIR= ${.OBJDIR:S,${.CURDIR},,}${SRCTOP} +.elif defined(OBJTOP) && ${.OBJDIR:M${OBJTOP}*} != "" +ROOTOBJDIR= ${OBJTOP} +.endif + _PRIVATELIBS= \ atf_c \ atf_cxx \ From owner-svn-src-all@FreeBSD.ORG Sat May 30 15:58:28 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5F8569EB; Sat, 30 May 2015 15:58:28 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id E1E501220; Sat, 30 May 2015 15:58:27 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from tom.home (kostik@localhost [127.0.0.1]) by kib.kiev.ua (8.14.9/8.14.9) with ESMTP id t4UFwHob092183 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Sat, 30 May 2015 18:58:17 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.9.2 kib.kiev.ua t4UFwHob092183 Received: (from kostik@localhost) by tom.home (8.14.9/8.14.9/Submit) id t4UFwH28092182; Sat, 30 May 2015 18:58:17 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Sat, 30 May 2015 18:58:17 +0300 From: Konstantin Belousov To: Michael Gmelin Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r283766 - in head: share/man/man4 sys/conf sys/dev/ichiic sys/modules/i2c/controllers sys/modules/i2c/controllers/ichiic Message-ID: <20150530155817.GK2499@kib.kiev.ua> References: <201505301217.t4UCHJtI056026@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201505301217.t4UCHJtI056026@svn.freebsd.org> User-Agent: Mutt/1.5.23 (2014-03-12) X-Spam-Status: No, score=-2.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=3.4.1 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on tom.home X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 15:58:28 -0000 On Sat, May 30, 2015 at 12:17:19PM +0000, Michael Gmelin wrote: > + if ((op & SMB_TRANS_NOCMD) == 0) { > + error = wait_status(sc, IG4_STATUS_TX_NOTFULL); > + if (error) > + goto done; > + last |= (u_char)cmd; > + if (wcount == 0 && rcount == 0 && (op & SMB_TRANS_NOSTOP) == 0) > + last |= IG4_DATA_STOP; > + reg_write(sc, IG4_REG_DATA_CMD, last); > + last = 0; > + } I asked this question in the review, but it was seemingly ignored. What is the purpose of the sc->mutex lock ? What kinds of the parallel execution does it prevent ? The mutex is dropped when doing a transfer, in the wait_status(). Is there something external which prevents parallel transfer initiation ? If yes, why is the sc->mutex needed ? If not, what prevents the parallel transfers to stomp on each other ? From owner-svn-src-all@FreeBSD.ORG Sat May 30 16:00:34 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9A94EB55; Sat, 30 May 2015 16:00:34 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org (svn.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 88CA9128B; Sat, 30 May 2015 16:00:34 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4UG0YYG069482; Sat, 30 May 2015 16:00:34 GMT (envelope-from bapt@FreeBSD.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4UG0Ydo069481; Sat, 30 May 2015 16:00:34 GMT (envelope-from bapt@FreeBSD.org) Message-Id: <201505301600.t4UG0Ydo069481@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: bapt set sender to bapt@FreeBSD.org using -f From: Baptiste Daroussin Date: Sat, 30 May 2015 16:00:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283772 - head X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 16:00:34 -0000 Author: bapt Date: Sat May 30 16:00:33 2015 New Revision: 283772 URL: https://svnweb.freebsd.org/changeset/base/283772 Log: Do not make libsqlite3 dependency chain only defined for kerberos, soon more options would need libsqlite3 as well thus depends on this definitions Modified: head/Makefile.inc1 Modified: head/Makefile.inc1 ============================================================================== --- head/Makefile.inc1 Sat May 30 15:45:39 2015 (r283771) +++ head/Makefile.inc1 Sat May 30 16:00:33 2015 (r283772) @@ -1806,9 +1806,10 @@ kerberos5/lib/libroken__L: lib/libcrypt_ kerberos5/lib/libwind__L: kerberos5/lib/libroken__L lib/libcom_err__L kerberos5/lib/libheimbase__L: lib/libthr__L kerberos5/lib/libheimipcc__L: kerberos5/lib/libroken__L kerberos5/lib/libheimbase__L lib/libthr__L -lib/libsqlite3__L: lib/libthr__L .endif +lib/libsqlite3__L: lib/libthr__L + .if ${MK_GSSAPI} != "no" _lib_libgssapi= lib/libgssapi .endif From owner-svn-src-all@FreeBSD.ORG Sat May 30 16:30:52 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C00F2E21; Sat, 30 May 2015 16:30:52 +0000 (UTC) (envelope-from loos@FreeBSD.org) Received: from svn.freebsd.org (svn.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 ADC1D1974; Sat, 30 May 2015 16:30:52 +0000 (UTC) (envelope-from loos@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4UGUqqx086638; Sat, 30 May 2015 16:30:52 GMT (envelope-from loos@FreeBSD.org) Received: (from loos@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4UGUqqv086637; Sat, 30 May 2015 16:30:52 GMT (envelope-from loos@FreeBSD.org) Message-Id: <201505301630.t4UGUqqv086637@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: loos set sender to loos@FreeBSD.org using -f From: Luiz Otavio O Souza Date: Sat, 30 May 2015 16:30:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283773 - head/sys/dev/uart X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 16:30:52 -0000 Author: loos Date: Sat May 30 16:30:51 2015 New Revision: 283773 URL: https://svnweb.freebsd.org/changeset/base/283773 Log: Actually check the DTS node value to enable the uart quirks. Without this fix, you cannot disable the quirks by setting it to 0, just the presence of the FDT node was enough to enable it. Modified: head/sys/dev/uart/uart_dev_ns8250.c Modified: head/sys/dev/uart/uart_dev_ns8250.c ============================================================================== --- head/sys/dev/uart/uart_dev_ns8250.c Sat May 30 16:00:33 2015 (r283772) +++ head/sys/dev/uart/uart_dev_ns8250.c Sat May 30 16:30:51 2015 (r283773) @@ -416,10 +416,10 @@ ns8250_bus_attach(struct uart_softc *sc) * has broken txfifo. */ node = ofw_bus_get_node(sc->sc_dev); - if ((OF_getprop(node, "busy-detect", &cell, sizeof(cell))) > 0) - ns8250->busy_detect = 1; - if ((OF_getprop(node, "broken-txfifo", &cell, sizeof(cell))) > 0) - broken_txfifo = 1; + if ((OF_getencprop(node, "busy-detect", &cell, sizeof(cell))) > 0) + ns8250->busy_detect = cell ? 1 : 0; + if ((OF_getencprop(node, "broken-txfifo", &cell, sizeof(cell))) > 0) + broken_txfifo = cell ? 1 : 0; #endif bas = &sc->sc_bas; From owner-svn-src-all@FreeBSD.ORG Sat May 30 17:41:39 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7634F9A3; Sat, 30 May 2015 17:41:39 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org (svn.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 624EB1A3A; Sat, 30 May 2015 17:41:39 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4UHfdtv022222; Sat, 30 May 2015 17:41:39 GMT (envelope-from bapt@FreeBSD.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4UHfbcq022216; Sat, 30 May 2015 17:41:37 GMT (envelope-from bapt@FreeBSD.org) Message-Id: <201505301741.t4UHfbcq022216@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: bapt set sender to bapt@FreeBSD.org using -f From: Baptiste Daroussin Date: Sat, 30 May 2015 17:41:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283777 - in head: . share/mk tools/build/options usr.bin usr.bin/man usr.bin/mandoc X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 17:41:39 -0000 Author: bapt Date: Sat May 30 17:41:37 2015 New Revision: 283777 URL: https://svnweb.freebsd.org/changeset/base/283777 Log: Switch to mandoc's version of makewhatis(8), whatis(1), apropos(1) utilities. This change among other things improve search capabilities over the manpages allowing fine grain query. A new build option WITHOUT_MANDOCDB has been added to keep the ancient version of the database and the tools. The plan is to entirely remove this option before 11.0-RELEASE. Differential Revision: https://reviews.freebsd.org/D2603 Added: head/tools/build/options/WITHOUT_MANDOCDB (contents, props changed) Modified: head/Makefile.inc1 head/share/mk/src.opts.mk head/usr.bin/Makefile head/usr.bin/man/Makefile head/usr.bin/mandoc/Makefile Modified: head/Makefile.inc1 ============================================================================== --- head/Makefile.inc1 Sat May 30 17:29:51 2015 (r283776) +++ head/Makefile.inc1 Sat May 30 17:41:37 2015 (r283777) @@ -1363,6 +1363,16 @@ _kerberos5_bootstrap_tools= \ .ORDER: ${_kerberos5_bootstrap_tools:C/^/${_bt}-/g} .endif +.if ${MK_MANDOCDB} != "no" +_makewhatis= lib/libohash \ + lib/libsqlite3 \ + lib/libmandoc \ + usr.bin/mandoc +${_bt}-usr.bin/mandoc: ${_bt}-lib/libohash ${_bt}-lib/libsqlite3 +.else +_makewhatis=usr.bin/makewhatis +.endif + # Rebuild up-to-date libmd for xinstall ${_bt}-usr.bin/xinstall: ${_bt}-lib/libmd @@ -1383,7 +1393,7 @@ bootstrap-tools: .PHONY ${_awk} \ ${_cat} \ usr.bin/lorder \ - usr.bin/makewhatis \ + ${_makewhatis} \ usr.bin/rpcgen \ ${_sed} \ ${_yacc} \ Modified: head/share/mk/src.opts.mk ============================================================================== --- head/share/mk/src.opts.mk Sat May 30 17:29:51 2015 (r283776) +++ head/share/mk/src.opts.mk Sat May 30 17:41:37 2015 (r283777) @@ -126,6 +126,7 @@ __DEFAULT_YES_OPTIONS = \ MAIL \ MAILWRAPPER \ MAKE \ + MANDOCDB \ NDIS \ NETCAT \ NETGRAPH \ Added: head/tools/build/options/WITHOUT_MANDOCDB ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/build/options/WITHOUT_MANDOCDB Sat May 30 17:41:37 2015 (r283777) @@ -0,0 +1,6 @@ +.\" $FreeBSD$ +Use the +.Xr mandoc 1 +version of +.Xr makewhatis 8 +database and utilities. Modified: head/usr.bin/Makefile ============================================================================== --- head/usr.bin/Makefile Sat May 30 17:29:51 2015 (r283776) +++ head/usr.bin/Makefile Sat May 30 17:41:37 2015 (r283777) @@ -317,7 +317,9 @@ SUBDIR+= bmake .if ${MK_MAN_UTILS} != "no" SUBDIR+= catman +.if ${MK_MANDOCDB} == "no" _makewhatis= makewhatis +.endif _man= man .endif Modified: head/usr.bin/man/Makefile ============================================================================== --- head/usr.bin/man/Makefile Sat May 30 17:29:51 2015 (r283776) +++ head/usr.bin/man/Makefile Sat May 30 17:41:37 2015 (r283777) @@ -1,11 +1,17 @@ # $FreeBSD$ +.include + SCRIPTS= man.sh -LINKS= ${BINDIR}/man ${BINDIR}/apropos \ - ${BINDIR}/man ${BINDIR}/manpath \ - ${BINDIR}/man ${BINDIR}/whatis +LINKS= ${BINDIR}/man ${BINDIR}/manpath -MAN= man.1 manpath.1 apropos.1 man.conf.5 +MAN= man.1 manpath.1 man.conf.5 + +.if ${MK_MANDOCDB} == no +LINKS+= ${BINDIR}/man ${BINDIR}/apropos \ + ${BINDIR}/man ${BINDIR}/whatis +MAN+= apropos.1 MLINKS= apropos.1 whatis.1 +.endif .include Modified: head/usr.bin/mandoc/Makefile ============================================================================== --- head/usr.bin/mandoc/Makefile Sat May 30 17:29:51 2015 (r283776) +++ head/usr.bin/mandoc/Makefile Sat May 30 17:41:37 2015 (r283777) @@ -1,5 +1,7 @@ # $FreeBSD$ +.include + MDOCMLDIR= ${.CURDIR}/../../contrib/mdocml .PATH: ${MDOCMLDIR} @@ -7,7 +9,14 @@ PROG= mandoc FILES= example.style.css style.css FILESDIR= ${SHAREDIR}/mdocml MAN= mandoc.1 eqn.7 mandoc_char.7 tbl.7 man.7 mdoc.7 # roff.7 -MLINKS= mandoc.1 mdocml.1 +MLINKS= mandoc.1 mdocml.1 +.if ${MK_MANDOCDB} != no +MAN+= apropos.1 makewhatis.8 +MLINKS+= apropos.1 whatis.1 +LINKS= ${BINDIR}/mandoc ${BINDIR}/whatis \ + ${BINDIR}/mandoc ${BINDIR}/makewhatis \ + ${BINDIR}/mandoc ${BINDIR}/apropos +.endif LIBMAN_SRCS= man.c \ man_hash.c \ From owner-svn-src-all@FreeBSD.ORG Sat May 30 17:46:12 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 275E9B2C; Sat, 30 May 2015 17:46:12 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org (svn.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 1467A1AA4; Sat, 30 May 2015 17:46:12 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4UHkBVC023568; Sat, 30 May 2015 17:46:11 GMT (envelope-from bapt@FreeBSD.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4UHkBZU023567; Sat, 30 May 2015 17:46:11 GMT (envelope-from bapt@FreeBSD.org) Message-Id: <201505301746.t4UHkBZU023567@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: bapt set sender to bapt@FreeBSD.org using -f From: Baptiste Daroussin Date: Sat, 30 May 2015 17:46:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283778 - head/share/man/man5 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 17:46:12 -0000 Author: bapt Date: Sat May 30 17:46:11 2015 New Revision: 283778 URL: https://svnweb.freebsd.org/changeset/base/283778 Log: Regenerate after r283777 Modified: head/share/man/man5/src.conf.5 Modified: head/share/man/man5/src.conf.5 ============================================================================== --- head/share/man/man5/src.conf.5 Sat May 30 17:41:37 2015 (r283777) +++ head/share/man/man5/src.conf.5 Sat May 30 17:46:11 2015 (r283778) @@ -1,7 +1,7 @@ .\" DO NOT EDIT-- this file is automatically generated. .\" from FreeBSD: head/tools/build/options/makeman 255964 2013-10-01 07:22:04Z des .\" $FreeBSD$ -.Dd April 19, 2015 +.Dd May 30, 2015 .Dt SRC.CONF 5 .Os .Sh NAME @@ -834,6 +834,13 @@ is set explicitly) .\" from FreeBSD: head/tools/build/options/WITHOUT_MANCOMPRESS 266752 2014-05-27 15:52:27Z gjb Set to not to install compressed man pages. Only the uncompressed versions will be installed. +.It Va WITHOUT_MANDOCDB +.\" from FreeBSD: head/tools/build/options/WITHOUT_MANDOCDB 283777 2015-05-30 17:41:37Z bapt +Use the +.Xr mandoc 1 +version of +.Xr makewhatis 8 +database and utilities. .It Va WITHOUT_MAN_UTILS .\" from FreeBSD: head/tools/build/options/WITHOUT_MAN_UTILS 208322 2010-05-20 00:07:21Z jkim Set to not build utilities for manual pages, From owner-svn-src-all@FreeBSD.ORG Sat May 30 19:14:59 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 918F7CF2; Sat, 30 May 2015 19:14:59 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from mx1.sbone.de (bird.sbone.de [46.4.1.90]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client CN "mx1.sbone.de", Issuer "SBone.DE" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id A38561E4C; Sat, 30 May 2015 19:14:58 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from mail.sbone.de (mail.sbone.de [IPv6:fde9:577b:c1a9:31::2013:587]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.sbone.de (Postfix) with ESMTPS id C0F8A25D38A5; Sat, 30 May 2015 19:14:48 +0000 (UTC) Received: from content-filter.sbone.de (content-filter.sbone.de [IPv6:fde9:577b:c1a9:31::2013:2742]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sbone.de (Postfix) with ESMTPS id D0578C770BD; Sat, 30 May 2015 19:14:47 +0000 (UTC) X-Virus-Scanned: amavisd-new at sbone.de Received: from mail.sbone.de ([IPv6:fde9:577b:c1a9:31::2013:587]) by content-filter.sbone.de (content-filter.sbone.de [fde9:577b:c1a9:31::2013:2742]) (amavisd-new, port 10024) with ESMTP id JNBPfUtRDm1l; Sat, 30 May 2015 19:14:46 +0000 (UTC) Received: from [IPv6:fde9:577b:c1a9:4410:c594:2399:86b7:101b] (unknown [IPv6:fde9:577b:c1a9:4410:c594:2399:86b7:101b]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sbone.de (Postfix) with ESMTPSA id CA723C770A0; Sat, 30 May 2015 19:14:45 +0000 (UTC) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\)) Subject: Re: svn commit: r283777 - in head: . share/mk tools/build/options usr.bin usr.bin/man usr.bin/mandoc From: "Bjoern A. Zeeb" In-Reply-To: <201505301741.t4UHfbcq022216@svn.freebsd.org> Date: Sat, 30 May 2015 19:14:13 +0000 Cc: src-committers , svn-src-all@freebsd.org, svn-src-head@freebsd.org Content-Transfer-Encoding: quoted-printable Message-Id: <50C7E8A7-CF9F-440F-9428-747CFB289F27@FreeBSD.org> References: <201505301741.t4UHfbcq022216@svn.freebsd.org> To: Baptiste Daroussin X-Mailer: Apple Mail (2.2098) X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 19:14:59 -0000 > On 30 May 2015, at 17:41 , Baptiste Daroussin = wrote: >=20 > Author: bapt > Date: Sat May 30 17:41:37 2015 > New Revision: 283777 > URL: https://svnweb.freebsd.org/changeset/base/283777 >=20 > Log: > Switch to mandoc's version of makewhatis(8), whatis(1), apropos(1) = utilities. >=20 > This change among other things improve search capabilities over the = manpages > allowing fine grain query. >=20 > A new build option WITHOUT_MANDOCDB has been added to keep the = ancient version > of the database and the tools. The plan is to entirely remove this = option before > 11.0-RELEASE. >=20 > Differential Revision: https://reviews.freebsd.org/D2603 >=20 > Added: > head/tools/build/options/WITHOUT_MANDOCDB (contents, props changed) > Modified: > head/Makefile.inc1 > head/share/mk/src.opts.mk > head/usr.bin/Makefile > head/usr.bin/man/Makefile > head/usr.bin/mandoc/Makefile Unfortunately this has caused a massive disturbance in the universe. Could you please fix things? =E2=80=94=20 Bjoern A. Zeeb Charles Haddon Spurgeon: "Friendship is one of the sweetest joys of life. Many might have failed beneath the bitterness of their trial had they not found a friend." From owner-svn-src-all@FreeBSD.ORG Sat May 30 19:29:20 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 42757120; Sat, 30 May 2015 19:29:20 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org (svn.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 3032410B4; Sat, 30 May 2015 19:29:20 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4UJTKs6073604; Sat, 30 May 2015 19:29:20 GMT (envelope-from bapt@FreeBSD.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4UJTKSs073603; Sat, 30 May 2015 19:29:20 GMT (envelope-from bapt@FreeBSD.org) Message-Id: <201505301929.t4UJTKSs073603@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: bapt set sender to bapt@FreeBSD.org using -f From: Baptiste Daroussin Date: Sat, 30 May 2015 19:29:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283782 - head X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 19:29:20 -0000 Author: bapt Date: Sat May 30 19:29:19 2015 New Revision: 283782 URL: https://svnweb.freebsd.org/changeset/base/283782 Log: Only push libohash once in bootstrap tools Modified: head/Makefile.inc1 Modified: head/Makefile.inc1 ============================================================================== --- head/Makefile.inc1 Sat May 30 18:38:06 2015 (r283781) +++ head/Makefile.inc1 Sat May 30 19:29:19 2015 (r283782) @@ -1276,8 +1276,8 @@ _sed= usr.bin/sed .endif .if ${BOOTSTRAPPING} < 1000002 -_m4= lib/libohash \ - usr.bin/m4 +_libohash= lib/libohash +_m4= usr.bin/m4 ${_bt}-usr.bin/m4: ${_bt}-lib/libohash .endif @@ -1364,8 +1364,8 @@ _kerberos5_bootstrap_tools= \ .endif .if ${MK_MANDOCDB} != "no" -_makewhatis= lib/libohash \ - lib/libsqlite3 \ +_libohash?= lib/libohash +_makewhatis= lib/libsqlite3 \ lib/libmandoc \ usr.bin/mandoc ${_bt}-usr.bin/mandoc: ${_bt}-lib/libohash ${_bt}-lib/libsqlite3 @@ -1393,6 +1393,7 @@ bootstrap-tools: .PHONY ${_awk} \ ${_cat} \ usr.bin/lorder \ + ${_libohash} \ ${_makewhatis} \ usr.bin/rpcgen \ ${_sed} \ From owner-svn-src-all@FreeBSD.ORG Sat May 30 19:30:24 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3C53F2AC; Sat, 30 May 2015 19:30:24 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org (svn.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 2A7CE1107; Sat, 30 May 2015 19:30:24 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4UJUOC4073900; Sat, 30 May 2015 19:30:24 GMT (envelope-from bapt@FreeBSD.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4UJUOKS073899; Sat, 30 May 2015 19:30:24 GMT (envelope-from bapt@FreeBSD.org) Message-Id: <201505301930.t4UJUOKS073899@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: bapt set sender to bapt@FreeBSD.org using -f From: Baptiste Daroussin Date: Sat, 30 May 2015 19:30:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283783 - head X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 19:30:24 -0000 Author: bapt Date: Sat May 30 19:30:23 2015 New Revision: 283783 URL: https://svnweb.freebsd.org/changeset/base/283783 Log: Remove libmandoc from bootstrap tools Modified: head/Makefile.inc1 Modified: head/Makefile.inc1 ============================================================================== --- head/Makefile.inc1 Sat May 30 19:29:19 2015 (r283782) +++ head/Makefile.inc1 Sat May 30 19:30:23 2015 (r283783) @@ -1366,7 +1366,6 @@ _kerberos5_bootstrap_tools= \ .if ${MK_MANDOCDB} != "no" _libohash?= lib/libohash _makewhatis= lib/libsqlite3 \ - lib/libmandoc \ usr.bin/mandoc ${_bt}-usr.bin/mandoc: ${_bt}-lib/libohash ${_bt}-lib/libsqlite3 .else From owner-svn-src-all@FreeBSD.ORG Sat May 30 19:48:41 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id AAE4F5B4; Sat, 30 May 2015 19:48:41 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 95CD61554; Sat, 30 May 2015 19:48:41 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4UJmfxx083530; Sat, 30 May 2015 19:48:41 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4UJmf6K083529; Sat, 30 May 2015 19:48:41 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505301948.t4UJmf6K083529@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Sat, 30 May 2015 19:48:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283784 - head/contrib/traceroute X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 19:48:41 -0000 Author: tuexen Date: Sat May 30 19:48:40 2015 New Revision: 283784 URL: https://svnweb.freebsd.org/changeset/base/283784 Log: Remove trailing whitespaces. Modified: head/contrib/traceroute/traceroute.c Modified: head/contrib/traceroute/traceroute.c ============================================================================== --- head/contrib/traceroute/traceroute.c Sat May 30 19:30:23 2015 (r283783) +++ head/contrib/traceroute/traceroute.c Sat May 30 19:48:40 2015 (r283784) @@ -541,12 +541,12 @@ main(int argc, char **argv) case 'a': as_path = 1; break; - + case 'A': as_path = 1; as_server = optarg; break; - + case 'd': options |= SO_DEBUG; break; @@ -931,7 +931,7 @@ main(int argc, char **argv) as_path = 0; } } - + #if defined(IPSEC) && defined(IPSEC_POLICY_IPSEC) if (setpolicy(sndsock, "in bypass") < 0) errx(1, "%s", ipsec_strerror()); @@ -1494,7 +1494,7 @@ print(register u_char *buf, register int /* * Checksum routine for UDP and TCP headers. */ -u_short +u_short p_cksum(struct ip *ip, u_short *data, int len) { static struct ipovly ipo; From owner-svn-src-all@FreeBSD.ORG Sat May 30 19:52:28 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id CD94272D; Sat, 30 May 2015 19:52:28 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 BBB471744; Sat, 30 May 2015 19:52:28 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4UJqSCC087650; Sat, 30 May 2015 19:52:28 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4UJqShJ087649; Sat, 30 May 2015 19:52:28 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505301952.t4UJqShJ087649@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Sat, 30 May 2015 19:52:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283785 - head/contrib/traceroute X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 19:52:28 -0000 Author: tuexen Date: Sat May 30 19:52:28 2015 New Revision: 283785 URL: https://svnweb.freebsd.org/changeset/base/283785 Log: Require the embedded packet to contain 8 bytes after the IP header instead of only 4. This is guaranteed by RFC 792 and the verification of GRE, ICMP and TCP packets use 8 bytes. MFC after: 3 days Modified: head/contrib/traceroute/traceroute.c Modified: head/contrib/traceroute/traceroute.c ============================================================================== --- head/contrib/traceroute/traceroute.c Sat May 30 19:48:40 2015 (r283784) +++ head/contrib/traceroute/traceroute.c Sat May 30 19:52:28 2015 (r283785) @@ -1330,7 +1330,7 @@ packet_ok(register u_char *buf, int cc, hiplen = ((u_char *)icp + cc) - (u_char *)hip; hlen = hip->ip_hl << 2; inner = (u_char *)((u_char *)hip + hlen); - if (hlen + 12 <= cc + if (hlen + 16 <= cc && hip->ip_p == proto->num && (*proto->check)(inner, (u_char)seq)) return (type == ICMP_TIMXCEED ? -1 : code + 1); From owner-svn-src-all@FreeBSD.ORG Sat May 30 20:39:20 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id DBE4EDFB; Sat, 30 May 2015 20:39:20 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.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 CA1361FCD; Sat, 30 May 2015 20:39:20 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4UKdKQQ011157; Sat, 30 May 2015 20:39:20 GMT (envelope-from tuexen@FreeBSD.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4UKdKTL011156; Sat, 30 May 2015 20:39:20 GMT (envelope-from tuexen@FreeBSD.org) Message-Id: <201505302039.t4UKdKTL011156@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: tuexen set sender to tuexen@FreeBSD.org using -f From: Michael Tuexen Date: Sat, 30 May 2015 20:39:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283786 - head/contrib/traceroute X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 20:39:21 -0000 Author: tuexen Date: Sat May 30 20:39:19 2015 New Revision: 283786 URL: https://svnweb.freebsd.org/changeset/base/283786 Log: There is no payload anymore. So compute the minimum packet length correctly and use 40 as the default (if the minumum allows it), as specified in the man page. MFC after: 3 days Modified: head/contrib/traceroute/traceroute.c Modified: head/contrib/traceroute/traceroute.c ============================================================================== --- head/contrib/traceroute/traceroute.c Sat May 30 19:52:28 2015 (r283785) +++ head/contrib/traceroute/traceroute.c Sat May 30 20:39:19 2015 (r283786) @@ -669,8 +669,11 @@ main(int argc, char **argv) if (lsrr > 0) optlen = (lsrr + 1) * sizeof(gwlist[0]); - minpacket = sizeof(*outip) + proto->hdrlen + sizeof(struct outdata) + optlen; - packlen = minpacket; /* minimum sized packet */ + minpacket = sizeof(*outip) + proto->hdrlen + optlen; + if (minpacket > 40) + packlen = minpacket; + else + packlen = 40; /* Process destination and optional packet size */ switch (argc - optind) { From owner-svn-src-all@FreeBSD.ORG Sat May 30 21:23:42 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 03FDA5D7; Sat, 30 May 2015 21:23:42 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org (svn.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 E7E591AFB; Sat, 30 May 2015 21:23:41 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4ULNfLW035620; Sat, 30 May 2015 21:23:41 GMT (envelope-from bapt@FreeBSD.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4ULNfRG035619; Sat, 30 May 2015 21:23:41 GMT (envelope-from bapt@FreeBSD.org) Message-Id: <201505302123.t4ULNfRG035619@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: bapt set sender to bapt@FreeBSD.org using -f From: Baptiste Daroussin Date: Sat, 30 May 2015 21:23:41 +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: r283787 - 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-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 21:23:42 -0000 Author: bapt Date: Sat May 30 21:23:41 2015 New Revision: 283787 URL: https://svnweb.freebsd.org/changeset/base/283787 Log: MFC: r257701 (by bdrewery) Remove condition which can never be true as the previous loop is never exited while remote == NULL. 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 Sat May 30 20:39:19 2015 (r283786) +++ stable/10/usr.sbin/pkg/pkg.c Sat May 30 21:23:41 2015 (r283787) @@ -238,9 +238,6 @@ fetch_to_fd(const char *url, char *path) } } - if (remote == NULL) - goto fetchfail; - while (done < st.size) { if ((r = fread(buf, 1, sizeof(buf), remote)) < 1) break; From owner-svn-src-all@FreeBSD.ORG Sat May 30 21:25:33 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8C44E815; Sat, 30 May 2015 21:25:33 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org (svn.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 6E29C1B11; Sat, 30 May 2015 21:25:33 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4ULPXR4037026; Sat, 30 May 2015 21:25:33 GMT (envelope-from bapt@FreeBSD.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4ULPX6B037025; Sat, 30 May 2015 21:25:33 GMT (envelope-from bapt@FreeBSD.org) Message-Id: <201505302125.t4ULPX6B037025@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: bapt set sender to bapt@FreeBSD.org using -f From: Baptiste Daroussin Date: Sat, 30 May 2015 21:25:33 +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: r283788 - 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-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 21:25:33 -0000 Author: bapt Date: Sat May 30 21:25:32 2015 New Revision: 283788 URL: https://svnweb.freebsd.org/changeset/base/283788 Log: MFC: r258020 (by bdrewery) Remove useless checks for NULL pointer before free(3) Reported by: eadler Approved by: eadler 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 Sat May 30 21:23:41 2015 (r283787) +++ stable/10/usr.sbin/pkg/pkg.c Sat May 30 21:25:32 2015 (r283788) @@ -321,8 +321,7 @@ free_fingerprint_list(struct fingerprint struct fingerprint *fingerprint, *tmp; STAILQ_FOREACH_SAFE(fingerprint, list, next, tmp) { - if (fingerprint->name) - free(fingerprint->name); + free(fingerprint->name); free(fingerprint); } free(list); @@ -724,12 +723,9 @@ cleanup: if (revoked) free_fingerprint_list(revoked); if (sc) { - if (sc->cert) - free(sc->cert); - if (sc->sig) - free(sc->sig); - if (sc->name) - free(sc->name); + free(sc->cert); + free(sc->sig); + free(sc->name); free(sc); } From owner-svn-src-all@FreeBSD.ORG Sat May 30 21:28:56 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 01C0A9CA; Sat, 30 May 2015 21:28:55 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org (svn.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 E4F281B32; Sat, 30 May 2015 21:28:55 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4ULStZe037471; Sat, 30 May 2015 21:28:55 GMT (envelope-from bapt@FreeBSD.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4ULSthC037470; Sat, 30 May 2015 21:28:55 GMT (envelope-from bapt@FreeBSD.org) Message-Id: <201505302128.t4ULSthC037470@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: bapt set sender to bapt@FreeBSD.org using -f From: Baptiste Daroussin Date: Sat, 30 May 2015 21:28: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: r283789 - 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-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 21:28:56 -0000 Author: bapt Date: Sat May 30 21:28:55 2015 New Revision: 283789 URL: https://svnweb.freebsd.org/changeset/base/283789 Log: MFC: r258226 argc is now used 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 Sat May 30 21:25:32 2015 (r283788) +++ stable/10/usr.sbin/pkg/pkg.c Sat May 30 21:28:55 2015 (r283789) @@ -881,7 +881,7 @@ cleanup: } int -main(__unused int argc, char *argv[]) +main(int argc, char *argv[]) { char pkgpath[MAXPATHLEN]; const char *pkgarg; From owner-svn-src-all@FreeBSD.ORG Sat May 30 21:32:03 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7DB93B3A; Sat, 30 May 2015 21:32:03 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org (svn.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 6DBD21D2B; Sat, 30 May 2015 21:32:03 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4ULW3vM041584; Sat, 30 May 2015 21:32:03 GMT (envelope-from bapt@FreeBSD.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4ULW3Jt041583; Sat, 30 May 2015 21:32:03 GMT (envelope-from bapt@FreeBSD.org) Message-Id: <201505302132.t4ULW3Jt041583@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: bapt set sender to bapt@FreeBSD.org using -f From: Baptiste Daroussin Date: Sat, 30 May 2015 21:32:03 +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: r283790 - 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-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 21:32:03 -0000 Author: bapt Date: Sat May 30 21:32:02 2015 New Revision: 283790 URL: https://svnweb.freebsd.org/changeset/base/283790 Log: MFC: r259773, r259774, r259775 Do not print a question in non-interractive mode but explain why boostrapping has failed and how to allow it to happen Reported by: jmmv 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 Sat May 30 21:28:55 2015 (r283789) +++ stable/10/usr.sbin/pkg/pkg.c Sat May 30 21:32:02 2015 (r283790) @@ -819,6 +819,11 @@ static const char confirmation_message[] "The package management tool is not yet installed on your system.\n" "Do you want to fetch and install it now? [y/N]: "; +static const char non_interactive_message[] = +"The package management tool is not yet installed on your system.\n" +"Please set ASSUME_ALWAYS_YES=yes environment variable to be able to bootstrap " +"in non-interactive (stdin not being a tty)\n"; + static int pkg_query_yes_no(void) { @@ -937,10 +942,12 @@ main(int argc, char *argv[]) */ config_bool(ASSUME_ALWAYS_YES, &yes); if (!yes) { - printf("%s", confirmation_message); - if (!isatty(fileno(stdin))) + if (!isatty(fileno(stdin))) { + fprintf(stderr, non_interactive_message); exit(EXIT_FAILURE); + } + printf("%s", confirmation_message); if (pkg_query_yes_no() == 0) exit(EXIT_FAILURE); } From owner-svn-src-all@FreeBSD.ORG Sat May 30 21:45:48 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 08FF8E45; Sat, 30 May 2015 21:45:48 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org (svn.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 DE6CD1F6E; Sat, 30 May 2015 21:45:47 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4ULjltI047121; Sat, 30 May 2015 21:45:47 GMT (envelope-from bapt@FreeBSD.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4ULjlm4047119; Sat, 30 May 2015 21:45:47 GMT (envelope-from bapt@FreeBSD.org) Message-Id: <201505302145.t4ULjlm4047119@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: bapt set sender to bapt@FreeBSD.org using -f From: Baptiste Daroussin Date: Sat, 30 May 2015 21:45: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: r283791 - 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-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 21:45:48 -0000 Author: bapt Date: Sat May 30 21:45:46 2015 New Revision: 283791 URL: https://svnweb.freebsd.org/changeset/base/283791 Log: MFC: r273754 (by nwhitehorn) Use pkg-1.4-style platform identifiers based on MACHINE_ARCH (e.g. FreeBSD:11:amd64 instead of freebsd:11:x86:64) when bootstrapping pkg. Thanks to portmgr for providing symlinks so both styles work. Reviewed by: bapt MFC after: 3 weeks Modified: stable/10/usr.sbin/pkg/Makefile stable/10/usr.sbin/pkg/config.c Directory Properties: stable/10/ (props changed) Modified: stable/10/usr.sbin/pkg/Makefile ============================================================================== --- stable/10/usr.sbin/pkg/Makefile Sat May 30 21:32:02 2015 (r283790) +++ stable/10/usr.sbin/pkg/Makefile Sat May 30 21:45:46 2015 (r283791) @@ -8,7 +8,7 @@ CFLAGS+=-I${.CURDIR}/../../contrib/libuc .PATH: ${.CURDIR}/../../contrib/libucl/include DPADD= ${LIBARCHIVE} ${LIBELF} ${LIBFETCH} ${LIBUCL} ${LIBSBUF} ${LIBSSL} \ ${LIBCRYPTO} ${LIBM} -LDADD= -larchive -lelf -lfetch -lucl -lsbuf -lssl -lcrypto -lm +LDADD= -larchive -lfetch -lucl -lsbuf -lssl -lcrypto -lm USEPRIVATELIB= ucl .include Modified: stable/10/usr.sbin/pkg/config.c ============================================================================== --- stable/10/usr.sbin/pkg/config.c Sat May 30 21:32:02 2015 (r283790) +++ stable/10/usr.sbin/pkg/config.c Sat May 30 21:45:46 2015 (r283791) @@ -31,9 +31,9 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include -#include #include +#include +#include #include #include @@ -42,14 +42,12 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include #include #include -#include "elf_tables.h" #include "config.h" #define roundup2(x, y) (((x)+((y)-1))&(~((y)-1))) /* if y is powers of two */ @@ -135,349 +133,32 @@ static struct config_entry c[] = { }, }; -static const char * -elf_corres_to_string(struct _elf_corres *m, int e) -{ - int i; - - for (i = 0; m[i].string != NULL; i++) - if (m[i].elf_nb == e) - return (m[i].string); - - return ("unknown"); -} - -static const char * -aeabi_parse_arm_attributes(void *data, size_t length) -{ - uint32_t sect_len; - uint8_t *section = data; - -#define MOVE(len) do { \ - assert(length >= (len)); \ - section += (len); \ - length -= (len); \ -} while (0) - - if (length == 0 || *section != 'A') - return (NULL); - - MOVE(1); - - /* Read the section length */ - if (length < sizeof(sect_len)) - return (NULL); - - memcpy(§_len, section, sizeof(sect_len)); - - /* - * The section length should be no longer than the section it is within - */ - if (sect_len > length) - return (NULL); - - MOVE(sizeof(sect_len)); - - /* Skip the vendor name */ - while (length != 0) { - if (*section == '\0') - break; - MOVE(1); - } - if (length == 0) - return (NULL); - MOVE(1); - - while (length != 0) { - uint32_t tag_length; - - switch(*section) { - case 1: /* Tag_File */ - MOVE(1); - if (length < sizeof(tag_length)) - return (NULL); - memcpy(&tag_length, section, sizeof(tag_length)); - break; - case 2: /* Tag_Section */ - case 3: /* Tag_Symbol */ - default: - return (NULL); - } - /* At least space for the tag and size */ - if (tag_length <= 5) - return (NULL); - tag_length--; - /* Check the tag fits */ - if (tag_length > length) - return (NULL); - -#define MOVE_TAG(len) do { \ - assert(tag_length >= (len)); \ - MOVE(len); \ - tag_length -= (len); \ -} while(0) - - MOVE(sizeof(tag_length)); - tag_length -= sizeof(tag_length); - - while (tag_length != 0) { - uint8_t tag; - - assert(tag_length >= length); - - tag = *section; - MOVE_TAG(1); - - /* - * These tag values come from: - * - * Addenda to, and Errata in, the ABI for the - * ARM Architecture. Release 2.08, section 2.3. - */ - if (tag == 6) { /* == Tag_CPU_arch */ - uint8_t val; - - val = *section; - /* - * We don't support values that require - * more than one byte. - */ - if (val & (1 << 7)) - return (NULL); - - /* We have an ARMv4 or ARMv5 */ - if (val <= 5) - return ("arm"); - else /* We have an ARMv6+ */ - return ("armv6"); - } else if (tag == 4 || tag == 5 || tag == 32 || - tag == 65 || tag == 67) { - while (*section != '\0' && length != 0) - MOVE_TAG(1); - if (tag_length == 0) - return (NULL); - /* Skip the last byte */ - MOVE_TAG(1); - } else if ((tag >= 7 && tag <= 31) || tag == 34 || - tag == 36 || tag == 38 || tag == 42 || tag == 44 || - tag == 64 || tag == 66 || tag == 68 || tag == 70) { - /* Skip the uleb128 data */ - while (*section & (1 << 7) && length != 0) - MOVE_TAG(1); - if (tag_length == 0) - return (NULL); - /* Skip the last byte */ - MOVE_TAG(1); - } else - return (NULL); -#undef MOVE_TAG - } - - break; - } - return (NULL); -#undef MOVE -} - static int pkg_get_myabi(char *dest, size_t sz) { - Elf *elf; - Elf_Data *data; - Elf_Note note; - Elf_Scn *scn; - char *src, *osname; - const char *arch, *abi, *fpu, *endian_corres_str; - const char *wordsize_corres_str; - GElf_Ehdr elfhdr; - GElf_Shdr shdr; - int fd, i, ret; - uint32_t version; - - version = 0; - ret = -1; - scn = NULL; - abi = NULL; - - if (elf_version(EV_CURRENT) == EV_NONE) { - warnx("ELF library initialization failed: %s", - elf_errmsg(-1)); - return (-1); - } - - if ((fd = open(_PATH_BSHELL, O_RDONLY)) < 0) { - warn("open()"); - return (-1); - } - - if ((elf = elf_begin(fd, ELF_C_READ, NULL)) == NULL) { - ret = -1; - warnx("elf_begin() failed: %s.", elf_errmsg(-1)); - goto cleanup; - } - - if (gelf_getehdr(elf, &elfhdr) == NULL) { - ret = -1; - warn("getehdr() failed: %s.", elf_errmsg(-1)); - goto cleanup; - } - while ((scn = elf_nextscn(elf, scn)) != NULL) { - if (gelf_getshdr(scn, &shdr) != &shdr) { - ret = -1; - warn("getshdr() failed: %s.", elf_errmsg(-1)); - goto cleanup; - } + struct utsname uts; + char machine_arch[255]; + size_t len; + int error; + + error = uname(&uts); + if (error) + return (errno); + + len = sizeof(machine_arch); + error = sysctlbyname("hw.machine_arch", machine_arch, &len, NULL, 0); + if (error) + return (errno); + machine_arch[len] = '\0'; - if (shdr.sh_type == SHT_NOTE) - break; - } - - if (scn == NULL) { - ret = -1; - warn("failed to get the note section"); - goto cleanup; - } - - data = elf_getdata(scn, NULL); - src = data->d_buf; - for (;;) { - memcpy(¬e, src, sizeof(Elf_Note)); - src += sizeof(Elf_Note); - if (note.n_type == NT_VERSION) - break; - src += note.n_namesz + note.n_descsz; - } - osname = src; - src += roundup2(note.n_namesz, 4); - if (elfhdr.e_ident[EI_DATA] == ELFDATA2MSB) - version = be32dec(src); - else - version = le32dec(src); - - for (i = 0; osname[i] != '\0'; i++) - osname[i] = (char)tolower(osname[i]); - - wordsize_corres_str = elf_corres_to_string(wordsize_corres, - (int)elfhdr.e_ident[EI_CLASS]); - - arch = elf_corres_to_string(mach_corres, (int) elfhdr.e_machine); - - snprintf(dest, sz, "%s:%d", - osname, version / 100000); - - ret = 0; - - switch (elfhdr.e_machine) { - case EM_ARM: - endian_corres_str = elf_corres_to_string(endian_corres, - (int)elfhdr.e_ident[EI_DATA]); - - /* FreeBSD doesn't support the hard-float ABI yet */ - fpu = "softfp"; - if ((elfhdr.e_flags & 0xFF000000) != 0) { - const char *sh_name = NULL; - size_t shstrndx; - - /* This is an EABI file, the conformance level is set */ - abi = "eabi"; - /* Find which TARGET_ARCH we are building for. */ - elf_getshdrstrndx(elf, &shstrndx); - while ((scn = elf_nextscn(elf, scn)) != NULL) { - sh_name = NULL; - if (gelf_getshdr(scn, &shdr) != &shdr) { - scn = NULL; - break; - } - - sh_name = elf_strptr(elf, shstrndx, - shdr.sh_name); - if (sh_name == NULL) - continue; - if (strcmp(".ARM.attributes", sh_name) == 0) - break; - } - if (scn != NULL && sh_name != NULL) { - data = elf_getdata(scn, NULL); - /* - * Prior to FreeBSD 10.0 libelf would return - * NULL from elf_getdata on the .ARM.attributes - * section. As this was the first release to - * get armv6 support assume a NULL value means - * arm. - * - * This assumption can be removed when 9.x - * is unsupported. - */ - if (data != NULL) { - arch = aeabi_parse_arm_attributes( - data->d_buf, data->d_size); - if (arch == NULL) { - ret = 1; - warn("unknown ARM ARCH"); - goto cleanup; - } - } - } else { - ret = 1; - warn("Unable to find the .ARM.attributes " - "section"); - goto cleanup; - } - } else if (elfhdr.e_ident[EI_OSABI] != ELFOSABI_NONE) { - /* - * EABI executables all have this field set to - * ELFOSABI_NONE, therefore it must be an oabi file. - */ - abi = "oabi"; - } else { - ret = 1; - warn("unknown ARM ABI"); - goto cleanup; - } - snprintf(dest + strlen(dest), sz - strlen(dest), - ":%s:%s:%s:%s:%s", arch, wordsize_corres_str, - endian_corres_str, abi, fpu); - break; - case EM_MIPS: - /* - * this is taken from binutils sources: - * include/elf/mips.h - * mapping is figured out from binutils: - * gas/config/tc-mips.c - */ - switch (elfhdr.e_flags & EF_MIPS_ABI) { - case E_MIPS_ABI_O32: - abi = "o32"; - break; - case E_MIPS_ABI_N32: - abi = "n32"; - break; - default: - if (elfhdr.e_ident[EI_DATA] == - ELFCLASS32) - abi = "o32"; - else if (elfhdr.e_ident[EI_DATA] == - ELFCLASS64) - abi = "n64"; - break; - } - endian_corres_str = elf_corres_to_string(endian_corres, - (int)elfhdr.e_ident[EI_DATA]); - - snprintf(dest + strlen(dest), sz - strlen(dest), ":%s:%s:%s:%s", - arch, wordsize_corres_str, endian_corres_str, abi); - break; - default: - snprintf(dest + strlen(dest), sz - strlen(dest), ":%s:%s", - arch, wordsize_corres_str); - } - -cleanup: - if (elf != NULL) - elf_end(elf); + /* + * Use __FreeBSD_version rather than kernel version (uts.release) for + * use in jails. This is equivalent to the value of uname -U. + */ + snprintf(dest, sz, "%s:%d:%s", uts.sysname, __FreeBSD_version/100000, + machine_arch); - close(fd); - return (ret); + return (error); } static void From owner-svn-src-all@FreeBSD.ORG Sat May 30 21:47:26 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 09B7BF8B; Sat, 30 May 2015 21:47:26 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org (svn.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 ED5C71F7D; Sat, 30 May 2015 21:47:25 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4ULlPGh047404; Sat, 30 May 2015 21:47:25 GMT (envelope-from bapt@FreeBSD.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4ULlPiB047403; Sat, 30 May 2015 21:47:25 GMT (envelope-from bapt@FreeBSD.org) Message-Id: <201505302147.t4ULlPiB047403@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: bapt set sender to bapt@FreeBSD.org using -f From: Baptiste Daroussin Date: Sat, 30 May 2015 21:47:25 +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: r283792 - 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-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 21:47:26 -0000 Author: bapt Date: Sat May 30 21:47:25 2015 New Revision: 283792 URL: https://svnweb.freebsd.org/changeset/base/283792 Log: MFC: r273778 (by nwhitehorn) Remove spurious libelf dependency. Submitted by: pluknet Modified: stable/10/usr.sbin/pkg/Makefile Directory Properties: stable/10/ (props changed) Modified: stable/10/usr.sbin/pkg/Makefile ============================================================================== --- stable/10/usr.sbin/pkg/Makefile Sat May 30 21:45:46 2015 (r283791) +++ stable/10/usr.sbin/pkg/Makefile Sat May 30 21:47:25 2015 (r283792) @@ -6,7 +6,7 @@ MAN= pkg.7 CFLAGS+=-I${.CURDIR}/../../contrib/libucl/include .PATH: ${.CURDIR}/../../contrib/libucl/include -DPADD= ${LIBARCHIVE} ${LIBELF} ${LIBFETCH} ${LIBUCL} ${LIBSBUF} ${LIBSSL} \ +DPADD= ${LIBARCHIVE} ${LIBFETCH} ${LIBUCL} ${LIBSBUF} ${LIBSSL} \ ${LIBCRYPTO} ${LIBM} LDADD= -larchive -lfetch -lucl -lsbuf -lssl -lcrypto -lm USEPRIVATELIB= ucl From owner-svn-src-all@FreeBSD.ORG Sat May 30 21:49:18 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E709F13B; Sat, 30 May 2015 21:49:18 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org (svn.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 D68E61F8C; Sat, 30 May 2015 21:49:18 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4ULnIDV047686; Sat, 30 May 2015 21:49:18 GMT (envelope-from bapt@FreeBSD.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4ULnIYZ047685; Sat, 30 May 2015 21:49:18 GMT (envelope-from bapt@FreeBSD.org) Message-Id: <201505302149.t4ULnIYZ047685@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: bapt set sender to bapt@FreeBSD.org using -f From: Baptiste Daroussin Date: Sat, 30 May 2015 21:49:18 +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: r283793 - 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-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 21:49:19 -0000 Author: bapt Date: Sat May 30 21:49:18 2015 New Revision: 283793 URL: https://svnweb.freebsd.org/changeset/base/283793 Log: MFC: r281039 Allow fetching pkg(8) even if servers/proxies are not passing Content-length 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 Sat May 30 21:47:25 2015 (r283792) +++ stable/10/usr.sbin/pkg/pkg.c Sat May 30 21:49:18 2015 (r283793) @@ -47,7 +47,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include @@ -177,14 +176,11 @@ fetch_to_fd(const char *url, char *path) /* To store _https._tcp. + hostname + \0 */ int fd; int retry, max_retry; - off_t done, r; - time_t now, last; + ssize_t r; char buf[10240]; char zone[MAXHOSTNAMELEN + 13]; static const char *mirror_type = NULL; - done = 0; - last = 0; max_retry = 3; current = mirrors = NULL; remote = NULL; @@ -238,19 +234,16 @@ fetch_to_fd(const char *url, char *path) } } - while (done < st.size) { - if ((r = fread(buf, 1, sizeof(buf), remote)) < 1) - break; - + while ((r = fread(buf, 1, sizeof(buf), remote)) > 0) { if (write(fd, buf, r) != r) { warn("write()"); goto fetchfail; } + } - done += r; - now = time(NULL); - if (now > last || done == st.size) - last = now; + if (r != 0) { + warn("An error occurred while fetching pkg(8)"); + goto fetchfail; } if (ferror(remote)) From owner-svn-src-all@FreeBSD.ORG Sat May 30 22:32:49 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E490065D; Sat, 30 May 2015 22:32:49 +0000 (UTC) (envelope-from loos@FreeBSD.org) Received: from svn.freebsd.org (svn.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 D040F1A34; Sat, 30 May 2015 22:32:49 +0000 (UTC) (envelope-from loos@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4UMWnCt071701; Sat, 30 May 2015 22:32:49 GMT (envelope-from loos@FreeBSD.org) Received: (from loos@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4UMWnht071699; Sat, 30 May 2015 22:32:49 GMT (envelope-from loos@FreeBSD.org) Message-Id: <201505302232.t4UMWnht071699@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: loos set sender to loos@FreeBSD.org using -f From: Luiz Otavio O Souza Date: Sat, 30 May 2015 22:32:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283794 - head/sys/boot/fdt/dts/arm X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 22:32:50 -0000 Author: loos Date: Sat May 30 22:32:48 2015 New Revision: 283794 URL: https://svnweb.freebsd.org/changeset/base/283794 Log: Remove the broken-txfifo setting for Allwinnner SoCs. This fixes the eventual missing characters when you type too fast or paste some text on console. Modified: head/sys/boot/fdt/dts/arm/sun4i-a10.dtsi head/sys/boot/fdt/dts/arm/sun7i-a20.dtsi Modified: head/sys/boot/fdt/dts/arm/sun4i-a10.dtsi ============================================================================== --- head/sys/boot/fdt/dts/arm/sun4i-a10.dtsi Sat May 30 21:49:18 2015 (r283793) +++ head/sys/boot/fdt/dts/arm/sun4i-a10.dtsi Sat May 30 22:32:48 2015 (r283794) @@ -127,7 +127,6 @@ current-speed = <115200>; clock-frequency = < 24000000 >; busy-detect = <1>; - broken-txfifo = <1>; }; emac@01c0b000 { Modified: head/sys/boot/fdt/dts/arm/sun7i-a20.dtsi ============================================================================== --- head/sys/boot/fdt/dts/arm/sun7i-a20.dtsi Sat May 30 21:49:18 2015 (r283793) +++ head/sys/boot/fdt/dts/arm/sun7i-a20.dtsi Sat May 30 22:32:48 2015 (r283794) @@ -133,7 +133,6 @@ current-speed = <115200>; clock-frequency = < 24000000 >; busy-detect = <1>; - broken-txfifo = <1>; }; emac@01c0b000 { From owner-svn-src-all@FreeBSD.ORG Sat May 30 23:37:48 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C1FB8C55; Sat, 30 May 2015 23:37:48 +0000 (UTC) (envelope-from alc@FreeBSD.org) Received: from svn.freebsd.org (svn.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 B11D117D6; Sat, 30 May 2015 23:37:48 +0000 (UTC) (envelope-from alc@FreeBSD.org) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4UNbmST008532; Sat, 30 May 2015 23:37:48 GMT (envelope-from alc@FreeBSD.org) Received: (from alc@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4UNbmHx008531; Sat, 30 May 2015 23:37:48 GMT (envelope-from alc@FreeBSD.org) Message-Id: <201505302337.t4UNbmHx008531@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: alc set sender to alc@FreeBSD.org using -f From: Alan Cox Date: Sat, 30 May 2015 23:37:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283795 - head/sys/vm X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 May 2015 23:37:48 -0000 Author: alc Date: Sat May 30 23:37:47 2015 New Revision: 283795 URL: https://svnweb.freebsd.org/changeset/base/283795 Log: Document vm_page_alloc_contig()'s support for the VM_ALLOC_NODUMP option. MFC after: 3 days Modified: head/sys/vm/vm_page.c Modified: head/sys/vm/vm_page.c ============================================================================== --- head/sys/vm/vm_page.c Sat May 30 22:32:48 2015 (r283794) +++ head/sys/vm/vm_page.c Sat May 30 23:37:47 2015 (r283795) @@ -1827,6 +1827,7 @@ vm_page_alloc_contig_vdrop(struct spglis * * optional allocation flags: * VM_ALLOC_NOBUSY do not exclusive busy the page + * VM_ALLOC_NODUMP do not include the page in a kernel core dump * VM_ALLOC_NOOBJ page is not associated with an object and * should not be exclusive busy * VM_ALLOC_SBUSY shared busy the allocated page