From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-14.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5971BC2D0E4 for ; Fri, 20 Nov 2020 20:35:07 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B1D52221EB for ; Fri, 20 Nov 2020 20:35:06 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Uotfn32j"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="BbetyQON" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B1D52221EB Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Message-ID:Subject:To:From: Date:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:References:List-Owner; bh=9RF18vB0KgubQVT5Prce3UWIJJqy5q+Bn5QJxTfloLw=; b=Uotfn32jsyH2dauFY/Qe+Ea/4 EuifWMpvkRmii/B6dQJVKIwIWuS1CagV51VWtyUwB9sdDG8tWSuvvM6HRVyCVRxgkf3Ml+GtgJjjI a3NsPOtHAAvdMM6BB2bJtWbhEvEmirpXZx+bCH+05Y5AmczEQQmsDmA0B1RhWJv/gQa2YA0tXyGVk pF7X//EYj13pJhgMKeQVM2KxP6q/nbBYVWJlX+y1aZAYWjyE8L8lnOQ9NHsvgZxs7RG7ijzH+TDYL ZFKIH7c25C3tIpsdua4UK5s0jftoLRVcmx0SXoE/xDSlsaBku2YW2iUmo/+dyUTU4Dgi+g2VY/Es6 tJuCtwcmQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kgD76-0002n8-Lq; Fri, 20 Nov 2020 20:34:36 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kgD72-0002m4-5p; Fri, 20 Nov 2020 20:34:33 +0000 Received: from localhost (129.sub-72-107-112.myvzw.com [72.107.112.129]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id C5862221EB; Fri, 20 Nov 2020 20:34:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1605904470; bh=a/CBfITEsHX+7WRPG8LgDJZ3uN96ReyX4M/vDmQAFRo=; h=Date:From:To:Cc:Subject:In-Reply-To:From; b=BbetyQONu0aAdTQkfD0TY1jRi/HH68AfGQaiMbQD+7MsRD2Ya0M5vqfFUSSirFuOO foEcC5dXs8oPKivpfnqOOq/MDgw7V65HMy+q3E3v08ao4V9fRt07Yx/aODE//yC+sm eMhHOF++jlZGzA4R7H41wiz+meAIzytijWwHOy4Y= Date: Fri, 20 Nov 2020 14:34:28 -0600 From: Bjorn Helgaas To: Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= Subject: Re: [PATCH v4] PCI: Unify ECAM constants in native PCI Express drivers Message-ID: <20201120203428.GA272511@bjorn-Precision-5520> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20201005003805.465057-1-kw@linux.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201120_153432_418120_359BADE2 X-CRM114-Status: GOOD ( 37.37 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Heiko Stuebner , Benjamin Herrenschmidt , Shawn Lin , Paul Mackerras , Thomas Petazzoni , Jonathan Chocron , Toan Le , Will Deacon , Rob Herring , Lorenzo Pieralisi , Michael Ellerman , Michal Simek , linux-rockchip@lists.infradead.org, bcm-kernel-feedback-list@broadcom.com, linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org, Ray Jui , Florian Fainelli , linux-rpi-kernel@lists.infradead.org, Jonathan Cameron , Bjorn Helgaas , Jonathan Derrick , Scott Branden , Zhou Wang , Robert Richter , linuxppc-dev@lists.ozlabs.org, Nicolas Saenz Julienne Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gTW9uLCBPY3QgMDUsIDIwMjAgYXQgMTI6Mzg6MDVBTSArMDAwMCwgS3J6eXN6dG9mIFdpbGN6 ecWEc2tpIHdyb3RlOgo+IFVuaWZ5IEVDQU0tcmVsYXRlZCBjb25zdGFudHMgaW50byBhIHNpbmds ZSBzZXQgb2Ygc3RhbmRhcmQgY29uc3RhbnRzCj4gZGVmaW5pbmcgbWVtb3J5IGFkZHJlc3Mgc2hp ZnQgdmFsdWVzIGZvciB0aGUgYnl0ZS1sZXZlbCBhZGRyZXNzIHRoYXQgY2FuCj4gYmUgdXNlZCB3 aGVuIGFjY2Vzc2luZyB0aGUgUENJIEV4cHJlc3MgQ29uZmlndXJhdGlvbiBTcGFjZSwgYW5kIHRo ZW4KPiBtb3ZlIG5hdGl2ZSBQQ0kgRXhwcmVzcyBjb250cm9sbGVyIGRyaXZlcnMgdG8gdXNlIG5l d2x5IGludHJvZHVjZWQKPiBkZWZpbml0aW9ucyByZXRpcmluZyBhbnkgZHJpdmVyLXNwZWNpZmlj IG9uZXMuCj4gCj4gVGhlIEVDQU0gKCJFbmhhbmNlZCBDb25maWd1cmF0aW9uIEFjY2VzcyBNZWNo YW5pc20iKSBpcyBkZWZpbmVkIGJ5IHRoZQo+IFBDSSBFeHByZXNzIHNwZWNpZmljYXRpb24gKHNl ZSBQQ0kgRXhwcmVzcyBCYXNlIFNwZWNpZmljYXRpb24sIFJldmlzaW9uCj4gNS4wLCBWZXJzaW9u IDEuMCwgU2VjdGlvbiA3LjIuMiwgcC4gNjc2KSwgdGh1cyBtb3N0IGhhcmR3YXJlIHNob3VsZAo+ IGltcGxlbWVudCBpdCB0aGUgc2FtZSB3YXkuICBNb3N0IG9mIHRoZSBuYXRpdmUgUENJIEV4cHJl c3MgY29udHJvbGxlcgo+IGRyaXZlcnMgZGVmaW5lIHRoZWlyIEVDQU0tcmVsYXRlZCBjb25zdGFu dHMsIG1hbnkgb2YgdGhlc2UgY291bGQgYmUKPiBzaGFyZWQsIG9yIHVzZSBvcGVuLWNvZGVkIHZh bHVlcyB3aGVuIHNldHRpbmcgdGhlIC5idXNfc2hpZnQgZmllbGQgb2YKPiB0aGUgc3RydWN0IHBj aV9lY2FtX29wcy4KPiAKPiBBbGwgb2YgdGhlIG5ld2x5IGFkZGVkIGNvbnN0YW50cyBzaG91bGQg cmVtb3ZlIGFtYmlndWl0eSBhbmQgcmVkdWNlIHRoZQo+IG51bWJlciBvZiBvcGVuLWNvZGVkIHZh bHVlcywgYW5kIGFsc28gY29ycmVsYXRlIG1vcmUgc3Ryb25nbHkgd2l0aCB0aGUKPiBkZXNjcmlw dGlvbnMgaW4gdGhlIGFmb3JlbWVudGlvbmVkIHNwZWNpZmljYXRpb24gKHNlZSBUYWJsZSA3LTEK PiAiRW5oYW5jZWQgQ29uZmlndXJhdGlvbiBBZGRyZXNzIE1hcHBpbmciLCBwLiA2NzcpLgo+IAo+ IFRoZXJlIGlzIG5vIGNoYW5nZSB0byBmdW5jdGlvbmFsaXR5Lgo+IAo+IFN1Z2dlc3RlZC1ieTog Qmpvcm4gSGVsZ2FhcyA8YmhlbGdhYXNAZ29vZ2xlLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBLcnp5 c3p0b2YgV2lsY3p5xYRza2kgPGt3QGxpbnV4LmNvbT4KCkkgdGhpbmsgdGhpcyBpcyBhIG5pY2Ug Y2xlYW51cC4gIFBDSUVfRUNBTV9ERVZfU0hJRlQgaXMgdW51c2VkLCBzbyBJJ2QKcHJvYmFibHkg cmVtb3ZlIGl0IGFuZCBtYXliZSByZW5hbWUgUENJRV9FQ0FNX0ZVTl9TSElGVCB0bwpQQ0lFX0VD QU1fREVWRk5fU0hJRlQgb3Igc2ltaWxhci4KCkkgYXNzdW1lIHRoaXMgd291bGQgYmVzdCBnbyB0 aHJvdWdoIExvcmVuem8ncyB0cmVlLgoKPiAtLS0KPiBDaGFuZ2VkIGluIHY0Ogo+ICAgUmVtb3Zl ZCBjb25zdGFudHMgcmVsYXRlZCB0byAiQ0FNIi4KPiAgIEFkZGVkIG1vcmUgcGxhdGZvcm1zIGFu ZCBkZXZpY2VzIHRoYXQgY2FuIHVzZSBuZXcgRUNBTSBtYWNyb3MgYW5kCj4gICBjb25zdGFudHMu Cj4gICBSZW1vdmVkIHVudXNlZCAiLmJ1c19zaGlmdCIgaW5pdGlhbGlzZXJzIGZyb20gcGNpLXhn ZW5lLmMgYXMKPiAgIHhnZW5lX3BjaWVfbWFwX2J1cygpIGRpZCBub3QgdXNlIHRoZXNlLgo+IAo+ IENoYW5nZXMgaW4gdjM6Cj4gICBVcGRhdGVkIGNvbW1pdCBtZXNzYWdlIHdvcmRpbmcuCj4gICBV cGRhdGVkIHJlZ2FyZGluZyBjdXN0b20gRUNBTSBidXMgc2hpZnQgdmFsdWVzIGFuZCBjb25jZXJu aW5nIFBDSSBiYXNlCj4gICBjb25maWd1cmF0aW9uIHNwYWNlIGFjY2VzcyBmb3IgVHlwZSAxIGFj Y2Vzcy4KPiAgIFJlZmFjdG9yZWQgcm9ja2NoaXBfcGNpZV9yZF9vdGhlcl9jb25mKCkgYW5kIHJv Y2tjaGlwX3BjaWVfd3Jfb3RoZXJfY29uZigpCj4gICBhbmQgcmVtb3ZlZCB0aGUgImJ1c2RldiIg dmFyaWFibGUuCj4gICBSZW1vdmVkIHN1cnBsdXMgInJlbGJ1cyIgdmFyaWFibGUgZnJvbSBud2xf cGNpZV9tYXBfYnVzKCkgYW5kCj4gICB4aWxpbnhfcGNpZV9tYXBfYnVzKCkuCj4gICBSZW5hbWVk IHRoZSBQQ0lFX0VDQU1fQUREUigpIG1hY3JvIHRvIFBDSUVfRUNBTV9PRkZTRVQoKS4KPiAKPiBD aGFuZ2VzIGluIHYyOgo+ICAgVXNlIFBDSUVfRUNBTV9BRERSIG1hY3JvIHdoZW4gY29tcHV0aW5n IEVDQU0gYWRkcmVzcyBvZmZzZXQsIGJ1dCBkcm9wCj4gICBQQ0lfU0xPVCBhbmQgUENJX0ZVTkMg bWFjcm9zIGZyb20gdGhlIFBDSUVfRUNBTV9BRERSIG1hY3JvIGluIGZhdm91cgo+ICAgb2YgdXNp bmcgYSBzaW5nbGUgdmFsdWUgZm9yIHRoZSBkZXZpY2UvZnVuY3Rpb24uCj4gCj4gIGFyY2gvcG93 ZXJwYy9wbGF0Zm9ybXMvNHh4L3BjaS5jICAgICAgICAgICAgfCAgNyArKystLQo+ICBkcml2ZXJz L3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWFsLmMgICAgICAgIHwgIDggKysrLS0tCj4gIGRyaXZl cnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtaGlzaS5jICAgICAgfCAgNCArLS0KPiAgZHJpdmVy cy9wY2kvY29udHJvbGxlci9wY2ktYWFyZHZhcmsuYyAgICAgICB8IDEzICsrKy0tLS0tLQo+ICBk cml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1ob3N0LWdlbmVyaWMuYyAgIHwgIDIgKy0KPiAgZHJp dmVycy9wY2kvY29udHJvbGxlci9wY2ktdGh1bmRlci1lY2FtLmMgICB8ICAyICstCj4gIGRyaXZl cnMvcGNpL2NvbnRyb2xsZXIvcGNpLXRodW5kZXItcGVtLmMgICAgfCAxMyArKysrKysrLS0KPiAg ZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2kteGdlbmUuYyAgICAgICAgICB8ICAyIC0tCj4gIGRy aXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1icmNtc3RiLmMgICAgICAgfCAxNiArKy0tLS0tLS0t LS0KPiAgZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLWlwcm9jLmMgICAgICAgICB8IDI5ICsr KysrKy0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2No aXAtaG9zdC5jIHwgMjcgKysrKysrKysrLS0tLS0tLS0tLQo+ICBkcml2ZXJzL3BjaS9jb250cm9s bGVyL3BjaWUtcm9ja2NoaXAuaCAgICAgIHwgIDggKy0tLS0tCj4gIGRyaXZlcnMvcGNpL2NvbnRy b2xsZXIvcGNpZS10YW5nby5jICAgICAgICAgfCAgMiArLQo+ICBkcml2ZXJzL3BjaS9jb250cm9s bGVyL3BjaWUteGlsaW54LW53bC5jICAgIHwgIDkgKystLS0tLQo+ICBkcml2ZXJzL3BjaS9jb250 cm9sbGVyL3BjaWUteGlsaW54LmMgICAgICAgIHwgMTEgKystLS0tLS0KPiAgZHJpdmVycy9wY2kv Y29udHJvbGxlci92bWQuYyAgICAgICAgICAgICAgICB8ICA1ICsrLS0KPiAgZHJpdmVycy9wY2kv ZWNhbS5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstLQo+ICBpbmNsdWRlL2xpbnV4 L3BjaS1lY2FtLmggICAgICAgICAgICAgICAgICAgIHwgMjQgKysrKysrKysrKysrKysrKysKPiAg MTggZmlsZXMgY2hhbmdlZCwgODIgaW5zZXJ0aW9ucygrKSwgMTA0IGRlbGV0aW9ucygtKQo+IAo+ IGRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzR4eC9wY2kuYyBiL2FyY2gvcG93 ZXJwYy9wbGF0Zm9ybXMvNHh4L3BjaS5jCj4gaW5kZXggYzEzZDY0YzNiMDE5Li5jZWU0MGUwYjA2 MWMgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy80eHgvcGNpLmMKPiArKysg Yi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzR4eC9wY2kuYwo+IEBAIC0yMCw2ICsyMCw3IEBACj4g IAo+ICAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9wY2kuaD4K PiArI2luY2x1ZGUgPGxpbnV4L3BjaS1lY2FtLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+ Cj4gICNpbmNsdWRlIDxsaW51eC9vZi5oPgo+ICAjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KPiBA QCAtMTU4NSwxNyArMTU4NiwxNSBAQCBzdGF0aWMgdm9pZCBfX2lvbWVtICpwcGM0eHhfcGNpZXhf Z2V0X2NvbmZpZ19iYXNlKHN0cnVjdCBwcGM0eHhfcGNpZXhfcG9ydCAqcG9ydAo+ICAJCQkJCQkg IHN0cnVjdCBwY2lfYnVzICpidXMsCj4gIAkJCQkJCSAgdW5zaWduZWQgaW50IGRldmZuKQo+ICB7 Cj4gLQlpbnQgcmVsYnVzOwo+IC0KPiAgCS8qIFJlbW92ZSB0aGUgY2FzdHMgd2hlbiB3ZSBmaW5h bGx5IHJlbW92ZSB0aGUgc3R1cGlkIHZvbGF0aWxlCj4gIAkgKiBpbiBzdHJ1Y3QgcGNpX2NvbnRy b2xsZXIKPiAgCSAqLwo+ICAJaWYgKGJ1cy0+bnVtYmVyID09IHBvcnQtPmhvc2UtPmZpcnN0X2J1 c25vKQo+ICAJCXJldHVybiAodm9pZCBfX2lvbWVtICopcG9ydC0+aG9zZS0+Y2ZnX2FkZHI7Cj4g IAo+IC0JcmVsYnVzID0gYnVzLT5udW1iZXIgLSAocG9ydC0+aG9zZS0+Zmlyc3RfYnVzbm8gKyAx KTsKPiAgCXJldHVybiAodm9pZCBfX2lvbWVtICopcG9ydC0+aG9zZS0+Y2ZnX2RhdGEgKwo+IC0J CSgocmVsYnVzICA8PCAyMCkgfCAoZGV2Zm4gPDwgMTIpKTsKPiArCQlQQ0lFX0VDQU1fQlVTKGJ1 cy0+bnVtYmVyIC0gKHBvcnQtPmhvc2UtPmZpcnN0X2J1c25vICsgMSkpIHwKPiArCQlQQ0lFX0VD QU1fREVWRk4oZGV2Zm4pOwoKQ2FuIHdlIHR3ZWFrIHRoZSBwcGM0eHhfcGNpZXhfZ2V0X2NvbmZp Z19iYXNlKCkgaW50ZXJmYWNlIHRvIGFkZAoid2hlcmUiIGFuZCB0aGVuIGRvIHRoaXM/CgogIHJl dHVybiBwb3J0LT5ob3NlLT5jZmdfZGF0YSArIFBDSUVfRUNBTV9PRkZTRVQocmVsYnVzLCBkZXZm biwgd2hlcmUpOwoKKFNlZSBjb21tZW50IGJlbG93IGF0IFBDSUVfRUNBTV9PRkZTRVQgZGVmaW5p dGlvbikKCj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgcHBjNHh4X3BjaWV4X3JlYWRfY29uZmlnKHN0 cnVjdCBwY2lfYnVzICpidXMsIHVuc2lnbmVkIGludCBkZXZmbiwKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1hbC5jIGIvZHJpdmVycy9wY2kvY29udHJvbGxl ci9kd2MvcGNpZS1hbC5jCj4gaW5kZXggZDU3ZDRlZTE1ODQ4Li43YzJhYTA0OTExM2MgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1hbC5jCj4gKysrIGIvZHJp dmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1hbC5jCj4gQEAgLTc2LDcgKzc2LDcgQEAgc3Rh dGljIGludCBhbF9wY2llX2luaXQoc3RydWN0IHBjaV9jb25maWdfd2luZG93ICpjZmcpCj4gIH0K PiAgCj4gIGNvbnN0IHN0cnVjdCBwY2lfZWNhbV9vcHMgYWxfcGNpZV9vcHMgPSB7Cj4gLQkuYnVz X3NoaWZ0ICAgID0gMjAsCj4gKwkuYnVzX3NoaWZ0ICAgID0gUENJRV9FQ0FNX0JVU19TSElGVCwK PiAgCS5pbml0ICAgICAgICAgPSAgYWxfcGNpZV9pbml0LAo+ICAJLnBjaV9vcHMgICAgICA9IHsK PiAgCQkubWFwX2J1cyAgICA9IGFsX3BjaWVfbWFwX2J1cywKPiBAQCAtMTM4LDggKzEzOCw2IEBA IHN0cnVjdCBhbF9wY2llIHsKPiAgCXN0cnVjdCBhbF9wY2llX3RhcmdldF9idXNfY2ZnIHRhcmdl dF9idXNfY2ZnOwo+ICB9Owo+ICAKPiAtI2RlZmluZSBQQ0lFX0VDQU1fREVWRk4oeCkJCSgoKHgp ICYgMHhmZikgPDwgMTIpCj4gLQo+ICAjZGVmaW5lIHRvX2FsX3BjaWUoeCkJCWRldl9nZXRfZHJ2 ZGF0YSgoeCktPmRldikKPiAgCj4gIHN0YXRpYyBpbmxpbmUgdTMyIGFsX3BjaWVfY29udHJvbGxl cl9yZWFkbChzdHJ1Y3QgYWxfcGNpZSAqcGNpZSwgdTMyIG9mZnNldCkKPiBAQCAtMjI4LDcgKzIy Niw3IEBAIHN0YXRpYyB2b2lkIF9faW9tZW0gKmFsX3BjaWVfY29uZl9hZGRyX21hcChzdHJ1Y3Qg YWxfcGNpZSAqcGNpZSwKPiAgCXZvaWQgX19pb21lbSAqcGNpX2Jhc2VfYWRkcjsKPiAgCj4gIAlw Y2lfYmFzZV9hZGRyID0gKHZvaWQgX19pb21lbSAqKSgodWludHB0cl90KXBwLT52YV9jZmcwX2Jh c2UgKwo+IC0JCQkJCSAoYnVzbnJfZWNhbSA8PCAyMCkgKwo+ICsJCQkJCSBQQ0lFX0VDQU1fQlVT KGJ1c25yX2VjYW0pICsKPiAgCQkJCQkgUENJRV9FQ0FNX0RFVkZOKGRldmZuKSk7CgpDYW4ndCB3 ZSBkbyB0aGlzIGFzIHRoZSBsYXN0IGxpbmUgYW5kIGRyb3AgcGNpX2Jhc2VfYWRkcj8KCiAgcmV0 dXJuIHBwLT52YV9jZmcwX2Jhc2UgKyBQQ0lFX0VDQU1fT0ZGU0VUKHJlbGJ1cywgZGV2Zm4sIHdo ZXJlKTsKCj4gIAlpZiAoYnVzbnJfcmVnICE9IHRhcmdldF9idXNfY2ZnLT5yZWdfdmFsKSB7Cj4g QEAgLTMwMCw3ICsyOTgsNyBAQCBzdGF0aWMgdm9pZCBhbF9wY2llX2NvbmZpZ19wcmVwYXJlKHN0 cnVjdCBhbF9wY2llICpwY2llKQo+ICAKPiAgCXRhcmdldF9idXNfY2ZnID0gJnBjaWUtPnRhcmdl dF9idXNfY2ZnOwo+ICAKPiAtCWVjYW1fYnVzX21hc2sgPSAocGNpZS0+ZWNhbV9zaXplID4+IDIw KSAtIDE7Cj4gKwllY2FtX2J1c19tYXNrID0gKHBjaWUtPmVjYW1fc2l6ZSA+PiBQQ0lFX0VDQU1f QlVTX1NISUZUKSAtIDE7Cj4gIAlpZiAoZWNhbV9idXNfbWFzayA+IDI1NSkgewo+ICAJCWRldl93 YXJuKHBjaWUtPmRldiwgIkVDQU0gd2luZG93IHNpemUgaXMgbGFyZ2VyIHRoYW4gMjU2TUIuIEN1 dHRpbmcgb2ZmIGF0IDI1NlxuIik7Cj4gIAkJZWNhbV9idXNfbWFzayA9IDI1NTsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1oaXNpLmMgYi9kcml2ZXJzL3Bj aS9jb250cm9sbGVyL2R3Yy9wY2llLWhpc2kuYwo+IGluZGV4IDVjYTg2Nzk2ZDQzYS4uYjdhZmJm MWQ0YmQ5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtaGlz aS5jCj4gKysrIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1oaXNpLmMKPiBAQCAt MTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBpbnQgaGlzaV9wY2llX2luaXQoc3RydWN0IHBjaV9jb25m aWdfd2luZG93ICpjZmcpCj4gIH0KPiAgCj4gIGNvbnN0IHN0cnVjdCBwY2lfZWNhbV9vcHMgaGlz aV9wY2llX29wcyA9IHsKPiAtCS5idXNfc2hpZnQgICAgPSAyMCwKPiArCS5idXNfc2hpZnQgICAg PSBQQ0lFX0VDQU1fQlVTX1NISUZULAo+ICAJLmluaXQgICAgICAgICA9ICBoaXNpX3BjaWVfaW5p dCwKPiAgCS5wY2lfb3BzICAgICAgPSB7Cj4gIAkJLm1hcF9idXMgICAgPSBoaXNpX3BjaWVfbWFw X2J1cywKPiBAQCAtMTM1LDcgKzEzNSw3IEBAIHN0YXRpYyBpbnQgaGlzaV9wY2llX3BsYXRmb3Jt X2luaXQoc3RydWN0IHBjaV9jb25maWdfd2luZG93ICpjZmcpCj4gIH0KPiAgCj4gIHN0YXRpYyBj b25zdCBzdHJ1Y3QgcGNpX2VjYW1fb3BzIGhpc2lfcGNpZV9wbGF0Zm9ybV9vcHMgPSB7Cj4gLQku YnVzX3NoaWZ0ICAgID0gMjAsCj4gKwkuYnVzX3NoaWZ0ICAgID0gUENJRV9FQ0FNX0JVU19TSElG VCwKPiAgCS5pbml0ICAgICAgICAgPSAgaGlzaV9wY2llX3BsYXRmb3JtX2luaXQsCj4gIAkucGNp X29wcyAgICAgID0gewo+ICAJCS5tYXBfYnVzICAgID0gaGlzaV9wY2llX21hcF9idXMsCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWFhcmR2YXJrLmMgYi9kcml2ZXJz L3BjaS9jb250cm9sbGVyL3BjaS1hYXJkdmFyay5jCj4gaW5kZXggMTU1OWY3OWU2M2I2Li4yMDBh ZDA3ZTQ3NDcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktYWFyZHZh cmsuYwo+ICsrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWFhcmR2YXJrLmMKPiBAQCAt MTUsNiArMTUsNyBAQAo+ICAjaW5jbHVkZSA8bGludXgvaXJxZG9tYWluLmg+Cj4gICNpbmNsdWRl IDxsaW51eC9rZXJuZWwuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgo+ICsjaW5jbHVkZSA8 bGludXgvcGNpLWVjYW0uaD4KPiAgI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KPiAgI2luY2x1ZGUg PGxpbnV4L3BoeS9waHkuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+ IEBAIC0xNjMsMTQgKzE2NCw2IEBACj4gICNkZWZpbmUgUENJRV9DT05GSUdfV1JfVFlQRTAJCQkw eGEKPiAgI2RlZmluZSBQQ0lFX0NPTkZJR19XUl9UWVBFMQkJCTB4Ygo+ICAKPiAtI2RlZmluZSBQ Q0lFX0NPTkZfQlVTKGJ1cykJCQkoKChidXMpICYgMHhmZikgPDwgMjApCj4gLSNkZWZpbmUgUENJ RV9DT05GX0RFVihkZXYpCQkJKCgoZGV2KSAmIDB4MWYpIDw8IDE1KQo+IC0jZGVmaW5lIFBDSUVf Q09ORl9GVU5DKGZ1bikJCQkoKChmdW4pICYgMHg3KQk8PCAxMikKPiAtI2RlZmluZSBQQ0lFX0NP TkZfUkVHKHJlZykJCQkoKHJlZykgJiAweGZmYykKPiAtI2RlZmluZSBQQ0lFX0NPTkZfQUREUihi dXMsIGRldmZuLCB3aGVyZSkJXAo+IC0JKFBDSUVfQ09ORl9CVVMoYnVzKSB8IFBDSUVfQ09ORl9E RVYoUENJX1NMT1QoZGV2Zm4pKQl8IFwKPiAtCSBQQ0lFX0NPTkZfRlVOQyhQQ0lfRlVOQyhkZXZm bikpIHwgUENJRV9DT05GX1JFRyh3aGVyZSkpCj4gLQo+ICAjZGVmaW5lIFBJT19SRVRSWV9DTlQJ CQk1MDAKPiAgI2RlZmluZSBQSU9fUkVUUllfREVMQVkJCQkyIC8qIDIgdXMqLwo+ICAKPiBAQCAt NjgzLDcgKzY3Niw3IEBAIHN0YXRpYyBpbnQgYWR2a19wY2llX3JkX2NvbmYoc3RydWN0IHBjaV9i dXMgKmJ1cywgdTMyIGRldmZuLAo+ICAJYWR2a193cml0ZWwocGNpZSwgcmVnLCBQSU9fQ1RSTCk7 Cj4gIAo+ICAJLyogUHJvZ3JhbSB0aGUgYWRkcmVzcyByZWdpc3RlcnMgKi8KPiAtCXJlZyA9IFBD SUVfQ09ORl9BRERSKGJ1cy0+bnVtYmVyLCBkZXZmbiwgd2hlcmUpOwo+ICsJcmVnID0gUENJRV9F Q0FNX09GRlNFVChidXMsIGRldmZuLCAod2hlcmUgJiAweGZmYykpOwoKTWF5YmUgdGhpczoKCiAg cmVnID0gQUxJR05fRE9XTihQQ0lFX0VDQU1fT0ZGU0VUKGJ1cy0+bnVtYmVyLCBkZXZmbiwgd2hl cmUpLCA0KTsKCklJVUMsIHRoZSBwb2ludCBpcyB0aGF0IGFhcmR2YXJrIGNhbiBvbmx5IGRvIDMy LWJpdCwgYWxpZ25lZCwKYWNjZXNzZXMuICAiJiAweGZmYyIgZG9lcyBkbyB0aGF0LCBidXQgaXQn IGFsc28gYSByYW5nZSByZXN0cmljdGlvbiwKc28gaXQncyBub3QgYXMgb2J2aW91cyBhcyBpdCBj b3VsZCBiZSB3aGljaCBpcyBpbXBvcnRhbnQgaGVyZS4KCj4gIAlhZHZrX3dyaXRlbChwY2llLCBy ZWcsIFBJT19BRERSX0xTKTsKPiAgCWFkdmtfd3JpdGVsKHBjaWUsIDAsIFBJT19BRERSX01TKTsK PiAgCj4gQEAgLTc0NCw3ICs3MzcsNyBAQCBzdGF0aWMgaW50IGFkdmtfcGNpZV93cl9jb25mKHN0 cnVjdCBwY2lfYnVzICpidXMsIHUzMiBkZXZmbiwKPiAgCWFkdmtfd3JpdGVsKHBjaWUsIHJlZywg UElPX0NUUkwpOwo+ICAKPiAgCS8qIFByb2dyYW0gdGhlIGFkZHJlc3MgcmVnaXN0ZXJzICovCj4g LQlyZWcgPSBQQ0lFX0NPTkZfQUREUihidXMtPm51bWJlciwgZGV2Zm4sIHdoZXJlKTsKPiArCXJl ZyA9IFBDSUVfRUNBTV9PRkZTRVQoYnVzLCBkZXZmbiwgKHdoZXJlICYgMHhmZmMpKTsKCkRpdHRv LgoKPiAgCWFkdmtfd3JpdGVsKHBjaWUsIHJlZywgUElPX0FERFJfTFMpOwo+ICAJYWR2a193cml0 ZWwocGNpZSwgMCwgUElPX0FERFJfTVMpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kv Y29udHJvbGxlci9wY2ktaG9zdC1nZW5lcmljLmMgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3Bj aS1ob3N0LWdlbmVyaWMuYwo+IGluZGV4IGI1MTk3N2FiZmRmMS4uYzFjNjliMTE2MTVmIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWhvc3QtZ2VuZXJpYy5jCj4gKysr IGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaG9zdC1nZW5lcmljLmMKPiBAQCAtNDksNyAr NDksNyBAQCBzdGF0aWMgdm9pZCBfX2lvbWVtICpwY2lfZHdfZWNhbV9tYXBfYnVzKHN0cnVjdCBw Y2lfYnVzICpidXMsCj4gIH0KPiAgCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2VjYW1fb3Bz IHBjaV9kd19lY2FtX2J1c19vcHMgPSB7Cj4gLQkuYnVzX3NoaWZ0CT0gMjAsCj4gKwkuYnVzX3No aWZ0CT0gUENJRV9FQ0FNX0JVU19TSElGVCwKPiAgCS5wY2lfb3BzCT0gewo+ICAJCS5tYXBfYnVz CT0gcGNpX2R3X2VjYW1fbWFwX2J1cywKPiAgCQkucmVhZAkJPSBwY2lfZ2VuZXJpY19jb25maWdf cmVhZCwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktdGh1bmRlci1l Y2FtLmMgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS10aHVuZGVyLWVjYW0uYwo+IGluZGV4 IDdlODgzNWZlZTVmNy4uMjJlZDdlOTk1YjM5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvcGNpL2Nv bnRyb2xsZXIvcGNpLXRodW5kZXItZWNhbS5jCj4gKysrIGIvZHJpdmVycy9wY2kvY29udHJvbGxl ci9wY2ktdGh1bmRlci1lY2FtLmMKPiBAQCAtMzQ2LDcgKzM0Niw3IEBAIHN0YXRpYyBpbnQgdGh1 bmRlcl9lY2FtX2NvbmZpZ193cml0ZShzdHJ1Y3QgcGNpX2J1cyAqYnVzLCB1bnNpZ25lZCBpbnQg ZGV2Zm4sCj4gIH0KPiAgCj4gIGNvbnN0IHN0cnVjdCBwY2lfZWNhbV9vcHMgcGNpX3RodW5kZXJf ZWNhbV9vcHMgPSB7Cj4gLQkuYnVzX3NoaWZ0CT0gMjAsCj4gKwkuYnVzX3NoaWZ0CT0gUENJRV9F Q0FNX0JVU19TSElGVCwKPiAgCS5wY2lfb3BzCT0gewo+ICAJCS5tYXBfYnVzICAgICAgICA9IHBj aV9lY2FtX21hcF9idXMsCj4gIAkJLnJlYWQgICAgICAgICAgID0gdGh1bmRlcl9lY2FtX2NvbmZp Z19yZWFkLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS10aHVuZGVy LXBlbS5jIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktdGh1bmRlci1wZW0uYwo+IGluZGV4 IDNmODQ3OTY5MTQzZS4uMWEzZjcwYWM2MWZjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvcGNpL2Nv bnRyb2xsZXIvcGNpLXRodW5kZXItcGVtLmMKPiArKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVy L3BjaS10aHVuZGVyLXBlbS5jCj4gQEAgLTE5LDYgKzE5LDE1IEBACj4gICNkZWZpbmUgUEVNX0NG R19XUiAweDI4Cj4gICNkZWZpbmUgUEVNX0NGR19SRCAweDMwCj4gIAo+ICsvKgo+ICsgKiBFbmhh bmNlZCBDb25maWd1cmF0aW9uIEFjY2VzcyBNZWNoYW5pc20gKEVDQU0pCj4gKyAqCj4gKyAqIE4u Qi4gVGhpcyBpcyBhIG5vbi1zdGFuZGFyZCBwbGF0Zm9ybS1zcGVjaWZpYyBFQ0FNIGJ1cyBzaGlm dCB2YWx1ZS4gIEZvcgo+ICsgKiBzdGFuZGFyZCB2YWx1ZXMgZGVmaW5lZCBpbiB0aGUgUENJIEV4 cHJlc3MgQmFzZSBTcGVjaWZpY2F0aW9uIHNlZQo+ICsgKiBpbmNsdWRlL2xpbnV4L3BjaS1lY2Ft LmguCj4gKyAqLwo+ICsjZGVmaW5lIFRIVU5ERVJfUENJRV9FQ0FNX0JVU19TSElGVAkyNAo+ICsK PiAgc3RydWN0IHRodW5kZXJfcGVtX3BjaSB7Cj4gIAl1MzIJCWVhX2VudHJ5WzNdOwo+ICAJdm9p ZCBfX2lvbWVtCSpwZW1fcmVnX2Jhc2U7Cj4gQEAgLTQwNCw3ICs0MTMsNyBAQCBzdGF0aWMgaW50 IHRodW5kZXJfcGVtX2FjcGlfaW5pdChzdHJ1Y3QgcGNpX2NvbmZpZ193aW5kb3cgKmNmZykKPiAg fQo+ICAKPiAgY29uc3Qgc3RydWN0IHBjaV9lY2FtX29wcyB0aHVuZGVyX3BlbV9lY2FtX29wcyA9 IHsKPiAtCS5idXNfc2hpZnQJPSAyNCwKPiArCS5idXNfc2hpZnQJPSBUSFVOREVSX1BDSUVfRUNB TV9CVVNfU0hJRlQsCj4gIAkuaW5pdAkJPSB0aHVuZGVyX3BlbV9hY3BpX2luaXQsCj4gIAkucGNp X29wcwk9IHsKPiAgCQkubWFwX2J1cwk9IHBjaV9lY2FtX21hcF9idXMsCj4gQEAgLTQ0MSw3ICs0 NTAsNyBAQCBzdGF0aWMgaW50IHRodW5kZXJfcGVtX3BsYXRmb3JtX2luaXQoc3RydWN0IHBjaV9j b25maWdfd2luZG93ICpjZmcpCj4gIH0KPiAgCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2Vj YW1fb3BzIHBjaV90aHVuZGVyX3BlbV9vcHMgPSB7Cj4gLQkuYnVzX3NoaWZ0CT0gMjQsCj4gKwku YnVzX3NoaWZ0CT0gVEhVTkRFUl9QQ0lFX0VDQU1fQlVTX1NISUZULAo+ICAJLmluaXQJCT0gdGh1 bmRlcl9wZW1fcGxhdGZvcm1faW5pdCwKPiAgCS5wY2lfb3BzCT0gewo+ICAJCS5tYXBfYnVzCT0g cGNpX2VjYW1fbWFwX2J1cywKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9w Y2kteGdlbmUuYyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLXhnZW5lLmMKPiBpbmRleCA4 ZTBkYjg0ZjA4OWQuLjg1ZTdjOTgyNjVlOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3BjaS9jb250 cm9sbGVyL3BjaS14Z2VuZS5jCj4gKysrIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2kteGdl bmUuYwo+IEBAIC0yNTcsNyArMjU3LDYgQEAgc3RhdGljIGludCB4Z2VuZV92MV9wY2llX2VjYW1f aW5pdChzdHJ1Y3QgcGNpX2NvbmZpZ193aW5kb3cgKmNmZykKPiAgfQo+ICAKPiAgY29uc3Qgc3Ry dWN0IHBjaV9lY2FtX29wcyB4Z2VuZV92MV9wY2llX2VjYW1fb3BzID0gewo+IC0JLmJ1c19zaGlm dAk9IDE2LAo+ICAJLmluaXQJCT0geGdlbmVfdjFfcGNpZV9lY2FtX2luaXQsCj4gIAkucGNpX29w cwk9IHsKPiAgCQkubWFwX2J1cwk9IHhnZW5lX3BjaWVfbWFwX2J1cywKPiBAQCAtMjcyLDcgKzI3 MSw2IEBAIHN0YXRpYyBpbnQgeGdlbmVfdjJfcGNpZV9lY2FtX2luaXQoc3RydWN0IHBjaV9jb25m aWdfd2luZG93ICpjZmcpCj4gIH0KPiAgCj4gIGNvbnN0IHN0cnVjdCBwY2lfZWNhbV9vcHMgeGdl bmVfdjJfcGNpZV9lY2FtX29wcyA9IHsKPiAtCS5idXNfc2hpZnQJPSAxNiwKPiAgCS5pbml0CQk9 IHhnZW5lX3YyX3BjaWVfZWNhbV9pbml0LAo+ICAJLnBjaV9vcHMJPSB7Cj4gIAkJLm1hcF9idXMJ PSB4Z2VuZV9wY2llX21hcF9idXMsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xs ZXIvcGNpZS1icmNtc3RiLmMgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtYnJjbXN0Yi5j Cj4gaW5kZXggODVmYTdkNTRmMTFmLi41ZDFlNjQ1NTBiYmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9wY2kvY29udHJvbGxlci9wY2llLWJyY21zdGIuYwo+ICsrKyBiL2RyaXZlcnMvcGNpL2NvbnRy b2xsZXIvcGNpZS1icmNtc3RiLmMKPiBAQCAtMjIsNiArMjIsNyBAQAo+ICAjaW5jbHVkZSA8bGlu dXgvb2ZfcGNpLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9vZl9wbGF0Zm9ybS5oPgo+ICAjaW5jbHVk ZSA8bGludXgvcGNpLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9wY2ktZWNhbS5oPgo+ICAjaW5jbHVk ZSA8bGludXgvcHJpbnRrLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9zaXplcy5oPgo+ICAjaW5jbHVk ZSA8bGludXgvc2xhYi5oPgo+IEBAIC0xMTYsMTEgKzExNyw3IEBACj4gICNkZWZpbmUgUENJRV9N U0lfSU5UUjJfTUFTS19DTFIJCQkJMHg0NTE0Cj4gIAo+ICAjZGVmaW5lIFBDSUVfRVhUX0NGR19E QVRBCQkJCTB4ODAwMAo+IC0KPiAgI2RlZmluZSBQQ0lFX0VYVF9DRkdfSU5ERVgJCQkJMHg5MDAw Cj4gLSNkZWZpbmUgIFBDSUVfRVhUX0JVU05VTV9TSElGVAkJCQkyMAo+IC0jZGVmaW5lICBQQ0lF X0VYVF9TTE9UX1NISUZUCQkJCTE1Cj4gLSNkZWZpbmUgIFBDSUVfRVhUX0ZVTkNfU0hJRlQJCQkJ MTIKPiAgCj4gICNkZWZpbmUgUENJRV9SR1IxX1NXX0lOSVRfMQkJCQkweDkyMTAKPiAgI2RlZmlu ZSAgUENJRV9SR1IxX1NXX0lOSVRfMV9QRVJTVF9NQVNLCQkJMHgxCj4gQEAgLTU2OSwxNSArNTY2 LDYgQEAgc3RhdGljIGJvb2wgYnJjbV9wY2llX2xpbmtfdXAoc3RydWN0IGJyY21fcGNpZSAqcGNp ZSkKPiAgCXJldHVybiBkbGEgJiYgcGx1Owo+ICB9Cj4gIAo+IC0vKiBDb25maWd1cmF0aW9uIHNw YWNlIHJlYWQvd3JpdGUgc3VwcG9ydCAqLwo+IC1zdGF0aWMgaW5saW5lIGludCBicmNtX3BjaWVf Y2ZnX2luZGV4KGludCBidXNuciwgaW50IGRldmZuLCBpbnQgcmVnKQo+IC17Cj4gLQlyZXR1cm4g KChQQ0lfU0xPVChkZXZmbikgJiAweDFmKSA8PCBQQ0lFX0VYVF9TTE9UX1NISUZUKQo+IC0JCXwg KChQQ0lfRlVOQyhkZXZmbikgJiAweDA3KSA8PCBQQ0lFX0VYVF9GVU5DX1NISUZUKQo+IC0JCXwg KGJ1c25yIDw8IFBDSUVfRVhUX0JVU05VTV9TSElGVCkKPiAtCQl8IChyZWcgJiB+Myk7Cj4gLX0K PiAtCj4gIHN0YXRpYyB2b2lkIF9faW9tZW0gKmJyY21fcGNpZV9tYXBfY29uZihzdHJ1Y3QgcGNp X2J1cyAqYnVzLCB1bnNpZ25lZCBpbnQgZGV2Zm4sCj4gIAkJCQkJaW50IHdoZXJlKQo+ICB7Cj4g QEAgLTU5MCw3ICs1NzgsNyBAQCBzdGF0aWMgdm9pZCBfX2lvbWVtICpicmNtX3BjaWVfbWFwX2Nv bmYoc3RydWN0IHBjaV9idXMgKmJ1cywgdW5zaWduZWQgaW50IGRldmZuLAo+ICAJCXJldHVybiBQ Q0lfU0xPVChkZXZmbikgPyBOVUxMIDogYmFzZSArIHdoZXJlOwo+ICAKPiAgCS8qIEZvciBkZXZp Y2VzLCB3cml0ZSB0byB0aGUgY29uZmlnIHNwYWNlIGluZGV4IHJlZ2lzdGVyICovCj4gLQlpZHgg PSBicmNtX3BjaWVfY2ZnX2luZGV4KGJ1cy0+bnVtYmVyLCBkZXZmbiwgMCk7Cj4gKwlpZHggPSBQ Q0lFX0VDQU1fQlVTKGJ1cy0+bnVtYmVyKSB8IFBDSUVfRUNBTV9ERVZGTihkZXZmbik7CgogIGlk eCA9IFBDSUVfRUNBTV9PRkZTRVQoYnVzLT5udW1iZXIsIGRldmZuLCAwKTsKCmJyY21fcGNpZV9j ZmdfaW5kZXgoKSBlbmZvcmNlZCAzMi1iaXQgYWxpZ25tZW50LCBidXQgd2FzIG9ubHkgZXZlcgp1 c2VkIHdpdGggInJlZyA9PSAwIiwgc28gdGhhdCBuZXZlciBkaWQgYW55dGhpbmcuICBOb3Qgc3Vy ZSBpZiB0aGF0IGlzCmEgaGludCB0aGF0ICpzb21ldGhpbmcqIGhlcmUgcmVxdWlyZXMgYWxpZ25t ZW50PwoKPiAgCXdyaXRlbChpZHgsIHBjaWUtPmJhc2UgKyBQQ0lFX0VYVF9DRkdfSU5ERVgpOwo+ ICAJcmV0dXJuIGJhc2UgKyBQQ0lFX0VYVF9DRkdfREFUQSArIHdoZXJlOwo+ICB9Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1pcHJvYy5jIGIvZHJpdmVycy9wY2kv Y29udHJvbGxlci9wY2llLWlwcm9jLmMKPiBpbmRleCA5MDVlOTM4MDgyNDMuLjMwYWJlNGI3YmU3 MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtaXByb2MuYwo+ICsr KyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1pcHJvYy5jCj4gQEAgLTYsNiArNiw3IEBA Cj4gIAo+ICAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9wY2ku aD4KPiArI2luY2x1ZGUgPGxpbnV4L3BjaS1lY2FtLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9tc2ku aD4KPiAgI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ICAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+ Cj4gQEAgLTM5LDE1ICs0MCw3IEBACj4gIAo+ICAjZGVmaW5lIENGR19JTkRfQUREUl9NQVNLCQkw eDAwMDAxZmZjCj4gIAo+IC0jZGVmaW5lIENGR19BRERSX0JVU19OVU1fU0hJRlQJCTIwCj4gLSNk ZWZpbmUgQ0ZHX0FERFJfQlVTX05VTV9NQVNLCQkweDBmZjAwMDAwCj4gLSNkZWZpbmUgQ0ZHX0FE RFJfREVWX05VTV9TSElGVAkJMTUKPiAtI2RlZmluZSBDRkdfQUREUl9ERVZfTlVNX01BU0sJCTB4 MDAwZjgwMDAKPiAtI2RlZmluZSBDRkdfQUREUl9GVU5DX05VTV9TSElGVAkJMTIKPiAtI2RlZmlu ZSBDRkdfQUREUl9GVU5DX05VTV9NQVNLCQkweDAwMDA3MDAwCj4gLSNkZWZpbmUgQ0ZHX0FERFJf UkVHX05VTV9TSElGVAkJMgo+ICAjZGVmaW5lIENGR19BRERSX1JFR19OVU1fTUFTSwkJMHgwMDAw MGZmYwo+IC0jZGVmaW5lIENGR19BRERSX0NGR19UWVBFX1NISUZUCQkwCj4gICNkZWZpbmUgQ0ZH X0FERFJfQ0ZHX1RZUEVfTUFTSwkJMHgwMDAwMDAwMwo+ICAKPiAgI2RlZmluZSBTWVNfUkNfSU5U WF9NQVNLCQkweGYKPiBAQCAtNDU5LDE4ICs0NTIsMTYgQEAgc3RhdGljIGlubGluZSB2b2lkIGlw cm9jX3BjaWVfYXBiX2Vycl9kaXNhYmxlKHN0cnVjdCBwY2lfYnVzICpidXMsCj4gIAo+ICBzdGF0 aWMgdm9pZCBfX2lvbWVtICppcHJvY19wY2llX21hcF9lcF9jZmdfcmVnKHN0cnVjdCBpcHJvY19w Y2llICpwY2llLAo+ICAJCQkJCSAgICAgICB1bnNpZ25lZCBpbnQgYnVzbm8sCj4gLQkJCQkJICAg ICAgIHVuc2lnbmVkIGludCBzbG90LAo+IC0JCQkJCSAgICAgICB1bnNpZ25lZCBpbnQgZm4sCj4g KwkJCQkJICAgICAgIHVuc2lnbmVkIGludCBkZXZmbiwKPiAgCQkJCQkgICAgICAgaW50IHdoZXJl KQo+ICB7Cj4gIAl1MTYgb2Zmc2V0Owo+ICAJdTMyIHZhbDsKPiAgCj4gIAkvKiBFUCBkZXZpY2Ug YWNjZXNzICovCj4gLQl2YWwgPSAoYnVzbm8gPDwgQ0ZHX0FERFJfQlVTX05VTV9TSElGVCkgfAo+ IC0JCShzbG90IDw8IENGR19BRERSX0RFVl9OVU1fU0hJRlQpIHwKPiAtCQkoZm4gPDwgQ0ZHX0FE RFJfRlVOQ19OVU1fU0hJRlQpIHwKPiAtCQkod2hlcmUgJiBDRkdfQUREUl9SRUdfTlVNX01BU0sp IHwKPiArCXZhbCA9IFBDSUVfRUNBTV9CVVMoYnVzbm8pIHwKPiArCQlQQ0lFX0VDQU1fREVWRk4o ZGV2Zm4pIHwKPiArCQlQQ0lFX0VDQU1fUkVHKHdoZXJlICYgQ0ZHX0FERFJfUkVHX05VTV9NQVNL KSB8Cj4gIAkJKDEgJiBDRkdfQUREUl9DRkdfVFlQRV9NQVNLKTsKCiAgdmFsID0gQUxJR05fRE9X TihQQ0lFX0VDQU1fT0ZGU0VUKGJ1c25vLCBkZXZmbiwgd2hlcmUpLCA0KSB8IDE7CgpMb29rcyBs aWtlIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgYSAjZGVmaW5lIGZvciB0aGF0ICIxIiBhdCB0aGUg ZW5kLgoiMSAmIENGR19BRERSX0NGR19UWVBFX01BU0siIGlzIGp1c3QgIjEgJiAweDMiLCB3aGlj aCB3b3VsZCBiZQp1bm5lY2Vzc2FyaWx5IHZlcmJvc2UgaWYgdGhlcmUgd2VyZSBhIENGR19BRERS X0NGR19UWVBFXzEgb3Igd2hhdGV2ZXIKdGhhdCBpcy4KCj4gIAlpcHJvY19wY2llX3dyaXRlX3Jl ZyhwY2llLCBJUFJPQ19QQ0lFX0NGR19BRERSLCB2YWwpOwo+IEBAIC01NzQsOCArNTY1LDYgQEAg c3RhdGljIGludCBpcHJvY19wY2llX2NvbmZpZ19yZWFkKHN0cnVjdCBwY2lfYnVzICpidXMsIHVu c2lnbmVkIGludCBkZXZmbiwKPiAgCQkJCSAgaW50IHdoZXJlLCBpbnQgc2l6ZSwgdTMyICp2YWwp Cj4gIHsKPiAgCXN0cnVjdCBpcHJvY19wY2llICpwY2llID0gaXByb2NfZGF0YShidXMpOwo+IC0J dW5zaWduZWQgaW50IHNsb3QgPSBQQ0lfU0xPVChkZXZmbik7Cj4gLQl1bnNpZ25lZCBpbnQgZm4g PSBQQ0lfRlVOQyhkZXZmbik7Cj4gIAl1bnNpZ25lZCBpbnQgYnVzbm8gPSBidXMtPm51bWJlcjsK PiAgCXZvaWQgX19pb21lbSAqY2ZnX2RhdGFfcDsKPiAgCXVuc2lnbmVkIGludCBkYXRhOwo+IEBA IC01OTAsNyArNTc5LDcgQEAgc3RhdGljIGludCBpcHJvY19wY2llX2NvbmZpZ19yZWFkKHN0cnVj dCBwY2lfYnVzICpidXMsIHVuc2lnbmVkIGludCBkZXZmbiwKPiAgCQlyZXR1cm4gcmV0Owo+ICAJ fQo+ICAKPiAtCWNmZ19kYXRhX3AgPSBpcHJvY19wY2llX21hcF9lcF9jZmdfcmVnKHBjaWUsIGJ1 c25vLCBzbG90LCBmbiwgd2hlcmUpOwo+ICsJY2ZnX2RhdGFfcCA9IGlwcm9jX3BjaWVfbWFwX2Vw X2NmZ19yZWcocGNpZSwgYnVzbm8sIGRldmZuLCB3aGVyZSk7Cj4gIAo+ICAJaWYgKCFjZmdfZGF0 YV9wKQo+ICAJCXJldHVybiBQQ0lCSU9TX0RFVklDRV9OT1RfRk9VTkQ7Cj4gQEAgLTYzMSwxMyAr NjIwLDExIEBAIHN0YXRpYyB2b2lkIF9faW9tZW0gKmlwcm9jX3BjaWVfbWFwX2NmZ19idXMoc3Ry dWN0IGlwcm9jX3BjaWUgKnBjaWUsCj4gIAkJCQkJICAgIGludCBidXNubywgdW5zaWduZWQgaW50 IGRldmZuLAo+ICAJCQkJCSAgICBpbnQgd2hlcmUpCj4gIHsKPiAtCXVuc2lnbmVkIHNsb3QgPSBQ Q0lfU0xPVChkZXZmbik7Cj4gLQl1bnNpZ25lZCBmbiA9IFBDSV9GVU5DKGRldmZuKTsKPiAgCXUx NiBvZmZzZXQ7Cj4gIAo+ICAJLyogcm9vdCBjb21wbGV4IGFjY2VzcyAqLwo+ICAJaWYgKGJ1c25v ID09IDApIHsKPiAtCQlpZiAoc2xvdCA+IDAgfHwgZm4gPiAwKQo+ICsJCWlmIChQQ0lFX0VDQU1f REVWRk4oZGV2Zm4pID4gMCkKPiAgCQkJcmV0dXJuIE5VTEw7Cj4gIAo+ICAJCWlwcm9jX3BjaWVf d3JpdGVfcmVnKHBjaWUsIElQUk9DX1BDSUVfQ0ZHX0lORF9BRERSLAo+IEBAIC02NDksNyArNjM2 LDcgQEAgc3RhdGljIHZvaWQgX19pb21lbSAqaXByb2NfcGNpZV9tYXBfY2ZnX2J1cyhzdHJ1Y3Qg aXByb2NfcGNpZSAqcGNpZSwKPiAgCQkJcmV0dXJuIChwY2llLT5iYXNlICsgb2Zmc2V0KTsKPiAg CX0KPiAgCj4gLQlyZXR1cm4gaXByb2NfcGNpZV9tYXBfZXBfY2ZnX3JlZyhwY2llLCBidXNubywg c2xvdCwgZm4sIHdoZXJlKTsKPiArCXJldHVybiBpcHJvY19wY2llX21hcF9lcF9jZmdfcmVnKHBj aWUsIGJ1c25vLCBkZXZmbiwgd2hlcmUpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBfX2lvbWVt ICppcHJvY19wY2llX2J1c19tYXBfY2ZnX2J1cyhzdHJ1Y3QgcGNpX2J1cyAqYnVzLAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2NoaXAtaG9zdC5jIGIvZHJp dmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWhvc3QuYwo+IGluZGV4IDBiYjJmYjNl OGEwYi4uNGMwNjlmOGZhNDIwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIv cGNpZS1yb2NrY2hpcC1ob3N0LmMKPiArKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUt cm9ja2NoaXAtaG9zdC5jCj4gQEAgLTE2MCwxMiArMTYwLDExIEBAIHN0YXRpYyBpbnQgcm9ja2No aXBfcGNpZV9yZF9vdGhlcl9jb25mKHN0cnVjdCByb2NrY2hpcF9wY2llICpyb2NrY2hpcCwKPiAg CQkJCSAgICAgICBzdHJ1Y3QgcGNpX2J1cyAqYnVzLCB1MzIgZGV2Zm4sCj4gIAkJCQkgICAgICAg aW50IHdoZXJlLCBpbnQgc2l6ZSwgdTMyICp2YWwpCj4gIHsKPiAtCXUzMiBidXNkZXY7Cj4gKwl2 b2lkIF9faW9tZW0gKmFkZHI7Cj4gIAo+IC0JYnVzZGV2ID0gUENJRV9FQ0FNX0FERFIoYnVzLT5u dW1iZXIsIFBDSV9TTE9UKGRldmZuKSwKPiAtCQkJCVBDSV9GVU5DKGRldmZuKSwgd2hlcmUpOwo+ ICsJYWRkciA9IHJvY2tjaGlwLT5yZWdfYmFzZSArIFBDSUVfRUNBTV9PRkZTRVQoYnVzLCBkZXZm biwgd2hlcmUpOwoKSWYgeW91IGFkb3B0IHRoZSBidXMtPm51bWJlciBjaGFuZ2UsCgogIGFkZHIg PSByb2NrY2hpcC0+cmVnX2Jhc2UgKyBQQ0lFX0VDQU1fT0ZGU0VUKGJ1cy0+bnVtYmVyLCBkZXZm biwgd2hlcmUpOwoKPiAtCWlmICghSVNfQUxJR05FRChidXNkZXYsIHNpemUpKSB7Cj4gKwlpZiAo IUlTX0FMSUdORUQoKHVpbnRwdHJfdClhZGRyLCBzaXplKSkgewo+ICAJCSp2YWwgPSAwOwo+ICAJ CXJldHVybiBQQ0lCSU9TX0JBRF9SRUdJU1RFUl9OVU1CRVI7Cj4gIAl9Cj4gQEAgLTE3OCwxMSAr MTc3LDExIEBAIHN0YXRpYyBpbnQgcm9ja2NoaXBfcGNpZV9yZF9vdGhlcl9jb25mKHN0cnVjdCBy b2NrY2hpcF9wY2llICpyb2NrY2hpcCwKPiAgCQkJCQkJQVhJX1dSQVBQRVJfVFlQRTFfQ0ZHKTsK PiAgCj4gIAlpZiAoc2l6ZSA9PSA0KSB7Cj4gLQkJKnZhbCA9IHJlYWRsKHJvY2tjaGlwLT5yZWdf YmFzZSArIGJ1c2Rldik7Cj4gKwkJKnZhbCA9IHJlYWRsKGFkZHIpOwo+ICAJfSBlbHNlIGlmIChz aXplID09IDIpIHsKPiAtCQkqdmFsID0gcmVhZHcocm9ja2NoaXAtPnJlZ19iYXNlICsgYnVzZGV2 KTsKPiArCQkqdmFsID0gcmVhZHcoYWRkcik7Cj4gIAl9IGVsc2UgaWYgKHNpemUgPT0gMSkgewo+ IC0JCSp2YWwgPSByZWFkYihyb2NrY2hpcC0+cmVnX2Jhc2UgKyBidXNkZXYpOwo+ICsJCSp2YWwg PSByZWFkYihhZGRyKTsKPiAgCX0gZWxzZSB7Cj4gIAkJKnZhbCA9IDA7Cj4gIAkJcmV0dXJuIFBD SUJJT1NfQkFEX1JFR0lTVEVSX05VTUJFUjsKPiBAQCAtMTk0LDExICsxOTMsMTEgQEAgc3RhdGlj IGludCByb2NrY2hpcF9wY2llX3dyX290aGVyX2NvbmYoc3RydWN0IHJvY2tjaGlwX3BjaWUgKnJv Y2tjaGlwLAo+ICAJCQkJICAgICAgIHN0cnVjdCBwY2lfYnVzICpidXMsIHUzMiBkZXZmbiwKPiAg CQkJCSAgICAgICBpbnQgd2hlcmUsIGludCBzaXplLCB1MzIgdmFsKQo+ICB7Cj4gLQl1MzIgYnVz ZGV2Owo+ICsJdm9pZCBfX2lvbWVtICphZGRyOwo+ICAKPiAtCWJ1c2RldiA9IFBDSUVfRUNBTV9B RERSKGJ1cy0+bnVtYmVyLCBQQ0lfU0xPVChkZXZmbiksCj4gLQkJCQlQQ0lfRlVOQyhkZXZmbiks IHdoZXJlKTsKPiAtCWlmICghSVNfQUxJR05FRChidXNkZXYsIHNpemUpKQo+ICsJYWRkciA9IHJv Y2tjaGlwLT5yZWdfYmFzZSArIFBDSUVfRUNBTV9PRkZTRVQoYnVzLCBkZXZmbiwgd2hlcmUpOwoK RGl0dG8uCgo+ICsJaWYgKCFJU19BTElHTkVEKCh1aW50cHRyX3QpYWRkciwgc2l6ZSkpCj4gIAkJ cmV0dXJuIFBDSUJJT1NfQkFEX1JFR0lTVEVSX05VTUJFUjsKPiAgCj4gIAlpZiAocGNpX2lzX3Jv b3RfYnVzKGJ1cy0+cGFyZW50KSkKPiBAQCAtMjA5LDExICsyMDgsMTEgQEAgc3RhdGljIGludCBy b2NrY2hpcF9wY2llX3dyX290aGVyX2NvbmYoc3RydWN0IHJvY2tjaGlwX3BjaWUgKnJvY2tjaGlw LAo+ICAJCQkJCQlBWElfV1JBUFBFUl9UWVBFMV9DRkcpOwo+ICAKPiAgCWlmIChzaXplID09IDQp Cj4gLQkJd3JpdGVsKHZhbCwgcm9ja2NoaXAtPnJlZ19iYXNlICsgYnVzZGV2KTsKPiArCQl3cml0 ZWwodmFsLCBhZGRyKTsKPiAgCWVsc2UgaWYgKHNpemUgPT0gMikKPiAtCQl3cml0ZXcodmFsLCBy b2NrY2hpcC0+cmVnX2Jhc2UgKyBidXNkZXYpOwo+ICsJCXdyaXRldyh2YWwsIGFkZHIpOwo+ICAJ ZWxzZSBpZiAoc2l6ZSA9PSAxKQo+IC0JCXdyaXRlYih2YWwsIHJvY2tjaGlwLT5yZWdfYmFzZSAr IGJ1c2Rldik7Cj4gKwkJd3JpdGViKHZhbCwgYWRkcik7Cj4gIAllbHNlCj4gIAkJcmV0dXJuIFBD SUJJT1NfQkFEX1JFR0lTVEVSX05VTUJFUjsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNp L2NvbnRyb2xsZXIvcGNpZS1yb2NrY2hpcC5oIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ll LXJvY2tjaGlwLmgKPiBpbmRleCBjN2QwMTc4ZmM4YzIuLjE2NTBhNTA4NzQ1MCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2NoaXAuaAo+ICsrKyBiL2RyaXZl cnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1yb2NrY2hpcC5oCj4gQEAgLTEzLDYgKzEzLDcgQEAKPiAg Cj4gICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgo+ ICsjaW5jbHVkZSA8bGludXgvcGNpLWVjYW0uaD4KPiAgCj4gIC8qCj4gICAqIFRoZSB1cHBlciAx NiBiaXRzIG9mIFBDSUVfQ0xJRU5UX0NPTkZJRyBhcmUgYSB3cml0ZSBtYXNrIGZvciB0aGUgbG93 ZXIgMTYKPiBAQCAtMTc4LDEzICsxNzksNiBAQAo+ICAjZGVmaW5lIE1JTl9BWElfQUREUl9CSVRT X1BBU1NFRAkJOAo+ICAjZGVmaW5lIFBDSUVfUkNfU0VORF9QTUVfT0ZGCQkJMHgxMTk2MAo+ICAj ZGVmaW5lIFJPQ0tDSElQX1ZFTkRPUl9JRAkJCTB4MWQ4Nwo+IC0jZGVmaW5lIFBDSUVfRUNBTV9C VVMoeCkJCQkoKCh4KSAmIDB4ZmYpIDw8IDIwKQo+IC0jZGVmaW5lIFBDSUVfRUNBTV9ERVYoeCkJ CQkoKCh4KSAmIDB4MWYpIDw8IDE1KQo+IC0jZGVmaW5lIFBDSUVfRUNBTV9GVU5DKHgpCQkJKCgo eCkgJiAweDcpIDw8IDEyKQo+IC0jZGVmaW5lIFBDSUVfRUNBTV9SRUcoeCkJCQkoKCh4KSAmIDB4 ZmZmKSA8PCAwKQo+IC0jZGVmaW5lIFBDSUVfRUNBTV9BRERSKGJ1cywgZGV2LCBmdW5jLCByZWcp IFwKPiAtCSAgKFBDSUVfRUNBTV9CVVMoYnVzKSB8IFBDSUVfRUNBTV9ERVYoZGV2KSB8IFwKPiAt CSAgIFBDSUVfRUNBTV9GVU5DKGZ1bmMpIHwgUENJRV9FQ0FNX1JFRyhyZWcpKQo+ICAjZGVmaW5l IFBDSUVfTElOS19JU19MMih4KSBcCj4gIAkoKCh4KSAmIFBDSUVfQ0xJRU5UX0RFQlVHX0xUU1NN X01BU0spID09IFBDSUVfQ0xJRU5UX0RFQlVHX0xUU1NNX0wyKQo+ICAjZGVmaW5lIFBDSUVfTElO S19VUCh4KSBcCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS10YW5n by5jIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXRhbmdvLmMKPiBpbmRleCBkMDkzYThj ZTRiYjEuLjhmMGQ2OTVhZmJkZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVy L3BjaWUtdGFuZ28uYwo+ICsrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS10YW5nby5j Cj4gQEAgLTIwOCw3ICsyMDgsNyBAQCBzdGF0aWMgaW50IHNtcDg3NTlfY29uZmlnX3dyaXRlKHN0 cnVjdCBwY2lfYnVzICpidXMsIHVuc2lnbmVkIGludCBkZXZmbiwKPiAgfQo+ICAKPiAgc3RhdGlj IGNvbnN0IHN0cnVjdCBwY2lfZWNhbV9vcHMgc21wODc1OV9lY2FtX29wcyA9IHsKPiAtCS5idXNf c2hpZnQJPSAyMCwKPiArCS5idXNfc2hpZnQJPSBQQ0lFX0VDQU1fQlVTX1NISUZULAo+ICAJLnBj aV9vcHMJPSB7Cj4gIAkJLm1hcF9idXMJPSBwY2lfZWNhbV9tYXBfYnVzLAo+ICAJCS5yZWFkCQk9 IHNtcDg3NTlfY29uZmlnX3JlYWQsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xs ZXIvcGNpZS14aWxpbngtbndsLmMgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUteGlsaW54 LW53bC5jCj4gaW5kZXggZjNjZjdkNjE5MjRmLi5jZmQxMmI3NWJhY2IgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXhpbGlueC1ud2wuYwo+ICsrKyBiL2RyaXZlcnMv cGNpL2NvbnRyb2xsZXIvcGNpZS14aWxpbngtbndsLmMKPiBAQCAtMTgsNiArMTgsNyBAQAo+ICAj aW5jbHVkZSA8bGludXgvb2ZfcGxhdGZvcm0uaD4KPiAgI2luY2x1ZGUgPGxpbnV4L29mX2lycS5o Pgo+ICAjaW5jbHVkZSA8bGludXgvcGNpLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9wY2ktZWNhbS5o Pgo+ICAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4gICNpbmNsdWRlIDxsaW51 eC9pcnFjaGlwL2NoYWluZWRfaXJxLmg+Cj4gIAo+IEBAIC0xMjQsOCArMTI1LDYgQEAKPiAgI2Rl ZmluZSBFX0VDQU1fQ1JfRU5BQkxFCQlCSVQoMCkKPiAgI2RlZmluZSBFX0VDQU1fU0laRV9MT0MJ CQlHRU5NQVNLKDIwLCAxNikKPiAgI2RlZmluZSBFX0VDQU1fU0laRV9TSElGVAkJMTYKPiAtI2Rl ZmluZSBFQ0FNX0JVU19MT0NfU0hJRlQJCTIwCj4gLSNkZWZpbmUgRUNBTV9ERVZfTE9DX1NISUZU CQkxMgo+ICAjZGVmaW5lIE5XTF9FQ0FNX1ZBTFVFX0RFRkFVTFQJCTEyCj4gIAo+ICAjZGVmaW5l IENGR19ETUFfUkVHX0JBUgkJCUdFTk1BU0soMiwgMCkKPiBAQCAtMjQwLDE1ICsyMzksMTEgQEAg c3RhdGljIHZvaWQgX19pb21lbSAqbndsX3BjaWVfbWFwX2J1cyhzdHJ1Y3QgcGNpX2J1cyAqYnVz LCB1bnNpZ25lZCBpbnQgZGV2Zm4sCj4gIAkJCQkgICAgICBpbnQgd2hlcmUpCj4gIHsKPiAgCXN0 cnVjdCBud2xfcGNpZSAqcGNpZSA9IGJ1cy0+c3lzZGF0YTsKPiAtCWludCByZWxidXM7Cj4gIAo+ ICAJaWYgKCFud2xfcGNpZV92YWxpZF9kZXZpY2UoYnVzLCBkZXZmbikpCj4gIAkJcmV0dXJuIE5V TEw7Cj4gIAo+IC0JcmVsYnVzID0gKGJ1cy0+bnVtYmVyIDw8IEVDQU1fQlVTX0xPQ19TSElGVCkg fAo+IC0JCQkoZGV2Zm4gPDwgRUNBTV9ERVZfTE9DX1NISUZUKTsKPiAtCj4gLQlyZXR1cm4gcGNp ZS0+ZWNhbV9iYXNlICsgcmVsYnVzICsgd2hlcmU7Cj4gKwlyZXR1cm4gcGNpZS0+ZWNhbV9iYXNl ICsgUENJRV9FQ0FNX09GRlNFVChidXMsIGRldmZuLCB3aGVyZSk7CgpEaXR0by4KCj4gIH0KPiAg Cj4gIC8qIFBDSWUgb3BlcmF0aW9ucyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250 cm9sbGVyL3BjaWUteGlsaW54LmMgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUteGlsaW54 LmMKPiBpbmRleCA4NTIzYmU2MWJiYTUuLjQ5YmRlNTI2NmFhMiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUteGlsaW54LmMKPiArKysgYi9kcml2ZXJzL3BjaS9jb250 cm9sbGVyL3BjaWUteGlsaW54LmMKPiBAQCAtMjEsNiArMjEsNyBAQAo+ICAjaW5jbHVkZSA8bGlu dXgvb2ZfcGxhdGZvcm0uaD4KPiAgI2luY2x1ZGUgPGxpbnV4L29mX2lycS5oPgo+ICAjaW5jbHVk ZSA8bGludXgvcGNpLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9wY2ktZWNhbS5oPgo+ICAjaW5jbHVk ZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4gIAo+ICAjaW5jbHVkZSAiLi4vcGNpLmgiCj4g QEAgLTg2LDEwICs4Nyw2IEBACj4gIC8qIFBoeSBTdGF0dXMvQ29udHJvbCBSZWdpc3RlciBkZWZp bml0aW9ucyAqLwo+ICAjZGVmaW5lIFhJTElOWF9QQ0lFX1JFR19QU0NSX0xOS1VQCUJJVCgxMSkK PiAgCj4gLS8qIEVDQU0gZGVmaW5pdGlvbnMgKi8KPiAtI2RlZmluZSBFQ0FNX0JVU19OVU1fU0hJ RlQJCTIwCj4gLSNkZWZpbmUgRUNBTV9ERVZfTlVNX1NISUZUCQkxMgo+IC0KPiAgLyogTnVtYmVy IG9mIE1TSSBJUlFzICovCj4gICNkZWZpbmUgWElMSU5YX05VTV9NU0lfSVJRUwkJMTI4Cj4gIAo+ IEBAIC0xODMsMTUgKzE4MCwxMSBAQCBzdGF0aWMgdm9pZCBfX2lvbWVtICp4aWxpbnhfcGNpZV9t YXBfYnVzKHN0cnVjdCBwY2lfYnVzICpidXMsCj4gIAkJCQkJIHVuc2lnbmVkIGludCBkZXZmbiwg aW50IHdoZXJlKQo+ICB7Cj4gIAlzdHJ1Y3QgeGlsaW54X3BjaWVfcG9ydCAqcG9ydCA9IGJ1cy0+ c3lzZGF0YTsKPiAtCWludCByZWxidXM7Cj4gIAo+ICAJaWYgKCF4aWxpbnhfcGNpZV92YWxpZF9k ZXZpY2UoYnVzLCBkZXZmbikpCj4gIAkJcmV0dXJuIE5VTEw7Cj4gIAo+IC0JcmVsYnVzID0gKGJ1 cy0+bnVtYmVyIDw8IEVDQU1fQlVTX05VTV9TSElGVCkgfAo+IC0JCSAoZGV2Zm4gPDwgRUNBTV9E RVZfTlVNX1NISUZUKTsKPiAtCj4gLQlyZXR1cm4gcG9ydC0+cmVnX2Jhc2UgKyByZWxidXMgKyB3 aGVyZTsKPiArCXJldHVybiBwb3J0LT5yZWdfYmFzZSArIFBDSUVfRUNBTV9PRkZTRVQoYnVzLCBk ZXZmbiwgd2hlcmUpOwoKQW5kIGhlcmUuICBCb3ksIHdlIHJlYWxseSBjYXJnby1jdWx0ZWQgdGhh dCAicmVsYnVzIiBuYW1lLCBldmVuIHdoZW4KdGhlcmUncyBubyAiYmFzZSIgdG8gYmUgcmVsYXRp dmUgdG8sIGRpZG4ndCB3ZT8KCj4gIH0KPiAgCj4gIC8qIFBDSWUgb3BlcmF0aW9ucyAqLwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3ZtZC5jIGIvZHJpdmVycy9wY2kvY29u dHJvbGxlci92bWQuYwo+IGluZGV4IGY2OWVmOGM4OWY3Mi4uYjE0NzUxODQ1MjYzIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvdm1kLmMKPiArKysgYi9kcml2ZXJzL3BjaS9j b250cm9sbGVyL3ZtZC5jCj4gQEAgLTExLDYgKzExLDcgQEAKPiAgI2luY2x1ZGUgPGxpbnV4L21v ZHVsZS5oPgo+ICAjaW5jbHVkZSA8bGludXgvbXNpLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9wY2ku aD4KPiArI2luY2x1ZGUgPGxpbnV4L3BjaS1lY2FtLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9zcmN1 Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9yY3VsaXN0Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9yY3Vw ZGF0ZS5oPgo+IEBAIC0zMDIsOCArMzAzLDggQEAgc3RhdGljIGNoYXIgX19pb21lbSAqdm1kX2Nm Z19hZGRyKHN0cnVjdCB2bWRfZGV2ICp2bWQsIHN0cnVjdCBwY2lfYnVzICpidXMsCj4gIAkJCQkg IHVuc2lnbmVkIGludCBkZXZmbiwgaW50IHJlZywgaW50IGxlbikKPiAgewo+ICAJY2hhciBfX2lv bWVtICphZGRyID0gdm1kLT5jZmdiYXIgKwo+IC0JCQkgICAgICgoYnVzLT5udW1iZXIgLSB2bWQt PmJ1c25fc3RhcnQpIDw8IDIwKSArCj4gLQkJCSAgICAgKGRldmZuIDw8IDEyKSArIHJlZzsKPiAr CQkJICAgICBQQ0lFX0VDQU1fQlVTKGJ1cy0+bnVtYmVyIC0gdm1kLT5idXNuX3N0YXJ0KSArCj4g KwkJCSAgICAgUENJRV9FQ0FNX0RFVkZOKGRldmZuKSArIFBDSUVfRUNBTV9SRUcocmVnKTsKCiAg UENJRV9FQ0FNX09GRlNFVChidXMtPm51bWJlciAtIHZtZC0+YnVzbl9zdGFydCwgLi4uKTsKCj4g IAlpZiAoKGFkZHIgLSB2bWQtPmNmZ2JhcikgKyBsZW4gPj0KPiAgCSAgICByZXNvdXJjZV9zaXpl KCZ2bWQtPmRldi0+cmVzb3VyY2VbVk1EX0NGR0JBUl0pKQoKTG9va3MgbGlrZSBzb3J0IG9mIGEg d2VpcmQgd2F5IHRvIGJvdW5kcyBjaGVjayB0aGlzLiAgTWF5YmUgdGhpcwppbnN0ZWFkPwoKICB1 MzIgb2Zmc2V0ID0gUENJRV9FQ0FNX09GRlNFVChidXMtPm51bWJlciAtIHZtZC0+YnVzbl9zdGFy dCwgLi4uKTsKCiAgaWYgKG9mZnNldCArIGxlbiA+PSByZXNvdXJjZV9zaXplKCZ2bWQtPmRldi0+ cmVzb3VyY2VbVk1EX0NGR0JBUl0pKQogICAgcmV0dXJuIE5VTEw7CgogIHJldHVybiB2bWQtPmNm Z2JhciArIG9mZnNldDsKCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2VjYW0uYyBiL2RyaXZl cnMvcGNpL2VjYW0uYwo+IGluZGV4IDhmMDY1YTQyZmMxYS4uZmZkMDEwMjkwMDg0IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvcGNpL2VjYW0uYwo+ICsrKyBiL2RyaXZlcnMvcGNpL2VjYW0uYwo+IEBA IC0xNDksNyArMTQ5LDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwocGNpX2VjYW1fbWFwX2J1cyk7Cj4g IAo+ICAvKiBFQ0FNIG9wcyAqLwo+ICBjb25zdCBzdHJ1Y3QgcGNpX2VjYW1fb3BzIHBjaV9nZW5l cmljX2VjYW1fb3BzID0gewo+IC0JLmJ1c19zaGlmdAk9IDIwLAo+ICsJLmJ1c19zaGlmdAk9IFBD SUVfRUNBTV9CVVNfU0hJRlQsCj4gIAkucGNpX29wcwk9IHsKPiAgCQkubWFwX2J1cwk9IHBjaV9l Y2FtX21hcF9idXMsCj4gIAkJLnJlYWQJCT0gcGNpX2dlbmVyaWNfY29uZmlnX3JlYWQsCj4gQEAg LTE2MSw3ICsxNjEsNyBAQCBFWFBPUlRfU1lNQk9MX0dQTChwY2lfZ2VuZXJpY19lY2FtX29wcyk7 Cj4gICNpZiBkZWZpbmVkKENPTkZJR19BQ1BJKSAmJiBkZWZpbmVkKENPTkZJR19QQ0lfUVVJUktT KQo+ICAvKiBFQ0FNIG9wcyBmb3IgMzItYml0IGFjY2VzcyBvbmx5IChub24tY29tcGxpYW50KSAq Lwo+ICBjb25zdCBzdHJ1Y3QgcGNpX2VjYW1fb3BzIHBjaV8zMmJfb3BzID0gewo+IC0JLmJ1c19z aGlmdAk9IDIwLAo+ICsJLmJ1c19zaGlmdAk9IFBDSUVfRUNBTV9CVVNfU0hJRlQsCj4gIAkucGNp X29wcwk9IHsKPiAgCQkubWFwX2J1cwk9IHBjaV9lY2FtX21hcF9idXMsCj4gIAkJLnJlYWQJCT0g cGNpX2dlbmVyaWNfY29uZmlnX3JlYWQzMiwKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9w Y2ktZWNhbS5oIGIvaW5jbHVkZS9saW51eC9wY2ktZWNhbS5oCj4gaW5kZXggMWFmNWNiMDJlZjdm Li4zY2E1Njc0ZmRmNWUgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9saW51eC9wY2ktZWNhbS5oCj4g KysrIGIvaW5jbHVkZS9saW51eC9wY2ktZWNhbS5oCj4gQEAgLTksNiArOSwzMCBAQAo+ICAjaW5j bHVkZSA8bGludXgva2VybmVsLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2Uu aD4KPiAgCj4gKy8qCj4gKyAqIE1lbW9yeSBhZGRyZXNzIHNoaWZ0IHZhbHVlcyBmb3IgdGhlIGJ5 dGUtbGV2ZWwgYWRkcmVzcyB0aGF0Cj4gKyAqIGNhbiBiZSB1c2VkIHdoZW4gYWNjZXNzaW5nIHRo ZSBQQ0kgRXhwcmVzcyBDb25maWd1cmF0aW9uIFNwYWNlLgo+ICsgKi8KPiArCj4gKy8qCj4gKyAq IEVuaGFuY2VkIENvbmZpZ3VyYXRpb24gQWNjZXNzIE1lY2hhbmlzbSAoRUNBTSkKPiArICoKPiAr ICogU2VlIFBDSSBFeHByZXNzIEJhc2UgU3BlY2lmaWNhdGlvbiwgUmV2aXNpb24gNS4wLCBWZXJz aW9uIDEuMCwKPiArICogU2VjdGlvbiA3LjIuMiwgVGFibGUgNy0xLCBwLiA2NzcuCj4gKyAqLwo+ ICsjZGVmaW5lIFBDSUVfRUNBTV9CVVNfU0hJRlQJMjAgLyogQnVzIE51bWJlciAqLwo+ICsjZGVm aW5lIFBDSUVfRUNBTV9ERVZfU0hJRlQJMTUgLyogRGV2aWNlIE51bWJlciAqLwo+ICsjZGVmaW5l IFBDSUVfRUNBTV9GVU5fU0hJRlQJMTIgLyogRnVuY3Rpb24gTnVtYmVyICovCj4gKwo+ICsjZGVm aW5lIFBDSUVfRUNBTV9CVVMoeCkJKCgoeCkgJiAweGZmKSA8PCBQQ0lFX0VDQU1fQlVTX1NISUZU KQo+ICsjZGVmaW5lIFBDSUVfRUNBTV9ERVZGTih4KQkoKCh4KSAmIDB4ZmYpIDw8IFBDSUVfRUNB TV9GVU5fU0hJRlQpCj4gKyNkZWZpbmUgUENJRV9FQ0FNX1JFRyh4KQkoKHgpICYgMHhmZmYpCj4g Kwo+ICsjZGVmaW5lIFBDSUVfRUNBTV9PRkZTRVQoYnVzLCBkZXZmbiwgd2hlcmUpIFwKPiArICAg IChQQ0lFX0VDQU1fQlVTKGJ1cy0+bnVtYmVyKSB8IFwKCklmIHlvdSB1c2UgIlBDSUVfRUNBTV9C VVMoYnVzKSIgaGVyZSBzbyB0aGUgY2FsbGVyIGRvZXMgdGhlCiJidXMtPm51bWJlciIgcGFydCwg dGhpcyB3aWxsIGJlIHVzYWJsZSBpbiBhIGZldyBtb3JlIHBsYWNlcy4KCj4gKyAgICAgUENJRV9F Q0FNX0RFVkZOKGRldmZuKSB8IFwKPiArICAgICBQQ0lFX0VDQU1fUkVHKHdoZXJlKSkKPiArCj4g IC8qCj4gICAqIHN0cnVjdCB0byBob2xkIHBjaSBvcHMgYW5kIGJ1cyBzaGlmdCBvZiB0aGUgY29u ZmlnIHdpbmRvdwo+ICAgKiBmb3IgYSBQQ0kgY29udHJvbGxlci4KPiAtLSAKPiAyLjI4LjAKPiAK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFy bS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9y ZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1r ZXJuZWwK