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 34151ECAAD4 for ; Tue, 30 Aug 2022 12:38:11 +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=qeoa5BPp6V/mdW2TvGZx88mpCH5nAyWVwinqKF3F/0g=; b=ZJfW+4GNnis/vd ORSuhxAvbBgBAT4g2S1P7NPmKMzeLKxXgAxUUnup9QlnDc+5DNz8tTW777MtsRRmHRSHm7hXX9NqJ QaMhfrxzHM4IrBVIdhoUW5odH8bBOd5xeGvxeR7m5vnw4EPScJs/9Atp2Ajb0zwcuPQDpU3tlTWvT GXFGT5KJtd2UXfKTEuL98ehsZQ4gijTw9aVmjXSPqGGCQHn0JHLwr9+wn35k8ykt5YveUukuIS1+h jdKU8MQWJPA0jHHEdceeXUjwAHCMJ5ytHIa0E3Ple6bcQ7FYaLeoB+k0iKFAFrLP9Pqx7+Rgzpbpc P6MOyC7naxGhQEq1cpUw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oT0U9-00Grie-5q; Tue, 30 Aug 2022 12:36:53 +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 1oT0U0-00Greu-Nj for linux-arm-kernel@lists.infradead.org; Tue, 30 Aug 2022 12:36:47 +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 3341F616A0; Tue, 30 Aug 2022 12:36:43 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 86322C433C1; Tue, 30 Aug 2022 12:36:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1661863002; bh=7panBRG4MSKwt47eG+3s8rY7XvJkg/NH8Zgv55EBlz4=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=m6AR805INCGVYh1EYUKXjDpbvKpb+LLDckp3jVT+rc8QgBkL5cShi0f9dnU4hcJnH kBY7NMp+UFtcqhaAtHeS9T5C4vb/1uZGRzsJCdFgSCEDISCx1GxslQDkrj3nIoiCLp malYwzpH8TEiH2mM5ebxHyd1BAn6lVfx21p5v6MBM329Z0FsCFPO/4A2J3dWgMtWxm gyHNiDTvBgDPIkEpYOXtKHNBBdPNKqAcaOgF0DrA4ZoOBYz+m2Wj1GZfXR1pzbMmn4 l0zvJQ4dQTr6w9bbAjy/w1f23DDfI9ssoGvyxmQD6+kgJ9rHPs11OUWebon6WSQI19 LPNN/l62EUvuA== Received: by pali.im (Postfix) id 6B941834; Tue, 30 Aug 2022 14:36:39 +0200 (CEST) Date: Tue, 30 Aug 2022 14:36:39 +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 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: <20220830123639.4zpvvvlrsaqs2rls@pali> References: <20220817230036.817-1-pali@kernel.org> <20220817230036.817-3-pali@kernel.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20220817230036.817-3-pali@kernel.org> User-Agent: NeoMutt/20180716 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220830_053645_429195_C9992812 X-CRM114-Status: GOOD ( 51.23 ) 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 T24gVGh1cnNkYXkgMTggQXVndXN0IDIwMjIgMDE6MDA6MzQgUGFsaSBSb2jDoXIgd3JvdGU6Cj4g VGhpcyBhZGRzIHN1cHBvcnQgZm9yIFBNRSBhbmQgRVJSIGludGVycnVwdHMgcmVwb3J0ZWQgYnkg ZW11bGF0ZWQgYnJpZGdlCj4gKGZvciBQTUUgYW5kIEFFUiBrZXJuZWwgZHJpdmVycykgdmlhIG5l dyBSb290IFBvcnQgaXJxIGNoaXAgYXMgdGhlc2UKPiBpbnRlcnJ1cHRzIGZyb20gUENJZSBSb290 IFBvcnRzIGFyZSBoYW5kbGVkIGJ5IG12ZWJ1IGhhcmR3YXJlIGNvbXBsZXRlbHkKPiBzZXBhcmF0 ZWx5IGZyb20gSU5UeCBhbmQgTVNJIGludGVycnVwdHMgc2VuZCBieSByZWFsIFBDSWUgZGV2aWNl cy4KPiAKPiBXaXRoIHRoaXMgY2hhbmdlLCBrZXJuZWwgUE1FIGFuZCBBRVIgZHJpdmVycyBzdGFy dCB3b3JraW5nIGFzIHRoZXkgY2FuCj4gYWNxdWlyZSByZXF1aXJlZCBpbnRlcnJ1cHQgbGluZXMg KHByb3ZpZGVkIGJ5IG12ZWJ1IHJwIHZpcnR1YWwgaXJxIGNoaXApLgo+IAo+IE5vdGUgdGhhdCBm b3IgdGhpcyBzdXBwb3J0LCBkZXZpY2UgdHJlZSBmaWxlcyBoYXMgdG8gYmUgcHJvcGVybHkgYWRq dXN0ZWQKPiB0byBwcm92aWRlICJpbnRlcnJ1cHRzIiBvciAiaW50ZXJydXB0cy1leHRlbmRlZCIg cHJvcGVydHkgd2l0aCBlcnJvcgo+IGludGVycnVwdCBzb3VyY2UgYW5kICJpbnRlcnJ1cHQtbmFt ZXMiIHByb3BlcnR5IHdpdGggImVycm9yIiBzdHJpbmcuCj4gCj4gSWYgZGV2aWNlIHRyZWUgZmls ZXMgZG8gbm90IHByb3ZpZGUgdGhlc2UgcHJvcGVydGllcyB0aGVuIGRyaXZlciB3b3VsZCB3b3Jr Cj4gYXMgYmVmb3JlIGFuZCB3b3VsZCBub3QgcHJvdmlkZSBpbnRlcnJ1cHRzIG9uIGVtdWxhdGVk IGJyaWRnZSwgbGlrZSBiZWZvcmUuCj4gCj4gU2lnbmVkLW9mZi1ieTogUGFsaSBSb2jDoXIgPHBh bGlAa2VybmVsLm9yZz4KPiAtLS0KCkp1c3QgdG8gbm90ZSB0aGF0IGJlY2F1c2UgdGhlc2UgZXJy b3IgaW50ZXJydXB0cyBhcmUgc2hhcmVkIG9uIHNvbWUKbXZlYnUgcGxhdGZvcm1zLCB0aGlzIHBh dGNoIGRlcGVuZHMgb24gYW5vdGhlciBwYXRjaCB3aGljaCBjb252ZXJ0CmRyaXZlciB0byBkZXZt X3JlcXVlc3RfaXJxKCkgYW5kIHdoaWNoIEkgc2VudCBtb3JlIG1vbnRocyBiZWZvcmU6Cmh0dHBz Oi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LXBjaS8yMDIyMDUyNDEyMjgxNy43MTk5LTEtcGFsaUBr ZXJuZWwub3JnLwoKPiAgZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktbXZlYnUuYyB8IDI1NiAr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgMjM3IGluc2Vy dGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9j b250cm9sbGVyL3BjaS1tdmVidS5jIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktbXZlYnUu Ywo+IGluZGV4IDU0Y2U1ZDQzYjY5NS4uZTY5YmRhYThkZTQzIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvcGNpL2NvbnRyb2xsZXIvcGNpLW12ZWJ1LmMKPiArKysgYi9kcml2ZXJzL3BjaS9jb250cm9s bGVyL3BjaS1tdmVidS5jCj4gQEAgLTU2LDggKzU2LDE2IEBACj4gICNkZWZpbmUgUENJRV9DT05G X0RBVEFfT0ZGCTB4MThmYwo+ICAjZGVmaW5lIFBDSUVfSU5UX0NBVVNFX09GRgkweDE5MDAKPiAg I2RlZmluZSBQQ0lFX0lOVF9VTk1BU0tfT0ZGCTB4MTkxMAo+ICsjZGVmaW5lICBQQ0lFX0lOVF9E RVRfQ09SCQlCSVQoOCkKPiArI2RlZmluZSAgUENJRV9JTlRfREVUX05PTkZBVEFMCQlCSVQoOSkK PiArI2RlZmluZSAgUENJRV9JTlRfREVUX0ZBVEFMCQlCSVQoMTApCj4gKyNkZWZpbmUgIFBDSUVf SU5UX0VSUl9GQVRBTAkJQklUKDE2KQo+ICsjZGVmaW5lICBQQ0lFX0lOVF9FUlJfTk9ORkFUQUwJ CUJJVCgxNykKPiArI2RlZmluZSAgUENJRV9JTlRfRVJSX0NPUgkJQklUKDE4KQo+ICAjZGVmaW5l ICBQQ0lFX0lOVF9JTlRYKGkpCQlCSVQoMjQraSkKPiAgI2RlZmluZSAgUENJRV9JTlRfUE1fUE1F CQlCSVQoMjgpCj4gKyNkZWZpbmUgIFBDSUVfSU5UX0RFVF9NQVNLCQkoUENJRV9JTlRfREVUX0NP UiB8IFBDSUVfSU5UX0RFVF9OT05GQVRBTCB8IFBDSUVfSU5UX0RFVF9GQVRBTCkKPiArI2RlZmlu ZSAgUENJRV9JTlRfRVJSX01BU0sJCShQQ0lFX0lOVF9FUlJfRkFUQUwgfCBQQ0lFX0lOVF9FUlJf Tk9ORkFUQUwgfCBQQ0lFX0lOVF9FUlJfQ09SKQo+ICAjZGVmaW5lICBQQ0lFX0lOVF9BTExfTUFT SwkJR0VOTUFTSygzMSwgMCkKPiAgI2RlZmluZSBQQ0lFX0NUUkxfT0ZGCQkweDFhMDAKPiAgI2Rl ZmluZSAgUENJRV9DVFJMX1gxX01PREUJCTB4MDAwMQo+IEBAIC0xMjAsOSArMTI4LDEyIEBAIHN0 cnVjdCBtdmVidV9wY2llX3BvcnQgewo+ICAJc3RydWN0IHJlc291cmNlIHJlZ3M7Cj4gIAl1OCBz bG90X3Bvd2VyX2xpbWl0X3ZhbHVlOwo+ICAJdTggc2xvdF9wb3dlcl9saW1pdF9zY2FsZTsKPiAr CXN0cnVjdCBpcnFfZG9tYWluICpycF9pcnFfZG9tYWluOwo+ICAJc3RydWN0IGlycV9kb21haW4g KmludHhfaXJxX2RvbWFpbjsKPiAgCXJhd19zcGlubG9ja190IGlycV9sb2NrOwo+ICsJaW50IGVy cm9yX2lycTsKPiAgCWludCBpbnR4X2lycTsKPiArCWJvb2wgcG1lX3BlbmRpbmc7Cj4gIH07Cj4g IAo+ICBzdGF0aWMgaW5saW5lIHZvaWQgbXZlYnVfd3JpdGVsKHN0cnVjdCBtdmVidV9wY2llX3Bv cnQgKnBvcnQsIHUzMiB2YWwsIHUzMiByZWcpCj4gQEAgLTMyMSw5ICszMzIsMTkgQEAgc3RhdGlj IHZvaWQgbXZlYnVfcGNpZV9zZXR1cF9odyhzdHJ1Y3QgbXZlYnVfcGNpZV9wb3J0ICpwb3J0KQo+ ICAJLyogQ2xlYXIgYWxsIGludGVycnVwdCBjYXVzZXMuICovCj4gIAltdmVidV93cml0ZWwocG9y dCwgflBDSUVfSU5UX0FMTF9NQVNLLCBQQ0lFX0lOVF9DQVVTRV9PRkYpOwo+ICAKPiAtCS8qIENo ZWNrIGlmICJpbnR4IiBpbnRlcnJ1cHQgd2FzIHNwZWNpZmllZCBpbiBEVC4gKi8KPiAtCWlmIChw b3J0LT5pbnR4X2lycSA+IDApCj4gLQkJcmV0dXJuOwo+ICsJLyoKPiArCSAqIFVubWFzayBhbGwg ZXJyb3IgaW50ZXJydXB0cyB3aGljaCBhcmUgaW50ZXJuYWxseSBnZW5lcmF0ZWQuCj4gKwkgKiBU aGV5IGNhbm5vdCBiZSBkaXNhYmxlZCBieSBTRVJSIyBFbmFibGUgYml0IGluIFBDSSBDb21tYW5k IHJlZ2lzdGVyLAo+ICsJICogc2VlIEZpZ3VyZSA2LTM6IFBzZXVkbyBMb2dpYyBEaWFncmFtIGZv ciBFcnJvciBNZXNzYWdlIENvbnRyb2xzIGluCj4gKwkgKiBQQ0llIGJhc2Ugc3BlY2lmaWNhdGlv bi4KPiArCSAqIEludGVybmFsbHkgZ2VuZXJhdGVkIG12ZWJ1IGludGVycnVwdHMgYXJlIHJlcG9y dGVkIHZpYSBtdmVidSBzdW1tYXJ5Cj4gKwkgKiBpbnRlcnJ1cHQgd2hpY2ggcmVxdWlyZXMgImVy cm9yIiBpbnRlcnJ1cHQgdG8gYmUgc3BlY2lmaWVkIGluIERULgo+ICsJICovCj4gKwlpZiAocG9y dC0+ZXJyb3JfaXJxID4gMCkgewo+ICsJCXVubWFzayA9IG12ZWJ1X3JlYWRsKHBvcnQsIFBDSUVf SU5UX1VOTUFTS19PRkYpOwo+ICsJCXVubWFzayB8PSBQQ0lFX0lOVF9ERVRfTUFTSzsKPiArCQlt dmVidV93cml0ZWwocG9ydCwgdW5tYXNrLCBQQ0lFX0lOVF9VTk1BU0tfT0ZGKTsKPiArCX0KPiAg Cj4gIAkvKgo+ICAJICogRmFsbGJhY2sgY29kZSB3aGVuICJpbnR4IiBpbnRlcnJ1cHQgd2FzIG5v dCBzcGVjaWZpZWQgaW4gRFQ6Cj4gQEAgLTMzNSwxMCArMzU2LDEyIEBAIHN0YXRpYyB2b2lkIG12 ZWJ1X3BjaWVfc2V0dXBfaHcoc3RydWN0IG12ZWJ1X3BjaWVfcG9ydCAqcG9ydCkKPiAgCSAqIHBl cmZvcm1hbmNlIHBlbmFsdHkgYXMgZXZlcnkgUENJZSBpbnRlcnJ1cHQgaGFuZGxlciBuZWVkcyB0 byBiZQo+ICAJICogY2FsbGVkIHdoZW4gc29tZSBpbnRlcnJ1cHQgaXMgdHJpZ2dlcmVkLgo+ICAJ ICovCj4gLQl1bm1hc2sgPSBtdmVidV9yZWFkbChwb3J0LCBQQ0lFX0lOVF9VTk1BU0tfT0ZGKTsK PiAtCXVubWFzayB8PSBQQ0lFX0lOVF9JTlRYKDApIHwgUENJRV9JTlRfSU5UWCgxKSB8Cj4gLQkJ ICBQQ0lFX0lOVF9JTlRYKDIpIHwgUENJRV9JTlRfSU5UWCgzKTsKPiAtCW12ZWJ1X3dyaXRlbChw b3J0LCB1bm1hc2ssIFBDSUVfSU5UX1VOTUFTS19PRkYpOwo+ICsJaWYgKHBvcnQtPmludHhfaXJx IDw9IDApIHsKPiArCQl1bm1hc2sgPSBtdmVidV9yZWFkbChwb3J0LCBQQ0lFX0lOVF9VTk1BU0tf T0ZGKTsKPiArCQl1bm1hc2sgfD0gUENJRV9JTlRfSU5UWCgwKSB8IFBDSUVfSU5UX0lOVFgoMSkg fAo+ICsJCQkgIFBDSUVfSU5UX0lOVFgoMikgfCBQQ0lFX0lOVF9JTlRYKDMpOwo+ICsJCW12ZWJ1 X3dyaXRlbChwb3J0LCB1bm1hc2ssIFBDSUVfSU5UX1VOTUFTS19PRkYpOwo+ICsJfQo+ICB9Cj4g IAo+ICBzdGF0aWMgc3RydWN0IG12ZWJ1X3BjaWVfcG9ydCAqbXZlYnVfcGNpZV9maW5kX3BvcnQo c3RydWN0IG12ZWJ1X3BjaWUgKnBjaWUsCj4gQEAgLTYwMywxMSArNjI2LDE2IEBAIG12ZWJ1X3Bj aV9icmlkZ2VfZW11bF9iYXNlX2NvbmZfcmVhZChzdHJ1Y3QgcGNpX2JyaWRnZV9lbXVsICpicmlk Z2UsCj4gIAljYXNlIFBDSV9JTlRFUlJVUFRfTElORTogewo+ICAJCS8qCj4gIAkJICogRnJvbSB0 aGUgd2hvbGUgMzJiaXQgcmVnaXN0ZXIgd2Ugc3VwcG9ydCByZWFkaW5nIGZyb20gSFcgb25seQo+ IC0JCSAqIG9uZSBiaXQ6IFBDSV9CUklER0VfQ1RMX0JVU19SRVNFVC4KPiArCQkgKiB0d28gYml0 czogUENJX0JSSURHRV9DVExfQlVTX1JFU0VUIGFuZCBQQ0lfQlJJREdFX0NUTF9TRVJSLgo+ICAJ CSAqIE90aGVyIGJpdHMgYXJlIHJldHJpZXZlZCBvbmx5IGZyb20gZW11bGF0ZWQgY29uZmlnIGJ1 ZmZlci4KPiAgCQkgKi8KPiAgCQlfX2xlMzIgKmNmZ3NwYWNlID0gKF9fbGUzMiAqKSZicmlkZ2Ut PmNvbmY7Cj4gIAkJdTMyIHZhbCA9IGxlMzJfdG9fY3B1KGNmZ3NwYWNlW1BDSV9JTlRFUlJVUFRf TElORSAvIDRdKTsKPiArCQlpZiAoKG12ZWJ1X3JlYWRsKHBvcnQsIFBDSUVfSU5UX1VOTUFTS19P RkYpICYKPiArCQkgICAgICBQQ0lFX0lOVF9FUlJfTUFTSykgPT0gUENJRV9JTlRfRVJSX01BU0sp Cj4gKwkJCXZhbCB8PSBQQ0lfQlJJREdFX0NUTF9TRVJSIDw8IDE2Owo+ICsJCWVsc2UKPiArCQkJ dmFsICY9IH4oUENJX0JSSURHRV9DVExfU0VSUiA8PCAxNik7Cj4gIAkJaWYgKG12ZWJ1X3JlYWRs KHBvcnQsIFBDSUVfQ1RSTF9PRkYpICYgUENJRV9DVFJMX01BU1RFUl9IT1RfUkVTRVQpCj4gIAkJ CXZhbCB8PSBQQ0lfQlJJREdFX0NUTF9CVVNfUkVTRVQgPDwgMTY7Cj4gIAkJZWxzZQo+IEBAIC02 NzUsNiArNzAzLDExIEBAIG12ZWJ1X3BjaV9icmlkZ2VfZW11bF9wY2llX2NvbmZfcmVhZChzdHJ1 Y3QgcGNpX2JyaWRnZV9lbXVsICpicmlkZ2UsCj4gIAkJYnJlYWs7Cj4gIAl9Cj4gIAo+ICsJY2Fz ZSBQQ0lfRVhQX1JUQ1RMOgo+ICsJCSp2YWx1ZSA9IChtdmVidV9yZWFkbChwb3J0LCBQQ0lFX0lO VF9VTk1BU0tfT0ZGKSAmCj4gKwkJCSAgUENJRV9JTlRfUE1fUE1FKSA/IFBDSV9FWFBfUlRDVExf UE1FSUUgOiAwOwo+ICsJCWJyZWFrOwo+ICsKPiAgCWNhc2UgUENJX0VYUF9SVFNUQToKPiAgCQkq dmFsdWUgPSBtdmVidV9yZWFkbChwb3J0LCBQQ0lFX1JDX1JUU1RBKTsKPiAgCQlicmVhazsKPiBA QCAtNzgwLDYgKzgxMywxNCBAQCBtdmVidV9wY2lfYnJpZGdlX2VtdWxfYmFzZV9jb25mX3dyaXRl KHN0cnVjdCBwY2lfYnJpZGdlX2VtdWwgKmJyaWRnZSwKPiAgCQlicmVhazsKPiAgCj4gIAljYXNl IFBDSV9JTlRFUlJVUFRfTElORToKPiArCQlpZiAoKG1hc2sgJiAoUENJX0JSSURHRV9DVExfU0VS UiA8PCAxNikpICYmIHBvcnQtPmVycm9yX2lycSA+IDApIHsKPiArCQkJdTMyIHVubWFzayA9IG12 ZWJ1X3JlYWRsKHBvcnQsIFBDSUVfSU5UX1VOTUFTS19PRkYpOwo+ICsJCQlpZiAobmV3ICYgKFBD SV9CUklER0VfQ1RMX1NFUlIgPDwgMTYpKQo+ICsJCQkJdW5tYXNrIHw9IFBDSUVfSU5UX0VSUl9N QVNLOwo+ICsJCQllbHNlCj4gKwkJCQl1bm1hc2sgJj0gflBDSUVfSU5UX0VSUl9NQVNLOwo+ICsJ CQltdmVidV93cml0ZWwocG9ydCwgdW5tYXNrLCBQQ0lFX0lOVF9VTk1BU0tfT0ZGKTsKPiArCQl9 Cj4gIAkJaWYgKG1hc2sgJiAoUENJX0JSSURHRV9DVExfQlVTX1JFU0VUIDw8IDE2KSkgewo+ICAJ CQl1MzIgY3RybCA9IG12ZWJ1X3JlYWRsKHBvcnQsIFBDSUVfQ1RSTF9PRkYpOwo+ICAJCQlpZiAo bmV3ICYgKFBDSV9CUklER0VfQ1RMX0JVU19SRVNFVCA8PCAxNikpCj4gQEAgLTgzOCwxMCArODc5 LDI1IEBAIG12ZWJ1X3BjaV9icmlkZ2VfZW11bF9wY2llX2NvbmZfd3JpdGUoc3RydWN0IHBjaV9i cmlkZ2VfZW11bCAqYnJpZGdlLAo+ICAJCSAqIFBNRSBTdGF0dXMgYml0IGluIFJvb3QgU3RhdHVz IFJlZ2lzdGVyIChQQ0lFX1JDX1JUU1RBKQo+ICAJCSAqIGlzIHJlYWQtb25seSBhbmQgY2FuIGJl IGNsZWFyZWQgb25seSBieSB3cml0aW5nIDBiIHRvIHRoZQo+ICAJCSAqIEludGVycnVwdCBDYXVz ZSBSVzBDIHJlZ2lzdGVyIChQQ0lFX0lOVF9DQVVTRV9PRkYpLiBTbwo+IC0JCSAqIGNsZWFyIFBN RSB2aWEgSW50ZXJydXB0IENhdXNlLgo+ICsJCSAqIGNsZWFyIFBNRSB2aWEgSW50ZXJydXB0IENh dXNlIGFuZCBhbHNvIHNldCBwb3J0LT5wbWVfcGVuZGluZwo+ICsJCSAqIHZhcmlhYmxlIHRvIGZh bHNlIHZhbHVlIHRvIHN0YXJ0IHByb2Nlc3NpbmcgUE1FIGludGVycnVwdHMKPiArCQkgKiBpbiBp bnRlcnJ1cHQgaGFuZGxlciBhZ2Fpbi4KPiAgCQkgKi8KPiAtCQlpZiAobmV3ICYgUENJX0VYUF9S VFNUQV9QTUUpCj4gKwkJaWYgKG5ldyAmIFBDSV9FWFBfUlRTVEFfUE1FKSB7Cj4gIAkJCW12ZWJ1 X3dyaXRlbChwb3J0LCB+UENJRV9JTlRfUE1fUE1FLCBQQ0lFX0lOVF9DQVVTRV9PRkYpOwo+ICsJ CQlwb3J0LT5wbWVfcGVuZGluZyA9IGZhbHNlOwo+ICsJCX0KPiArCQlicmVhazsKPiArCj4gKwlj YXNlIFBDSV9FWFBfUlRDVEw6Cj4gKwkJaWYgKChtYXNrICYgUENJX0VYUF9SVENUTF9QTUVJRSkg JiYgcG9ydC0+ZXJyb3JfaXJxID4gMCkgewo+ICsJCQl1MzIgdW5tYXNrID0gbXZlYnVfcmVhZGwo cG9ydCwgUENJRV9JTlRfVU5NQVNLX09GRik7Cj4gKwkJCWlmIChuZXcgJiBQQ0lfRVhQX1JUQ1RM X1BNRUlFKQo+ICsJCQkJdW5tYXNrIHw9IFBDSUVfSU5UX1BNX1BNRTsKPiArCQkJZWxzZQo+ICsJ CQkJdW5tYXNrICY9IH5QQ0lFX0lOVF9QTV9QTUU7Cj4gKwkJCW12ZWJ1X3dyaXRlbChwb3J0LCB1 bm1hc2ssIFBDSUVfSU5UX1VOTUFTS19PRkYpOwo+ICsJCX0KPiAgCQlicmVhazsKPiAgCj4gIAlj YXNlIFBDSV9FWFBfREVWQ1RMMjoKPiBAQCAtOTI0LDYgKzk4MCwxNCBAQCBzdGF0aWMgaW50IG12 ZWJ1X3BjaV9icmlkZ2VfZW11bF9pbml0KHN0cnVjdCBtdmVidV9wY2llX3BvcnQgKnBvcnQpCj4g IAkJYnJpZGdlX2ZsYWdzIHw9IFBDSV9CUklER0VfRU1VTF9OT19JT19GT1JXQVJEOwo+ICAJfQo+ ICAKPiArCS8qCj4gKwkgKiBJbnRlcnJ1cHRzIG9uIGVtdWxhdGVkIGJyaWRnZSBhcmUgc3VwcG9y dGVkIG9ubHkgd2hlbiAiZXJyb3IiCj4gKwkgKiBpbnRlcnJ1cHQgd2FzIHNwZWNpZmllZCBpbiBE VC4gV2l0aG91dCBpdCBlbXVsYXRlZCBicmlkZ2UgY2Fubm90Cj4gKwkgKiBlbXVsYXRlIGludGVy cnVwdHMuCj4gKwkgKi8KPiArCWlmIChwb3J0LT5lcnJvcl9pcnEgPiAwKQo+ICsJCWJyaWRnZS0+ Y29uZi5pbnRwaW4gPSBQQ0lfSU5URVJSVVBUX0lOVEE7Cj4gKwo+ICAJLyoKPiAgCSAqIE9sZGVy IG12ZWJ1IGhhcmR3YXJlIHByb3ZpZGVzIFBDSWUgQ2FwYWJpbGl0eSBzdHJ1Y3R1cmUgb25seSBp bgo+ICAJICogdmVyc2lvbiAxLiBOZXcgaGFyZHdhcmUgcHJvdmlkZXMgaXQgaW4gdmVyc2lvbiAy Lgo+IEBAIC0xMDcyLDYgKzExMzYsMjYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfZG9tYWlu X29wcyBtdmVidV9wY2llX2ludHhfaXJxX2RvbWFpbl9vcHMgPSB7Cj4gIAkueGxhdGUgPSBpcnFf ZG9tYWluX3hsYXRlX29uZWNlbGwsCj4gIH07Cj4gIAo+ICtzdGF0aWMgc3RydWN0IGlycV9jaGlw IHJwX2lycV9jaGlwID0gewo+ICsJLm5hbWUgPSAibXZlYnUtcnAiLAo+ICt9Owo+ICsKPiArc3Rh dGljIGludCBtdmVidV9wY2llX3JwX2lycV9tYXAoc3RydWN0IGlycV9kb21haW4gKmgsCj4gKwkJ CQkgICB1bnNpZ25lZCBpbnQgdmlycSwgaXJxX2h3X251bWJlcl90IGh3aXJxKQo+ICt7Cj4gKwlz dHJ1Y3QgbXZlYnVfcGNpZV9wb3J0ICpwb3J0ID0gaC0+aG9zdF9kYXRhOwo+ICsKPiArCWlycV9z ZXRfY2hpcF9hbmRfaGFuZGxlcih2aXJxLCAmcnBfaXJxX2NoaXAsIGhhbmRsZV9zaW1wbGVfaXJx KTsKPiArCWlycV9zZXRfY2hpcF9kYXRhKHZpcnEsIHBvcnQpOwo+ICsKPiArCXJldHVybiAwOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9kb21haW5fb3BzIG12ZWJ1X3BjaWVf cnBfaXJxX2RvbWFpbl9vcHMgPSB7Cj4gKwkubWFwID0gbXZlYnVfcGNpZV9ycF9pcnFfbWFwLAo+ ICsJLnhsYXRlID0gaXJxX2RvbWFpbl94bGF0ZV9vbmVjZWxsLAo+ICt9Owo+ICsKPiAgc3RhdGlj IGludCBtdmVidV9wY2llX2luaXRfaXJxX2RvbWFpbihzdHJ1Y3QgbXZlYnVfcGNpZV9wb3J0ICpw b3J0KQo+ICB7Cj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcG9ydC0+cGNpZS0+cGRldi0+ZGV2 Owo+IEBAIC0xMDk0LDEwICsxMTc4LDcyIEBAIHN0YXRpYyBpbnQgbXZlYnVfcGNpZV9pbml0X2ly cV9kb21haW4oc3RydWN0IG12ZWJ1X3BjaWVfcG9ydCAqcG9ydCkKPiAgCQlyZXR1cm4gLUVOT01F TTsKPiAgCX0KPiAgCj4gKwkvKgo+ICsJICogV2hlbiAiZXJyb3IiIGludGVycnVwdCB3YXMgbm90 IHNwZWNpZmllZCBpbiBEVCB0aGVuIHRoZXJlIGlzIG5vCj4gKwkgKiBzdXBwb3J0IGZvciBpbnRl cnJ1cHRzIG9uIGVtdWxhdGVkIHJvb3QgYnJpZGdlLiBTbyBza2lwIGZvbGxvd2luZwo+ICsJICog aW5pdGlhbGl6YXRpb24uCj4gKwkgKi8KPiArCWlmIChwb3J0LT5lcnJvcl9pcnEgPD0gMCkKPiAr CQlyZXR1cm4gMDsKPiArCj4gKwlwb3J0LT5ycF9pcnFfZG9tYWluID0gaXJxX2RvbWFpbl9hZGRf bGluZWFyKE5VTEwsIDEsCj4gKwkJCQkJCSAgICAgICZtdmVidV9wY2llX3JwX2lycV9kb21haW5f b3BzLAo+ICsJCQkJCQkgICAgICBwb3J0KTsKPiArCWlmICghcG9ydC0+cnBfaXJxX2RvbWFpbikg ewo+ICsJCWlycV9kb21haW5fcmVtb3ZlKHBvcnQtPmludHhfaXJxX2RvbWFpbik7Cj4gKwkJZGV2 X2VycihkZXYsICJGYWlsZWQgdG8gYWRkIFJvb3QgUG9ydCBJUlEgZG9tYWluIGZvciAlc1xuIiwg cG9ydC0+bmFtZSk7Cj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwl9Cj4gKwo+ICAJcmV0dXJuIDA7 Cj4gIH0KPiAgCj4gLXN0YXRpYyBpcnFyZXR1cm5fdCBtdmVidV9wY2llX2lycV9oYW5kbGVyKGlu dCBpcnEsIHZvaWQgKmFyZykKPiArc3RhdGljIGlycXJldHVybl90IG12ZWJ1X3BjaWVfZXJyb3Jf aXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQo+ICt7Cj4gKwlzdHJ1Y3QgbXZlYnVfcGNp ZV9wb3J0ICpwb3J0ID0gYXJnOwo+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gJnBvcnQtPnBjaWUt PnBkZXYtPmRldjsKPiArCXUzMiBjYXVzZSwgdW5tYXNrLCBzdGF0dXM7Cj4gKwo+ICsJY2F1c2Ug PSBtdmVidV9yZWFkbChwb3J0LCBQQ0lFX0lOVF9DQVVTRV9PRkYpOwo+ICsJdW5tYXNrID0gbXZl YnVfcmVhZGwocG9ydCwgUENJRV9JTlRfVU5NQVNLX09GRik7Cj4gKwlzdGF0dXMgPSBjYXVzZSAm IHVubWFzazsKPiArCj4gKwkvKiAiZXJyb3IiIGludGVycnVwdCBoYW5kbGVyIGRvZXMgbm90IHBy b2Nlc3MgSU5UWCBpbnRlcnJ1cHRzICovCj4gKwlzdGF0dXMgJj0gfihQQ0lFX0lOVF9JTlRYKDAp IHwgUENJRV9JTlRfSU5UWCgxKSB8Cj4gKwkJICAgIFBDSUVfSU5UX0lOVFgoMikgfCBQQ0lFX0lO VF9JTlRYKDMpKTsKPiArCj4gKwkvKiBQcm9jZXNzIFBNRSBpbnRlcnJ1cHQgKi8KPiArCWlmICgo c3RhdHVzICYgUENJRV9JTlRfUE1fUE1FKSAmJiAhcG9ydC0+cG1lX3BlbmRpbmcpIHsKPiArCQkv Kgo+ICsJCSAqIERvIG5vdCBjbGVhciBQTUUgaW50ZXJydXB0IGJpdCBpbiBDYXVzZSBSZWdpc3Rl ciBhcyBpdAo+ICsJCSAqIGludmFsaWRhdGVzIGFsc28gY29udGVudCBvZiBSb290IFN0YXR1cyBS ZWdpc3Rlci4gSW5zdGVhZAo+ICsJCSAqIHNldCBwb3J0LT5wbWVfcGVuZGluZyB2YXJpYWJsZSB0 byB0cnVlIHRvIGluZGljYXRlIHRoYXQKPiArCQkgKiBuZXh0IHRpbWUgUE1FIGludGVycnVwdCBz aG91bGQgYmUgaWdub3JlZCB1bnRpbCB2YXJpYWJsZQo+ICsJCSAqIGlzIGJhY2sgdG8gdGhlIGZh bHNlIHZhbHVlLgo+ICsJCSAqLwo+ICsJCXBvcnQtPnBtZV9wZW5kaW5nID0gdHJ1ZTsKPiArCQlp ZiAoZ2VuZXJpY19oYW5kbGVfZG9tYWluX2lycShwb3J0LT5ycF9pcnFfZG9tYWluLCAwKSA9PSAt RUlOVkFMKQo+ICsJCQlkZXZfZXJyX3JhdGVsaW1pdGVkKGRldiwgInVuaGFuZGxlZCBQTUUgSVJR XG4iKTsKPiArCX0KPiArCj4gKwkvKiBQcm9jZXNzIEVSUiBpbnRlcnJ1cHQgKi8KPiArCWlmIChz dGF0dXMgJiBQQ0lFX0lOVF9FUlJfTUFTSykgewo+ICsJCW12ZWJ1X3dyaXRlbChwb3J0LCB+UENJ RV9JTlRfRVJSX01BU0ssIFBDSUVfSU5UX0NBVVNFX09GRik7Cj4gKwkJaWYgKGdlbmVyaWNfaGFu ZGxlX2RvbWFpbl9pcnEocG9ydC0+cnBfaXJxX2RvbWFpbiwgMCkgPT0gLUVJTlZBTCkKPiArCQkJ ZGV2X2Vycl9yYXRlbGltaXRlZChkZXYsICJ1bmhhbmRsZWQgRVJSIElSUVxuIik7Cj4gKwl9Cj4g Kwo+ICsJLyogUHJvY2VzcyBsb2NhbCBFUlIgaW50ZXJydXB0ICovCj4gKwlpZiAoc3RhdHVzICYg UENJRV9JTlRfREVUX01BU0spIHsKPiArCQltdmVidV93cml0ZWwocG9ydCwgflBDSUVfSU5UX0RF VF9NQVNLLCBQQ0lFX0lOVF9DQVVTRV9PRkYpOwo+ICsJCWlmIChnZW5lcmljX2hhbmRsZV9kb21h aW5faXJxKHBvcnQtPnJwX2lycV9kb21haW4sIDApID09IC1FSU5WQUwpCj4gKwkJCWRldl9lcnJf cmF0ZWxpbWl0ZWQoZGV2LCAidW5oYW5kbGVkIEVSUiBJUlFcbiIpOwo+ICsJfQo+ICsKPiArCXJl dHVybiBzdGF0dXMgPyBJUlFfSEFORExFRCA6IElSUV9OT05FOwo+ICt9Cj4gKwo+ICtzdGF0aWMg aXJxcmV0dXJuX3QgbXZlYnVfcGNpZV9pbnR4X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFy ZykKPiAgewo+ICAJc3RydWN0IG12ZWJ1X3BjaWVfcG9ydCAqcG9ydCA9IGFyZzsKPiAgCXN0cnVj dCBkZXZpY2UgKmRldiA9ICZwb3J0LT5wY2llLT5wZGV2LT5kZXY7Cj4gQEAgLTExMDgsNiArMTI1 NCwxMCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgbXZlYnVfcGNpZV9pcnFfaGFuZGxlcihpbnQgaXJx LCB2b2lkICphcmcpCj4gIAl1bm1hc2sgPSBtdmVidV9yZWFkbChwb3J0LCBQQ0lFX0lOVF9VTk1B U0tfT0ZGKTsKPiAgCXN0YXR1cyA9IGNhdXNlICYgdW5tYXNrOwo+ICAKPiArCS8qICJpbnR4IiBp bnRlcnJ1cHQgaGFuZGxlciBwcm9jZXNzIG9ubHkgSU5UWCBpbnRlcnJ1cHRzICovCj4gKwlzdGF0 dXMgJj0gUENJRV9JTlRfSU5UWCgwKSB8IFBDSUVfSU5UX0lOVFgoMSkgfAo+ICsJCSAgUENJRV9J TlRfSU5UWCgyKSB8IFBDSUVfSU5UX0lOVFgoMyk7Cj4gKwo+ICAJLyogUHJvY2VzcyBsZWdhY3kg SU5UeCBpbnRlcnJ1cHRzICovCj4gIAlmb3IgKGkgPSAwOyBpIDwgUENJX05VTV9JTlRYOyBpKysp IHsKPiAgCQlpZiAoIShzdGF0dXMgJiBQQ0lFX0lOVF9JTlRYKGkpKSkKPiBAQCAtMTEyMiw5ICsx MjcyLDI5IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBtdmVidV9wY2llX2lycV9oYW5kbGVyKGludCBp cnEsIHZvaWQgKmFyZykKPiAgCj4gIHN0YXRpYyBpbnQgbXZlYnVfcGNpZV9tYXBfaXJxKGNvbnN0 IHN0cnVjdCBwY2lfZGV2ICpkZXYsIHU4IHNsb3QsIHU4IHBpbikKPiAgewo+IC0JLyogSW50ZXJy dXB0IHN1cHBvcnQgb24gbXZlYnUgZW11bGF0ZWQgYnJpZGdlcyBpcyBub3QgaW1wbGVtZW50ZWQg eWV0ICovCj4gLQlpZiAoZGV2LT5idXMtPm51bWJlciA9PSAwKQo+IC0JCXJldHVybiAwOyAvKiBQ cm9wZXIgcmV0dXJuIGNvZGUgMCA9PSBOT19JUlEgKi8KPiArCXN0cnVjdCBtdmVidV9wY2llX3Bv cnQgKnBvcnQ7Cj4gKwlzdHJ1Y3QgbXZlYnVfcGNpZSAqcGNpZTsKPiArCj4gKwlpZiAoZGV2LT5i dXMtPm51bWJlciA9PSAwKSB7Cj4gKwkJLyoKPiArCQkgKiBFYWNoIGVtdWxhdGVkIHJvb3QgYnJp ZGdlIGZvciBldmVyeSBtdmVidSBwb3J0IGhhcyBpdHMgb3duCj4gKwkJICogUm9vdCBQb3J0IGly cSBjaGlwIGFuZCBpcnEgZG9tYWluLiBBcmd1bWVudCBwaW4gaXMgdGhlIElOVHgKPiArCQkgKiBw aW4gKDE9SU5UQSwgMj1JTlRCLCAzPUlOVEMsIDQ9SU5URCkgYW5kIGh3aXJxIGZvciBmdW5jdGlv bgo+ICsJCSAqIGlycV9jcmVhdGVfbWFwcGluZygpIGlzIGluZGV4ZWQgZnJvbSB6ZXJvLgo+ICsJ CSAqLwo+ICsJCXBjaWUgPSBkZXYtPmJ1cy0+c3lzZGF0YTsKPiArCQlwb3J0ID0gbXZlYnVfcGNp ZV9maW5kX3BvcnQocGNpZSwgZGV2LT5idXMsIFBDSV9ERVZGTihzbG90LCAwKSk7Cj4gKwkJaWYg KCFwb3J0KQo+ICsJCQlyZXR1cm4gMDsgLyogUHJvcGVyIHJldHVybiBjb2RlIDAgPT0gTk9fSVJR ICovCj4gKwkJLyoKPiArCQkgKiBwb3J0LT5ycF9pcnFfZG9tYWluIGlzIGF2YWlsYWJsZSBvbmx5 IHdoZW4gImVycm9yIiBpbnRlcnJ1cHQKPiArCQkgKiB3YXMgc3BlY2lmaWVkIGluIERULiBXaGVu IGlzIG5vdCBhdmFpbGFibGUgdGhlbiBpbnRlcnJ1cHRzCj4gKwkJICogZm9yIGVtdWxhdGVkIHJv b3QgYnJpZGdlIGFyZSBub3QgcHJvdmlkZWQuCj4gKwkJICovCj4gKwkJaWYgKHBvcnQtPmVycm9y X2lycSA8PSAwKQo+ICsJCQlyZXR1cm4gMDsgLyogUHJvcGVyIHJldHVybiBjb2RlIDAgPT0gTk9f SVJRICovCj4gKwkJcmV0dXJuIGlycV9jcmVhdGVfbWFwcGluZyhwb3J0LT5ycF9pcnFfZG9tYWlu LCBwaW4gLSAxKTsKPiArCX0KPiAgCj4gIAlyZXR1cm4gb2ZfaXJxX3BhcnNlX2FuZF9tYXBfcGNp KGRldiwgc2xvdCwgcGluKTsKPiAgfQo+IEBAIC0xMzMzLDYgKzE1MDMsMjEgQEAgc3RhdGljIGlu dCBtdmVidV9wY2llX3BhcnNlX3BvcnQoc3RydWN0IG12ZWJ1X3BjaWUgKnBjaWUsCj4gIAkJCSBw b3J0LT5uYW1lLCBjaGlsZCk7Cj4gIAl9Cj4gIAo+ICsJLyoKPiArCSAqIE9sZCBEVCBiaW5kaW5n cyBkbyBub3QgY29udGFpbiAiZXJyb3IiIGludGVycnVwdAo+ICsJICogc28gZG8gbm90IGZhaWwg cHJvYmluZyBkcml2ZXIgd2hlbiBpbnRlcnJ1cHQgZG9lcyBub3QgZXhpc3QuCj4gKwkgKi8KPiAr CXBvcnQtPmVycm9yX2lycSA9IG9mX2lycV9nZXRfYnluYW1lKGNoaWxkLCAiZXJyb3IiKTsKPiAr CWlmIChwb3J0LT5lcnJvcl9pcnEgPT0gLUVQUk9CRV9ERUZFUikgewo+ICsJCXJldCA9IHBvcnQt PmVycm9yX2lycTsKPiArCQlnb3RvIGVycjsKPiArCX0KPiArCWlmIChwb3J0LT5lcnJvcl9pcnEg PD0gMCkgewo+ICsJCWRldl93YXJuKGRldiwgIiVzOiBpbnRlcnJ1cHRzIG9uIFJvb3QgUG9ydCBh cmUgdW5zdXBwb3J0ZWQsICIKPiArCQkJICAgICAgIiVwT0YgZG9lcyBub3QgY29udGFpbiBlcnJv ciBpbnRlcnJ1cHRcbiIsCj4gKwkJCSBwb3J0LT5uYW1lLCBjaGlsZCk7Cj4gKwl9Cj4gKwo+ICAJ cmVzZXRfZ3BpbyA9IG9mX2dldF9uYW1lZF9ncGlvX2ZsYWdzKGNoaWxkLCAicmVzZXQtZ3Bpb3Mi LCAwLCAmZmxhZ3MpOwo+ICAJaWYgKHJlc2V0X2dwaW8gPT0gLUVQUk9CRV9ERUZFUikgewo+ICAJ CXJldCA9IHJlc2V0X2dwaW87Cj4gQEAgLTE1MzgsNyArMTcyMyw2IEBAIHN0YXRpYyBpbnQgbXZl YnVfcGNpZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICAKPiAgCWZvciAo aSA9IDA7IGkgPCBwY2llLT5ucG9ydHM7IGkrKykgewo+ICAJCXN0cnVjdCBtdmVidV9wY2llX3Bv cnQgKnBvcnQgPSAmcGNpZS0+cG9ydHNbaV07Cj4gLQkJaW50IGlycSA9IHBvcnQtPmludHhfaXJx Owo+ICAKPiAgCQljaGlsZCA9IHBvcnQtPmRuOwo+ICAJCWlmICghY2hpbGQpCj4gQEAgLTE1NjYs NyArMTc1MCw3IEBAIHN0YXRpYyBpbnQgbXZlYnVfcGNpZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2KQo+ICAJCQljb250aW51ZTsKPiAgCQl9Cj4gIAo+IC0JCWlmIChpcnEgPiAw KSB7Cj4gKwkJaWYgKHBvcnQtPmVycm9yX2lycSA+IDAgfHwgcG9ydC0+aW50eF9pcnEgPiAwKSB7 Cj4gIAkJCXJldCA9IG12ZWJ1X3BjaWVfaW5pdF9pcnFfZG9tYWluKHBvcnQpOwo+ICAJCQlpZiAo cmV0KSB7Cj4gIAkJCQlkZXZfZXJyKGRldiwgIiVzOiBjYW5ub3QgaW5pdCBpcnEgZG9tYWluXG4i LAo+IEBAIC0xNTc3LDE0ICsxNzYxLDQyIEBAIHN0YXRpYyBpbnQgbXZlYnVfcGNpZV9wcm9iZShz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICAJCQkJbXZlYnVfcGNpZV9wb3dlcmRvd24o cG9ydCk7Cj4gIAkJCQljb250aW51ZTsKPiAgCQkJfQo+ICsJCX0KPiArCj4gKwkJaWYgKHBvcnQt PmVycm9yX2lycSA+IDApIHsKPiArCQkJcmV0ID0gZGV2bV9yZXF1ZXN0X2lycShkZXYsIHBvcnQt PmVycm9yX2lycSwKPiArCQkJCQkgICAgICAgbXZlYnVfcGNpZV9lcnJvcl9pcnFfaGFuZGxlciwK PiArCQkJCQkgICAgICAgSVJRRl9TSEFSRUQgfCBJUlFGX05PX1RIUkVBRCwKPiArCQkJCQkgICAg ICAgcG9ydC0+bmFtZSwgcG9ydCk7Cj4gKwkJCWlmIChyZXQpIHsKPiArCQkJCWRldl9lcnIoZGV2 LCAiJXM6IGNhbm5vdCByZWdpc3RlciBlcnJvciBpbnRlcnJ1cHQgaGFuZGxlcjogJWRcbiIsCj4g KwkJCQkJcG9ydC0+bmFtZSwgcmV0KTsKPiArCQkJCWlmIChwb3J0LT5pbnR4X2lycV9kb21haW4p Cj4gKwkJCQkJaXJxX2RvbWFpbl9yZW1vdmUocG9ydC0+aW50eF9pcnFfZG9tYWluKTsKPiArCQkJ CWlmIChwb3J0LT5ycF9pcnFfZG9tYWluKQo+ICsJCQkJCWlycV9kb21haW5fcmVtb3ZlKHBvcnQt PnJwX2lycV9kb21haW4pOwo+ICsJCQkJcGNpX2JyaWRnZV9lbXVsX2NsZWFudXAoJnBvcnQtPmJy aWRnZSk7Cj4gKwkJCQlkZXZtX2lvdW5tYXAoZGV2LCBwb3J0LT5iYXNlKTsKPiArCQkJCXBvcnQt PmJhc2UgPSBOVUxMOwo+ICsJCQkJbXZlYnVfcGNpZV9wb3dlcmRvd24ocG9ydCk7Cj4gKwkJCQlj b250aW51ZTsKPiArCQkJfQo+ICsJCX0KPiAgCj4gLQkJCXJldCA9IGRldm1fcmVxdWVzdF9pcnEo ZGV2LCBpcnEsIG12ZWJ1X3BjaWVfaXJxX2hhbmRsZXIsCj4gKwkJaWYgKHBvcnQtPmludHhfaXJx ID4gMCkgewo+ICsJCQlyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKGRldiwgcG9ydC0+aW50eF9pcnEs Cj4gKwkJCQkJICAgICAgIG12ZWJ1X3BjaWVfaW50eF9pcnFfaGFuZGxlciwKPiAgCQkJCQkgICAg ICAgSVJRRl9TSEFSRUQgfCBJUlFGX05PX1RIUkVBRCwKPiAgCQkJCQkgICAgICAgcG9ydC0+bmFt ZSwgcG9ydCk7Cj4gIAkJCWlmIChyZXQpIHsKPiAtCQkJCWRldl9lcnIoZGV2LCAiJXM6IGNhbm5v dCByZWdpc3RlciBpbnRlcnJ1cHQgaGFuZGxlcjogJWRcbiIsCj4gKwkJCQlkZXZfZXJyKGRldiwg IiVzOiBjYW5ub3QgcmVnaXN0ZXIgaW50eCBpbnRlcnJ1cHQgaGFuZGxlcjogJWRcbiIsCj4gIAkJ CQkJcG9ydC0+bmFtZSwgcmV0KTsKPiAtCQkJCWlycV9kb21haW5fcmVtb3ZlKHBvcnQtPmludHhf aXJxX2RvbWFpbik7Cj4gKwkJCQlpZiAocG9ydC0+ZXJyb3JfaXJxID4gMCkKPiArCQkJCQlkZXZt X2ZyZWVfaXJxKGRldiwgcG9ydC0+ZXJyb3JfaXJxLCBwb3J0KTsKPiArCQkJCWlmIChwb3J0LT5p bnR4X2lycV9kb21haW4pCj4gKwkJCQkJaXJxX2RvbWFpbl9yZW1vdmUocG9ydC0+aW50eF9pcnFf ZG9tYWluKTsKPiArCQkJCWlmIChwb3J0LT5ycF9pcnFfZG9tYWluKQo+ICsJCQkJCWlycV9kb21h aW5fcmVtb3ZlKHBvcnQtPnJwX2lycV9kb21haW4pOwo+ICAJCQkJcGNpX2JyaWRnZV9lbXVsX2Ns ZWFudXAoJnBvcnQtPmJyaWRnZSk7Cj4gIAkJCQlkZXZtX2lvdW5tYXAoZGV2LCBwb3J0LT5iYXNl KTsKPiAgCQkJCXBvcnQtPmJhc2UgPSBOVUxMOwo+IEBAIC0xNzIyLDYgKzE5MzQsMTIgQEAgc3Rh dGljIGludCBtdmVidV9wY2llX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ ICAJCQl9Cj4gIAkJCWlycV9kb21haW5fcmVtb3ZlKHBvcnQtPmludHhfaXJxX2RvbWFpbik7Cj4g IAkJfQo+ICsJCWlmIChwb3J0LT5ycF9pcnFfZG9tYWluKSB7Cj4gKwkJCWludCB2aXJxID0gaXJx X2ZpbmRfbWFwcGluZyhwb3J0LT5ycF9pcnFfZG9tYWluLCAwKTsKPiArCQkJaWYgKHZpcnEgPiAw KQo+ICsJCQkJaXJxX2Rpc3Bvc2VfbWFwcGluZyh2aXJxKTsKPiArCQkJaXJxX2RvbWFpbl9yZW1v dmUocG9ydC0+cnBfaXJxX2RvbWFpbik7Cj4gKwkJfQo+ICAKPiAgCQkvKiBGcmVlIGNvbmZpZyBz cGFjZSBmb3IgZW11bGF0ZWQgcm9vdCBicmlkZ2UuICovCj4gIAkJcGNpX2JyaWRnZV9lbXVsX2Ns ZWFudXAoJnBvcnQtPmJyaWRnZSk7Cj4gLS0gCj4gMi4yMC4xCj4gCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcg bGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmlu ZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==