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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0BE57C433F5 for ; Thu, 29 Sep 2022 14:06:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Pp+jjXTmBSu9XfsSRuaO2u8ZKLVrhwiaccOeQUvna3U=; b=kNe1S1gmLnArUe OXO+fLVisZFgmF1mUEx9C8JLZQ6WG/Wc6Y5g/M5q4iDEQmkl/IIbGjDKgUqKQsune8dVf9aRrI0HI M8RQbof+agt/cfi4JD7zeHXLdqj1WGynq3FLCdv+On1xtkCc2Xjzbq8jFkLViJQsiK0ja6NCGWr0m 45YI80PibNblK4F85YLRyKtBSiXWLdfCYiv5ge0koqxX24xPOApD6zhJbcoG9Ux2dCwvIERP1GAsc yJQTlQodBPNB7Ty6FM+rQCdBlLqmgT0rSDAe4ogE2rkCJHByMQj+fSFwe7vHcnPBJZuNwMrfJCb5o hiEf8lPxQMN3uvbv7TnQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oduAB-003RqJ-AZ; Thu, 29 Sep 2022 14:05:19 +0000 Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oduA7-003RpH-BP for linux-arm-kernel@lists.infradead.org; Thu, 29 Sep 2022 14:05:18 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 433F7614C1; Thu, 29 Sep 2022 14:05:14 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4BD66C433B5; Thu, 29 Sep 2022 14:05:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1664460313; bh=FAdzk8HSNOF0VXm0t5xaEQGkkF3OaFXH4jj1o6wvWzo=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=DzLSwgFu/O7sub4ikAKc1KonGeSulAoAOoglry+n4QlQCy4WXiKwicxCYBQVIidze fueyjZflTNOHe00/uhv6Bu6spQQPcI5F6tmmjqJ7pXwUUWuj9MiK4WJDE5JRlaxp86 toZNHWFyWqySeJ4tu4ABqzFk+CBZ/FDBFs65qRLN+70zc3eLjPp2yFJ9DsgxQp06Jc jLwfGntQScB8cTf4ftWnE0nHQtgaDNOKKqMM4qWq2HMFKi4Lr/230uUF1dabJPNpqL /1r9fKgeAuoVqkjRQfNxpyHQ7jTj+8K3SXvf6rxggcCctAWV0f2kpDRTYBkyH4F5kn cm/sNtG9MuwaQ== Received: by pali.im (Postfix) id 3447976A; Thu, 29 Sep 2022 16:05:10 +0200 (CEST) Date: Thu, 29 Sep 2022 16:05:10 +0200 From: Pali =?utf-8?B?Um9ow6Fy?= To: Lorenzo Pieralisi , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Bjorn Helgaas , Rob Herring , Andrew Lunn , Sebastian Hesselbarth , Gregory Clement , Thomas Petazzoni , kabel@kernel.org Cc: linux-pci@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH 2/4] PCI: mvebu: Implement support for interrupts on emulated bridge Message-ID: <20220929140510.ib2akodamg4b62mp@pali> References: <20220817230036.817-1-pali@kernel.org> <20220817230036.817-3-pali@kernel.org> <20220830123639.4zpvvvlrsaqs2rls@pali> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20220830123639.4zpvvvlrsaqs2rls@pali> User-Agent: NeoMutt/20180716 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220929_070515_522351_0148F71E X-CRM114-Status: GOOD ( 53.78 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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 SGVsbG8hCgpHZW50bGUgcmVtaW5kZXIgZm9yIHRoaXMgcGF0Y2guIEl0IGlzIHdhaXRpbmcgdGhl cmUgZm9yIG1vcmUgdGhhbiBtb250aAphbmQgb3RoZXIgcGF0Y2hlcyBmcm9tIHRoaXMgcGF0Y2gg c2VyaWVzIHdlcmUgYWxyZWFkeSByZXZpZXdlZCBhbmQgbWVyZ2VkLgpDb3VsZCB5b3UgcGxlYXNl IGxvb2sgYXQgaXQ/CgpBcyBzdGF0ZWQgaW4gY29tbWl0IG1lc3NhZ2UgdGhpcyBwYXRjaCBhZGRz IHN1cHBvcnQgZm9yIFBDSWUgQUVSIHRvCnBjaS1tdmVidS5jIGFuZCBhcyB3ZSBrbm93IEFFUiBy ZXF1aXJlZCBmb3IgZGVidWdnaW5nIGFueSBQQ0llIGVuZHBvaW50Cmlzc3Vlcy4KCk9uIFR1ZXNk YXkgMzAgQXVndXN0IDIwMjIgMTQ6MzY6MzkgUGFsaSBSb2jDoXIgd3JvdGU6Cj4gT24gVGh1cnNk YXkgMTggQXVndXN0IDIwMjIgMDE6MDA6MzQgUGFsaSBSb2jDoXIgd3JvdGU6Cj4gPiBUaGlzIGFk ZHMgc3VwcG9ydCBmb3IgUE1FIGFuZCBFUlIgaW50ZXJydXB0cyByZXBvcnRlZCBieSBlbXVsYXRl ZCBicmlkZ2UKPiA+IChmb3IgUE1FIGFuZCBBRVIga2VybmVsIGRyaXZlcnMpIHZpYSBuZXcgUm9v dCBQb3J0IGlycSBjaGlwIGFzIHRoZXNlCj4gPiBpbnRlcnJ1cHRzIGZyb20gUENJZSBSb290IFBv cnRzIGFyZSBoYW5kbGVkIGJ5IG12ZWJ1IGhhcmR3YXJlIGNvbXBsZXRlbHkKPiA+IHNlcGFyYXRl bHkgZnJvbSBJTlR4IGFuZCBNU0kgaW50ZXJydXB0cyBzZW5kIGJ5IHJlYWwgUENJZSBkZXZpY2Vz Lgo+ID4gCj4gPiBXaXRoIHRoaXMgY2hhbmdlLCBrZXJuZWwgUE1FIGFuZCBBRVIgZHJpdmVycyBz dGFydCB3b3JraW5nIGFzIHRoZXkgY2FuCj4gPiBhY3F1aXJlIHJlcXVpcmVkIGludGVycnVwdCBs aW5lcyAocHJvdmlkZWQgYnkgbXZlYnUgcnAgdmlydHVhbCBpcnEgY2hpcCkuCj4gPiAKPiA+IE5v dGUgdGhhdCBmb3IgdGhpcyBzdXBwb3J0LCBkZXZpY2UgdHJlZSBmaWxlcyBoYXMgdG8gYmUgcHJv cGVybHkgYWRqdXN0ZWQKPiA+IHRvIHByb3ZpZGUgImludGVycnVwdHMiIG9yICJpbnRlcnJ1cHRz LWV4dGVuZGVkIiBwcm9wZXJ0eSB3aXRoIGVycm9yCj4gPiBpbnRlcnJ1cHQgc291cmNlIGFuZCAi aW50ZXJydXB0LW5hbWVzIiBwcm9wZXJ0eSB3aXRoICJlcnJvciIgc3RyaW5nLgo+ID4gCj4gPiBJ ZiBkZXZpY2UgdHJlZSBmaWxlcyBkbyBub3QgcHJvdmlkZSB0aGVzZSBwcm9wZXJ0aWVzIHRoZW4g ZHJpdmVyIHdvdWxkIHdvcmsKPiA+IGFzIGJlZm9yZSBhbmQgd291bGQgbm90IHByb3ZpZGUgaW50 ZXJydXB0cyBvbiBlbXVsYXRlZCBicmlkZ2UsIGxpa2UgYmVmb3JlLgo+ID4gCj4gPiBTaWduZWQt b2ZmLWJ5OiBQYWxpIFJvaMOhciA8cGFsaUBrZXJuZWwub3JnPgo+ID4gLS0tCj4gCj4gSnVzdCB0 byBub3RlIHRoYXQgYmVjYXVzZSB0aGVzZSBlcnJvciBpbnRlcnJ1cHRzIGFyZSBzaGFyZWQgb24g c29tZQo+IG12ZWJ1IHBsYXRmb3JtcywgdGhpcyBwYXRjaCBkZXBlbmRzIG9uIGFub3RoZXIgcGF0 Y2ggd2hpY2ggY29udmVydAo+IGRyaXZlciB0byBkZXZtX3JlcXVlc3RfaXJxKCkgYW5kIHdoaWNo IEkgc2VudCBtb3JlIG1vbnRocyBiZWZvcmU6Cj4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGlu dXgtcGNpLzIwMjIwNTI0MTIyODE3LjcxOTktMS1wYWxpQGtlcm5lbC5vcmcvCj4gCj4gPiAgZHJp dmVycy9wY2kvY29udHJvbGxlci9wY2ktbXZlYnUuYyB8IDI1NiArKysrKysrKysrKysrKysrKysr KysrKysrKy0tLQo+ID4gIDEgZmlsZSBjaGFuZ2VkLCAyMzcgaW5zZXJ0aW9ucygrKSwgMTkgZGVs ZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3Bj aS1tdmVidS5jIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktbXZlYnUuYwo+ID4gaW5kZXgg NTRjZTVkNDNiNjk1Li5lNjliZGFhOGRlNDMgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL3BjaS9j b250cm9sbGVyL3BjaS1tdmVidS5jCj4gPiArKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3Bj aS1tdmVidS5jCj4gPiBAQCAtNTYsOCArNTYsMTYgQEAKPiA+ICAjZGVmaW5lIFBDSUVfQ09ORl9E QVRBX09GRgkweDE4ZmMKPiA+ICAjZGVmaW5lIFBDSUVfSU5UX0NBVVNFX09GRgkweDE5MDAKPiA+ ICAjZGVmaW5lIFBDSUVfSU5UX1VOTUFTS19PRkYJMHgxOTEwCj4gPiArI2RlZmluZSAgUENJRV9J TlRfREVUX0NPUgkJQklUKDgpCj4gPiArI2RlZmluZSAgUENJRV9JTlRfREVUX05PTkZBVEFMCQlC SVQoOSkKPiA+ICsjZGVmaW5lICBQQ0lFX0lOVF9ERVRfRkFUQUwJCUJJVCgxMCkKPiA+ICsjZGVm aW5lICBQQ0lFX0lOVF9FUlJfRkFUQUwJCUJJVCgxNikKPiA+ICsjZGVmaW5lICBQQ0lFX0lOVF9F UlJfTk9ORkFUQUwJCUJJVCgxNykKPiA+ICsjZGVmaW5lICBQQ0lFX0lOVF9FUlJfQ09SCQlCSVQo MTgpCj4gPiAgI2RlZmluZSAgUENJRV9JTlRfSU5UWChpKQkJQklUKDI0K2kpCj4gPiAgI2RlZmlu ZSAgUENJRV9JTlRfUE1fUE1FCQlCSVQoMjgpCj4gPiArI2RlZmluZSAgUENJRV9JTlRfREVUX01B U0sJCShQQ0lFX0lOVF9ERVRfQ09SIHwgUENJRV9JTlRfREVUX05PTkZBVEFMIHwgUENJRV9JTlRf REVUX0ZBVEFMKQo+ID4gKyNkZWZpbmUgIFBDSUVfSU5UX0VSUl9NQVNLCQkoUENJRV9JTlRfRVJS X0ZBVEFMIHwgUENJRV9JTlRfRVJSX05PTkZBVEFMIHwgUENJRV9JTlRfRVJSX0NPUikKPiA+ICAj ZGVmaW5lICBQQ0lFX0lOVF9BTExfTUFTSwkJR0VOTUFTSygzMSwgMCkKPiA+ICAjZGVmaW5lIFBD SUVfQ1RSTF9PRkYJCTB4MWEwMAo+ID4gICNkZWZpbmUgIFBDSUVfQ1RSTF9YMV9NT0RFCQkweDAw MDEKPiA+IEBAIC0xMjAsOSArMTI4LDEyIEBAIHN0cnVjdCBtdmVidV9wY2llX3BvcnQgewo+ID4g IAlzdHJ1Y3QgcmVzb3VyY2UgcmVnczsKPiA+ICAJdTggc2xvdF9wb3dlcl9saW1pdF92YWx1ZTsK PiA+ICAJdTggc2xvdF9wb3dlcl9saW1pdF9zY2FsZTsKPiA+ICsJc3RydWN0IGlycV9kb21haW4g KnJwX2lycV9kb21haW47Cj4gPiAgCXN0cnVjdCBpcnFfZG9tYWluICppbnR4X2lycV9kb21haW47 Cj4gPiAgCXJhd19zcGlubG9ja190IGlycV9sb2NrOwo+ID4gKwlpbnQgZXJyb3JfaXJxOwo+ID4g IAlpbnQgaW50eF9pcnE7Cj4gPiArCWJvb2wgcG1lX3BlbmRpbmc7Cj4gPiAgfTsKPiA+ICAKPiA+ ICBzdGF0aWMgaW5saW5lIHZvaWQgbXZlYnVfd3JpdGVsKHN0cnVjdCBtdmVidV9wY2llX3BvcnQg KnBvcnQsIHUzMiB2YWwsIHUzMiByZWcpCj4gPiBAQCAtMzIxLDkgKzMzMiwxOSBAQCBzdGF0aWMg dm9pZCBtdmVidV9wY2llX3NldHVwX2h3KHN0cnVjdCBtdmVidV9wY2llX3BvcnQgKnBvcnQpCj4g PiAgCS8qIENsZWFyIGFsbCBpbnRlcnJ1cHQgY2F1c2VzLiAqLwo+ID4gIAltdmVidV93cml0ZWwo cG9ydCwgflBDSUVfSU5UX0FMTF9NQVNLLCBQQ0lFX0lOVF9DQVVTRV9PRkYpOwo+ID4gIAo+ID4g LQkvKiBDaGVjayBpZiAiaW50eCIgaW50ZXJydXB0IHdhcyBzcGVjaWZpZWQgaW4gRFQuICovCj4g PiAtCWlmIChwb3J0LT5pbnR4X2lycSA+IDApCj4gPiAtCQlyZXR1cm47Cj4gPiArCS8qCj4gPiAr CSAqIFVubWFzayBhbGwgZXJyb3IgaW50ZXJydXB0cyB3aGljaCBhcmUgaW50ZXJuYWxseSBnZW5l cmF0ZWQuCj4gPiArCSAqIFRoZXkgY2Fubm90IGJlIGRpc2FibGVkIGJ5IFNFUlIjIEVuYWJsZSBi aXQgaW4gUENJIENvbW1hbmQgcmVnaXN0ZXIsCj4gPiArCSAqIHNlZSBGaWd1cmUgNi0zOiBQc2V1 ZG8gTG9naWMgRGlhZ3JhbSBmb3IgRXJyb3IgTWVzc2FnZSBDb250cm9scyBpbgo+ID4gKwkgKiBQ Q0llIGJhc2Ugc3BlY2lmaWNhdGlvbi4KPiA+ICsJICogSW50ZXJuYWxseSBnZW5lcmF0ZWQgbXZl YnUgaW50ZXJydXB0cyBhcmUgcmVwb3J0ZWQgdmlhIG12ZWJ1IHN1bW1hcnkKPiA+ICsJICogaW50 ZXJydXB0IHdoaWNoIHJlcXVpcmVzICJlcnJvciIgaW50ZXJydXB0IHRvIGJlIHNwZWNpZmllZCBp biBEVC4KPiA+ICsJICovCj4gPiArCWlmIChwb3J0LT5lcnJvcl9pcnEgPiAwKSB7Cj4gPiArCQl1 bm1hc2sgPSBtdmVidV9yZWFkbChwb3J0LCBQQ0lFX0lOVF9VTk1BU0tfT0ZGKTsKPiA+ICsJCXVu bWFzayB8PSBQQ0lFX0lOVF9ERVRfTUFTSzsKPiA+ICsJCW12ZWJ1X3dyaXRlbChwb3J0LCB1bm1h c2ssIFBDSUVfSU5UX1VOTUFTS19PRkYpOwo+ID4gKwl9Cj4gPiAgCj4gPiAgCS8qCj4gPiAgCSAq IEZhbGxiYWNrIGNvZGUgd2hlbiAiaW50eCIgaW50ZXJydXB0IHdhcyBub3Qgc3BlY2lmaWVkIGlu IERUOgo+ID4gQEAgLTMzNSwxMCArMzU2LDEyIEBAIHN0YXRpYyB2b2lkIG12ZWJ1X3BjaWVfc2V0 dXBfaHcoc3RydWN0IG12ZWJ1X3BjaWVfcG9ydCAqcG9ydCkKPiA+ICAJICogcGVyZm9ybWFuY2Ug cGVuYWx0eSBhcyBldmVyeSBQQ0llIGludGVycnVwdCBoYW5kbGVyIG5lZWRzIHRvIGJlCj4gPiAg CSAqIGNhbGxlZCB3aGVuIHNvbWUgaW50ZXJydXB0IGlzIHRyaWdnZXJlZC4KPiA+ICAJICovCj4g PiAtCXVubWFzayA9IG12ZWJ1X3JlYWRsKHBvcnQsIFBDSUVfSU5UX1VOTUFTS19PRkYpOwo+ID4g LQl1bm1hc2sgfD0gUENJRV9JTlRfSU5UWCgwKSB8IFBDSUVfSU5UX0lOVFgoMSkgfAo+ID4gLQkJ ICBQQ0lFX0lOVF9JTlRYKDIpIHwgUENJRV9JTlRfSU5UWCgzKTsKPiA+IC0JbXZlYnVfd3JpdGVs KHBvcnQsIHVubWFzaywgUENJRV9JTlRfVU5NQVNLX09GRik7Cj4gPiArCWlmIChwb3J0LT5pbnR4 X2lycSA8PSAwKSB7Cj4gPiArCQl1bm1hc2sgPSBtdmVidV9yZWFkbChwb3J0LCBQQ0lFX0lOVF9V Tk1BU0tfT0ZGKTsKPiA+ICsJCXVubWFzayB8PSBQQ0lFX0lOVF9JTlRYKDApIHwgUENJRV9JTlRf SU5UWCgxKSB8Cj4gPiArCQkJICBQQ0lFX0lOVF9JTlRYKDIpIHwgUENJRV9JTlRfSU5UWCgzKTsK PiA+ICsJCW12ZWJ1X3dyaXRlbChwb3J0LCB1bm1hc2ssIFBDSUVfSU5UX1VOTUFTS19PRkYpOwo+ ID4gKwl9Cj4gPiAgfQo+ID4gIAo+ID4gIHN0YXRpYyBzdHJ1Y3QgbXZlYnVfcGNpZV9wb3J0ICpt dmVidV9wY2llX2ZpbmRfcG9ydChzdHJ1Y3QgbXZlYnVfcGNpZSAqcGNpZSwKPiA+IEBAIC02MDMs MTEgKzYyNiwxNiBAQCBtdmVidV9wY2lfYnJpZGdlX2VtdWxfYmFzZV9jb25mX3JlYWQoc3RydWN0 IHBjaV9icmlkZ2VfZW11bCAqYnJpZGdlLAo+ID4gIAljYXNlIFBDSV9JTlRFUlJVUFRfTElORTog ewo+ID4gIAkJLyoKPiA+ICAJCSAqIEZyb20gdGhlIHdob2xlIDMyYml0IHJlZ2lzdGVyIHdlIHN1 cHBvcnQgcmVhZGluZyBmcm9tIEhXIG9ubHkKPiA+IC0JCSAqIG9uZSBiaXQ6IFBDSV9CUklER0Vf Q1RMX0JVU19SRVNFVC4KPiA+ICsJCSAqIHR3byBiaXRzOiBQQ0lfQlJJREdFX0NUTF9CVVNfUkVT RVQgYW5kIFBDSV9CUklER0VfQ1RMX1NFUlIuCj4gPiAgCQkgKiBPdGhlciBiaXRzIGFyZSByZXRy aWV2ZWQgb25seSBmcm9tIGVtdWxhdGVkIGNvbmZpZyBidWZmZXIuCj4gPiAgCQkgKi8KPiA+ICAJ CV9fbGUzMiAqY2Znc3BhY2UgPSAoX19sZTMyICopJmJyaWRnZS0+Y29uZjsKPiA+ICAJCXUzMiB2 YWwgPSBsZTMyX3RvX2NwdShjZmdzcGFjZVtQQ0lfSU5URVJSVVBUX0xJTkUgLyA0XSk7Cj4gPiAr CQlpZiAoKG12ZWJ1X3JlYWRsKHBvcnQsIFBDSUVfSU5UX1VOTUFTS19PRkYpICYKPiA+ICsJCSAg ICAgIFBDSUVfSU5UX0VSUl9NQVNLKSA9PSBQQ0lFX0lOVF9FUlJfTUFTSykKPiA+ICsJCQl2YWwg fD0gUENJX0JSSURHRV9DVExfU0VSUiA8PCAxNjsKPiA+ICsJCWVsc2UKPiA+ICsJCQl2YWwgJj0g fihQQ0lfQlJJREdFX0NUTF9TRVJSIDw8IDE2KTsKPiA+ICAJCWlmIChtdmVidV9yZWFkbChwb3J0 LCBQQ0lFX0NUUkxfT0ZGKSAmIFBDSUVfQ1RSTF9NQVNURVJfSE9UX1JFU0VUKQo+ID4gIAkJCXZh bCB8PSBQQ0lfQlJJREdFX0NUTF9CVVNfUkVTRVQgPDwgMTY7Cj4gPiAgCQllbHNlCj4gPiBAQCAt Njc1LDYgKzcwMywxMSBAQCBtdmVidV9wY2lfYnJpZGdlX2VtdWxfcGNpZV9jb25mX3JlYWQoc3Ry dWN0IHBjaV9icmlkZ2VfZW11bCAqYnJpZGdlLAo+ID4gIAkJYnJlYWs7Cj4gPiAgCX0KPiA+ICAK PiA+ICsJY2FzZSBQQ0lfRVhQX1JUQ1RMOgo+ID4gKwkJKnZhbHVlID0gKG12ZWJ1X3JlYWRsKHBv cnQsIFBDSUVfSU5UX1VOTUFTS19PRkYpICYKPiA+ICsJCQkgIFBDSUVfSU5UX1BNX1BNRSkgPyBQ Q0lfRVhQX1JUQ1RMX1BNRUlFIDogMDsKPiA+ICsJCWJyZWFrOwo+ID4gKwo+ID4gIAljYXNlIFBD SV9FWFBfUlRTVEE6Cj4gPiAgCQkqdmFsdWUgPSBtdmVidV9yZWFkbChwb3J0LCBQQ0lFX1JDX1JU U1RBKTsKPiA+ICAJCWJyZWFrOwo+ID4gQEAgLTc4MCw2ICs4MTMsMTQgQEAgbXZlYnVfcGNpX2Jy aWRnZV9lbXVsX2Jhc2VfY29uZl93cml0ZShzdHJ1Y3QgcGNpX2JyaWRnZV9lbXVsICpicmlkZ2Us Cj4gPiAgCQlicmVhazsKPiA+ICAKPiA+ICAJY2FzZSBQQ0lfSU5URVJSVVBUX0xJTkU6Cj4gPiAr CQlpZiAoKG1hc2sgJiAoUENJX0JSSURHRV9DVExfU0VSUiA8PCAxNikpICYmIHBvcnQtPmVycm9y X2lycSA+IDApIHsKPiA+ICsJCQl1MzIgdW5tYXNrID0gbXZlYnVfcmVhZGwocG9ydCwgUENJRV9J TlRfVU5NQVNLX09GRik7Cj4gPiArCQkJaWYgKG5ldyAmIChQQ0lfQlJJREdFX0NUTF9TRVJSIDw8 IDE2KSkKPiA+ICsJCQkJdW5tYXNrIHw9IFBDSUVfSU5UX0VSUl9NQVNLOwo+ID4gKwkJCWVsc2UK PiA+ICsJCQkJdW5tYXNrICY9IH5QQ0lFX0lOVF9FUlJfTUFTSzsKPiA+ICsJCQltdmVidV93cml0 ZWwocG9ydCwgdW5tYXNrLCBQQ0lFX0lOVF9VTk1BU0tfT0ZGKTsKPiA+ICsJCX0KPiA+ICAJCWlm IChtYXNrICYgKFBDSV9CUklER0VfQ1RMX0JVU19SRVNFVCA8PCAxNikpIHsKPiA+ICAJCQl1MzIg Y3RybCA9IG12ZWJ1X3JlYWRsKHBvcnQsIFBDSUVfQ1RSTF9PRkYpOwo+ID4gIAkJCWlmIChuZXcg JiAoUENJX0JSSURHRV9DVExfQlVTX1JFU0VUIDw8IDE2KSkKPiA+IEBAIC04MzgsMTAgKzg3OSwy NSBAQCBtdmVidV9wY2lfYnJpZGdlX2VtdWxfcGNpZV9jb25mX3dyaXRlKHN0cnVjdCBwY2lfYnJp ZGdlX2VtdWwgKmJyaWRnZSwKPiA+ICAJCSAqIFBNRSBTdGF0dXMgYml0IGluIFJvb3QgU3RhdHVz IFJlZ2lzdGVyIChQQ0lFX1JDX1JUU1RBKQo+ID4gIAkJICogaXMgcmVhZC1vbmx5IGFuZCBjYW4g YmUgY2xlYXJlZCBvbmx5IGJ5IHdyaXRpbmcgMGIgdG8gdGhlCj4gPiAgCQkgKiBJbnRlcnJ1cHQg Q2F1c2UgUlcwQyByZWdpc3RlciAoUENJRV9JTlRfQ0FVU0VfT0ZGKS4gU28KPiA+IC0JCSAqIGNs ZWFyIFBNRSB2aWEgSW50ZXJydXB0IENhdXNlLgo+ID4gKwkJICogY2xlYXIgUE1FIHZpYSBJbnRl cnJ1cHQgQ2F1c2UgYW5kIGFsc28gc2V0IHBvcnQtPnBtZV9wZW5kaW5nCj4gPiArCQkgKiB2YXJp YWJsZSB0byBmYWxzZSB2YWx1ZSB0byBzdGFydCBwcm9jZXNzaW5nIFBNRSBpbnRlcnJ1cHRzCj4g PiArCQkgKiBpbiBpbnRlcnJ1cHQgaGFuZGxlciBhZ2Fpbi4KPiA+ICAJCSAqLwo+ID4gLQkJaWYg KG5ldyAmIFBDSV9FWFBfUlRTVEFfUE1FKQo+ID4gKwkJaWYgKG5ldyAmIFBDSV9FWFBfUlRTVEFf UE1FKSB7Cj4gPiAgCQkJbXZlYnVfd3JpdGVsKHBvcnQsIH5QQ0lFX0lOVF9QTV9QTUUsIFBDSUVf SU5UX0NBVVNFX09GRik7Cj4gPiArCQkJcG9ydC0+cG1lX3BlbmRpbmcgPSBmYWxzZTsKPiA+ICsJ CX0KPiA+ICsJCWJyZWFrOwo+ID4gKwo+ID4gKwljYXNlIFBDSV9FWFBfUlRDVEw6Cj4gPiArCQlp ZiAoKG1hc2sgJiBQQ0lfRVhQX1JUQ1RMX1BNRUlFKSAmJiBwb3J0LT5lcnJvcl9pcnEgPiAwKSB7 Cj4gPiArCQkJdTMyIHVubWFzayA9IG12ZWJ1X3JlYWRsKHBvcnQsIFBDSUVfSU5UX1VOTUFTS19P RkYpOwo+ID4gKwkJCWlmIChuZXcgJiBQQ0lfRVhQX1JUQ1RMX1BNRUlFKQo+ID4gKwkJCQl1bm1h c2sgfD0gUENJRV9JTlRfUE1fUE1FOwo+ID4gKwkJCWVsc2UKPiA+ICsJCQkJdW5tYXNrICY9IH5Q Q0lFX0lOVF9QTV9QTUU7Cj4gPiArCQkJbXZlYnVfd3JpdGVsKHBvcnQsIHVubWFzaywgUENJRV9J TlRfVU5NQVNLX09GRik7Cj4gPiArCQl9Cj4gPiAgCQlicmVhazsKPiA+ICAKPiA+ICAJY2FzZSBQ Q0lfRVhQX0RFVkNUTDI6Cj4gPiBAQCAtOTI0LDYgKzk4MCwxNCBAQCBzdGF0aWMgaW50IG12ZWJ1 X3BjaV9icmlkZ2VfZW11bF9pbml0KHN0cnVjdCBtdmVidV9wY2llX3BvcnQgKnBvcnQpCj4gPiAg CQlicmlkZ2VfZmxhZ3MgfD0gUENJX0JSSURHRV9FTVVMX05PX0lPX0ZPUldBUkQ7Cj4gPiAgCX0K PiA+ICAKPiA+ICsJLyoKPiA+ICsJICogSW50ZXJydXB0cyBvbiBlbXVsYXRlZCBicmlkZ2UgYXJl IHN1cHBvcnRlZCBvbmx5IHdoZW4gImVycm9yIgo+ID4gKwkgKiBpbnRlcnJ1cHQgd2FzIHNwZWNp ZmllZCBpbiBEVC4gV2l0aG91dCBpdCBlbXVsYXRlZCBicmlkZ2UgY2Fubm90Cj4gPiArCSAqIGVt dWxhdGUgaW50ZXJydXB0cy4KPiA+ICsJICovCj4gPiArCWlmIChwb3J0LT5lcnJvcl9pcnEgPiAw KQo+ID4gKwkJYnJpZGdlLT5jb25mLmludHBpbiA9IFBDSV9JTlRFUlJVUFRfSU5UQTsKPiA+ICsK PiA+ICAJLyoKPiA+ICAJICogT2xkZXIgbXZlYnUgaGFyZHdhcmUgcHJvdmlkZXMgUENJZSBDYXBh YmlsaXR5IHN0cnVjdHVyZSBvbmx5IGluCj4gPiAgCSAqIHZlcnNpb24gMS4gTmV3IGhhcmR3YXJl IHByb3ZpZGVzIGl0IGluIHZlcnNpb24gMi4KPiA+IEBAIC0xMDcyLDYgKzExMzYsMjYgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBpcnFfZG9tYWluX29wcyBtdmVidV9wY2llX2ludHhfaXJxX2RvbWFp bl9vcHMgPSB7Cj4gPiAgCS54bGF0ZSA9IGlycV9kb21haW5feGxhdGVfb25lY2VsbCwKPiA+ICB9 Owo+ID4gIAo+ID4gK3N0YXRpYyBzdHJ1Y3QgaXJxX2NoaXAgcnBfaXJxX2NoaXAgPSB7Cj4gPiAr CS5uYW1lID0gIm12ZWJ1LXJwIiwKPiA+ICt9Owo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgbXZlYnVf cGNpZV9ycF9pcnFfbWFwKHN0cnVjdCBpcnFfZG9tYWluICpoLAo+ID4gKwkJCQkgICB1bnNpZ25l ZCBpbnQgdmlycSwgaXJxX2h3X251bWJlcl90IGh3aXJxKQo+ID4gK3sKPiA+ICsJc3RydWN0IG12 ZWJ1X3BjaWVfcG9ydCAqcG9ydCA9IGgtPmhvc3RfZGF0YTsKPiA+ICsKPiA+ICsJaXJxX3NldF9j aGlwX2FuZF9oYW5kbGVyKHZpcnEsICZycF9pcnFfY2hpcCwgaGFuZGxlX3NpbXBsZV9pcnEpOwo+ ID4gKwlpcnFfc2V0X2NoaXBfZGF0YSh2aXJxLCBwb3J0KTsKPiA+ICsKPiA+ICsJcmV0dXJuIDA7 Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgbXZl YnVfcGNpZV9ycF9pcnFfZG9tYWluX29wcyA9IHsKPiA+ICsJLm1hcCA9IG12ZWJ1X3BjaWVfcnBf aXJxX21hcCwKPiA+ICsJLnhsYXRlID0gaXJxX2RvbWFpbl94bGF0ZV9vbmVjZWxsLAo+ID4gK307 Cj4gPiArCj4gPiAgc3RhdGljIGludCBtdmVidV9wY2llX2luaXRfaXJxX2RvbWFpbihzdHJ1Y3Qg bXZlYnVfcGNpZV9wb3J0ICpwb3J0KQo+ID4gIHsKPiA+ICAJc3RydWN0IGRldmljZSAqZGV2ID0g JnBvcnQtPnBjaWUtPnBkZXYtPmRldjsKPiA+IEBAIC0xMDk0LDEwICsxMTc4LDcyIEBAIHN0YXRp YyBpbnQgbXZlYnVfcGNpZV9pbml0X2lycV9kb21haW4oc3RydWN0IG12ZWJ1X3BjaWVfcG9ydCAq cG9ydCkKPiA+ICAJCXJldHVybiAtRU5PTUVNOwo+ID4gIAl9Cj4gPiAgCj4gPiArCS8qCj4gPiAr CSAqIFdoZW4gImVycm9yIiBpbnRlcnJ1cHQgd2FzIG5vdCBzcGVjaWZpZWQgaW4gRFQgdGhlbiB0 aGVyZSBpcyBubwo+ID4gKwkgKiBzdXBwb3J0IGZvciBpbnRlcnJ1cHRzIG9uIGVtdWxhdGVkIHJv b3QgYnJpZGdlLiBTbyBza2lwIGZvbGxvd2luZwo+ID4gKwkgKiBpbml0aWFsaXphdGlvbi4KPiA+ ICsJICovCj4gPiArCWlmIChwb3J0LT5lcnJvcl9pcnEgPD0gMCkKPiA+ICsJCXJldHVybiAwOwo+ ID4gKwo+ID4gKwlwb3J0LT5ycF9pcnFfZG9tYWluID0gaXJxX2RvbWFpbl9hZGRfbGluZWFyKE5V TEwsIDEsCj4gPiArCQkJCQkJICAgICAgJm12ZWJ1X3BjaWVfcnBfaXJxX2RvbWFpbl9vcHMsCj4g PiArCQkJCQkJICAgICAgcG9ydCk7Cj4gPiArCWlmICghcG9ydC0+cnBfaXJxX2RvbWFpbikgewo+ ID4gKwkJaXJxX2RvbWFpbl9yZW1vdmUocG9ydC0+aW50eF9pcnFfZG9tYWluKTsKPiA+ICsJCWRl dl9lcnIoZGV2LCAiRmFpbGVkIHRvIGFkZCBSb290IFBvcnQgSVJRIGRvbWFpbiBmb3IgJXNcbiIs IHBvcnQtPm5hbWUpOwo+ID4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gPiArCX0KPiA+ICsKPiA+ICAJ cmV0dXJuIDA7Cj4gPiAgfQo+ID4gIAo+ID4gLXN0YXRpYyBpcnFyZXR1cm5fdCBtdmVidV9wY2ll X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKPiA+ICtzdGF0aWMgaXJxcmV0dXJuX3Qg bXZlYnVfcGNpZV9lcnJvcl9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCj4gPiArewo+ ID4gKwlzdHJ1Y3QgbXZlYnVfcGNpZV9wb3J0ICpwb3J0ID0gYXJnOwo+ID4gKwlzdHJ1Y3QgZGV2 aWNlICpkZXYgPSAmcG9ydC0+cGNpZS0+cGRldi0+ZGV2Owo+ID4gKwl1MzIgY2F1c2UsIHVubWFz aywgc3RhdHVzOwo+ID4gKwo+ID4gKwljYXVzZSA9IG12ZWJ1X3JlYWRsKHBvcnQsIFBDSUVfSU5U X0NBVVNFX09GRik7Cj4gPiArCXVubWFzayA9IG12ZWJ1X3JlYWRsKHBvcnQsIFBDSUVfSU5UX1VO TUFTS19PRkYpOwo+ID4gKwlzdGF0dXMgPSBjYXVzZSAmIHVubWFzazsKPiA+ICsKPiA+ICsJLyog ImVycm9yIiBpbnRlcnJ1cHQgaGFuZGxlciBkb2VzIG5vdCBwcm9jZXNzIElOVFggaW50ZXJydXB0 cyAqLwo+ID4gKwlzdGF0dXMgJj0gfihQQ0lFX0lOVF9JTlRYKDApIHwgUENJRV9JTlRfSU5UWCgx KSB8Cj4gPiArCQkgICAgUENJRV9JTlRfSU5UWCgyKSB8IFBDSUVfSU5UX0lOVFgoMykpOwo+ID4g Kwo+ID4gKwkvKiBQcm9jZXNzIFBNRSBpbnRlcnJ1cHQgKi8KPiA+ICsJaWYgKChzdGF0dXMgJiBQ Q0lFX0lOVF9QTV9QTUUpICYmICFwb3J0LT5wbWVfcGVuZGluZykgewo+ID4gKwkJLyoKPiA+ICsJ CSAqIERvIG5vdCBjbGVhciBQTUUgaW50ZXJydXB0IGJpdCBpbiBDYXVzZSBSZWdpc3RlciBhcyBp dAo+ID4gKwkJICogaW52YWxpZGF0ZXMgYWxzbyBjb250ZW50IG9mIFJvb3QgU3RhdHVzIFJlZ2lz dGVyLiBJbnN0ZWFkCj4gPiArCQkgKiBzZXQgcG9ydC0+cG1lX3BlbmRpbmcgdmFyaWFibGUgdG8g dHJ1ZSB0byBpbmRpY2F0ZSB0aGF0Cj4gPiArCQkgKiBuZXh0IHRpbWUgUE1FIGludGVycnVwdCBz aG91bGQgYmUgaWdub3JlZCB1bnRpbCB2YXJpYWJsZQo+ID4gKwkJICogaXMgYmFjayB0byB0aGUg ZmFsc2UgdmFsdWUuCj4gPiArCQkgKi8KPiA+ICsJCXBvcnQtPnBtZV9wZW5kaW5nID0gdHJ1ZTsK PiA+ICsJCWlmIChnZW5lcmljX2hhbmRsZV9kb21haW5faXJxKHBvcnQtPnJwX2lycV9kb21haW4s IDApID09IC1FSU5WQUwpCj4gPiArCQkJZGV2X2Vycl9yYXRlbGltaXRlZChkZXYsICJ1bmhhbmRs ZWQgUE1FIElSUVxuIik7Cj4gPiArCX0KPiA+ICsKPiA+ICsJLyogUHJvY2VzcyBFUlIgaW50ZXJy dXB0ICovCj4gPiArCWlmIChzdGF0dXMgJiBQQ0lFX0lOVF9FUlJfTUFTSykgewo+ID4gKwkJbXZl YnVfd3JpdGVsKHBvcnQsIH5QQ0lFX0lOVF9FUlJfTUFTSywgUENJRV9JTlRfQ0FVU0VfT0ZGKTsK PiA+ICsJCWlmIChnZW5lcmljX2hhbmRsZV9kb21haW5faXJxKHBvcnQtPnJwX2lycV9kb21haW4s IDApID09IC1FSU5WQUwpCj4gPiArCQkJZGV2X2Vycl9yYXRlbGltaXRlZChkZXYsICJ1bmhhbmRs ZWQgRVJSIElSUVxuIik7Cj4gPiArCX0KPiA+ICsKPiA+ICsJLyogUHJvY2VzcyBsb2NhbCBFUlIg aW50ZXJydXB0ICovCj4gPiArCWlmIChzdGF0dXMgJiBQQ0lFX0lOVF9ERVRfTUFTSykgewo+ID4g KwkJbXZlYnVfd3JpdGVsKHBvcnQsIH5QQ0lFX0lOVF9ERVRfTUFTSywgUENJRV9JTlRfQ0FVU0Vf T0ZGKTsKPiA+ICsJCWlmIChnZW5lcmljX2hhbmRsZV9kb21haW5faXJxKHBvcnQtPnJwX2lycV9k b21haW4sIDApID09IC1FSU5WQUwpCj4gPiArCQkJZGV2X2Vycl9yYXRlbGltaXRlZChkZXYsICJ1 bmhhbmRsZWQgRVJSIElSUVxuIik7Cj4gPiArCX0KPiA+ICsKPiA+ICsJcmV0dXJuIHN0YXR1cyA/ IElSUV9IQU5ETEVEIDogSVJRX05PTkU7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpcnFyZXR1 cm5fdCBtdmVidV9wY2llX2ludHhfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQo+ID4g IHsKPiA+ICAJc3RydWN0IG12ZWJ1X3BjaWVfcG9ydCAqcG9ydCA9IGFyZzsKPiA+ICAJc3RydWN0 IGRldmljZSAqZGV2ID0gJnBvcnQtPnBjaWUtPnBkZXYtPmRldjsKPiA+IEBAIC0xMTA4LDYgKzEy NTQsMTAgQEAgc3RhdGljIGlycXJldHVybl90IG12ZWJ1X3BjaWVfaXJxX2hhbmRsZXIoaW50IGly cSwgdm9pZCAqYXJnKQo+ID4gIAl1bm1hc2sgPSBtdmVidV9yZWFkbChwb3J0LCBQQ0lFX0lOVF9V Tk1BU0tfT0ZGKTsKPiA+ICAJc3RhdHVzID0gY2F1c2UgJiB1bm1hc2s7Cj4gPiAgCj4gPiArCS8q ICJpbnR4IiBpbnRlcnJ1cHQgaGFuZGxlciBwcm9jZXNzIG9ubHkgSU5UWCBpbnRlcnJ1cHRzICov Cj4gPiArCXN0YXR1cyAmPSBQQ0lFX0lOVF9JTlRYKDApIHwgUENJRV9JTlRfSU5UWCgxKSB8Cj4g PiArCQkgIFBDSUVfSU5UX0lOVFgoMikgfCBQQ0lFX0lOVF9JTlRYKDMpOwo+ID4gKwo+ID4gIAkv KiBQcm9jZXNzIGxlZ2FjeSBJTlR4IGludGVycnVwdHMgKi8KPiA+ICAJZm9yIChpID0gMDsgaSA8 IFBDSV9OVU1fSU5UWDsgaSsrKSB7Cj4gPiAgCQlpZiAoIShzdGF0dXMgJiBQQ0lFX0lOVF9JTlRY KGkpKSkKPiA+IEBAIC0xMTIyLDkgKzEyNzIsMjkgQEAgc3RhdGljIGlycXJldHVybl90IG12ZWJ1 X3BjaWVfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQo+ID4gIAo+ID4gIHN0YXRpYyBp bnQgbXZlYnVfcGNpZV9tYXBfaXJxKGNvbnN0IHN0cnVjdCBwY2lfZGV2ICpkZXYsIHU4IHNsb3Qs IHU4IHBpbikKPiA+ICB7Cj4gPiAtCS8qIEludGVycnVwdCBzdXBwb3J0IG9uIG12ZWJ1IGVtdWxh dGVkIGJyaWRnZXMgaXMgbm90IGltcGxlbWVudGVkIHlldCAqLwo+ID4gLQlpZiAoZGV2LT5idXMt Pm51bWJlciA9PSAwKQo+ID4gLQkJcmV0dXJuIDA7IC8qIFByb3BlciByZXR1cm4gY29kZSAwID09 IE5PX0lSUSAqLwo+ID4gKwlzdHJ1Y3QgbXZlYnVfcGNpZV9wb3J0ICpwb3J0Owo+ID4gKwlzdHJ1 Y3QgbXZlYnVfcGNpZSAqcGNpZTsKPiA+ICsKPiA+ICsJaWYgKGRldi0+YnVzLT5udW1iZXIgPT0g MCkgewo+ID4gKwkJLyoKPiA+ICsJCSAqIEVhY2ggZW11bGF0ZWQgcm9vdCBicmlkZ2UgZm9yIGV2 ZXJ5IG12ZWJ1IHBvcnQgaGFzIGl0cyBvd24KPiA+ICsJCSAqIFJvb3QgUG9ydCBpcnEgY2hpcCBh bmQgaXJxIGRvbWFpbi4gQXJndW1lbnQgcGluIGlzIHRoZSBJTlR4Cj4gPiArCQkgKiBwaW4gKDE9 SU5UQSwgMj1JTlRCLCAzPUlOVEMsIDQ9SU5URCkgYW5kIGh3aXJxIGZvciBmdW5jdGlvbgo+ID4g KwkJICogaXJxX2NyZWF0ZV9tYXBwaW5nKCkgaXMgaW5kZXhlZCBmcm9tIHplcm8uCj4gPiArCQkg Ki8KPiA+ICsJCXBjaWUgPSBkZXYtPmJ1cy0+c3lzZGF0YTsKPiA+ICsJCXBvcnQgPSBtdmVidV9w Y2llX2ZpbmRfcG9ydChwY2llLCBkZXYtPmJ1cywgUENJX0RFVkZOKHNsb3QsIDApKTsKPiA+ICsJ CWlmICghcG9ydCkKPiA+ICsJCQlyZXR1cm4gMDsgLyogUHJvcGVyIHJldHVybiBjb2RlIDAgPT0g Tk9fSVJRICovCj4gPiArCQkvKgo+ID4gKwkJICogcG9ydC0+cnBfaXJxX2RvbWFpbiBpcyBhdmFp bGFibGUgb25seSB3aGVuICJlcnJvciIgaW50ZXJydXB0Cj4gPiArCQkgKiB3YXMgc3BlY2lmaWVk IGluIERULiBXaGVuIGlzIG5vdCBhdmFpbGFibGUgdGhlbiBpbnRlcnJ1cHRzCj4gPiArCQkgKiBm b3IgZW11bGF0ZWQgcm9vdCBicmlkZ2UgYXJlIG5vdCBwcm92aWRlZC4KPiA+ICsJCSAqLwo+ID4g KwkJaWYgKHBvcnQtPmVycm9yX2lycSA8PSAwKQo+ID4gKwkJCXJldHVybiAwOyAvKiBQcm9wZXIg cmV0dXJuIGNvZGUgMCA9PSBOT19JUlEgKi8KPiA+ICsJCXJldHVybiBpcnFfY3JlYXRlX21hcHBp bmcocG9ydC0+cnBfaXJxX2RvbWFpbiwgcGluIC0gMSk7Cj4gPiArCX0KPiA+ICAKPiA+ICAJcmV0 dXJuIG9mX2lycV9wYXJzZV9hbmRfbWFwX3BjaShkZXYsIHNsb3QsIHBpbik7Cj4gPiAgfQo+ID4g QEAgLTEzMzMsNiArMTUwMywyMSBAQCBzdGF0aWMgaW50IG12ZWJ1X3BjaWVfcGFyc2VfcG9ydChz dHJ1Y3QgbXZlYnVfcGNpZSAqcGNpZSwKPiA+ICAJCQkgcG9ydC0+bmFtZSwgY2hpbGQpOwo+ID4g IAl9Cj4gPiAgCj4gPiArCS8qCj4gPiArCSAqIE9sZCBEVCBiaW5kaW5ncyBkbyBub3QgY29udGFp biAiZXJyb3IiIGludGVycnVwdAo+ID4gKwkgKiBzbyBkbyBub3QgZmFpbCBwcm9iaW5nIGRyaXZl ciB3aGVuIGludGVycnVwdCBkb2VzIG5vdCBleGlzdC4KPiA+ICsJICovCj4gPiArCXBvcnQtPmVy cm9yX2lycSA9IG9mX2lycV9nZXRfYnluYW1lKGNoaWxkLCAiZXJyb3IiKTsKPiA+ICsJaWYgKHBv cnQtPmVycm9yX2lycSA9PSAtRVBST0JFX0RFRkVSKSB7Cj4gPiArCQlyZXQgPSBwb3J0LT5lcnJv cl9pcnE7Cj4gPiArCQlnb3RvIGVycjsKPiA+ICsJfQo+ID4gKwlpZiAocG9ydC0+ZXJyb3JfaXJx IDw9IDApIHsKPiA+ICsJCWRldl93YXJuKGRldiwgIiVzOiBpbnRlcnJ1cHRzIG9uIFJvb3QgUG9y dCBhcmUgdW5zdXBwb3J0ZWQsICIKPiA+ICsJCQkgICAgICAiJXBPRiBkb2VzIG5vdCBjb250YWlu IGVycm9yIGludGVycnVwdFxuIiwKPiA+ICsJCQkgcG9ydC0+bmFtZSwgY2hpbGQpOwo+ID4gKwl9 Cj4gPiArCj4gPiAgCXJlc2V0X2dwaW8gPSBvZl9nZXRfbmFtZWRfZ3Bpb19mbGFncyhjaGlsZCwg InJlc2V0LWdwaW9zIiwgMCwgJmZsYWdzKTsKPiA+ICAJaWYgKHJlc2V0X2dwaW8gPT0gLUVQUk9C RV9ERUZFUikgewo+ID4gIAkJcmV0ID0gcmVzZXRfZ3BpbzsKPiA+IEBAIC0xNTM4LDcgKzE3MjMs NiBAQCBzdGF0aWMgaW50IG12ZWJ1X3BjaWVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikKPiA+ICAKPiA+ICAJZm9yIChpID0gMDsgaSA8IHBjaWUtPm5wb3J0czsgaSsrKSB7Cj4g PiAgCQlzdHJ1Y3QgbXZlYnVfcGNpZV9wb3J0ICpwb3J0ID0gJnBjaWUtPnBvcnRzW2ldOwo+ID4g LQkJaW50IGlycSA9IHBvcnQtPmludHhfaXJxOwo+ID4gIAo+ID4gIAkJY2hpbGQgPSBwb3J0LT5k bjsKPiA+ICAJCWlmICghY2hpbGQpCj4gPiBAQCAtMTU2Niw3ICsxNzUwLDcgQEAgc3RhdGljIGlu dCBtdmVidV9wY2llX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gPiAgCQkJ Y29udGludWU7Cj4gPiAgCQl9Cj4gPiAgCj4gPiAtCQlpZiAoaXJxID4gMCkgewo+ID4gKwkJaWYg KHBvcnQtPmVycm9yX2lycSA+IDAgfHwgcG9ydC0+aW50eF9pcnEgPiAwKSB7Cj4gPiAgCQkJcmV0 ID0gbXZlYnVfcGNpZV9pbml0X2lycV9kb21haW4ocG9ydCk7Cj4gPiAgCQkJaWYgKHJldCkgewo+ ID4gIAkJCQlkZXZfZXJyKGRldiwgIiVzOiBjYW5ub3QgaW5pdCBpcnEgZG9tYWluXG4iLAo+ID4g QEAgLTE1NzcsMTQgKzE3NjEsNDIgQEAgc3RhdGljIGludCBtdmVidV9wY2llX3Byb2JlKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gPiAgCQkJCW12ZWJ1X3BjaWVfcG93ZXJkb3duKHBv cnQpOwo+ID4gIAkJCQljb250aW51ZTsKPiA+ICAJCQl9Cj4gPiArCQl9Cj4gPiArCj4gPiArCQlp ZiAocG9ydC0+ZXJyb3JfaXJxID4gMCkgewo+ID4gKwkJCXJldCA9IGRldm1fcmVxdWVzdF9pcnEo ZGV2LCBwb3J0LT5lcnJvcl9pcnEsCj4gPiArCQkJCQkgICAgICAgbXZlYnVfcGNpZV9lcnJvcl9p cnFfaGFuZGxlciwKPiA+ICsJCQkJCSAgICAgICBJUlFGX1NIQVJFRCB8IElSUUZfTk9fVEhSRUFE LAo+ID4gKwkJCQkJICAgICAgIHBvcnQtPm5hbWUsIHBvcnQpOwo+ID4gKwkJCWlmIChyZXQpIHsK PiA+ICsJCQkJZGV2X2VycihkZXYsICIlczogY2Fubm90IHJlZ2lzdGVyIGVycm9yIGludGVycnVw dCBoYW5kbGVyOiAlZFxuIiwKPiA+ICsJCQkJCXBvcnQtPm5hbWUsIHJldCk7Cj4gPiArCQkJCWlm IChwb3J0LT5pbnR4X2lycV9kb21haW4pCj4gPiArCQkJCQlpcnFfZG9tYWluX3JlbW92ZShwb3J0 LT5pbnR4X2lycV9kb21haW4pOwo+ID4gKwkJCQlpZiAocG9ydC0+cnBfaXJxX2RvbWFpbikKPiA+ ICsJCQkJCWlycV9kb21haW5fcmVtb3ZlKHBvcnQtPnJwX2lycV9kb21haW4pOwo+ID4gKwkJCQlw Y2lfYnJpZGdlX2VtdWxfY2xlYW51cCgmcG9ydC0+YnJpZGdlKTsKPiA+ICsJCQkJZGV2bV9pb3Vu bWFwKGRldiwgcG9ydC0+YmFzZSk7Cj4gPiArCQkJCXBvcnQtPmJhc2UgPSBOVUxMOwo+ID4gKwkJ CQltdmVidV9wY2llX3Bvd2VyZG93bihwb3J0KTsKPiA+ICsJCQkJY29udGludWU7Cj4gPiArCQkJ fQo+ID4gKwkJfQo+ID4gIAo+ID4gLQkJCXJldCA9IGRldm1fcmVxdWVzdF9pcnEoZGV2LCBpcnEs IG12ZWJ1X3BjaWVfaXJxX2hhbmRsZXIsCj4gPiArCQlpZiAocG9ydC0+aW50eF9pcnEgPiAwKSB7 Cj4gPiArCQkJcmV0ID0gZGV2bV9yZXF1ZXN0X2lycShkZXYsIHBvcnQtPmludHhfaXJxLAo+ID4g KwkJCQkJICAgICAgIG12ZWJ1X3BjaWVfaW50eF9pcnFfaGFuZGxlciwKPiA+ICAJCQkJCSAgICAg ICBJUlFGX1NIQVJFRCB8IElSUUZfTk9fVEhSRUFELAo+ID4gIAkJCQkJICAgICAgIHBvcnQtPm5h bWUsIHBvcnQpOwo+ID4gIAkJCWlmIChyZXQpIHsKPiA+IC0JCQkJZGV2X2VycihkZXYsICIlczog Y2Fubm90IHJlZ2lzdGVyIGludGVycnVwdCBoYW5kbGVyOiAlZFxuIiwKPiA+ICsJCQkJZGV2X2Vy cihkZXYsICIlczogY2Fubm90IHJlZ2lzdGVyIGludHggaW50ZXJydXB0IGhhbmRsZXI6ICVkXG4i LAo+ID4gIAkJCQkJcG9ydC0+bmFtZSwgcmV0KTsKPiA+IC0JCQkJaXJxX2RvbWFpbl9yZW1vdmUo cG9ydC0+aW50eF9pcnFfZG9tYWluKTsKPiA+ICsJCQkJaWYgKHBvcnQtPmVycm9yX2lycSA+IDAp Cj4gPiArCQkJCQlkZXZtX2ZyZWVfaXJxKGRldiwgcG9ydC0+ZXJyb3JfaXJxLCBwb3J0KTsKPiA+ ICsJCQkJaWYgKHBvcnQtPmludHhfaXJxX2RvbWFpbikKPiA+ICsJCQkJCWlycV9kb21haW5fcmVt b3ZlKHBvcnQtPmludHhfaXJxX2RvbWFpbik7Cj4gPiArCQkJCWlmIChwb3J0LT5ycF9pcnFfZG9t YWluKQo+ID4gKwkJCQkJaXJxX2RvbWFpbl9yZW1vdmUocG9ydC0+cnBfaXJxX2RvbWFpbik7Cj4g PiAgCQkJCXBjaV9icmlkZ2VfZW11bF9jbGVhbnVwKCZwb3J0LT5icmlkZ2UpOwo+ID4gIAkJCQlk ZXZtX2lvdW5tYXAoZGV2LCBwb3J0LT5iYXNlKTsKPiA+ICAJCQkJcG9ydC0+YmFzZSA9IE5VTEw7 Cj4gPiBAQCAtMTcyMiw2ICsxOTM0LDEyIEBAIHN0YXRpYyBpbnQgbXZlYnVfcGNpZV9yZW1vdmUo c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiA+ICAJCQl9Cj4gPiAgCQkJaXJxX2RvbWFp bl9yZW1vdmUocG9ydC0+aW50eF9pcnFfZG9tYWluKTsKPiA+ICAJCX0KPiA+ICsJCWlmIChwb3J0 LT5ycF9pcnFfZG9tYWluKSB7Cj4gPiArCQkJaW50IHZpcnEgPSBpcnFfZmluZF9tYXBwaW5nKHBv cnQtPnJwX2lycV9kb21haW4sIDApOwo+ID4gKwkJCWlmICh2aXJxID4gMCkKPiA+ICsJCQkJaXJx X2Rpc3Bvc2VfbWFwcGluZyh2aXJxKTsKPiA+ICsJCQlpcnFfZG9tYWluX3JlbW92ZShwb3J0LT5y cF9pcnFfZG9tYWluKTsKPiA+ICsJCX0KPiA+ICAKPiA+ICAJCS8qIEZyZWUgY29uZmlnIHNwYWNl IGZvciBlbXVsYXRlZCByb290IGJyaWRnZS4gKi8KPiA+ICAJCXBjaV9icmlkZ2VfZW11bF9jbGVh bnVwKCZwb3J0LT5icmlkZ2UpOwo+ID4gLS0gCj4gPiAyLjIwLjEKPiA+IAoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWls aW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0 cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=