From owner-freebsd-arch@FreeBSD.ORG Sun May 26 06:28:05 2013 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 743FF574 for ; Sun, 26 May 2013 06:28:05 +0000 (UTC) (envelope-from oritm@mellanox.com) Received: from eu1sys200aog117.obsmtp.com (eu1sys200aog117.obsmtp.com [207.126.144.143]) by mx1.freebsd.org (Postfix) with ESMTP id AFEB2B26 for ; Sun, 26 May 2013 06:28:04 +0000 (UTC) Received: from MTLCAS01.mtl.com ([193.47.165.155]) (using TLSv1) by eu1sys200aob117.postini.com ([207.126.147.11]) with SMTP ID DSNKUaGragymYWo7gwMxC6TfhAmn7xwr1WWx@postini.com; Sun, 26 May 2013 06:28:04 UTC Received: from MTLDAG01.mtl.com ([10.0.8.75]) by MTLCAS01.mtl.com ([10.0.8.71]) with mapi id 14.03.0123.003; Sun, 26 May 2013 09:16:40 +0300 From: Orit Moskovich To: "freebsd-arch@freebsd.org" Subject: interrupt threads Thread-Topic: interrupt threads Thread-Index: Ac5Z2FnlXAgbpu0zQAuGggTwM4HYdA== Date: Sun, 26 May 2013 06:16:39 +0000 Message-ID: <981733489AB3BD4DB24B48340F53E0A55B0D53AD@MTLDAG01.mtl.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.0.13.1] MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.14 X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 26 May 2013 06:28:05 -0000 Hi, I'm trying to understand the difference between using taskqueues defined by= ithreads (taskqueue_swi, taskqueue_swi_giant, taskqueue_fast) to defer an = interrupt's work, and defining an interrupt handler to give as ithread para= meter to bus_setup_intr. Is there a difference in the priority? Which of the methods is preferable w= hen writing a network device and performance is important? Thanks, Orit Moskovich From owner-freebsd-arch@FreeBSD.ORG Mon May 27 10:58:55 2013 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 8BC80FB0; Mon, 27 May 2013 10:58:55 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) by mx1.freebsd.org (Postfix) with ESMTP id 00BF15ED; Mon, 27 May 2013 10:58:54 +0000 (UTC) Received: from tom.home (kostik@localhost [127.0.0.1]) by kib.kiev.ua (8.14.7/8.14.7) with ESMTP id r4RAwix8018563; Mon, 27 May 2013 13:58:44 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.8.3 kib.kiev.ua r4RAwix8018563 Received: (from kostik@localhost) by tom.home (8.14.7/8.14.7/Submit) id r4RAwi4N018562; Mon, 27 May 2013 13:58:44 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Mon, 27 May 2013 13:58:44 +0300 From: Konstantin Belousov To: arch@freebsd.org, amd64@freebsd.org Subject: x86 IOMMU support (DMAR) Message-ID: <20130527105844.GC3047@kib.kiev.ua> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="QMUNogrXulKRzqi3" Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) 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 version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on tom.home X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 May 2013 10:58:55 -0000 --QMUNogrXulKRzqi3 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline For the several months, I worked (and continue the work now) on the driver for the Intel VT-d for FreeBSD. The VT-d is sold as the I/O Virtualization technology, but in essence it is a DMA addresses remapping engine, i.e. it is advanced and improved I/O MMU, as also found on other big-iron machines, e.g. PowerPC or Sparc. See the Intel document titled 'Intel Virtualization Technology for Directed I/O Architecture Specification' and chipsets datasheets for the description of the facility. The development was greatly facilitated by Jim Harris from Intel who provided me the access to the Sandy and Ivy Bridge north bridge documentation. John Baldwin patiently educated me about newbus and helped developing required hooks for integration with the existing code. The core hardware element of the VT-d is DMA remap unit, referenced as DMAR both in the documentation and in the source code. Besides DMA remap, VT-d also allows to do remapping of the MSI/MSI-X interrupt messages. FreeBSD could utilize the functionality for the interrupt rebalancing, instead of reprogramming msi registers of the PCI devices, but this part is not (yet) implemented. For the FreeBSD architecture, DMAR naturally fits as busdma engine, making it possible to eliminate bounce page copying. Another great benefit of the DMAR use is the reliability and security improvements, since DMA transfers are only allowed to the memory areas explicitely designated by the device driver as buffers. As noted by Jim Harris, this security angle could find a use in the NTB driver. The existing busdma code for x86 was split into generic interface, kept in the busdma_machdep.c, and bouncing implementation in the busdma_bounce.c. The DMAR-based implementation, which calls the DMAR core, is located in the busdma_dmar.c. There is no KPI provided to manage DMARs, but I plan to implement the proper interface after discussing the needs of the bhyve. I tried to support both i386 and amd64, but for i386 the limited KVA, together with the busdma interface structure of never sleeping from the driver calls, make some promises of IOMMU less strict. For instance, to unload the map, code needs to transiently map the DMAR page table pages, which require sleepable allocations of sf buffers. As result, map unload on i386 is done asynchronously in the taskqueue context, which makes it possible for the buggy device driver or hardware to perform the transfer to freed pages for some time after unload. This problem is not present for amd64 port. For the same reason of busdma KPI, I cannot use queued invalidation both for i386 and amd64. At the moment the code makes the 1:1 relations between device contexts and domains, which is fine for busdma. To support PCI pass-through into the virtualized machines, the relations should be changed to N:1 contexts to domains, which is planned but currently is not yet done. Overall state of the code is that I can boot multiuser over the network from if_igb(4) or if_bce(4), and can use ahci(4) and ata(4) attached disks without corrupting UFS volumes. Uhci(4) has known issues due to too late establishment of the RMRR mappings. Extensive testing of the already written code is not done yet. Plans include - providing the external KPI for the VMM consumers - support ATS - making it possible to select busdma_dmar or busdma_bounce for individual PCI functions - the stabilization work. Also, by converting the ISA DMA implementation to use the busdma KPI, it is possible to make the floppies work reliably again ! It is known that IOMMU adds overhead due to the mapping and unmapping for each I/O. DMAR implementations usually have some erratas, as well as PCIe devices sometime do not completely follow the specification, causing misbehaviour with remapping enabled. For this reason I do not plan to enable IOMMU by default, and intend to provide a possibility to route individual PCI devices to the bounce busdma implementation. http://people.freebsd.org/~kib/misc/DMAR.1.patch --QMUNogrXulKRzqi3 Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.20 (FreeBSD) iQIcBAEBAgAGBQJRozxjAAoJEJDCuSvBvK1BrFgP/0g7HlYUyg27GjeBy/s7iBsr 1Q3j6gSZM89us0r7wGKAw/DtNWaggD5aahxeab2ZJkDxZIojGAnEDDsEPo42KLAc 9ez/gvLH2AMNXZGkfG90MyP6GFg312ohSwCYfrMwFrU4YG5Hi147JlHy6iUw0wrY Pny/3iYDn/PChwsoRVq8D6wCdy1nXypGUSCc8kbViKOPAxUTDtqL+lZnvtfaOGHZ cqbc78f9izPewPWj5xTcC+lnd8v0kql4+qPCuSZorj2ZjQEbSKsPMW5ZcureGcFV pnwH+49zcn6Ej9deSJEK+tYdWqonTf3liYyhHv8Uu7MNVZ6swEUObgLHWjbvGkxs O0m7sanOvDJ1gLNcmoQvzj24T5F3WExOAHnMq7AermdnpJHFu3Z05J/eCwVFNkR8 srhvl3/P5L5N+o71uV+FoLE7JDf3qwlB77QJqeuPcYp3mVwWhhWohgPNSjle4Nob O1EsLBW7YAoN992nm48DIbG40qdrpOjkEVWc1pqL0tFOZSUc6xF9HrXNKa/jVlEo AJLhJII/0nDrzKhrLPqY4hGZVYyiucbh41Lk5dCuPnc0BEP4x2ZKmzVnWSbXvuIx 86QpsGl9+S4p/HdZfUzU/3NZ/IbSTAwzxQdymH+L0AhTXD/rF8XQeyJ85gr19MbS iz23xjIkWBh5jR5oPUlb =9e72 -----END PGP SIGNATURE----- --QMUNogrXulKRzqi3-- From owner-freebsd-arch@FreeBSD.ORG Mon May 27 12:27:07 2013 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 82EBEC44; Mon, 27 May 2013 12:27:07 +0000 (UTC) (envelope-from jlh@FreeBSD.org) Received: from caravan.chchile.org (caravan.chchile.org [178.32.125.136]) by mx1.freebsd.org (Postfix) with ESMTP id 504C8EDC; Mon, 27 May 2013 12:27:07 +0000 (UTC) Received: by caravan.chchile.org (Postfix, from userid 1000) id 8071FBC3D1; Mon, 27 May 2013 12:27:00 +0000 (UTC) Date: Mon, 27 May 2013 14:27:00 +0200 From: Jeremie Le Hen To: Konstantin Belousov Subject: Re: x86 IOMMU support (DMAR) Message-ID: <20130527122700.GD70224@caravan.chchile.org> Mail-Followup-To: Konstantin Belousov , arch@freebsd.org, amd64@freebsd.org References: <20130527105844.GC3047@kib.kiev.ua> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20130527105844.GC3047@kib.kiev.ua> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: amd64@freebsd.org, arch@freebsd.org X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 May 2013 12:27:07 -0000 Hi kib, On Mon, May 27, 2013 at 01:58:44PM +0300, Konstantin Belousov wrote: > For the several months, I worked (and continue the work now) on the > driver for the Intel VT-d for FreeBSD. The VT-d is sold as the I/O > Virtualization technology, but in essence it is a DMA addresses > remapping engine, i.e. it is advanced and improved I/O MMU, as also > found on other big-iron machines, e.g. PowerPC or Sparc. See the > Intel document titled 'Intel Virtualization Technology for Directed > I/O Architecture Specification' and chipsets datasheets for the > description of the facility. > > [...] > > http://people.freebsd.org/~kib/misc/DMAR.1.patch Which CPU flag is needed to be able to test this? My -CURRENT machine has: CPU: Intel(R) Core(TM)2 CPU 6320 @ 1.86GHz (1869.90-MHz K8-class CPU) Origin = "GenuineIntel" Id = 0x6f6 Family = 0x6 Model = 0xf Stepping = 6 Features=0xbfebfbff Features2=0xe3bd AMD Features=0x20100800 AMD Features2=0x1 -- Jeremie Le Hen Scientists say the world is made up of Protons, Neutrons and Electrons. They forgot to mention Morons. From owner-freebsd-arch@FreeBSD.ORG Mon May 27 16:15:21 2013 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id E49CBD19; Mon, 27 May 2013 16:15:21 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) by mx1.freebsd.org (Postfix) with ESMTP id 5C909CCC; Mon, 27 May 2013 16:15:21 +0000 (UTC) Received: from tom.home (kostik@localhost [127.0.0.1]) by kib.kiev.ua (8.14.7/8.14.7) with ESMTP id r4RGF5Wp083361; Mon, 27 May 2013 19:15:05 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.8.3 kib.kiev.ua r4RGF5Wp083361 Received: (from kostik@localhost) by tom.home (8.14.7/8.14.7/Submit) id r4RGF5fE083359; Mon, 27 May 2013 19:15:05 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Mon, 27 May 2013 19:15:05 +0300 From: Konstantin Belousov To: arch@freebsd.org, amd64@freebsd.org Subject: Re: x86 IOMMU support (DMAR) Message-ID: <20130527161505.GE3047@kib.kiev.ua> References: <20130527105844.GC3047@kib.kiev.ua> <20130527122700.GD70224@caravan.chchile.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="/liuGKheDV9E18bs" Content-Disposition: inline In-Reply-To: <20130527122700.GD70224@caravan.chchile.org> User-Agent: Mutt/1.5.21 (2010-09-15) 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 version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on tom.home X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 May 2013 16:15:22 -0000 --/liuGKheDV9E18bs Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, May 27, 2013 at 02:27:00PM +0200, Jeremie Le Hen wrote: > Hi kib, >=20 > On Mon, May 27, 2013 at 01:58:44PM +0300, Konstantin Belousov wrote: > > For the several months, I worked (and continue the work now) on the > > driver for the Intel VT-d for FreeBSD. The VT-d is sold as the I/O > > Virtualization technology, but in essence it is a DMA addresses > > remapping engine, i.e. it is advanced and improved I/O MMU, as also > > found on other big-iron machines, e.g. PowerPC or Sparc. See the > > Intel document titled 'Intel Virtualization Technology for Directed > > I/O Architecture Specification' and chipsets datasheets for the > > description of the facility. > >=20 > > [...] > >=20 > > http://people.freebsd.org/~kib/misc/DMAR.1.patch >=20 > Which CPU flag is needed to be able to test this? >=20 > My -CURRENT machine has: >=20 > CPU: Intel(R) Core(TM)2 CPU 6320 @ 1.86GHz (1869.90-MHz K8-clas= s CPU) > Origin =3D "GenuineIntel" Id =3D 0x6f6 Family =3D 0x6 Model =3D 0xf = Stepping =3D 6 > Features=3D0xbfebfbff > Features2=3D0xe3bd > AMD Features=3D0x20100800 > AMD Features2=3D0x1 The feature is announced by the ACPI table. You should use recent HEAD, and do acpidump -t | grep DMAR. If the DMAR table is present, you have VT-d enabled. Presence of VT-d is determined by: - north bridge. In other words, for older machines with Core2 and earlier CPUs, north bridge chip of the chipset should support VT-d, for newer Core iX, the north bridge inside the CPU. - motherboard manufacturer, by the way of BIOS properly configuring the DMARs and filling the right table. Some motherboard vendors offer the knob in the BIOS setup, which enables VT-d. One note: KMS-enabled Intel GPU driver is completely incompatible with VT-d right now. Besides the fact the GPU MMU does not make the calls to configure remapper, there are many erratas regarding interaction between IOMMU and GPU, for all generations of chipsets, except possible Ivy Bridge. --/liuGKheDV9E18bs Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.20 (FreeBSD) iQIcBAEBAgAGBQJRo4aIAAoJEJDCuSvBvK1BupEP/jrkM4UbYL67/r58ctSVHFOJ o+yIn44QieqkVZ6TTx8FpR2kMaRM/oOf1gJrIETXtcUOXE7b38mPmnECnVMUyBUN l2PGXuBNud0qzzkESWnY/Kvgh7oYq8mCUC7E2c8hIgrpNrbgsbOBFO6neozI3ice eUlLCA6nXSl3NSbM3kGwGEMimqoCGZvNFNOJPr+8sDvW4LSmYduJ92afwcbYCm7E TxekMNC/PbqXGCyP6nFLmYSZvpNa3rJdAYX9AIjIrBfjINg14MNaTxNj/qanR2kS /vqEhEjsnhPK7ulwexWmT17wRqDGkT8BPaAd+Qh8+yWw98UrwFlDuOkPQ6YqYlV0 YOAiVoXjUvsFtBi4Mac/rUjnzdKj2eq9K/w38alK4DZEwScXDHAtPS2EPP/sBb2M 8VAssK6qL+LifdGSBycOwJboUykCgdvxkmpGEMXWwkHhqqE5OncfEm+R9udCUrqK S3eTNv9nffxv9T8cHzwtwAFU1auUUhTNpS3heQAWv4KqQnJ+EkJZPRBmCewFEX6I NlqllWD4mbuT5Y1nMv90Dd8yzZ/kQZZKxfizszKtlY04n/OvqSGZPH/Sbti/UYw9 dpF4wgY3QGD/g7IrjoPX3T4r8YSqAJOsfOWaUO5WGxz6zxwRzBvxyxQCWp0pK3no UISgUlaIR3SfhodbRTmQ =JkOh -----END PGP SIGNATURE----- --/liuGKheDV9E18bs-- From owner-freebsd-arch@FreeBSD.ORG Tue May 28 02:21:21 2013 Return-Path: Delivered-To: freebsd-arch@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id E451F8DA; Tue, 28 May 2013 02:21:21 +0000 (UTC) (envelope-from yaneurabeya@gmail.com) Received: from mail-ve0-x236.google.com (mail-ve0-x236.google.com [IPv6:2607:f8b0:400c:c01::236]) by mx1.freebsd.org (Postfix) with ESMTP id 9824CEA6; Tue, 28 May 2013 02:21:21 +0000 (UTC) Received: by mail-ve0-f182.google.com with SMTP id ox1so1104654veb.41 for ; Mon, 27 May 2013 19:21:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:cc:content-type; bh=Sw4zRuoJGdC/P1xhnRDfZ9OcrkiQ6KElhsQilIoaQgc=; b=U8qd0Y0ZI3QHcXDQKpAPKhJMvq4TMec4XlwzqSLJIuUk2DevcAirdGciwiT1kk5BBp 9UYlAMG+WNw+Ok2YRvPNf8TznKFTeR4XzGV2f+roDdhXChy3yjVWy9qBAlbBvtwKbjG9 JsxLH2ob4uSXFmiwCeBZrkgtoKhuH758xUGeOyk1vTRlA/Ny02pUCe+IKBr/FkGNNXX8 9uvJKRntScUkjqOLa7g9bxN7x2MoaRlpMgou00+o8htTkKIGPeTrSTyQDNTxqIRFHYdQ 8+X1nmRkPQmH3pCX6HuBWMfcuSfcebB8AfftSO25tIhxkbLdBNd5jyDShcHght//aGgk Vm3g== MIME-Version: 1.0 X-Received: by 10.220.101.69 with SMTP id b5mr16776993vco.55.1369707680107; Mon, 27 May 2013 19:21:20 -0700 (PDT) Received: by 10.220.217.198 with HTTP; Mon, 27 May 2013 19:21:20 -0700 (PDT) Date: Mon, 27 May 2013 19:21:20 -0700 Message-ID: Subject: [RFC] add NetBSD compat macros to sys/cdefs.h From: Garrett Cooper To: freebsd-arch@FreeBSD.org Content-Type: text/plain; charset=ISO-8859-1 Cc: Brooks Davis X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 May 2013 02:21:22 -0000 Hi, One of the things that I've done in order to reduce unnecessary divergence when porting NetBSD testcases to FreeBSD is I've pushed a few macros into my sys/cdefs.h in order to facilitate compatibility with NetBSD: /* NetBSD compat */ /* * The following macro is used to remove const cast-away warnings * from gcc -Wcast-qual; it should be used with caution because it * can hide valid errors; in particular most valid uses are in * situations where the API requires it, not to cast away string * constants. We don't use *intptr_t on purpose here and we are * explicit about unsigned long so that we don't have additional * dependencies. */ #define __UNCONST(a) ((void *)(unsigned long)(const void *)(a)) #define ___STRING(x) __STRING(x) #define __arraycount(__x) (sizeof(__x) / sizeof(__x[0])) /* End NetBSD compat */ To clarify... - I know __UNCONST is basically like __DECONST on steroids as __UNCONST doesn't have the typecasting like __DECONST does. - I'm working at removing the need for ___STRING with upstream. - I know that __arraycount is equivalent to nitems. The reason why I'm doing this is to reduce divergence and get things going ASAP with the testing effort as I have a couple thousand testcases ported from NetBSD which will be hooked into release images (really soon) and will result in automated testing (not too far away, potentially a couple months), versus the zero coverage we currently have in FreeBSD. If _anyone_ has a better idea and is willing to pony up the patch to make things more sane, please by all means do. I would prefer not to use libnetbsd as it just introduces unnecessary churn in Makefiles and dependencies on a compat library strictly for a couple of C macros. Thoughts? Thanks! -Garrett From owner-freebsd-arch@FreeBSD.ORG Tue May 28 04:24:31 2013 Return-Path: Delivered-To: freebsd-arch@FreeBSD.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id D70169FC; Tue, 28 May 2013 04:24:31 +0000 (UTC) (envelope-from bright@mu.org) Received: from elvis.mu.org (elvis.mu.org [192.203.228.196]) by mx1.freebsd.org (Postfix) with ESMTP id C7E7A6BB; Tue, 28 May 2013 04:24:31 +0000 (UTC) Received: from Alfreds-MacBook-Pro-9.local (c-67-180-208-218.hsd1.ca.comcast.net [67.180.208.218]) by elvis.mu.org (Postfix) with ESMTPSA id E4EDA1A3C19; Mon, 27 May 2013 21:24:27 -0700 (PDT) Message-ID: <51A43176.9060100@mu.org> Date: Mon, 27 May 2013 21:24:22 -0700 From: Alfred Perlstein User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:17.0) Gecko/20130509 Thunderbird/17.0.6 MIME-Version: 1.0 To: Garrett Cooper Subject: Re: [RFC] add NetBSD compat macros to sys/cdefs.h References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Brooks Davis , freebsd-arch@FreeBSD.org X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 May 2013 04:24:31 -0000 On 5/27/13 7:21 PM, Garrett Cooper wrote: > Hi, > One of the things that I've done in order to reduce unnecessary > divergence when porting NetBSD testcases to FreeBSD is I've pushed a > few macros into my sys/cdefs.h in order to facilitate compatibility > with NetBSD: > > /* NetBSD compat */ > /* > * The following macro is used to remove const cast-away warnings > * from gcc -Wcast-qual; it should be used with caution because it > * can hide valid errors; in particular most valid uses are in > * situations where the API requires it, not to cast away string > * constants. We don't use *intptr_t on purpose here and we are > * explicit about unsigned long so that we don't have additional > * dependencies. > */ > #define __UNCONST(a) ((void *)(unsigned long)(const void *)(a)) > > #define ___STRING(x) __STRING(x) > #define __arraycount(__x) (sizeof(__x) / sizeof(__x[0])) > /* End NetBSD compat */ > > To clarify... > - I know __UNCONST is basically like __DECONST on steroids as > __UNCONST doesn't have the typecasting like __DECONST does. > - I'm working at removing the need for ___STRING with upstream. > - I know that __arraycount is equivalent to nitems. > > The reason why I'm doing this is to reduce divergence and get > things going ASAP with the testing effort as I have a couple thousand > testcases ported from NetBSD which will be hooked into release images > (really soon) and will result in automated testing (not too far away, > potentially a couple months), versus the zero coverage we currently > have in FreeBSD. If _anyone_ has a better idea and is willing to pony > up the patch to make things more sane, please by all means do. > I would prefer not to use libnetbsd as it just introduces > unnecessary churn in Makefiles and dependencies on a compat library > strictly for a couple of C macros. > Thoughts? Under COMPAT_NETBSD? -Alfred From owner-freebsd-arch@FreeBSD.ORG Tue May 28 05:06:30 2013 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id AD5926CD; Tue, 28 May 2013 05:06:30 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from fallbackmx07.syd.optusnet.com.au (fallbackmx07.syd.optusnet.com.au [211.29.132.9]) by mx1.freebsd.org (Postfix) with ESMTP id 4BA2F859; Tue, 28 May 2013 05:06:29 +0000 (UTC) Received: from mail09.syd.optusnet.com.au (mail09.syd.optusnet.com.au [211.29.132.190]) by fallbackmx07.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id r4S56JkF012684; Tue, 28 May 2013 15:06:19 +1000 Received: from c122-106-156-23.carlnfd1.nsw.optusnet.com.au (c122-106-156-23.carlnfd1.nsw.optusnet.com.au [122.106.156.23]) by mail09.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id r4S55oF8030831 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 28 May 2013 15:06:08 +1000 Date: Tue, 28 May 2013 15:05:50 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Alfred Perlstein Subject: Re: [RFC] add NetBSD compat macros to sys/cdefs.h In-Reply-To: <51A43176.9060100@mu.org> Message-ID: <20130528143646.L1298@besplex.bde.org> References: <51A43176.9060100@mu.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Optus-CM-Score: 0 X-Optus-CM-Analysis: v=2.0 cv=e4Ne0tV/ c=1 sm=1 a=SRymRyOzv8wA:10 a=kj9zAlcOel0A:10 a=PO7r1zJSAAAA:8 a=JzwRw_2MAAAA:8 a=-JRSxk00JnkA:10 a=2Yps3Zx4pix0iROAEYgA:9 a=CjuIK1q_8ugA:10 a=ebeQFi2P/qHVC0Yw9JDJ4g==:117 Cc: Brooks Davis , Garrett Cooper , freebsd-arch@freebsd.org X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 May 2013 05:06:30 -0000 On Mon, 27 May 2013, Alfred Perlstein wrote: > On 5/27/13 7:21 PM, Garrett Cooper wrote: >> Hi, >> One of the things that I've done in order to reduce unnecessary >> divergence when porting NetBSD testcases to FreeBSD is I've pushed a >> few macros into my sys/cdefs.h in order to facilitate compatibility >> with NetBSD: >> >> /* NetBSD compat */ >> /* >> * The following macro is used to remove const cast-away warnings >> * from gcc -Wcast-qual; it should be used with caution because it >> * can hide valid errors; in particular most valid uses are in >> * situations where the API requires it, not to cast away string >> * constants. We don't use *intptr_t on purpose here and we are >> * explicit about unsigned long so that we don't have additional >> * dependencies. >> */ >> #define __UNCONST(a) ((void *)(unsigned long)(const void *)(a)) Ugh. Like __DECONST(), this shouldn't exist. It never existed in my versions of FreeBSD. I policed its use a bit until FreeBSD-5, so that my local patches for FreeBSD-5 only have to burn it in 8 files (3 in the kernel and 5 in the kernel). Warnings from -Wcast-qual should never be "fixed" using this. Either don't use -Wcast-qual, or fix the bugs that it finds. Sometimes it is impossible to fix the bugs because they are in a standard API. Then all methods of avoiding the warning are bad, and using __DECONST() is one of the worst. Its only advantage is that it is so ugly and unportable that it serves to document the API bug. Unlike __DECONST(), __UNCONST() doesn't even work. uintptr_t (better __uintptr_t to reduce dependencies) must be used, since unsigned long just doesn't work unless it is identical to uintptr_t and that is true on all 32-bit arches. Apart from its design errors, the __DEMISTAKE() family has many implementation errors. I only fixed these by removing it. It is large and ugly, but not large and ugly enough to work in all cases. The main broken cases are: - __DECONST() on a const volatile type (it strips the volatile qualifier) - __DEVOLATILE() on a const volatile type (it strips the const qualifier) - missing casts from uintptr_t to void * on the way back to a pointer. uintptr_t is only guaranteed to work with void * or qualified void *. It is a feature that it is not documented in any man page. This should prevent its use. Its dependency on other headers is OK since this would be in the documentation if it had any. >> >> #define ___STRING(x) __STRING(x) >> #define __arraycount(__x) (sizeof(__x) / sizeof(__x[0])) >> /* End NetBSD compat */ >> >> To clarify... >> - I know __UNCONST is basically like __DECONST on steroids as >> __UNCONST doesn't have the typecasting like __DECONST does. It is not really on steroids, just has different broken casts. It isn't missing the cast to void * on the way back to a pointer. Not casting to a final pointer type is probably better, but gives subtly different semantics. Bruce From owner-freebsd-arch@FreeBSD.ORG Tue May 28 17:58:29 2013 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 5FA0733B for ; Tue, 28 May 2013 17:58:29 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) by mx1.freebsd.org (Postfix) with ESMTP id 3DBCBB58 for ; Tue, 28 May 2013 17:58:29 +0000 (UTC) Received: from jhbbsd.localnet (unknown [209.249.190.124]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 30ED2B95D; Tue, 28 May 2013 13:58:26 -0400 (EDT) From: John Baldwin To: freebsd-arch@freebsd.org Subject: Re: interrupt threads Date: Tue, 28 May 2013 08:41:17 -0400 User-Agent: KMail/1.13.5 (FreeBSD/8.2-CBSD-20110714-p25; KDE/4.5.5; amd64; ; ) References: <981733489AB3BD4DB24B48340F53E0A55B0D53AD@MTLDAG01.mtl.com> In-Reply-To: <981733489AB3BD4DB24B48340F53E0A55B0D53AD@MTLDAG01.mtl.com> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201305280841.17685.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Tue, 28 May 2013 13:58:26 -0400 (EDT) Cc: Orit Moskovich X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 May 2013 17:58:29 -0000 On Sunday, May 26, 2013 2:16:39 am Orit Moskovich wrote: > Hi, > > I'm trying to understand the difference between using taskqueues defined by ithreads (taskqueue_swi, taskqueue_swi_giant, taskqueue_fast) to defer an interrupt's work, and defining an interrupt handler to give as ithread parameter to bus_setup_intr. > Is there a difference in the priority? Which of the methods is preferable when writing a network device and performance is important? There are two types of interrupt handlers somewhat similar to the setup in OS X's IOKit: a filter which runs in the borrowed thread context when an interrupt happens, and a threaded handler. Currently you can only use one or the other. However, filters are more restricted in what they can do (can only use spin locks, can call wakeup(), but generally not use many other APIs). Most drivers just use a threaded handler that runs in an ithread. However, a few drivers use a filter (e.g. the Intel gigabit driver uses a filter to workaround an Intel chipset bug where if you mask the interrupt in the I/O APIC while the ithread runs, the chipset decides you aren't using the APIC at all and routes the NIC's interrupt to an alternate pin triggering a duplicate interrupt on a pin shared with a USB controller). When using a filter a driver needs to manually schedule a thread context to perform the actions it cannot perform in the filter (e.g. passing received packets up the network stack). The taskqueue_fast is used to manage those threads. Typically the threads backing such a taskqueue will have the same priority as ithreads as they basically function as ithreads. Eventually we will support having both a filter and a threaded handler for an interrupt where the filter's return value decides whether or not the threaded handler is scheduled to run. However, in most cases you can simply use a normal ithread handler and not bother with a filter. -- John Baldwin From owner-freebsd-arch@FreeBSD.ORG Tue May 28 18:41:22 2013 Return-Path: Delivered-To: freebsd-arch@FreeBSD.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id EF8A543C; Tue, 28 May 2013 18:41:22 +0000 (UTC) (envelope-from ian@FreeBSD.org) Received: from mho-01-ewr.mailhop.org (mho-03-ewr.mailhop.org [204.13.248.66]) by mx1.freebsd.org (Postfix) with ESMTP id C97A1E35; Tue, 28 May 2013 18:41:22 +0000 (UTC) Received: from c-24-8-230-52.hsd1.co.comcast.net ([24.8.230.52] helo=damnhippie.dyndns.org) by mho-01-ewr.mailhop.org with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.72) (envelope-from ) id 1UhOpf-000K51-Su; Tue, 28 May 2013 18:41:16 +0000 Received: from [172.22.42.240] (revolution.hippie.lan [172.22.42.240]) by damnhippie.dyndns.org (8.14.3/8.14.3) with ESMTP id r4SIfCZG006525; Tue, 28 May 2013 12:41:12 -0600 (MDT) (envelope-from ian@FreeBSD.org) X-Mail-Handler: Dyn Standard SMTP by Dyn X-Originating-IP: 24.8.230.52 X-Report-Abuse-To: abuse@dyndns.com (see http://www.dyndns.com/services/sendlabs/outbound_abuse.html for abuse reporting information) X-MHO-User: U2FsdGVkX19oD9mekSbQ7abrVlZW2ozJ Subject: Re: interrupt threads From: Ian Lepore To: John Baldwin In-Reply-To: <201305280841.17685.jhb@freebsd.org> References: <981733489AB3BD4DB24B48340F53E0A55B0D53AD@MTLDAG01.mtl.com> <201305280841.17685.jhb@freebsd.org> Content-Type: text/plain; charset="us-ascii" Date: Tue, 28 May 2013 12:41:12 -0600 Message-ID: <1369766472.1258.11.camel@revolution.hippie.lan> Mime-Version: 1.0 X-Mailer: Evolution 2.32.1 FreeBSD GNOME Team Port Content-Transfer-Encoding: 7bit Cc: Orit Moskovich , freebsd-arch@FreeBSD.org X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 May 2013 18:41:23 -0000 On Tue, 2013-05-28 at 08:41 -0400, John Baldwin wrote: > On Sunday, May 26, 2013 2:16:39 am Orit Moskovich wrote: > > Hi, > > > > I'm trying to understand the difference between using taskqueues defined by > ithreads (taskqueue_swi, taskqueue_swi_giant, taskqueue_fast) to defer an > interrupt's work, and defining an interrupt handler to give as ithread > parameter to bus_setup_intr. > > Is there a difference in the priority? Which of the methods is preferable > when writing a network device and performance is important? > > There are two types of interrupt handlers somewhat similar to the setup in OS > X's IOKit: a filter which runs in the borrowed thread context when an > interrupt happens, and a threaded handler. Currently you can only use one or > the other. However, filters are more restricted in what they can do (can only > use spin locks, can call wakeup(), but generally not use many other APIs). > Most drivers just use a threaded handler that runs in an ithread. However, a > few drivers use a filter (e.g. the Intel gigabit driver uses a filter to > workaround an Intel chipset bug where if you mask the interrupt in the I/O > APIC while the ithread runs, the chipset decides you aren't using the APIC at > all and routes the NIC's interrupt to an alternate pin triggering a duplicate > interrupt on a pin shared with a USB controller). When using a filter a > driver needs to manually schedule a thread context to perform the actions it > cannot perform in the filter (e.g. passing received packets up the network > stack). The taskqueue_fast is used to manage those threads. Typically the > threads backing such a taskqueue will have the same priority as ithreads as > they basically function as ithreads. > > Eventually we will support having both a filter and a threaded handler for an > interrupt where the filter's return value decides whether or not the threaded > handler is scheduled to run. > By "eventually" you must mean "since 2007." At least, that's when the code defining the filter handler return values was added. I know it works as documented at least since 8.2 because I use the feature in a PPS driver (the pps capture is done in the filter handler and the rest of the pps event processing is done in the threaded handler). -- Ian > However, in most cases you can simply use a normal ithread handler and not > bother with a filter. > From owner-freebsd-arch@FreeBSD.ORG Tue May 28 20:14:11 2013 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 51585FAD; Tue, 28 May 2013 20:14:11 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) by mx1.freebsd.org (Postfix) with ESMTP id 2A6CC2F0; Tue, 28 May 2013 20:14:11 +0000 (UTC) Received: from jhbbsd.localnet (unknown [209.249.190.124]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 7589DB988; Tue, 28 May 2013 16:14:10 -0400 (EDT) From: John Baldwin To: Ian Lepore Subject: Re: interrupt threads Date: Tue, 28 May 2013 15:00:56 -0400 User-Agent: KMail/1.13.5 (FreeBSD/8.2-CBSD-20110714-p25; KDE/4.5.5; amd64; ; ) References: <981733489AB3BD4DB24B48340F53E0A55B0D53AD@MTLDAG01.mtl.com> <201305280841.17685.jhb@freebsd.org> <1369766472.1258.11.camel@revolution.hippie.lan> In-Reply-To: <1369766472.1258.11.camel@revolution.hippie.lan> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201305281500.56679.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Tue, 28 May 2013 16:14:10 -0400 (EDT) Cc: Orit Moskovich , freebsd-arch@freebsd.org X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 May 2013 20:14:11 -0000 On Tuesday, May 28, 2013 2:41:12 pm Ian Lepore wrote: > On Tue, 2013-05-28 at 08:41 -0400, John Baldwin wrote: > > On Sunday, May 26, 2013 2:16:39 am Orit Moskovich wrote: > > > Hi, > > > > > > I'm trying to understand the difference between using taskqueues defined by > > ithreads (taskqueue_swi, taskqueue_swi_giant, taskqueue_fast) to defer an > > interrupt's work, and defining an interrupt handler to give as ithread > > parameter to bus_setup_intr. > > > Is there a difference in the priority? Which of the methods is preferable > > when writing a network device and performance is important? > > > > There are two types of interrupt handlers somewhat similar to the setup in OS > > X's IOKit: a filter which runs in the borrowed thread context when an > > interrupt happens, and a threaded handler. Currently you can only use one or > > the other. However, filters are more restricted in what they can do (can only > > use spin locks, can call wakeup(), but generally not use many other APIs). > > Most drivers just use a threaded handler that runs in an ithread. However, a > > few drivers use a filter (e.g. the Intel gigabit driver uses a filter to > > workaround an Intel chipset bug where if you mask the interrupt in the I/O > > APIC while the ithread runs, the chipset decides you aren't using the APIC at > > all and routes the NIC's interrupt to an alternate pin triggering a duplicate > > interrupt on a pin shared with a USB controller). When using a filter a > > driver needs to manually schedule a thread context to perform the actions it > > cannot perform in the filter (e.g. passing received packets up the network > > stack). The taskqueue_fast is used to manage those threads. Typically the > > threads backing such a taskqueue will have the same priority as ithreads as > > they basically function as ithreads. > > > > Eventually we will support having both a filter and a threaded handler for an > > interrupt where the filter's return value decides whether or not the threaded > > handler is scheduled to run. > > > > By "eventually" you must mean "since 2007." At least, that's when the > code defining the filter handler return values was added. I know it > works as documented at least since 8.2 because I use the feature in a > PPS driver (the pps capture is done in the filter handler and the rest > of the pps event processing is done in the threaded handler). Eh, it only works if you build a kernel with the INTR_FILTER option (not on by default) IIRC. I started on cleaning that up and ended up rototilling much of the ithread code in a p4 branch. I hope to merge that into HEAD at which point filters + handlers will always work (along with several other changes aimed at removing the need for taskqueue_fast for most cases). -- John Baldwin From owner-freebsd-arch@FreeBSD.ORG Tue May 28 20:40:51 2013 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 4DD08A4B for ; Tue, 28 May 2013 20:40:51 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from c00l3r.networx.ch (c00l3r.networx.ch [62.48.2.2]) by mx1.freebsd.org (Postfix) with ESMTP id 9F441659 for ; Tue, 28 May 2013 20:40:50 +0000 (UTC) Received: (qmail 94097 invoked from network); 28 May 2013 21:39:20 -0000 Received: from c00l3r.networx.ch (HELO [127.0.0.1]) ([62.48.2.2]) (envelope-sender ) by c00l3r.networx.ch (qmail-ldap-1.03) with SMTP for ; 28 May 2013 21:39:20 -0000 Message-ID: <51A5164E.5030508@freebsd.org> Date: Tue, 28 May 2013 22:40:46 +0200 From: Andre Oppermann User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130509 Thunderbird/17.0.6 MIME-Version: 1.0 To: John Baldwin Subject: Re: interrupt threads References: <981733489AB3BD4DB24B48340F53E0A55B0D53AD@MTLDAG01.mtl.com> <201305280841.17685.jhb@freebsd.org> <1369766472.1258.11.camel@revolution.hippie.lan> <201305281500.56679.jhb@freebsd.org> In-Reply-To: <201305281500.56679.jhb@freebsd.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Orit Moskovich , Ian Lepore , freebsd-arch@freebsd.org X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 May 2013 20:40:51 -0000 On 28.05.2013 21:00, John Baldwin wrote: > On Tuesday, May 28, 2013 2:41:12 pm Ian Lepore wrote: >> On Tue, 2013-05-28 at 08:41 -0400, John Baldwin wrote: >>> On Sunday, May 26, 2013 2:16:39 am Orit Moskovich wrote: >>>> Hi, >>>> >>>> I'm trying to understand the difference between using taskqueues defined by >>> ithreads (taskqueue_swi, taskqueue_swi_giant, taskqueue_fast) to defer an >>> interrupt's work, and defining an interrupt handler to give as ithread >>> parameter to bus_setup_intr. >>>> Is there a difference in the priority? Which of the methods is preferable >>> when writing a network device and performance is important? >>> >>> There are two types of interrupt handlers somewhat similar to the setup in OS >>> X's IOKit: a filter which runs in the borrowed thread context when an >>> interrupt happens, and a threaded handler. Currently you can only use one or >>> the other. However, filters are more restricted in what they can do (can only >>> use spin locks, can call wakeup(), but generally not use many other APIs). >>> Most drivers just use a threaded handler that runs in an ithread. However, a >>> few drivers use a filter (e.g. the Intel gigabit driver uses a filter to >>> workaround an Intel chipset bug where if you mask the interrupt in the I/O >>> APIC while the ithread runs, the chipset decides you aren't using the APIC at >>> all and routes the NIC's interrupt to an alternate pin triggering a duplicate >>> interrupt on a pin shared with a USB controller). When using a filter a >>> driver needs to manually schedule a thread context to perform the actions it >>> cannot perform in the filter (e.g. passing received packets up the network >>> stack). The taskqueue_fast is used to manage those threads. Typically the >>> threads backing such a taskqueue will have the same priority as ithreads as >>> they basically function as ithreads. >>> >>> Eventually we will support having both a filter and a threaded handler for an >>> interrupt where the filter's return value decides whether or not the threaded >>> handler is scheduled to run. >>> >> >> By "eventually" you must mean "since 2007." At least, that's when the >> code defining the filter handler return values was added. I know it >> works as documented at least since 8.2 because I use the feature in a >> PPS driver (the pps capture is done in the filter handler and the rest >> of the pps event processing is done in the threaded handler). > > Eh, it only works if you build a kernel with the INTR_FILTER option (not on by > default) IIRC. I started on cleaning that up and ended up rototilling much of > the ithread code in a p4 branch. I hope to merge that into HEAD at which point > filters + handlers will always work (along with several other changes aimed at > removing the need for taskqueue_fast for most cases). That would be excellent. -- Andre From owner-freebsd-arch@FreeBSD.ORG Wed May 29 13:33:31 2013 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 1EF6D6A0 for ; Wed, 29 May 2013 13:33:31 +0000 (UTC) (envelope-from onlinesjournals@gmail.com) Received: from mail-bk0-x244.google.com (mail-bk0-x244.google.com [IPv6:2a00:1450:4008:c01::244]) by mx1.freebsd.org (Postfix) with ESMTP id 935D0E7C for ; Wed, 29 May 2013 13:33:30 +0000 (UTC) Received: by mail-bk0-f68.google.com with SMTP id jk13so1378558bkc.11 for ; Wed, 29 May 2013 06:33:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:reply-to:from:to:subject:date:mime-version:content-type :content-transfer-encoding:x-priority; bh=dsyZItvfVn5IylE6yrlPUKZwt/glDkRaYG4rLG/wUpU=; b=Cc3gbkQL9+QDNhtLVgKLzpGgv0hz6mwNATGljOd+9+yAVnZBTTEMk1hw6CaHqZmD93 48irtCdwRT3QylooFK+JsMUxONvNBxmctZcRn4MqJcxVNG3nkOBG10qq/6afkEPoFwHD YUDPCDTY8hHVLxwmM/ai8F4MP7ZDrM1wYQA8Y6X4DYLyRgz+wJ8garwfSXy4j8ScGAs4 tcl3attFdoFMDY+oDW0AjVK3DJb2qgvgcDsh6Q/zH3PbT0KXM7KVViCi8BfFuK1xAhPR w2JF3YRfo3ti4Skwj93X5pcx76MOPz5dGg5nFfQ3uwSlucIXBGnMV9VpOgYURvEDydFI E3Nw== X-Received: by 10.204.170.130 with SMTP id d2mr701358bkz.134.1369834409614; Wed, 29 May 2013 06:33:29 -0700 (PDT) Received: from Benyamin-PC ([2.187.52.102]) by mx.google.com with ESMTPSA id so13sm12060850bkb.15.2013.05.29.06.33.27 for (version=TLSv1 cipher=RC4-SHA bits=128/128); Wed, 29 May 2013 06:33:29 -0700 (PDT) Message-ID: <0324c729-41423-01f92731997338@benyamin-pc> From: "Sjournals" To: freebsd-arch@freebsd.org Subject: Sjournals Services (Open Journal Management system, Sjournals Index, ...) Date: Wed, 29 May 2013 06:32:33 -0700 X-Priority: 3 MIME-Version: 1.0 Content-Type: text/plain X-Content-Filtered-By: Mailman/MimeDel 2.1.14 X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: Sjournals List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 May 2013 13:33:31 -0000 Dear Researchers We provide high quality services and strive to ease all steps from submission to publication of high quality research work. 1. [1]Sjournals Manager (FREE of charge) The [2]Sjournals Manager manages the overall publishing system. The [3]Sjournals Manager does the setup for the journal, and enrolls the Editors, Section Editors, Copyeditors, Layout Editors, Proofreaders, and Reviewers. The [4]Sjournals Manager cordially invites you to join the peer reviewed journals of the Open Journal Management system and help us to produce good quality research in your area of expertise. With Sjournals Manager you can easily start your own journal. Scholars, institutions, conference organizers and scientific societies can all propose and launch new scientific journals. 2. Call for Paper (Vol 2 | Issue 6 | June 2013) We invite you to submit your manuscript(s) at [5]http://www.sjournals.com for rapid publication (via online submission system). Our objective is to inform author(s) of the decision on their manuscript (s) within one week of submission (All of Fields). Some of Indexing/Abstracting DOAJ, CABI Abstract, Global health, TEEAL (Cornell University), HINARI, CAS, ISC, Genamic JournalSeek, JournalTOCs, Academic Journals Database, PKP, Google scholar, SCIRUS, Index Copernicus, Academic keys, ResearchBib, Newjour, Electronic journals library, WorldCat, ProQuest, Open J-gate, library information service, GIF, Free journals act, etc. Submit your thesis abstract (*FREE*) Abstracts of all Master, Doctoral thesis will be submitted for inclusion in Sjournals Thesis, an online database used by researchers around the world. ST can be searched by author name, subject terms, and all words in the title and abstract. 3. [6]Sjournals Index (FREE of charge) The [7]Sjournals Index provides quantitative and qualitative tool for ranking, evaluating and categorizing the journals for academic evaluation and excellence. This factor is used for evaluating the prestige of journals. The evaluation is carried out by considering the factors like peer review originality, scientific quality, technical editing quality, editorial quality and regularity. 4. [8]Sjournals Conference Management System (FREE of charge) [9]Sjournals Conference Management System (SCMS) is a Web publishing tool that will create a complete Web presence for your scholarly conference. Don't hesitate to contact us if you have any questions. --- Kind Regards Sjournals Team Email: [10]Onlinesjournals@gmail.com [11]Onlinesjournals@yahoo.com [12]www.sjournals.com [13]www.sjournals.net [14]http://sjournals.net/ojs/index.php/index/about (Sjournals Manager) [15]http://sjournals.net/onlineconferencesystem/ (Sjournals Conference Management System) [16]http://sjournals.net/sjournalsindex (Sjournals Index) --------------------------------------------------------------------- ----------------------------------- P Think Green - don't print this email unless you really need to References 1. http://sjournals.net/ojs/ 2. http://sjournals.net/ojs/ 3. http://sjournals.net/ojs/ 4. http://sjournals.net/ojs/ 5. http://www.sjournals.com/ 6. http://sjournals.net/sjournalsindex/ 7. http://sjournals.net/sjournalsindex/ 8. http://sjournals.net/onlineconferencesystem 9. http://sjournals.net/onlineconferencesystem 10. mailto:Onlinesjournals@gmail.com 11. mailto:Onlinesjournals@gmail.com 12. http://www.sjournals.com/ 13. http://www.sjournals.net/ 14. http://sjournals.net/ojs/index.php/index/about 15. http://sjournals.net/onlineconferencesystem/ 16. http://sjournals.net/sjournalsindex From owner-freebsd-arch@FreeBSD.ORG Fri May 31 16:16:57 2013 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id F03258CE for ; Fri, 31 May 2013 16:16:57 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) by mx1.freebsd.org (Postfix) with ESMTP id D1CE6E25 for ; Fri, 31 May 2013 16:16:57 +0000 (UTC) Received: from jhbbsd.localnet (unknown [209.249.190.124]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 5548AB915 for ; Fri, 31 May 2013 12:16:57 -0400 (EDT) To: arch@freebsd.org Subject: [PATCH] Allow atomic sets of non-overlapping CPU sets for a global cpuset From: John Baldwin Date: Fri, 31 May 2013 12:16:56 -0400 MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201305311216.56558.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Fri, 31 May 2013 12:16:57 -0400 (EDT) X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 31 May 2013 16:16:58 -0000 So there's an oddity with cpuset I've run into recently at work. Suppose I have created a new cpuset and want to change the set of CPUs for that set (say from a mask of just CPU 1 to a mask of just CPU 2). I can't do that atomically. I have to first set the mask to contain both the old set (CPU 1) and the new set (CPU 2) and then change it a second time to only contain the new set (CPU 2). The reason is that cpuset_modify() runs cpuset_testupdate() on the set it is about to modify, so when I try to change it in a single operation the new mask doesn't overlap with the old mask and it fails with EDEADLK. % cpuset -c -l 1 /bin/sh $ cpuset -gi pid -1 cpuset id: 2 $ cpuset -g pid -1 mask: 1 $ cpuset -l 2 -s 2 cpuset: setaffinity: Resource deadlock avoided I think that the correct logic here is that we should only check descendants of the set we are changing, but not the set we are about to change. The patch does this and allows my test case above to work: Index: kern_cpuset.c =================================================================== --- kern_cpuset.c (revision 251132) +++ kern_cpuset.c (working copy) @@ -303,7 +303,7 @@ cpuset_create(struct cpuset **setp, struct cpuset * empty as well as RDONLY flags. */ static int -cpuset_testupdate(struct cpuset *set, cpuset_t *mask) +cpuset_testupdate(struct cpuset *set, cpuset_t *mask, int check_mask) { struct cpuset *nset; cpuset_t newmask; @@ -312,13 +312,16 @@ static int mtx_assert(&cpuset_lock, MA_OWNED); if (set->cs_flags & CPU_SET_RDONLY) return (EPERM); - if (!CPU_OVERLAP(&set->cs_mask, mask)) - return (EDEADLK); - CPU_COPY(&set->cs_mask, &newmask); - CPU_AND(&newmask, mask); + if (check_mask) { + if (!CPU_OVERLAP(&set->cs_mask, mask)) + return (EDEADLK); + CPU_COPY(&set->cs_mask, &newmask); + CPU_AND(&newmask, mask); + } else + CPU_COPY(mask, &newmask); error = 0; LIST_FOREACH(nset, &set->cs_children, cs_siblings) - if ((error = cpuset_testupdate(nset, &newmask)) != 0) + if ((error = cpuset_testupdate(nset, &newmask, 1)) != 0) break; return (error); } @@ -370,11 +373,11 @@ cpuset_modify(struct cpuset *set, cpuset_t *mask) if (root && !CPU_SUBSET(&root->cs_mask, mask)) return (EINVAL); mtx_lock_spin(&cpuset_lock); - error = cpuset_testupdate(set, mask); + error = cpuset_testupdate(set, mask, 0); if (error) goto out; + CPU_COPY(mask, &set->cs_mask); cpuset_update(set, mask); - CPU_COPY(mask, &set->cs_mask); out: mtx_unlock_spin(&cpuset_lock); -- John Baldwin From owner-freebsd-arch@FreeBSD.ORG Sat Jun 1 23:46:16 2013 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 67CD7442; Sat, 1 Jun 2013 23:46:16 +0000 (UTC) (envelope-from oliver.pntr@gmail.com) Received: from mail-oa0-x229.google.com (mail-oa0-x229.google.com [IPv6:2607:f8b0:4003:c02::229]) by mx1.freebsd.org (Postfix) with ESMTP id 16CF63CF; Sat, 1 Jun 2013 23:46:16 +0000 (UTC) Received: by mail-oa0-f41.google.com with SMTP id n9so497920oag.28 for ; Sat, 01 Jun 2013 16:46:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:cc:content-type; bh=xWzHxk4o7RlN293hJX8sAbw6sQsfagtJh9BDCSQ/qP8=; b=pvhCWZZWbfyt2KaXDa4mXRnvdlG0Aj95m2SgskTvBwJeyMCTNqL2O2mkbaAJNmm0a9 8gwetdgbXtF49qIPa35Lhx/YpehZ6ULq7mdwkZrlr3welWoTLmZmPjyjnUK8bEgC+6DM zOnqzgMAH3Ub6TMQwUUw6m1B1tVw7n3qAc6MuZxKioM/4T+k0j+lWUG2dgrmbx1Uab6L cviA25SjSk+/TIz/xs6OQTcZcOaoGOyekxP/5pDJHAB9Lj5u/2eSCxiaTUNRoOomlXUT k4duS/rY21xIXR33AB7y9g40kCJMH+0zzkJBAQg2LJfDNHKgfVKwmj5Te4oQcmv1yj7f DUEQ== MIME-Version: 1.0 X-Received: by 10.182.129.101 with SMTP id nv5mr7850556obb.56.1370130375623; Sat, 01 Jun 2013 16:46:15 -0700 (PDT) Received: by 10.182.155.98 with HTTP; Sat, 1 Jun 2013 16:46:15 -0700 (PDT) Date: Sun, 2 Jun 2013 01:46:15 +0200 Message-ID: Subject: From: Oliver Pinter To: arch Content-Type: multipart/mixed; boundary=e89a8fb1ebe45618f904de205642 X-Content-Filtered-By: Mailman/MimeDel 2.1.14 Cc: Konstantin Belousov X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 01 Jun 2013 23:46:16 -0000 --e89a8fb1ebe45618f904de205642 Content-Type: text/plain; charset=ISO-8859-1 Hi All! As subpart of my thesis, I implemented Intel SMAP[1] support for FreeBSD. The current stable version of patch (attached) have compile time option to enable SMAP.* A feature complete dynamic version is expected by the end of the month, which patched the kernel on boot time, when the feautre presented in CPU. [1] http://lwn.net/Articles/517475/ patches: https://github.com/opntr/freebsd-patches-2013-tavasz smap-test: https://github.com/opntr/freebsd-smap-tester smap_disabled.gif: Running smap-test without SMAP support: illegal user-space memory address read/write from kernel-space. smap_{read,write}.gif: Running smap-test with SMAP: the kernel must paniced, due an illegal read from user-space memory address. * when you applied this patch and enabled the SMAP in kernel and your CPU does not have SMAP support, the kernel _must_ paniced. --e89a8fb1ebe45618f904de205642 Content-Type: text/x-patch; charset=US-ASCII; name="0001-added-SMAP-support-for-FreeBSD-against-r250423.patch" Content-Disposition: attachment; filename="0001-added-SMAP-support-for-FreeBSD-against-r250423.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: file0 RnJvbSBhZTE4YjM3NGIzODQwMWY3MzZlNGUxM2E4YWI1ZmFiODI5ODVkZjJiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBPbGl2ZXIgUGludGVyIDxvbGl2ZXIucG50ckBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMTYgQXByIDIwMTMgMDE6MzI6MjUgKzAyMDAKU3ViamVjdDogW1BBVENIXSBh ZGRlZCBTTUFQIHN1cHBvcnQgZm9yIEZyZWVCU0QgYWdhaW5zdCByMjUwNDIzCgpUaGlzIHBhdGNo IGltcGxlbWVudGVkIHN1cHBvcnQgZm9yIEludGVsJ3MgbmV3IHByb3RlY3Rpb24gdGVjaG5vbG9n eS4KClN1cGVydmlzb3IgTW9kZSBBY2Nlc3MgUHJldmVudGlvbiAoU01BUCkgaXMgbmV3ZXN0IHNl Y3VyaXR5IGZlYXR1cmUgZnJvbQpJbnRlbCwgd2hpY2ggZmlyc3QgYXBwZWFycyBpbiB0aGUgSGFz d2VsbCBMaW5lIG9mIHByb2Nlc3NvcnMuCgpXaGVuIFNNQVAgZW5hYmxlZCwgdGhlIGtlcm5lbCBj YW5ub3QgYWNjZXNzIHBhZ2VzIHRoYXQgYXJlIGluIHVzZXJzcGFjZS4KSW4gc29tZSBjYXNlcyB0 aGUga2VybmVsIGRvZXMgaGF2ZSB0byBhY2Nlc3MgdXNlciBwYWdlcywgZm9yIHRoaXMgcmVhc29u CnRoZSB0ZWNobm9sb2d5IHByb3ZpZGVkIHR3byBpbnN0cnVjdGlvbiwgdG8gdGVtcG9yYXJpbHkg ZGlzYWJsZSB0aGlzCnByb3RlY3Rpb24uCgpXaGVuIFNNQVAgZGV0ZWN0IHByb3RlY3Rpb24gdmlv bGF0aW9uLCB0aGUga2VybmVsIG11c3QgY2FsbCBwYW5pYygpLgoKSW50ZWwncyBTTUFQIGRvY3Vt ZW50YXRpb246Cmh0dHA6Ly9zb2Z0d2FyZS5pbnRlbC5jb20vc2l0ZXMvZGVmYXVsdC9maWxlcy8z MTk0MzMtMDE0LnBkZgoKVGVzdCBjYXNlOgpodHRwczovL2dpdGh1Yi5jb20vb3BudHIvZnJlZWJz ZC1zbWFwLXRlc3RlcgoKc29tZSBwYXJ0cyBvZiB0aGlzIHBhdGNoIGRpc2N1c3NlZCB3aXRoIGtp YiBmcmVlYnNkIG9yZyBhbmQgSHVuZ2VyCgpTaWduZWQtb2ZmLWJ5OiBPbGl2ZXIgUGludGVyIDxv bGl2ZXIucG50ckBnbWFpbC5jb20+CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoqIGFkZGVkCXZvaWQgY2xhYyh2 b2lkKSBhbmQJdm9pZCBzdGFjKHZvaWQpIHRvIGNwdWZ1bmMuaAoqIGFkZGVkIFNUQUMvQ0xBQyBp bnN0cnVjdGlvbiBhbmQgYWRkZWQgY29uZmlnIG9wdGlvbnMKKiBhZGRlZCBiYXNpYyBzdXBwb3J0 IGZvciBTTUFQCiogYWRkZWQgc3RhYy9jbGFjIGluIHN1cHBvcnQuUyBhcm91bmQgdXNlcnNwYWNl IG1lbW9yeSBhY2Nlc3MKKiBhZGRlZCBSRkxBR1MuQUMgY2xlYXJpbmcgdG8gZXhjZXB0aW9uLlMg cmVsYXRlZCB0byBTTUFQCiogYWRkZWQgUkZMQUdTLkFDIGNsZWFyaW5nIHRvIGlhMzJfZXhjZXB0 aW9uLlMgcmVsYXRlZCB0byBTTUFQCiogYWRkZWQgUkZMQUdTLkFDIGNsZWFyaW5nIHRvIGFzbWFj cm9zLmggcmVsYXRlZCB0byBTTUFQCiogY2xhYyBhbmQgc3RhYyBmdW5jdGlvbnMgZGVwZW5kIG9u IElOVEVMX1NNQVAKKiBhZGRlZCB0cmFwIGhhbmRsZXIgdG8gU01BUAoKRm9yIHNlY3VyaXR5IHJl YXNvbiwgd2hlbiBQRiBvY2N1cmVkIGJ5IFNNQVAsIHRoZSBrZXJuZWwgc2hvdWxkIHBhbmljZWQu CgoiIFsuLi5dCgpUaGUgYWJvdmUgaXRlbXMgaW1wbHkgdGhhdCB0aGUgZXJyb3IgY29kZSBkZWxp dmVyZWQgYnkgYSBwYWdlLWZhdWx0CmV4Y2VwdGlvbiBkdWUgdG8gU01BUCBpcyBlaXRoZXIgMSAo Zm9yIHJlYWRzKSBvciAzIChmb3Igd3JpdGVzKS4KTm90ZSB0aGF0IHRoZSBvbmx5IHBhZ2UtZmF1 bHQgZXhjZXB0aW9ucyB0aGF0IGRlbGl2ZXIgYW4gZXJyb3IgY29kZQpvZiAxIGFyZSB0aG9zZSBp bmR1Y2VkIGJ5IFNNQVAuIChJZiBDUjAuV1AgPSAxLCBzb21lIHBhZ2UtZmF1bHQKZXhjZXB0aW9u cyBtYXkgZGVsaXZlciBhbiBlcnJvciBjb2RlIG9mIDMgZXZlbiBpZiBDUjQuU01BUCA9IDAuKQoK Wy4uLl0iIC0gaW50ZWwgMzE5NDMzLTAxNC5wZGYgOS4zLjMKCiogQ2xlYXIgdGhlIFJGTEFHUy5B QyBvbiB0aGUgc3RhcnQgb2Ygbm1pIGhhbmRsZXIKCnN1Z2dlc3RlZCBieSBraWJAOgo+IEkgdGhp bmsgdGhhdCBOTUkgaGFuZGxlciBzaG91bGQgaGF2ZSBDTEFDIGV4ZWN1dGVkIHVuY29uZGl0aW9u YWxseSBhbmQKPiBtdWNoIGVhcmxpZXIgdGhlbiBpdCBpcyBkb25lIGluIHlvdXIgcGF0Y2guIFNp bmNlIE5NSSBjb3VsZCBpbnRlcnJ1cHQKPiB0aGUgY29weSooKSBmdW5jdGlvbnMsIHlvdSB3b3Vs ZCBnZXQgc29tZSBrZXJuZWwgY29kZSB1bm5lY2Nlc3NhcnkKPiBleGVjdXRpbmcgd2l0aCBTTUFQ IG9mZi4KCiogYWRkZWQgbm90ZSB0byBmYXVsdCBoYW5kbGVycyByZWxhdGVkIHRvIFNNQVAKCnN1 Z2dlc3RlZCBieSBraWJAOgo+IEkgYmVsaWV2ZSB0aGF0IGV4Y2VwdGlvbiBsYWJlbHMgaW4gdGhl IHN1cHBvcnQuUywgbGlrZSBjb3B5b3V0X2ZhdWx0Cj4gZXRjCj4gZGVzZXJ2ZSBhIGNvbW1lbnQg ZGVzY3JpYmluZyB0aGF0IEVGTEFHUy5BQyBiaXQgZ2V0cyBjbGVhcmVkIGJ5IHRoZQo+IGV4Y2Vw dGlvbiBlbnRyeSBwb2ludCBiZWZvcmUgdGhlIGNvbnRyb2wgcmVhY2hlcyB0aGUgbGFiZWwuCgoq IGFkZGVkIEFDIGZsYWcgY2hlY2tpbmcgYW5kIGZhY3RvciBvdXQgU01BUCBjaGVja2luZyBpbiB0 cmFwX3BmYXVsdCgpIHRvIG1ha2UgaXQgbW9yZSByZWFkYWJsZSBhbmQKCnBhcnRpYWxseSBzdWdn ZXN0ZWQgYnkga2liOgo+IFRoZSB0cmFwX3BmYXVsdCgpIGZyYWdtZW50IHNob3VsZCBjaGVjayBm b3IgdGhlIGVycm9yIGNvZGUgZXF1YWwgdG8gMSBvcgo+IDMsIGFzIGRlc2NyaWJlZCBpbiB0aGUg OS4zLjMsIGluc3RlYWQgb2Ygb25seSBjaGVja2luZyBmb3IgdGhlIHByZXNlbnQKPiBiaXQgc2V0 LiBNb3JlLCBJIHN1Z2dlc3QgeW91IHRvIGV4cGxpY2l0ZWx5IGNoZWNrIHRoYXQgdGhlICNQRiBl eGNlcHRpb24KPiBjYW1lIGZyb20gdGhlIGtlcm5lbCBtb2RlIGFuZCB0aGF0IEVGTEFHUy5BQyB3 YXMgYWxzbyBzZXQsIGJlZm9yZQo+IGRlY2lkaW5ndG8gcGFuaWMgZHVlIHRvIFNNQVAtZGV0ZWN0 ZWQgZmFpbHVyZS4KCiogYnVpbGQgZml4LCB3aGVuIElOVEVMX1NNQVAgaGFzIG5vdCBzZXQgaW4g a2VybmVsIGNvbmZpZwoKL3Vzci9ob21lL29wL2dpdC9mcmVlYnNkLWJhc2UuZ2l0Lmh0dHAvc3lz L2FtZDY0L2FtZDY0L3RyYXAuYzo4ODk6MTogZXJyb3I6IHVudXNlZCBmdW5jdGlvbiAnc21hcF9h Y2Nlc3NfdmlvbGF0aW9uJyBbLVdlcnJvciwtV3VudXNlZC1mdW5jdGlvbl0Kc21hcF9hY2Nlc3Nf dmlvbGF0aW9uKHN0cnVjdCB0cmFwZnJhbWUgKmZyYW1lLCBpbnQgdXNlcm1vZGUpCl4KMSBlcnJv ciBnZW5lcmF0ZWQuCioqKiBbdHJhcC5vXSBFcnJvciBjb2RlIDEKMSBlcnJvcgoqKiogW2J1aWxk a2VybmVsXSBFcnJvciBjb2RlIDIKMSBlcnJvcgoqKiogW2J1aWxka2VybmVsXSBFcnJvciBjb2Rl IDIKMSBlcnJvcgoKKiBmaXhlZCBzbWFwX2FjY2Vzc192aW9sYXRpb24oLi4uKSwgc3BvdHRlZCBi eSBIdW5nZXIKCiogZml4IHNtYXBfYWNjZXNzX3Zpb2xhdHJpb24oKSB3aGVuIHRoZSBDUFUgZG9l cyBub3Qgc3VwcG9ydCBTTUFQCgoqIHVzZSB0aGUgQ0xBQyBhbmQgU1RBQyBtYWNybywgaW5zdGVh ZCBvZiB0aGUgLmJ5dGUgc2VxdWVuY2UKCiogYWRkZWQgbWVtb3J5IGNsb2JiZXIgdG8gY2xhYyBh bmQgc3RhYyBpbmxpbmUgYXNzZW1ibHkKCgljbGFjIGFuZCBzdGFjIGFyZSBzZW5zaXRpdmUgaW5z dHJ1Y3Rpb25zLAoJdG8gcHJldmVudCBpbnN0cnVjdGlvbiByZW9yZGVyaW5nIGFkZGVkIG1lbW9y eSBjbG9iYmVyCgoJc3BvdHRlZCBieSBIdW5nZXIsIFBhWFRlYW0KClNpZ25lZC1vZmYtYnk6IE9s aXZlciBQaW50ZXIgPG9saXZlci5wbnRyQGdtYWlsLmNvbT4KLS0tCiBzeXMvYW1kNjQvYW1kNjQv ZXhjZXB0aW9uLlMgICAgIHwgIDYgKysrKysrCiBzeXMvYW1kNjQvYW1kNjQvaWRlbnRjcHUuYyAg ICAgIHwgMjggKysrKysrKysrKysrKysrKysrKysrLS0tCiBzeXMvYW1kNjQvYW1kNjQvaW5pdGNw dS5jICAgICAgIHwgMTIgKysrKysrKy0tLS0KIHN5cy9hbWQ2NC9hbWQ2NC9wbWFwLmMgICAgICAg ICAgfCAxMyArKysrKysrKysrKwogc3lzL2FtZDY0L2FtZDY0L3N1cHBvcnQuUyAgICAgICB8IDQ4 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzeXMvYW1kNjQvYW1k NjQvdHJhcC5jICAgICAgICAgIHwgMjQgKysrKysrKysrKysrKysrKysrKysrCiBzeXMvYW1kNjQv aWEzMi9pYTMyX2V4Y2VwdGlvbi5TIHwgIDEgKwogc3lzL2FtZDY0L2luY2x1ZGUvYXNtYWNyb3Mu aCAgICB8ICAzICsrLQogc3lzL2FtZDY0L2luY2x1ZGUvY3B1ZnVuYy5oICAgICB8IDI3ICsrKysr KysrKysrKysrKysrKysrKysrCiBzeXMvYW1kNjQvaW5jbHVkZS9zbWFwX2luc3RyLmggIHwgMTQg KysrKysrKysrKysrCiBzeXMvY29uZi9OT1RFUyAgICAgICAgICAgICAgICAgIHwgIDQgKysrKwog c3lzL2NvbmYvb3B0aW9ucy5hbWQ2NCAgICAgICAgICB8ICAzICsrKwogc3lzL3g4Ni9pbmNsdWRl L3BzbC5oICAgICAgICAgICB8ICAyICstCiBzeXMveDg2L2luY2x1ZGUvc3BlY2lhbHJlZy5oICAg IHwgIDEgKwogMTQgZmlsZXMgY2hhbmdlZCwgMTc3IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25z KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzL2FtZDY0L2luY2x1ZGUvc21hcF9pbnN0ci5oCgpk aWZmIC0tZ2l0IGEvc3lzL2FtZDY0L2FtZDY0L2V4Y2VwdGlvbi5TIGIvc3lzL2FtZDY0L2FtZDY0 L2V4Y2VwdGlvbi5TCmluZGV4IDg5YWQ2MzguLmQ3ZWQ3ZTQgMTAwNjQ0Ci0tLSBhL3N5cy9hbWQ2 NC9hbWQ2NC9leGNlcHRpb24uUworKysgYi9zeXMvYW1kNjQvYW1kNjQvZXhjZXB0aW9uLlMKQEAg LTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlIDxtYWNoaW5lL2FzbWFjcm9zLmg+CiAjaW5jbHVkZSA8 bWFjaGluZS9wc2wuaD4KICNpbmNsdWRlIDxtYWNoaW5lL3RyYXAuaD4KKyNpbmNsdWRlIDxtYWNo aW5lL3NtYXBfaW5zdHIuaD4KICNpbmNsdWRlIDxtYWNoaW5lL3NwZWNpYWxyZWcuaD4KIAogI2lu Y2x1ZGUgImFzc3ltLnMiCkBAIC0xOTYsNiArMTk3LDcgQEAgYWxsdHJhcHNfcHVzaHJlZ3Nfbm9f cmRpOgogCW1vdnEJJXIxNSxURl9SMTUoJXJzcCkKIAltb3ZsCSRURl9IQVNTRUdTLFRGX0ZMQUdT KCVyc3ApCiAJY2xkCisJQ0xBQwogCUZBS0VfTUNPVU5UKFRGX1JJUCglcnNwKSkKICNpZmRlZiBL RFRSQUNFX0hPT0tTCiAJLyoKQEAgLTI3Niw2ICsyNzgsNyBAQCBJRFRWRUMoZGJsZmF1bHQpCiAJ bW92dwklZHMsVEZfRFMoJXJzcCkKIAltb3ZsCSRURl9IQVNTRUdTLFRGX0ZMQUdTKCVyc3ApCiAJ Y2xkCisJQ0xBQwogCXRlc3RiCSRTRUxfUlBMX01BU0ssVEZfQ1MoJXJzcCkgLyogRGlkIHdlIGNv bWUgZnJvbSBrZXJuZWw/ICovCiAJanoJMWYJCQkvKiBhbHJlYWR5IHJ1bm5pbmcgd2l0aCBrZXJu ZWwgR1MuYmFzZSAqLwogCXN3YXBncwpAQCAtMzc5LDYgKzM4Miw3IEBAIElEVFZFQyhmYXN0X3N5 c2NhbGwpCiAJbW92cQklcjE1LFRGX1IxNSglcnNwKQkvKiBDIHByZXNlcnZlZCAqLwogCW1vdmwJ JFRGX0hBU1NFR1MsVEZfRkxBR1MoJXJzcCkKIAljbGQKKwlDTEFDCiAJRkFLRV9NQ09VTlQoVEZf UklQKCVyc3ApKQogCW1vdnEJUENQVShDVVJUSFJFQUQpLCVyZGkKIAltb3ZxCSVyc3AsVERfRlJB TUUoJXJkaSkKQEAgLTQ0OSw2ICs0NTMsNyBAQCBJRFRWRUMoZmFzdF9zeXNjYWxsMzIpCiAgKi8K IAogSURUVkVDKG5taSkKKwlDTEFDCiAJc3VicQkkVEZfUklQLCVyc3AKIAltb3ZsCSQoVF9OTUkp LFRGX1RSQVBOTyglcnNwKQogCW1vdnEJJDAsVEZfQUREUiglcnNwKQpAQCAtNTMzLDYgKzUzOCw3 IEBAIG5taV9jYWxsdHJhcDoKIAogCXNocnEJJDMsJXJjeAkJLyogdHJhcCBmcmFtZSBzaXplIGlu IGxvbmcgd29yZHMgKi8KIAljbGQKKwlDTEFDCiAJcmVwCiAJbW92c3EJCQkvKiBjb3B5IHRyYXBm cmFtZSAqLwogCmRpZmYgLS1naXQgYS9zeXMvYW1kNjQvYW1kNjQvaWRlbnRjcHUuYyBiL3N5cy9h bWQ2NC9hbWQ2NC9pZGVudGNwdS5jCmluZGV4IGVjNWEyYWEuLjkwNDk1ZWIgMTAwNjQ0Ci0tLSBh L3N5cy9hbWQ2NC9hbWQ2NC9pZGVudGNwdS5jCisrKyBiL3N5cy9hbWQ2NC9hbWQ2NC9pZGVudGNw dS5jCkBAIC0zOTEsMTIgKzM5MSwxNCBAQCBwcmludGNwdWluZm8odm9pZCkKIAkJCQkgICAgICAg LyogUkRGU0JBU0UvUkRHU0JBU0UvV1JGU0JBU0UvV1JHU0JBU0UgKi8KIAkJCQkgICAgICAgIlww MDFHU0ZTQkFTRSIKIAkJCQkgICAgICAgIlwwMDJUU0NBREoiCisJCQkJICAgICAgICJcMDAzPGIy PiIKIAkJCQkgICAgICAgLyogQml0IE1hbmlwdWxhdGlvbiBJbnN0cnVjdGlvbnMgKi8KIAkJCQkg ICAgICAgIlwwMDRCTUkxIgogCQkJCSAgICAgICAvKiBIYXJkd2FyZSBMb2NrIEVsaXNpb24gKi8K IAkJCQkgICAgICAgIlwwMDVITEUiCiAJCQkJICAgICAgIC8qIEFkdmFuY2VkIFZlY3RvciBJbnN0 cnVjdGlvbnMgMiAqLwogCQkJCSAgICAgICAiXDAwNkFWWDIiCisJCQkJICAgICAgICJcMDA3PGI2 PiIKIAkJCQkgICAgICAgLyogU3VwZXJ2aXNvciBNb2RlIEV4ZWN1dGlvbiBQcm90LiAqLwogCQkJ CSAgICAgICAiXDAxMFNNRVAiCiAJCQkJICAgICAgIC8qIEJpdCBNYW5pcHVsYXRpb24gSW5zdHJ1 Y3Rpb25zICovCkBAIC00MDYsMTIgKzQwOCwyOSBAQCBwcmludGNwdWluZm8odm9pZCkKIAkJCQkg ICAgICAgIlwwMTNJTlZQQ0lEIgogCQkJCSAgICAgICAvKiBSZXN0cmljdGVkIFRyYW5zYWN0aW9u YWwgTWVtb3J5ICovCiAJCQkJICAgICAgICJcMDE0UlRNIgorCQkJCSAgICAgICAiXDAxNTxiMTI+ IgorCQkJCSAgICAgICAiXDAxNjxiMTM+IgorCQkJCSAgICAgICAiXDAxNzxiMTQ+IgorCQkJCSAg ICAgICAiXDAyMDxiMTU+IgorCQkJCSAgICAgICAiXDAyMTxiMTY+IgorCQkJCSAgICAgICAiXDAy MjxiMTc+IgogCQkJCSAgICAgICAvKiBFbmhhbmNlZCBOUkJHICovCi0JCQkJICAgICAgICJcMDIy UkRTRUVEIgorCQkJCSAgICAgICAiXDAyM1JEU0VFRCIKIAkJCQkgICAgICAgLyogQURDWCArIEFE T1ggKi8KLQkJCQkgICAgICAgIlwwMjNBRFgiCisJCQkJICAgICAgICJcMDI0QURYIgogCQkJCSAg ICAgICAvKiBTdXBlcnZpc29yIE1vZGUgQWNjZXNzIFByZXZlbnRpb24gKi8KLQkJCQkgICAgICAg IlwwMjRTTUFQIgorCQkJCSAgICAgICAiXDAyNVNNQVAiCisJCQkJICAgICAgICJcMDI2PGIyMT4i CisJCQkJICAgICAgICJcMDI3PGIyMj4iCisJCQkJICAgICAgICJcMDMwPGIyMz4iCisJCQkJICAg ICAgICJcMDMxPGIyND4iCisJCQkJICAgICAgICJcMDMyPGIyNT4iCisJCQkJICAgICAgICJcMDMz PGIyNj4iCisJCQkJICAgICAgICJcMDM0PGIyNz4iCisJCQkJICAgICAgICJcMDM1PGIyOD4iCisJ CQkJICAgICAgICJcMDM2PGIyOT4iCisJCQkJICAgICAgICJcMDM3PGIzMD4iCisJCQkJICAgICAg ICJcMDQwPGIzMT4iCiAJCQkJICAgICAgICk7CiAJCQl9CiAKQEAgLTU0NSw2ICs1NjQsOSBAQCBp ZGVudGlmeV9jcHUodm9pZCkKIAkJaWYgKGNwdV9mZWF0dXJlMiAmIENQVUlEMl9IVikgewogCQkJ Y3B1X3N0ZGV4dF9kaXNhYmxlID0gQ1BVSURfU1RERVhUX0ZTR1NCQVNFIHwKIAkJCSAgICBDUFVJ RF9TVERFWFRfU01FUDsKKyNpZmRlZiBJTlRFTF9TTUFQCisJCQljcHVfc3RkZXh0X2Rpc2FibGUg fD0gQ1BVSURfU1RERVhUX1NNQVA7CisjZW5kaWYKIAkJfSBlbHNlCiAJCQljcHVfc3RkZXh0X2Rp c2FibGUgPSAwOwogCQlUVU5BQkxFX0lOVF9GRVRDSCgiaHcuY3B1X3N0ZGV4dF9kaXNhYmxlIiwg JmNwdV9zdGRleHRfZGlzYWJsZSk7CmRpZmYgLS1naXQgYS9zeXMvYW1kNjQvYW1kNjQvaW5pdGNw dS5jIGIvc3lzL2FtZDY0L2FtZDY0L2luaXRjcHUuYwppbmRleCA0YWJlZDRjLi5mYmZhN2MzIDEw MDY0NAotLS0gYS9zeXMvYW1kNjQvYW1kNjQvaW5pdGNwdS5jCisrKyBiL3N5cy9hbWQ2NC9hbWQ2 NC9pbml0Y3B1LmMKQEAgLTE2NSwxMyArMTY1LDE3IEBAIGluaXRpYWxpemVjcHUodm9pZCkKIAkJ Y3I0IHw9IENSNF9GU0dTQkFTRTsKIAogCS8qCi0JICogUG9zdHBvbmUgZW5hYmxpbmcgdGhlIFNN RVAgb24gdGhlIGJvb3QgQ1BVIHVudGlsIHRoZSBwYWdlCi0JICogdGFibGVzIGFyZSBzd2l0Y2hl ZCBmcm9tIHRoZSBib290IGxvYWRlciBpZGVudGl0eSBtYXBwaW5nCi0JICogdG8gdGhlIGtlcm5l bCB0YWJsZXMuICBUaGUgYm9vdCBsb2FkZXIgZW5hYmxlcyB0aGUgVSBiaXQgaW4KLQkgKiBpdHMg dGFibGVzLgorCSAqIFBvc3Rwb25lIGVuYWJsaW5nIHRoZSBTTUVQIGFuZCB0aGUgU01BUCBvbiB0 aGUgYm9vdCBDUFUgdW50aWwKKwkgKiB0aGUgcGFnZSB0YWJsZXMgYXJlIHN3aXRjaGVkIGZyb20g dGhlIGJvb3QgbG9hZGVyIGlkZW50aXR5CisJICogbWFwcGluZyB0byB0aGUga2VybmVsIHRhYmxl cy4KKwkgKiBUaGUgYm9vdCBsb2FkZXIgZW5hYmxlcyB0aGUgVSBiaXQgaW4gaXRzIHRhYmxlcy4K IAkgKi8KIAlpZiAoIUlTX0JTUCgpICYmIChjcHVfc3RkZXh0X2ZlYXR1cmUgJiBDUFVJRF9TVERF WFRfU01FUCkpCiAJCWNyNCB8PSBDUjRfU01FUDsKKyNpZmRlZiBJTlRFTF9TTUFQCisJaWYgKCFJ U19CU1AoKSAmJiAoY3B1X3N0ZGV4dF9mZWF0dXJlICYgQ1BVSURfU1RERVhUX1NNQVApKQorCQlj cjQgfD0gQ1I0X1NNQVA7CisjZW5kaWYKIAlsb2FkX2NyNChjcjQpOwogCWlmICgoYW1kX2ZlYXR1 cmUgJiBBTURJRF9OWCkgIT0gMCkgewogCQltc3IgPSByZG1zcihNU1JfRUZFUikgfCBFRkVSX05Y RTsKZGlmZiAtLWdpdCBhL3N5cy9hbWQ2NC9hbWQ2NC9wbWFwLmMgYi9zeXMvYW1kNjQvYW1kNjQv cG1hcC5jCmluZGV4IDFiMWM4NmMuLjExZTU2MGQgMTAwNjQ0Ci0tLSBhL3N5cy9hbWQ2NC9hbWQ2 NC9wbWFwLmMKKysrIGIvc3lzL2FtZDY0L2FtZDY0L3BtYXAuYwpAQCAtOTgsNiArOTgsNyBAQCBf X0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAgKglhbmQgdG8gd2hlbiBwaHlzaWNhbCBtYXBzIG11c3Qg YmUgbWFkZSBjb3JyZWN0LgogICovCiAKKyNpbmNsdWRlICJvcHRfY3B1LmgiCiAjaW5jbHVkZSAi b3B0X3BtYXAuaCIKICNpbmNsdWRlICJvcHRfdm0uaCIKIApAQCAtNjY1LDYgKzY2NiwxOCBAQCBw bWFwX2Jvb3RzdHJhcCh2bV9wYWRkcl90ICpmaXJzdGFkZHIpCiAJaWYgKGNwdV9zdGRleHRfZmVh dHVyZSAmIENQVUlEX1NUREVYVF9TTUVQKQogCQlsb2FkX2NyNChyY3I0KCkgfCBDUjRfU01FUCk7 CiAKKwlpZiAoY3B1X3N0ZGV4dF9mZWF0dXJlICYgQ1BVSURfU1RERVhUX1NNQVApCisjaWZkZWYg SU5URUxfU01BUAorCQlsb2FkX2NyNChyY3I0KCkgfCBDUjRfU01BUCk7CisJZWxzZQorCQlwYW5p YygiVGhlIGtlcm5lbCBjb21waWxlZCB3aXRoIFwib3B0aW9ucyBJTlRFTF9TTUFQXCIsIgorCQkJ ICAgICAgIAkiYnV0IHlvdXIgQ1BVIGRvZXNuJ3Qgc3VwcG9ydCBTTUFQIVxuIik7CisjZWxzZQor CQlwcmludGYoIllvdXIgQ1BVIGhhcyBzdXBwb3J0IGZvciBTTUFQIHNlY3VyaXR5IGZlYXR1cmUu ICIKKwkJCSJZb3Ugc2hvdWxkIHJlY29tcGlsZSB0aGUga2VybmVsIHdpdGggIgorCQkJIlwib3B0 aW9ucyBJTlRFTF9TTUFQXCIgdG8gdXNlIHRoZW0uXG4iKTsKKyNlbmRpZgorCiAJLyoKIAkgKiBJ bml0aWFsaXplIHRoZSBrZXJuZWwgcG1hcCAod2hpY2ggaXMgc3RhdGljYWxseSBhbGxvY2F0ZWQp LgogCSAqLwpkaWZmIC0tZ2l0IGEvc3lzL2FtZDY0L2FtZDY0L3N1cHBvcnQuUyBiL3N5cy9hbWQ2 NC9hbWQ2NC9zdXBwb3J0LlMKaW5kZXggNzdkYmY2My4uN2FkODEwMSAxMDA2NDQKLS0tIGEvc3lz L2FtZDY0L2FtZDY0L3N1cHBvcnQuUworKysgYi9zeXMvYW1kNjQvYW1kNjQvc3VwcG9ydC5TCkBA IC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8bWFjaGluZS9hc21hY3Jvcy5oPgogI2luY2x1ZGUg PG1hY2hpbmUvaW50cl9tYWNoZGVwLmg+CiAjaW5jbHVkZSA8bWFjaGluZS9wbWFwLmg+CisjaW5j bHVkZSA8bWFjaGluZS9zbWFwX2luc3RyLmg+CiAKICNpbmNsdWRlICJhc3N5bS5zIgogCkBAIC0y NDQsMTIgKzI0NSwxNiBAQCBFTlRSWShjb3B5b3V0KQogCiAJc2hycQkkMywlcmN4CiAJY2xkCisJ U1RBQwogCXJlcAogCW1vdnNxCisJQ0xBQwogCW1vdmIJJWRsLCVjbAogCWFuZGIJJDcsJWNsCisJ U1RBQwogCXJlcAogCW1vdnNiCisJQ0xBQwogCiBkb25lX2NvcHlvdXQ6CiAJeG9ybAklZWF4LCVl YXgKQEAgLTI1OCw2ICsyNjMsMTEgQEAgZG9uZV9jb3B5b3V0OgogCXJldAogCiAJQUxJR05fVEVY VAorLyoKKyAqIG5vdGU6CisgKiBXaGVuIFNNQVAgZW5hYmxlZCwgdGhlIEVGTEFHUy5BQyBiaXQg Z2V0cyBjbGVhcmVkIGJlZm9yZSBjb250cm9sIHJlYWNoZXMKKyAqIHRoZSBmYXVsdCBoYW5kbGVy LgorICovIAogY29weW91dF9mYXVsdDoKIAltb3ZxCVBDUFUoQ1VSUENCKSwlcmR4CiAJbW92cQkk MCxQQ0JfT05GQVVMVCglcmR4KQpAQCAtMjkwLDEyICszMDAsMTYgQEAgRU5UUlkoY29weWluKQog CW1vdmIJJWNsLCVhbAogCXNocnEJJDMsJXJjeAkJCQkvKiBjb3B5IGxvbmd3b3JkLXdpc2UgKi8K IAljbGQKKwlTVEFDCiAJcmVwCiAJbW92c3EKKwlDTEFDCiAJbW92YgklYWwsJWNsCiAJYW5kYgkk NywlY2wJCQkJLyogY29weSByZW1haW5pbmcgYnl0ZXMgKi8KKwlTVEFDCiAJcmVwCiAJbW92c2IK KwlDTEFDCiAKIGRvbmVfY29weWluOgogCXhvcmwJJWVheCwlZWF4CkBAIC0zMDQsNiArMzE4LDEx IEBAIGRvbmVfY29weWluOgogCXJldAogCiAJQUxJR05fVEVYVAorLyoKKyAqIG5vdGU6CisgKiBX aGVuIFNNQVAgZW5hYmxlZCwgdGhlIEVGTEFHUy5BQyBiaXQgZ2V0cyBjbGVhcmVkIGJlZm9yZSBj b250cm9sIHJlYWNoZXMKKyAqIHRoZSBmYXVsdCBoYW5kbGVyLgorICovIAogY29weWluX2ZhdWx0 OgogCW1vdnEJUENQVShDVVJQQ0IpLCVyZHgKIAltb3ZxCSQwLFBDQl9PTkZBVUxUKCVyZHgpCkBA IC0zMjQsMTAgKzM0MywxMiBAQCBFTlRSWShjYXN1d29yZDMyKQogCWphCWZ1c3VmYXVsdAogCiAJ bW92bAklZXNpLCVlYXgJCQkvKiBvbGQgKi8KKwlTVEFDCiAjaWZkZWYgU01QCiAJbG9jawogI2Vu ZGlmCiAJY21weGNoZ2wgJWVkeCwoJXJkaSkJCQkvKiBuZXcgPSAlZWR4ICovCisJQ0xBQwogCiAJ LyoKIAkgKiBUaGUgb2xkIHZhbHVlIGlzIGluICVlYXguICBJZiB0aGUgc3RvcmUgc3VjY2VlZGVk IGl0IHdpbGwgYmUgdGhlCkBAIC0zNTMsMTAgKzM3NCwxMiBAQCBFTlRSWShjYXN1d29yZCkKIAlq YQlmdXN1ZmF1bHQKIAogCW1vdnEJJXJzaSwlcmF4CQkJLyogb2xkICovCisJU1RBQwogI2lmZGVm IFNNUAogCWxvY2sKICNlbmRpZgogCWNtcHhjaGdxICVyZHgsKCVyZGkpCQkJLyogbmV3ID0gJXJk eCAqLworCUNMQUMKIAogCS8qCiAJICogVGhlIG9sZCB2YWx1ZSBpcyBpbiAlZWF4LiAgSWYgdGhl IHN0b3JlIHN1Y2NlZWRlZCBpdCB3aWxsIGJlIHRoZQpAQCAtMzg1LDcgKzQwOCw5IEBAIEVOVFJZ KGZ1d29yZCkKIAljbXBxCSVyYXgsJXJkaQkJCS8qIHZlcmlmeSBhZGRyZXNzIGlzIHZhbGlkICov CiAJamEJZnVzdWZhdWx0CiAKKwlTVEFDCiAJbW92cQkoJXJkaSksJXJheAorCUNMQUMKIAltb3Zx CSQwLFBDQl9PTkZBVUxUKCVyY3gpCiAJcmV0CiBFTkQoZnV3b3JkNjQpCQpAQCAtMzk5LDcgKzQy NCw5IEBAIEVOVFJZKGZ1d29yZDMyKQogCWNtcHEJJXJheCwlcmRpCQkJLyogdmVyaWZ5IGFkZHJl c3MgaXMgdmFsaWQgKi8KIAlqYQlmdXN1ZmF1bHQKIAorCVNUQUMKIAltb3ZsCSglcmRpKSwlZWF4 CisJQ0xBQwogCW1vdnEJJDAsUENCX09ORkFVTFQoJXJjeCkKIAlyZXQKIEVORChmdXdvcmQzMikK QEAgLTQyNiw3ICs0NTMsOSBAQCBFTlRSWShmdXdvcmQxNikKIAljbXBxCSVyYXgsJXJkaQogCWph CWZ1c3VmYXVsdAogCisJU1RBQwogCW1vdnp3bAkoJXJkaSksJWVheAorCUNMQUMKIAltb3ZxCSQw LFBDQl9PTkZBVUxUKCVyY3gpCiAJcmV0CiBFTkQoZnV3b3JkMTYpCkBAIC00MzksMTIgKzQ2OCwx OSBAQCBFTlRSWShmdWJ5dGUpCiAJY21wcQklcmF4LCVyZGkKIAlqYQlmdXN1ZmF1bHQKIAorCVNU QUMKIAltb3Z6YmwJKCVyZGkpLCVlYXgKKwlDTEFDCiAJbW92cQkkMCxQQ0JfT05GQVVMVCglcmN4 KQogCXJldAogRU5EKGZ1Ynl0ZSkKIAogCUFMSUdOX1RFWFQKKy8qCisgKiBub3RlOgorICogV2hl biBTTUFQIGVuYWJsZWQsIHRoZSBFRkxBR1MuQUMgYml0IGdldHMgY2xlYXJlZCBiZWZvcmUgY29u dHJvbCByZWFjaGVzCisgKiB0aGUgZmF1bHQgaGFuZGxlci4KKyAqLyAKIGZ1c3VmYXVsdDoKIAlt b3ZxCVBDUFUoQ1VSUENCKSwlcmN4CiAJeG9ybAklZWF4LCVlYXgKQEAgLTQ2Niw3ICs1MDIsOSBA QCBFTlRSWShzdXdvcmQpCiAJY21wcQklcmF4LCVyZGkJCQkvKiB2ZXJpZnkgYWRkcmVzcyB2YWxp ZGl0eSAqLwogCWphCWZ1c3VmYXVsdAogCisJU1RBQwogCW1vdnEJJXJzaSwoJXJkaSkKKwlDTEFD CiAJeG9ybAklZWF4LCVlYXgKIAltb3ZxCVBDUFUoQ1VSUENCKSwlcmN4CiAJbW92cQklcmF4LFBD Ql9PTkZBVUxUKCVyY3gpCkBAIC00ODIsNyArNTIwLDkgQEAgRU5UUlkoc3V3b3JkMzIpCiAJY21w cQklcmF4LCVyZGkJCQkvKiB2ZXJpZnkgYWRkcmVzcyB2YWxpZGl0eSAqLwogCWphCWZ1c3VmYXVs dAogCisJU1RBQwogCW1vdmwJJWVzaSwoJXJkaSkKKwlDTEFDCiAJeG9ybAklZWF4LCVlYXgKIAlt b3ZxCVBDUFUoQ1VSUENCKSwlcmN4CiAJbW92cQklcmF4LFBDQl9PTkZBVUxUKCVyY3gpCkBAIC00 OTcsNyArNTM3LDkgQEAgRU5UUlkoc3V3b3JkMTYpCiAJY21wcQklcmF4LCVyZGkJCQkvKiB2ZXJp ZnkgYWRkcmVzcyB2YWxpZGl0eSAqLwogCWphCWZ1c3VmYXVsdAogCisJU1RBQwogCW1vdncJJXNp LCglcmRpKQorCUNMQUMKIAl4b3JsCSVlYXgsJWVheAogCW1vdnEJUENQVShDVVJQQ0IpLCVyY3gJ CS8qIHJlc3RvcmUgdHJhc2hlZCByZWdpc3RlciAqLwogCW1vdnEJJXJheCxQQ0JfT05GQVVMVCgl cmN4KQpAQCAtNTEzLDcgKzU1NSw5IEBAIEVOVFJZKHN1Ynl0ZSkKIAlqYQlmdXN1ZmF1bHQKIAog CW1vdmwJJWVzaSwlZWF4CisJU1RBQwogCW1vdmIJJWFsLCglcmRpKQorCUNMQUMKIAl4b3JsCSVl YXgsJWVheAogCW1vdnEJUENQVShDVVJQQ0IpLCVyY3gJCS8qIHJlc3RvcmUgdHJhc2hlZCByZWdp c3RlciAqLwogCW1vdnEJJXJheCxQQ0JfT05GQVVMVCglcmN4KQpAQCAtNTU1LDcgKzU5OSw5IEBA IEVOVFJZKGNvcHlpbnN0cikKIAlkZWNxCSVyZHgKIAlqegkzZgogCisJU1RBQwogCWxvZHNiCisJ Q0xBQwogCXN0b3NiCiAJb3JiCSVhbCwlYWwKIAlqbnoJMmIKQEAgLTU4NCw3ICs2MzAsOSBAQCBj cHlzdHJmbHRfeDoKIAl0ZXN0cQklcjksJXI5CiAJanoJMWYKIAlzdWJxCSVyZHgsJXI4CisJU1RB QwogCW1vdnEJJXI4LCglcjkpCisJQ0xBQwogMToKIAlyZXQKIEVORChjb3B5aW5zdHIpCmRpZmYg LS1naXQgYS9zeXMvYW1kNjQvYW1kNjQvdHJhcC5jIGIvc3lzL2FtZDY0L2FtZDY0L3RyYXAuYwpp bmRleCA2ZmNjYTgxLi5kMzc5NDllIDEwMDY0NAotLS0gYS9zeXMvYW1kNjQvYW1kNjQvdHJhcC5j CisrKyBiL3N5cy9hbWQ2NC9hbWQ2NC90cmFwLmMKQEAgLTEyNyw2ICsxMjcsOSBAQCB2b2lkIGRi bGZhdWx0X2hhbmRsZXIoc3RydWN0IHRyYXBmcmFtZSAqZnJhbWUpOwogCiBzdGF0aWMgaW50IHRy YXBfcGZhdWx0KHN0cnVjdCB0cmFwZnJhbWUgKiwgaW50KTsKIHN0YXRpYyB2b2lkIHRyYXBfZmF0 YWwoc3RydWN0IHRyYXBmcmFtZSAqLCB2bV9vZmZzZXRfdCk7CisjaWZkZWYgSU5URUxfU01BUAor c3RhdGljIGJvb2wgc21hcF9hY2Nlc3NfdmlvbGF0aW9uKHN0cnVjdCB0cmFwZnJhbWUgKiwgaW50 IHVzZXJtb2RlKTsKKyNlbmRpZgogCiAjZGVmaW5lIE1BWF9UUkFQX01TRwkJMzMKIHN0YXRpYyBj aGFyICp0cmFwX21zZ1tdID0gewpAQCAtNzE4LDYgKzcyMSwxMyBAQCB0cmFwX3BmYXVsdChmcmFt ZSwgdXNlcm1vZGUpCiAKIAkJbWFwID0gJnZtLT52bV9tYXA7CiAKKyNpZmRlZiBJTlRFTF9TTUFQ CisJCWlmIChfX3ByZWRpY3RfZmFsc2Uoc21hcF9hY2Nlc3NfdmlvbGF0aW9uKGZyYW1lLCB1c2Vy bW9kZSkpKSB7CisJCQl0cmFwX2ZhdGFsKGZyYW1lLCBldmEpOworCQkJcmV0dXJuICgtMSk7CisJ CX0KKyNlbmRpZgorCiAJCS8qCiAJCSAqIFdoZW4gYWNjZXNzaW5nIGEgdXNlcm1vZGUgYWRkcmVz cywga2VybmVsIG11c3QgYmUKIAkJICogcmVhZHkgdG8gYWNjZXB0IHRoZSBwYWdlIGZhdWx0LCBh bmQgcHJvdmlkZSBhCkBAIC04NzQsNiArODg0LDIwIEBAIHRyYXBfZmF0YWwoZnJhbWUsIGV2YSkK IAkJcGFuaWMoInVua25vd24vcmVzZXJ2ZWQgdHJhcCIpOwogfQogCisjaWZkZWYgSU5URUxfU01B UAorc3RhdGljIGJvb2wKK3NtYXBfYWNjZXNzX3Zpb2xhdGlvbihzdHJ1Y3QgdHJhcGZyYW1lICpm cmFtZSwgaW50IHVzZXJtb2RlKQoreworCWlmICgoY3B1X3N0ZGV4dF9mZWF0dXJlICYgQ1BVSURf U1RERVhUX1NNQVApID09IDApCisJCXJldHVybiAoZmFsc2UpOworCisJaWYgKHVzZXJtb2RlIHx8 IChmcmFtZS0+dGZfcmZsYWdzICYgUFNMX0FDKSAhPSAwKQorCQlyZXR1cm4gKGZhbHNlKTsKKwor CXJldHVybiAodHJ1ZSk7Cit9CisjZW5kaWYKKwogLyoKICAqIERvdWJsZSBmYXVsdCBoYW5kbGVy LiBDYWxsZWQgd2hlbiBhIGZhdWx0IG9jY3VycyB3aGlsZSB3cml0aW5nCiAgKiBhIGZyYW1lIGZv ciBhIHRyYXAvZXhjZXB0aW9uIG9udG8gdGhlIHN0YWNrLiBUaGlzIHVzdWFsbHkgb2NjdXJzCmRp ZmYgLS1naXQgYS9zeXMvYW1kNjQvaWEzMi9pYTMyX2V4Y2VwdGlvbi5TIGIvc3lzL2FtZDY0L2lh MzIvaWEzMl9leGNlcHRpb24uUwppbmRleCBmZTFhNjc2Li45ZjEzZjJmIDEwMDY0NAotLS0gYS9z eXMvYW1kNjQvaWEzMi9pYTMyX2V4Y2VwdGlvbi5TCisrKyBiL3N5cy9hbWQ2NC9pYTMyL2lhMzJf ZXhjZXB0aW9uLlMKQEAgLTY4LDYgKzY4LDcgQEAgSURUVkVDKGludDB4ODBfc3lzY2FsbCkKIAlt b3ZxCSVyMTUsVEZfUjE1KCVyc3ApCiAJbW92bAkkVEZfSEFTU0VHUyxURl9GTEFHUyglcnNwKQog CWNsZAorCUNMQUMKIAlGQUtFX01DT1VOVChURl9SSVAoJXJzcCkpCiAJbW92cQklcnNwLCAlcmRp CiAJY2FsbAlpYTMyX3N5c2NhbGwKZGlmZiAtLWdpdCBhL3N5cy9hbWQ2NC9pbmNsdWRlL2FzbWFj cm9zLmggYi9zeXMvYW1kNjQvaW5jbHVkZS9hc21hY3Jvcy5oCmluZGV4IDFmYjU5MmEuLmM5ODU2 MjMgMTAwNjQ0Ci0tLSBhL3N5cy9hbWQ2NC9pbmNsdWRlL2FzbWFjcm9zLmgKKysrIGIvc3lzL2Ft ZDY0L2luY2x1ZGUvYXNtYWNyb3MuaApAQCAtMTY3LDcgKzE2Nyw4IEBACiAJbW92dwklZXMsVEZf RVMoJXJzcCkgOwkJCQkJXAogCW1vdncJJWRzLFRGX0RTKCVyc3ApIDsJCQkJCVwKIAltb3ZsCSRU Rl9IQVNTRUdTLFRGX0ZMQUdTKCVyc3ApIDsJCQkJXAotCWNsZAorCWNsZCA7CQkJCQkJCQlcCisJ Q0xBQwogCiAjZGVmaW5lIFBPUF9GUkFNRQkJCQkJCQlcCiAJbW92cQlURl9SREkoJXJzcCksJXJk aSA7CQkJCQlcCmRpZmYgLS1naXQgYS9zeXMvYW1kNjQvaW5jbHVkZS9jcHVmdW5jLmggYi9zeXMv YW1kNjQvaW5jbHVkZS9jcHVmdW5jLmgKaW5kZXggODgxZmNkMi4uNTNiMmNlOCAxMDA2NDQKLS0t IGEvc3lzL2FtZDY0L2luY2x1ZGUvY3B1ZnVuYy5oCisrKyBiL3N5cy9hbWQ2NC9pbmNsdWRlL2Nw dWZ1bmMuaApAQCAtMzksMTAgKzM5LDE2IEBACiAjaWZuZGVmIF9NQUNISU5FX0NQVUZVTkNfSF8K ICNkZWZpbmUJX01BQ0hJTkVfQ1BVRlVOQ19IXwogCisjaW5jbHVkZSAib3B0X2NwdS5oIgorCiAj aWZuZGVmIF9TWVNfQ0RFRlNfSF8KICNlcnJvciB0aGlzIGZpbGUgbmVlZHMgc3lzL2NkZWZzLmgg YXMgYSBwcmVyZXF1aXNpdGUKICNlbmRpZgogCisjaWZkZWYgSU5URUxfU01BUAorI2luY2x1ZGUg PG1hY2hpbmUvc21hcF9pbnN0ci5oPgorI2VuZGlmCisKIHN0cnVjdCByZWdpb25fZGVzY3JpcHRv cjsKIAogI2RlZmluZSByZWFkYih2YSkJKCoodm9sYXRpbGUgdWludDhfdCAqKSAodmEpKQpAQCAt NzExLDExICs3MTcsMzEgQEAgaW50cl9yZXN0b3JlKHJlZ2lzdGVyX3QgcmZsYWdzKQogCXdyaXRl X3JmbGFncyhyZmxhZ3MpOwogfQogCisvKgorICogSW50ZWwgU01BUCByZWxhdGVkIGZ1bmN0aW9u cyAoY2xhYyBhbmQgc3RhYykKKyAqLworc3RhdGljIF9faW5saW5lIHZvaWQKK2NsYWModm9pZCkK K3sKKyNpZmRlZiBJTlRFTF9TTUFQCisJX19hc20gX192b2xhdGlsZShfX1NUUklORyhDTEFDKSA6 IDogOiAibWVtb3J5Iik7CisjZW5kaWYKK30KKworc3RhdGljIF9faW5saW5lIHZvaWQKK3N0YWMo dm9pZCkKK3sKKyNpZmRlZiBJTlRFTF9TTUFQCisJX19hc20gX192b2xhdGlsZShfX1NUUklORyhT VEFDKSA6IDogOiAibWVtb3J5Iik7CisjZW5kaWYKK30KKwogI2Vsc2UgLyogIShfX0dOVUNMSUtF X0FTTSAmJiBfX0NDX1NVUFBPUlRTX19fSU5MSU5FKSAqLwogCiBpbnQJYnJlYWtwb2ludCh2b2lk KTsKIHVfaW50CWJzZmwodV9pbnQgbWFzayk7CiB1X2ludAlic3JsKHVfaW50IG1hc2spOwordm9p ZAljbGFjKHZvaWQpOwogdm9pZAljbGZsdXNoKHVfbG9uZyBhZGRyKTsKIHZvaWQJY2x0cyh2b2lk KTsKIHZvaWQJY3B1aWRfY291bnQodV9pbnQgYXgsIHVfaW50IGN4LCB1X2ludCAqcCk7CkBAIC03 NzUsNiArODAxLDcgQEAgdWludDY0X3QgcmR0c2Modm9pZCk7CiB1X2xvbmcJcmVhZF9yZmxhZ3Mo dm9pZCk7CiB1X2ludAlyZnModm9pZCk7CiB1X2ludAlyZ3Modm9pZCk7Cit2b2lkCXN0YWModm9p ZCk7CiB2b2lkCXdiaW52ZCh2b2lkKTsKIHZvaWQJd3JpdGVfcmZsYWdzKHVfaW50IHJmKTsKIHZv aWQJd3Jtc3IodV9pbnQgbXNyLCB1aW50NjRfdCBuZXd2YWwpOwpkaWZmIC0tZ2l0IGEvc3lzL2Ft ZDY0L2luY2x1ZGUvc21hcF9pbnN0ci5oIGIvc3lzL2FtZDY0L2luY2x1ZGUvc21hcF9pbnN0ci5o Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3OTI2YWEKLS0tIC9kZXYvbnVs bAorKysgYi9zeXMvYW1kNjQvaW5jbHVkZS9zbWFwX2luc3RyLmgKQEAgLTAsMCArMSwxNCBAQAor I2lmbmRlZglfX1NNQVBfSU5TVFJVQ1RJT05fSAorI2RlZmluZQlfX1NNQVBfSU5TVFJVQ1RJT05f SAorCisjaW5jbHVkZSAib3B0X2NwdS5oIgorCisjaWZkZWYgSU5URUxfU01BUAorI2RlZmluZQlD TEFDCS5ieXRlIDB4MGYsMHgwMSwweGNhCisjZGVmaW5lCVNUQUMJLmJ5dGUgMHgwZiwweDAxLDB4 Y2IKKyNlbHNlCisjZGVmaW5lCUNMQUMKKyNkZWZpbmUJU1RBQworI2VuZGlmCisKKyNlbmRpZgkv KiBfX1NNQVBfSU5TVFJVQ1RJT05fSCAqLwpkaWZmIC0tZ2l0IGEvc3lzL2NvbmYvTk9URVMgYi9z eXMvY29uZi9OT1RFUwppbmRleCA0OGRiYTc3Li5hZjFjZjcxIDEwMDY0NAotLS0gYS9zeXMvY29u Zi9OT1RFUworKysgYi9zeXMvY29uZi9OT1RFUwpAQCAtMjk2MywzICsyOTYzLDcgQEAgb3B0aW9u cyAJUkNUTAogb3B0aW9ucyAJQlJPT0tUUkVFX0FMTE9DX1BBR0VTPSgyMTcqNCsxKQogb3B0aW9u cyAJTUFYRklMRVM9OTk5CiAKKyMgSW50ZWwgU01BUAorIyBUaGlzIG9wdGlvbnMgc3VwcG9ydGVk IG9uIEhhc3dlbGwgYW5kL29yIG5ld2VyIENQVXMgKDIwMTMgSnVuaSA8ICkgYW5kCisjIG1ha2Vz IHRoZSBrZXJuZWwgdW5ib290YWJsZSBvbiBvbGRlciBDUFVzLgorb3B0aW9ucyAJSU5URUxfU01B UAkjIEludGVsJ3MgaHcgdmVyc2lvbiBvZiBQYVggdWRlcmVmCmRpZmYgLS1naXQgYS9zeXMvY29u Zi9vcHRpb25zLmFtZDY0IGIvc3lzL2NvbmYvb3B0aW9ucy5hbWQ2NAppbmRleCA5MDM0OGI3Li5i ODYxNDM5IDEwMDY0NAotLS0gYS9zeXMvY29uZi9vcHRpb25zLmFtZDY0CisrKyBiL3N5cy9jb25m L29wdGlvbnMuYW1kNjQKQEAgLTcyLDMgKzcyLDYgQEAgSVNDSV9MT0dHSU5HCW9wdF9pc2NpLmgK ICMgaHcgcmFuZG9tIG51bWJlciBnZW5lcmF0b3JzIGZvciByYW5kb20oNCkKIFBBRExPQ0tfUk5H CQlvcHRfY3B1LmgKIFJEUkFORF9STkcJCW9wdF9jcHUuaAorCisjIEludGVsIFN1cGVydmlzb3Ig TW9kZSBBY2Nlc3MgUHJldmVudGlvbiAoU01BUCkKK0lOVEVMX1NNQVAJCW9wdF9jcHUuaApkaWZm IC0tZ2l0IGEvc3lzL3g4Ni9pbmNsdWRlL3BzbC5oIGIvc3lzL3g4Ni9pbmNsdWRlL3BzbC5oCmlu ZGV4IDEyZDA1YzUuLmNlOTdhMjYgMTAwNjQ0Ci0tLSBhL3N5cy94ODYvaW5jbHVkZS9wc2wuaAor KysgYi9zeXMveDg2L2luY2x1ZGUvcHNsLmgKQEAgLTUyLDcgKzUyLDcgQEAKICNkZWZpbmUJUFNM X05UCQkweDAwMDA0MDAwCS8qIG5lc3RlZCB0YXNrIGJpdCAqLwogI2RlZmluZQlQU0xfUkYJCTB4 MDAwMTAwMDAJLyogcmVzdW1lIGZsYWcgYml0ICovCiAjZGVmaW5lCVBTTF9WTQkJMHgwMDAyMDAw MAkvKiB2aXJ0dWFsIDgwODYgbW9kZSBiaXQgKi8KLSNkZWZpbmUJUFNMX0FDCQkweDAwMDQwMDAw CS8qIGFsaWdubWVudCBjaGVja2luZyAqLworI2RlZmluZQlQU0xfQUMJCTB4MDAwNDAwMDAJLyog YWxpZ25tZW50IGNoZWNraW5nIG9yIFNNQVAgc3RhdHVzKi8KICNkZWZpbmUJUFNMX1ZJRgkJMHgw MDA4MDAwMAkvKiB2aXJ0dWFsIGludGVycnVwdCBlbmFibGUgKi8KICNkZWZpbmUJUFNMX1ZJUAkJ MHgwMDEwMDAwMAkvKiB2aXJ0dWFsIGludGVycnVwdCBwZW5kaW5nICovCiAjZGVmaW5lCVBTTF9J RAkJMHgwMDIwMDAwMAkvKiBpZGVudGlmaWNhdGlvbiBiaXQgKi8KZGlmZiAtLWdpdCBhL3N5cy94 ODYvaW5jbHVkZS9zcGVjaWFscmVnLmggYi9zeXMveDg2L2luY2x1ZGUvc3BlY2lhbHJlZy5oCmlu ZGV4IGJmMTMzM2YuLjZiZmZkNDMgMTAwNjQ0Ci0tLSBhL3N5cy94ODYvaW5jbHVkZS9zcGVjaWFs cmVnLmgKKysrIGIvc3lzL3g4Ni9pbmNsdWRlL3NwZWNpYWxyZWcuaApAQCAtNzMsNiArNzMsNyBA QAogI2RlZmluZQlDUjRfUENJREUgMHgwMDAyMDAwMAkvKiBFbmFibGUgQ29udGV4dCBJRCAqLwog I2RlZmluZQlDUjRfWFNBVkUgMHgwMDA0MDAwMAkvKiBYU0VUQlYvWEdFVEJWICovCiAjZGVmaW5l CUNSNF9TTUVQIDB4MDAxMDAwMDAJLyogU3VwZXJ2aXNvci1Nb2RlIEV4ZWN1dGlvbiBQcmV2ZW50 aW9uICovCisjZGVmaW5lCUNSNF9TTUFQIDB4MDAyMDAwMDAJLyogU3VwZXJ2aXNvci1Nb2RlIEFj Y2VzcyBQcmV2ZW50aW9uICovCiAKIC8qCiAgKiBCaXRzIGluIEFNRDY0IHNwZWNpYWwgcmVnaXN0 ZXJzLiAgRUZFUiBpcyA2NCBiaXRzIHdpZGUuCi0tIAoxLjguMi4yCgo= --e89a8fb1ebe45618f904de205642-- From owner-freebsd-arch@FreeBSD.ORG Sat Jun 1 23:51:26 2013 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 32CFD50E for ; Sat, 1 Jun 2013 23:51:26 +0000 (UTC) (envelope-from oliver.pntr@gmail.com) Received: from mail-ob0-x233.google.com (mail-ob0-x233.google.com [IPv6:2607:f8b0:4003:c01::233]) by mx1.freebsd.org (Postfix) with ESMTP id E48763F4 for ; Sat, 1 Jun 2013 23:51:25 +0000 (UTC) Received: by mail-ob0-f179.google.com with SMTP id xk17so5196552obc.24 for ; Sat, 01 Jun 2013 16:51:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=/9hIZVq+96Q237Om0YUx13pGclro8o69LYB/FwsZjcQ=; b=x/LGsHcZMhC1FpUpufMWjGpkcPjAejfCcNOcCfzWtM0Y8I2mPNLacGdbgquz7sCJ3N 0ICfkuTbdkM7qFptpYLrfLua7Ey08Y68jfj4Zd7WpyBp6k0PPt1taPI9WroDluP83LRn SsaAnFxvODmsFmwgvgVwGkuKsVuUHkGGHBFktan20Pm65Nx+YGsJznUmO4LrefoPry7b 23rnQColxuKlrq5PiXy/F9ZqSd4s6QOoMz1jbEZMNFrJNdTv+NUb+a7rD/s30p/Qnibg 60szVkwcQmAOrBQW3mY2PY+TkvTN9E4/FuqLi2KCFeTatbIgcqAWVKtfFM/tvPFAtYAr QtCA== MIME-Version: 1.0 X-Received: by 10.182.171.9 with SMTP id aq9mr8051930obc.16.1370130685520; Sat, 01 Jun 2013 16:51:25 -0700 (PDT) Received: by 10.182.155.98 with HTTP; Sat, 1 Jun 2013 16:51:25 -0700 (PDT) Date: Sun, 2 Jun 2013 01:51:25 +0200 Message-ID: Subject: Intel SMAP for FreeBSD-CURRENT From: Oliver Pinter To: arch Content-Type: multipart/mixed; boundary=e89a8ff1cc9ccec54f04de206815 X-Content-Filtered-By: Mailman/MimeDel 2.1.14 X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 01 Jun 2013 23:51:26 -0000 --e89a8ff1cc9ccec54f04de206815 Content-Type: text/plain; charset=ISO-8859-1 Hi All! (I'm sorry for re-posting, soon forgot the subject.) As subpart of my thesis, I implemented Intel SMAP[1] support for FreeBSD. The current stable version of patch (attached) have compile time option to enable SMAP.* A feature complete dynamic version is expected by the end of the month, which patched the kernel on boot time, when the feautre presented in CPU. [1] http://lwn.net/Articles/517475/ patches: https://github.com/opntr/freebsd-patches-2013-tavasz smap-test: https://github.com/opntr/freebsd-smap-tester smap_disabled.gif: Running smap-test without SMAP support: illegal user-space memory address read/write from kernel-space. smap_{read,write}.gif: Running smap-test with SMAP: the kernel must paniced, due an illegal read from user-space memory address. * when you applied this patch and enabled the SMAP in kernel and your CPU does not have SMAP support, the kernel _must_ paniced. --e89a8ff1cc9ccec54f04de206815 Content-Type: text/x-patch; charset=US-ASCII; name="0001-added-SMAP-support-for-FreeBSD-against-r250423.patch" Content-Disposition: attachment; filename="0001-added-SMAP-support-for-FreeBSD-against-r250423.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: file4 RnJvbSBhZTE4YjM3NGIzODQwMWY3MzZlNGUxM2E4YWI1ZmFiODI5ODVkZjJiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBPbGl2ZXIgUGludGVyIDxvbGl2ZXIucG50ckBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMTYgQXByIDIwMTMgMDE6MzI6MjUgKzAyMDAKU3ViamVjdDogW1BBVENIXSBh ZGRlZCBTTUFQIHN1cHBvcnQgZm9yIEZyZWVCU0QgYWdhaW5zdCByMjUwNDIzCgpUaGlzIHBhdGNo IGltcGxlbWVudGVkIHN1cHBvcnQgZm9yIEludGVsJ3MgbmV3IHByb3RlY3Rpb24gdGVjaG5vbG9n eS4KClN1cGVydmlzb3IgTW9kZSBBY2Nlc3MgUHJldmVudGlvbiAoU01BUCkgaXMgbmV3ZXN0IHNl Y3VyaXR5IGZlYXR1cmUgZnJvbQpJbnRlbCwgd2hpY2ggZmlyc3QgYXBwZWFycyBpbiB0aGUgSGFz d2VsbCBMaW5lIG9mIHByb2Nlc3NvcnMuCgpXaGVuIFNNQVAgZW5hYmxlZCwgdGhlIGtlcm5lbCBj YW5ub3QgYWNjZXNzIHBhZ2VzIHRoYXQgYXJlIGluIHVzZXJzcGFjZS4KSW4gc29tZSBjYXNlcyB0 aGUga2VybmVsIGRvZXMgaGF2ZSB0byBhY2Nlc3MgdXNlciBwYWdlcywgZm9yIHRoaXMgcmVhc29u CnRoZSB0ZWNobm9sb2d5IHByb3ZpZGVkIHR3byBpbnN0cnVjdGlvbiwgdG8gdGVtcG9yYXJpbHkg ZGlzYWJsZSB0aGlzCnByb3RlY3Rpb24uCgpXaGVuIFNNQVAgZGV0ZWN0IHByb3RlY3Rpb24gdmlv bGF0aW9uLCB0aGUga2VybmVsIG11c3QgY2FsbCBwYW5pYygpLgoKSW50ZWwncyBTTUFQIGRvY3Vt ZW50YXRpb246Cmh0dHA6Ly9zb2Z0d2FyZS5pbnRlbC5jb20vc2l0ZXMvZGVmYXVsdC9maWxlcy8z MTk0MzMtMDE0LnBkZgoKVGVzdCBjYXNlOgpodHRwczovL2dpdGh1Yi5jb20vb3BudHIvZnJlZWJz ZC1zbWFwLXRlc3RlcgoKc29tZSBwYXJ0cyBvZiB0aGlzIHBhdGNoIGRpc2N1c3NlZCB3aXRoIGtp YiBmcmVlYnNkIG9yZyBhbmQgSHVuZ2VyCgpTaWduZWQtb2ZmLWJ5OiBPbGl2ZXIgUGludGVyIDxv bGl2ZXIucG50ckBnbWFpbC5jb20+CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoqIGFkZGVkCXZvaWQgY2xhYyh2 b2lkKSBhbmQJdm9pZCBzdGFjKHZvaWQpIHRvIGNwdWZ1bmMuaAoqIGFkZGVkIFNUQUMvQ0xBQyBp bnN0cnVjdGlvbiBhbmQgYWRkZWQgY29uZmlnIG9wdGlvbnMKKiBhZGRlZCBiYXNpYyBzdXBwb3J0 IGZvciBTTUFQCiogYWRkZWQgc3RhYy9jbGFjIGluIHN1cHBvcnQuUyBhcm91bmQgdXNlcnNwYWNl IG1lbW9yeSBhY2Nlc3MKKiBhZGRlZCBSRkxBR1MuQUMgY2xlYXJpbmcgdG8gZXhjZXB0aW9uLlMg cmVsYXRlZCB0byBTTUFQCiogYWRkZWQgUkZMQUdTLkFDIGNsZWFyaW5nIHRvIGlhMzJfZXhjZXB0 aW9uLlMgcmVsYXRlZCB0byBTTUFQCiogYWRkZWQgUkZMQUdTLkFDIGNsZWFyaW5nIHRvIGFzbWFj cm9zLmggcmVsYXRlZCB0byBTTUFQCiogY2xhYyBhbmQgc3RhYyBmdW5jdGlvbnMgZGVwZW5kIG9u IElOVEVMX1NNQVAKKiBhZGRlZCB0cmFwIGhhbmRsZXIgdG8gU01BUAoKRm9yIHNlY3VyaXR5IHJl YXNvbiwgd2hlbiBQRiBvY2N1cmVkIGJ5IFNNQVAsIHRoZSBrZXJuZWwgc2hvdWxkIHBhbmljZWQu CgoiIFsuLi5dCgpUaGUgYWJvdmUgaXRlbXMgaW1wbHkgdGhhdCB0aGUgZXJyb3IgY29kZSBkZWxp dmVyZWQgYnkgYSBwYWdlLWZhdWx0CmV4Y2VwdGlvbiBkdWUgdG8gU01BUCBpcyBlaXRoZXIgMSAo Zm9yIHJlYWRzKSBvciAzIChmb3Igd3JpdGVzKS4KTm90ZSB0aGF0IHRoZSBvbmx5IHBhZ2UtZmF1 bHQgZXhjZXB0aW9ucyB0aGF0IGRlbGl2ZXIgYW4gZXJyb3IgY29kZQpvZiAxIGFyZSB0aG9zZSBp bmR1Y2VkIGJ5IFNNQVAuIChJZiBDUjAuV1AgPSAxLCBzb21lIHBhZ2UtZmF1bHQKZXhjZXB0aW9u cyBtYXkgZGVsaXZlciBhbiBlcnJvciBjb2RlIG9mIDMgZXZlbiBpZiBDUjQuU01BUCA9IDAuKQoK Wy4uLl0iIC0gaW50ZWwgMzE5NDMzLTAxNC5wZGYgOS4zLjMKCiogQ2xlYXIgdGhlIFJGTEFHUy5B QyBvbiB0aGUgc3RhcnQgb2Ygbm1pIGhhbmRsZXIKCnN1Z2dlc3RlZCBieSBraWJAOgo+IEkgdGhp bmsgdGhhdCBOTUkgaGFuZGxlciBzaG91bGQgaGF2ZSBDTEFDIGV4ZWN1dGVkIHVuY29uZGl0aW9u YWxseSBhbmQKPiBtdWNoIGVhcmxpZXIgdGhlbiBpdCBpcyBkb25lIGluIHlvdXIgcGF0Y2guIFNp bmNlIE5NSSBjb3VsZCBpbnRlcnJ1cHQKPiB0aGUgY29weSooKSBmdW5jdGlvbnMsIHlvdSB3b3Vs ZCBnZXQgc29tZSBrZXJuZWwgY29kZSB1bm5lY2Nlc3NhcnkKPiBleGVjdXRpbmcgd2l0aCBTTUFQ IG9mZi4KCiogYWRkZWQgbm90ZSB0byBmYXVsdCBoYW5kbGVycyByZWxhdGVkIHRvIFNNQVAKCnN1 Z2dlc3RlZCBieSBraWJAOgo+IEkgYmVsaWV2ZSB0aGF0IGV4Y2VwdGlvbiBsYWJlbHMgaW4gdGhl IHN1cHBvcnQuUywgbGlrZSBjb3B5b3V0X2ZhdWx0Cj4gZXRjCj4gZGVzZXJ2ZSBhIGNvbW1lbnQg ZGVzY3JpYmluZyB0aGF0IEVGTEFHUy5BQyBiaXQgZ2V0cyBjbGVhcmVkIGJ5IHRoZQo+IGV4Y2Vw dGlvbiBlbnRyeSBwb2ludCBiZWZvcmUgdGhlIGNvbnRyb2wgcmVhY2hlcyB0aGUgbGFiZWwuCgoq IGFkZGVkIEFDIGZsYWcgY2hlY2tpbmcgYW5kIGZhY3RvciBvdXQgU01BUCBjaGVja2luZyBpbiB0 cmFwX3BmYXVsdCgpIHRvIG1ha2UgaXQgbW9yZSByZWFkYWJsZSBhbmQKCnBhcnRpYWxseSBzdWdn ZXN0ZWQgYnkga2liOgo+IFRoZSB0cmFwX3BmYXVsdCgpIGZyYWdtZW50IHNob3VsZCBjaGVjayBm b3IgdGhlIGVycm9yIGNvZGUgZXF1YWwgdG8gMSBvcgo+IDMsIGFzIGRlc2NyaWJlZCBpbiB0aGUg OS4zLjMsIGluc3RlYWQgb2Ygb25seSBjaGVja2luZyBmb3IgdGhlIHByZXNlbnQKPiBiaXQgc2V0 LiBNb3JlLCBJIHN1Z2dlc3QgeW91IHRvIGV4cGxpY2l0ZWx5IGNoZWNrIHRoYXQgdGhlICNQRiBl eGNlcHRpb24KPiBjYW1lIGZyb20gdGhlIGtlcm5lbCBtb2RlIGFuZCB0aGF0IEVGTEFHUy5BQyB3 YXMgYWxzbyBzZXQsIGJlZm9yZQo+IGRlY2lkaW5ndG8gcGFuaWMgZHVlIHRvIFNNQVAtZGV0ZWN0 ZWQgZmFpbHVyZS4KCiogYnVpbGQgZml4LCB3aGVuIElOVEVMX1NNQVAgaGFzIG5vdCBzZXQgaW4g a2VybmVsIGNvbmZpZwoKL3Vzci9ob21lL29wL2dpdC9mcmVlYnNkLWJhc2UuZ2l0Lmh0dHAvc3lz L2FtZDY0L2FtZDY0L3RyYXAuYzo4ODk6MTogZXJyb3I6IHVudXNlZCBmdW5jdGlvbiAnc21hcF9h Y2Nlc3NfdmlvbGF0aW9uJyBbLVdlcnJvciwtV3VudXNlZC1mdW5jdGlvbl0Kc21hcF9hY2Nlc3Nf dmlvbGF0aW9uKHN0cnVjdCB0cmFwZnJhbWUgKmZyYW1lLCBpbnQgdXNlcm1vZGUpCl4KMSBlcnJv ciBnZW5lcmF0ZWQuCioqKiBbdHJhcC5vXSBFcnJvciBjb2RlIDEKMSBlcnJvcgoqKiogW2J1aWxk a2VybmVsXSBFcnJvciBjb2RlIDIKMSBlcnJvcgoqKiogW2J1aWxka2VybmVsXSBFcnJvciBjb2Rl IDIKMSBlcnJvcgoKKiBmaXhlZCBzbWFwX2FjY2Vzc192aW9sYXRpb24oLi4uKSwgc3BvdHRlZCBi eSBIdW5nZXIKCiogZml4IHNtYXBfYWNjZXNzX3Zpb2xhdHJpb24oKSB3aGVuIHRoZSBDUFUgZG9l cyBub3Qgc3VwcG9ydCBTTUFQCgoqIHVzZSB0aGUgQ0xBQyBhbmQgU1RBQyBtYWNybywgaW5zdGVh ZCBvZiB0aGUgLmJ5dGUgc2VxdWVuY2UKCiogYWRkZWQgbWVtb3J5IGNsb2JiZXIgdG8gY2xhYyBh bmQgc3RhYyBpbmxpbmUgYXNzZW1ibHkKCgljbGFjIGFuZCBzdGFjIGFyZSBzZW5zaXRpdmUgaW5z dHJ1Y3Rpb25zLAoJdG8gcHJldmVudCBpbnN0cnVjdGlvbiByZW9yZGVyaW5nIGFkZGVkIG1lbW9y eSBjbG9iYmVyCgoJc3BvdHRlZCBieSBIdW5nZXIsIFBhWFRlYW0KClNpZ25lZC1vZmYtYnk6IE9s aXZlciBQaW50ZXIgPG9saXZlci5wbnRyQGdtYWlsLmNvbT4KLS0tCiBzeXMvYW1kNjQvYW1kNjQv ZXhjZXB0aW9uLlMgICAgIHwgIDYgKysrKysrCiBzeXMvYW1kNjQvYW1kNjQvaWRlbnRjcHUuYyAg ICAgIHwgMjggKysrKysrKysrKysrKysrKysrKysrLS0tCiBzeXMvYW1kNjQvYW1kNjQvaW5pdGNw dS5jICAgICAgIHwgMTIgKysrKysrKy0tLS0KIHN5cy9hbWQ2NC9hbWQ2NC9wbWFwLmMgICAgICAg ICAgfCAxMyArKysrKysrKysrKwogc3lzL2FtZDY0L2FtZDY0L3N1cHBvcnQuUyAgICAgICB8IDQ4 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzeXMvYW1kNjQvYW1k NjQvdHJhcC5jICAgICAgICAgIHwgMjQgKysrKysrKysrKysrKysrKysrKysrCiBzeXMvYW1kNjQv aWEzMi9pYTMyX2V4Y2VwdGlvbi5TIHwgIDEgKwogc3lzL2FtZDY0L2luY2x1ZGUvYXNtYWNyb3Mu aCAgICB8ICAzICsrLQogc3lzL2FtZDY0L2luY2x1ZGUvY3B1ZnVuYy5oICAgICB8IDI3ICsrKysr KysrKysrKysrKysrKysrKysrCiBzeXMvYW1kNjQvaW5jbHVkZS9zbWFwX2luc3RyLmggIHwgMTQg KysrKysrKysrKysrCiBzeXMvY29uZi9OT1RFUyAgICAgICAgICAgICAgICAgIHwgIDQgKysrKwog c3lzL2NvbmYvb3B0aW9ucy5hbWQ2NCAgICAgICAgICB8ICAzICsrKwogc3lzL3g4Ni9pbmNsdWRl L3BzbC5oICAgICAgICAgICB8ICAyICstCiBzeXMveDg2L2luY2x1ZGUvc3BlY2lhbHJlZy5oICAg IHwgIDEgKwogMTQgZmlsZXMgY2hhbmdlZCwgMTc3IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25z KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzL2FtZDY0L2luY2x1ZGUvc21hcF9pbnN0ci5oCgpk aWZmIC0tZ2l0IGEvc3lzL2FtZDY0L2FtZDY0L2V4Y2VwdGlvbi5TIGIvc3lzL2FtZDY0L2FtZDY0 L2V4Y2VwdGlvbi5TCmluZGV4IDg5YWQ2MzguLmQ3ZWQ3ZTQgMTAwNjQ0Ci0tLSBhL3N5cy9hbWQ2 NC9hbWQ2NC9leGNlcHRpb24uUworKysgYi9zeXMvYW1kNjQvYW1kNjQvZXhjZXB0aW9uLlMKQEAg LTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlIDxtYWNoaW5lL2FzbWFjcm9zLmg+CiAjaW5jbHVkZSA8 bWFjaGluZS9wc2wuaD4KICNpbmNsdWRlIDxtYWNoaW5lL3RyYXAuaD4KKyNpbmNsdWRlIDxtYWNo aW5lL3NtYXBfaW5zdHIuaD4KICNpbmNsdWRlIDxtYWNoaW5lL3NwZWNpYWxyZWcuaD4KIAogI2lu Y2x1ZGUgImFzc3ltLnMiCkBAIC0xOTYsNiArMTk3LDcgQEAgYWxsdHJhcHNfcHVzaHJlZ3Nfbm9f cmRpOgogCW1vdnEJJXIxNSxURl9SMTUoJXJzcCkKIAltb3ZsCSRURl9IQVNTRUdTLFRGX0ZMQUdT KCVyc3ApCiAJY2xkCisJQ0xBQwogCUZBS0VfTUNPVU5UKFRGX1JJUCglcnNwKSkKICNpZmRlZiBL RFRSQUNFX0hPT0tTCiAJLyoKQEAgLTI3Niw2ICsyNzgsNyBAQCBJRFRWRUMoZGJsZmF1bHQpCiAJ bW92dwklZHMsVEZfRFMoJXJzcCkKIAltb3ZsCSRURl9IQVNTRUdTLFRGX0ZMQUdTKCVyc3ApCiAJ Y2xkCisJQ0xBQwogCXRlc3RiCSRTRUxfUlBMX01BU0ssVEZfQ1MoJXJzcCkgLyogRGlkIHdlIGNv bWUgZnJvbSBrZXJuZWw/ICovCiAJanoJMWYJCQkvKiBhbHJlYWR5IHJ1bm5pbmcgd2l0aCBrZXJu ZWwgR1MuYmFzZSAqLwogCXN3YXBncwpAQCAtMzc5LDYgKzM4Miw3IEBAIElEVFZFQyhmYXN0X3N5 c2NhbGwpCiAJbW92cQklcjE1LFRGX1IxNSglcnNwKQkvKiBDIHByZXNlcnZlZCAqLwogCW1vdmwJ JFRGX0hBU1NFR1MsVEZfRkxBR1MoJXJzcCkKIAljbGQKKwlDTEFDCiAJRkFLRV9NQ09VTlQoVEZf UklQKCVyc3ApKQogCW1vdnEJUENQVShDVVJUSFJFQUQpLCVyZGkKIAltb3ZxCSVyc3AsVERfRlJB TUUoJXJkaSkKQEAgLTQ0OSw2ICs0NTMsNyBAQCBJRFRWRUMoZmFzdF9zeXNjYWxsMzIpCiAgKi8K IAogSURUVkVDKG5taSkKKwlDTEFDCiAJc3VicQkkVEZfUklQLCVyc3AKIAltb3ZsCSQoVF9OTUkp LFRGX1RSQVBOTyglcnNwKQogCW1vdnEJJDAsVEZfQUREUiglcnNwKQpAQCAtNTMzLDYgKzUzOCw3 IEBAIG5taV9jYWxsdHJhcDoKIAogCXNocnEJJDMsJXJjeAkJLyogdHJhcCBmcmFtZSBzaXplIGlu IGxvbmcgd29yZHMgKi8KIAljbGQKKwlDTEFDCiAJcmVwCiAJbW92c3EJCQkvKiBjb3B5IHRyYXBm cmFtZSAqLwogCmRpZmYgLS1naXQgYS9zeXMvYW1kNjQvYW1kNjQvaWRlbnRjcHUuYyBiL3N5cy9h bWQ2NC9hbWQ2NC9pZGVudGNwdS5jCmluZGV4IGVjNWEyYWEuLjkwNDk1ZWIgMTAwNjQ0Ci0tLSBh L3N5cy9hbWQ2NC9hbWQ2NC9pZGVudGNwdS5jCisrKyBiL3N5cy9hbWQ2NC9hbWQ2NC9pZGVudGNw dS5jCkBAIC0zOTEsMTIgKzM5MSwxNCBAQCBwcmludGNwdWluZm8odm9pZCkKIAkJCQkgICAgICAg LyogUkRGU0JBU0UvUkRHU0JBU0UvV1JGU0JBU0UvV1JHU0JBU0UgKi8KIAkJCQkgICAgICAgIlww MDFHU0ZTQkFTRSIKIAkJCQkgICAgICAgIlwwMDJUU0NBREoiCisJCQkJICAgICAgICJcMDAzPGIy PiIKIAkJCQkgICAgICAgLyogQml0IE1hbmlwdWxhdGlvbiBJbnN0cnVjdGlvbnMgKi8KIAkJCQkg ICAgICAgIlwwMDRCTUkxIgogCQkJCSAgICAgICAvKiBIYXJkd2FyZSBMb2NrIEVsaXNpb24gKi8K IAkJCQkgICAgICAgIlwwMDVITEUiCiAJCQkJICAgICAgIC8qIEFkdmFuY2VkIFZlY3RvciBJbnN0 cnVjdGlvbnMgMiAqLwogCQkJCSAgICAgICAiXDAwNkFWWDIiCisJCQkJICAgICAgICJcMDA3PGI2 PiIKIAkJCQkgICAgICAgLyogU3VwZXJ2aXNvciBNb2RlIEV4ZWN1dGlvbiBQcm90LiAqLwogCQkJ CSAgICAgICAiXDAxMFNNRVAiCiAJCQkJICAgICAgIC8qIEJpdCBNYW5pcHVsYXRpb24gSW5zdHJ1 Y3Rpb25zICovCkBAIC00MDYsMTIgKzQwOCwyOSBAQCBwcmludGNwdWluZm8odm9pZCkKIAkJCQkg ICAgICAgIlwwMTNJTlZQQ0lEIgogCQkJCSAgICAgICAvKiBSZXN0cmljdGVkIFRyYW5zYWN0aW9u YWwgTWVtb3J5ICovCiAJCQkJICAgICAgICJcMDE0UlRNIgorCQkJCSAgICAgICAiXDAxNTxiMTI+ IgorCQkJCSAgICAgICAiXDAxNjxiMTM+IgorCQkJCSAgICAgICAiXDAxNzxiMTQ+IgorCQkJCSAg ICAgICAiXDAyMDxiMTU+IgorCQkJCSAgICAgICAiXDAyMTxiMTY+IgorCQkJCSAgICAgICAiXDAy MjxiMTc+IgogCQkJCSAgICAgICAvKiBFbmhhbmNlZCBOUkJHICovCi0JCQkJICAgICAgICJcMDIy UkRTRUVEIgorCQkJCSAgICAgICAiXDAyM1JEU0VFRCIKIAkJCQkgICAgICAgLyogQURDWCArIEFE T1ggKi8KLQkJCQkgICAgICAgIlwwMjNBRFgiCisJCQkJICAgICAgICJcMDI0QURYIgogCQkJCSAg ICAgICAvKiBTdXBlcnZpc29yIE1vZGUgQWNjZXNzIFByZXZlbnRpb24gKi8KLQkJCQkgICAgICAg IlwwMjRTTUFQIgorCQkJCSAgICAgICAiXDAyNVNNQVAiCisJCQkJICAgICAgICJcMDI2PGIyMT4i CisJCQkJICAgICAgICJcMDI3PGIyMj4iCisJCQkJICAgICAgICJcMDMwPGIyMz4iCisJCQkJICAg ICAgICJcMDMxPGIyND4iCisJCQkJICAgICAgICJcMDMyPGIyNT4iCisJCQkJICAgICAgICJcMDMz PGIyNj4iCisJCQkJICAgICAgICJcMDM0PGIyNz4iCisJCQkJICAgICAgICJcMDM1PGIyOD4iCisJ CQkJICAgICAgICJcMDM2PGIyOT4iCisJCQkJICAgICAgICJcMDM3PGIzMD4iCisJCQkJICAgICAg ICJcMDQwPGIzMT4iCiAJCQkJICAgICAgICk7CiAJCQl9CiAKQEAgLTU0NSw2ICs1NjQsOSBAQCBp ZGVudGlmeV9jcHUodm9pZCkKIAkJaWYgKGNwdV9mZWF0dXJlMiAmIENQVUlEMl9IVikgewogCQkJ Y3B1X3N0ZGV4dF9kaXNhYmxlID0gQ1BVSURfU1RERVhUX0ZTR1NCQVNFIHwKIAkJCSAgICBDUFVJ RF9TVERFWFRfU01FUDsKKyNpZmRlZiBJTlRFTF9TTUFQCisJCQljcHVfc3RkZXh0X2Rpc2FibGUg fD0gQ1BVSURfU1RERVhUX1NNQVA7CisjZW5kaWYKIAkJfSBlbHNlCiAJCQljcHVfc3RkZXh0X2Rp c2FibGUgPSAwOwogCQlUVU5BQkxFX0lOVF9GRVRDSCgiaHcuY3B1X3N0ZGV4dF9kaXNhYmxlIiwg JmNwdV9zdGRleHRfZGlzYWJsZSk7CmRpZmYgLS1naXQgYS9zeXMvYW1kNjQvYW1kNjQvaW5pdGNw dS5jIGIvc3lzL2FtZDY0L2FtZDY0L2luaXRjcHUuYwppbmRleCA0YWJlZDRjLi5mYmZhN2MzIDEw MDY0NAotLS0gYS9zeXMvYW1kNjQvYW1kNjQvaW5pdGNwdS5jCisrKyBiL3N5cy9hbWQ2NC9hbWQ2 NC9pbml0Y3B1LmMKQEAgLTE2NSwxMyArMTY1LDE3IEBAIGluaXRpYWxpemVjcHUodm9pZCkKIAkJ Y3I0IHw9IENSNF9GU0dTQkFTRTsKIAogCS8qCi0JICogUG9zdHBvbmUgZW5hYmxpbmcgdGhlIFNN RVAgb24gdGhlIGJvb3QgQ1BVIHVudGlsIHRoZSBwYWdlCi0JICogdGFibGVzIGFyZSBzd2l0Y2hl ZCBmcm9tIHRoZSBib290IGxvYWRlciBpZGVudGl0eSBtYXBwaW5nCi0JICogdG8gdGhlIGtlcm5l bCB0YWJsZXMuICBUaGUgYm9vdCBsb2FkZXIgZW5hYmxlcyB0aGUgVSBiaXQgaW4KLQkgKiBpdHMg dGFibGVzLgorCSAqIFBvc3Rwb25lIGVuYWJsaW5nIHRoZSBTTUVQIGFuZCB0aGUgU01BUCBvbiB0 aGUgYm9vdCBDUFUgdW50aWwKKwkgKiB0aGUgcGFnZSB0YWJsZXMgYXJlIHN3aXRjaGVkIGZyb20g dGhlIGJvb3QgbG9hZGVyIGlkZW50aXR5CisJICogbWFwcGluZyB0byB0aGUga2VybmVsIHRhYmxl cy4KKwkgKiBUaGUgYm9vdCBsb2FkZXIgZW5hYmxlcyB0aGUgVSBiaXQgaW4gaXRzIHRhYmxlcy4K IAkgKi8KIAlpZiAoIUlTX0JTUCgpICYmIChjcHVfc3RkZXh0X2ZlYXR1cmUgJiBDUFVJRF9TVERF WFRfU01FUCkpCiAJCWNyNCB8PSBDUjRfU01FUDsKKyNpZmRlZiBJTlRFTF9TTUFQCisJaWYgKCFJ U19CU1AoKSAmJiAoY3B1X3N0ZGV4dF9mZWF0dXJlICYgQ1BVSURfU1RERVhUX1NNQVApKQorCQlj cjQgfD0gQ1I0X1NNQVA7CisjZW5kaWYKIAlsb2FkX2NyNChjcjQpOwogCWlmICgoYW1kX2ZlYXR1 cmUgJiBBTURJRF9OWCkgIT0gMCkgewogCQltc3IgPSByZG1zcihNU1JfRUZFUikgfCBFRkVSX05Y RTsKZGlmZiAtLWdpdCBhL3N5cy9hbWQ2NC9hbWQ2NC9wbWFwLmMgYi9zeXMvYW1kNjQvYW1kNjQv cG1hcC5jCmluZGV4IDFiMWM4NmMuLjExZTU2MGQgMTAwNjQ0Ci0tLSBhL3N5cy9hbWQ2NC9hbWQ2 NC9wbWFwLmMKKysrIGIvc3lzL2FtZDY0L2FtZDY0L3BtYXAuYwpAQCAtOTgsNiArOTgsNyBAQCBf X0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAgKglhbmQgdG8gd2hlbiBwaHlzaWNhbCBtYXBzIG11c3Qg YmUgbWFkZSBjb3JyZWN0LgogICovCiAKKyNpbmNsdWRlICJvcHRfY3B1LmgiCiAjaW5jbHVkZSAi b3B0X3BtYXAuaCIKICNpbmNsdWRlICJvcHRfdm0uaCIKIApAQCAtNjY1LDYgKzY2NiwxOCBAQCBw bWFwX2Jvb3RzdHJhcCh2bV9wYWRkcl90ICpmaXJzdGFkZHIpCiAJaWYgKGNwdV9zdGRleHRfZmVh dHVyZSAmIENQVUlEX1NUREVYVF9TTUVQKQogCQlsb2FkX2NyNChyY3I0KCkgfCBDUjRfU01FUCk7 CiAKKwlpZiAoY3B1X3N0ZGV4dF9mZWF0dXJlICYgQ1BVSURfU1RERVhUX1NNQVApCisjaWZkZWYg SU5URUxfU01BUAorCQlsb2FkX2NyNChyY3I0KCkgfCBDUjRfU01BUCk7CisJZWxzZQorCQlwYW5p YygiVGhlIGtlcm5lbCBjb21waWxlZCB3aXRoIFwib3B0aW9ucyBJTlRFTF9TTUFQXCIsIgorCQkJ ICAgICAgIAkiYnV0IHlvdXIgQ1BVIGRvZXNuJ3Qgc3VwcG9ydCBTTUFQIVxuIik7CisjZWxzZQor CQlwcmludGYoIllvdXIgQ1BVIGhhcyBzdXBwb3J0IGZvciBTTUFQIHNlY3VyaXR5IGZlYXR1cmUu ICIKKwkJCSJZb3Ugc2hvdWxkIHJlY29tcGlsZSB0aGUga2VybmVsIHdpdGggIgorCQkJIlwib3B0 aW9ucyBJTlRFTF9TTUFQXCIgdG8gdXNlIHRoZW0uXG4iKTsKKyNlbmRpZgorCiAJLyoKIAkgKiBJ bml0aWFsaXplIHRoZSBrZXJuZWwgcG1hcCAod2hpY2ggaXMgc3RhdGljYWxseSBhbGxvY2F0ZWQp LgogCSAqLwpkaWZmIC0tZ2l0IGEvc3lzL2FtZDY0L2FtZDY0L3N1cHBvcnQuUyBiL3N5cy9hbWQ2 NC9hbWQ2NC9zdXBwb3J0LlMKaW5kZXggNzdkYmY2My4uN2FkODEwMSAxMDA2NDQKLS0tIGEvc3lz L2FtZDY0L2FtZDY0L3N1cHBvcnQuUworKysgYi9zeXMvYW1kNjQvYW1kNjQvc3VwcG9ydC5TCkBA IC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8bWFjaGluZS9hc21hY3Jvcy5oPgogI2luY2x1ZGUg PG1hY2hpbmUvaW50cl9tYWNoZGVwLmg+CiAjaW5jbHVkZSA8bWFjaGluZS9wbWFwLmg+CisjaW5j bHVkZSA8bWFjaGluZS9zbWFwX2luc3RyLmg+CiAKICNpbmNsdWRlICJhc3N5bS5zIgogCkBAIC0y NDQsMTIgKzI0NSwxNiBAQCBFTlRSWShjb3B5b3V0KQogCiAJc2hycQkkMywlcmN4CiAJY2xkCisJ U1RBQwogCXJlcAogCW1vdnNxCisJQ0xBQwogCW1vdmIJJWRsLCVjbAogCWFuZGIJJDcsJWNsCisJ U1RBQwogCXJlcAogCW1vdnNiCisJQ0xBQwogCiBkb25lX2NvcHlvdXQ6CiAJeG9ybAklZWF4LCVl YXgKQEAgLTI1OCw2ICsyNjMsMTEgQEAgZG9uZV9jb3B5b3V0OgogCXJldAogCiAJQUxJR05fVEVY VAorLyoKKyAqIG5vdGU6CisgKiBXaGVuIFNNQVAgZW5hYmxlZCwgdGhlIEVGTEFHUy5BQyBiaXQg Z2V0cyBjbGVhcmVkIGJlZm9yZSBjb250cm9sIHJlYWNoZXMKKyAqIHRoZSBmYXVsdCBoYW5kbGVy LgorICovIAogY29weW91dF9mYXVsdDoKIAltb3ZxCVBDUFUoQ1VSUENCKSwlcmR4CiAJbW92cQkk MCxQQ0JfT05GQVVMVCglcmR4KQpAQCAtMjkwLDEyICszMDAsMTYgQEAgRU5UUlkoY29weWluKQog CW1vdmIJJWNsLCVhbAogCXNocnEJJDMsJXJjeAkJCQkvKiBjb3B5IGxvbmd3b3JkLXdpc2UgKi8K IAljbGQKKwlTVEFDCiAJcmVwCiAJbW92c3EKKwlDTEFDCiAJbW92YgklYWwsJWNsCiAJYW5kYgkk NywlY2wJCQkJLyogY29weSByZW1haW5pbmcgYnl0ZXMgKi8KKwlTVEFDCiAJcmVwCiAJbW92c2IK KwlDTEFDCiAKIGRvbmVfY29weWluOgogCXhvcmwJJWVheCwlZWF4CkBAIC0zMDQsNiArMzE4LDEx IEBAIGRvbmVfY29weWluOgogCXJldAogCiAJQUxJR05fVEVYVAorLyoKKyAqIG5vdGU6CisgKiBX aGVuIFNNQVAgZW5hYmxlZCwgdGhlIEVGTEFHUy5BQyBiaXQgZ2V0cyBjbGVhcmVkIGJlZm9yZSBj b250cm9sIHJlYWNoZXMKKyAqIHRoZSBmYXVsdCBoYW5kbGVyLgorICovIAogY29weWluX2ZhdWx0 OgogCW1vdnEJUENQVShDVVJQQ0IpLCVyZHgKIAltb3ZxCSQwLFBDQl9PTkZBVUxUKCVyZHgpCkBA IC0zMjQsMTAgKzM0MywxMiBAQCBFTlRSWShjYXN1d29yZDMyKQogCWphCWZ1c3VmYXVsdAogCiAJ bW92bAklZXNpLCVlYXgJCQkvKiBvbGQgKi8KKwlTVEFDCiAjaWZkZWYgU01QCiAJbG9jawogI2Vu ZGlmCiAJY21weGNoZ2wgJWVkeCwoJXJkaSkJCQkvKiBuZXcgPSAlZWR4ICovCisJQ0xBQwogCiAJ LyoKIAkgKiBUaGUgb2xkIHZhbHVlIGlzIGluICVlYXguICBJZiB0aGUgc3RvcmUgc3VjY2VlZGVk IGl0IHdpbGwgYmUgdGhlCkBAIC0zNTMsMTAgKzM3NCwxMiBAQCBFTlRSWShjYXN1d29yZCkKIAlq YQlmdXN1ZmF1bHQKIAogCW1vdnEJJXJzaSwlcmF4CQkJLyogb2xkICovCisJU1RBQwogI2lmZGVm IFNNUAogCWxvY2sKICNlbmRpZgogCWNtcHhjaGdxICVyZHgsKCVyZGkpCQkJLyogbmV3ID0gJXJk eCAqLworCUNMQUMKIAogCS8qCiAJICogVGhlIG9sZCB2YWx1ZSBpcyBpbiAlZWF4LiAgSWYgdGhl IHN0b3JlIHN1Y2NlZWRlZCBpdCB3aWxsIGJlIHRoZQpAQCAtMzg1LDcgKzQwOCw5IEBAIEVOVFJZ KGZ1d29yZCkKIAljbXBxCSVyYXgsJXJkaQkJCS8qIHZlcmlmeSBhZGRyZXNzIGlzIHZhbGlkICov CiAJamEJZnVzdWZhdWx0CiAKKwlTVEFDCiAJbW92cQkoJXJkaSksJXJheAorCUNMQUMKIAltb3Zx CSQwLFBDQl9PTkZBVUxUKCVyY3gpCiAJcmV0CiBFTkQoZnV3b3JkNjQpCQpAQCAtMzk5LDcgKzQy NCw5IEBAIEVOVFJZKGZ1d29yZDMyKQogCWNtcHEJJXJheCwlcmRpCQkJLyogdmVyaWZ5IGFkZHJl c3MgaXMgdmFsaWQgKi8KIAlqYQlmdXN1ZmF1bHQKIAorCVNUQUMKIAltb3ZsCSglcmRpKSwlZWF4 CisJQ0xBQwogCW1vdnEJJDAsUENCX09ORkFVTFQoJXJjeCkKIAlyZXQKIEVORChmdXdvcmQzMikK QEAgLTQyNiw3ICs0NTMsOSBAQCBFTlRSWShmdXdvcmQxNikKIAljbXBxCSVyYXgsJXJkaQogCWph CWZ1c3VmYXVsdAogCisJU1RBQwogCW1vdnp3bAkoJXJkaSksJWVheAorCUNMQUMKIAltb3ZxCSQw LFBDQl9PTkZBVUxUKCVyY3gpCiAJcmV0CiBFTkQoZnV3b3JkMTYpCkBAIC00MzksMTIgKzQ2OCwx OSBAQCBFTlRSWShmdWJ5dGUpCiAJY21wcQklcmF4LCVyZGkKIAlqYQlmdXN1ZmF1bHQKIAorCVNU QUMKIAltb3Z6YmwJKCVyZGkpLCVlYXgKKwlDTEFDCiAJbW92cQkkMCxQQ0JfT05GQVVMVCglcmN4 KQogCXJldAogRU5EKGZ1Ynl0ZSkKIAogCUFMSUdOX1RFWFQKKy8qCisgKiBub3RlOgorICogV2hl biBTTUFQIGVuYWJsZWQsIHRoZSBFRkxBR1MuQUMgYml0IGdldHMgY2xlYXJlZCBiZWZvcmUgY29u dHJvbCByZWFjaGVzCisgKiB0aGUgZmF1bHQgaGFuZGxlci4KKyAqLyAKIGZ1c3VmYXVsdDoKIAlt b3ZxCVBDUFUoQ1VSUENCKSwlcmN4CiAJeG9ybAklZWF4LCVlYXgKQEAgLTQ2Niw3ICs1MDIsOSBA QCBFTlRSWShzdXdvcmQpCiAJY21wcQklcmF4LCVyZGkJCQkvKiB2ZXJpZnkgYWRkcmVzcyB2YWxp ZGl0eSAqLwogCWphCWZ1c3VmYXVsdAogCisJU1RBQwogCW1vdnEJJXJzaSwoJXJkaSkKKwlDTEFD CiAJeG9ybAklZWF4LCVlYXgKIAltb3ZxCVBDUFUoQ1VSUENCKSwlcmN4CiAJbW92cQklcmF4LFBD Ql9PTkZBVUxUKCVyY3gpCkBAIC00ODIsNyArNTIwLDkgQEAgRU5UUlkoc3V3b3JkMzIpCiAJY21w cQklcmF4LCVyZGkJCQkvKiB2ZXJpZnkgYWRkcmVzcyB2YWxpZGl0eSAqLwogCWphCWZ1c3VmYXVs dAogCisJU1RBQwogCW1vdmwJJWVzaSwoJXJkaSkKKwlDTEFDCiAJeG9ybAklZWF4LCVlYXgKIAlt b3ZxCVBDUFUoQ1VSUENCKSwlcmN4CiAJbW92cQklcmF4LFBDQl9PTkZBVUxUKCVyY3gpCkBAIC00 OTcsNyArNTM3LDkgQEAgRU5UUlkoc3V3b3JkMTYpCiAJY21wcQklcmF4LCVyZGkJCQkvKiB2ZXJp ZnkgYWRkcmVzcyB2YWxpZGl0eSAqLwogCWphCWZ1c3VmYXVsdAogCisJU1RBQwogCW1vdncJJXNp LCglcmRpKQorCUNMQUMKIAl4b3JsCSVlYXgsJWVheAogCW1vdnEJUENQVShDVVJQQ0IpLCVyY3gJ CS8qIHJlc3RvcmUgdHJhc2hlZCByZWdpc3RlciAqLwogCW1vdnEJJXJheCxQQ0JfT05GQVVMVCgl cmN4KQpAQCAtNTEzLDcgKzU1NSw5IEBAIEVOVFJZKHN1Ynl0ZSkKIAlqYQlmdXN1ZmF1bHQKIAog CW1vdmwJJWVzaSwlZWF4CisJU1RBQwogCW1vdmIJJWFsLCglcmRpKQorCUNMQUMKIAl4b3JsCSVl YXgsJWVheAogCW1vdnEJUENQVShDVVJQQ0IpLCVyY3gJCS8qIHJlc3RvcmUgdHJhc2hlZCByZWdp c3RlciAqLwogCW1vdnEJJXJheCxQQ0JfT05GQVVMVCglcmN4KQpAQCAtNTU1LDcgKzU5OSw5IEBA IEVOVFJZKGNvcHlpbnN0cikKIAlkZWNxCSVyZHgKIAlqegkzZgogCisJU1RBQwogCWxvZHNiCisJ Q0xBQwogCXN0b3NiCiAJb3JiCSVhbCwlYWwKIAlqbnoJMmIKQEAgLTU4NCw3ICs2MzAsOSBAQCBj cHlzdHJmbHRfeDoKIAl0ZXN0cQklcjksJXI5CiAJanoJMWYKIAlzdWJxCSVyZHgsJXI4CisJU1RB QwogCW1vdnEJJXI4LCglcjkpCisJQ0xBQwogMToKIAlyZXQKIEVORChjb3B5aW5zdHIpCmRpZmYg LS1naXQgYS9zeXMvYW1kNjQvYW1kNjQvdHJhcC5jIGIvc3lzL2FtZDY0L2FtZDY0L3RyYXAuYwpp bmRleCA2ZmNjYTgxLi5kMzc5NDllIDEwMDY0NAotLS0gYS9zeXMvYW1kNjQvYW1kNjQvdHJhcC5j CisrKyBiL3N5cy9hbWQ2NC9hbWQ2NC90cmFwLmMKQEAgLTEyNyw2ICsxMjcsOSBAQCB2b2lkIGRi bGZhdWx0X2hhbmRsZXIoc3RydWN0IHRyYXBmcmFtZSAqZnJhbWUpOwogCiBzdGF0aWMgaW50IHRy YXBfcGZhdWx0KHN0cnVjdCB0cmFwZnJhbWUgKiwgaW50KTsKIHN0YXRpYyB2b2lkIHRyYXBfZmF0 YWwoc3RydWN0IHRyYXBmcmFtZSAqLCB2bV9vZmZzZXRfdCk7CisjaWZkZWYgSU5URUxfU01BUAor c3RhdGljIGJvb2wgc21hcF9hY2Nlc3NfdmlvbGF0aW9uKHN0cnVjdCB0cmFwZnJhbWUgKiwgaW50 IHVzZXJtb2RlKTsKKyNlbmRpZgogCiAjZGVmaW5lIE1BWF9UUkFQX01TRwkJMzMKIHN0YXRpYyBj aGFyICp0cmFwX21zZ1tdID0gewpAQCAtNzE4LDYgKzcyMSwxMyBAQCB0cmFwX3BmYXVsdChmcmFt ZSwgdXNlcm1vZGUpCiAKIAkJbWFwID0gJnZtLT52bV9tYXA7CiAKKyNpZmRlZiBJTlRFTF9TTUFQ CisJCWlmIChfX3ByZWRpY3RfZmFsc2Uoc21hcF9hY2Nlc3NfdmlvbGF0aW9uKGZyYW1lLCB1c2Vy bW9kZSkpKSB7CisJCQl0cmFwX2ZhdGFsKGZyYW1lLCBldmEpOworCQkJcmV0dXJuICgtMSk7CisJ CX0KKyNlbmRpZgorCiAJCS8qCiAJCSAqIFdoZW4gYWNjZXNzaW5nIGEgdXNlcm1vZGUgYWRkcmVz cywga2VybmVsIG11c3QgYmUKIAkJICogcmVhZHkgdG8gYWNjZXB0IHRoZSBwYWdlIGZhdWx0LCBh bmQgcHJvdmlkZSBhCkBAIC04NzQsNiArODg0LDIwIEBAIHRyYXBfZmF0YWwoZnJhbWUsIGV2YSkK IAkJcGFuaWMoInVua25vd24vcmVzZXJ2ZWQgdHJhcCIpOwogfQogCisjaWZkZWYgSU5URUxfU01B UAorc3RhdGljIGJvb2wKK3NtYXBfYWNjZXNzX3Zpb2xhdGlvbihzdHJ1Y3QgdHJhcGZyYW1lICpm cmFtZSwgaW50IHVzZXJtb2RlKQoreworCWlmICgoY3B1X3N0ZGV4dF9mZWF0dXJlICYgQ1BVSURf U1RERVhUX1NNQVApID09IDApCisJCXJldHVybiAoZmFsc2UpOworCisJaWYgKHVzZXJtb2RlIHx8 IChmcmFtZS0+dGZfcmZsYWdzICYgUFNMX0FDKSAhPSAwKQorCQlyZXR1cm4gKGZhbHNlKTsKKwor CXJldHVybiAodHJ1ZSk7Cit9CisjZW5kaWYKKwogLyoKICAqIERvdWJsZSBmYXVsdCBoYW5kbGVy LiBDYWxsZWQgd2hlbiBhIGZhdWx0IG9jY3VycyB3aGlsZSB3cml0aW5nCiAgKiBhIGZyYW1lIGZv ciBhIHRyYXAvZXhjZXB0aW9uIG9udG8gdGhlIHN0YWNrLiBUaGlzIHVzdWFsbHkgb2NjdXJzCmRp ZmYgLS1naXQgYS9zeXMvYW1kNjQvaWEzMi9pYTMyX2V4Y2VwdGlvbi5TIGIvc3lzL2FtZDY0L2lh MzIvaWEzMl9leGNlcHRpb24uUwppbmRleCBmZTFhNjc2Li45ZjEzZjJmIDEwMDY0NAotLS0gYS9z eXMvYW1kNjQvaWEzMi9pYTMyX2V4Y2VwdGlvbi5TCisrKyBiL3N5cy9hbWQ2NC9pYTMyL2lhMzJf ZXhjZXB0aW9uLlMKQEAgLTY4LDYgKzY4LDcgQEAgSURUVkVDKGludDB4ODBfc3lzY2FsbCkKIAlt b3ZxCSVyMTUsVEZfUjE1KCVyc3ApCiAJbW92bAkkVEZfSEFTU0VHUyxURl9GTEFHUyglcnNwKQog CWNsZAorCUNMQUMKIAlGQUtFX01DT1VOVChURl9SSVAoJXJzcCkpCiAJbW92cQklcnNwLCAlcmRp CiAJY2FsbAlpYTMyX3N5c2NhbGwKZGlmZiAtLWdpdCBhL3N5cy9hbWQ2NC9pbmNsdWRlL2FzbWFj cm9zLmggYi9zeXMvYW1kNjQvaW5jbHVkZS9hc21hY3Jvcy5oCmluZGV4IDFmYjU5MmEuLmM5ODU2 MjMgMTAwNjQ0Ci0tLSBhL3N5cy9hbWQ2NC9pbmNsdWRlL2FzbWFjcm9zLmgKKysrIGIvc3lzL2Ft ZDY0L2luY2x1ZGUvYXNtYWNyb3MuaApAQCAtMTY3LDcgKzE2Nyw4IEBACiAJbW92dwklZXMsVEZf RVMoJXJzcCkgOwkJCQkJXAogCW1vdncJJWRzLFRGX0RTKCVyc3ApIDsJCQkJCVwKIAltb3ZsCSRU Rl9IQVNTRUdTLFRGX0ZMQUdTKCVyc3ApIDsJCQkJXAotCWNsZAorCWNsZCA7CQkJCQkJCQlcCisJ Q0xBQwogCiAjZGVmaW5lIFBPUF9GUkFNRQkJCQkJCQlcCiAJbW92cQlURl9SREkoJXJzcCksJXJk aSA7CQkJCQlcCmRpZmYgLS1naXQgYS9zeXMvYW1kNjQvaW5jbHVkZS9jcHVmdW5jLmggYi9zeXMv YW1kNjQvaW5jbHVkZS9jcHVmdW5jLmgKaW5kZXggODgxZmNkMi4uNTNiMmNlOCAxMDA2NDQKLS0t IGEvc3lzL2FtZDY0L2luY2x1ZGUvY3B1ZnVuYy5oCisrKyBiL3N5cy9hbWQ2NC9pbmNsdWRlL2Nw dWZ1bmMuaApAQCAtMzksMTAgKzM5LDE2IEBACiAjaWZuZGVmIF9NQUNISU5FX0NQVUZVTkNfSF8K ICNkZWZpbmUJX01BQ0hJTkVfQ1BVRlVOQ19IXwogCisjaW5jbHVkZSAib3B0X2NwdS5oIgorCiAj aWZuZGVmIF9TWVNfQ0RFRlNfSF8KICNlcnJvciB0aGlzIGZpbGUgbmVlZHMgc3lzL2NkZWZzLmgg YXMgYSBwcmVyZXF1aXNpdGUKICNlbmRpZgogCisjaWZkZWYgSU5URUxfU01BUAorI2luY2x1ZGUg PG1hY2hpbmUvc21hcF9pbnN0ci5oPgorI2VuZGlmCisKIHN0cnVjdCByZWdpb25fZGVzY3JpcHRv cjsKIAogI2RlZmluZSByZWFkYih2YSkJKCoodm9sYXRpbGUgdWludDhfdCAqKSAodmEpKQpAQCAt NzExLDExICs3MTcsMzEgQEAgaW50cl9yZXN0b3JlKHJlZ2lzdGVyX3QgcmZsYWdzKQogCXdyaXRl X3JmbGFncyhyZmxhZ3MpOwogfQogCisvKgorICogSW50ZWwgU01BUCByZWxhdGVkIGZ1bmN0aW9u cyAoY2xhYyBhbmQgc3RhYykKKyAqLworc3RhdGljIF9faW5saW5lIHZvaWQKK2NsYWModm9pZCkK K3sKKyNpZmRlZiBJTlRFTF9TTUFQCisJX19hc20gX192b2xhdGlsZShfX1NUUklORyhDTEFDKSA6 IDogOiAibWVtb3J5Iik7CisjZW5kaWYKK30KKworc3RhdGljIF9faW5saW5lIHZvaWQKK3N0YWMo dm9pZCkKK3sKKyNpZmRlZiBJTlRFTF9TTUFQCisJX19hc20gX192b2xhdGlsZShfX1NUUklORyhT VEFDKSA6IDogOiAibWVtb3J5Iik7CisjZW5kaWYKK30KKwogI2Vsc2UgLyogIShfX0dOVUNMSUtF X0FTTSAmJiBfX0NDX1NVUFBPUlRTX19fSU5MSU5FKSAqLwogCiBpbnQJYnJlYWtwb2ludCh2b2lk KTsKIHVfaW50CWJzZmwodV9pbnQgbWFzayk7CiB1X2ludAlic3JsKHVfaW50IG1hc2spOwordm9p ZAljbGFjKHZvaWQpOwogdm9pZAljbGZsdXNoKHVfbG9uZyBhZGRyKTsKIHZvaWQJY2x0cyh2b2lk KTsKIHZvaWQJY3B1aWRfY291bnQodV9pbnQgYXgsIHVfaW50IGN4LCB1X2ludCAqcCk7CkBAIC03 NzUsNiArODAxLDcgQEAgdWludDY0X3QgcmR0c2Modm9pZCk7CiB1X2xvbmcJcmVhZF9yZmxhZ3Mo dm9pZCk7CiB1X2ludAlyZnModm9pZCk7CiB1X2ludAlyZ3Modm9pZCk7Cit2b2lkCXN0YWModm9p ZCk7CiB2b2lkCXdiaW52ZCh2b2lkKTsKIHZvaWQJd3JpdGVfcmZsYWdzKHVfaW50IHJmKTsKIHZv aWQJd3Jtc3IodV9pbnQgbXNyLCB1aW50NjRfdCBuZXd2YWwpOwpkaWZmIC0tZ2l0IGEvc3lzL2Ft ZDY0L2luY2x1ZGUvc21hcF9pbnN0ci5oIGIvc3lzL2FtZDY0L2luY2x1ZGUvc21hcF9pbnN0ci5o Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3OTI2YWEKLS0tIC9kZXYvbnVs bAorKysgYi9zeXMvYW1kNjQvaW5jbHVkZS9zbWFwX2luc3RyLmgKQEAgLTAsMCArMSwxNCBAQAor I2lmbmRlZglfX1NNQVBfSU5TVFJVQ1RJT05fSAorI2RlZmluZQlfX1NNQVBfSU5TVFJVQ1RJT05f SAorCisjaW5jbHVkZSAib3B0X2NwdS5oIgorCisjaWZkZWYgSU5URUxfU01BUAorI2RlZmluZQlD TEFDCS5ieXRlIDB4MGYsMHgwMSwweGNhCisjZGVmaW5lCVNUQUMJLmJ5dGUgMHgwZiwweDAxLDB4 Y2IKKyNlbHNlCisjZGVmaW5lCUNMQUMKKyNkZWZpbmUJU1RBQworI2VuZGlmCisKKyNlbmRpZgkv KiBfX1NNQVBfSU5TVFJVQ1RJT05fSCAqLwpkaWZmIC0tZ2l0IGEvc3lzL2NvbmYvTk9URVMgYi9z eXMvY29uZi9OT1RFUwppbmRleCA0OGRiYTc3Li5hZjFjZjcxIDEwMDY0NAotLS0gYS9zeXMvY29u Zi9OT1RFUworKysgYi9zeXMvY29uZi9OT1RFUwpAQCAtMjk2MywzICsyOTYzLDcgQEAgb3B0aW9u cyAJUkNUTAogb3B0aW9ucyAJQlJPT0tUUkVFX0FMTE9DX1BBR0VTPSgyMTcqNCsxKQogb3B0aW9u cyAJTUFYRklMRVM9OTk5CiAKKyMgSW50ZWwgU01BUAorIyBUaGlzIG9wdGlvbnMgc3VwcG9ydGVk IG9uIEhhc3dlbGwgYW5kL29yIG5ld2VyIENQVXMgKDIwMTMgSnVuaSA8ICkgYW5kCisjIG1ha2Vz IHRoZSBrZXJuZWwgdW5ib290YWJsZSBvbiBvbGRlciBDUFVzLgorb3B0aW9ucyAJSU5URUxfU01B UAkjIEludGVsJ3MgaHcgdmVyc2lvbiBvZiBQYVggdWRlcmVmCmRpZmYgLS1naXQgYS9zeXMvY29u Zi9vcHRpb25zLmFtZDY0IGIvc3lzL2NvbmYvb3B0aW9ucy5hbWQ2NAppbmRleCA5MDM0OGI3Li5i ODYxNDM5IDEwMDY0NAotLS0gYS9zeXMvY29uZi9vcHRpb25zLmFtZDY0CisrKyBiL3N5cy9jb25m L29wdGlvbnMuYW1kNjQKQEAgLTcyLDMgKzcyLDYgQEAgSVNDSV9MT0dHSU5HCW9wdF9pc2NpLmgK ICMgaHcgcmFuZG9tIG51bWJlciBnZW5lcmF0b3JzIGZvciByYW5kb20oNCkKIFBBRExPQ0tfUk5H CQlvcHRfY3B1LmgKIFJEUkFORF9STkcJCW9wdF9jcHUuaAorCisjIEludGVsIFN1cGVydmlzb3Ig TW9kZSBBY2Nlc3MgUHJldmVudGlvbiAoU01BUCkKK0lOVEVMX1NNQVAJCW9wdF9jcHUuaApkaWZm IC0tZ2l0IGEvc3lzL3g4Ni9pbmNsdWRlL3BzbC5oIGIvc3lzL3g4Ni9pbmNsdWRlL3BzbC5oCmlu ZGV4IDEyZDA1YzUuLmNlOTdhMjYgMTAwNjQ0Ci0tLSBhL3N5cy94ODYvaW5jbHVkZS9wc2wuaAor KysgYi9zeXMveDg2L2luY2x1ZGUvcHNsLmgKQEAgLTUyLDcgKzUyLDcgQEAKICNkZWZpbmUJUFNM X05UCQkweDAwMDA0MDAwCS8qIG5lc3RlZCB0YXNrIGJpdCAqLwogI2RlZmluZQlQU0xfUkYJCTB4 MDAwMTAwMDAJLyogcmVzdW1lIGZsYWcgYml0ICovCiAjZGVmaW5lCVBTTF9WTQkJMHgwMDAyMDAw MAkvKiB2aXJ0dWFsIDgwODYgbW9kZSBiaXQgKi8KLSNkZWZpbmUJUFNMX0FDCQkweDAwMDQwMDAw CS8qIGFsaWdubWVudCBjaGVja2luZyAqLworI2RlZmluZQlQU0xfQUMJCTB4MDAwNDAwMDAJLyog YWxpZ25tZW50IGNoZWNraW5nIG9yIFNNQVAgc3RhdHVzKi8KICNkZWZpbmUJUFNMX1ZJRgkJMHgw MDA4MDAwMAkvKiB2aXJ0dWFsIGludGVycnVwdCBlbmFibGUgKi8KICNkZWZpbmUJUFNMX1ZJUAkJ MHgwMDEwMDAwMAkvKiB2aXJ0dWFsIGludGVycnVwdCBwZW5kaW5nICovCiAjZGVmaW5lCVBTTF9J RAkJMHgwMDIwMDAwMAkvKiBpZGVudGlmaWNhdGlvbiBiaXQgKi8KZGlmZiAtLWdpdCBhL3N5cy94 ODYvaW5jbHVkZS9zcGVjaWFscmVnLmggYi9zeXMveDg2L2luY2x1ZGUvc3BlY2lhbHJlZy5oCmlu ZGV4IGJmMTMzM2YuLjZiZmZkNDMgMTAwNjQ0Ci0tLSBhL3N5cy94ODYvaW5jbHVkZS9zcGVjaWFs cmVnLmgKKysrIGIvc3lzL3g4Ni9pbmNsdWRlL3NwZWNpYWxyZWcuaApAQCAtNzMsNiArNzMsNyBA QAogI2RlZmluZQlDUjRfUENJREUgMHgwMDAyMDAwMAkvKiBFbmFibGUgQ29udGV4dCBJRCAqLwog I2RlZmluZQlDUjRfWFNBVkUgMHgwMDA0MDAwMAkvKiBYU0VUQlYvWEdFVEJWICovCiAjZGVmaW5l CUNSNF9TTUVQIDB4MDAxMDAwMDAJLyogU3VwZXJ2aXNvci1Nb2RlIEV4ZWN1dGlvbiBQcmV2ZW50 aW9uICovCisjZGVmaW5lCUNSNF9TTUFQIDB4MDAyMDAwMDAJLyogU3VwZXJ2aXNvci1Nb2RlIEFj Y2VzcyBQcmV2ZW50aW9uICovCiAKIC8qCiAgKiBCaXRzIGluIEFNRDY0IHNwZWNpYWwgcmVnaXN0 ZXJzLiAgRUZFUiBpcyA2NCBiaXRzIHdpZGUuCi0tIAoxLjguMi4yCgo= --e89a8ff1cc9ccec54f04de206815--