From owner-svn-src-all@FreeBSD.ORG Sun Jan 18 01:28: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 166C7298; Sun, 18 Jan 2015 01:28: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 028733B9; Sun, 18 Jan 2015 01:28: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 t0I1S8QA089960; Sun, 18 Jan 2015 01:28:08 GMT (envelope-from bz@FreeBSD.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0I1S8EG089959; Sun, 18 Jan 2015 01:28:08 GMT (envelope-from bz@FreeBSD.org) Message-Id: <201501180128.t0I1S8EG089959@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: bz set sender to bz@FreeBSD.org using -f From: "Bjoern A. Zeeb" Date: Sun, 18 Jan 2015 01:28:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r277308 - 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.18-1 Precedence: list List-Id: "SVN commit messages 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, 18 Jan 2015 01:28:09 -0000 Author: bz Date: Sun Jan 18 01:28:08 2015 New Revision: 277308 URL: https://svnweb.freebsd.org/changeset/base/277308 Log: There are still kernel configs and mk files depending on the OFED option. This will need a proper cleanup and in the meantime after r277302 unbreak LINT builds. Modified: head/sys/conf/options Modified: head/sys/conf/options ============================================================================== --- head/sys/conf/options Sat Jan 17 19:57:03 2015 (r277307) +++ head/sys/conf/options Sun Jan 18 01:28:08 2015 (r277308) @@ -908,6 +908,7 @@ FDT opt_platform.h FDT_DTB_STATIC opt_platform.h # OFED Infiniband stack +OFED opt_ofed.h OFED_DEBUG_INIT opt_ofed.h SDP opt_ofed.h SDP_DEBUG opt_ofed.h From owner-svn-src-all@FreeBSD.ORG Sun Jan 18 01:33: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 F3E81536; Sun, 18 Jan 2015 01:33:55 +0000 (UTC) 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 A87A6657; Sun, 18 Jan 2015 01:33:55 +0000 (UTC) Received: from mail.sbone.de (mail.sbone.de [IPv6:fde9:577b:c1a9:31::2013:587]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.sbone.de (Postfix) with ESMTPS id 92B3E25D3A92; Sun, 18 Jan 2015 01:33:52 +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 754ADC770AE; Sun, 18 Jan 2015 01:33:51 +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 vPWNXj6fAlZq; Sun, 18 Jan 2015 01:33:49 +0000 (UTC) Received: from [IPv6:fde9:577b:c1a9:4410:f501:6ee5:ce6a:361a] (unknown [IPv6:fde9:577b:c1a9:4410:f501:6ee5:ce6a:361a]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sbone.de (Postfix) with ESMTPSA id 0A556C7709A; Sun, 18 Jan 2015 01:33:45 +0000 (UTC) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 8.1 \(1993\)) Subject: Re: svn commit: r277302 - in head/sys: conf modules modules/ibcore modules/ipoib modules/linuxapi modules/mlx4 modules/mlx4ib ofed/drivers/infiniband/core ofed/drivers/infiniband/hw/mlx4 ofed/drivers/i... From: "Bjoern A. Zeeb" In-Reply-To: <201501171636.t0HGadsf039591@svn.freebsd.org> Date: Sun, 18 Jan 2015 01:33:12 +0000 Content-Transfer-Encoding: quoted-printable Message-Id: <47909EEB-D9BF-43A1-B485-43680A86E170@FreeBSD.org> References: <201501171636.t0HGadsf039591@svn.freebsd.org> To: Hans Petter Selasky X-Mailer: Apple Mail (2.1993) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages 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, 18 Jan 2015 01:33:56 -0000 > On 17 Jan 2015, at 16:36 , Hans Petter Selasky = wrote: >=20 > Author: hselasky > Date: Sat Jan 17 16:36:39 2015 > New Revision: 277302 > URL: https://svnweb.freebsd.org/changeset/base/277302 >=20 > Log: > Start importing the basic OFED linux compatibility layer changes made > by dumbbell@ to be able to compile this layer as a dependency module. > Clean up some Makefiles and remove the no longer used OFED define. Build files, NOTES files, .. still referenced the =E2=80=9COFED=E2=80=9D = option. I put it back in for now to unbreak LINT builds. Please = cleanup properly. Can always put it into reviews and find someone to = make sure you caught all places. > Currently only i386 and amd64 targets are supported. >=20 > MFC after: 1 month > Sponsored by: Mellanox Technologies >=20 > Added: > .. > Modified: > .. > head/sys/conf/options > .. > Modified: head/sys/conf/options > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sys/conf/options Sat Jan 17 15:19:18 2015 = (r277301) > +++ head/sys/conf/options Sat Jan 17 16:36:39 2015 = (r277302) > @@ -85,6 +85,7 @@ COMPAT_FREEBSD6 opt_compat.h > COMPAT_FREEBSD7 opt_compat.h > COMPAT_FREEBSD9 opt_compat.h > COMPAT_FREEBSD10 opt_compat.h > +COMPAT_LINUXAPI opt_compat.h On another note: this sounds really strange to me. > COMPILING_LINT opt_global.h > COMPRESS_USER_CORES opt_core.h > CY_PCI_FASTINTR > @@ -907,7 +908,6 @@ FDT opt_platform.h > FDT_DTB_STATIC opt_platform.h >=20 > # OFED Infiniband stack > -OFED opt_ofed.h > OFED_DEBUG_INIT opt_ofed.h > SDP opt_ofed.h > SDP_DEBUG opt_ofed.h >=20 =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 Sun Jan 18 01:34:27 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B93FA675; Sun, 18 Jan 2015 01:34:27 +0000 (UTC) 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 4A55E65E; Sun, 18 Jan 2015 01:34:27 +0000 (UTC) Received: from mail.sbone.de (mail.sbone.de [IPv6:fde9:577b:c1a9:31::2013:587]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.sbone.de (Postfix) with ESMTPS id 5C9BC25D3891; Sun, 18 Jan 2015 01:34:25 +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 D33EEC7709A; Sun, 18 Jan 2015 01:34:24 +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 8S2-ZZ2H_xaA; Sun, 18 Jan 2015 01:34:22 +0000 (UTC) Received: from [IPv6:fde9:577b:c1a9:4410:f501:6ee5:ce6a:361a] (unknown [IPv6:fde9:577b:c1a9:4410:f501:6ee5:ce6a:361a]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sbone.de (Postfix) with ESMTPSA id 12494C770F0; Sun, 18 Jan 2015 01:34:21 +0000 (UTC) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 8.1 \(1993\)) Subject: Re: svn commit: r277285 - head/sys/x86/isa From: "Bjoern A. Zeeb" In-Reply-To: <717DFAD4-3B25-4ED8-A154-E7F91B61C959@bsdimp.com> Date: Sun, 18 Jan 2015 01:34:19 +0000 Content-Transfer-Encoding: quoted-printable Message-Id: References: <201501170218.t0H2I0AW038857@svn.freebsd.org> <9BA78F3A-C96C-4B51-A6CA-67B15665F511@FreeBSD.org> <717DFAD4-3B25-4ED8-A154-E7F91B61C959@bsdimp.com> To: Warner Losh X-Mailer: Apple Mail (2.1993) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers , Warner Losh X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages 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, 18 Jan 2015 01:34:27 -0000 > On 17 Jan 2015, at 23:19 , Warner Losh wrote: >=20 >=20 >> On Jan 17, 2015, at 6:31 AM, Bjoern A. Zeeb wrote: >>=20 >>=20 >>> On 17 Jan 2015, at 02:18 , Warner Losh wrote: >>>=20 >>> Author: imp >>> Date: Sat Jan 17 02:17:59 2015 >>> New Revision: 277285 >>> URL: https://svnweb.freebsd.org/changeset/base/277285 >>>=20 >>> Log: >>> Need to include opt_mca.h to test for DEV_MCA. >>>=20 >>> Modified: >>> head/sys/x86/isa/atpic.c >>=20 >>=20 >> i386 LINT kernels: >>=20 >> /scratch/tmp/bz/head.svn/sys/x86/isa/atpic.c:376:6: error: use of = undeclared identifier 'MCA_system' >> /scratch/tmp/bz/head.svn/sys/x86/isa/atpic.c:440:6: error: use of = undeclared identifier =E2=80=98MCA_system' >=20 >=20 > I don=E2=80=99t get that far. After =E2=80=98make LINT=E2=80=99 in = i386, I get OFED unknown option=E2=80=A6 Yeah blame r277302 on that ;-) I put it back for now and let hps know but you could also go back to = 277301 and try to fix yours ;-) >=20 > Warner >=20 >>>=20 >>> Modified: head/sys/x86/isa/atpic.c >>> = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D >>> --- head/sys/x86/isa/atpic.c Sat Jan 17 02:17:57 2015 = (r277284) >>> +++ head/sys/x86/isa/atpic.c Sat Jan 17 02:17:59 2015 = (r277285) >>> @@ -33,6 +33,7 @@ __FBSDID("$FreeBSD$"); >>>=20 >>> #include "opt_auto_eoi.h" >>> #include "opt_isa.h" >>> +#include "opt_mca.h" >>>=20 >>> #include >>> #include >>>=20 >>=20 >> =E2=80=94 >> 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." >>=20 >=20 =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 Sun Jan 18 01:50: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 3094ABB0; Sun, 18 Jan 2015 01:50: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 1CD7C7B7; Sun, 18 Jan 2015 01:50: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 t0I1oANT099819; Sun, 18 Jan 2015 01:50:10 GMT (envelope-from neel@FreeBSD.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0I1oAZw099818; Sun, 18 Jan 2015 01:50:10 GMT (envelope-from neel@FreeBSD.org) Message-Id: <201501180150.t0I1oAZw099818@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: neel set sender to neel@FreeBSD.org using -f From: Neel Natu Date: Sun, 18 Jan 2015 01:50:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r277309 - head/share/examples/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.18-1 Precedence: list List-Id: "SVN commit messages 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, 18 Jan 2015 01:50:11 -0000 Author: neel Date: Sun Jan 18 01:50:10 2015 New Revision: 277309 URL: https://svnweb.freebsd.org/changeset/base/277309 Log: Make the error message explicit instead of just printing the usage if the virtual machine name is not specified. Requested by: grehan MFC after: 1 week Modified: head/share/examples/bhyve/vmrun.sh Modified: head/share/examples/bhyve/vmrun.sh ============================================================================== --- head/share/examples/bhyve/vmrun.sh Sun Jan 18 01:28:08 2015 (r277308) +++ head/share/examples/bhyve/vmrun.sh Sun Jan 18 01:50:10 2015 (r277309) @@ -39,7 +39,13 @@ DEFAULT_CONSOLE=stdio DEFAULT_VIRTIO_DISK="./diskdev" DEFAULT_ISOFILE="./release.iso" +errmsg() { + echo "*** $1" +} + usage() { + local msg=$1 + echo "Usage: vmrun.sh [-ahi] [-c ] [-C ] [-d ]" echo " [-e ] [-g ] [-H ]" echo " [-I ] [-m ]" @@ -58,18 +64,18 @@ usage() { echo " -m: memory size (default is ${DEFAULT_MEMSIZE})" echo " -t: tap device for virtio-net (default is $DEFAULT_TAPDEV)" echo "" - echo " This script needs to be executed with superuser privileges" - echo "" + [ -n "$msg" ] && errmsg "$msg" exit 1 } if [ `id -u` -ne 0 ]; then - usage + errmsg "This script must be executed with superuser privileges" + exit 1 fi kldstat -n vmm > /dev/null 2>&1 if [ $? -ne 0 ]; then - echo "vmm.ko is not loaded!" + errmsg "vmm.ko is not loaded" exit 1 fi @@ -140,7 +146,7 @@ fi shift $((${OPTIND} - 1)) if [ $# -ne 1 ]; then - usage + usage "virtual machine name not specified" fi vmname="$1" From owner-svn-src-all@FreeBSD.ORG Sun Jan 18 03:08: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 5950366E; Sun, 18 Jan 2015 03:08: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 444DBE98; Sun, 18 Jan 2015 03:08: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 t0I38Y21037583; Sun, 18 Jan 2015 03:08:34 GMT (envelope-from neel@FreeBSD.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0I38VJt037565; Sun, 18 Jan 2015 03:08:31 GMT (envelope-from neel@FreeBSD.org) Message-Id: <201501180308.t0I38VJt037565@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: neel set sender to neel@FreeBSD.org using -f From: Neel Natu Date: Sun, 18 Jan 2015 03:08:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r277310 - in head: lib/libvmmapi sys/amd64/include sys/amd64/vmm sys/amd64/vmm/intel usr.sbin/bhyve usr.sbin/bhyvectl X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages 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, 18 Jan 2015 03:08:34 -0000 Author: neel Date: Sun Jan 18 03:08:30 2015 New Revision: 277310 URL: https://svnweb.freebsd.org/changeset/base/277310 Log: Simplify instruction restart logic in bhyve. Keep track of the next instruction to be executed by the vcpu as 'nextrip'. As a result the VM_RUN ioctl no longer takes the %rip where a vcpu should start execution. Also, instruction restart happens implicitly via 'vm_inject_exception()' or explicitly via 'vm_restart_instruction()'. The APIs behave identically in both kernel and userspace contexts. The main beneficiary is the instruction emulation code that executes in both contexts. bhyve(8) VM exit handlers now treat 'vmexit->rip' and 'vmexit->inst_length' as readonly: - Restarting an instruction is now done by calling 'vm_restart_instruction()' as opposed to setting 'vmexit->inst_length' to 0 (e.g. emulate_inout()) - Resuming vcpu at an arbitrary %rip is now done by setting VM_REG_GUEST_RIP as opposed to changing 'vmexit->rip' (e.g. vmexit_task_switch()) Differential Revision: https://reviews.freebsd.org/D1526 Reviewed by: grehan MFC after: 2 weeks Modified: head/lib/libvmmapi/vmmapi.c head/lib/libvmmapi/vmmapi.h head/sys/amd64/include/vmm_dev.h head/sys/amd64/vmm/intel/vmx.c head/sys/amd64/vmm/vmm.c head/sys/amd64/vmm/vmm_dev.c head/usr.sbin/bhyve/bhyverun.c head/usr.sbin/bhyve/bhyverun.h head/usr.sbin/bhyve/inout.c head/usr.sbin/bhyve/task_switch.c head/usr.sbin/bhyvectl/bhyvectl.c Modified: head/lib/libvmmapi/vmmapi.c ============================================================================== --- head/lib/libvmmapi/vmmapi.c Sun Jan 18 01:50:10 2015 (r277309) +++ head/lib/libvmmapi/vmmapi.c Sun Jan 18 03:08:30 2015 (r277310) @@ -368,14 +368,13 @@ vm_get_register(struct vmctx *ctx, int v } int -vm_run(struct vmctx *ctx, int vcpu, uint64_t rip, struct vm_exit *vmexit) +vm_run(struct vmctx *ctx, int vcpu, struct vm_exit *vmexit) { int error; struct vm_run vmrun; bzero(&vmrun, sizeof(vmrun)); vmrun.cpuid = vcpu; - vmrun.rip = rip; error = ioctl(ctx->fd, VM_RUN, &vmrun); bcopy(&vmrun.vm_exit, vmexit, sizeof(struct vm_exit)); @@ -399,36 +398,22 @@ vm_reinit(struct vmctx *ctx) return (ioctl(ctx->fd, VM_REINIT, 0)); } -static int -vm_inject_exception_real(struct vmctx *ctx, int vcpu, int vector, - int error_code, int error_code_valid) +int +vm_inject_exception(struct vmctx *ctx, int vcpu, int vector, int errcode_valid, + uint32_t errcode, int restart_instruction) { struct vm_exception exc; - bzero(&exc, sizeof(exc)); exc.cpuid = vcpu; exc.vector = vector; - exc.error_code = error_code; - exc.error_code_valid = error_code_valid; + exc.error_code = errcode; + exc.error_code_valid = errcode_valid; + exc.restart_instruction = restart_instruction; return (ioctl(ctx->fd, VM_INJECT_EXCEPTION, &exc)); } int -vm_inject_exception(struct vmctx *ctx, int vcpu, int vector) -{ - - return (vm_inject_exception_real(ctx, vcpu, vector, 0, 0)); -} - -int -vm_inject_exception2(struct vmctx *ctx, int vcpu, int vector, int errcode) -{ - - return (vm_inject_exception_real(ctx, vcpu, vector, errcode, 1)); -} - -int vm_apicid2vcpu(struct vmctx *ctx, int apicid) { /* @@ -1198,3 +1183,11 @@ vm_rtc_gettime(struct vmctx *ctx, time_t *secs = rtctime.secs; return (error); } + +int +vm_restart_instruction(void *arg, int vcpu) +{ + struct vmctx *ctx = arg; + + return (ioctl(ctx->fd, VM_RESTART_INSTRUCTION, &vcpu)); +} Modified: head/lib/libvmmapi/vmmapi.h ============================================================================== --- head/lib/libvmmapi/vmmapi.h Sun Jan 18 01:50:10 2015 (r277309) +++ head/lib/libvmmapi/vmmapi.h Sun Jan 18 03:08:30 2015 (r277310) @@ -32,6 +32,12 @@ #include #include +/* + * API version for out-of-tree consumers like grub-bhyve for making compile + * time decisions. + */ +#define VMMAPI_VERSION 0101 /* 2 digit major followed by 2 digit minor */ + struct iovec; struct vmctx; enum x2apic_state; @@ -70,13 +76,12 @@ int vm_get_seg_desc(struct vmctx *ctx, i struct seg_desc *seg_desc); int vm_set_register(struct vmctx *ctx, int vcpu, int reg, uint64_t val); int vm_get_register(struct vmctx *ctx, int vcpu, int reg, uint64_t *retval); -int vm_run(struct vmctx *ctx, int vcpu, uint64_t rip, - struct vm_exit *ret_vmexit); +int vm_run(struct vmctx *ctx, int vcpu, struct vm_exit *ret_vmexit); int vm_suspend(struct vmctx *ctx, enum vm_suspend_how how); int vm_reinit(struct vmctx *ctx); int vm_apicid2vcpu(struct vmctx *ctx, int apicid); -int vm_inject_exception(struct vmctx *ctx, int vcpu, int vec); -int vm_inject_exception2(struct vmctx *ctx, int vcpu, int vec, int errcode); +int vm_inject_exception(struct vmctx *ctx, int vcpu, int vector, + int errcode_valid, uint32_t errcode, int restart_instruction); int vm_lapic_irq(struct vmctx *ctx, int vcpu, int vector); int vm_lapic_local_irq(struct vmctx *ctx, int vcpu, int vector); int vm_lapic_msi(struct vmctx *ctx, uint64_t addr, uint64_t msg); Modified: head/sys/amd64/include/vmm_dev.h ============================================================================== --- head/sys/amd64/include/vmm_dev.h Sun Jan 18 01:50:10 2015 (r277309) +++ head/sys/amd64/include/vmm_dev.h Sun Jan 18 03:08:30 2015 (r277310) @@ -54,7 +54,6 @@ struct vm_seg_desc { /* data or code s struct vm_run { int cpuid; - uint64_t rip; /* start running here */ struct vm_exit vm_exit; }; @@ -238,6 +237,7 @@ enum { IOCNUM_LAPIC_MSI = 36, IOCNUM_LAPIC_LOCAL_IRQ = 37, IOCNUM_IOAPIC_PINCOUNT = 38, + IOCNUM_RESTART_INSTRUCTION = 39, /* PCI pass-thru */ IOCNUM_BIND_PPTDEV = 40, @@ -360,4 +360,6 @@ enum { _IOW('v', IOCNUM_RTC_SETTIME, struct vm_rtc_time) #define VM_RTC_GETTIME \ _IOR('v', IOCNUM_RTC_GETTIME, struct vm_rtc_time) +#define VM_RESTART_INSTRUCTION \ + _IOW('v', IOCNUM_RESTART_INSTRUCTION, int) #endif Modified: head/sys/amd64/vmm/intel/vmx.c ============================================================================== --- head/sys/amd64/vmm/intel/vmx.c Sun Jan 18 01:50:10 2015 (r277309) +++ head/sys/amd64/vmm/intel/vmx.c Sun Jan 18 03:08:30 2015 (r277310) @@ -2412,6 +2412,7 @@ vmx_exit_process(struct vmx *vmx, int vc if (vm_mem_allocated(vmx->vm, gpa) || apic_access_fault(vmx, vcpu, gpa)) { vmexit->exitcode = VM_EXITCODE_PAGING; + vmexit->inst_length = 0; vmexit->u.paging.gpa = gpa; vmexit->u.paging.fault_type = ept_fault_type(qual); vmm_stat_incr(vmx->vm, vcpu, VMEXIT_NESTED_FAULT, 1); Modified: head/sys/amd64/vmm/vmm.c ============================================================================== --- head/sys/amd64/vmm/vmm.c Sun Jan 18 01:50:10 2015 (r277309) +++ head/sys/amd64/vmm/vmm.c Sun Jan 18 03:08:30 2015 (r277310) @@ -109,6 +109,7 @@ struct vcpu { uint64_t guest_xcr0; /* (i) guest %xcr0 register */ void *stats; /* (a,i) statistics */ struct vm_exit exitinfo; /* (x) exit reason and collateral */ + uint64_t nextrip; /* (x) next instruction to execute */ }; #define vcpu_lock_initialized(v) mtx_initialized(&((v)->mtx)) @@ -850,16 +851,26 @@ vm_get_register(struct vm *vm, int vcpu, } int -vm_set_register(struct vm *vm, int vcpu, int reg, uint64_t val) +vm_set_register(struct vm *vm, int vcpuid, int reg, uint64_t val) { + struct vcpu *vcpu; + int error; - if (vcpu < 0 || vcpu >= VM_MAXCPU) + if (vcpuid < 0 || vcpuid >= VM_MAXCPU) return (EINVAL); if (reg >= VM_REG_LAST) return (EINVAL); - return (VMSETREG(vm->cookie, vcpu, reg, val)); + error = VMSETREG(vm->cookie, vcpuid, reg, val); + if (error || reg != VM_REG_GUEST_RIP) + return (error); + + /* Set 'nextrip' to match the value of %rip */ + VCPU_CTR1(vm, vcpuid, "Setting nextrip to %#lx", val); + vcpu = &vm->vcpu[vcpuid]; + vcpu->nextrip = val; + return (0); } static boolean_t @@ -1199,6 +1210,9 @@ vm_handle_paging(struct vm *vm, int vcpu vcpu = &vm->vcpu[vcpuid]; vme = &vcpu->exitinfo; + KASSERT(vme->inst_length == 0, ("%s: invalid inst_length %d", + __func__, vme->inst_length)); + ftype = vme->u.paging.fault_type; KASSERT(ftype == VM_PROT_READ || ftype == VM_PROT_WRITE || ftype == VM_PROT_EXECUTE, @@ -1224,9 +1238,6 @@ vm_handle_paging(struct vm *vm, int vcpu if (rv != KERN_SUCCESS) return (EFAULT); done: - /* restart execution at the faulting instruction */ - vm_restart_instruction(vm, vcpuid); - return (0); } @@ -1281,10 +1292,13 @@ vm_handle_inst_emul(struct vm *vm, int v return (EFAULT); /* - * If the instruction length is not specified the update it now. + * If the instruction length was not specified then update it now + * along with 'nextrip'. */ - if (vme->inst_length == 0) + if (vme->inst_length == 0) { vme->inst_length = vie->num_processed; + vcpu->nextrip += vie->num_processed; + } /* return to userland unless this is an in-kernel emulated device */ if (gpa >= DEFAULT_APIC_BASE && gpa < DEFAULT_APIC_BASE + PAGE_SIZE) { @@ -1433,7 +1447,7 @@ vm_run(struct vm *vm, struct vm_run *vmr int error, vcpuid; struct vcpu *vcpu; struct pcb *pcb; - uint64_t tscval, rip; + uint64_t tscval; struct vm_exit *vme; bool retu, intr_disabled; pmap_t pmap; @@ -1455,7 +1469,6 @@ vm_run(struct vm *vm, struct vm_run *vmr pmap = vmspace_pmap(vm->vmspace); vcpu = &vm->vcpu[vcpuid]; vme = &vcpu->exitinfo; - rip = vmrun->rip; restart: critical_enter(); @@ -1470,7 +1483,7 @@ restart: restore_guest_fpustate(vcpu); vcpu_require_state(vm, vcpuid, VCPU_RUNNING); - error = VMRUN(vm->cookie, vcpuid, rip, pmap, rptr, sptr); + error = VMRUN(vm->cookie, vcpuid, vcpu->nextrip, pmap, rptr, sptr); vcpu_require_state(vm, vcpuid, VCPU_FROZEN); save_guest_fpustate(vcpu); @@ -1481,6 +1494,7 @@ restart: if (error == 0) { retu = false; + vcpu->nextrip = vme->rip + vme->inst_length; switch (vme->exitcode) { case VM_EXITCODE_SUSPENDED: error = vm_handle_suspend(vm, vcpuid, &retu); @@ -1517,10 +1531,8 @@ restart: } } - if (error == 0 && retu == false) { - rip = vme->rip + vme->inst_length; + if (error == 0 && retu == false) goto restart; - } /* copy the exit information */ bcopy(vme, &vmrun->vm_exit, sizeof(struct vm_exit)); @@ -1530,14 +1542,43 @@ restart: int vm_restart_instruction(void *arg, int vcpuid) { + struct vm *vm; struct vcpu *vcpu; - struct vm *vm = arg; + enum vcpu_state state; + uint64_t rip; + int error; + vm = arg; if (vcpuid < 0 || vcpuid >= VM_MAXCPU) return (EINVAL); vcpu = &vm->vcpu[vcpuid]; - vcpu->exitinfo.inst_length = 0; + state = vcpu_get_state(vm, vcpuid, NULL); + if (state == VCPU_RUNNING) { + /* + * When a vcpu is "running" the next instruction is determined + * by adding 'rip' and 'inst_length' in the vcpu's 'exitinfo'. + * Thus setting 'inst_length' to zero will cause the current + * instruction to be restarted. + */ + vcpu->exitinfo.inst_length = 0; + VCPU_CTR1(vm, vcpuid, "restarting instruction at %#lx by " + "setting inst_length to zero", vcpu->exitinfo.rip); + } else if (state == VCPU_FROZEN) { + /* + * When a vcpu is "frozen" it is outside the critical section + * around VMRUN() and 'nextrip' points to the next instruction. + * Thus instruction restart is achieved by setting 'nextrip' + * to the vcpu's %rip. + */ + error = vm_get_register(vm, vcpuid, VM_REG_GUEST_RIP, &rip); + KASSERT(!error, ("%s: error %d getting rip", __func__, error)); + VCPU_CTR2(vm, vcpuid, "restarting instruction by updating " + "nextrip from %#lx to %#lx", vcpu->nextrip, rip); + vcpu->nextrip = rip; + } else { + panic("%s: invalid state %d", __func__, state); + } return (0); } Modified: head/sys/amd64/vmm/vmm_dev.c ============================================================================== --- head/sys/amd64/vmm/vmm_dev.c Sun Jan 18 01:50:10 2015 (r277309) +++ head/sys/amd64/vmm/vmm_dev.c Sun Jan 18 03:08:30 2015 (r277310) @@ -205,6 +205,7 @@ vmmdev_ioctl(struct cdev *cdev, u_long c case VM_ACTIVATE_CPU: case VM_SET_INTINFO: case VM_GET_INTINFO: + case VM_RESTART_INSTRUCTION: /* * XXX fragile, handle with care * Assumes that the first field of the ioctl data is the vcpu. @@ -506,6 +507,9 @@ vmmdev_ioctl(struct cdev *cdev, u_long c rtctime = (struct vm_rtc_time *)data; rtctime->secs = vrtc_get_time(sc->vm); break; + case VM_RESTART_INSTRUCTION: + error = vm_restart_instruction(sc->vm, vcpu); + break; default: error = ENOTTY; break; Modified: head/usr.sbin/bhyve/bhyverun.c ============================================================================== --- head/usr.sbin/bhyve/bhyverun.c Sun Jan 18 01:50:10 2015 (r277309) +++ head/usr.sbin/bhyve/bhyverun.c Sun Jan 18 03:08:30 2015 (r277310) @@ -185,20 +185,14 @@ vm_inject_fault(void *arg, int vcpu, int int errcode) { struct vmctx *ctx; - int error; + int error, restart_instruction; ctx = arg; - if (errcode_valid) - error = vm_inject_exception2(ctx, vcpu, vector, errcode); - else - error = vm_inject_exception(ctx, vcpu, vector); - assert(error == 0); + restart_instruction = 1; - /* - * Set the instruction length to 0 to ensure that the instruction is - * restarted when the fault handler returns. - */ - vmexit[vcpu].inst_length = 0; + error = vm_inject_exception(ctx, vcpu, vector, errcode_valid, errcode, + restart_instruction); + assert(error == 0); } void * @@ -329,12 +323,6 @@ vmexit_inout(struct vmctx *ctx, struct v } error = emulate_inout(ctx, vcpu, vme, strictio); - if (!error && in && !string) { - error = vm_set_register(ctx, vcpu, VM_REG_GUEST_RAX, - vme->u.inout.eax); - assert(error == 0); - } - if (error) { fprintf(stderr, "Unhandled %s%c 0x%04x\n", in ? "in" : "out", bytes == 1 ? 'b' : (bytes == 2 ? 'w' : 'l'), port); @@ -358,7 +346,7 @@ vmexit_rdmsr(struct vmctx *ctx, struct v vme->u.msr.code, *pvcpu); if (strictmsr) { vm_inject_gp(ctx, *pvcpu); - return (VMEXIT_RESTART); + return (VMEXIT_CONTINUE); } } @@ -384,7 +372,7 @@ vmexit_wrmsr(struct vmctx *ctx, struct v vme->u.msr.code, vme->u.msr.wval, *pvcpu); if (strictmsr) { vm_inject_gp(ctx, *pvcpu); - return (VMEXIT_RESTART); + return (VMEXIT_CONTINUE); } } return (VMEXIT_CONTINUE); @@ -462,9 +450,11 @@ static int vmexit_bogus(struct vmctx *ctx, struct vm_exit *vmexit, int *pvcpu) { + assert(vmexit->inst_length == 0); + stats.vmexit_bogus++; - return (VMEXIT_RESTART); + return (VMEXIT_CONTINUE); } static int @@ -494,9 +484,11 @@ static int vmexit_mtrap(struct vmctx *ctx, struct vm_exit *vmexit, int *pvcpu) { + assert(vmexit->inst_length == 0); + stats.vmexit_mtrap++; - return (VMEXIT_RESTART); + return (VMEXIT_CONTINUE); } static int @@ -581,7 +573,7 @@ static vmexit_handler_t handler[VM_EXITC }; static void -vm_loop(struct vmctx *ctx, int vcpu, uint64_t rip) +vm_loop(struct vmctx *ctx, int vcpu, uint64_t startrip) { int error, rc, prevcpu; enum vm_exitcode exitcode; @@ -596,8 +588,11 @@ vm_loop(struct vmctx *ctx, int vcpu, uin error = vm_active_cpus(ctx, &active_cpus); assert(CPU_ISSET(vcpu, &active_cpus)); + error = vm_set_register(ctx, vcpu, VM_REG_GUEST_RIP, startrip); + assert(error == 0); + while (1) { - error = vm_run(ctx, vcpu, rip, &vmexit[vcpu]); + error = vm_run(ctx, vcpu, &vmexit[vcpu]); if (error != 0) break; @@ -614,10 +609,6 @@ vm_loop(struct vmctx *ctx, int vcpu, uin switch (rc) { case VMEXIT_CONTINUE: - rip = vmexit[vcpu].rip + vmexit[vcpu].inst_length; - break; - case VMEXIT_RESTART: - rip = vmexit[vcpu].rip; break; case VMEXIT_ABORT: abort(); Modified: head/usr.sbin/bhyve/bhyverun.h ============================================================================== --- head/usr.sbin/bhyve/bhyverun.h Sun Jan 18 01:50:10 2015 (r277309) +++ head/usr.sbin/bhyve/bhyverun.h Sun Jan 18 03:08:30 2015 (r277310) @@ -35,9 +35,8 @@ #define __CTASSERT(x, y) typedef char __assert ## y[(x) ? 1 : -1] #endif -#define VMEXIT_CONTINUE 1 /* continue from next instruction */ -#define VMEXIT_RESTART 2 /* restart current instruction */ -#define VMEXIT_ABORT 3 /* abort the vm run loop */ +#define VMEXIT_CONTINUE (0) +#define VMEXIT_ABORT (-1) struct vmctx; extern int guest_ncpus; Modified: head/usr.sbin/bhyve/inout.c ============================================================================== --- head/usr.sbin/bhyve/inout.c Sun Jan 18 01:50:10 2015 (r277309) +++ head/usr.sbin/bhyve/inout.c Sun Jan 18 03:08:30 2015 (r277310) @@ -104,7 +104,7 @@ int emulate_inout(struct vmctx *ctx, int vcpu, struct vm_exit *vmexit, int strict) { int addrsize, bytes, flags, in, port, prot, rep; - uint32_t val; + uint32_t eax, val; inout_func_t handler; void *arg; int error, retval; @@ -214,16 +214,20 @@ emulate_inout(struct vmctx *ctx, int vcp } /* Restart the instruction if more iterations remain */ - if (retval == 0 && count != 0) - vmexit->inst_length = 0; - } else { - if (!in) { - val = vmexit->u.inout.eax & vie_size2mask(bytes); + if (retval == 0 && count != 0) { + error = vm_restart_instruction(ctx, vcpu); + assert(error == 0); } + } else { + eax = vmexit->u.inout.eax; + val = eax & vie_size2mask(bytes); retval = handler(ctx, vcpu, in, port, bytes, &val, arg); if (retval == 0 && in) { - vmexit->u.inout.eax &= ~vie_size2mask(bytes); - vmexit->u.inout.eax |= val & vie_size2mask(bytes); + eax &= ~vie_size2mask(bytes); + eax |= val & vie_size2mask(bytes); + error = vm_set_register(ctx, vcpu, VM_REG_GUEST_RAX, + eax); + assert(error == 0); } } return (retval); Modified: head/usr.sbin/bhyve/task_switch.c ============================================================================== --- head/usr.sbin/bhyve/task_switch.c Sun Jan 18 01:50:10 2015 (r277309) +++ head/usr.sbin/bhyve/task_switch.c Sun Jan 18 03:08:30 2015 (r277310) @@ -725,21 +725,11 @@ vmexit_task_switch(struct vmctx *ctx, st assert(paging->cpu_mode == CPU_MODE_PROTECTED); /* - * Calculate the %eip to store in the old TSS before modifying the - * 'inst_length'. + * Calculate the instruction pointer to store in the old TSS. */ eip = vmexit->rip + vmexit->inst_length; /* - * Set the 'inst_length' to '0'. - * - * If an exception is triggered during emulation of the task switch - * then the exception handler should return to the instruction that - * caused the task switch as opposed to the subsequent instruction. - */ - vmexit->inst_length = 0; - - /* * Section 4.6, "Access Rights" in Intel SDM Vol 3. * The following page table accesses are implicitly supervisor mode: * - accesses to GDT or LDT to load segment descriptors @@ -883,8 +873,8 @@ vmexit_task_switch(struct vmctx *ctx, st * after this point will be handled in the context of the new task and * the saved instruction pointer will belong to the new task. */ - vmexit->rip = newtss.tss_eip; - assert(vmexit->inst_length == 0); + error = vm_set_register(ctx, vcpu, VM_REG_GUEST_RIP, newtss.tss_eip); + assert(error == 0); /* Load processor state from new TSS */ error = tss32_restore(ctx, vcpu, task_switch, ot_sel, &newtss, nt_iov); Modified: head/usr.sbin/bhyvectl/bhyvectl.c ============================================================================== --- head/usr.sbin/bhyvectl/bhyvectl.c Sun Jan 18 01:50:10 2015 (r277309) +++ head/usr.sbin/bhyvectl/bhyvectl.c Sun Jan 18 03:08:30 2015 (r277310) @@ -2118,10 +2118,7 @@ main(int argc, char *argv[]) } if (!error && run) { - error = vm_get_register(ctx, vcpu, VM_REG_GUEST_RIP, &rip); - assert(error == 0); - - error = vm_run(ctx, vcpu, rip, &vmexit); + error = vm_run(ctx, vcpu, &vmexit); if (error == 0) dump_vm_run_exitcode(&vmexit, vcpu); else From owner-svn-src-all@FreeBSD.ORG Sun Jan 18 03:37: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 91266A93; Sun, 18 Jan 2015 03:37:24 +0000 (UTC) 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 187C7142; Sun, 18 Jan 2015 03:37:23 +0000 (UTC) Received: from mail.sbone.de (mail.sbone.de [IPv6:fde9:577b:c1a9:31::2013:587]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.sbone.de (Postfix) with ESMTPS id 8FE0425D3A00; Sun, 18 Jan 2015 03:37:20 +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 BA5ADC770AE; Sun, 18 Jan 2015 03:37:19 +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 oQ_rXAa1CVHf; Sun, 18 Jan 2015 03:37:17 +0000 (UTC) Received: from [IPv6:fde9:577b:c1a9:4410:f501:6ee5:ce6a:361a] (unknown [IPv6:fde9:577b:c1a9:4410:f501:6ee5:ce6a:361a]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sbone.de (Postfix) with ESMTPSA id 4DAF1C7706F; Sun, 18 Jan 2015 03:37:06 +0000 (UTC) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 8.1 \(1993\)) Subject: Re: svn commit: r277302 - in head/sys: conf modules modules/ibcore modules/ipoib modules/linuxapi modules/mlx4 modules/mlx4ib ofed/drivers/infiniband/core ofed/drivers/infiniband/hw/mlx4 ofed/drivers/i... From: "Bjoern A. Zeeb" In-Reply-To: <47909EEB-D9BF-43A1-B485-43680A86E170@FreeBSD.org> Date: Sun, 18 Jan 2015 03:37:00 +0000 Content-Transfer-Encoding: quoted-printable Message-Id: References: <201501171636.t0HGadsf039591@svn.freebsd.org> <47909EEB-D9BF-43A1-B485-43680A86E170@FreeBSD.org> To: Hans Petter Selasky X-Mailer: Apple Mail (2.1993) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages 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, 18 Jan 2015 03:37:24 -0000 > On 18 Jan 2015, at 01:33 , Bjoern A. Zeeb wrote: >=20 >=20 >> On 17 Jan 2015, at 16:36 , Hans Petter Selasky = wrote: >>=20 >> Author: hselasky >> Date: Sat Jan 17 16:36:39 2015 >> New Revision: 277302 >> URL: https://svnweb.freebsd.org/changeset/base/277302 >>=20 >> Log: >> Start importing the basic OFED linux compatibility layer changes made >> by dumbbell@ to be able to compile this layer as a dependency module. >> Clean up some Makefiles and remove the no longer used OFED define. >=20 > Build files, NOTES files, .. still referenced the =E2=80=9COFED=E2=80=9D= option. I put it back in for now to unbreak LINT builds. Please = cleanup properly. Can always put it into reviews and find someone to = make sure you caught all places. >=20 Ok, never mind: = /home/baz21/SVN/head-reviews.svn/sys/ofed/include/linux/linux_compat.c:49:= 10: fatal error: 'linux/kobject.h' file not found #include ^ 1 error generated. = /home/baz21/SVN/head-reviews.svn/sys/ofed/include/linux/linux_pci.c:47:10:= fatal error: 'linux/kobject.h' file not found #include ^ 1 error generated. = /home/baz21/SVN/head-reviews.svn/sys/ofed/include/linux/linux_idr.c:40:10:= fatal error: 'linux/bitops.h' file not found #include ^ 1 error generated. = /home/baz21/SVN/head-reviews.svn/sys/ofed/include/linux/linux_radix.c:36:1= 0: fatal error: 'linux/slab.h' file not found #include ^ 1 error generated. mkdep: compile failed --- .depend --- *** [.depend] Error code 1 >> Currently only i386 and amd64 targets are supported. >>=20 >> MFC after: 1 month >> Sponsored by: Mellanox Technologies >>=20 >> Added: >> .. >> Modified: >> .. >> head/sys/conf/options >> .. >=20 >> Modified: head/sys/conf/options >> = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D >> --- head/sys/conf/options Sat Jan 17 15:19:18 2015 = (r277301) >> +++ head/sys/conf/options Sat Jan 17 16:36:39 2015 = (r277302) >> @@ -85,6 +85,7 @@ COMPAT_FREEBSD6 opt_compat.h >> COMPAT_FREEBSD7 opt_compat.h >> COMPAT_FREEBSD9 opt_compat.h >> COMPAT_FREEBSD10 opt_compat.h >> +COMPAT_LINUXAPI opt_compat.h >=20 > On another note: this sounds really strange to me. >=20 >=20 >> COMPILING_LINT opt_global.h >> COMPRESS_USER_CORES opt_core.h >> CY_PCI_FASTINTR >> @@ -907,7 +908,6 @@ FDT opt_platform.h >> FDT_DTB_STATIC opt_platform.h >>=20 >> # OFED Infiniband stack >> -OFED opt_ofed.h >> OFED_DEBUG_INIT opt_ofed.h >> SDP opt_ofed.h >> SDP_DEBUG opt_ofed.h >>=20 >=20 > =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." >=20 >=20 =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 Sun Jan 18 03:43: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 78B2CBF1; Sun, 18 Jan 2015 03:43: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 662641EF; Sun, 18 Jan 2015 03:43: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 t0I3hmG1055420; Sun, 18 Jan 2015 03:43:48 GMT (envelope-from imp@FreeBSD.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0I3hm8n055419; Sun, 18 Jan 2015 03:43:48 GMT (envelope-from imp@FreeBSD.org) Message-Id: <201501180343.t0I3hm8n055419@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: imp set sender to imp@FreeBSD.org using -f From: Warner Losh Date: Sun, 18 Jan 2015 03:43:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r277311 - head/sys/x86/isa X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages 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, 18 Jan 2015 03:43:48 -0000 Author: imp Date: Sun Jan 18 03:43:47 2015 New Revision: 277311 URL: https://svnweb.freebsd.org/changeset/base/277311 Log: Include mca_machdep.h. Modified: head/sys/x86/isa/atpic.c Modified: head/sys/x86/isa/atpic.c ============================================================================== --- head/sys/x86/isa/atpic.c Sun Jan 18 03:08:30 2015 (r277310) +++ head/sys/x86/isa/atpic.c Sun Jan 18 03:43:47 2015 (r277311) @@ -58,6 +58,9 @@ __FBSDID("$FreeBSD$"); #include #endif #include +#ifdef DEV_MCA +#include +#endif #ifdef __amd64__ #define SDT_ATPIC SDT_SYSIGT From owner-svn-src-all@FreeBSD.ORG Sun Jan 18 06:43: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 2545AFF2; Sun, 18 Jan 2015 06:43: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 060D31FB; Sun, 18 Jan 2015 06:43: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 t0I6h9wj038298; Sun, 18 Jan 2015 06:43:09 GMT (envelope-from gonzo@FreeBSD.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0I6h9me038297; Sun, 18 Jan 2015 06:43:09 GMT (envelope-from gonzo@FreeBSD.org) Message-Id: <201501180643.t0I6h9me038297@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: gonzo set sender to gonzo@FreeBSD.org using -f From: Oleksandr Tymoshenko Date: Sun, 18 Jan 2015 06:43:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r277313 - head/sys/arm/ti/am335x X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages 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, 18 Jan 2015 06:43:10 -0000 Author: gonzo Date: Sun Jan 18 06:43:09 2015 New Revision: 277313 URL: https://svnweb.freebsd.org/changeset/base/277313 Log: Fix programming timing parameters to LCDC. Actual value used for HBP, HFP, HSW, VSW is register's programmed value + 1. Modified: head/sys/arm/ti/am335x/am335x_lcd.c Modified: head/sys/arm/ti/am335x/am335x_lcd.c ============================================================================== --- head/sys/arm/ti/am335x/am335x_lcd.c Sun Jan 18 05:31:26 2015 (r277312) +++ head/sys/arm/ti/am335x/am335x_lcd.c Sun Jan 18 06:43:09 2015 (r277313) @@ -433,6 +433,9 @@ am335x_lcd_attach(device_t dev) uint32_t burst_log; int err; size_t dma_size; + uint32_t hbp, hfp, hsw; + uint32_t vbp, vfp, vsw; + uint32_t width, height; sc = device_get_softc(dev); sc->sc_dev = dev; @@ -527,31 +530,42 @@ am335x_lcd_attach(device_t dev) /* Set timing */ timing0 = timing1 = timing2 = 0; + hbp = panel.panel_hbp - 1; + hfp = panel.panel_hfp - 1; + hsw = panel.panel_hsw - 1; + + vbp = panel.panel_vbp; + vfp = panel.panel_vfp; + vsw = panel.panel_vsw - 1; + + height = panel.panel_height - 1; + width = panel.panel_width - 1; + /* Horizontal back porch */ - timing0 |= (panel.panel_hbp & 0xff) << RASTER_TIMING_0_HBP_SHIFT; - timing2 |= ((panel.panel_hbp >> 8) & 3) << RASTER_TIMING_2_HBPHI_SHIFT; + timing0 |= (hbp & 0xff) << RASTER_TIMING_0_HBP_SHIFT; + timing2 |= ((hbp >> 8) & 3) << RASTER_TIMING_2_HBPHI_SHIFT; /* Horizontal front porch */ - timing0 |= (panel.panel_hfp & 0xff) << RASTER_TIMING_0_HFP_SHIFT; - timing2 |= ((panel.panel_hfp >> 8) & 3) << RASTER_TIMING_2_HFPHI_SHIFT; + timing0 |= (hfp & 0xff) << RASTER_TIMING_0_HFP_SHIFT; + timing2 |= ((hfp >> 8) & 3) << RASTER_TIMING_2_HFPHI_SHIFT; /* Horizontal sync width */ - timing0 |= (panel.panel_hsw & 0x3f) << RASTER_TIMING_0_HSW_SHIFT; - timing2 |= ((panel.panel_hsw >> 6) & 0xf) << RASTER_TIMING_2_HSWHI_SHIFT; + timing0 |= (hsw & 0x3f) << RASTER_TIMING_0_HSW_SHIFT; + timing2 |= ((hsw >> 6) & 0xf) << RASTER_TIMING_2_HSWHI_SHIFT; /* Vertical back porch, front porch, sync width */ - timing1 |= (panel.panel_vbp & 0xff) << RASTER_TIMING_1_VBP_SHIFT; - timing1 |= (panel.panel_vfp & 0xff) << RASTER_TIMING_1_VFP_SHIFT; - timing1 |= (panel.panel_vsw & 0x3f) << RASTER_TIMING_1_VSW_SHIFT; + timing1 |= (vbp & 0xff) << RASTER_TIMING_1_VBP_SHIFT; + timing1 |= (vfp & 0xff) << RASTER_TIMING_1_VFP_SHIFT; + timing1 |= (vsw & 0x3f) << RASTER_TIMING_1_VSW_SHIFT; /* Pixels per line */ - timing0 |= (((panel.panel_width - 1) >> 10) & 1) + timing0 |= ((width >> 10) & 1) << RASTER_TIMING_0_PPLMSB_SHIFT; - timing0 |= (((panel.panel_width - 1) >> 4) & 0x3f) + timing0 |= ((width >> 4) & 0x3f) << RASTER_TIMING_0_PPLLSB_SHIFT; /* Lines per panel */ - timing1 |= ((panel.panel_height - 1) & 0x3ff) + timing1 |= (height & 0x3ff) << RASTER_TIMING_1_LPP_SHIFT; - timing2 |= (((panel.panel_height - 1) >> 10 ) & 1) + timing2 |= ((height >> 10 ) & 1) << RASTER_TIMING_2_LPP_B10_SHIFT; /* clock signal settings */ From owner-svn-src-all@FreeBSD.ORG Sun Jan 18 07: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 D74BB34A; Sun, 18 Jan 2015 07:08: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 C302A3C8; Sun, 18 Jan 2015 07:08: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 t0I787iL048064; Sun, 18 Jan 2015 07:08:07 GMT (envelope-from jhibbits@FreeBSD.org) Received: (from jhibbits@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0I787OL048063; Sun, 18 Jan 2015 07:08:07 GMT (envelope-from jhibbits@FreeBSD.org) Message-Id: <201501180708.t0I787OL048063@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: jhibbits set sender to jhibbits@FreeBSD.org using -f From: Justin Hibbits Date: Sun, 18 Jan 2015 07:08:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r277314 - head/sys/dev/iicbus X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages 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, 18 Jan 2015 07:08:08 -0000 Author: jhibbits Date: Sun Jan 18 07:08:06 2015 New Revision: 277314 URL: https://svnweb.freebsd.org/changeset/base/277314 Log: Use proper signed types. The ADT746x uses signed 8-bit numbers for the temperature. MFC after: 2 weeks Modified: head/sys/dev/iicbus/adt746x.c Modified: head/sys/dev/iicbus/adt746x.c ============================================================================== --- head/sys/dev/iicbus/adt746x.c Sun Jan 18 06:43:09 2015 (r277313) +++ head/sys/dev/iicbus/adt746x.c Sun Jan 18 07:08:06 2015 (r277314) @@ -539,9 +539,10 @@ static int adt746x_sensor_read(struct adt746x_sensor *sens) { struct adt746x_softc *sc; - uint16_t tmp = 0; + int tmp = 0; uint16_t val; - uint8_t temp, data[1], data1[1]; + uint8_t data[1], data1[1]; + int8_t temp; sc = device_get_softc(sens->dev); if (sens->type != ADT746X_SENSOR_SPEED) { From owner-svn-src-all@FreeBSD.ORG Sun Jan 18 09:47: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 584B8423; Sun, 18 Jan 2015 09:47:46 +0000 (UTC) Received: from mail.turbocat.net (mail.turbocat.net [IPv6:2a01:4f8:d16:4514::2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 14A0D2A2; Sun, 18 Jan 2015 09:47:46 +0000 (UTC) Received: from laptop015.home.selasky.org (cm-176.74.213.204.customer.telag.net [176.74.213.204]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.turbocat.net (Postfix) with ESMTPSA id D711B1FE023; Sun, 18 Jan 2015 10:47:43 +0100 (CET) Message-ID: <54BB8170.7000106@selasky.org> Date: Sun, 18 Jan 2015 10:48:32 +0100 From: Hans Petter Selasky User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:31.0) Gecko/20100101 Thunderbird/31.3.0 MIME-Version: 1.0 To: "Bjoern A. Zeeb" Subject: Re: svn commit: r277302 - in head/sys: conf modules modules/ibcore modules/ipoib modules/linuxapi modules/mlx4 modules/mlx4ib ofed/drivers/infiniband/core ofed/drivers/infiniband/hw/mlx4 ofed/drivers/i... References: <201501171636.t0HGadsf039591@svn.freebsd.org> <47909EEB-D9BF-43A1-B485-43680A86E170@FreeBSD.org> In-Reply-To: <47909EEB-D9BF-43A1-B485-43680A86E170@FreeBSD.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages 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, 18 Jan 2015 09:47:46 -0000 On 01/18/15 02:33, Bjoern A. Zeeb wrote: > >> On 17 Jan 2015, at 16:36 , Hans Petter Selasky wrote: >> >> Author: hselasky >> Date: Sat Jan 17 16:36:39 2015 >> New Revision: 277302 >> URL: https://svnweb.freebsd.org/changeset/base/277302 >> >> Log: >> Start importing the basic OFED linux compatibility layer changes made >> by dumbbell@ to be able to compile this layer as a dependency module. >> Clean up some Makefiles and remove the no longer used OFED define. > > Build files, NOTES files, .. still referenced the “OFED” option. I put it back in for now to unbreak LINT builds. Please cleanup properly. Can always put it into reviews and find someone to make sure you caught all places. > OK, then I need to do a universe build simply. --HPS From owner-svn-src-all@FreeBSD.ORG Sun Jan 18 09:49: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 2E533565; Sun, 18 Jan 2015 09:49: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 0DABF2B5; Sun, 18 Jan 2015 09:49: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 t0I9nXgs023055; Sun, 18 Jan 2015 09:49:33 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0I9nXHl023048; Sun, 18 Jan 2015 09:49:33 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201501180949.t0I9nXHl023048@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Sun, 18 Jan 2015 09:49: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: r277315 - stable/10/sys/x86/iommu X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages 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, 18 Jan 2015 09:49:34 -0000 Author: kib Date: Sun Jan 18 09:49:32 2015 New Revision: 277315 URL: https://svnweb.freebsd.org/changeset/base/277315 Log: MFC r277023: Avoid excessive flushing and do missed neccessary flushing in the IOMMU page table update code. Modified: stable/10/sys/x86/iommu/intel_ctx.c stable/10/sys/x86/iommu/intel_dmar.h stable/10/sys/x86/iommu/intel_idpgtbl.c stable/10/sys/x86/iommu/intel_utils.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/x86/iommu/intel_ctx.c ============================================================================== --- stable/10/sys/x86/iommu/intel_ctx.c Sun Jan 18 07:08:06 2015 (r277314) +++ stable/10/sys/x86/iommu/intel_ctx.c Sun Jan 18 09:49:32 2015 (r277315) @@ -96,7 +96,8 @@ dmar_ensure_ctx_page(struct dmar_unit *d re += bus; dmar_pte_store(&re->r1, DMAR_ROOT_R1_P | (DMAR_ROOT_R1_CTP_MASK & VM_PAGE_TO_PHYS(ctxm))); - dmar_unmap_pgtbl(sf, DMAR_IS_COHERENT(dmar)); + dmar_flush_root_to_ram(dmar, re); + dmar_unmap_pgtbl(sf); TD_PINNED_ASSERT; } @@ -153,6 +154,7 @@ ctx_id_entry_init(struct dmar_ctx *ctx, (DMAR_CTX1_ASR_MASK & VM_PAGE_TO_PHYS(ctx_root)) | DMAR_CTX1_P); } + dmar_flush_ctx_to_ram(unit, ctxp); } static int @@ -358,7 +360,7 @@ dmar_get_ctx(struct dmar_unit *dmar, dev ctx->domain = alloc_unrl(dmar->domids); if (ctx->domain == -1) { DMAR_UNLOCK(dmar); - dmar_unmap_pgtbl(sf, true); + dmar_unmap_pgtbl(sf); dmar_ctx_dtr(ctx, true, true); TD_PINNED_ASSERT; return (NULL); @@ -383,7 +385,7 @@ dmar_get_ctx(struct dmar_unit *dmar, dev } else { dmar_ctx_dtr(ctx1, true, true); } - dmar_unmap_pgtbl(sf, DMAR_IS_COHERENT(dmar)); + dmar_unmap_pgtbl(sf); } ctx->refs++; if ((ctx->flags & DMAR_CTX_RMRR) != 0) @@ -474,7 +476,7 @@ dmar_free_ctx_locked(struct dmar_unit *d if (ctx->refs > 1) { ctx->refs--; DMAR_UNLOCK(dmar); - dmar_unmap_pgtbl(sf, DMAR_IS_COHERENT(dmar)); + dmar_unmap_pgtbl(sf); TD_PINNED_ASSERT; return; } @@ -490,6 +492,7 @@ dmar_free_ctx_locked(struct dmar_unit *d */ dmar_pte_clear(&ctxp->ctx1); ctxp->ctx2 = 0; + dmar_flush_ctx_to_ram(dmar, ctxp); dmar_inv_ctx_glob(dmar); if ((dmar->hw_ecap & DMAR_ECAP_DI) != 0) { if (dmar->qi_enabled) @@ -507,7 +510,7 @@ dmar_free_ctx_locked(struct dmar_unit *d taskqueue_drain(dmar->delayed_taskqueue, &ctx->unload_task); KASSERT(TAILQ_EMPTY(&ctx->unload_entries), ("unfinished unloads %p", ctx)); - dmar_unmap_pgtbl(sf, DMAR_IS_COHERENT(dmar)); + dmar_unmap_pgtbl(sf); free_unr(dmar->domids, ctx->domain); dmar_ctx_dtr(ctx, true, true); TD_PINNED_ASSERT; Modified: stable/10/sys/x86/iommu/intel_dmar.h ============================================================================== --- stable/10/sys/x86/iommu/intel_dmar.h Sun Jan 18 07:08:06 2015 (r277314) +++ stable/10/sys/x86/iommu/intel_dmar.h Sun Jan 18 09:49:32 2015 (r277315) @@ -230,11 +230,14 @@ struct vm_page *dmar_pgalloc(vm_object_t void dmar_pgfree(vm_object_t obj, vm_pindex_t idx, int flags); void *dmar_map_pgtbl(vm_object_t obj, vm_pindex_t idx, int flags, struct sf_buf **sf); -void dmar_unmap_pgtbl(struct sf_buf *sf, bool coherent); +void dmar_unmap_pgtbl(struct sf_buf *sf); int dmar_load_root_entry_ptr(struct dmar_unit *unit); int dmar_inv_ctx_glob(struct dmar_unit *unit); int dmar_inv_iotlb_glob(struct dmar_unit *unit); int dmar_flush_write_bufs(struct dmar_unit *unit); +void dmar_flush_pte_to_ram(struct dmar_unit *unit, dmar_pte_t *dst); +void dmar_flush_ctx_to_ram(struct dmar_unit *unit, dmar_ctx_entry_t *dst); +void dmar_flush_root_to_ram(struct dmar_unit *unit, dmar_root_entry_t *dst); int dmar_enable_translation(struct dmar_unit *unit); int dmar_disable_translation(struct dmar_unit *unit); bool dmar_barrier_enter(struct dmar_unit *dmar, u_int barrier_id); Modified: stable/10/sys/x86/iommu/intel_idpgtbl.c ============================================================================== --- stable/10/sys/x86/iommu/intel_idpgtbl.c Sun Jan 18 07:08:06 2015 (r277314) +++ stable/10/sys/x86/iommu/intel_idpgtbl.c Sun Jan 18 09:49:32 2015 (r277315) @@ -146,7 +146,7 @@ ctx_idmap_nextlvl(struct idpgtbl *tbl, i } } /* ctx_get_idmap_pgtbl flushes CPU cache if needed. */ - dmar_unmap_pgtbl(sf, true); + dmar_unmap_pgtbl(sf); VM_OBJECT_WLOCK(tbl->pgtbl_obj); } @@ -361,7 +361,7 @@ ctx_pgtbl_map_pte(struct dmar_ctx *ctx, pte = (dmar_pte_t *)sf_buf_kva(*sf); } else { if (*sf != NULL) - dmar_unmap_pgtbl(*sf, DMAR_IS_COHERENT(ctx->dmar)); + dmar_unmap_pgtbl(*sf); *idxp = idx; retry: pte = dmar_map_pgtbl(ctx->pgtbl_obj, idx, flags, sf); @@ -397,9 +397,10 @@ retry: } dmar_pte_store(&ptep->pte, DMAR_PTE_R | DMAR_PTE_W | VM_PAGE_TO_PHYS(m)); + dmar_flush_pte_to_ram(ctx->dmar, ptep); sf_buf_page(sfp)->wire_count += 1; m->wire_count--; - dmar_unmap_pgtbl(sfp, DMAR_IS_COHERENT(ctx->dmar)); + dmar_unmap_pgtbl(sfp); /* Only executed once. */ goto retry; } @@ -467,20 +468,19 @@ ctx_map_buf_locked(struct dmar_ctx *ctx, if (pte == NULL) { KASSERT((flags & DMAR_PGF_WAITOK) == 0, ("failed waitable pte alloc %p", ctx)); - if (sf != NULL) { - dmar_unmap_pgtbl(sf, - DMAR_IS_COHERENT(ctx->dmar)); - } + if (sf != NULL) + dmar_unmap_pgtbl(sf); ctx_unmap_buf_locked(ctx, base1, base - base1, flags); TD_PINNED_ASSERT; return (ENOMEM); } dmar_pte_store(&pte->pte, VM_PAGE_TO_PHYS(ma[pi]) | pflags | (superpage ? DMAR_PTE_SP : 0)); + dmar_flush_pte_to_ram(ctx->dmar, pte); sf_buf_page(sf)->wire_count += 1; } if (sf != NULL) - dmar_unmap_pgtbl(sf, DMAR_IS_COHERENT(ctx->dmar)); + dmar_unmap_pgtbl(sf); TD_PINNED_ASSERT; return (0); } @@ -567,9 +567,10 @@ ctx_unmap_clear_pte(struct dmar_ctx *ctx vm_page_t m; dmar_pte_clear(&pte->pte); + dmar_flush_pte_to_ram(ctx->dmar, pte); m = sf_buf_page(*sf); if (free_sf) { - dmar_unmap_pgtbl(*sf, DMAR_IS_COHERENT(ctx->dmar)); + dmar_unmap_pgtbl(*sf); *sf = NULL; } m->wire_count--; @@ -651,7 +652,7 @@ ctx_unmap_buf_locked(struct dmar_ctx *ct (uintmax_t)base, (uintmax_t)size, (uintmax_t)pg_sz)); } if (sf != NULL) - dmar_unmap_pgtbl(sf, DMAR_IS_COHERENT(ctx->dmar)); + dmar_unmap_pgtbl(sf); /* * See 11.1 Write Buffer Flushing for an explanation why RWBF * can be ignored there. Modified: stable/10/sys/x86/iommu/intel_utils.c ============================================================================== --- stable/10/sys/x86/iommu/intel_utils.c Sun Jan 18 07:08:06 2015 (r277314) +++ stable/10/sys/x86/iommu/intel_utils.c Sun Jan 18 09:49:32 2015 (r277315) @@ -351,20 +351,46 @@ dmar_map_pgtbl(vm_object_t obj, vm_pinde } void -dmar_unmap_pgtbl(struct sf_buf *sf, bool coherent) +dmar_unmap_pgtbl(struct sf_buf *sf) { - vm_page_t m; - m = sf_buf_page(sf); sf_buf_free(sf); sched_unpin(); +} + +static void +dmar_flush_transl_to_ram(struct dmar_unit *unit, void *dst, size_t sz) +{ + if (DMAR_IS_COHERENT(unit)) + return; /* * If DMAR does not snoop paging structures accesses, flush * CPU cache to memory. */ - if (!coherent) - pmap_invalidate_cache_pages(&m, 1); + pmap_invalidate_cache_range((uintptr_t)dst, (uintptr_t)dst + sz, + TRUE); +} + +void +dmar_flush_pte_to_ram(struct dmar_unit *unit, dmar_pte_t *dst) +{ + + dmar_flush_transl_to_ram(unit, dst, sizeof(*dst)); +} + +void +dmar_flush_ctx_to_ram(struct dmar_unit *unit, dmar_ctx_entry_t *dst) +{ + + dmar_flush_transl_to_ram(unit, dst, sizeof(*dst)); +} + +void +dmar_flush_root_to_ram(struct dmar_unit *unit, dmar_root_entry_t *dst) +{ + + dmar_flush_transl_to_ram(unit, dst, sizeof(*dst)); } /* From owner-svn-src-all@FreeBSD.ORG Sun Jan 18 09:50: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 BC3D4690; Sun, 18 Jan 2015 09:50:04 +0000 (UTC) Received: from mail.turbocat.net (mail.turbocat.net [IPv6:2a01:4f8:d16:4514::2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 786D22BF; Sun, 18 Jan 2015 09:50:04 +0000 (UTC) Received: from laptop015.home.selasky.org (cm-176.74.213.204.customer.telag.net [176.74.213.204]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.turbocat.net (Postfix) with ESMTPSA id 9137A1FE023; Sun, 18 Jan 2015 10:50:02 +0100 (CET) Message-ID: <54BB81FC.3030501@selasky.org> Date: Sun, 18 Jan 2015 10:50:52 +0100 From: Hans Petter Selasky User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:31.0) Gecko/20100101 Thunderbird/31.3.0 MIME-Version: 1.0 To: "Bjoern A. Zeeb" Subject: Re: svn commit: r277302 - in head/sys: conf modules modules/ibcore modules/ipoib modules/linuxapi modules/mlx4 modules/mlx4ib ofed/drivers/infiniband/core ofed/drivers/infiniband/hw/mlx4 ofed/drivers/i... References: <201501171636.t0HGadsf039591@svn.freebsd.org> <47909EEB-D9BF-43A1-B485-43680A86E170@FreeBSD.org> In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages 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, 18 Jan 2015 09:50:04 -0000 On 01/18/15 04:37, Bjoern A. Zeeb wrote: > >> On 18 Jan 2015, at 01:33 , Bjoern A. Zeeb wrote: >> >> >>> On 17 Jan 2015, at 16:36 , Hans Petter Selasky wrote: >>> >>> Author: hselasky >>> Date: Sat Jan 17 16:36:39 2015 >>> New Revision: 277302 >>> URL: https://svnweb.freebsd.org/changeset/base/277302 >>> >>> Log: >>> Start importing the basic OFED linux compatibility layer changes made >>> by dumbbell@ to be able to compile this layer as a dependency module. >>> Clean up some Makefiles and remove the no longer used OFED define. >> >> Build files, NOTES files, .. still referenced the “OFED” option. I put it back in for now to unbreak LINT builds. Please cleanup properly. Can always put it into reviews and find someone to make sure you caught all places. >> > > Ok, never mind: > > /home/baz21/SVN/head-reviews.svn/sys/ofed/include/linux/linux_compat.c:49:10: fatal error: 'linux/kobject.h' file not found > #include > ^ > 1 error generated. I'll fix it. --HPS From owner-svn-src-all@FreeBSD.ORG Sun Jan 18 10:53: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 9CDC495C; Sun, 18 Jan 2015 10: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 87A5FADA; Sun, 18 Jan 2015 10: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 t0IArnrW059397; Sun, 18 Jan 2015 10:53:49 GMT (envelope-from hselasky@FreeBSD.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0IArnjd059396; Sun, 18 Jan 2015 10:53:49 GMT (envelope-from hselasky@FreeBSD.org) Message-Id: <201501181053.t0IArnjd059396@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: hselasky set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky Date: Sun, 18 Jan 2015 10:53:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r277316 - 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.18-1 Precedence: list List-Id: "SVN commit messages 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, 18 Jan 2015 10:53:49 -0000 Author: hselasky Date: Sun Jan 18 10:53:48 2015 New Revision: 277316 URL: https://svnweb.freebsd.org/changeset/base/277316 Log: Extend fixes made in r277308 to fix build of LINT kernels for i386 and amd64. Until further we need some custom C-flags when building the Linux compat API. MFC after: 1 month Sponsored by: Mellanox Technologies Reported by: bz@ Modified: head/sys/conf/files Modified: head/sys/conf/files ============================================================================== --- head/sys/conf/files Sun Jan 18 09:49:32 2015 (r277315) +++ head/sys/conf/files Sun Jan 18 10:53:48 2015 (r277316) @@ -3572,11 +3572,16 @@ nlm/nlm_prot_xdr.c optional nfslockd | nlm/sm_inter_xdr.c optional nfslockd | nfsd # Linux Kernel Compatibility API -ofed/include/linux/linux_kmod.c optional ofed | compat_linuxapi -ofed/include/linux/linux_compat.c optional ofed | compat_linuxapi -ofed/include/linux/linux_pci.c optional ofed | compat_linuxapi -ofed/include/linux/linux_idr.c optional ofed | compat_linuxapi -ofed/include/linux/linux_radix.c optional ofed | compat_linuxapi +ofed/include/linux/linux_kmod.c optional ofed | compat_linuxapi \ + no-depend compile-with "${OFED_C}" +ofed/include/linux/linux_compat.c optional ofed | compat_linuxapi \ + no-depend compile-with "${OFED_C}" +ofed/include/linux/linux_pci.c optional ofed | compat_linuxapi \ + no-depend compile-with "${OFED_C}" +ofed/include/linux/linux_idr.c optional ofed | compat_linuxapi \ + no-depend compile-with "${OFED_C}" +ofed/include/linux/linux_radix.c optional ofed | compat_linuxapi \ + no-depend compile-with "${OFED_C}" # OpenFabrics Enterprise Distribution (Infiniband) ofed/drivers/infiniband/core/addr.c optional ofed \ no-depend \ From owner-svn-src-all@FreeBSD.ORG Sun Jan 18 10:54: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 107B9A99; Sun, 18 Jan 2015 10:54:18 +0000 (UTC) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (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 8C116ADF; Sun, 18 Jan 2015 10:54:17 +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 t0IAsASh080577 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 18 Jan 2015 12:54:10 +0200 (EET) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.9.2 kib.kiev.ua t0IAsASh080577 Received: (from kostik@localhost) by tom.home (8.14.9/8.14.9/Submit) id t0IAsAYd080576; Sun, 18 Jan 2015 12:54:10 +0200 (EET) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Sun, 18 Jan 2015 12:54:10 +0200 From: Konstantin Belousov To: Hans Petter Selasky Subject: Re: svn commit: r277199 - in head/sys: fs/devfs kern Message-ID: <20150118105410.GN42409@kib.kiev.ua> References: <201501142207.t0EM7Dfn041543@svn.freebsd.org> <20150115033109.GM42409@kib.kiev.ua> <54B76F2B.8040106@selasky.org> <20150115093841.GX42409@kib.kiev.ua> <54B79B25.3070707@selasky.org> <20150115115123.GA42409@kib.kiev.ua> <54B7AF2F.3080802@selasky.org> <20150116080332.GE42409@kib.kiev.ua> <54B8D31B.9030805@selasky.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <54B8D31B.9030805@selasky.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.0 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on tom.home Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages 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, 18 Jan 2015 10:54:18 -0000 On Fri, Jan 16, 2015 at 10:00:11AM +0100, Hans Petter Selasky wrote: > Hi Konstantin, > > On 01/16/15 09:03, Konstantin Belousov wrote: > > My opinion is that you should have tried to handle the issue at the driver > > level, instead of making this devfs issue. I.e., if you already have > > cdev node with the correct name, driver should have replaced the private > > data to point to new device. > > I think this way cannot be implemented in a clean way, because of > locking order reversal. And if you try to avoid the LOR you end up with > the race. Chess mate sort of ;-) Let me explain: > > Thread 1: > usb_sx_lock(); > cdev = Look in freelist for existing device(); > else > cdev = make_dev(); > usb_sx_unlock(); > > Thread 2: > usb_sx_lock(); > put cdev on freelist > usb_sx_unlock(); > > Thread 3: > usb_sx_lock(); > cdev = remove first entry in freelist > usb_sx_unlock(); > > /* > * XXX because USB needs to call destroy_dev() unlocked we > * are racing with Thread 1 again > */ > destroy_dev(cdev); I do not understand the 'freelist' part. You have some usb (or whatever other kind) device, which is represented by some data structure. This data structure references cdev. In reverse, cdev points to this data structure by si_drv1 or similar driver-owned member of struct cdev. The structures naming usb devices have some mapping to/from usb bus addresses. When device is destroyed or created due to external plug event, there is some mechanism that ensures mapping consistence. It could be lock, it could be single-threaded process which discover the bus, or something else, I do not know. While the structure notes that device with some address goes out and comes in, it can look up the corresponding cdev and just change the si_drv1 pointer to point to the new device. I find it very strange that you need sleepless operation which can _both_ destroy and create cdev. At least one operation of creation or destruction must sleep, at least in the current devfs design. It could be made sleepless, by making VFS visible part even less connected to the cdev part, but this is not how it (can) currently work. > > > > > This would also close a window where /dev node is non-existent or operate > > erronously. > > I'm not saying I plan so, but I think "cdevs" at some point need to > understand mutexes and locks. That means like with other API's in the > kernel we can associate a lock with the "cdev", and this lock is then > used to ensure an atomic shutdown of the system in a non-blocking > fashion. In my past experience multithreaded APIs should be high level > implemented like this: > > NON-BLOCKING methods: > lock(); ** > xxx_start(); > xxx_stop(); > unlock(); > > BLOCKING methods: > setup(); // init > unsetup(); // drain > > Any callbacks should always be called locked ** > > In devfs there was no non-blocking stop before I added the delist_dev() > function. > > > > > You do not understand my point. > > > > I object against imposing one additional global reference on all cdevs > > just to cope with the delist hack. See the patch at the end of the message. > > It's fine by me. > > > > WRT destroy_dev_sched_cb() calling delist_dev(), even after calling > > delist_dev(), the node still exists in the /dev. It is only removed > > after populate loop is run sometime later. dev_sched() KPI is inheritly > > racy, drivers must handle the races for other reasons. > > The populate loop is all running under the dev_lock() from what I can > see and make_dev() is also keeping the same lock when inserting and > removing new cdevs. The populate loop should always give a consistent No, populate loop is not run under dev_mtx. It would not be able to allocate memory, even in M_NOWAIT fashion. The dev_mtx is after the vm and vnode locks. Only iteration over the cdevp_list is protected by dev_mtx, which is dropped right after something which require an action, is found on the list. Populate() needs some way to avoid reading inconsistent data from the cdev layer, but there is not guarantee that we are always up to date. > view of the character devices available, and I don't see how "cdev" > structures without the CDP_ACTIVE flag can appear with recently created > ones, even if the name is the same. It cannot simply because it is not synchronized with the device creation/destruction. > > > > >> > >>> Entry can be random, since after the populate loop is ran, your code in > >>> other thread could start and create duplicate entry. There is a window > >>> in the lookup where both directory vnode lock and mount point sx locks > >>> are dropped. So running the populate does not guarantee anything. > >> > >> If there is such a race, it is already there! My patch changes nothing > >> in that area: > >> > >> Thread1: > >> Calls destroy_dev() and clears CDP_ACTIVE, after dev_unlock() it goes > >> waiting for some refs for xxx milliseconds. > >> Thread2: > >> Tries to create create a new character device having the same name like > >> the one in thread1. Device name duplication check is missed because > >> CDP_ACTIVE is cleared. Still thread1 is waiting. > >> Thread3: > >> Tries to open character device created by thread2 while thread1 is still > >> waiting for some ref held by a userspace app to go away. > >> > >> This can happen already before my patches! What do you think? > > Possibly. > > > > > >> At what level do you mean duplicate names, I don't get this fully? At > >> the directory level (DE nodes)? Or inside the list of character devices > >> (LIST_XXX)? > > It does not matter, dup at either one directory level, or dup of full > > names in the global list are equivalent (bad) things. > > Like I write above I don't see where the problem is. At the cdev level, > we are protecting the cdev's LIST with dev_lock() and only one entry > will exist having CDP_ACTIVE bit set per unique cdev name and path. Else > we will hit a panic in make_dev() and friends. > > In the directory entry level the populate loop will also ensure a > consistent view, and hence the cdev's LIST is consistent, the view > presented to userspace will also be consistent. Lookup (or any other VFS-level code) is not protected by dev_mtx, it is only dm lock which ensures that populate loop is not run in parallel, modifying direntries. > > That system functions can still call into the dangling read/write/ioctl > functions is another story, and that is why I tell, that in order to > simplify this teardown, we possibly should associate a client selectable > lock with each CDEV, for teardown purposes. Like done for several years > in the callout and USB APIs and possibly many other places. There is d_purge method which provides the tear-down semantic for drivers which needs it. Only tty uses the method AFAIK. Devfs ensures that no client code is active when cdev is removed for real. > > > > >> > >>> Let me summarize: > >>> - the extra reference on arbitrary cdev should be eliminated. The > >>> delist_dev_locked() may add the ref and set some CDP_ flag to > >>> indicate to destroy_dev() that it should do dev_rel(). > >> > >> It is possible to do this. I thought about this before doing my patch, > >> but decided to try to avoid adding yet another cdev flag. > >> > >>> - the existence of the duplicated entries should be either eliminated > >>> (I am not sure it is possible with your code), or we must ensure > >>> that only one name with CDP_ACTIVE flag set and given name exists. > >>> Then, all lookup code must be audited to take CDP_ACTIVE into account > >>> when accessing names. I see at least devfs_find() and devfs_mknod() > >>> which must be changed. I did not performed full audit. > >> > >> I will check this path out aswell. > >> > > > > It seems it is simpler for me to try to clean up after the commit. > > The patch was only lightly tested. I post the patch for discussion, > > not for you to committing it. I will expedite the change into HEAD > > after the consensus on it is made and adequate testing is performed. > > I don't see any problems about your patch, except it adds a bit more > code to the kernel. From owner-svn-src-all@FreeBSD.ORG Sun Jan 18 10:54: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 12E36BCF; Sun, 18 Jan 2015 10:54:29 +0000 (UTC) Received: from mail.turbocat.net (mail.turbocat.net [IPv6:2a01:4f8:d16:4514::2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id C58E4AE1; Sun, 18 Jan 2015 10:54:28 +0000 (UTC) Received: from laptop015.home.selasky.org (cm-176.74.213.204.customer.telag.net [176.74.213.204]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.turbocat.net (Postfix) with ESMTPSA id EFEF21FE023; Sun, 18 Jan 2015 11:54:26 +0100 (CET) Message-ID: <54BB9114.9010200@selasky.org> Date: Sun, 18 Jan 2015 11:55:16 +0100 From: Hans Petter Selasky User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:31.0) Gecko/20100101 Thunderbird/31.3.0 MIME-Version: 1.0 To: "Bjoern A. Zeeb" Subject: Re: svn commit: r277302 - in head/sys: conf modules modules/ibcore modules/ipoib modules/linuxapi modules/mlx4 modules/mlx4ib ofed/drivers/infiniband/core ofed/drivers/infiniband/hw/mlx4 ofed/drivers/i... References: <201501171636.t0HGadsf039591@svn.freebsd.org> <47909EEB-D9BF-43A1-B485-43680A86E170@FreeBSD.org> <54BB81FC.3030501@selasky.org> In-Reply-To: <54BB81FC.3030501@selasky.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages 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, 18 Jan 2015 10:54:29 -0000 See r277316. Thank you! --HPS From owner-svn-src-all@FreeBSD.ORG Sun Jan 18 11:07: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 25332E60; Sun, 18 Jan 2015 11:07:40 +0000 (UTC) Received: from mail.turbocat.net (mail.turbocat.net [IPv6:2a01:4f8:d16:4514::2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id BF076BDE; Sun, 18 Jan 2015 11:07:39 +0000 (UTC) Received: from laptop015.home.selasky.org (cm-176.74.213.204.customer.telag.net [176.74.213.204]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.turbocat.net (Postfix) with ESMTPSA id 3E96B1FE023; Sun, 18 Jan 2015 12:07:36 +0100 (CET) Message-ID: <54BB942A.5070200@selasky.org> Date: Sun, 18 Jan 2015 12:08:26 +0100 From: Hans Petter Selasky User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:31.0) Gecko/20100101 Thunderbird/31.3.0 MIME-Version: 1.0 To: Konstantin Belousov Subject: Re: svn commit: r277199 - in head/sys: fs/devfs kern References: <201501142207.t0EM7Dfn041543@svn.freebsd.org> <20150115033109.GM42409@kib.kiev.ua> <54B76F2B.8040106@selasky.org> <20150115093841.GX42409@kib.kiev.ua> <54B79B25.3070707@selasky.org> <20150115115123.GA42409@kib.kiev.ua> <54B7AF2F.3080802@selasky.org> <20150116080332.GE42409@kib.kiev.ua> <54B8D31B.9030805@selasky.org> <20150118105410.GN42409@kib.kiev.ua> In-Reply-To: <20150118105410.GN42409@kib.kiev.ua> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages 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, 18 Jan 2015 11:07:40 -0000 Hi Konstantin, On 01/18/15 11:54, Konstantin Belousov wrote: > On Fri, Jan 16, 2015 at 10:00:11AM +0100, Hans Petter Selasky wrote: >> Hi Konstantin, >> >> On 01/16/15 09:03, Konstantin Belousov wrote: >>> My opinion is that you should have tried to handle the issue at the driver >>> level, instead of making this devfs issue. I.e., if you already have >>> cdev node with the correct name, driver should have replaced the private >>> data to point to new device. >> >> I think this way cannot be implemented in a clean way, because of >> locking order reversal. And if you try to avoid the LOR you end up with >> the race. Chess mate sort of ;-) Let me explain: >> >> Thread 1: >> usb_sx_lock(); >> cdev = Look in freelist for existing device(); >> else >> cdev = make_dev(); >> usb_sx_unlock(); >> >> Thread 2: >> usb_sx_lock(); >> put cdev on freelist >> usb_sx_unlock(); >> >> Thread 3: >> usb_sx_lock(); >> cdev = remove first entry in freelist >> usb_sx_unlock(); >> >> /* >> * XXX because USB needs to call destroy_dev() unlocked we >> * are racing with Thread 1 again >> */ >> destroy_dev(cdev); > I do not understand the 'freelist' part. > > You have some usb (or whatever other kind) device, which is represented by > some data structure. This data structure references cdev. In reverse, > cdev points to this data structure by si_drv1 or similar driver-owned > member of struct cdev. > > The structures naming usb devices have some mapping to/from usb bus addresses. > When device is destroyed or created due to external plug event, there is > some mechanism that ensures mapping consistence. It could be lock, it > could be single-threaded process which discover the bus, or something > else, I do not know. > > While the structure notes that device with some address goes out and comes > in, it can look up the corresponding cdev and just change the si_drv1 pointer > to point to the new device. What about events for "devd" that a new character devices is present in the system or being destroyed for user-space applications? > > I find it very strange that you need sleepless operation which can > _both_ destroy and create cdev. At least one operation of creation or > destruction must sleep, at least in the current devfs design. It could > be made sleepless, by making VFS visible part even less connected to the > cdev part, but this is not how it (can) currently work. I think it would be good practice that all resources needed for creating a character device can be allocated prior to registration. That means we first should allocate all resources needed, but not register as a single function. For example: Once make_dev() has returned, we can get an "d_open" callback. But "si_drv1/2" is always set by drivers _after_ that "make_dev()" has returned! This causes a race we could simply avoid by splitting the make_dev() like I suggest. Instead of putting more logic and code inside the drivers to handle the race! >> >>> >>> This would also close a window where /dev node is non-existent or operate >>> erronously. >> >> I'm not saying I plan so, but I think "cdevs" at some point need to >> understand mutexes and locks. That means like with other API's in the >> kernel we can associate a lock with the "cdev", and this lock is then >> used to ensure an atomic shutdown of the system in a non-blocking >> fashion. In my past experience multithreaded APIs should be high level >> implemented like this: >> >> NON-BLOCKING methods: >> lock(); ** >> xxx_start(); >> xxx_stop(); >> unlock(); >> >> BLOCKING methods: >> setup(); // init >> unsetup(); // drain >> >> Any callbacks should always be called locked ** >> >> In devfs there was no non-blocking stop before I added the delist_dev() >> function. >> >>> >>> You do not understand my point. >>> >>> I object against imposing one additional global reference on all cdevs >>> just to cope with the delist hack. See the patch at the end of the message. >> >> It's fine by me. >>> >>> WRT destroy_dev_sched_cb() calling delist_dev(), even after calling >>> delist_dev(), the node still exists in the /dev. It is only removed >>> after populate loop is run sometime later. dev_sched() KPI is inheritly >>> racy, drivers must handle the races for other reasons. >> >> The populate loop is all running under the dev_lock() from what I can >> see and make_dev() is also keeping the same lock when inserting and >> removing new cdevs. The populate loop should always give a consistent > No, populate loop is not run under dev_mtx. Are you sure: > static int > devfs_populate_loop(struct devfs_mount *dm, int cleanup) > { > struct cdev_priv *cdp; > struct devfs_dirent *de; > struct devfs_dirent *dd, *dt; > struct cdev *pdev; > int de_flags, depth, j; > char *q, *s; > > sx_assert(&dm->dm_lock, SX_XLOCKED); > dev_lock(); ^^^^ what is this ? > TAILQ_FOREACH(cdp, &cdevp_list, cdp_list) { > It would not be able to > allocate memory, even in M_NOWAIT fashion. The dev_mtx is after the > vm and vnode locks. Only iteration over the cdevp_list is protected by > dev_mtx, which is dropped right after something which require an > action, is found on the list. Populate() needs some way to avoid > reading inconsistent data from the cdev layer, but there is not > guarantee that we are always up to date. > >> view of the character devices available, and I don't see how "cdev" >> structures without the CDP_ACTIVE flag can appear with recently created >> ones, even if the name is the same. > It cannot simply because it is not synchronized with the device > creation/destruction. > Lookup (or any other VFS-level code) is not protected by dev_mtx, it > is only dm lock which ensures that populate loop is not run in parallel, > modifying direntries. See comment above. > >> >> That system functions can still call into the dangling read/write/ioctl >> functions is another story, and that is why I tell, that in order to >> simplify this teardown, we possibly should associate a client selectable >> lock with each CDEV, for teardown purposes. Like done for several years >> in the callout and USB APIs and possibly many other places. > There is d_purge method which provides the tear-down semantic for > drivers which needs it. Only tty uses the method AFAIK. > > Devfs ensures that no client code is active when cdev is removed for real. --HPS From owner-svn-src-all@FreeBSD.ORG Sun Jan 18 11:32: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 88B40514; Sun, 18 Jan 2015 11:32:01 +0000 (UTC) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (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 2872EE4F; Sun, 18 Jan 2015 11:32:00 +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 t0IBVprB089472 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 18 Jan 2015 13:31:51 +0200 (EET) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.9.2 kib.kiev.ua t0IBVprB089472 Received: (from kostik@localhost) by tom.home (8.14.9/8.14.9/Submit) id t0IBVp81089471; Sun, 18 Jan 2015 13:31:51 +0200 (EET) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Sun, 18 Jan 2015 13:31:51 +0200 From: Konstantin Belousov To: Hans Petter Selasky Subject: Re: svn commit: r277199 - in head/sys: fs/devfs kern Message-ID: <20150118113150.GQ42409@kib.kiev.ua> References: <20150115033109.GM42409@kib.kiev.ua> <54B76F2B.8040106@selasky.org> <20150115093841.GX42409@kib.kiev.ua> <54B79B25.3070707@selasky.org> <20150115115123.GA42409@kib.kiev.ua> <54B7AF2F.3080802@selasky.org> <20150116080332.GE42409@kib.kiev.ua> <54B8D31B.9030805@selasky.org> <20150118105410.GN42409@kib.kiev.ua> <54BB942A.5070200@selasky.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <54BB942A.5070200@selasky.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.0 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on tom.home Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages 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, 18 Jan 2015 11:32:01 -0000 On Sun, Jan 18, 2015 at 12:08:26PM +0100, Hans Petter Selasky wrote: > Hi Konstantin, > > On 01/18/15 11:54, Konstantin Belousov wrote: > > On Fri, Jan 16, 2015 at 10:00:11AM +0100, Hans Petter Selasky wrote: > >> Hi Konstantin, > >> > >> On 01/16/15 09:03, Konstantin Belousov wrote: > >>> My opinion is that you should have tried to handle the issue at the driver > >>> level, instead of making this devfs issue. I.e., if you already have > >>> cdev node with the correct name, driver should have replaced the private > >>> data to point to new device. > >> > >> I think this way cannot be implemented in a clean way, because of > >> locking order reversal. And if you try to avoid the LOR you end up with > >> the race. Chess mate sort of ;-) Let me explain: > >> > >> Thread 1: > >> usb_sx_lock(); > >> cdev = Look in freelist for existing device(); > >> else > >> cdev = make_dev(); > >> usb_sx_unlock(); > >> > >> Thread 2: > >> usb_sx_lock(); > >> put cdev on freelist > >> usb_sx_unlock(); > >> > >> Thread 3: > >> usb_sx_lock(); > >> cdev = remove first entry in freelist > >> usb_sx_unlock(); > >> > >> /* > >> * XXX because USB needs to call destroy_dev() unlocked we > >> * are racing with Thread 1 again > >> */ > >> destroy_dev(cdev); > > I do not understand the 'freelist' part. > > > > You have some usb (or whatever other kind) device, which is represented by > > some data structure. This data structure references cdev. In reverse, > > cdev points to this data structure by si_drv1 or similar driver-owned > > member of struct cdev. > > > > The structures naming usb devices have some mapping to/from usb bus addresses. > > When device is destroyed or created due to external plug event, there is > > some mechanism that ensures mapping consistence. It could be lock, it > > could be single-threaded process which discover the bus, or something > > else, I do not know. > > > > While the structure notes that device with some address goes out and comes > > in, it can look up the corresponding cdev and just change the si_drv1 pointer > > to point to the new device. > > What about events for "devd" that a new character devices is present in > the system or being destroyed for user-space applications? It is up to the driver to decide. If wanted, it could post the pair of destroy/create itself (e.g., if there is some state which require the userspace to reset), or it could decide not to. The later is reasonable if the destroy/create is believed to be caused by a glitch rather than the actual replug. > > > > > I find it very strange that you need sleepless operation which can > > _both_ destroy and create cdev. At least one operation of creation or > > destruction must sleep, at least in the current devfs design. It could > > be made sleepless, by making VFS visible part even less connected to the > > cdev part, but this is not how it (can) currently work. > > I think it would be good practice that all resources needed for creating > a character device can be allocated prior to registration. That means we > first should allocate all resources needed, but not register as a single > function. > > For example: > > Once make_dev() has returned, we can get an "d_open" callback. But > "si_drv1/2" is always set by drivers _after_ that "make_dev()" has > returned! This causes a race we could simply avoid by splitting the > make_dev() like I suggest. Instead of putting more logic and code inside > the drivers to handle the race! I wanted to tunnel the si_drv values through the make_dev(). I.e. there could appear yet another variant of make_dev() which takes the initialization parameters for the si_* driver vars. I just did not have time/motivation to do the pass. > > >> > >>> > >>> This would also close a window where /dev node is non-existent or operate > >>> erronously. > >> > >> I'm not saying I plan so, but I think "cdevs" at some point need to > >> understand mutexes and locks. That means like with other API's in the > >> kernel we can associate a lock with the "cdev", and this lock is then > >> used to ensure an atomic shutdown of the system in a non-blocking > >> fashion. In my past experience multithreaded APIs should be high level > >> implemented like this: > >> > >> NON-BLOCKING methods: > >> lock(); ** > >> xxx_start(); > >> xxx_stop(); > >> unlock(); > >> > >> BLOCKING methods: > >> setup(); // init > >> unsetup(); // drain > >> > >> Any callbacks should always be called locked ** > >> > >> In devfs there was no non-blocking stop before I added the delist_dev() > >> function. > >> > >>> > >>> You do not understand my point. > >>> > >>> I object against imposing one additional global reference on all cdevs > >>> just to cope with the delist hack. See the patch at the end of the message. > >> > >> It's fine by me. > >>> > >>> WRT destroy_dev_sched_cb() calling delist_dev(), even after calling > >>> delist_dev(), the node still exists in the /dev. It is only removed > >>> after populate loop is run sometime later. dev_sched() KPI is inheritly > >>> racy, drivers must handle the races for other reasons. > >> > >> The populate loop is all running under the dev_lock() from what I can > >> see and make_dev() is also keeping the same lock when inserting and > >> removing new cdevs. The populate loop should always give a consistent > > No, populate loop is not run under dev_mtx. > > Are you sure: Yes, I am sure. I explained it in the next sentences which you break from the first one in the citation. > > > static int > > devfs_populate_loop(struct devfs_mount *dm, int cleanup) > > { > > struct cdev_priv *cdp; > > struct devfs_dirent *de; > > struct devfs_dirent *dd, *dt; > > struct cdev *pdev; > > int de_flags, depth, j; > > char *q, *s; > > > > sx_assert(&dm->dm_lock, SX_XLOCKED); > > dev_lock(); > ^^^^ what is this ? > > TAILQ_FOREACH(cdp, &cdevp_list, cdp_list) { > > > It would not be able to > > allocate memory, even in M_NOWAIT fashion. The dev_mtx is after the > > vm and vnode locks. Only iteration over the cdevp_list is protected by > > dev_mtx, which is dropped right after something which require an > > action, is found on the list. Populate() needs some way to avoid > > reading inconsistent data from the cdev layer, but there is not > > guarantee that we are always up to date. ^^^^^^^^^ > > > >> view of the character devices available, and I don't see how "cdev" > >> structures without the CDP_ACTIVE flag can appear with recently created > >> ones, even if the name is the same. > > It cannot simply because it is not synchronized with the device > > creation/destruction. > > > > > Lookup (or any other VFS-level code) is not protected by dev_mtx, it > > is only dm lock which ensures that populate loop is not run in parallel, > > modifying direntries. > > See comment above. > > > > >> > >> That system functions can still call into the dangling read/write/ioctl > >> functions is another story, and that is why I tell, that in order to > >> simplify this teardown, we possibly should associate a client selectable > >> lock with each CDEV, for teardown purposes. Like done for several years > >> in the callout and USB APIs and possibly many other places. > > There is d_purge method which provides the tear-down semantic for > > drivers which needs it. Only tty uses the method AFAIK. > > > > Devfs ensures that no client code is active when cdev is removed for real. > > --HPS From owner-svn-src-all@FreeBSD.ORG Sun Jan 18 11:54: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 CDA7886F; Sun, 18 Jan 2015 11:54: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 B448DFE9; Sun, 18 Jan 2015 11:54: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 t0IBsSEZ089840; Sun, 18 Jan 2015 11:54:28 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0IBsLn0089798; Sun, 18 Jan 2015 11:54:21 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201501181154.t0IBsLn0089798@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Sun, 18 Jan 2015 11:54: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: r277317 - in stable/10: contrib/jemalloc/include/jemalloc/internal contrib/jemalloc/src lib/libc lib/libc/compat-43 lib/libc/gen lib/libc/include lib/libc/stdlib lib/libc/stdlib/jemallo... 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.18-1 Precedence: list List-Id: "SVN commit messages 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, 18 Jan 2015 11:54:28 -0000 Author: kib Date: Sun Jan 18 11:54:20 2015 New Revision: 277317 URL: https://svnweb.freebsd.org/changeset/base/277317 Log: Fix known issues which blow up the process after dlopen("libthr.so") (or loading a dso linked to libthr.so into process which was not linked against threading library). MFC r276630: Remove interposing, fix malloc, reinstall signal handlers wrappers on libthr load. MFC r276681: Avoid calling internal libc function through PLT or accessing data though GOT. MFC r277032: Reduce the size of the interposing table and amount of cancellation-handling code in the libthr. MFC note: r276646 ("do not erronously export 'openat' symbol from rtld") is not applicable to stable/10 yet, since PATHFDS support was not merged. Added: stable/10/lib/libc/gen/__pthread_mutex_init_calloc_cb_stub.c - copied unchanged from r276630, head/lib/libc/gen/__pthread_mutex_init_calloc_cb_stub.c stable/10/lib/libc/sys/accept.c - copied unchanged from r276630, head/lib/libc/sys/accept.c stable/10/lib/libc/sys/accept4.c - copied unchanged from r276630, head/lib/libc/sys/accept4.c stable/10/lib/libc/sys/aio_suspend.c - copied unchanged from r276630, head/lib/libc/sys/aio_suspend.c stable/10/lib/libc/sys/close.c - copied unchanged from r276630, head/lib/libc/sys/close.c stable/10/lib/libc/sys/connect.c - copied unchanged from r276630, head/lib/libc/sys/connect.c stable/10/lib/libc/sys/fork.c - copied unchanged from r276630, head/lib/libc/sys/fork.c stable/10/lib/libc/sys/fsync.c - copied unchanged from r276630, head/lib/libc/sys/fsync.c stable/10/lib/libc/sys/interposing_table.c - copied, changed from r276630, head/lib/libc/sys/interposing_table.c stable/10/lib/libc/sys/msync.c - copied unchanged from r276630, head/lib/libc/sys/msync.c stable/10/lib/libc/sys/nanosleep.c - copied unchanged from r276630, head/lib/libc/sys/nanosleep.c stable/10/lib/libc/sys/open.c - copied, changed from r276630, head/lib/libc/sys/open.c stable/10/lib/libc/sys/openat.c - copied unchanged from r276630, head/lib/libc/sys/openat.c stable/10/lib/libc/sys/poll.c - copied unchanged from r276630, head/lib/libc/sys/poll.c stable/10/lib/libc/sys/pselect.c - copied unchanged from r276630, head/lib/libc/sys/pselect.c stable/10/lib/libc/sys/read.c - copied unchanged from r276630, head/lib/libc/sys/read.c stable/10/lib/libc/sys/readv.c - copied unchanged from r276630, head/lib/libc/sys/readv.c stable/10/lib/libc/sys/recvfrom.c - copied unchanged from r276630, head/lib/libc/sys/recvfrom.c stable/10/lib/libc/sys/recvmsg.c - copied unchanged from r276630, head/lib/libc/sys/recvmsg.c stable/10/lib/libc/sys/select.c - copied unchanged from r276630, head/lib/libc/sys/select.c stable/10/lib/libc/sys/sendmsg.c - copied unchanged from r276630, head/lib/libc/sys/sendmsg.c stable/10/lib/libc/sys/sendto.c - copied unchanged from r276630, head/lib/libc/sys/sendto.c stable/10/lib/libc/sys/setcontext.c - copied unchanged from r276630, head/lib/libc/sys/setcontext.c stable/10/lib/libc/sys/sigaction.c - copied unchanged from r276630, head/lib/libc/sys/sigaction.c stable/10/lib/libc/sys/sigprocmask.c - copied unchanged from r276630, head/lib/libc/sys/sigprocmask.c stable/10/lib/libc/sys/sigsuspend.c - copied unchanged from r276630, head/lib/libc/sys/sigsuspend.c stable/10/lib/libc/sys/sigtimedwait.c - copied unchanged from r276630, head/lib/libc/sys/sigtimedwait.c stable/10/lib/libc/sys/sigwaitinfo.c - copied unchanged from r276630, head/lib/libc/sys/sigwaitinfo.c stable/10/lib/libc/sys/swapcontext.c - copied unchanged from r276630, head/lib/libc/sys/swapcontext.c stable/10/lib/libc/sys/wait4.c - copied unchanged from r276630, head/lib/libc/sys/wait4.c stable/10/lib/libc/sys/write.c - copied unchanged from r276630, head/lib/libc/sys/write.c stable/10/lib/libc/sys/writev.c - copied unchanged from r276630, head/lib/libc/sys/writev.c Deleted: stable/10/lib/libc/gen/swapcontext.c Modified: stable/10/contrib/jemalloc/include/jemalloc/internal/mutex.h stable/10/contrib/jemalloc/src/jemalloc.c stable/10/contrib/jemalloc/src/mutex.c stable/10/lib/libc/Makefile stable/10/lib/libc/compat-43/creat.c stable/10/lib/libc/gen/Makefile.inc stable/10/lib/libc/gen/Symbol.map stable/10/lib/libc/gen/pause.c stable/10/lib/libc/gen/raise.c stable/10/lib/libc/gen/sleep.c stable/10/lib/libc/gen/termios.c stable/10/lib/libc/gen/usleep.c stable/10/lib/libc/gen/wait.c stable/10/lib/libc/gen/wait3.c stable/10/lib/libc/gen/waitpid.c stable/10/lib/libc/include/libc_private.h stable/10/lib/libc/stdlib/Symbol.map stable/10/lib/libc/stdlib/jemalloc/Symbol.map stable/10/lib/libc/stdlib/system.c stable/10/lib/libc/sys/Makefile.inc stable/10/lib/libc/sys/Symbol.map stable/10/lib/libc/sys/__error.c stable/10/lib/libc/sys/fcntl.c stable/10/lib/libc/sys/sigwait.c stable/10/lib/libthr/Makefile stable/10/lib/libthr/pthread.map stable/10/lib/libthr/sys/thr_error.c stable/10/lib/libthr/thread/thr_create.c stable/10/lib/libthr/thread/thr_fork.c stable/10/lib/libthr/thread/thr_init.c stable/10/lib/libthr/thread/thr_printf.c stable/10/lib/libthr/thread/thr_private.h stable/10/lib/libthr/thread/thr_sig.c stable/10/lib/libthr/thread/thr_syscalls.c Directory Properties: stable/10/ (props changed) Modified: stable/10/contrib/jemalloc/include/jemalloc/internal/mutex.h ============================================================================== --- stable/10/contrib/jemalloc/include/jemalloc/internal/mutex.h Sun Jan 18 10:53:48 2015 (r277316) +++ stable/10/contrib/jemalloc/include/jemalloc/internal/mutex.h Sun Jan 18 11:54:20 2015 (r277317) @@ -49,6 +49,7 @@ bool malloc_mutex_init(malloc_mutex_t *m void malloc_mutex_prefork(malloc_mutex_t *mutex); void malloc_mutex_postfork_parent(malloc_mutex_t *mutex); void malloc_mutex_postfork_child(malloc_mutex_t *mutex); +bool malloc_mutex_first_thread(void); bool mutex_boot(void); #endif /* JEMALLOC_H_EXTERNS */ Modified: stable/10/contrib/jemalloc/src/jemalloc.c ============================================================================== --- stable/10/contrib/jemalloc/src/jemalloc.c Sun Jan 18 10:53:48 2015 (r277316) +++ stable/10/contrib/jemalloc/src/jemalloc.c Sun Jan 18 11:54:20 2015 (r277317) @@ -1818,6 +1818,13 @@ jemalloc_postfork_child(void) ctl_postfork_child(); } +void +_malloc_first_thread(void) +{ + + (void)malloc_mutex_first_thread(); +} + /******************************************************************************/ /* * The following functions are used for TLS allocation/deallocation in static Modified: stable/10/contrib/jemalloc/src/mutex.c ============================================================================== --- stable/10/contrib/jemalloc/src/mutex.c Sun Jan 18 10:53:48 2015 (r277316) +++ stable/10/contrib/jemalloc/src/mutex.c Sun Jan 18 11:54:20 2015 (r277317) @@ -67,15 +67,15 @@ pthread_create(pthread_t *__restrict thr JEMALLOC_EXPORT int _pthread_mutex_init_calloc_cb(pthread_mutex_t *mutex, void *(calloc_cb)(size_t, size_t)); -__weak_reference(_pthread_mutex_init_calloc_cb_stub, - _pthread_mutex_init_calloc_cb); - +#pragma weak _pthread_mutex_init_calloc_cb int -_pthread_mutex_init_calloc_cb_stub(pthread_mutex_t *mutex, +_pthread_mutex_init_calloc_cb(pthread_mutex_t *mutex, void *(calloc_cb)(size_t, size_t)) { - return (0); + return (((int (*)(pthread_mutex_t *, void *(*)(size_t, size_t))) + __libc_interposing[INTERPOS__pthread_mutex_init_calloc_cb])( + mutex, calloc_cb)); } #endif @@ -144,7 +144,7 @@ malloc_mutex_postfork_child(malloc_mutex } bool -mutex_boot(void) +malloc_mutex_first_thread(void) { #ifdef JEMALLOC_MUTEX_INIT_CB @@ -158,3 +158,14 @@ mutex_boot(void) #endif return (false); } + +bool +mutex_boot(void) +{ + +#ifndef JEMALLOC_MUTEX_INIT_CB + return (malloc_mutex_first_thread()); +#else + return (false); +#endif +} Modified: stable/10/lib/libc/Makefile ============================================================================== --- stable/10/lib/libc/Makefile Sun Jan 18 10:53:48 2015 (r277316) +++ stable/10/lib/libc/Makefile Sun Jan 18 11:54:20 2015 (r277317) @@ -156,6 +156,10 @@ libkern.${LIBC_ARCH}:: ${KMSRCS} cp -p ${.ALLSRC} ${DESTDIR}/sys/libkern/${LIBC_ARCH} .endif +.if !defined(WITHOUT_SYSCALL_COMPAT) +CFLAGS+=-DSYSCALL_COMPAT +.endif + .include # Disable warnings in contributed sources. Modified: stable/10/lib/libc/compat-43/creat.c ============================================================================== --- stable/10/lib/libc/compat-43/creat.c Sun Jan 18 10:53:48 2015 (r277316) +++ stable/10/lib/libc/compat-43/creat.c Sun Jan 18 11:54:20 2015 (r277317) @@ -36,11 +36,18 @@ __FBSDID("$FreeBSD$"); #include "namespace.h" #include #include "un-namespace.h" +#include "libc_private.h" +__weak_reference(__creat, creat); +__weak_reference(__creat, _creat); + +#pragma weak creat int __creat(const char *path, mode_t mode) { - return(_open(path, O_WRONLY|O_CREAT|O_TRUNC, mode)); + + return (((int (*)(int, const char *, int, ...)) + __libc_interposing[INTERPOS_openat])(AT_FDCWD, path, O_WRONLY | + O_CREAT | O_TRUNC, mode)); } -__weak_reference(__creat, creat); -__weak_reference(__creat, _creat); + Modified: stable/10/lib/libc/gen/Makefile.inc ============================================================================== --- stable/10/lib/libc/gen/Makefile.inc Sun Jan 18 10:53:48 2015 (r277316) +++ stable/10/lib/libc/gen/Makefile.inc Sun Jan 18 11:54:20 2015 (r277317) @@ -5,6 +5,7 @@ .PATH: ${.CURDIR}/${LIBC_ARCH}/gen ${.CURDIR}/gen SRCS+= __getosreldate.c \ + __pthread_mutex_init_calloc_cb_stub.c \ __xuname.c \ _once_stub.c \ _pthread_stubs.c \ Modified: stable/10/lib/libc/gen/Symbol.map ============================================================================== --- stable/10/lib/libc/gen/Symbol.map Sun Jan 18 10:53:48 2015 (r277316) +++ stable/10/lib/libc/gen/Symbol.map Sun Jan 18 11:54:20 2015 (r277317) @@ -529,6 +529,8 @@ FBSDprivate_1.0 { _libc_sem_post_compat; _libc_sem_getvalue_compat; + __libc_tcdrain; + __elf_aux_vector; __pthread_map_stacks_exec; __fillcontextx; Copied: stable/10/lib/libc/gen/__pthread_mutex_init_calloc_cb_stub.c (from r276630, head/lib/libc/gen/__pthread_mutex_init_calloc_cb_stub.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/10/lib/libc/gen/__pthread_mutex_init_calloc_cb_stub.c Sun Jan 18 11:54:20 2015 (r277317, copy of r276630, head/lib/libc/gen/__pthread_mutex_init_calloc_cb_stub.c) @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2014 The FreeBSD Foundation. + * All rights reserved. + * + * Portions of this software were developed by Konstantin Belousov + * under sponsorship from the FreeBSD Foundation. + * + * 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(s), this list of conditions and the following disclaimer as + * the first lines of this file unmodified other than the possible + * addition of one or more copyright notices. + * 2. Redistributions in binary form must reproduce the above copyright + * notice(s), 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 HOLDER(S) ``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 HOLDER(S) 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 "libc_private.h" + +int +_pthread_mutex_init_calloc_cb_stub(pthread_mutex_t *mutex, + void *(calloc_cb)(size_t, size_t)) +{ + + return (0); +} Modified: stable/10/lib/libc/gen/pause.c ============================================================================== --- stable/10/lib/libc/gen/pause.c Sun Jan 18 10:53:48 2015 (r277316) +++ stable/10/lib/libc/gen/pause.c Sun Jan 18 11:54:20 2015 (r277317) @@ -33,10 +33,10 @@ static char sccsid[] = "@(#)pause.c 8.1 #include __FBSDID("$FreeBSD$"); -#include "namespace.h" #include #include -#include "un-namespace.h" + +#include "libc_private.h" /* * Backwards compatible pause. @@ -46,9 +46,10 @@ __pause(void) { sigset_t oset; - if (_sigprocmask(SIG_BLOCK, NULL, &oset) == -1) + if (sigprocmask(SIG_BLOCK, NULL, &oset) == -1) return (-1); - return (_sigsuspend(&oset)); + return (sigsuspend(&oset)); } + __weak_reference(__pause, pause); __weak_reference(__pause, _pause); Modified: stable/10/lib/libc/gen/raise.c ============================================================================== --- stable/10/lib/libc/gen/raise.c Sun Jan 18 10:53:48 2015 (r277316) +++ stable/10/lib/libc/gen/raise.c Sun Jan 18 11:54:20 2015 (r277317) @@ -36,11 +36,17 @@ __FBSDID("$FreeBSD$"); #include #include +#include "libc_private.h" + __weak_reference(__raise, raise); __weak_reference(__raise, _raise); int __raise(int s) { - return(kill(getpid(), s)); + long id; + + if (__sys_thr_self(&id) == -1) + return (-1); + return (__sys_thr_kill(id, s)); } Modified: stable/10/lib/libc/gen/sleep.c ============================================================================== --- stable/10/lib/libc/gen/sleep.c Sun Jan 18 10:53:48 2015 (r277316) +++ stable/10/lib/libc/gen/sleep.c Sun Jan 18 11:54:20 2015 (r277317) @@ -40,6 +40,8 @@ __FBSDID("$FreeBSD$"); #include #include "un-namespace.h" +#include "libc_private.h" + unsigned int __sleep(unsigned int seconds) { @@ -55,12 +57,14 @@ __sleep(unsigned int seconds) time_to_sleep.tv_sec = seconds; time_to_sleep.tv_nsec = 0; - if (_nanosleep(&time_to_sleep, &time_remaining) != -1) + if (((int (*)(const struct timespec *, struct timespec *)) + __libc_interposing[INTERPOS_nanosleep])( + &time_to_sleep, &time_remaining) != -1) return (0); if (errno != EINTR) return (seconds); /* best guess */ return (time_remaining.tv_sec + - (time_remaining.tv_nsec != 0)); /* round up */ + (time_remaining.tv_nsec != 0)); /* round up */ } __weak_reference(__sleep, sleep); Modified: stable/10/lib/libc/gen/termios.c ============================================================================== --- stable/10/lib/libc/gen/termios.c Sun Jan 18 10:53:48 2015 (r277316) +++ stable/10/lib/libc/gen/termios.c Sun Jan 18 11:54:20 2015 (r277317) @@ -46,6 +46,8 @@ __FBSDID("$FreeBSD$"); #include #include "un-namespace.h" +#include "libc_private.h" + int tcgetattr(int fd, struct termios *t) { @@ -208,13 +210,23 @@ tcsendbreak(int fd, int len __unused) } int -__tcdrain(int fd) +__libc_tcdrain(int fd) { + return (_ioctl(fd, TIOCDRAIN, 0)); } -__weak_reference(__tcdrain, tcdrain); -__weak_reference(__tcdrain, _tcdrain); +#pragma weak tcdrain +int +tcdrain(int fd) +{ + + return (((int (*)(int)) + __libc_interposing[INTERPOS_tcdrain])(fd)); +} + +__weak_reference(__libc_tcdrain, __tcdrain); +__weak_reference(__libc_tcdrain, _tcdrain); int tcflush(int fd, int which) Modified: stable/10/lib/libc/gen/usleep.c ============================================================================== --- stable/10/lib/libc/gen/usleep.c Sun Jan 18 10:53:48 2015 (r277316) +++ stable/10/lib/libc/gen/usleep.c Sun Jan 18 11:54:20 2015 (r277317) @@ -38,6 +38,8 @@ __FBSDID("$FreeBSD$"); #include #include "un-namespace.h" +#include "libc_private.h" + int __usleep(useconds_t useconds) { @@ -45,7 +47,8 @@ __usleep(useconds_t useconds) time_to_sleep.tv_nsec = (useconds % 1000000) * 1000; time_to_sleep.tv_sec = useconds / 1000000; - return (_nanosleep(&time_to_sleep, NULL)); + return (((int (*)(const struct timespec *, struct timespec *)) + __libc_interposing[INTERPOS_nanosleep])(&time_to_sleep, NULL)); } __weak_reference(__usleep, usleep); Modified: stable/10/lib/libc/gen/wait.c ============================================================================== --- stable/10/lib/libc/gen/wait.c Sun Jan 18 10:53:48 2015 (r277316) +++ stable/10/lib/libc/gen/wait.c Sun Jan 18 11:54:20 2015 (r277317) @@ -40,10 +40,14 @@ __FBSDID("$FreeBSD$"); #include #include "un-namespace.h" +#include "libc_private.h" + pid_t __wait(int *istat) { - return (_wait4(WAIT_ANY, istat, 0, (struct rusage *)0)); + + return (((pid_t (*)(pid_t, int *, int, struct rusage *)) + __libc_interposing[INTERPOS_wait4])(WAIT_ANY, istat, 0, NULL)); } __weak_reference(__wait, wait); Modified: stable/10/lib/libc/gen/wait3.c ============================================================================== --- stable/10/lib/libc/gen/wait3.c Sun Jan 18 10:53:48 2015 (r277316) +++ stable/10/lib/libc/gen/wait3.c Sun Jan 18 11:54:20 2015 (r277317) @@ -40,11 +40,14 @@ __FBSDID("$FreeBSD$"); #include #include "un-namespace.h" +#include "libc_private.h" + pid_t -wait3(istat, options, rup) - int *istat; - int options; - struct rusage *rup; +__wait3(int *istat, int options, struct rusage *rup) { - return (_wait4(WAIT_ANY, istat, options, rup)); + + return (((pid_t (*)(pid_t, int *, int, struct rusage *)) + __libc_interposing[INTERPOS_wait4])(WAIT_ANY, istat, options, rup)); } + +__weak_reference(__wait3, wait3); Modified: stable/10/lib/libc/gen/waitpid.c ============================================================================== --- stable/10/lib/libc/gen/waitpid.c Sun Jan 18 10:53:48 2015 (r277316) +++ stable/10/lib/libc/gen/waitpid.c Sun Jan 18 11:54:20 2015 (r277317) @@ -40,10 +40,14 @@ __FBSDID("$FreeBSD$"); #include #include "un-namespace.h" +#include "libc_private.h" + pid_t __waitpid(pid_t pid, int *istat, int options) { - return (_wait4(pid, istat, options, (struct rusage *)0)); + + return (((pid_t (*)(pid_t, int *, int, struct rusage *)) + __libc_interposing[INTERPOS_wait4])(pid, istat, options, NULL)); } __weak_reference(__waitpid, waitpid); Modified: stable/10/lib/libc/include/libc_private.h ============================================================================== --- stable/10/lib/libc/include/libc_private.h Sun Jan 18 10:53:48 2015 (r277316) +++ stable/10/lib/libc/include/libc_private.h Sun Jan 18 11:54:20 2015 (r277317) @@ -173,6 +173,52 @@ typedef pthread_func_t pthread_func_entr extern pthread_func_entry_t __thr_jtable[]; +void __set_error_selector(int *(*arg)(void)); +int _pthread_mutex_init_calloc_cb_stub(pthread_mutex_t *mutex, + void *(calloc_cb)(__size_t, __size_t)); + +typedef int (*interpos_func_t)(void); +interpos_func_t *__libc_interposing_slot(int interposno); +extern interpos_func_t __libc_interposing[] __hidden; + +enum { + INTERPOS_accept, + INTERPOS_accept4, + INTERPOS_aio_suspend, + INTERPOS_close, + INTERPOS_connect, + INTERPOS_fcntl, + INTERPOS_fsync, + INTERPOS_fork, + INTERPOS_msync, + INTERPOS_nanosleep, + INTERPOS_openat, + INTERPOS_poll, + INTERPOS_pselect, + INTERPOS_recvfrom, + INTERPOS_recvmsg, + INTERPOS_select, + INTERPOS_sendmsg, + INTERPOS_sendto, + INTERPOS_setcontext, + INTERPOS_sigaction, + INTERPOS_sigprocmask, + INTERPOS_sigsuspend, + INTERPOS_sigwait, + INTERPOS_sigtimedwait, + INTERPOS_sigwaitinfo, + INTERPOS_swapcontext, + INTERPOS_system, + INTERPOS_tcdrain, + INTERPOS_read, + INTERPOS_readv, + INTERPOS_wait4, + INTERPOS_write, + INTERPOS_writev, + INTERPOS__pthread_mutex_init_calloc_cb, + INTERPOS_MAX +}; + /* * yplib internal interfaces */ @@ -215,42 +261,101 @@ void _malloc_thread_cleanup(void); void _malloc_prefork(void); void _malloc_postfork(void); +void _malloc_first_thread(void); + /* * Function to clean up streams, called from abort() and exit(). */ -extern void (*__cleanup)(void) __hidden; +void (*__cleanup)(void) __hidden; /* * Get kern.osreldate to detect ABI revisions. Explicitly * ignores value of $OSVERSION and caches result. Prototypes * for the wrapped "new" pad-less syscalls are here for now. */ -extern int __getosreldate(void); +int __getosreldate(void); #include -/* Without pad */ -extern __off_t __sys_lseek(int, __off_t, int); -extern int __sys_ftruncate(int, __off_t); -extern int __sys_truncate(const char *, __off_t); -extern __ssize_t __sys_pread(int, void *, __size_t, __off_t); -extern __ssize_t __sys_pwrite(int, const void *, __size_t, __off_t); -extern void * __sys_mmap(void *, __size_t, int, int, int, __off_t); +#include /* With pad */ -extern __off_t __sys_freebsd6_lseek(int, int, __off_t, int); -extern int __sys_freebsd6_ftruncate(int, int, __off_t); -extern int __sys_freebsd6_truncate(const char *, int, __off_t); -extern __ssize_t __sys_freebsd6_pread(int, void *, __size_t, int, __off_t); -extern __ssize_t __sys_freebsd6_pwrite(int, const void *, __size_t, int, __off_t); -extern void * __sys_freebsd6_mmap(void *, __size_t, int, int, int, int, __off_t); - -/* Without back-compat translation */ -extern int __sys_fcntl(int, int, ...); - +__off_t __sys_freebsd6_lseek(int, int, __off_t, int); +int __sys_freebsd6_ftruncate(int, int, __off_t); +int __sys_freebsd6_truncate(const char *, int, __off_t); +__ssize_t __sys_freebsd6_pread(int, void *, __size_t, int, __off_t); +__ssize_t __sys_freebsd6_pwrite(int, const void *, __size_t, int, __off_t); +void * __sys_freebsd6_mmap(void *, __size_t, int, int, int, int, __off_t); + +struct aiocb; +struct fd_set; +struct iovec; +struct msghdr; +struct pollfd; +struct rusage; +struct sigaction; +struct sockaddr; struct timespec; struct timeval; struct timezone; -int __sys_gettimeofday(struct timeval *, struct timezone *); -int __sys_clock_gettime(__clockid_t, struct timespec *ts); +struct __siginfo; +struct __ucontext; +int __sys_aio_suspend(const struct aiocb * const[], int, + const struct timespec *); +int __sys_accept(int, struct sockaddr *, __socklen_t *); +int __sys_accept4(int, struct sockaddr *, __socklen_t *, int); +int __sys_clock_gettime(__clockid_t, struct timespec *ts); +int __sys_close(int); +int __sys_connect(int, const struct sockaddr *, __socklen_t); +int __sys_fcntl(int, int, ...); +int __sys_fsync(int); +__pid_t __sys_fork(void); +int __sys_ftruncate(int, __off_t); +int __sys_gettimeofday(struct timeval *, struct timezone *); +__off_t __sys_lseek(int, __off_t, int); +void *__sys_mmap(void *, __size_t, int, int, int, __off_t); +int __sys_msync(void *, __size_t, int); +int __sys_nanosleep(const struct timespec *, struct timespec *); +int __sys_open(const char *, int, ...); +int __sys_openat(int, const char *, int, ...); +int __sys_pselect(int, struct fd_set *, struct fd_set *, + struct fd_set *, const struct timespec *, + const __sigset_t *); +int __sys_poll(struct pollfd *, unsigned, int); +__ssize_t __sys_pread(int, void *, __size_t, __off_t); +__ssize_t __sys_pwrite(int, const void *, __size_t, __off_t); +__ssize_t __sys_read(int, void *, __size_t); +__ssize_t __sys_readv(int, const struct iovec *, int); +__ssize_t __sys_recv(int, void *, __size_t, int); +__ssize_t __sys_recvfrom(int, void *, __size_t, int, struct sockaddr *, + __socklen_t *); +__ssize_t __sys_recvmsg(int, struct msghdr *, int); +int __sys_select(int, struct fd_set *, struct fd_set *, + struct fd_set *, struct timeval *); +__ssize_t __sys_sendmsg(int, const struct msghdr *, int); +__ssize_t __sys_sendto(int, const void *, __size_t, int, + const struct sockaddr *, __socklen_t); +int __sys_setcontext(const struct __ucontext *); +int __sys_sigaction(int, const struct sigaction *, + struct sigaction *); +int __sys_sigprocmask(int, const __sigset_t *, __sigset_t *); +int __sys_sigsuspend(const __sigset_t *); +int __sys_sigtimedwait(const __sigset_t *, struct __siginfo *, + const struct timespec *); +int __sys_sigwait(const __sigset_t *, int *); +int __sys_sigwaitinfo(const __sigset_t *, struct __siginfo *); +int __sys_swapcontext(struct __ucontext *, + const struct __ucontext *); +int __sys_thr_kill(long, int); +int __sys_thr_self(long *); +int __sys_truncate(const char *, __off_t); +__pid_t __sys_wait4(__pid_t, int *, int, struct rusage *); +__ssize_t __sys_write(int, const void *, __size_t); +__ssize_t __sys_writev(int, const struct iovec *, int); + +int __libc_sigwait(const __sigset_t * __restrict, + int * restrict sig); +int __libc_system(const char *); +int __libc_tcdrain(int); +int __fcntl_compat(int fd, int cmd, ...); /* execve() with PATH processing to implement posix_spawnp() */ int _execvpe(const char *, char * const *, char * const *); Modified: stable/10/lib/libc/stdlib/Symbol.map ============================================================================== --- stable/10/lib/libc/stdlib/Symbol.map Sun Jan 18 10:53:48 2015 (r277316) +++ stable/10/lib/libc/stdlib/Symbol.map Sun Jan 18 11:54:20 2015 (r277317) @@ -107,4 +107,5 @@ FBSD_1.3 { FBSDprivate_1.0 { __system; _system; + __libc_system; }; Modified: stable/10/lib/libc/stdlib/jemalloc/Symbol.map ============================================================================== --- stable/10/lib/libc/stdlib/jemalloc/Symbol.map Sun Jan 18 10:53:48 2015 (r277316) +++ stable/10/lib/libc/stdlib/jemalloc/Symbol.map Sun Jan 18 11:54:20 2015 (r277317) @@ -43,4 +43,5 @@ FBSDprivate_1.0 { _malloc_thread_cleanup; _malloc_prefork; _malloc_postfork; + _malloc_first_thread; }; Modified: stable/10/lib/libc/stdlib/system.c ============================================================================== --- stable/10/lib/libc/stdlib/system.c Sun Jan 18 10:53:48 2015 (r277316) +++ stable/10/lib/libc/stdlib/system.c Sun Jan 18 11:54:20 2015 (r277317) @@ -46,8 +46,17 @@ __FBSDID("$FreeBSD$"); #include "un-namespace.h" #include "libc_private.h" +#pragma weak system int -__system(const char *command) +system(const char *command) +{ + + return (((int (*)(const char *)) + __libc_interposing[INTERPOS_system])(command)); +} + +int +__libc_system(const char *command) { pid_t pid, savedpid; int pstat; @@ -95,5 +104,5 @@ __system(const char *command) return(pid == -1 ? -1 : pstat); } -__weak_reference(__system, system); -__weak_reference(__system, _system); +__weak_reference(__libc_system, __system); +__weak_reference(__libc_system, _system); Modified: stable/10/lib/libc/sys/Makefile.inc ============================================================================== --- stable/10/lib/libc/sys/Makefile.inc Sun Jan 18 10:53:48 2015 (r277316) +++ stable/10/lib/libc/sys/Makefile.inc Sun Jan 18 11:54:20 2015 (r277317) @@ -20,17 +20,61 @@ NOASM+= clock_gettime.o gettimeofday.o PSEUDO+= _clock_gettime.o _gettimeofday.o # Sources common to both syscall interfaces: -SRCS+= stack_protector.c stack_protector_compat.c __error.c +SRCS+= \ + stack_protector.c \ + stack_protector_compat.c \ + __error.c \ + interposing_table.c + .if !defined(WITHOUT_SYSCALL_COMPAT) -SYSCALL_COMPAT_SRCS= fcntl.c ftruncate.c lseek.c mmap.c pread.c \ - pwrite.c truncate.c +SYSCALL_COMPAT_SRCS= \ + ftruncate.c \ + lseek.c \ + mmap.c \ + pread.c \ + pwrite.c \ + truncate.c SRCS+= ${SYSCALL_COMPAT_SRCS} NOASM+= ${SYSCALL_COMPAT_SRCS:S/.c/.o/} -PSEUDO+= _fcntl.o .endif -SRCS+= sigwait.c -NOASM+= sigwait.o -PSEUDO+= _sigwait.o + +INTERPOSED = \ + accept \ + accept4 \ + aio_suspend \ + close \ + connect \ + fcntl \ + fsync \ + fork \ + msync \ + nanosleep \ + open \ + openat \ + poll \ + pselect \ + read \ + readv \ + recvfrom \ + recvmsg \ + select \ + sendmsg \ + sendto \ + setcontext \ + sigaction \ + sigprocmask \ + sigsuspend \ + sigtimedwait \ + sigwait \ + sigwaitinfo \ + swapcontext \ + wait4 \ + write \ + writev + +SRCS+= ${INTERPOSED:S/$/.c/} +NOASM+= ${INTERPOSED:S/$/.o/} +PSEUDO+= ${INTERPOSED:C/^.*$/_&.o/} # Add machine dependent asm sources: SRCS+=${MDASM} Modified: stable/10/lib/libc/sys/Symbol.map ============================================================================== --- stable/10/lib/libc/sys/Symbol.map Sun Jan 18 10:53:48 2015 (r277316) +++ stable/10/lib/libc/sys/Symbol.map Sun Jan 18 11:54:20 2015 (r277317) @@ -245,7 +245,6 @@ FBSD_1.0 { setaudit; setaudit_addr; setauid; - setcontext; setegid; seteuid; setgid; @@ -286,7 +285,6 @@ FBSD_1.0 { __stack_chk_guard; stat; statfs; - swapcontext; swapoff; swapon; symlink; @@ -351,7 +349,6 @@ FBSD_1.1 { mkfifoat; mknodat; msgctl; - openat; readlinkat; renameat; setfib; @@ -1048,7 +1045,9 @@ FBSDprivate_1.0 { __sys_write; _writev; __sys_writev; - __error_unthreaded; + __set_error_selector; nlm_syscall; gssd_syscall; + __libc_interposing_slot; + __libc_sigwait; }; Modified: stable/10/lib/libc/sys/__error.c ============================================================================== --- stable/10/lib/libc/sys/__error.c Sun Jan 18 10:53:48 2015 (r277316) +++ stable/10/lib/libc/sys/__error.c Sun Jan 18 11:54:20 2015 (r277317) @@ -32,14 +32,25 @@ __FBSDID("$FreeBSD$"); extern int errno; -/* - * Declare a weak reference in case the application is not linked - * with libpthread. - */ -__weak_reference(__error_unthreaded, __error); +static int * +__error_unthreaded(void) +{ + + return (&errno); +} + +static int *(*__error_selector)(void) = __error_unthreaded; + +void +__set_error_selector(int *(*arg)(void)) +{ + + __error_selector = arg; +} int * -__error_unthreaded(void) +__error(void) { - return(&errno); + + return (__error_selector()); } Copied: stable/10/lib/libc/sys/accept.c (from r276630, head/lib/libc/sys/accept.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/10/lib/libc/sys/accept.c Sun Jan 18 11:54:20 2015 (r277317, copy of r276630, head/lib/libc/sys/accept.c) @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2014 The FreeBSD Foundation. + * All rights reserved. + * + * Portions of this software were developed by Konstantin Belousov + * under sponsorship from the FreeBSD Foundation. + * + * 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(s), this list of conditions and the following disclaimer as + * the first lines of this file unmodified other than the possible + * addition of one or more copyright notices. + * 2. Redistributions in binary form must reproduce the above copyright + * notice(s), 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 HOLDER(S) ``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 HOLDER(S) 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 "libc_private.h" + +__weak_reference(__sys_accept, __accept); + +#pragma weak accept +int +accept(int s, struct sockaddr *addr, socklen_t *addrlen) +{ + + return (((int (*)(int, struct sockaddr *, socklen_t *)) + __libc_interposing[INTERPOS_accept])(s, addr, addrlen)); +} Copied: stable/10/lib/libc/sys/accept4.c (from r276630, head/lib/libc/sys/accept4.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/10/lib/libc/sys/accept4.c Sun Jan 18 11:54:20 2015 (r277317, copy of r276630, head/lib/libc/sys/accept4.c) @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2014 The FreeBSD Foundation. + * All rights reserved. + * + * Portions of this software were developed by Konstantin Belousov + * under sponsorship from the FreeBSD Foundation. + * + * 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(s), this list of conditions and the following disclaimer as + * the first lines of this file unmodified other than the possible + * addition of one or more copyright notices. + * 2. Redistributions in binary form must reproduce the above copyright + * notice(s), 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 HOLDER(S) ``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 HOLDER(S) 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 "libc_private.h" + +__weak_reference(__sys_accept4, __accept4); + +#pragma weak accept4 +int +accept4(int s, struct sockaddr *addr, socklen_t *addrlen, int flags) +{ + + return (((int (*)(int, struct sockaddr *, socklen_t *, int)) + __libc_interposing[INTERPOS_accept4])(s, addr, addrlen, flags)); +} Copied: stable/10/lib/libc/sys/aio_suspend.c (from r276630, head/lib/libc/sys/aio_suspend.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/10/lib/libc/sys/aio_suspend.c Sun Jan 18 11:54:20 2015 (r277317, copy of r276630, head/lib/libc/sys/aio_suspend.c) @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2014 The FreeBSD Foundation. + * All rights reserved. + * + * Portions of this software were developed by Konstantin Belousov + * under sponsorship from the FreeBSD Foundation. + * + * 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(s), this list of conditions and the following disclaimer as + * the first lines of this file unmodified other than the possible + * addition of one or more copyright notices. + * 2. Redistributions in binary form must reproduce the above copyright + * notice(s), 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 HOLDER(S) ``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 HOLDER(S) 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 "libc_private.h" + +__weak_reference(__sys_aio_suspend, __aio_suspend); + +#pragma weak aio_suspend +int +aio_suspend(const struct aiocb * const iocbs[], int niocb, + const struct timespec *timeout) +{ + + return (((int (*)(const struct aiocb * const[], int, + const struct timespec *)) + __libc_interposing[INTERPOS_aio_suspend])(iocbs, niocb, timeout)); +} Copied: stable/10/lib/libc/sys/close.c (from r276630, head/lib/libc/sys/close.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/10/lib/libc/sys/close.c Sun Jan 18 11:54:20 2015 (r277317, copy of r276630, head/lib/libc/sys/close.c) @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2014 The FreeBSD Foundation. + * All rights reserved. + * + * Portions of this software were developed by Konstantin Belousov + * under sponsorship from the FreeBSD Foundation. + * + * 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(s), this list of conditions and the following disclaimer as + * the first lines of this file unmodified other than the possible + * addition of one or more copyright notices. + * 2. Redistributions in binary form must reproduce the above copyright + * notice(s), 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 HOLDER(S) ``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 HOLDER(S) 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 "libc_private.h" + +__weak_reference(__sys_close, __close); + +#pragma weak close +int +close(int fd) +{ + + return (((int (*)(int))__libc_interposing[INTERPOS_close])(fd)); +} Copied: stable/10/lib/libc/sys/connect.c (from r276630, head/lib/libc/sys/connect.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/10/lib/libc/sys/connect.c Sun Jan 18 11:54:20 2015 (r277317, copy of r276630, head/lib/libc/sys/connect.c) @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2014 The FreeBSD Foundation. + * All rights reserved. + * + * Portions of this software were developed by Konstantin Belousov + * under sponsorship from the FreeBSD Foundation. + * + * 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(s), this list of conditions and the following disclaimer as + * the first lines of this file unmodified other than the possible + * addition of one or more copyright notices. + * 2. Redistributions in binary form must reproduce the above copyright + * notice(s), 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 HOLDER(S) ``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 HOLDER(S) 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 "libc_private.h" + +__weak_reference(__sys_connect, __connect); + +#pragma weak connect +int +connect(int s, const struct sockaddr *addr, socklen_t addrlen) +{ + *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sun Jan 18 12:45:27 2015 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 239C0869; Sun, 18 Jan 2015 12:45: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 0F79981E; Sun, 18 Jan 2015 12:45: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 t0ICjQLl013769; Sun, 18 Jan 2015 12:45:26 GMT (envelope-from cperciva@FreeBSD.org) Received: (from cperciva@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0ICjQjG013768; Sun, 18 Jan 2015 12:45:26 GMT (envelope-from cperciva@FreeBSD.org) Message-Id: <201501181245.t0ICjQjG013768@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: cperciva set sender to cperciva@FreeBSD.org using -f From: Colin Percival Date: Sun, 18 Jan 2015 12:45:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r277318 - head/sys/dev/acpica X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages 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, 18 Jan 2015 12:45:27 -0000 Author: cperciva Date: Sun Jan 18 12:45:26 2015 New Revision: 277318 URL: https://svnweb.freebsd.org/changeset/base/277318 Log: When disabling C3+ CPU states due to the CPU_QUIRK_NO_C3 quirk, don't accidentally enable non-existent states. This bug was triggered if ACPI advertises the presence of a C2 state which we fail to parse via acpi_PkgGas due to our lack of support for FFixedHW resources, and causes an immediate panic when an attempt is made to enter the (NULL) state. One affected platform is the EC2 c4.8xlarge VM instance type; there may be others. MFC after: 1 week Thanks to: jkim, @_msw_ Modified: head/sys/dev/acpica/acpi_cpu.c Modified: head/sys/dev/acpica/acpi_cpu.c ============================================================================== --- head/sys/dev/acpica/acpi_cpu.c Sun Jan 18 11:54:20 2015 (r277317) +++ head/sys/dev/acpica/acpi_cpu.c Sun Jan 18 12:45:26 2015 (r277318) @@ -885,7 +885,7 @@ acpi_cpu_startup(void *arg) for (i = 0; i < cpu_ndevices; i++) { sc = device_get_softc(cpu_devices[i]); if (cpu_quirks & CPU_QUIRK_NO_C3) { - sc->cpu_cx_count = sc->cpu_non_c3 + 1; + sc->cpu_cx_count = min(sc->cpu_cx_count, sc->cpu_non_c3 + 1); } AcpiInstallNotifyHandler(sc->cpu_handle, ACPI_DEVICE_NOTIFY, acpi_cpu_notify, sc); From owner-svn-src-all@FreeBSD.ORG Sun Jan 18 12:54: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 7F6DDAF7; Sun, 18 Jan 2015 12:54:27 +0000 (UTC) Received: from mail.turbocat.net (heidi.turbocat.net [88.198.202.214]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 1FA2E979; Sun, 18 Jan 2015 12:54:26 +0000 (UTC) Received: from laptop015.home.selasky.org (cm-176.74.213.204.customer.telag.net [176.74.213.204]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.turbocat.net (Postfix) with ESMTPSA id D2D821FE023; Sun, 18 Jan 2015 13:54:23 +0100 (CET) Message-ID: <54BBAD31.701@selasky.org> Date: Sun, 18 Jan 2015 13:55:13 +0100 From: Hans Petter Selasky User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:31.0) Gecko/20100101 Thunderbird/31.3.0 MIME-Version: 1.0 To: Konstantin Belousov Subject: Re: svn commit: r277199 - in head/sys: fs/devfs kern References: <20150115033109.GM42409@kib.kiev.ua> <54B76F2B.8040106@selasky.org> <20150115093841.GX42409@kib.kiev.ua> <54B79B25.3070707@selasky.org> <20150115115123.GA42409@kib.kiev.ua> <54B7AF2F.3080802@selasky.org> <20150116080332.GE42409@kib.kiev.ua> <54B8D31B.9030805@selasky.org> <20150118105410.GN42409@kib.kiev.ua> <54BB942A.5070200@selasky.org> <20150118113150.GQ42409@kib.kiev.ua> In-Reply-To: <20150118113150.GQ42409@kib.kiev.ua> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages 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, 18 Jan 2015 12:54:27 -0000 Hi Konstantin, On 01/18/15 12:31, Konstantin Belousov wrote: > On Sun, Jan 18, 2015 at 12:08:26PM +0100, Hans Petter Selasky wrote: >> Hi Konstantin, >> >> On 01/18/15 11:54, Konstantin Belousov wrote: >>> On Fri, Jan 16, 2015 at 10:00:11AM +0100, Hans Petter Selasky wrote: >>>> Hi Konstantin, >> >> What about events for "devd" that a new character devices is present in >> the system or being destroyed for user-space applications? > It is up to the driver to decide. If wanted, it could post the pair of > destroy/create itself (e.g., if there is some state which require > the userspace to reset), or it could decide not to. The later is > reasonable if the destroy/create is believed to be caused by a glitch > rather than the actual replug. I would really prefer if that path is chosen, that kern_conf.c exposes an API for this. Consider the following case: You have a daemon that is started and stopped based upon "devd" DEVFS create/destroy events. The daemon is started when the create event is received. Then the kernel side calls destroy_dev(), because the application still keeps the file handle opened, the destroy_dev() never sends the destroy event, and the application then never receives the destroy event --- another example of a totally invisible deadlock. >>> >>> I find it very strange that you need sleepless operation which can >>> _both_ destroy and create cdev. At least one operation of creation or My simple argument against sleepable operation inside devfs functions which are used to register and unregister a character devices is simply that it leads to the fact we cannot make an atomic shutdown of a kernel application which involves devfs and other kernel subsystems. Let me explain. It is not enough that devfs works alone, it needs to work with together with other kernel APIs aswell. Let's make up an example. A kernel module is using three different APIs, lets say USB, the callout subsystem and devfs. Devfs is calling USB to start and stop USB transfers. The callout subsystem is calling selwakeup() and waking up devfs. The USB subsystem is calling selwakeup() and waking up devfs aswell. The USB subsystem is also calling destroy_dev(). This is a very high-level architectural thought and I hope you get it: How can you tear down a kernel application using three different subsystems in the kernel _atomically_ without having lingering callbacks? To make the shutdown sequence atomic, we might want to use a mutex. Now iff destroy_dev() is sleepable we need to drop that mutex when destroying the character device, and then woops - the shutdown sequence is no longer atomic. That's the root of the problem, and please think beyond devfs alone. The problem happens when devfs is used together with other APIs and applications in the kernel. >>> destruction must sleep, at least in the current devfs design. It could >>> be made sleepless, by making VFS visible part even less connected to the >>> cdev part, but this is not how it (can) currently work. >> >> I think it would be good practice that all resources needed for creating >> a character device can be allocated prior to registration. That means we >> first should allocate all resources needed, but not register as a single >> function. >> >> For example: >> >> Once make_dev() has returned, we can get an "d_open" callback. But >> "si_drv1/2" is always set by drivers _after_ that "make_dev()" has >> returned! This causes a race we could simply avoid by splitting the >> make_dev() like I suggest. Instead of putting more logic and code inside >> the drivers to handle the race! > I wanted to tunnel the si_drv values through the make_dev(). > I.e. there could appear yet another variant of make_dev() which takes > the initialization parameters for the si_* driver vars. > > I just did not have time/motivation to do the pass. I might be interested in giving you a hand there, but not right now. >> >>>> >>>>> >>>>> This would also close a window where /dev node is non-existent or operate >>>>> erronously. >>>> >>>> I'm not saying I plan so, but I think "cdevs" at some point need to >>>> understand mutexes and locks. That means like with other API's in the >>>> kernel we can associate a lock with the "cdev", and this lock is then >>>> used to ensure an atomic shutdown of the system in a non-blocking >>>> fashion. In my past experience multithreaded APIs should be high level >>>> implemented like this: >>>> >>>> NON-BLOCKING methods: >>>> lock(); ** >>>> xxx_start(); >>>> xxx_stop(); >>>> unlock(); >>>> >>>> BLOCKING methods: >>>> setup(); // init >>>> unsetup(); // drain >>>> >>>> Any callbacks should always be called locked ** >>>> >>>> In devfs there was no non-blocking stop before I added the delist_dev() >>>> function. >>>> >>>>> >>>>> You do not understand my point. >>>>> >>>>> I object against imposing one additional global reference on all cdevs >>>>> just to cope with the delist hack. See the patch at the end of the message. >>>> >>>> It's fine by me. >>>>> >>>>> WRT destroy_dev_sched_cb() calling delist_dev(), even after calling >>>>> delist_dev(), the node still exists in the /dev. It is only removed >>>>> after populate loop is run sometime later. dev_sched() KPI is inheritly >>>>> racy, drivers must handle the races for other reasons. >>>> >>>> The populate loop is all running under the dev_lock() from what I can >>>> see and make_dev() is also keeping the same lock when inserting and >>>> removing new cdevs. The populate loop should always give a consistent >>> No, populate loop is not run under dev_mtx. >> >> Are you sure: > Yes, I am sure. I explained it in the next sentences which you break from > the first one in the citation. "devfs_populate()" is called exclusivly locked by "dm_lock" and doesn't return until an atomic TAILQ_FOREACH() of the "devp_list" under "dev_lock()" is consistent - right? So the VFS node tree will not be inconsistent under "dm_lock" either - right? Or is there something which I don't see? void devfs_populate(struct devfs_mount *dm) { unsigned gen; sx_assert(&dm->dm_lock, SX_XLOCKED); gen = devfs_generation; if (dm->dm_generation == gen) return; >>> It would not be able to >>> allocate memory, even in M_NOWAIT fashion. The dev_mtx is after the >>> vm and vnode locks. Only iteration over the cdevp_list is protected by >>> dev_mtx, which is dropped right after something which require an >>> action, is found on the list. Populate() needs some way to avoid >>> reading inconsistent data from the cdev layer, but there is not >>> guarantee that we are always up to date. > ^^^^^^^^^ Are you taking the sleepable "dm_lock" into account? --HPS From owner-svn-src-all@FreeBSD.ORG Sun Jan 18 13:22: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 AC0CEE2; Sun, 18 Jan 2015 13:22:44 +0000 (UTC) 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 517EED58; Sun, 18 Jan 2015 13:22:44 +0000 (UTC) Received: from mail.sbone.de (mail.sbone.de [IPv6:fde9:577b:c1a9:31::2013:587]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.sbone.de (Postfix) with ESMTPS id 23A9925D3A92; Sun, 18 Jan 2015 13:22:39 +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 9F59EC770AE; Sun, 18 Jan 2015 13:22:38 +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 MyryhhT2wYtr; Sun, 18 Jan 2015 13:22:36 +0000 (UTC) Received: from [IPv6:fde9:577b:c1a9:4410:8822:54a5:bf0c:ece7] (unknown [IPv6:fde9:577b:c1a9:4410:8822:54a5:bf0c:ece7]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sbone.de (Postfix) with ESMTPSA id 1C62AC7706F; Sun, 18 Jan 2015 13:22:34 +0000 (UTC) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 8.1 \(1993\)) Subject: Re: svn commit: r277302 - in head/sys: conf modules modules/ibcore modules/ipoib modules/linuxapi modules/mlx4 modules/mlx4ib ofed/drivers/infiniband/core ofed/drivers/infiniband/hw/mlx4 ofed/drivers/i... From: "Bjoern A. Zeeb" In-Reply-To: <54BB9114.9010200@selasky.org> Date: Sun, 18 Jan 2015 13:22:02 +0000 Content-Transfer-Encoding: quoted-printable Message-Id: <73ED5E75-FB99-4413-985D-8BF3FF854318@FreeBSD.org> References: <201501171636.t0HGadsf039591@svn.freebsd.org> <47909EEB-D9BF-43A1-B485-43680A86E170@FreeBSD.org> <54BB81FC.3030501@selasky.org> <54BB9114.9010200@selasky.org> To: Hans Petter Selasky X-Mailer: Apple Mail (2.1993) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages 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, 18 Jan 2015 13:22:44 -0000 > On 18 Jan 2015, at 10:55 , Hans Petter Selasky = wrote: >=20 > See r277316. >=20 > Thank you! Thanks could you also check i386.XEN which seems to conflict on = redefined macros; here=E2=80=99s only a short excerpt: In file included from = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/lin= ux_compat.c:49: In file included from = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/kob= ject.h:34: In file included from = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/ker= nel.h:40: = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/bit= ops.h:38:9: error: 'BITS_TO_LONGS' macro redefined = [-Werror,-Wmacro-redefined] #define BITS_TO_LONGS(n) howmany((n), BITS_PER_LONG) ^ ./machine/xen/xenvar.h:99:9: note: previous definition is here #define BITS_TO_LONGS(bits) \ ^ In file included from = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/lin= ux_compat.c:49: In file included from = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/kob= ject.h:34: In file included from = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/ker= nel.h:40: = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/bit= ops.h:297:9: error: 'test_bit' macro redefined = [-Werror,-Wmacro-redefined] #define test_bit(i, a) = \ ^ ./machine/xen/xen-os.h:224:9: note: previous definition is here #define test_bit(nr,addr) \ ^ In file included from = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/lin= ux_compat.c:49: In file included from = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/kob= ject.h:34: In file included from = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/ker= nel.h:40: = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/bit= ops.h:302:1: error: conflicting types for 'test_and_clear_bit' test_and_clear_bit(long bit, long *var) ^ ./machine/xen/xen-os.h:197:21: note: previous definition is here static __inline int test_and_clear_bit(int nr, volatile void * addr) ^ In file included from = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/lin= ux_compat.c:49: In file included from = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/kob= ject.h:34: In file included from = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/ker= nel.h:43: In file included from = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/kth= read.h:39: In file included from = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/sla= b.h:37: = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/typ= es.h:63:9: error: 'DECLARE_BITMAP' macro redefined = [-Werror,-Wmacro-redefined] #define DECLARE_BITMAP(n, bits) = \ ^ =E2=80=A6 In file included from = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/lin= ux_compat.c:49: In file included from = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/kob= ject.h:34: In file included from = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/ker= nel.h:46: In file included from = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/wai= t.h:32: = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/spi= nlock.h:51:9: error: 'spin_lock_irqsave' macro redefined = [-Werror,-Wmacro-redefined] #define spin_lock_irqsave(lock, flags) = \ ^ ./machine/xen/xen-os.h:141:9: note: previous definition is here = = = =20 #define spin_lock_irqsave mtx_lock_irqsave ^ In file included from = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/lin= ux_compat.c:49: In file included from = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/kob= ject.h:34: In file included from = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/ker= nel.h:46: In file included from = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/wai= t.h:32: = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/spi= nlock.h:53:9: error: 'spin_unlock_irqrestore' macro redefined = [-Werror,-Wmacro-redefined] #define spin_unlock_irqrestore(lock, flags) = \ ^ ./machine/xen/xen-os.h:142:9: note: previous definition is here #define spin_unlock_irqrestore mtx_unlock_irqrestore ^ In file included from = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/lin= ux_compat.c:50: In file included from = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/dev= ice.h:41: = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/asm/atomi= c.h:39:3: error: typedef redefinition with different types ('struct = atomic_t' vs 'struct atomic_t') } atomic_t; ^ ./machine/xen/xen-os.h:157:42: note: previous definition is here typedef struct { volatile int counter; } atomic_t; ^ In file included from = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/lin= ux_compat.c:50: In file included from = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/linux/dev= ice.h:41: = /scratch/tmp/bz/head.svn/sys/modules/linuxapi/../../ofed/include/asm/atomi= c.h:75:1: error: conflicting types for 'atomic_inc' atomic_inc(atomic_t *v) ^ ./machine/xen/xen-os.h:273:24: note: previous definition is here static __inline__ void atomic_inc(atomic_t *v) ^ =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 Sun Jan 18 14: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 126DF790; Sun, 18 Jan 2015 14:04: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 F2AD4136; Sun, 18 Jan 2015 14:04: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 t0IE4t4w051206; Sun, 18 Jan 2015 14:04:55 GMT (envelope-from hselasky@FreeBSD.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0IE4tO9051205; Sun, 18 Jan 2015 14:04:55 GMT (envelope-from hselasky@FreeBSD.org) Message-Id: <201501181404.t0IE4tO9051205@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: hselasky set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky Date: Sun, 18 Jan 2015 14:04:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r277319 - 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.18-1 Precedence: list List-Id: "SVN commit messages 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, 18 Jan 2015 14:04:56 -0000 Author: hselasky Date: Sun Jan 18 14:04:55 2015 New Revision: 277319 URL: https://svnweb.freebsd.org/changeset/base/277319 Log: Make the linuxapi module only build when WITH_OFED=YES is specified. There needs to be some more testing done before it is ready for all platforms and architectures. MFC after: 1 month Sponsored by: Mellanox Technologies Reported by: bz@ Modified: head/sys/modules/Makefile Modified: head/sys/modules/Makefile ============================================================================== --- head/sys/modules/Makefile Sun Jan 18 12:45:26 2015 (r277318) +++ head/sys/modules/Makefile Sun Jan 18 14:04:55 2015 (r277319) @@ -502,7 +502,9 @@ _ipoib= ipoib _linprocfs= linprocfs _linsysfs= linsysfs _linux= linux +.if ${MK_OFED} != "no" _linuxapi= linuxapi +.endif _ndis= ndis .if ${MK_CDDL} != "no" || defined(ALL_MODULES) _opensolaris= opensolaris From owner-svn-src-all@FreeBSD.ORG Sun Jan 18 14:05: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 51E918E4; Sun, 18 Jan 2015 14:05:39 +0000 (UTC) Received: from mail.turbocat.net (mail.turbocat.net [IPv6:2a01:4f8:d16:4514::2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 0D4FB13E; Sun, 18 Jan 2015 14:05:39 +0000 (UTC) Received: from laptop015.home.selasky.org (cm-176.74.213.204.customer.telag.net [176.74.213.204]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.turbocat.net (Postfix) with ESMTPSA id 90F9A1FE023; Sun, 18 Jan 2015 15:05:36 +0100 (CET) Message-ID: <54BBBDE2.6010306@selasky.org> Date: Sun, 18 Jan 2015 15:06:26 +0100 From: Hans Petter Selasky User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:31.0) Gecko/20100101 Thunderbird/31.3.0 MIME-Version: 1.0 To: "Bjoern A. Zeeb" Subject: Re: svn commit: r277302 - in head/sys: conf modules modules/ibcore modules/ipoib modules/linuxapi modules/mlx4 modules/mlx4ib ofed/drivers/infiniband/core ofed/drivers/infiniband/hw/mlx4 ofed/drivers/i... References: <201501171636.t0HGadsf039591@svn.freebsd.org> <47909EEB-D9BF-43A1-B485-43680A86E170@FreeBSD.org> <54BB81FC.3030501@selasky.org> <54BB9114.9010200@selasky.org> <73ED5E75-FB99-4413-985D-8BF3FF854318@FreeBSD.org> In-Reply-To: <73ED5E75-FB99-4413-985D-8BF3FF854318@FreeBSD.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages 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, 18 Jan 2015 14:05:39 -0000 On 01/18/15 14:22, Bjoern A. Zeeb wrote: > >> On 18 Jan 2015, at 10:55 , Hans Petter Selasky wrote: >> >> See r277316. >> >> Thank you! > > Thanks could you also check i386.XEN which seems to conflict on redefined macros; here’s only a short excerpt: See r277319. I see this needs some more testing and CPU time. Until further I will simply make it build only when WITH_OFED=YES . --HPS From owner-svn-src-all@FreeBSD.ORG Sun Jan 18 14:14: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 E5E54B83; Sun, 18 Jan 2015 14: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 CC7F2229; Sun, 18 Jan 2015 14: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 t0IEErXt055880; Sun, 18 Jan 2015 14:14:53 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0IEEmYI055850; Sun, 18 Jan 2015 14:14:48 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201501181414.t0IEEmYI055850@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Sun, 18 Jan 2015 14:14:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r277320 - in head: . contrib/llvm/include/llvm/Analysis contrib/llvm/include/llvm/CodeGen contrib/llvm/include/llvm/Target contrib/llvm/lib/Analysis contrib/llvm/lib/MC contrib/llvm/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.18-1 Precedence: list List-Id: "SVN commit messages 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, 18 Jan 2015 14:14:54 -0000 Author: dim Date: Sun Jan 18 14:14:47 2015 New Revision: 277320 URL: https://svnweb.freebsd.org/changeset/base/277320 Log: Upgrade our copy of clang and llvm to 3.5.1 release. This is a bugfix only release, no new features have been added. Please note that this version requires C++11 support to build; see UPDATING for more information. Release notes for llvm and clang can be found here: MFC after: 1 month X-MFC-With: 276479 Added: head/contrib/llvm/lib/Target/Mips/MipsABIInfo.cpp - copied unchanged from r277223, vendor/llvm/dist/lib/Target/Mips/MipsABIInfo.cpp head/contrib/llvm/lib/Target/Mips/MipsABIInfo.h - copied unchanged from r277223, vendor/llvm/dist/lib/Target/Mips/MipsABIInfo.h head/contrib/llvm/lib/Target/Mips/MipsCCState.cpp - copied unchanged from r277223, vendor/llvm/dist/lib/Target/Mips/MipsCCState.cpp head/contrib/llvm/lib/Target/Mips/MipsCCState.h - copied unchanged from r277223, vendor/llvm/dist/lib/Target/Mips/MipsCCState.h head/contrib/llvm/patches/patch-07-llvm-r216989-r216990-fix-movw-armv6.diff - copied unchanged from r277318, head/contrib/llvm/patches/patch-08-llvm-r216989-r216990-fix-movw-armv6.diff head/contrib/llvm/patches/patch-08-clang-r217410-i386-garbage-float.diff - copied unchanged from r277299, head/contrib/llvm/patches/patch-09-clang-r217410-i386-garbage-float.diff head/contrib/llvm/patches/patch-09-llvm-r221709-debug-oom.diff - copied unchanged from r277299, head/contrib/llvm/patches/patch-10-llvm-r221709-debug-oom.diff head/contrib/llvm/patches/patch-10-llvm-r222562-loop-rotate.diff - copied unchanged from r277299, head/contrib/llvm/patches/patch-11-llvm-r222562-loop-rotate.diff head/contrib/llvm/patches/patch-11-add-llvm-gvn-option.diff - copied unchanged from r277299, head/contrib/llvm/patches/patch-12-add-llvm-gvn-option.diff head/contrib/llvm/patches/patch-12-llvm-r218241-dwarf2-warning.diff - copied unchanged from r277299, head/contrib/llvm/patches/patch-13-llvm-r218241-dwarf2-warning.diff head/contrib/llvm/patches/patch-13-llvm-r215352-aarch64-dyn-loader.diff - copied unchanged from r277299, head/contrib/llvm/patches/patch-14-llvm-r215352-aarch64-dyn-loader.diff head/contrib/llvm/patches/patch-14-llvm-r216571-dynamiclib-usability.diff - copied unchanged from r277299, head/contrib/llvm/patches/patch-15-llvm-r216571-dynamiclib-usability.diff head/contrib/llvm/patches/patch-15-clang-r221900-freebsd-aarch64.diff - copied unchanged from r277299, head/contrib/llvm/patches/patch-16-clang-r221900-freebsd-aarch64.diff head/contrib/llvm/patches/patch-16-llvm-r222856-libapr-miscompile.diff - copied unchanged from r277299, head/contrib/llvm/patches/patch-17-llvm-r222856-libapr-miscompile.diff head/contrib/llvm/patches/patch-17-llvm-r214802-armv6-cp10-cp11.diff - copied unchanged from r277299, head/contrib/llvm/patches/patch-18-llvm-r214802-armv6-cp10-cp11.diff head/contrib/llvm/patches/patch-18-llvm-r215811-arm-fpu-directive.diff - copied unchanged from r277299, head/contrib/llvm/patches/patch-19-llvm-r215811-arm-fpu-directive.diff head/contrib/llvm/patches/patch-19-enable-armv6-clrex.diff - copied unchanged from r277299, head/contrib/llvm/patches/patch-20-enable-armv6-clrex.diff head/contrib/llvm/patches/patch-20-llvm-r223147-arm-cpu-directive.diff - copied unchanged from r277299, head/contrib/llvm/patches/patch-22-llvm-r223147-arm-cpu-directive.diff head/contrib/llvm/patches/patch-21-llvm-r221170-ppc-vaarg.diff - copied unchanged from r277299, head/contrib/llvm/patches/patch-23-llvm-r221170-ppc-vaarg.diff head/contrib/llvm/patches/patch-22-llvm-r221791-ppc-small-pic.diff - copied, changed from r277299, head/contrib/llvm/patches/patch-24-llvm-r221791-ppc-small-pic.diff head/contrib/llvm/patches/patch-23-llvm-r224415-ppc-local.diff - copied unchanged from r277299, head/contrib/llvm/patches/patch-25-llvm-r224415-ppc-local.diff head/contrib/llvm/patches/patch-24-llvm-r213890-ppc-eh_frame.diff - copied unchanged from r277299, head/contrib/llvm/patches/patch-26-llvm-r213890-ppc-eh_frame.diff head/contrib/llvm/patches/patch-25-llvm-r224890-ppc-ctr-tls-loop.diff - copied unchanged from r277299, head/contrib/llvm/patches/patch-28-llvm-r224890-ppc-ctr-tls-loop.diff head/contrib/llvm/patches/patch-26-clang-r213790-type_traits-crash.diff - copied unchanged from r277299, head/contrib/llvm/patches/patch-29-clang-r213790-type_traits-crash.diff head/contrib/llvm/patches/patch-27-llvm-r222587-arm-add-pc.diff - copied unchanged from r277299, head/contrib/llvm/patches/patch-30-llvm-r222587-arm-add-pc.diff head/contrib/llvm/patches/patch-28-llvm-r222292-aarch64-no-neon.diff - copied unchanged from r277299, head/contrib/llvm/patches/patch-31-llvm-r222292-aarch64-no-neon.diff Deleted: head/contrib/llvm/patches/patch-07-llvm-r213960-ppc32-tls.diff head/contrib/llvm/patches/patch-08-llvm-r216989-r216990-fix-movw-armv6.diff head/contrib/llvm/patches/patch-09-clang-r217410-i386-garbage-float.diff head/contrib/llvm/patches/patch-10-llvm-r221709-debug-oom.diff head/contrib/llvm/patches/patch-11-llvm-r222562-loop-rotate.diff head/contrib/llvm/patches/patch-12-add-llvm-gvn-option.diff head/contrib/llvm/patches/patch-13-llvm-r218241-dwarf2-warning.diff head/contrib/llvm/patches/patch-14-llvm-r215352-aarch64-dyn-loader.diff head/contrib/llvm/patches/patch-15-llvm-r216571-dynamiclib-usability.diff head/contrib/llvm/patches/patch-16-clang-r221900-freebsd-aarch64.diff head/contrib/llvm/patches/patch-17-llvm-r222856-libapr-miscompile.diff head/contrib/llvm/patches/patch-18-llvm-r214802-armv6-cp10-cp11.diff head/contrib/llvm/patches/patch-19-llvm-r215811-arm-fpu-directive.diff head/contrib/llvm/patches/patch-20-enable-armv6-clrex.diff head/contrib/llvm/patches/patch-21-llvm-r223171-fix-vectorizer.diff head/contrib/llvm/patches/patch-22-llvm-r223147-arm-cpu-directive.diff head/contrib/llvm/patches/patch-23-llvm-r221170-ppc-vaarg.diff head/contrib/llvm/patches/patch-24-llvm-r221791-ppc-small-pic.diff head/contrib/llvm/patches/patch-25-llvm-r224415-ppc-local.diff head/contrib/llvm/patches/patch-26-llvm-r213890-ppc-eh_frame.diff head/contrib/llvm/patches/patch-27-llvm-r221703-ppc-tls_get_addr.diff head/contrib/llvm/patches/patch-28-llvm-r224890-ppc-ctr-tls-loop.diff head/contrib/llvm/patches/patch-29-clang-r213790-type_traits-crash.diff head/contrib/llvm/patches/patch-30-llvm-r222587-arm-add-pc.diff head/contrib/llvm/patches/patch-31-llvm-r222292-aarch64-no-neon.diff Modified: head/ObsoleteFiles.inc head/UPDATING head/contrib/llvm/include/llvm/Analysis/AliasSetTracker.h head/contrib/llvm/include/llvm/CodeGen/CallingConvLower.h head/contrib/llvm/include/llvm/Target/TargetCallingConv.td head/contrib/llvm/lib/Analysis/AliasSetTracker.cpp head/contrib/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp head/contrib/llvm/lib/Analysis/ValueTracking.cpp head/contrib/llvm/lib/MC/MCObjectFileInfo.cpp head/contrib/llvm/lib/Target/ARM/ARMFrameLowering.cpp head/contrib/llvm/lib/Target/ARM/ARMFrameLowering.h 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/Mips16ISelLowering.cpp head/contrib/llvm/lib/Target/Mips/Mips16ISelLowering.h head/contrib/llvm/lib/Target/Mips/Mips64InstrInfo.td head/contrib/llvm/lib/Target/Mips/MipsAsmPrinter.cpp head/contrib/llvm/lib/Target/Mips/MipsCallingConv.td head/contrib/llvm/lib/Target/Mips/MipsConstantIslandPass.cpp head/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp head/contrib/llvm/lib/Target/Mips/MipsISelLowering.h head/contrib/llvm/lib/Target/Mips/MipsInstrFPU.td head/contrib/llvm/lib/Target/Mips/MipsInstrInfo.td head/contrib/llvm/lib/Target/Mips/MipsLongBranch.cpp head/contrib/llvm/lib/Target/Mips/MipsRegisterInfo.cpp head/contrib/llvm/lib/Target/Mips/MipsSEFrameLowering.cpp head/contrib/llvm/lib/Target/Mips/MipsSEISelLowering.cpp head/contrib/llvm/lib/Target/Mips/MipsSEISelLowering.h head/contrib/llvm/lib/Target/Mips/MipsSubtarget.cpp head/contrib/llvm/lib/Target/Mips/MipsSubtarget.h head/contrib/llvm/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp head/contrib/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp head/contrib/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp head/contrib/llvm/lib/Target/PowerPC/PPCFastISel.cpp head/contrib/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp head/contrib/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp head/contrib/llvm/lib/Target/PowerPC/PPCISelLowering.cpp head/contrib/llvm/lib/Target/PowerPC/PPCInstr64Bit.td head/contrib/llvm/lib/Target/PowerPC/PPCRegisterInfo.td head/contrib/llvm/lib/Target/X86/X86FastISel.cpp head/contrib/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp head/contrib/llvm/lib/Transforms/Scalar/MergedLoadStoreMotion.cpp head/contrib/llvm/lib/Transforms/Scalar/SROA.cpp head/contrib/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp head/contrib/llvm/patches/README.TXT head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td head/contrib/llvm/tools/clang/lib/Basic/Version.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGExprScalar.cpp head/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp head/contrib/llvm/utils/TableGen/CallingConvEmitter.cpp head/etc/mtree/BSD.debug.dist head/etc/mtree/BSD.include.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/libllvmmipscodegen/Makefile head/lib/libclang_rt/Makefile.inc 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 Sun Jan 18 14:04:55 2015 (r277319) +++ head/ObsoleteFiles.inc Sun Jan 18 14:14:47 2015 (r277320) @@ -38,6 +38,60 @@ # xargs -n1 | sort | uniq -d; # done +# 20150118: new clang import which bumps version from 3.5.0 to 3.5.1. +OLD_FILES+=usr/include/clang/3.5.0/__wmmintrin_aes.h +OLD_FILES+=usr/include/clang/3.5.0/__wmmintrin_pclmul.h +OLD_FILES+=usr/include/clang/3.5.0/altivec.h +OLD_FILES+=usr/include/clang/3.5.0/ammintrin.h +OLD_FILES+=usr/include/clang/3.5.0/arm_acle.h +OLD_FILES+=usr/include/clang/3.5.0/arm_neon.h +OLD_FILES+=usr/include/clang/3.5.0/avx2intrin.h +OLD_FILES+=usr/include/clang/3.5.0/avxintrin.h +OLD_FILES+=usr/include/clang/3.5.0/bmi2intrin.h +OLD_FILES+=usr/include/clang/3.5.0/bmiintrin.h +OLD_FILES+=usr/include/clang/3.5.0/cpuid.h +OLD_FILES+=usr/include/clang/3.5.0/emmintrin.h +OLD_FILES+=usr/include/clang/3.5.0/f16cintrin.h +OLD_FILES+=usr/include/clang/3.5.0/fma4intrin.h +OLD_FILES+=usr/include/clang/3.5.0/fmaintrin.h +OLD_FILES+=usr/include/clang/3.5.0/ia32intrin.h +OLD_FILES+=usr/include/clang/3.5.0/immintrin.h +OLD_FILES+=usr/include/clang/3.5.0/lzcntintrin.h +OLD_FILES+=usr/include/clang/3.5.0/mm3dnow.h +OLD_FILES+=usr/include/clang/3.5.0/mm_malloc.h +OLD_FILES+=usr/include/clang/3.5.0/mmintrin.h +OLD_FILES+=usr/include/clang/3.5.0/module.modulemap +OLD_FILES+=usr/include/clang/3.5.0/nmmintrin.h +OLD_FILES+=usr/include/clang/3.5.0/pmmintrin.h +OLD_FILES+=usr/include/clang/3.5.0/popcntintrin.h +OLD_FILES+=usr/include/clang/3.5.0/prfchwintrin.h +OLD_FILES+=usr/include/clang/3.5.0/rdseedintrin.h +OLD_FILES+=usr/include/clang/3.5.0/rtmintrin.h +OLD_FILES+=usr/include/clang/3.5.0/shaintrin.h +OLD_FILES+=usr/include/clang/3.5.0/smmintrin.h +OLD_FILES+=usr/include/clang/3.5.0/tbmintrin.h +OLD_FILES+=usr/include/clang/3.5.0/tmmintrin.h +OLD_FILES+=usr/include/clang/3.5.0/wmmintrin.h +OLD_FILES+=usr/include/clang/3.5.0/x86intrin.h +OLD_FILES+=usr/include/clang/3.5.0/xmmintrin.h +OLD_FILES+=usr/include/clang/3.5.0/xopintrin.h +OLD_DIRS+=usr/include/clang/3.5.0 +OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.asan-i386.a +OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.asan-x86_64.a +OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.asan_cxx-i386.a +OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.asan_cxx-x86_64.a +OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.profile-arm.a +OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.profile-i386.a +OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.profile-x86_64.a +OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.san-i386.a +OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.san-x86_64.a +OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.ubsan-i386.a +OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.ubsan-x86_64.a +OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.ubsan_cxx-i386.a +OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.ubsan_cxx-x86_64.a +OLD_DIRS+=usr/lib/clang/3.5.0/lib/freebsd +OLD_DIRS+=usr/lib/clang/3.5.0/lib +OLD_DIRS+=usr/lib/clang/3.5.0 # 20150102: removal of texinfo OLD_FILES+=usr/bin/info OLD_FILES+=usr/bin/infokey Modified: head/UPDATING ============================================================================== --- head/UPDATING Sun Jan 18 14:04:55 2015 (r277319) +++ head/UPDATING Sun Jan 18 14:14:47 2015 (r277320) @@ -31,6 +31,12 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 11 disable the most expensive debugging functionality run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20150118: + Clang and llvm have been upgraded to 3.5.1 release. This is a bugfix + only release, no new features have been added. Please see the 20141231 + entry below for information about prerequisites and upgrading, if you + are not already using 3.5.0. + 20150107: ELF tools addr2line, elfcopy (strip), nm, size, and strings are now taken from the ELF Tool Chain project rather than GNU binutils. They Modified: head/contrib/llvm/include/llvm/Analysis/AliasSetTracker.h ============================================================================== --- head/contrib/llvm/include/llvm/Analysis/AliasSetTracker.h Sun Jan 18 14:04:55 2015 (r277319) +++ head/contrib/llvm/include/llvm/Analysis/AliasSetTracker.h Sun Jan 18 14:14:47 2015 (r277320) @@ -253,13 +253,16 @@ private: const MDNode *TBAAInfo, bool KnownMustAlias = false); void addUnknownInst(Instruction *I, AliasAnalysis &AA); - void removeUnknownInst(Instruction *I) { + void removeUnknownInst(AliasSetTracker &AST, Instruction *I) { + bool WasEmpty = UnknownInsts.empty(); for (size_t i = 0, e = UnknownInsts.size(); i != e; ++i) if (UnknownInsts[i] == I) { UnknownInsts[i] = UnknownInsts.back(); UnknownInsts.pop_back(); --i; --e; // Revisit the moved entry. } + if (!WasEmpty && UnknownInsts.empty()) + dropRef(AST); } void setVolatile() { Volatile = true; } Modified: head/contrib/llvm/include/llvm/CodeGen/CallingConvLower.h ============================================================================== --- head/contrib/llvm/include/llvm/CodeGen/CallingConvLower.h Sun Jan 18 14:04:55 2015 (r277319) +++ head/contrib/llvm/include/llvm/CodeGen/CallingConvLower.h Sun Jan 18 14:14:47 2015 (r277320) @@ -31,18 +31,25 @@ class TargetRegisterInfo; class CCValAssign { public: enum LocInfo { - Full, // The value fills the full location. - SExt, // The value is sign extended in the location. - ZExt, // The value is zero extended in the location. - AExt, // The value is extended with undefined upper bits. - BCvt, // The value is bit-converted in the location. - VExt, // The value is vector-widened in the location. - // FIXME: Not implemented yet. Code that uses AExt to mean - // vector-widen should be fixed to use VExt instead. - FPExt, // The floating-point value is fp-extended in the location. - Indirect // The location contains pointer to the value. + Full, // The value fills the full location. + SExt, // The value is sign extended in the location. + ZExt, // The value is zero extended in the location. + AExt, // The value is extended with undefined upper bits. + BCvt, // The value is bit-converted in the location. + VExt, // The value is vector-widened in the location. + // FIXME: Not implemented yet. Code that uses AExt to mean + // vector-widen should be fixed to use VExt instead. + FPExt, // The floating-point value is fp-extended in the location. + Indirect, // The location contains pointer to the value. + SExtUpper, // The value is in the upper bits of the location and should be + // sign extended when retrieved. + ZExtUpper, // The value is in the upper bits of the location and should be + // zero extended when retrieved. + AExtUpper // The value is in the upper bits of the location and should be + // extended with undefined upper bits when retrieved. // TODO: a subset of the value is in the location. }; + private: /// ValNo - This is the value number begin assigned (e.g. an argument number). unsigned ValNo; @@ -146,6 +153,9 @@ public: return (HTP == AExt || HTP == SExt || HTP == ZExt); } + bool isUpperBitsInLoc() const { + return HTP == AExtUpper || HTP == SExtUpper || HTP == ZExtUpper; + } }; /// CCAssignFn - This function assigns a location for Val, updating State to @@ -208,10 +218,10 @@ private: // while "%t" goes to the stack: it wouldn't be described in ByValRegs. // // Supposed use-case for this collection: - // 1. Initially ByValRegs is empty, InRegsParamsProceed is 0. + // 1. Initially ByValRegs is empty, InRegsParamsProcessed is 0. // 2. HandleByVal fillups ByValRegs. // 3. Argument analysis (LowerFormatArguments, for example). After - // some byval argument was analyzed, InRegsParamsProceed is increased. + // some byval argument was analyzed, InRegsParamsProcessed is increased. struct ByValInfo { ByValInfo(unsigned B, unsigned E, bool IsWaste = false) : Begin(B), End(E), Waste(IsWaste) {} @@ -229,9 +239,9 @@ private: }; SmallVector ByValRegs; - // InRegsParamsProceed - shows how many instances of ByValRegs was proceed + // InRegsParamsProcessed - shows how many instances of ByValRegs was proceed // during argument analysis. - unsigned InRegsParamsProceed; + unsigned InRegsParamsProcessed; protected: ParmContext CallOrPrologue; @@ -412,7 +422,7 @@ public: unsigned getInRegsParamsCount() const { return ByValRegs.size(); } // Returns count of byval in-regs arguments proceed. - unsigned getInRegsParamsProceed() const { return InRegsParamsProceed; } + unsigned getInRegsParamsProcessed() const { return InRegsParamsProcessed; } // Get information about N-th byval parameter that is stored in registers. // Here "ByValParamIndex" is N. @@ -436,20 +446,20 @@ public: // Returns false, if end is reached. bool nextInRegsParam() { unsigned e = ByValRegs.size(); - if (InRegsParamsProceed < e) - ++InRegsParamsProceed; - return InRegsParamsProceed < e; + if (InRegsParamsProcessed < e) + ++InRegsParamsProcessed; + return InRegsParamsProcessed < e; } // Clear byval registers tracking info. void clearByValRegsInfo() { - InRegsParamsProceed = 0; + InRegsParamsProcessed = 0; ByValRegs.clear(); } // Rewind byval registers tracking info. void rewindByValRegsInfo() { - InRegsParamsProceed = 0; + InRegsParamsProcessed = 0; } ParmContext getCallOrPrologue() const { return CallOrPrologue; } Modified: head/contrib/llvm/include/llvm/Target/TargetCallingConv.td ============================================================================== --- head/contrib/llvm/include/llvm/Target/TargetCallingConv.td Sun Jan 18 14:04:55 2015 (r277319) +++ head/contrib/llvm/include/llvm/Target/TargetCallingConv.td Sun Jan 18 14:14:47 2015 (r277320) @@ -67,6 +67,9 @@ class CCIfSplit : CCIf<"ArgF /// the specified action. class CCIfSRet : CCIf<"ArgFlags.isSRet()", A> {} +/// CCIfVarArg - If the current function is vararg - apply the action +class CCIfVarArg : CCIf<"State.isVarArg()", A> {} + /// CCIfNotVarArg - If the current function is not vararg - apply the action class CCIfNotVarArg : CCIf<"!State.isVarArg()", A> {} @@ -119,6 +122,12 @@ class CCPromoteToType ValueType DestTy = destTy; } +/// CCPromoteToUpperBitsInType - If applied, this promotes the specified current +/// value to the specified type and shifts the value into the upper bits. +class CCPromoteToUpperBitsInType : CCAction { + ValueType DestTy = destTy; +} + /// CCBitConvertToType - If applied, this bitconverts the specified current /// value to the specified type. class CCBitConvertToType : CCAction { @@ -141,6 +150,13 @@ class CCDelegateTo : CCA /// that the target supports. class CallingConv actions> { list Actions = actions; + bit Custom = 0; +} + +/// CustomCallingConv - An instance of this is used to declare calling +/// conventions that are implemented using a custom function of the same name. +class CustomCallingConv : CallingConv<[]> { + let Custom = 1; } /// CalleeSavedRegs - A list of callee saved registers for a given calling Modified: head/contrib/llvm/lib/Analysis/AliasSetTracker.cpp ============================================================================== --- head/contrib/llvm/lib/Analysis/AliasSetTracker.cpp Sun Jan 18 14:04:55 2015 (r277319) +++ head/contrib/llvm/lib/Analysis/AliasSetTracker.cpp Sun Jan 18 14:14:47 2015 (r277320) @@ -55,10 +55,13 @@ void AliasSet::mergeSetIn(AliasSet &AS, AliasTy = MayAlias; } + bool ASHadUnknownInsts = !AS.UnknownInsts.empty(); if (UnknownInsts.empty()) { // Merge call sites... - if (!AS.UnknownInsts.empty()) + if (ASHadUnknownInsts) { std::swap(UnknownInsts, AS.UnknownInsts); - } else if (!AS.UnknownInsts.empty()) { + addRef(); + } + } else if (ASHadUnknownInsts) { UnknownInsts.insert(UnknownInsts.end(), AS.UnknownInsts.begin(), AS.UnknownInsts.end()); AS.UnknownInsts.clear(); } @@ -76,6 +79,8 @@ void AliasSet::mergeSetIn(AliasSet &AS, AS.PtrListEnd = &AS.PtrList; assert(*AS.PtrListEnd == nullptr && "End of list is not null?"); } + if (ASHadUnknownInsts) + AS.dropRef(AST); } void AliasSetTracker::removeAliasSet(AliasSet *AS) { @@ -123,6 +128,8 @@ void AliasSet::addPointer(AliasSetTracke } void AliasSet::addUnknownInst(Instruction *I, AliasAnalysis &AA) { + if (UnknownInsts.empty()) + addRef(); UnknownInsts.push_back(I); if (!I->mayWriteToMemory()) { @@ -218,13 +225,14 @@ AliasSet *AliasSetTracker::findAliasSetF uint64_t Size, const MDNode *TBAAInfo) { AliasSet *FoundSet = nullptr; - for (iterator I = begin(), E = end(); I != E; ++I) { - if (I->Forward || !I->aliasesPointer(Ptr, Size, TBAAInfo, AA)) continue; + for (iterator I = begin(), E = end(); I != E;) { + iterator Cur = I++; + if (Cur->Forward || !Cur->aliasesPointer(Ptr, Size, TBAAInfo, AA)) continue; if (!FoundSet) { // If this is the first alias set ptr can go into. - FoundSet = I; // Remember it. + FoundSet = Cur; // Remember it. } else { // Otherwise, we must merge the sets. - FoundSet->mergeSetIn(*I, *this); // Merge in contents. + FoundSet->mergeSetIn(*Cur, *this); // Merge in contents. } } @@ -246,14 +254,14 @@ bool AliasSetTracker::containsPointer(Va AliasSet *AliasSetTracker::findAliasSetForUnknownInst(Instruction *Inst) { AliasSet *FoundSet = nullptr; - for (iterator I = begin(), E = end(); I != E; ++I) { - if (I->Forward || !I->aliasesUnknownInst(Inst, AA)) + for (iterator I = begin(), E = end(); I != E;) { + iterator Cur = I++; + if (Cur->Forward || !Cur->aliasesUnknownInst(Inst, AA)) continue; - if (!FoundSet) // If this is the first alias set ptr can go into. - FoundSet = I; // Remember it. - else if (!I->Forward) // Otherwise, we must merge the sets. - FoundSet->mergeSetIn(*I, *this); // Merge in contents. + FoundSet = Cur; // Remember it. + else if (!Cur->Forward) // Otherwise, we must merge the sets. + FoundSet->mergeSetIn(*Cur, *this); // Merge in contents. } return FoundSet; } @@ -393,6 +401,8 @@ void AliasSetTracker::add(const AliasSet /// tracker. void AliasSetTracker::remove(AliasSet &AS) { // Drop all call sites. + if (!AS.UnknownInsts.empty()) + AS.dropRef(*this); AS.UnknownInsts.clear(); // Clear the alias set. @@ -489,10 +499,10 @@ void AliasSetTracker::deleteValue(Value if (Instruction *Inst = dyn_cast(PtrVal)) { if (Inst->mayReadOrWriteMemory()) { // Scan all the alias sets to see if this call site is contained. - for (iterator I = begin(), E = end(); I != E; ++I) { - if (I->Forward) continue; - - I->removeUnknownInst(Inst); + for (iterator I = begin(), E = end(); I != E;) { + iterator Cur = I++; + if (!Cur->Forward) + Cur->removeUnknownInst(*this, Inst); } } } Modified: head/contrib/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp ============================================================================== --- head/contrib/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp Sun Jan 18 14:04:55 2015 (r277319) +++ head/contrib/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp Sun Jan 18 14:14:47 2015 (r277320) @@ -14,7 +14,7 @@ #include "llvm/Analysis/BlockFrequencyInfoImpl.h" #include "llvm/ADT/SCCIterator.h" #include "llvm/Support/raw_ostream.h" -#include +#include using namespace llvm; using namespace llvm::bfi_detail; @@ -123,8 +123,12 @@ static void combineWeight(Weight &W, con } assert(W.Type == OtherW.Type); assert(W.TargetNode == OtherW.TargetNode); - assert(W.Amount < W.Amount + OtherW.Amount && "Unexpected overflow"); - W.Amount += OtherW.Amount; + assert(OtherW.Amount && "Expected non-zero weight"); + if (W.Amount > W.Amount + OtherW.Amount) + // Saturate on overflow. + W.Amount = UINT64_MAX; + else + W.Amount += OtherW.Amount; } static void combineWeightsBySorting(WeightList &Weights) { // Sort so edges to the same node are adjacent. @@ -207,11 +211,19 @@ void Distribution::normalize() { Shift = 33 - countLeadingZeros(Total); // Early exit if nothing needs to be scaled. - if (!Shift) + if (!Shift) { + // If we didn't overflow then combineWeights() shouldn't have changed the + // sum of the weights, but let's double-check. + assert(Total == std::accumulate(Weights.begin(), Weights.end(), UINT64_C(0), + [](uint64_t Sum, const Weight &W) { + return Sum + W.Amount; + }) && + "Expected total to be correct"); return; + } // Recompute the total through accumulation (rather than shifting it) so that - // it's accurate after shifting. + // it's accurate after shifting and any changes combineWeights() made above. Total = 0; // Sum the weights to each node and shift right if necessary. Modified: head/contrib/llvm/lib/Analysis/ValueTracking.cpp ============================================================================== --- head/contrib/llvm/lib/Analysis/ValueTracking.cpp Sun Jan 18 14:04:55 2015 (r277319) +++ head/contrib/llvm/lib/Analysis/ValueTracking.cpp Sun Jan 18 14:14:47 2015 (r277320) @@ -1987,23 +1987,31 @@ bool llvm::isSafeToSpeculativelyExecute( default: return true; case Instruction::UDiv: - case Instruction::URem: - // x / y is undefined if y == 0, but calculations like x / 3 are safe. - return isKnownNonZero(Inst->getOperand(1), TD); + case Instruction::URem: { + // x / y is undefined if y == 0. + const APInt *V; + if (match(Inst->getOperand(1), m_APInt(V))) + return *V != 0; + return false; + } case Instruction::SDiv: case Instruction::SRem: { - Value *Op = Inst->getOperand(1); - // x / y is undefined if y == 0 - if (!isKnownNonZero(Op, TD)) - return false; - // x / y might be undefined if y == -1 - unsigned BitWidth = getBitWidth(Op->getType(), TD); - if (BitWidth == 0) - return false; - APInt KnownZero(BitWidth, 0); - APInt KnownOne(BitWidth, 0); - computeKnownBits(Op, KnownZero, KnownOne, TD); - return !!KnownZero; + // x / y is undefined if y == 0 or x == INT_MIN and y == -1 + const APInt *X, *Y; + if (match(Inst->getOperand(1), m_APInt(Y))) { + if (*Y != 0) { + if (*Y == -1) { + // The numerator can't be MinSignedValue if the denominator is -1. + if (match(Inst->getOperand(0), m_APInt(X))) + return !Y->isMinSignedValue(); + // The numerator *might* be MinSignedValue. + return false; + } + // The denominator is not 0 or -1, it's safe to proceed. + return true; + } + } + return false; } case Instruction::Load: { const LoadInst *LI = cast(Inst); Modified: head/contrib/llvm/lib/MC/MCObjectFileInfo.cpp ============================================================================== --- head/contrib/llvm/lib/MC/MCObjectFileInfo.cpp Sun Jan 18 14:04:55 2015 (r277319) +++ head/contrib/llvm/lib/MC/MCObjectFileInfo.cpp Sun Jan 18 14:14:47 2015 (r277320) @@ -341,6 +341,8 @@ void MCObjectFileInfo::InitELFMCObjectFi break; case Triple::mips: case Triple::mipsel: + case Triple::mips64: + case Triple::mips64el: // MIPS uses indirect pointer to refer personality functions, so that the // eh_frame section can be read-only. DW.ref.personality will be generated // for relocation. Modified: head/contrib/llvm/lib/Target/ARM/ARMFrameLowering.cpp ============================================================================== --- head/contrib/llvm/lib/Target/ARM/ARMFrameLowering.cpp Sun Jan 18 14:04:55 2015 (r277319) +++ head/contrib/llvm/lib/Target/ARM/ARMFrameLowering.cpp Sun Jan 18 14:14:47 2015 (r277320) @@ -566,11 +566,59 @@ void ARMFrameLowering::emitPrologue(Mach AFI->setShouldRestoreSPFromFP(true); } +// Resolve TCReturn pseudo-instruction +void ARMFrameLowering::fixTCReturn(MachineFunction &MF, + MachineBasicBlock &MBB) const { + MachineBasicBlock::iterator MBBI = MBB.getLastNonDebugInstr(); + assert(MBBI->isReturn() && "Can only insert epilog into returning blocks"); + unsigned RetOpcode = MBBI->getOpcode(); + DebugLoc dl = MBBI->getDebugLoc(); + const ARMBaseInstrInfo &TII = + *MF.getTarget().getSubtarget().getInstrInfo(); + + if (!(RetOpcode == ARM::TCRETURNdi || RetOpcode == ARM::TCRETURNri)) + return; + + // Tail call return: adjust the stack pointer and jump to callee. + MBBI = MBB.getLastNonDebugInstr(); + MachineOperand &JumpTarget = MBBI->getOperand(0); + + // Jump to label or value in register. + if (RetOpcode == ARM::TCRETURNdi) { + unsigned TCOpcode = STI.isThumb() ? + (STI.isTargetMachO() ? ARM::tTAILJMPd : ARM::tTAILJMPdND) : + ARM::TAILJMPd; + MachineInstrBuilder MIB = BuildMI(MBB, MBBI, dl, TII.get(TCOpcode)); + if (JumpTarget.isGlobal()) + MIB.addGlobalAddress(JumpTarget.getGlobal(), JumpTarget.getOffset(), + JumpTarget.getTargetFlags()); + else { + assert(JumpTarget.isSymbol()); + MIB.addExternalSymbol(JumpTarget.getSymbolName(), + JumpTarget.getTargetFlags()); + } + + // Add the default predicate in Thumb mode. + if (STI.isThumb()) MIB.addImm(ARMCC::AL).addReg(0); + } else if (RetOpcode == ARM::TCRETURNri) { + BuildMI(MBB, MBBI, dl, + TII.get(STI.isThumb() ? ARM::tTAILJMPr : ARM::TAILJMPr)). + addReg(JumpTarget.getReg(), RegState::Kill); + } + + MachineInstr *NewMI = std::prev(MBBI); + for (unsigned i = 1, e = MBBI->getNumOperands(); i != e; ++i) + NewMI->addOperand(MBBI->getOperand(i)); + + // Delete the pseudo instruction TCRETURN. + MBB.erase(MBBI); + MBBI = NewMI; +} + void ARMFrameLowering::emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const { MachineBasicBlock::iterator MBBI = MBB.getLastNonDebugInstr(); assert(MBBI->isReturn() && "Can only insert epilog into returning blocks"); - unsigned RetOpcode = MBBI->getOpcode(); DebugLoc dl = MBBI->getDebugLoc(); MachineFrameInfo *MFI = MF.getFrameInfo(); ARMFunctionInfo *AFI = MF.getInfo(); @@ -588,8 +636,10 @@ void ARMFrameLowering::emitEpilogue(Mach // All calls are tail calls in GHC calling conv, and functions have no // prologue/epilogue. - if (MF.getFunction()->getCallingConv() == CallingConv::GHC) + if (MF.getFunction()->getCallingConv() == CallingConv::GHC) { + fixTCReturn(MF, MBB); return; + } if (!AFI->hasStackFrame()) { if (NumBytes - ArgRegsSaveSize != 0) @@ -661,42 +711,7 @@ void ARMFrameLowering::emitEpilogue(Mach if (AFI->getGPRCalleeSavedArea1Size()) MBBI++; } - if (RetOpcode == ARM::TCRETURNdi || RetOpcode == ARM::TCRETURNri) { - // Tail call return: adjust the stack pointer and jump to callee. - MBBI = MBB.getLastNonDebugInstr(); - MachineOperand &JumpTarget = MBBI->getOperand(0); - - // Jump to label or value in register. - if (RetOpcode == ARM::TCRETURNdi) { - unsigned TCOpcode = STI.isThumb() ? - (STI.isTargetMachO() ? ARM::tTAILJMPd : ARM::tTAILJMPdND) : - ARM::TAILJMPd; - MachineInstrBuilder MIB = BuildMI(MBB, MBBI, dl, TII.get(TCOpcode)); - if (JumpTarget.isGlobal()) - MIB.addGlobalAddress(JumpTarget.getGlobal(), JumpTarget.getOffset(), - JumpTarget.getTargetFlags()); - else { - assert(JumpTarget.isSymbol()); - MIB.addExternalSymbol(JumpTarget.getSymbolName(), - JumpTarget.getTargetFlags()); - } - - // Add the default predicate in Thumb mode. - if (STI.isThumb()) MIB.addImm(ARMCC::AL).addReg(0); - } else if (RetOpcode == ARM::TCRETURNri) { - BuildMI(MBB, MBBI, dl, - TII.get(STI.isThumb() ? ARM::tTAILJMPr : ARM::TAILJMPr)). - addReg(JumpTarget.getReg(), RegState::Kill); - } - - MachineInstr *NewMI = std::prev(MBBI); - for (unsigned i = 1, e = MBBI->getNumOperands(); i != e; ++i) - NewMI->addOperand(MBBI->getOperand(i)); - - // Delete the pseudo instruction TCRETURN. - MBB.erase(MBBI); - MBBI = NewMI; - } + fixTCReturn(MF, MBB); if (ArgRegsSaveSize) emitSPUpdate(isARM, MBB, MBBI, dl, TII, ArgRegsSaveSize); Modified: head/contrib/llvm/lib/Target/ARM/ARMFrameLowering.h ============================================================================== --- head/contrib/llvm/lib/Target/ARM/ARMFrameLowering.h Sun Jan 18 14:04:55 2015 (r277319) +++ head/contrib/llvm/lib/Target/ARM/ARMFrameLowering.h Sun Jan 18 14:14:47 2015 (r277320) @@ -31,6 +31,8 @@ public: void emitPrologue(MachineFunction &MF) const override; void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const override; + void fixTCReturn(MachineFunction &MF, MachineBasicBlock &MBB) const; + bool spillCalleeSavedRegisters(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, const std::vector &CSI, Modified: head/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp ============================================================================== --- head/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp Sun Jan 18 14:04:55 2015 (r277319) +++ head/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp Sun Jan 18 14:14:47 2015 (r277320) @@ -1521,7 +1521,7 @@ ARMTargetLowering::LowerCall(TargetLower // True if this byval aggregate will be split between registers // and memory. unsigned ByValArgsCount = CCInfo.getInRegsParamsCount(); - unsigned CurByValIdx = CCInfo.getInRegsParamsProceed(); + unsigned CurByValIdx = CCInfo.getInRegsParamsProcessed(); if (CurByValIdx < ByValArgsCount) { @@ -2962,7 +2962,7 @@ ARMTargetLowering::LowerFormalArguments( if (Flags.isByVal()) { unsigned ExtraArgRegsSize; unsigned ExtraArgRegsSaveSize; - computeRegArea(CCInfo, MF, CCInfo.getInRegsParamsProceed(), + computeRegArea(CCInfo, MF, CCInfo.getInRegsParamsProcessed(), Flags.getByValSize(), ExtraArgRegsSize, ExtraArgRegsSaveSize); @@ -3086,7 +3086,7 @@ ARMTargetLowering::LowerFormalArguments( // Since they could be overwritten by lowering of arguments in case of // a tail call. if (Flags.isByVal()) { - unsigned CurByValIndex = CCInfo.getInRegsParamsProceed(); + unsigned CurByValIndex = CCInfo.getInRegsParamsProcessed(); ByValStoreOffset = RoundUpToAlignment(ByValStoreOffset, Flags.getByValAlign()); int FrameIndex = StoreByValRegs( Modified: head/contrib/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp ============================================================================== --- head/contrib/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp Sun Jan 18 14:04:55 2015 (r277319) +++ head/contrib/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp Sun Jan 18 14:14:47 2015 (r277320) @@ -200,14 +200,14 @@ class MipsAsmParser : public MCTargetAsm // Example: INSERT.B $w0[n], $1 => 16 > n >= 0 bool validateMSAIndex(int Val, int RegKind); - void setFeatureBits(unsigned Feature, StringRef FeatureString) { + void setFeatureBits(uint64_t Feature, StringRef FeatureString) { if (!(STI.getFeatureBits() & Feature)) { setAvailableFeatures( ComputeAvailableFeatures(STI.ToggleFeature(FeatureString))); } } - void clearFeatureBits(unsigned Feature, StringRef FeatureString) { + void clearFeatureBits(uint64_t Feature, StringRef FeatureString) { if (STI.getFeatureBits() & Feature) { setAvailableFeatures( ComputeAvailableFeatures(STI.ToggleFeature(FeatureString))); Modified: head/contrib/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp ============================================================================== --- head/contrib/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp Sun Jan 18 14:04:55 2015 (r277319) +++ head/contrib/llvm/lib/Target/Mips/Disassembler/MipsDisassembler.cpp Sun Jan 18 14:14:47 2015 (r277320) @@ -250,6 +250,11 @@ static DecodeStatus DecodeMem(MCInst &In uint64_t Address, const void *Decoder); +static DecodeStatus DecodeCacheOp(MCInst &Inst, + unsigned Insn, + uint64_t Address, + const void *Decoder); + static DecodeStatus DecodeMSA128Mem(MCInst &Inst, unsigned Insn, uint64_t Address, const void *Decoder); @@ -267,6 +272,14 @@ static DecodeStatus DecodeFMem(MCInst &I uint64_t Address, const void *Decoder); +static DecodeStatus DecodeFMem2(MCInst &Inst, unsigned Insn, + uint64_t Address, + const void *Decoder); + +static DecodeStatus DecodeFMem3(MCInst &Inst, unsigned Insn, + uint64_t Address, + const void *Decoder); + static DecodeStatus DecodeSpecial3LlSc(MCInst &Inst, unsigned Insn, uint64_t Address, @@ -451,7 +464,7 @@ static DecodeStatus DecodeAddiGroupBranc InsnType Rs = fieldFromInstruction(insn, 21, 5); InsnType Rt = fieldFromInstruction(insn, 16, 5); - InsnType Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) << 2; + InsnType Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) * 4; bool HasRs = false; if (Rs >= Rt) { @@ -490,7 +503,7 @@ static DecodeStatus DecodeDaddiGroupBran InsnType Rs = fieldFromInstruction(insn, 21, 5); InsnType Rt = fieldFromInstruction(insn, 16, 5); - InsnType Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) << 2; + InsnType Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) * 4; bool HasRs = false; if (Rs >= Rt) { @@ -530,7 +543,7 @@ static DecodeStatus DecodeBlezlGroupBran InsnType Rs = fieldFromInstruction(insn, 21, 5); InsnType Rt = fieldFromInstruction(insn, 16, 5); - InsnType Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) << 2; + InsnType Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) * 4; bool HasRs = false; if (Rt == 0) @@ -575,7 +588,7 @@ static DecodeStatus DecodeBgtzlGroupBran InsnType Rs = fieldFromInstruction(insn, 21, 5); InsnType Rt = fieldFromInstruction(insn, 16, 5); - InsnType Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) << 2; + InsnType Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) * 4; if (Rt == 0) return MCDisassembler::Fail; @@ -617,7 +630,7 @@ static DecodeStatus DecodeBgtzGroupBranc InsnType Rs = fieldFromInstruction(insn, 21, 5); InsnType Rt = fieldFromInstruction(insn, 16, 5); - InsnType Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) << 2; + InsnType Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) * 4; bool HasRs = false; bool HasRt = false; @@ -666,7 +679,7 @@ static DecodeStatus DecodeBlezGroupBranc InsnType Rs = fieldFromInstruction(insn, 21, 5); InsnType Rt = fieldFromInstruction(insn, 16, 5); - InsnType Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) << 2; + InsnType Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) * 4; bool HasRs = false; if (Rt == 0) @@ -964,6 +977,23 @@ static DecodeStatus DecodeMem(MCInst &In return MCDisassembler::Success; } +static DecodeStatus DecodeCacheOp(MCInst &Inst, + unsigned Insn, + uint64_t Address, + const void *Decoder) { + int Offset = SignExtend32<16>(Insn & 0xffff); + 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 DecodeMSA128Mem(MCInst &Inst, unsigned Insn, uint64_t Address, const void *Decoder) { int Offset = SignExtend32<10>(fieldFromInstruction(Insn, 16, 10)); @@ -995,15 +1025,15 @@ static DecodeStatus DecodeMSA128Mem(MCIn break; case Mips::LD_H: case Mips::ST_H: - Inst.addOperand(MCOperand::CreateImm(Offset << 1)); + Inst.addOperand(MCOperand::CreateImm(Offset * 2)); break; case Mips::LD_W: case Mips::ST_W: - Inst.addOperand(MCOperand::CreateImm(Offset << 2)); + Inst.addOperand(MCOperand::CreateImm(Offset * 4)); break; case Mips::LD_D: case Mips::ST_D: - Inst.addOperand(MCOperand::CreateImm(Offset << 3)); + Inst.addOperand(MCOperand::CreateImm(Offset * 8)); break; } @@ -1067,6 +1097,42 @@ static DecodeStatus DecodeFMem(MCInst &I return MCDisassembler::Success; } +static DecodeStatus DecodeFMem2(MCInst &Inst, + unsigned Insn, + uint64_t Address, + const void *Decoder) { + int Offset = SignExtend32<16>(Insn & 0xffff); + unsigned Reg = fieldFromInstruction(Insn, 16, 5); + unsigned Base = fieldFromInstruction(Insn, 21, 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 DecodeFMem3(MCInst &Inst, + unsigned Insn, + uint64_t Address, + const void *Decoder) { + int Offset = SignExtend32<16>(Insn & 0xffff); + unsigned Reg = fieldFromInstruction(Insn, 16, 5); + unsigned Base = fieldFromInstruction(Insn, 21, 5); + + Reg = getReg(Decoder, Mips::COP3RegClassID, 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, @@ -1225,7 +1291,7 @@ static DecodeStatus DecodeBranchTarget(M unsigned Offset, uint64_t Address, const void *Decoder) { - int32_t BranchOffset = (SignExtend32<16>(Offset) << 2) + 4; + int32_t BranchOffset = (SignExtend32<16>(Offset) * 4) + 4; Inst.addOperand(MCOperand::CreateImm(BranchOffset)); return MCDisassembler::Success; } @@ -1244,7 +1310,7 @@ static DecodeStatus DecodeBranchTarget21 unsigned Offset, uint64_t Address, const void *Decoder) { - int32_t BranchOffset = SignExtend32<21>(Offset) << 2; + int32_t BranchOffset = SignExtend32<21>(Offset) * 4; Inst.addOperand(MCOperand::CreateImm(BranchOffset)); return MCDisassembler::Success; @@ -1254,7 +1320,7 @@ static DecodeStatus DecodeBranchTarget26 unsigned Offset, uint64_t Address, const void *Decoder) { - int32_t BranchOffset = SignExtend32<26>(Offset) << 2; + int32_t BranchOffset = SignExtend32<26>(Offset) * 4; Inst.addOperand(MCOperand::CreateImm(BranchOffset)); return MCDisassembler::Success; @@ -1264,7 +1330,7 @@ static DecodeStatus DecodeBranchTargetMM unsigned Offset, uint64_t Address, const void *Decoder) { - int32_t BranchOffset = SignExtend32<16>(Offset) << 1; + int32_t BranchOffset = SignExtend32<16>(Offset) * 2; Inst.addOperand(MCOperand::CreateImm(BranchOffset)); return MCDisassembler::Success; } @@ -1317,12 +1383,12 @@ static DecodeStatus DecodeExtSize(MCInst static DecodeStatus DecodeSimm19Lsl2(MCInst &Inst, unsigned Insn, uint64_t Address, const void *Decoder) { - Inst.addOperand(MCOperand::CreateImm(SignExtend32<19>(Insn) << 2)); + Inst.addOperand(MCOperand::CreateImm(SignExtend32<19>(Insn) * 4)); return MCDisassembler::Success; } static DecodeStatus DecodeSimm18Lsl3(MCInst &Inst, unsigned Insn, uint64_t Address, const void *Decoder) { - Inst.addOperand(MCOperand::CreateImm(SignExtend32<18>(Insn) << 3)); + Inst.addOperand(MCOperand::CreateImm(SignExtend32<18>(Insn) * 8)); return MCDisassembler::Success; } Modified: head/contrib/llvm/lib/Target/Mips/Mips.td ============================================================================== --- head/contrib/llvm/lib/Target/Mips/Mips.td Sun Jan 18 14:04:55 2015 (r277319) +++ head/contrib/llvm/lib/Target/Mips/Mips.td Sun Jan 18 14:14:47 2015 (r277320) @@ -57,6 +57,8 @@ def MipsInstrInfo : InstrInfo; // Mips Subtarget features // //===----------------------------------------------------------------------===// +def FeatureNoABICalls : SubtargetFeature<"noabicalls", "NoABICalls", "true", + "Disable SVR4-style position-independent code.">; def FeatureGP64Bit : SubtargetFeature<"gp64", "IsGP64bit", "true", "General Purpose Registers are 64-bit wide.">; def FeatureFP64Bit : SubtargetFeature<"fp64", "IsFP64bit", "true", @@ -67,13 +69,13 @@ def FeatureNaN2008 : SubtargetFeatur "IEEE 754-2008 NaN encoding.">; def FeatureSingleFloat : SubtargetFeature<"single-float", "IsSingleFloat", "true", "Only supports single precision float">; -def FeatureO32 : SubtargetFeature<"o32", "MipsABI", "O32", +def FeatureO32 : SubtargetFeature<"o32", "ABI", "MipsABIInfo::O32()", "Enable o32 ABI">; -def FeatureN32 : SubtargetFeature<"n32", "MipsABI", "N32", +def FeatureN32 : SubtargetFeature<"n32", "ABI", "MipsABIInfo::N32()", "Enable n32 ABI">; -def FeatureN64 : SubtargetFeature<"n64", "MipsABI", "N64", +def FeatureN64 : SubtargetFeature<"n64", "ABI", "MipsABIInfo::N64()", "Enable n64 ABI">; -def FeatureEABI : SubtargetFeature<"eabi", "MipsABI", "EABI", +def FeatureEABI : SubtargetFeature<"eabi", "ABI", "MipsABIInfo::EABI()", "Enable eabi ABI">; def FeatureNoOddSPReg : SubtargetFeature<"nooddspreg", "UseOddSPReg", "false", "Disable odd numbered single-precision " Modified: head/contrib/llvm/lib/Target/Mips/Mips16ISelLowering.cpp ============================================================================== --- head/contrib/llvm/lib/Target/Mips/Mips16ISelLowering.cpp Sun Jan 18 14:04:55 2015 (r277319) +++ head/contrib/llvm/lib/Target/Mips/Mips16ISelLowering.cpp Sun Jan 18 14:14:47 2015 (r277320) @@ -241,10 +241,9 @@ Mips16TargetLowering::EmitInstrWithCusto } } -bool Mips16TargetLowering:: -isEligibleForTailCallOptimization(const MipsCC &MipsCCInfo, - unsigned NextStackOffset, - const MipsFunctionInfo& FI) const { +bool Mips16TargetLowering::isEligibleForTailCallOptimization( + const CCState &CCInfo, unsigned NextStackOffset, + const MipsFunctionInfo &FI) const { // No tail call optimization for mips16. return false; } Modified: head/contrib/llvm/lib/Target/Mips/Mips16ISelLowering.h ============================================================================== --- head/contrib/llvm/lib/Target/Mips/Mips16ISelLowering.h Sun Jan 18 14:04:55 2015 (r277319) +++ head/contrib/llvm/lib/Target/Mips/Mips16ISelLowering.h Sun Jan 18 14:14:47 2015 (r277320) @@ -30,9 +30,9 @@ namespace llvm { MachineBasicBlock *MBB) const override; private: - bool isEligibleForTailCallOptimization(const MipsCC &MipsCCInfo, - unsigned NextStackOffset, - const MipsFunctionInfo& FI) const override; + bool isEligibleForTailCallOptimization( + const CCState &CCInfo, unsigned NextStackOffset, + const MipsFunctionInfo &FI) const override; void setMips16HardFloatLibCalls(); Modified: head/contrib/llvm/lib/Target/Mips/Mips64InstrInfo.td ============================================================================== --- head/contrib/llvm/lib/Target/Mips/Mips64InstrInfo.td Sun Jan 18 14:04:55 2015 (r277319) +++ head/contrib/llvm/lib/Target/Mips/Mips64InstrInfo.td Sun Jan 18 14:14:47 2015 (r277320) @@ -419,6 +419,10 @@ defm : SetgePats; defm : SetgeImmPats; // truncate +def : MipsPat<(trunc (assertsext GPR64:$src)), + (EXTRACT_SUBREG GPR64:$src, sub_32)>; +def : MipsPat<(trunc (assertzext GPR64:$src)), + (EXTRACT_SUBREG GPR64:$src, sub_32)>; def : MipsPat<(i32 (trunc GPR64:$src)), (SLL (EXTRACT_SUBREG GPR64:$src, sub_32), 0)>; Copied: head/contrib/llvm/lib/Target/Mips/MipsABIInfo.cpp (from r277223, vendor/llvm/dist/lib/Target/Mips/MipsABIInfo.cpp) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/contrib/llvm/lib/Target/Mips/MipsABIInfo.cpp Sun Jan 18 14:14:47 2015 (r277320, copy of r277223, vendor/llvm/dist/lib/Target/Mips/MipsABIInfo.cpp) @@ -0,0 +1,45 @@ +//===---- MipsABIInfo.cpp - Information about MIPS ABI's ------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "MipsABIInfo.h" +#include "MipsRegisterInfo.h" + +using namespace llvm; + +namespace { +static const MCPhysReg O32IntRegs[4] = {Mips::A0, Mips::A1, Mips::A2, Mips::A3}; + +static const MCPhysReg Mips64IntRegs[8] = { + Mips::A0_64, Mips::A1_64, Mips::A2_64, Mips::A3_64, + Mips::T0_64, Mips::T1_64, Mips::T2_64, Mips::T3_64}; +} + +const ArrayRef MipsABIInfo::GetByValArgRegs() const { + if (IsO32()) + return makeArrayRef(O32IntRegs); + if (IsN32() || IsN64()) + return makeArrayRef(Mips64IntRegs); + llvm_unreachable("Unhandled ABI"); +} + +const ArrayRef MipsABIInfo::GetVarArgRegs() const { + if (IsO32()) + return makeArrayRef(O32IntRegs); + if (IsN32() || IsN64()) + return makeArrayRef(Mips64IntRegs); + llvm_unreachable("Unhandled ABI"); +} + +unsigned MipsABIInfo::GetCalleeAllocdArgSizeInBytes(CallingConv::ID CC) const { + if (IsO32()) + return CC != CallingConv::Fast ? 16 : 0; + if (IsN32() || IsN64() || IsEABI()) + return 0; + llvm_unreachable("Unhandled ABI"); +} Copied: head/contrib/llvm/lib/Target/Mips/MipsABIInfo.h (from r277223, vendor/llvm/dist/lib/Target/Mips/MipsABIInfo.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/contrib/llvm/lib/Target/Mips/MipsABIInfo.h Sun Jan 18 14:14:47 2015 (r277320, copy of r277223, vendor/llvm/dist/lib/Target/Mips/MipsABIInfo.h) @@ -0,0 +1,61 @@ +//===---- MipsABIInfo.h - Information about MIPS ABI's --------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef MIPSABIINFO_H +#define MIPSABIINFO_H + +#include "llvm/ADT/ArrayRef.h" +#include "llvm/MC/MCRegisterInfo.h" +#include "llvm/IR/CallingConv.h" + +namespace llvm { + +class MipsABIInfo { +public: + enum class ABI { Unknown, O32, N32, N64, EABI }; + +protected: + ABI ThisABI; + *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sun Jan 18 15:03: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 345AC47B; Sun, 18 Jan 2015 15:03: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 153BD8D5; Sun, 18 Jan 2015 15:03: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 t0IF3R5V079512; Sun, 18 Jan 2015 15:03:27 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0IF3RXg079509; Sun, 18 Jan 2015 15:03:27 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201501181503.t0IF3RXg079509@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Sun, 18 Jan 2015 15:03:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r277321 - in head/sys: fs/fifofs 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.18-1 Precedence: list List-Id: "SVN commit messages 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, 18 Jan 2015 15:03:28 -0000 Author: kib Date: Sun Jan 18 15:03:26 2015 New Revision: 277321 URL: https://svnweb.freebsd.org/changeset/base/277321 Log: Make SIGSTOP working for sleeps done while waiting for fifo readers or writers in open(2), when the fifo is located on an NFS mount. Reported by: bde Sponsored by: The FreeBSD Foundation MFC after: 1 week Modified: head/sys/fs/fifofs/fifo_vnops.c head/sys/kern/kern_sig.c head/sys/sys/signalvar.h Modified: head/sys/fs/fifofs/fifo_vnops.c ============================================================================== --- head/sys/fs/fifofs/fifo_vnops.c Sun Jan 18 14:14:47 2015 (r277320) +++ head/sys/fs/fifofs/fifo_vnops.c Sun Jan 18 15:03:26 2015 (r277321) @@ -137,7 +137,7 @@ fifo_open(ap) struct thread *td; struct fifoinfo *fip; struct pipe *fpipe; - int error; + int error, stops_deferred; vp = ap->a_vp; fp = ap->a_fp; @@ -188,8 +188,11 @@ fifo_open(ap) if ((ap->a_mode & O_NONBLOCK) == 0) { if ((ap->a_mode & FREAD) && fip->fi_writers == 0) { VOP_UNLOCK(vp, 0); + stops_deferred = sigallowstop(); error = msleep(&fip->fi_readers, PIPE_MTX(fpipe), PDROP | PCATCH | PSOCK, "fifoor", 0); + if (stops_deferred) + sigdeferstop(); vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); if (error) { fip->fi_readers--; @@ -212,8 +215,11 @@ fifo_open(ap) } if ((ap->a_mode & FWRITE) && fip->fi_readers == 0) { VOP_UNLOCK(vp, 0); + stops_deferred = sigallowstop(); error = msleep(&fip->fi_writers, PIPE_MTX(fpipe), PDROP | PCATCH | PSOCK, "fifoow", 0); + if (stops_deferred) + sigdeferstop(); vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); if (error) { fip->fi_writers--; Modified: head/sys/kern/kern_sig.c ============================================================================== --- head/sys/kern/kern_sig.c Sun Jan 18 14:14:47 2015 (r277320) +++ head/sys/kern/kern_sig.c Sun Jan 18 15:03:26 2015 (r277321) @@ -2587,15 +2587,18 @@ sigdeferstop(void) * not immediately suspend if a stop was posted. Instead, the thread * will suspend either via ast() or a subsequent interruptible sleep. */ -void -sigallowstop() +int +sigallowstop(void) { struct thread *td; + int prev; td = curthread; thread_lock(td); + prev = (td->td_flags & TDF_SBDRY) != 0; td->td_flags &= ~TDF_SBDRY; thread_unlock(td); + return (prev); } /* Modified: head/sys/sys/signalvar.h ============================================================================== --- head/sys/sys/signalvar.h Sun Jan 18 14:14:47 2015 (r277320) +++ head/sys/sys/signalvar.h Sun Jan 18 15:03:26 2015 (r277321) @@ -325,7 +325,7 @@ extern struct mtx sigio_lock; int cursig(struct thread *td); int sigdeferstop(void); -void sigallowstop(void); +int sigallowstop(void); void execsigs(struct proc *p); void gsignal(int pgid, int sig, ksiginfo_t *ksi); void killproc(struct proc *p, char *why); From owner-svn-src-all@FreeBSD.ORG Sun Jan 18 15:13: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 C13BE7D3; Sun, 18 Jan 2015 15:13: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 AB94D9A2; Sun, 18 Jan 2015 15:13: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 t0IFDE8M084176; Sun, 18 Jan 2015 15:13:14 GMT (envelope-from kib@FreeBSD.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0IFDBLu084161; Sun, 18 Jan 2015 15:13:11 GMT (envelope-from kib@FreeBSD.org) Message-Id: <201501181513.t0IFDBLu084161@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: kib set sender to kib@FreeBSD.org using -f From: Konstantin Belousov Date: Sun, 18 Jan 2015 15:13:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r277322 - in head: lib/libc/sys sys/compat/freebsd32 sys/kern 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.18-1 Precedence: list List-Id: "SVN commit messages 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, 18 Jan 2015 15:13:14 -0000 Author: kib Date: Sun Jan 18 15:13:11 2015 New Revision: 277322 URL: https://svnweb.freebsd.org/changeset/base/277322 Log: Add procctl(2) PROC_TRACE_CTL command to enable or disable debugger attachment to the process. Note that the command is not intended to be a security measure, rather it is an obfuscation feature, implemented for parity with other operating systems. Discussed with: jilles, rwatson Man page fixes by: rwatson Sponsored by: The FreeBSD Foundation MFC after: 1 week Modified: head/lib/libc/sys/procctl.2 head/sys/compat/freebsd32/freebsd32_misc.c head/sys/kern/kern_exec.c head/sys/kern/kern_fork.c head/sys/kern/kern_procctl.c head/sys/kern/kern_prot.c head/sys/kern/kern_sig.c head/sys/sys/priv.h head/sys/sys/proc.h head/sys/sys/procctl.h Modified: head/lib/libc/sys/procctl.2 ============================================================================== --- head/lib/libc/sys/procctl.2 Sun Jan 18 15:03:26 2015 (r277321) +++ head/lib/libc/sys/procctl.2 Sun Jan 18 15:13:11 2015 (r277322) @@ -29,7 +29,7 @@ .\" .\" $FreeBSD$ .\" -.Dd December 16, 2014 +.Dd December 29, 2014 .Dt PROCCTL 2 .Os .Sh NAME @@ -275,7 +275,61 @@ delivery failed, e.g. due to the permiss If no such process exist, the .Fa rk_fpid field is set to -1. +.It Dv PROC_TRACE_CTL +Enable or disable tracing of the specified process(es), according to the +value of the integer argument. +Tracing includes attachment to the process using +.Xr ptrace 2 +and +.Xr ktrace 2 , +debugging sysctls, +.Xr hwpmc 4 , +.Xr dtrace 1 +and core dumping. +Possible values for the +.Fa data +argument are: +.Bl -tag -width "Dv PROC_TRACE_CTL_DISABLE_EXEC" +.It Dv PROC_TRACE_CTL_ENABLE +Enable tracing, after it was disabled by +.Dv PROC_TRACE_CTL_DISABLE . +Only allowed for self. +.It Dv PROC_TRACE_CTL_DISABLE +Disable tracing for the specified process. +Tracing is re-enabled when the process changes the executing +program with +.Xr execve 2 +syscall. +A child inherits the trace settings from the parent on +.Xr fork 2 . +.It Dv PROC_TRACE_CTL_DISABLE_EXEC +Same as +.Dv PROC_TRACE_CTL_DISABLE , +but the setting persist for the process even after +.Xr execve 2 . +.El +.It Dv PROC_TRACE_STATUS +Returns the current tracing status for the specified process in +the integer variable pointed to by +.Fa data . +If tracing is disabled, +.Fa data +is set to -1. +If tracing is enabled, but no debugger is attached by +.Xr ptrace 2 +syscall, +.Fa data +is set to 0. +If a debugger is attached, +.Fa data +is set to the pid of the debugger process. .El +.Sh NOTES +Disabling tracing on a process should not be considered a security +feature, as it is bypassable both by the kernel and privileged processes, +and via other system mechanisms. +As such, it should not be relied on to reliably protect cryptographic +keying material or other confidential data. .Sh RETURN VALUES If an error occurs, a value of -1 is returned and .Va errno @@ -343,11 +397,34 @@ The .Dv PROC_REAP_ACQUIRE request was issued by a process that had already acquired reaper status and has not yet released it. +.It Bq Er EBUSY +The +.Dv PROC_TRACE_CTL +request was issued for a process already being traced. +.It Bq Er EPERM +The +.Dv PROC_TRACE_CTL +request to re-enable tracing of the process ( +.Dv PROC_TRACE_CTL_ENABLE ) , +or to disable persistence of the +.Dv PROC_TRACE_CTL_DISABLE +on +.Xr execve 2 +was issued for a non-current process. +.It Bq Er EINVAL +The value of the integer +.Fa data +parameter for the +.Dv PROC_TRACE_CTL +request is invalid. .El .Sh SEE ALSO +.Xr dtrace 1 , .Xr kill 2 , +.Xr ktrace 2 , .Xr ptrace 2 , .Xr wait 2 , +.Xr hwpmc 4 , .Xr init 8 .Sh HISTORY The Modified: head/sys/compat/freebsd32/freebsd32_misc.c ============================================================================== --- head/sys/compat/freebsd32/freebsd32_misc.c Sun Jan 18 15:03:26 2015 (r277321) +++ head/sys/compat/freebsd32/freebsd32_misc.c Sun Jan 18 15:13:11 2015 (r277322) @@ -2969,6 +2969,7 @@ freebsd32_procctl(struct thread *td, str switch (uap->com) { case PROC_SPROTECT: + case PROC_TRACE_CTL: error = copyin(PTRIN(uap->data), &flags, sizeof(flags)); if (error != 0) return (error); @@ -2997,6 +2998,9 @@ freebsd32_procctl(struct thread *td, str return (error); data = &x.rk; break; + case PROC_TRACE_STATUS: + data = &flags; + break; default: return (EINVAL); } @@ -3012,6 +3016,10 @@ freebsd32_procctl(struct thread *td, str if (error == 0) error = error1; break; + case PROC_TRACE_STATUS: + if (error == 0) + error = copyout(&flags, uap->data, sizeof(flags)); + break; } return (error); } Modified: head/sys/kern/kern_exec.c ============================================================================== --- head/sys/kern/kern_exec.c Sun Jan 18 15:03:26 2015 (r277321) +++ head/sys/kern/kern_exec.c Sun Jan 18 15:13:11 2015 (r277322) @@ -634,6 +634,8 @@ interpret: * it that it now has its own resources back */ p->p_flag |= P_EXEC; + if ((p->p_flag2 & P2_NOTRACE_EXEC) == 0) + p->p_flag2 &= ~P2_NOTRACE; if (p->p_flag & P_PPWAIT) { p->p_flag &= ~(P_PPWAIT | P_PPTRACE); cv_broadcast(&p->p_pwait); Modified: head/sys/kern/kern_fork.c ============================================================================== --- head/sys/kern/kern_fork.c Sun Jan 18 15:03:26 2015 (r277321) +++ head/sys/kern/kern_fork.c Sun Jan 18 15:13:11 2015 (r277322) @@ -494,7 +494,7 @@ do_fork(struct thread *td, int flags, st * Increase reference counts on shared objects. */ p2->p_flag = P_INMEM; - p2->p_flag2 = 0; + p2->p_flag2 = p1->p_flag2 & (P2_NOTRACE | P2_NOTRACE_EXEC); p2->p_swtick = ticks; if (p1->p_flag & P_PROFIL) startprofclock(p2); Modified: head/sys/kern/kern_procctl.c ============================================================================== --- head/sys/kern/kern_procctl.c Sun Jan 18 15:03:26 2015 (r277321) +++ head/sys/kern/kern_procctl.c Sun Jan 18 15:13:11 2015 (r277322) @@ -280,6 +280,62 @@ reap_kill(struct thread *td, struct proc return (error); } +static int +trace_ctl(struct thread *td, struct proc *p, int state) +{ + + PROC_LOCK_ASSERT(p, MA_OWNED); + + /* + * Ktrace changes p_traceflag from or to zero under the + * process lock, so the test does not need to acquire ktrace + * mutex. + */ + if ((p->p_flag & P_TRACED) != 0 || p->p_traceflag != 0) + return (EBUSY); + + switch (state) { + case PROC_TRACE_CTL_ENABLE: + if (td->td_proc != p) + return (EPERM); + p->p_flag2 &= ~(P2_NOTRACE | P2_NOTRACE_EXEC); + break; + case PROC_TRACE_CTL_DISABLE_EXEC: + p->p_flag2 |= P2_NOTRACE_EXEC | P2_NOTRACE; + break; + case PROC_TRACE_CTL_DISABLE: + if ((p->p_flag2 & P2_NOTRACE_EXEC) != 0) { + KASSERT((p->p_flag2 & P2_NOTRACE) != 0, + ("dandling P2_NOTRACE_EXEC")); + if (td->td_proc != p) + return (EPERM); + p->p_flag2 &= ~P2_NOTRACE_EXEC; + } else { + p->p_flag2 |= P2_NOTRACE; + } + break; + default: + return (EINVAL); + } + return (0); +} + +static int +trace_status(struct thread *td, struct proc *p, int *data) +{ + + if ((p->p_flag2 & P2_NOTRACE) != 0) { + KASSERT((p->p_flag & P_TRACED) == 0, + ("%d traced but tracing disabled", p->p_pid)); + *data = -1; + } else if ((p->p_flag & P_TRACED) != 0) { + *data = p->p_pptr->p_pid; + } else { + *data = 0; + } + return (0); +} + #ifndef _SYS_SYSPROTO_H_ struct procctl_args { idtype_t idtype; @@ -302,6 +358,7 @@ sys_procctl(struct thread *td, struct pr switch (uap->com) { case PROC_SPROTECT: + case PROC_TRACE_CTL: error = copyin(uap->data, &flags, sizeof(flags)); if (error != 0) return (error); @@ -328,6 +385,9 @@ sys_procctl(struct thread *td, struct pr return (error); data = &x.rk; break; + case PROC_TRACE_STATUS: + data = &flags; + break; default: return (EINVAL); } @@ -342,6 +402,10 @@ sys_procctl(struct thread *td, struct pr if (error == 0) error = error1; break; + case PROC_TRACE_STATUS: + if (error == 0) + error = copyout(&flags, uap->data, sizeof(flags)); + break; } return (error); } @@ -364,6 +428,10 @@ kern_procctl_single(struct thread *td, s return (reap_getpids(td, p, data)); case PROC_REAP_KILL: return (reap_kill(td, p, data)); + case PROC_TRACE_CTL: + return (trace_ctl(td, p, *(int *)data)); + case PROC_TRACE_STATUS: + return (trace_status(td, p, data)); default: return (EINVAL); } @@ -375,6 +443,7 @@ kern_procctl(struct thread *td, idtype_t struct pgrp *pg; struct proc *p; int error, first_error, ok; + bool tree_locked; switch (com) { case PROC_REAP_ACQUIRE: @@ -382,6 +451,7 @@ kern_procctl(struct thread *td, idtype_t case PROC_REAP_STATUS: case PROC_REAP_GETPIDS: case PROC_REAP_KILL: + case PROC_TRACE_STATUS: if (idtype != P_PID) return (EINVAL); } @@ -391,11 +461,17 @@ kern_procctl(struct thread *td, idtype_t case PROC_REAP_STATUS: case PROC_REAP_GETPIDS: case PROC_REAP_KILL: + case PROC_TRACE_CTL: sx_slock(&proctree_lock); + tree_locked = true; break; case PROC_REAP_ACQUIRE: case PROC_REAP_RELEASE: sx_xlock(&proctree_lock); + tree_locked = true; + break; + case PROC_TRACE_STATUS: + tree_locked = false; break; default: return (EINVAL); @@ -456,6 +532,7 @@ kern_procctl(struct thread *td, idtype_t error = EINVAL; break; } - sx_unlock(&proctree_lock); + if (tree_locked) + sx_unlock(&proctree_lock); return (error); } Modified: head/sys/kern/kern_prot.c ============================================================================== --- head/sys/kern/kern_prot.c Sun Jan 18 15:03:26 2015 (r277321) +++ head/sys/kern/kern_prot.c Sun Jan 18 15:13:11 2015 (r277322) @@ -1714,6 +1714,13 @@ p_candebug(struct thread *td, struct pro if ((p->p_flag & P_INEXEC) != 0) return (EBUSY); + /* Denied explicitely */ + if ((p->p_flag2 & P2_NOTRACE) != 0) { + error = priv_check(td, PRIV_DEBUG_DENIED); + if (error != 0) + return (error); + } + return (0); } Modified: head/sys/kern/kern_sig.c ============================================================================== --- head/sys/kern/kern_sig.c Sun Jan 18 15:03:26 2015 (r277321) +++ head/sys/kern/kern_sig.c Sun Jan 18 15:13:11 2015 (r277322) @@ -3247,7 +3247,8 @@ coredump(struct thread *td) MPASS((p->p_flag & P_HADTHREADS) == 0 || p->p_singlethread == td); _STOPEVENT(p, S_CORE, 0); - if (!do_coredump || (!sugid_coredump && (p->p_flag & P_SUGID) != 0)) { + if (!do_coredump || (!sugid_coredump && (p->p_flag & P_SUGID) != 0) || + (p->p_flag2 & P2_NOTRACE) != 0) { PROC_UNLOCK(p); return (EFAULT); } Modified: head/sys/sys/priv.h ============================================================================== --- head/sys/sys/priv.h Sun Jan 18 15:03:26 2015 (r277321) +++ head/sys/sys/priv.h Sun Jan 18 15:13:11 2015 (r277322) @@ -111,6 +111,7 @@ #define PRIV_DEBUG_DIFFCRED 80 /* Exempt debugging other users. */ #define PRIV_DEBUG_SUGID 81 /* Exempt debugging setuid proc. */ #define PRIV_DEBUG_UNPRIV 82 /* Exempt unprivileged debug limit. */ +#define PRIV_DEBUG_DENIED 83 /* Exempt P2_NOTRACE. */ /* * Dtrace privileges. Modified: head/sys/sys/proc.h ============================================================================== --- head/sys/sys/proc.h Sun Jan 18 15:03:26 2015 (r277321) +++ head/sys/sys/proc.h Sun Jan 18 15:13:11 2015 (r277322) @@ -675,6 +675,8 @@ struct proc { /* These flags are kept in p_flag2. */ #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). */ /* Flags protected by proctree_lock, kept in p_treeflags. */ #define P_TREE_ORPHANED 0x00000001 /* Reparented, on orphan list */ Modified: head/sys/sys/procctl.h ============================================================================== --- head/sys/sys/procctl.h Sun Jan 18 15:03:26 2015 (r277321) +++ head/sys/sys/procctl.h Sun Jan 18 15:13:11 2015 (r277322) @@ -41,6 +41,8 @@ #define PROC_REAP_STATUS 4 /* reaping status */ #define PROC_REAP_GETPIDS 5 /* get descendants */ #define PROC_REAP_KILL 6 /* kill descendants */ +#define PROC_TRACE_CTL 7 /* en/dis ptrace and coredumps */ +#define PROC_TRACE_STATUS 8 /* query tracing status */ /* Operations for PROC_SPROTECT (passed in integer arg). */ #define PPROT_OP(x) ((x) & 0xf) @@ -96,6 +98,10 @@ struct procctl_reaper_kill { #define REAPER_KILL_CHILDREN 0x00000001 #define REAPER_KILL_SUBTREE 0x00000002 +#define PROC_TRACE_CTL_ENABLE 1 +#define PROC_TRACE_CTL_DISABLE 2 +#define PROC_TRACE_CTL_DISABLE_EXEC 3 + #ifndef _KERNEL __BEGIN_DECLS int procctl(idtype_t, id_t, int, void *); From owner-svn-src-all@FreeBSD.ORG Sun Jan 18 16:17: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 D9FC522E; Sun, 18 Jan 2015 16:17:37 +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 BEDBCEE5; Sun, 18 Jan 2015 16:17:37 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t0IGHbsS013093; Sun, 18 Jan 2015 16:17:37 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0IGHXEZ013076; Sun, 18 Jan 2015 16:17:33 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201501181617.t0IGHXEZ013076@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Sun, 18 Jan 2015 16:17:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r277323 - in vendor/llvm/dist: . autoconf bindings bindings/go bindings/go/llvm bindings/ocaml bindings/ocaml/all_backends bindings/ocaml/analysis bindings/ocaml/backends bindings/ocaml... 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.18-1 Precedence: list List-Id: "SVN commit messages 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, 18 Jan 2015 16:17:38 -0000 Author: dim Date: Sun Jan 18 16:17:27 2015 New Revision: 277323 URL: https://svnweb.freebsd.org/changeset/base/277323 Log: Vendor import of llvm RELEASE_360/rc1 tag r226102 (effectively, 3.6.0 RC1): https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_360/rc1@226102 Added: vendor/llvm/dist/.clang-tidy vendor/llvm/dist/bindings/go/ vendor/llvm/dist/bindings/go/README.txt (contents, props changed) vendor/llvm/dist/bindings/go/build.sh (contents, props changed) vendor/llvm/dist/bindings/go/conftest.go vendor/llvm/dist/bindings/go/llvm/ vendor/llvm/dist/bindings/go/llvm/DIBuilderBindings.cpp (contents, props changed) vendor/llvm/dist/bindings/go/llvm/DIBuilderBindings.h (contents, props changed) vendor/llvm/dist/bindings/go/llvm/IRBindings.cpp (contents, props changed) vendor/llvm/dist/bindings/go/llvm/IRBindings.h (contents, props changed) vendor/llvm/dist/bindings/go/llvm/InstrumentationBindings.cpp (contents, props changed) vendor/llvm/dist/bindings/go/llvm/InstrumentationBindings.h (contents, props changed) vendor/llvm/dist/bindings/go/llvm/SupportBindings.cpp (contents, props changed) vendor/llvm/dist/bindings/go/llvm/SupportBindings.h (contents, props changed) vendor/llvm/dist/bindings/go/llvm/analysis.go vendor/llvm/dist/bindings/go/llvm/bitreader.go vendor/llvm/dist/bindings/go/llvm/bitwriter.go vendor/llvm/dist/bindings/go/llvm/dibuilder.go vendor/llvm/dist/bindings/go/llvm/executionengine.go vendor/llvm/dist/bindings/go/llvm/executionengine_test.go vendor/llvm/dist/bindings/go/llvm/ir.go vendor/llvm/dist/bindings/go/llvm/ir_test.go vendor/llvm/dist/bindings/go/llvm/linker.go vendor/llvm/dist/bindings/go/llvm/llvm_config.go.in (contents, props changed) vendor/llvm/dist/bindings/go/llvm/llvm_dep.go vendor/llvm/dist/bindings/go/llvm/string.go vendor/llvm/dist/bindings/go/llvm/string_test.go vendor/llvm/dist/bindings/go/llvm/support.go vendor/llvm/dist/bindings/go/llvm/target.go vendor/llvm/dist/bindings/go/llvm/transforms_instrumentation.go vendor/llvm/dist/bindings/go/llvm/transforms_ipo.go vendor/llvm/dist/bindings/go/llvm/transforms_pmbuilder.go vendor/llvm/dist/bindings/go/llvm/transforms_scalar.go vendor/llvm/dist/bindings/go/llvm/version.go vendor/llvm/dist/bindings/ocaml/CMakeLists.txt (contents, props changed) vendor/llvm/dist/bindings/ocaml/all_backends/CMakeLists.txt (contents, props changed) vendor/llvm/dist/bindings/ocaml/analysis/CMakeLists.txt (contents, props changed) vendor/llvm/dist/bindings/ocaml/backends/CMakeLists.txt (contents, props changed) vendor/llvm/dist/bindings/ocaml/bitreader/CMakeLists.txt (contents, props changed) vendor/llvm/dist/bindings/ocaml/bitwriter/CMakeLists.txt (contents, props changed) vendor/llvm/dist/bindings/ocaml/executionengine/CMakeLists.txt (contents, props changed) vendor/llvm/dist/bindings/ocaml/irreader/CMakeLists.txt (contents, props changed) vendor/llvm/dist/bindings/ocaml/linker/CMakeLists.txt (contents, props changed) vendor/llvm/dist/bindings/ocaml/llvm/CMakeLists.txt (contents, props changed) vendor/llvm/dist/bindings/ocaml/target/CMakeLists.txt (contents, props changed) vendor/llvm/dist/bindings/ocaml/transforms/CMakeLists.txt (contents, props changed) vendor/llvm/dist/bindings/ocaml/transforms/ipo/CMakeLists.txt (contents, props changed) vendor/llvm/dist/bindings/ocaml/transforms/passmgr_builder/CMakeLists.txt (contents, props changed) vendor/llvm/dist/bindings/ocaml/transforms/scalar_opts/ vendor/llvm/dist/bindings/ocaml/transforms/scalar_opts/CMakeLists.txt (contents, props changed) vendor/llvm/dist/bindings/ocaml/transforms/scalar_opts/Makefile (contents, props changed) vendor/llvm/dist/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.ml vendor/llvm/dist/bindings/ocaml/transforms/scalar_opts/llvm_scalar_opts.mli vendor/llvm/dist/bindings/ocaml/transforms/scalar_opts/scalar_opts_ocaml.c (contents, props changed) vendor/llvm/dist/bindings/ocaml/transforms/utils/ vendor/llvm/dist/bindings/ocaml/transforms/utils/CMakeLists.txt (contents, props changed) vendor/llvm/dist/bindings/ocaml/transforms/utils/Makefile (contents, props changed) vendor/llvm/dist/bindings/ocaml/transforms/utils/llvm_transform_utils.ml vendor/llvm/dist/bindings/ocaml/transforms/utils/llvm_transform_utils.mli vendor/llvm/dist/bindings/ocaml/transforms/utils/transform_utils_ocaml.c (contents, props changed) vendor/llvm/dist/bindings/ocaml/transforms/vectorize/CMakeLists.txt (contents, props changed) vendor/llvm/dist/cmake/modules/AddOCaml.cmake vendor/llvm/dist/cmake/modules/CrossCompile.cmake vendor/llvm/dist/cmake/modules/FindOCaml.cmake vendor/llvm/dist/cmake/platforms/iOS.cmake vendor/llvm/dist/docs/CoverageMappingFormat.rst vendor/llvm/dist/docs/MergeFunctions.rst vendor/llvm/dist/docs/R600Usage.rst vendor/llvm/dist/docs/Statepoints.rst vendor/llvm/dist/docs/tutorial/LangImpl9.rst vendor/llvm/dist/examples/Kaleidoscope/Chapter8/ vendor/llvm/dist/examples/Kaleidoscope/Chapter8/CMakeLists.txt (contents, props changed) vendor/llvm/dist/examples/Kaleidoscope/Chapter8/Makefile (contents, props changed) vendor/llvm/dist/examples/Kaleidoscope/Chapter8/toy.cpp (contents, props changed) vendor/llvm/dist/include/llvm/Analysis/AssumptionCache.h (contents, props changed) vendor/llvm/dist/include/llvm/Analysis/FunctionTargetTransformInfo.h (contents, props changed) vendor/llvm/dist/include/llvm/CodeGen/DIE.h (contents, props changed) vendor/llvm/dist/include/llvm/CodeGen/ForwardControlFlowIntegrity.h (contents, props changed) vendor/llvm/dist/include/llvm/CodeGen/MachineCombinerPattern.h (contents, props changed) vendor/llvm/dist/include/llvm/CodeGen/PBQPRAConstraint.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARFAbbreviationDeclaration.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARFAcceleratorTable.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARFCompileUnit.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARFContext.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARFDebugAbbrev.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARFDebugArangeSet.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARFDebugAranges.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARFDebugFrame.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARFDebugInfoEntry.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARFDebugLine.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARFDebugLoc.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARFDebugRangeList.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARFRelocMap.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARFSection.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARFTypeUnit.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/DWARFUnit.h (contents, props changed) vendor/llvm/dist/include/llvm/IR/Metadata.def vendor/llvm/dist/include/llvm/IR/MetadataTracking.h (contents, props changed) vendor/llvm/dist/include/llvm/IR/PassManagerInternal.h (contents, props changed) vendor/llvm/dist/include/llvm/IR/Statepoint.h (contents, props changed) vendor/llvm/dist/include/llvm/IR/TrackingMDRef.h (contents, props changed) vendor/llvm/dist/include/llvm/IR/UseListOrder.h (contents, props changed) vendor/llvm/dist/include/llvm/ProfileData/CoverageMapping.h (contents, props changed) vendor/llvm/dist/include/llvm/ProfileData/CoverageMappingReader.h (contents, props changed) vendor/llvm/dist/include/llvm/ProfileData/CoverageMappingWriter.h (contents, props changed) vendor/llvm/dist/include/llvm/ProfileData/SampleProf.h (contents, props changed) vendor/llvm/dist/include/llvm/ProfileData/SampleProfReader.h (contents, props changed) vendor/llvm/dist/include/llvm/ProfileData/SampleProfWriter.h (contents, props changed) vendor/llvm/dist/include/llvm/Support/ELFRelocs/ vendor/llvm/dist/include/llvm/Support/ELFRelocs/AArch64.def vendor/llvm/dist/include/llvm/Support/ELFRelocs/ARM.def vendor/llvm/dist/include/llvm/Support/ELFRelocs/Hexagon.def vendor/llvm/dist/include/llvm/Support/ELFRelocs/Mips.def vendor/llvm/dist/include/llvm/Support/ELFRelocs/PowerPC.def vendor/llvm/dist/include/llvm/Support/ELFRelocs/PowerPC64.def vendor/llvm/dist/include/llvm/Support/ELFRelocs/Sparc.def vendor/llvm/dist/include/llvm/Support/ELFRelocs/SystemZ.def vendor/llvm/dist/include/llvm/Support/ELFRelocs/i386.def vendor/llvm/dist/include/llvm/Support/ELFRelocs/x86_64.def vendor/llvm/dist/include/llvm/Support/Options.h (contents, props changed) vendor/llvm/dist/include/llvm/Support/StreamingMemoryObject.h (contents, props changed) vendor/llvm/dist/include/llvm/Support/UniqueLock.h (contents, props changed) vendor/llvm/dist/include/llvm/Transforms/Utils/SymbolRewriter.h (contents, props changed) vendor/llvm/dist/lib/Analysis/AssumptionCache.cpp (contents, props changed) vendor/llvm/dist/lib/Analysis/CFLAliasAnalysis.cpp (contents, props changed) vendor/llvm/dist/lib/Analysis/FunctionTargetTransformInfo.cpp (contents, props changed) vendor/llvm/dist/lib/Analysis/ScopedNoAliasAA.cpp (contents, props changed) vendor/llvm/dist/lib/Analysis/StratifiedSets.h (contents, props changed) vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp (contents, props changed) vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h (contents, props changed) vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfExpression.cpp (contents, props changed) vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfExpression.h (contents, props changed) vendor/llvm/dist/lib/CodeGen/AsmPrinter/Win64Exception.h (contents, props changed) vendor/llvm/dist/lib/CodeGen/AtomicExpandPass.cpp (contents, props changed) vendor/llvm/dist/lib/CodeGen/ForwardControlFlowIntegrity.cpp (contents, props changed) vendor/llvm/dist/lib/CodeGen/MachineCombiner.cpp (contents, props changed) vendor/llvm/dist/lib/CodeGen/SelectionDAG/StatepointLowering.cpp (contents, props changed) vendor/llvm/dist/lib/CodeGen/SelectionDAG/StatepointLowering.h (contents, props changed) vendor/llvm/dist/lib/CodeGen/StatepointExampleGC.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/DWARFAcceleratorTable.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/SyntaxHighlighting.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/SyntaxHighlighting.h (contents, props changed) vendor/llvm/dist/lib/ExecutionEngine/GDBRegistrationListener.cpp (contents, props changed) vendor/llvm/dist/lib/ExecutionEngine/MCJIT/ObjectBuffer.h (contents, props changed) vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldCheckerImpl.h (contents, props changed) vendor/llvm/dist/lib/IR/MetadataTracking.cpp (contents, props changed) vendor/llvm/dist/lib/IR/Statepoint.cpp (contents, props changed) vendor/llvm/dist/lib/IR/UseListOrder.cpp (contents, props changed) vendor/llvm/dist/lib/MC/MCDisassembler/MCDisassembler.cpp (contents, props changed) vendor/llvm/dist/lib/MC/MCDisassembler/MCExternalSymbolizer.cpp (contents, props changed) vendor/llvm/dist/lib/MC/MCDisassembler/MCRelocationInfo.cpp (contents, props changed) vendor/llvm/dist/lib/MC/MCWinEH.cpp (contents, props changed) vendor/llvm/dist/lib/ProfileData/CoverageMapping.cpp (contents, props changed) vendor/llvm/dist/lib/ProfileData/CoverageMappingReader.cpp (contents, props changed) vendor/llvm/dist/lib/ProfileData/CoverageMappingWriter.cpp (contents, props changed) vendor/llvm/dist/lib/ProfileData/SampleProf.cpp (contents, props changed) vendor/llvm/dist/lib/ProfileData/SampleProfReader.cpp (contents, props changed) vendor/llvm/dist/lib/ProfileData/SampleProfWriter.cpp (contents, props changed) vendor/llvm/dist/lib/Support/MathExtras.cpp (contents, props changed) vendor/llvm/dist/lib/Support/Options.cpp (contents, props changed) vendor/llvm/dist/lib/Support/StreamingMemoryObject.cpp (contents, props changed) vendor/llvm/dist/lib/Target/AArch64/AArch64A53Fix835769.cpp (contents, props changed) vendor/llvm/dist/lib/Target/AArch64/AArch64A57FPLoadBalancing.cpp (contents, props changed) vendor/llvm/dist/lib/Target/AArch64/AArch64CallingConvention.h (contents, props changed) vendor/llvm/dist/lib/Target/AArch64/AArch64ConditionOptimizer.cpp (contents, props changed) vendor/llvm/dist/lib/Target/AArch64/AArch64MachineCombinerPattern.h (contents, props changed) vendor/llvm/dist/lib/Target/AArch64/AArch64PBQPRegAlloc.cpp (contents, props changed) vendor/llvm/dist/lib/Target/AArch64/AArch64PBQPRegAlloc.h (contents, props changed) vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.h (contents, props changed) vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMAsmBackendDarwin.h (contents, props changed) vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMAsmBackendELF.h (contents, props changed) vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMAsmBackendWinCOFF.h (contents, props changed) vendor/llvm/dist/lib/Target/Hexagon/Disassembler/ vendor/llvm/dist/lib/Target/Hexagon/Disassembler/CMakeLists.txt (contents, props changed) vendor/llvm/dist/lib/Target/Hexagon/Disassembler/HexagonDisassembler.cpp (contents, props changed) vendor/llvm/dist/lib/Target/Hexagon/Disassembler/LLVMBuild.txt (contents, props changed) vendor/llvm/dist/lib/Target/Hexagon/Disassembler/Makefile (contents, props changed) vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonAsmBackend.cpp (contents, props changed) vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonELFObjectWriter.cpp (contents, props changed) vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonInstPrinter.cpp (contents, props changed) vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonInstPrinter.h (contents, props changed) vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonMCCodeEmitter.cpp (contents, props changed) vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonMCCodeEmitter.h (contents, props changed) vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsABIInfo.cpp (contents, props changed) vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsABIInfo.h (contents, props changed) vendor/llvm/dist/lib/Target/NVPTX/NVPTXLowerStructArgs.cpp (contents, props changed) vendor/llvm/dist/lib/Target/NVPTX/NVPTXTargetTransformInfo.cpp (contents, props changed) vendor/llvm/dist/lib/Target/PowerPC/PPCCallingConv.h (contents, props changed) vendor/llvm/dist/lib/Target/PowerPC/PPCInstrSPE.td vendor/llvm/dist/lib/Target/PowerPC/PPCScheduleP8.td vendor/llvm/dist/lib/Target/R600/AMDGPUAlwaysInlinePass.cpp (contents, props changed) vendor/llvm/dist/lib/Target/R600/AMDKernelCodeT.h (contents, props changed) vendor/llvm/dist/lib/Target/R600/AsmParser/ vendor/llvm/dist/lib/Target/R600/AsmParser/AMDGPUAsmParser.cpp (contents, props changed) vendor/llvm/dist/lib/Target/R600/AsmParser/CMakeLists.txt (contents, props changed) vendor/llvm/dist/lib/Target/R600/AsmParser/LLVMBuild.txt (contents, props changed) vendor/llvm/dist/lib/Target/R600/AsmParser/Makefile (contents, props changed) vendor/llvm/dist/lib/Target/R600/CIInstructions.td vendor/llvm/dist/lib/Target/R600/SIFoldOperands.cpp (contents, props changed) vendor/llvm/dist/lib/Target/R600/SILoadStoreOptimizer.cpp (contents, props changed) vendor/llvm/dist/lib/Target/R600/SIPrepareScratchRegs.cpp (contents, props changed) vendor/llvm/dist/lib/Target/R600/VIInstrFormats.td vendor/llvm/dist/lib/Target/R600/VIInstructions.td vendor/llvm/dist/lib/Target/X86/X86InstrSGX.td vendor/llvm/dist/lib/Target/X86/X86IntrinsicsInfo.h (contents, props changed) vendor/llvm/dist/lib/Target/X86/X86ScheduleBtVer2.td vendor/llvm/dist/lib/Transforms/Instrumentation/InstrProfiling.cpp (contents, props changed) vendor/llvm/dist/lib/Transforms/Instrumentation/SanitizerCoverage.cpp (contents, props changed) vendor/llvm/dist/lib/Transforms/ObjCARC/ProvenanceAnalysisEvaluator.cpp (contents, props changed) vendor/llvm/dist/lib/Transforms/Scalar/AlignmentFromAssumptions.cpp (contents, props changed) vendor/llvm/dist/lib/Transforms/Utils/SymbolRewriter.cpp (contents, props changed) vendor/llvm/dist/test/Analysis/BasicAA/assume.ll vendor/llvm/dist/test/Analysis/BasicAA/zext.ll vendor/llvm/dist/test/Analysis/CFLAliasAnalysis/ vendor/llvm/dist/test/Analysis/CFLAliasAnalysis/arguments-globals.ll vendor/llvm/dist/test/Analysis/CFLAliasAnalysis/arguments.ll vendor/llvm/dist/test/Analysis/CFLAliasAnalysis/basic-interproc-ret.ll vendor/llvm/dist/test/Analysis/CFLAliasAnalysis/basic-interproc.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/empty.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/phi-and-select.ll vendor/llvm/dist/test/Analysis/CFLAliasAnalysis/simple.ll vendor/llvm/dist/test/Analysis/CFLAliasAnalysis/va.ll vendor/llvm/dist/test/Analysis/CostModel/PowerPC/cmp-expanded.ll vendor/llvm/dist/test/Analysis/DependenceAnalysis/NonCanonicalizedSubscript.ll vendor/llvm/dist/test/Analysis/Dominators/basic.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/load-with-range-metadata.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/nsw-offset-assume.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/pr22179.ll vendor/llvm/dist/test/Analysis/ScopedNoAliasAA/ 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/Assembler/alias-use-list-order.ll vendor/llvm/dist/test/Assembler/distinct-mdnode.ll vendor/llvm/dist/test/Assembler/inline-asm-clobber.ll vendor/llvm/dist/test/Assembler/invalid-attrgrp.ll vendor/llvm/dist/test/Assembler/invalid-datalayout1.ll vendor/llvm/dist/test/Assembler/invalid-datalayout10.ll vendor/llvm/dist/test/Assembler/invalid-datalayout11.ll vendor/llvm/dist/test/Assembler/invalid-datalayout12.ll vendor/llvm/dist/test/Assembler/invalid-datalayout13.ll vendor/llvm/dist/test/Assembler/invalid-datalayout2.ll vendor/llvm/dist/test/Assembler/invalid-datalayout3.ll vendor/llvm/dist/test/Assembler/invalid-datalayout4.ll vendor/llvm/dist/test/Assembler/invalid-datalayout5.ll vendor/llvm/dist/test/Assembler/invalid-datalayout6.ll vendor/llvm/dist/test/Assembler/invalid-datalayout7.ll vendor/llvm/dist/test/Assembler/invalid-datalayout8.ll vendor/llvm/dist/test/Assembler/invalid-datalayout9.ll vendor/llvm/dist/test/Assembler/invalid-fwdref2.ll vendor/llvm/dist/test/Assembler/invalid-hexint.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/invalid-mdnode-vector.ll vendor/llvm/dist/test/Assembler/invalid-mdnode-vector2.ll vendor/llvm/dist/test/Assembler/invalid-metadata-attachment-has-type.ll vendor/llvm/dist/test/Assembler/invalid-metadata-function-local-attachments.ll vendor/llvm/dist/test/Assembler/invalid-metadata-function-local-complex-1.ll vendor/llvm/dist/test/Assembler/invalid-metadata-function-local-complex-2.ll vendor/llvm/dist/test/Assembler/invalid-metadata-function-local-complex-3.ll vendor/llvm/dist/test/Assembler/invalid-metadata-has-type.ll vendor/llvm/dist/test/Assembler/invalid-name2.ll (contents, props changed) vendor/llvm/dist/test/Assembler/invalid-specialized-mdnode.ll vendor/llvm/dist/test/Assembler/invalid-uselistorder-function-between-blocks.ll vendor/llvm/dist/test/Assembler/invalid-uselistorder-function-missing-named.ll vendor/llvm/dist/test/Assembler/invalid-uselistorder-function-missing-numbered.ll vendor/llvm/dist/test/Assembler/invalid-uselistorder-global-missing.ll vendor/llvm/dist/test/Assembler/invalid-uselistorder-indexes-duplicated.ll vendor/llvm/dist/test/Assembler/invalid-uselistorder-indexes-empty.ll vendor/llvm/dist/test/Assembler/invalid-uselistorder-indexes-one.ll vendor/llvm/dist/test/Assembler/invalid-uselistorder-indexes-ordered.ll vendor/llvm/dist/test/Assembler/invalid-uselistorder-indexes-range.ll vendor/llvm/dist/test/Assembler/invalid-uselistorder-indexes-toofew.ll vendor/llvm/dist/test/Assembler/invalid-uselistorder-indexes-toomany.ll vendor/llvm/dist/test/Assembler/invalid-uselistorder-type.ll vendor/llvm/dist/test/Assembler/invalid-uselistorder_bb-missing-bb.ll vendor/llvm/dist/test/Assembler/invalid-uselistorder_bb-missing-body.ll vendor/llvm/dist/test/Assembler/invalid-uselistorder_bb-missing-func.ll vendor/llvm/dist/test/Assembler/invalid-uselistorder_bb-not-bb.ll vendor/llvm/dist/test/Assembler/invalid-uselistorder_bb-not-func.ll vendor/llvm/dist/test/Assembler/invalid-uselistorder_bb-numbered.ll vendor/llvm/dist/test/Assembler/mdlocation.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/short-hexpair.ll vendor/llvm/dist/test/Assembler/unnamed-comdat.ll vendor/llvm/dist/test/Assembler/uselistorder.ll vendor/llvm/dist/test/Assembler/uselistorder_bb.ll vendor/llvm/dist/test/Bindings/Go/ vendor/llvm/dist/test/Bindings/Go/go.test vendor/llvm/dist/test/Bindings/Go/lit.local.cfg vendor/llvm/dist/test/Bindings/OCaml/ vendor/llvm/dist/test/Bindings/OCaml/analysis.ml vendor/llvm/dist/test/Bindings/OCaml/bitreader.ml vendor/llvm/dist/test/Bindings/OCaml/bitwriter.ml vendor/llvm/dist/test/Bindings/OCaml/core.ml vendor/llvm/dist/test/Bindings/OCaml/executionengine.ml vendor/llvm/dist/test/Bindings/OCaml/ext_exc.ml vendor/llvm/dist/test/Bindings/OCaml/ipo.ml vendor/llvm/dist/test/Bindings/OCaml/irreader.ml vendor/llvm/dist/test/Bindings/OCaml/linker.ml vendor/llvm/dist/test/Bindings/OCaml/lit.local.cfg vendor/llvm/dist/test/Bindings/OCaml/passmgr_builder.ml vendor/llvm/dist/test/Bindings/OCaml/scalar_opts.ml vendor/llvm/dist/test/Bindings/OCaml/target.ml vendor/llvm/dist/test/Bindings/OCaml/transform_utils.ml vendor/llvm/dist/test/Bindings/OCaml/vectorize.ml vendor/llvm/dist/test/Bindings/llvm-c/objectfile.ll vendor/llvm/dist/test/Bitcode/constantsTest.3.2.ll vendor/llvm/dist/test/Bitcode/constantsTest.3.2.ll.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/function-local-metadata.3.5.ll vendor/llvm/dist/test/Bitcode/function-local-metadata.3.5.ll.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/highLevelStructure.3.2.ll vendor/llvm/dist/test/Bitcode/highLevelStructure.3.2.ll.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/mdstring-high-bits.ll vendor/llvm/dist/test/Bitcode/metadata.3.5.ll vendor/llvm/dist/test/Bitcode/metadata.3.5.ll.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/standardCIntrinsic.3.2.ll vendor/llvm/dist/test/Bitcode/standardCIntrinsic.3.2.ll.bc (contents, props changed) vendor/llvm/dist/test/Bitcode/use-list-order.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/PBQP.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-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/aarch64-wide-shuffle.ll vendor/llvm/dist/test/CodeGen/AArch64/aarch64_f16_be.ll vendor/llvm/dist/test/CodeGen/AArch64/aarch64_tree_tests.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/andandshift.ll vendor/llvm/dist/test/CodeGen/AArch64/argument-blocks.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-aapcs-be.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-bcc.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-fast-isel-store.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-stackmap-nops.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-triv-disjoint-mem-access.ll vendor/llvm/dist/test/CodeGen/AArch64/bitcast-v2i8.ll vendor/llvm/dist/test/CodeGen/AArch64/br-to-eh-lpad.ll vendor/llvm/dist/test/CodeGen/AArch64/br-undef-cond.ll vendor/llvm/dist/test/CodeGen/AArch64/cmp-const-max.ll vendor/llvm/dist/test/CodeGen/AArch64/cmpwithshort.ll vendor/llvm/dist/test/CodeGen/AArch64/combine-comparisons-by-cse.ll vendor/llvm/dist/test/CodeGen/AArch64/dag-combine-invaraints.ll vendor/llvm/dist/test/CodeGen/AArch64/dont-take-over-the-world.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-intrinsic.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-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-switch-phi.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/fdiv-combine.ll vendor/llvm/dist/test/CodeGen/AArch64/fp16-instructions.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-bitcast.ll vendor/llvm/dist/test/CodeGen/AArch64/fp16-vector-load-store.ll vendor/llvm/dist/test/CodeGen/AArch64/fp16-vector-shuffle.ll vendor/llvm/dist/test/CodeGen/AArch64/fpconv-vector-op-scalarize.ll vendor/llvm/dist/test/CodeGen/AArch64/legalize-bug-bogus-cpu.ll vendor/llvm/dist/test/CodeGen/AArch64/machine_cse.ll vendor/llvm/dist/test/CodeGen/AArch64/machine_cse_impdef_killflags.ll vendor/llvm/dist/test/CodeGen/AArch64/madd-combiner.ll vendor/llvm/dist/test/CodeGen/AArch64/madd-lohi.ll vendor/llvm/dist/test/CodeGen/AArch64/paired-load.ll vendor/llvm/dist/test/CodeGen/AArch64/postra-mi-sched.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/sdivpow2.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/tailcall-fastisel.ll vendor/llvm/dist/test/CodeGen/AArch64/tbz-tbnz.ll vendor/llvm/dist/test/CodeGen/ARM/2014-08-04-muls-it.ll vendor/llvm/dist/test/CodeGen/ARM/adv-copy-opt.ll vendor/llvm/dist/test/CodeGen/ARM/arm32-round-conv.ll vendor/llvm/dist/test/CodeGen/ARM/arm32-rounding.ll vendor/llvm/dist/test/CodeGen/ARM/constant-islands.ll vendor/llvm/dist/test/CodeGen/ARM/copy-cpsr.ll vendor/llvm/dist/test/CodeGen/ARM/crc32.ll vendor/llvm/dist/test/CodeGen/ARM/dbg.ll vendor/llvm/dist/test/CodeGen/ARM/dwarf-unwind.ll vendor/llvm/dist/test/CodeGen/ARM/fpcmp-f64-neon-opt.ll vendor/llvm/dist/test/CodeGen/ARM/inlineasm-global.ll vendor/llvm/dist/test/CodeGen/ARM/invalid-target.ll vendor/llvm/dist/test/CodeGen/ARM/isel-v8i32-crash.ll vendor/llvm/dist/test/CodeGen/ARM/negative-offset.ll vendor/llvm/dist/test/CodeGen/ARM/no-tail-call.ll vendor/llvm/dist/test/CodeGen/ARM/none-macho-v4t.ll vendor/llvm/dist/test/CodeGen/ARM/pr18364-movw.ll vendor/llvm/dist/test/CodeGen/ARM/preferred-align.ll vendor/llvm/dist/test/CodeGen/ARM/smulw.ll vendor/llvm/dist/test/CodeGen/ARM/space-directive.ll vendor/llvm/dist/test/CodeGen/ARM/stack-alignment.ll vendor/llvm/dist/test/CodeGen/ARM/stack_guard_remat.ll vendor/llvm/dist/test/CodeGen/ARM/tail-call-weak.ll vendor/llvm/dist/test/CodeGen/ARM/tail-merge-branch-weight.ll vendor/llvm/dist/test/CodeGen/ARM/thumb1_return_sequence.ll vendor/llvm/dist/test/CodeGen/ARM/thumb2-size-opt.ll vendor/llvm/dist/test/CodeGen/ARM/thumb_indirect_calls.ll vendor/llvm/dist/test/CodeGen/ARM/vararg_no_start.ll vendor/llvm/dist/test/CodeGen/ARM/vector-load.ll vendor/llvm/dist/test/CodeGen/ARM/vector-promotion.ll vendor/llvm/dist/test/CodeGen/ARM/vector-store.ll vendor/llvm/dist/test/CodeGen/ARM/wrong-t2stmia-size-opt.ll vendor/llvm/dist/test/CodeGen/Generic/PBQP.ll vendor/llvm/dist/test/CodeGen/Generic/assume.ll vendor/llvm/dist/test/CodeGen/Generic/empty-insertvalue.ll vendor/llvm/dist/test/CodeGen/Generic/empty-phi.ll vendor/llvm/dist/test/CodeGen/Hexagon/cmp-not.ll vendor/llvm/dist/test/CodeGen/Hexagon/ctor.ll vendor/llvm/dist/test/CodeGen/MSP430/asm-clobbers.ll vendor/llvm/dist/test/CodeGen/MSP430/memset.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/loadstoreconv.ll vendor/llvm/dist/test/CodeGen/Mips/Fast-ISel/loadstrconst.ll vendor/llvm/dist/test/CodeGen/Mips/Fast-ISel/shift.ll vendor/llvm/dist/test/CodeGen/Mips/ctlz-v.ll vendor/llvm/dist/test/CodeGen/Mips/cttz-v.ll vendor/llvm/dist/test/CodeGen/Mips/inlineasm-assembler-directives.ll vendor/llvm/dist/test/CodeGen/Mips/llvm-ir/mul.ll vendor/llvm/dist/test/CodeGen/Mips/llvm-ir/select.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-atomic1.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-li.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-hf-attr-2.ll vendor/llvm/dist/test/CodeGen/Mips/named-register-n32.ll vendor/llvm/dist/test/CodeGen/Mips/named-register-n64.ll vendor/llvm/dist/test/CodeGen/Mips/named-register-o32.ll vendor/llvm/dist/test/CodeGen/NVPTX/bug21465.ll vendor/llvm/dist/test/CodeGen/NVPTX/fma-assoc.ll vendor/llvm/dist/test/CodeGen/NVPTX/machine-sink.ll vendor/llvm/dist/test/CodeGen/NVPTX/nvcl-param-align.ll vendor/llvm/dist/test/CodeGen/NVPTX/vector-global.ll vendor/llvm/dist/test/CodeGen/NVPTX/vector-return.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/arr-fp-arg-no-copy.ll vendor/llvm/dist/test/CodeGen/PowerPC/asm-constraints.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/bperm.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/constants-i64.ll vendor/llvm/dist/test/CodeGen/PowerPC/cttz-ctlz-spec.ll vendor/llvm/dist/test/CodeGen/PowerPC/fast-isel-const.ll vendor/llvm/dist/test/CodeGen/PowerPC/fdiv-combine.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/fma-mutate.ll vendor/llvm/dist/test/CodeGen/PowerPC/fmaxnum.ll vendor/llvm/dist/test/CodeGen/PowerPC/fminnum.ll vendor/llvm/dist/test/CodeGen/PowerPC/fp-to-int-ext.ll vendor/llvm/dist/test/CodeGen/PowerPC/fp-to-int-to-fp.ll vendor/llvm/dist/test/CodeGen/PowerPC/i1-ext-fold.ll vendor/llvm/dist/test/CodeGen/PowerPC/lbz-from-ld-shift.ll vendor/llvm/dist/test/CodeGen/PowerPC/ld-st-upd.ll vendor/llvm/dist/test/CodeGen/PowerPC/no-extra-fp-conv-ldst.ll vendor/llvm/dist/test/CodeGen/PowerPC/post-ra-ec.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc32-cyclecounter.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc32-pic-large.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-elf-abi.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-gep-opt.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-stackmap-nops.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-stackmap.ll vendor/llvm/dist/test/CodeGen/PowerPC/retaddr2.ll vendor/llvm/dist/test/CodeGen/PowerPC/rm-zext.ll vendor/llvm/dist/test/CodeGen/PowerPC/sdiv-pow2.ll vendor/llvm/dist/test/CodeGen/PowerPC/split-index-tc.ll vendor/llvm/dist/test/CodeGen/PowerPC/unal-altivec-wint.ll vendor/llvm/dist/test/CodeGen/PowerPC/vsx-div.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_insert_extract_le.ll vendor/llvm/dist/test/CodeGen/PowerPC/vsx_shuffle_le.ll vendor/llvm/dist/test/CodeGen/PowerPC/zext-free.ll vendor/llvm/dist/test/CodeGen/R600/add-debug.ll vendor/llvm/dist/test/CodeGen/R600/commute_modifiers.ll vendor/llvm/dist/test/CodeGen/R600/copy-to-reg.ll vendor/llvm/dist/test/CodeGen/R600/cttz-ctlz.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/empty-function.ll vendor/llvm/dist/test/CodeGen/R600/fabs.f64.ll vendor/llvm/dist/test/CodeGen/R600/flat-address-space.ll vendor/llvm/dist/test/CodeGen/R600/fma.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.f64.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.f64.ll vendor/llvm/dist/test/CodeGen/R600/fminnum.ll vendor/llvm/dist/test/CodeGen/R600/fneg-fabs.f64.ll vendor/llvm/dist/test/CodeGen/R600/fneg.f64.ll vendor/llvm/dist/test/CodeGen/R600/fp-classify.ll vendor/llvm/dist/test/CodeGen/R600/fp_to_sint.f64.ll vendor/llvm/dist/test/CodeGen/R600/frem.ll vendor/llvm/dist/test/CodeGen/R600/ftrunc.f64.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/hsa.ll vendor/llvm/dist/test/CodeGen/R600/i1-copy-implicit-def.ll vendor/llvm/dist/test/CodeGen/R600/i1-copy-phi.ll vendor/llvm/dist/test/CodeGen/R600/inline-asm.ll vendor/llvm/dist/test/CodeGen/R600/inline-calls.ll vendor/llvm/dist/test/CodeGen/R600/insert_subreg.ll vendor/llvm/dist/test/CodeGen/R600/lds-initializer.ll vendor/llvm/dist/test/CodeGen/R600/lds-zero-initializer.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.class.ll vendor/llvm/dist/test/CodeGen/R600/llvm.AMDGPU.ldexp.ll vendor/llvm/dist/test/CodeGen/R600/llvm.memcpy.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/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/s_movk_i32.ll vendor/llvm/dist/test/CodeGen/R600/schedule-global-loads.ll vendor/llvm/dist/test/CodeGen/R600/schedule-kernel-arg-loads.ll vendor/llvm/dist/test/CodeGen/R600/sdivrem24.ll vendor/llvm/dist/test/CodeGen/R600/sext-eliminate.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-triv-disjoint-mem-access.ll vendor/llvm/dist/test/CodeGen/R600/sint_to_fp.f64.ll vendor/llvm/dist/test/CodeGen/R600/split-scalar-i64-add.ll vendor/llvm/dist/test/CodeGen/R600/store-barrier.ll vendor/llvm/dist/test/CodeGen/R600/subreg-coalescer-crash.ll vendor/llvm/dist/test/CodeGen/R600/trunc-cmp-constant.ll vendor/llvm/dist/test/CodeGen/R600/udivrem24.ll vendor/llvm/dist/test/CodeGen/R600/use-sgpr-multiple-times.ll vendor/llvm/dist/test/CodeGen/SPARC/empty-functions.ll vendor/llvm/dist/test/CodeGen/Thumb/copy_thumb.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/stack_guard_remat.ll vendor/llvm/dist/test/CodeGen/Thumb/stm-merge.ll vendor/llvm/dist/test/CodeGen/Thumb2/aapcs.ll vendor/llvm/dist/test/CodeGen/Thumb2/constant-islands-jump-table.ll vendor/llvm/dist/test/CodeGen/Thumb2/constant-islands-new-island-padding.ll vendor/llvm/dist/test/CodeGen/Thumb2/constant-islands-new-island.ll vendor/llvm/dist/test/CodeGen/Thumb2/float-cmp.ll vendor/llvm/dist/test/CodeGen/Thumb2/float-intrinsics-double.ll vendor/llvm/dist/test/CodeGen/Thumb2/float-intrinsics-float.ll vendor/llvm/dist/test/CodeGen/Thumb2/float-ops.ll vendor/llvm/dist/test/CodeGen/Thumb2/stack_guard_remat.ll vendor/llvm/dist/test/CodeGen/X86/2014-08-29-CompactUnwind.ll vendor/llvm/dist/test/CodeGen/X86/TruncAssertZext.ll vendor/llvm/dist/test/CodeGen/X86/add_shl_constant.ll vendor/llvm/dist/test/CodeGen/X86/addr-mode-matcher.ll vendor/llvm/dist/test/CodeGen/X86/adx-intrinsics.ll vendor/llvm/dist/test/CodeGen/X86/aligned-variadic.ll vendor/llvm/dist/test/CodeGen/X86/atomic_idempotent.ll vendor/llvm/dist/test/CodeGen/X86/atomic_mi.ll vendor/llvm/dist/test/CodeGen/X86/avx-intrinsics-x86-upgrade.ll vendor/llvm/dist/test/CodeGen/X86/avx-vperm2x128.ll vendor/llvm/dist/test/CodeGen/X86/avx1-stack-reload-folding.ll vendor/llvm/dist/test/CodeGen/X86/avx2-intrinsics-x86-upgrade.ll vendor/llvm/dist/test/CodeGen/X86/avx2-pmovx-256-old-shuffle.ll vendor/llvm/dist/test/CodeGen/X86/avx2-pmovxrm-intrinsics.ll vendor/llvm/dist/test/CodeGen/X86/avx512-i1test.ll (contents, props changed) vendor/llvm/dist/test/CodeGen/X86/avx512-logic.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-logic.ll vendor/llvm/dist/test/CodeGen/X86/avx512vl-mov.ll vendor/llvm/dist/test/CodeGen/X86/avx512vl-nontemporal.ll vendor/llvm/dist/test/CodeGen/X86/avx512vl-vec-cmp.ll vendor/llvm/dist/test/CodeGen/X86/break-false-dep.ll vendor/llvm/dist/test/CodeGen/X86/byval-callee-cleanup.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/cmpxchg-clobber-flags.ll vendor/llvm/dist/test/CodeGen/X86/coalesce_commute_subreg.ll vendor/llvm/dist/test/CodeGen/X86/combine-and.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/commuted-blend-mask.ll vendor/llvm/dist/test/CodeGen/X86/copysign-constant-magnitude.ll vendor/llvm/dist/test/CodeGen/X86/cpus.ll vendor/llvm/dist/test/CodeGen/X86/critical-anti-dep-breaker.ll vendor/llvm/dist/test/CodeGen/X86/cttz-ctlz.ll vendor/llvm/dist/test/CodeGen/X86/divrem8_ext.ll vendor/llvm/dist/test/CodeGen/X86/dont-trunc-store-double-to-float.ll vendor/llvm/dist/test/CodeGen/X86/dynamic-alloca-lifetime.ll vendor/llvm/dist/test/CodeGen/X86/equiv_with_fndef.ll vendor/llvm/dist/test/CodeGen/X86/equiv_with_vardef.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-call-bool.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-x32.ll vendor/llvm/dist/test/CodeGen/X86/fastmath-optnone.ll vendor/llvm/dist/test/CodeGen/X86/fma-intrinsics-x86_64.ll vendor/llvm/dist/test/CodeGen/X86/fma-phi-213-to-231.ll vendor/llvm/dist/test/CodeGen/X86/fma4-intrinsics-x86_64-folded-load.ll vendor/llvm/dist/test/CodeGen/X86/fmaxnum.ll vendor/llvm/dist/test/CodeGen/X86/fminnum.ll vendor/llvm/dist/test/CodeGen/X86/fmul-combines.ll vendor/llvm/dist/test/CodeGen/X86/fnabs.ll vendor/llvm/dist/test/CodeGen/X86/fold-tied-op.ll vendor/llvm/dist/test/CodeGen/X86/fpstack-debuginstr-kill.ll vendor/llvm/dist/test/CodeGen/X86/frameallocate.ll vendor/llvm/dist/test/CodeGen/X86/gcc_except_table_functions.ll vendor/llvm/dist/test/CodeGen/X86/inalloca-regparm.ll vendor/llvm/dist/test/CodeGen/X86/jump_table_align.ll vendor/llvm/dist/test/CodeGen/X86/large-code-model-isel.ll vendor/llvm/dist/test/CodeGen/X86/lea-5.ll vendor/llvm/dist/test/CodeGen/X86/lower-vec-shift-2.ll vendor/llvm/dist/test/CodeGen/X86/masked_memop.ll vendor/llvm/dist/test/CodeGen/X86/mem-intrin-base-reg.ll vendor/llvm/dist/test/CodeGen/X86/misched-code-difference-with-debug.ll vendor/llvm/dist/test/CodeGen/X86/movtopush.ll vendor/llvm/dist/test/CodeGen/X86/musttail-fastcall.ll vendor/llvm/dist/test/CodeGen/X86/musttail-varargs.ll vendor/llvm/dist/test/CodeGen/X86/nontemporal-2.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/peephole-fold-movsd.ll vendor/llvm/dist/test/CodeGen/X86/pr18846.ll vendor/llvm/dist/test/CodeGen/X86/pr21099.ll vendor/llvm/dist/test/CodeGen/X86/pr21529.ll vendor/llvm/dist/test/CodeGen/X86/pr22019.ll vendor/llvm/dist/test/CodeGen/X86/pr22103.ll vendor/llvm/dist/test/CodeGen/X86/prologuedata.ll vendor/llvm/dist/test/CodeGen/X86/pshufb-mask-comments.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/return_zeroext_i2.ll vendor/llvm/dist/test/CodeGen/X86/seh-basic.ll vendor/llvm/dist/test/CodeGen/X86/seh-safe-div.ll vendor/llvm/dist/test/CodeGen/X86/sink-blockfreq.ll vendor/llvm/dist/test/CodeGen/X86/sjlj-baseptr.ll vendor/llvm/dist/test/CodeGen/X86/slow-div.ll vendor/llvm/dist/test/CodeGen/X86/slow-incdec.ll vendor/llvm/dist/test/CodeGen/X86/splat-for-size.ll vendor/llvm/dist/test/CodeGen/X86/sse41-intrinsics-x86-upgrade.ll vendor/llvm/dist/test/CodeGen/X86/sse41-pmovxrm-intrinsics.ll vendor/llvm/dist/test/CodeGen/X86/stack-probe-size.ll vendor/llvm/dist/test/CodeGen/X86/stack-protector-weight.ll vendor/llvm/dist/test/CodeGen/X86/stack_guard_remat.ll vendor/llvm/dist/test/CodeGen/X86/stackmap-large-constants.ll vendor/llvm/dist/test/CodeGen/X86/stackmap-shadow-optimization.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/switch-default-only.ll vendor/llvm/dist/test/CodeGen/X86/switch-jump-table.ll vendor/llvm/dist/test/CodeGen/X86/tailcall-multiret.ll vendor/llvm/dist/test/CodeGen/X86/tls-addr-non-leaf-function.ll vendor/llvm/dist/test/CodeGen/X86/unaligned-32-byte-memops.ll vendor/llvm/dist/test/CodeGen/X86/vararg-callee-cleanup.ll vendor/llvm/dist/test/CodeGen/X86/vararg_no_start.ll vendor/llvm/dist/test/CodeGen/X86/vec-loadsingles-alignment.ll vendor/llvm/dist/test/CodeGen/X86/vec_extract-avx.ll vendor/llvm/dist/test/CodeGen/X86/vec_trunc_sext.ll vendor/llvm/dist/test/CodeGen/X86/vec_unsafe-fp-math.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-sext.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-sse1.ll vendor/llvm/dist/test/CodeGen/X86/vector-trunc.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/vectorcall.ll vendor/llvm/dist/test/CodeGen/X86/vselect-avx.ll vendor/llvm/dist/test/CodeGen/X86/win32-pic-jumptable.ll vendor/llvm/dist/test/CodeGen/X86/win64_call_epi.ll vendor/llvm/dist/test/CodeGen/X86/windows-itanium-alloca.ll vendor/llvm/dist/test/CodeGen/X86/x32-function_pointer-1.ll vendor/llvm/dist/test/CodeGen/X86/x32-function_pointer-2.ll vendor/llvm/dist/test/CodeGen/X86/x32-function_pointer-3.ll vendor/llvm/dist/test/CodeGen/X86/x86-64-call.ll vendor/llvm/dist/test/CodeGen/X86/x86-64-stack-and-frame-ptr.ll vendor/llvm/dist/test/CodeGen/X86/x86-inline-asm-validation.ll vendor/llvm/dist/test/CodeGen/X86/x86-mixed-alignment-dagcombine.ll vendor/llvm/dist/test/DebugInfo/AArch64/big-endian-dump.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/little-endian-dump.ll vendor/llvm/dist/test/DebugInfo/AArch64/processes-relocations.ll vendor/llvm/dist/test/DebugInfo/ARM/big-endian-dump.ll vendor/llvm/dist/test/DebugInfo/ARM/cfi-eof-prologue.ll vendor/llvm/dist/test/DebugInfo/ARM/little-endian-dump.ll vendor/llvm/dist/test/DebugInfo/ARM/processes-relocations.ll vendor/llvm/dist/test/DebugInfo/ARM/s-super-register.ll vendor/llvm/dist/test/DebugInfo/COFF/cpp-mangling.ll vendor/llvm/dist/test/DebugInfo/Inputs/cross-cu-inlining.c (contents, props changed) vendor/llvm/dist/test/DebugInfo/Inputs/cross-cu-inlining.x86_64-macho.o (contents, props changed) vendor/llvm/dist/test/DebugInfo/Inputs/dwarfdump-objc.m vendor/llvm/dist/test/DebugInfo/Inputs/dwarfdump-objc.x86_64.o (contents, props changed) vendor/llvm/dist/test/DebugInfo/Inputs/gmlt.ll vendor/llvm/dist/test/DebugInfo/Inputs/split-dwarf-test (contents, props changed) vendor/llvm/dist/test/DebugInfo/Inputs/split-dwarf-test.cc (contents, props changed) vendor/llvm/dist/test/DebugInfo/Inputs/split-dwarf-test.dwo (contents, props changed) vendor/llvm/dist/test/DebugInfo/Mips/processes-relocations.ll vendor/llvm/dist/test/DebugInfo/PowerPC/processes-relocations.ll vendor/llvm/dist/test/DebugInfo/Sparc/processes-relocations.ll vendor/llvm/dist/test/DebugInfo/SystemZ/processes-relocations.ll vendor/llvm/dist/test/DebugInfo/X86/asm-macro-line-number.s (contents, props changed) vendor/llvm/dist/test/DebugInfo/X86/constant-aggregate.ll vendor/llvm/dist/test/DebugInfo/X86/debug-info-access.ll vendor/llvm/dist/test/DebugInfo/X86/fission-inline.ll vendor/llvm/dist/test/DebugInfo/X86/ghost-sdnode-dbgvalues.ll vendor/llvm/dist/test/DebugInfo/X86/gmlt.test vendor/llvm/dist/test/DebugInfo/X86/memberfnptr.ll vendor/llvm/dist/test/DebugInfo/X86/nodebug_with_debug_loc.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/processes-relocations.ll vendor/llvm/dist/test/DebugInfo/X86/recursive_inlining.ll vendor/llvm/dist/test/DebugInfo/block-asan.ll vendor/llvm/dist/test/DebugInfo/cross-cu-linkonce-distinct.ll vendor/llvm/dist/test/DebugInfo/debug-info-always-inline.ll vendor/llvm/dist/test/DebugInfo/duplicate_inline.ll vendor/llvm/dist/test/DebugInfo/dwarfdump-accel.test vendor/llvm/dist/test/DebugInfo/dwarfdump-objc.test vendor/llvm/dist/test/DebugInfo/enum-types.ll vendor/llvm/dist/test/DebugInfo/gmlt.test vendor/llvm/dist/test/DebugInfo/incorrect-variable-debugloc1.ll vendor/llvm/dist/test/DebugInfo/member-pointers.o (contents, props changed) vendor/llvm/dist/test/DebugInfo/missing-abstract-variable.o (contents, props changed) vendor/llvm/dist/test/DebugInfo/multiline.ll vendor/llvm/dist/test/DebugInfo/nodebug.ll vendor/llvm/dist/test/ExecutionEngine/Interpreter/ vendor/llvm/dist/test/ExecutionEngine/Interpreter/intrinsics.ll vendor/llvm/dist/test/ExecutionEngine/Interpreter/lit.local.cfg vendor/llvm/dist/test/ExecutionEngine/RuntimeDyld/AArch64/ vendor/llvm/dist/test/ExecutionEngine/RuntimeDyld/AArch64/MachO_ARM64_relocations.s (contents, props changed) vendor/llvm/dist/test/ExecutionEngine/RuntimeDyld/AArch64/lit.local.cfg vendor/llvm/dist/test/ExecutionEngine/RuntimeDyld/X86/MachO_i386_DynNoPIC_relocations.s (contents, props changed) vendor/llvm/dist/test/ExecutionEngine/RuntimeDyld/X86/MachO_i386_eh_frame.s (contents, props changed) vendor/llvm/dist/test/ExecutionEngine/frem.ll vendor/llvm/dist/test/Feature/prologuedata.ll vendor/llvm/dist/test/FileCheck/check-empty.txt (contents, props changed) vendor/llvm/dist/test/Instrumentation/AddressSanitizer/X86/asm_cfi.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/X86/asm_cfi.s (contents, props changed) vendor/llvm/dist/test/Instrumentation/AddressSanitizer/X86/asm_rep_movs.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/X86/asm_rsp_mem_op.s (contents, props changed) vendor/llvm/dist/test/Instrumentation/AddressSanitizer/do-not-instrument-cstring.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/instrument-dynamic-allocas.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/stack_dynamic_alloca.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/undecidable-dynamic-alloca-1.ll vendor/llvm/dist/test/Instrumentation/DataFlowSanitizer/Inputs/debuglist.txt (contents, props changed) vendor/llvm/dist/test/Instrumentation/DataFlowSanitizer/debug.ll vendor/llvm/dist/test/Instrumentation/DataFlowSanitizer/union-large.ll vendor/llvm/dist/test/Instrumentation/InstrProfiling/ vendor/llvm/dist/test/Instrumentation/InstrProfiling/no-counters.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/byval-alignment.ll vendor/llvm/dist/test/Instrumentation/MemorySanitizer/check-constant-shadow.ll vendor/llvm/dist/test/Instrumentation/MemorySanitizer/origin-alignment.ll vendor/llvm/dist/test/Instrumentation/SanitizerCoverage/ 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/SanitizerCoverage/tracing.ll vendor/llvm/dist/test/JitListener/multiple.ll vendor/llvm/dist/test/JitListener/simple.ll vendor/llvm/dist/test/LTO/Inputs/ vendor/llvm/dist/test/LTO/Inputs/bcsection.macho.s (contents, props changed) vendor/llvm/dist/test/LTO/Inputs/bcsection.s (contents, props changed) vendor/llvm/dist/test/LTO/Inputs/invalid.ll.bc (contents, props changed) vendor/llvm/dist/test/LTO/Inputs/list-symbols.ll vendor/llvm/dist/test/LTO/bcsection.ll vendor/llvm/dist/test/LTO/diagnostic-handler-remarks.ll vendor/llvm/dist/test/LTO/invalid.ll vendor/llvm/dist/test/LTO/list-symbols.ll vendor/llvm/dist/test/Linker/ConstantGlobals.ll vendor/llvm/dist/test/Linker/Inputs/2003-01-30-LinkerRename.ll vendor/llvm/dist/test/Linker/Inputs/2003-05-31-LinkerRename.ll vendor/llvm/dist/test/Linker/Inputs/ConstantGlobals.ll vendor/llvm/dist/test/Linker/Inputs/alignment.ll vendor/llvm/dist/test/Linker/Inputs/comdat8.ll vendor/llvm/dist/test/Linker/Inputs/constructor-comdat.ll vendor/llvm/dist/test/Linker/Inputs/ctors.ll vendor/llvm/dist/test/Linker/Inputs/distinct.ll vendor/llvm/dist/test/Linker/Inputs/ident.a.ll vendor/llvm/dist/test/Linker/Inputs/ident.b.ll vendor/llvm/dist/test/Linker/Inputs/linkage2.ll vendor/llvm/dist/test/Linker/Inputs/mdlocation.ll vendor/llvm/dist/test/Linker/Inputs/module-flags-dont-change-others.ll vendor/llvm/dist/test/Linker/Inputs/module-flags-pic-1-b.ll (contents, props changed) vendor/llvm/dist/test/Linker/Inputs/module-flags-pic-2-b.ll vendor/llvm/dist/test/Linker/Inputs/opaque.ll vendor/llvm/dist/test/Linker/Inputs/pr21374.ll vendor/llvm/dist/test/Linker/Inputs/redefinition.ll vendor/llvm/dist/test/Linker/Inputs/replaced-function-matches-first-subprogram.ll vendor/llvm/dist/test/Linker/Inputs/testlink.ll vendor/llvm/dist/test/Linker/Inputs/type-unique-alias.ll vendor/llvm/dist/test/Linker/Inputs/type-unique-dst-types2.ll vendor/llvm/dist/test/Linker/Inputs/type-unique-dst-types3.ll vendor/llvm/dist/test/Linker/Inputs/type-unique-name.ll vendor/llvm/dist/test/Linker/Inputs/type-unique-opaque.ll vendor/llvm/dist/test/Linker/Inputs/type-unique-unrelated2.ll vendor/llvm/dist/test/Linker/Inputs/type-unique-unrelated3.ll vendor/llvm/dist/test/Linker/Inputs/unique-fwd-decl-b.ll vendor/llvm/dist/test/Linker/Inputs/unique-fwd-decl-order.ll vendor/llvm/dist/test/Linker/Inputs/visibility.ll vendor/llvm/dist/test/Linker/alignment.ll vendor/llvm/dist/test/Linker/comdat9.ll vendor/llvm/dist/test/Linker/constructor-comdat.ll vendor/llvm/dist/test/Linker/ctors.ll vendor/llvm/dist/test/Linker/distinct.ll vendor/llvm/dist/test/Linker/ident.ll vendor/llvm/dist/test/Linker/linkage2.ll vendor/llvm/dist/test/Linker/lto-attributes.ll vendor/llvm/dist/test/Linker/mdlocation.ll vendor/llvm/dist/test/Linker/module-flags-dont-change-others.ll vendor/llvm/dist/test/Linker/module-flags-pic-1-a.ll vendor/llvm/dist/test/Linker/module-flags-pic-2-a.ll vendor/llvm/dist/test/Linker/opaque.ll vendor/llvm/dist/test/Linker/pr21374.ll vendor/llvm/dist/test/Linker/pr21494.ll vendor/llvm/dist/test/Linker/prologuedata.ll vendor/llvm/dist/test/Linker/replaced-function-matches-first-subprogram.ll vendor/llvm/dist/test/Linker/testlink.ll vendor/llvm/dist/test/Linker/type-unique-alias.ll vendor/llvm/dist/test/Linker/type-unique-dst-types.ll vendor/llvm/dist/test/Linker/type-unique-name.ll vendor/llvm/dist/test/Linker/type-unique-opaque.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/Linker/type-unique-unrelated.ll vendor/llvm/dist/test/Linker/unique-fwd-decl-a.ll vendor/llvm/dist/test/Linker/unique-fwd-decl-order.ll vendor/llvm/dist/test/Linker/visibility.ll vendor/llvm/dist/test/MC/AArch64/elf_osabi_flags.s (contents, props changed) vendor/llvm/dist/test/MC/AArch64/inst-directive-diagnostic.s (contents, props changed) vendor/llvm/dist/test/MC/AArch64/inst-directive.s (contents, props changed) vendor/llvm/dist/test/MC/AArch64/single-slash.s (contents, props changed) vendor/llvm/dist/test/MC/ARM/arm-elf-relocation-diagnostics.s (contents, props changed) vendor/llvm/dist/test/MC/ARM/arm-elf-relocations.s (contents, props changed) vendor/llvm/dist/test/MC/ARM/arm-load-store-multiple-deprecated.s (contents, props changed) vendor/llvm/dist/test/MC/ARM/coproc-diag.s (contents, props changed) vendor/llvm/dist/test/MC/ARM/cps.s (contents, props changed) vendor/llvm/dist/test/MC/ARM/cpu-test.s (contents, props changed) vendor/llvm/dist/test/MC/ARM/d16.s (contents, props changed) vendor/llvm/dist/test/MC/ARM/directive-arch_extension-mode-switch.s (contents, props changed) vendor/llvm/dist/test/MC/ARM/directive-arch_extension-toggle.s (c