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=-10.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham 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 3B0BBC433DF for ; Wed, 5 Aug 2020 16:28:15 +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 EDB72206A2 for ; Wed, 5 Aug 2020 16:28:14 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="EmvrwFkA"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="2BymGdaH" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EDB72206A2 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-Type: Content-Transfer-Encoding:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:Message-ID:References:In-Reply-To:Subject:To:From: Date:MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=rQtdmV8lXxTANsFAaJA7xWA8nUy9+UL2QaeIBt+jLt4=; b=EmvrwFkA/iRsh5GvOKScfpzJg or+WJ9ZJeaOu6r0OKPvpIZBZ28lb65uplircTHdI3znRkMXkiZ5zkKxRdhx/dXjVA17BC9XdOLPyJ aV5hgXdn9suxTWI+88Db3oltRm2N/9ATxxho7DZ6FcmyU6aKdwcpy1b6aGqMbswP+t0Bq/kkXfZia fiysdZGed+RlA5eJzSMVPQRd2KtYOqTZWowVrqCxdZQZm0JZz3N9oMHCur2goRrT6meFlREqV/Dnm WgDJBjH+D2aYdblOpWxRgYNAqXz6SxqR2oIXBfxDAe0TpBi4m3ljh6BsHGk9SBnWT38k3KWYD46aS VWCGvxTpA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1k3MFZ-0003Qk-Uf; Wed, 05 Aug 2020 16:26:45 +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 1k3MFX-0003QM-92 for linux-arm-kernel@lists.infradead.org; Wed, 05 Aug 2020 16:26:44 +0000 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (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 77CD52067C; Wed, 5 Aug 2020 16:26:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1596644802; bh=NuRrHjb75cFrk+n0vybfkD6hzBt2HG5YdzBYnMqCit0=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=2BymGdaHusJTYFIG1xA3p908Cd/DF3LTrd7CO4lIWW06cbmdScox9iztI5jlm//wF iJmXcdFRD7g73XSW/VqccNdZOhWBzPT+Z6vSsQfXYa52Vk5pqJDbY0A4HcRYFkyIjO kqnDo0H5qnidMxWe2tEOBCpv6nYrUYhyipcTnJbM= Received: from disco-boy.misterjones.org ([51.254.78.96] helo=www.loen.fr) by disco-boy.misterjones.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1k3MFU-0003cw-Tu; Wed, 05 Aug 2020 17:26:41 +0100 MIME-Version: 1.0 Date: Wed, 05 Aug 2020 17:26:40 +0100 From: Marc Zyngier To: Daniel Palmer Subject: Re: [PATCH 2/3] irqchip: mstar: msc313-intc interrupt controller driver In-Reply-To: <20200805110052.2655487-3-daniel@0x0f.com> References: <20200805110052.2655487-1-daniel@0x0f.com> <20200805110052.2655487-3-daniel@0x0f.com> User-Agent: Roundcube Webmail/1.4.5 Message-ID: X-Sender: maz@kernel.org X-SA-Exim-Connect-IP: 51.254.78.96 X-SA-Exim-Rcpt-To: daniel@0x0f.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, tglx@linutronix.de, jason@lakedaemon.net, robh+dt@kernel.org, arnd@arndb.de, w@1wt.eu, mark-pk.tsai@mediatek.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200805_122643_479370_1F2D10A1 X-CRM114-Status: GOOD ( 33.32 ) 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: devicetree@vger.kernel.org, jason@lakedaemon.net, arnd@arndb.de, linux-kernel@vger.kernel.org, robh+dt@kernel.org, mark-pk.tsai@mediatek.com, tglx@linutronix.de, Willy Tarreau , linux-arm-kernel@lists.infradead.org Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org WysgTWFyay1QSyBUc2FpXQoKSGkgRGFuaWVsLAoKT24gMjAyMC0wOC0wNSAxMjowMCwgRGFuaWVs IFBhbG1lciB3cm90ZToKPiBBZGQgYSBkcml2ZXIgZm9yIHRoZSB0d28gcGVyaXBoZXJhbCBpbnRl cnJ1cHQgY29udHJvbGxlcnMKPiBpbiBNU3RhciBNU0MzMTMgYW5kIG90aGVyIE1TdGFyL1NpZ21h c3RhciBBcm12NyBTb0NzLgo+IAo+IFN1cHBvcnRzIGJvdGggdGhlICJJUlEiIGFuZCAiRklRIiBj b250cm9sbGVycyB0aGF0Cj4gZm9yd2FyZCBpbnRlcnJ1cHRzIGZyb20gdGhlIHZhcmlvdXMgSVAg YmxvY2tzIGluc2lkZSB0aGUKPiBTb0MgdG8gdGhlIEFSTSBHSUMuCj4gCj4gVGhleSBhcmUgYmFz aWNhbGx5IHRoZSBzYW1lIHRoaW5nIGV4Y2VwdCBmb3Igb25lIGRpZmZlcmVuY2U6Cj4gVGhlIEZJ USBjb250cm9sbGVyIG5lZWRzIHRvIGNsZWFyIHRoZSBpbnRlcnJ1cHQgYW5kIHRoZSBJUlEKPiBj b250cm9sbGVyIGRvZXNuJ3QuCj4gCj4gU2lnbmVkLW9mZi1ieTogRGFuaWVsIFBhbG1lciA8ZGFu aWVsQDB4MGYuY29tPgo+IFRlc3RlZC1ieTogV2lsbHkgVGFycmVhdSA8d0Axd3QuZXU+Cj4gLS0t Cj4gIE1BSU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMv aXJxY2hpcC9NYWtlZmlsZSAgICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvaXJxY2hpcC9pcnEt bXNjMzEzLWludGMuYyB8IDIxMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgMyBm aWxlcyBjaGFuZ2VkLCAyMTIgaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9pcnFjaGlwL2lycS1tc2MzMTMtaW50Yy5jCj4gCj4gZGlmZiAtLWdpdCBhL01BSU5UQUlO RVJTIGIvTUFJTlRBSU5FUlMKPiBpbmRleCA2ZTY0ZDE3YWFkN2IuLjRkMDc0MDNhNzcyNiAxMDA2 NDQKPiAtLS0gYS9NQUlOVEFJTkVSUwo+ICsrKyBiL01BSU5UQUlORVJTCj4gQEAgLTIxNTcsNiAr MjE1Nyw3IEBAIEY6CWFyY2gvYXJtL2Jvb3QvZHRzL2luZmluaXR5Ki5kdHNpCj4gIEY6CWFyY2gv YXJtL2Jvb3QvZHRzL21lcmN1cnkqLmR0c2kKPiAgRjoJYXJjaC9hcm0vYm9vdC9kdHMvbXN0YXIt djcuZHRzaQo+ICBGOglhcmNoL2FybS9tYWNoLW1zdGFyLwo+ICtGOglkcml2ZXJzL2lycWNoaXAv aXJxLW1zYzMxMy1pbnRjLmMKPiAKPiAgQVJNL05FQyBNT0JJTEVQUk8gOTAwL2MgTUFDSElORSBT VVBQT1JUCj4gIE06CU1pY2hhZWwgUGV0Y2hrb3Zza3kgPG1rcGV0Y2hAaW50ZXJub2RlLm9uLm5l dD4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlIGIvZHJpdmVycy9pcnFj aGlwL01ha2VmaWxlCj4gaW5kZXggMTMzZjljNDU3NDRhLi42N2YzYWUzNTA3YjggMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9pcnFjaGlwL01h a2VmaWxlCj4gQEAgLTExMSwzICsxMTEsNCBAQCBvYmotJChDT05GSUdfTE9PTkdTT05fSFRQSUMp CQkrPSAKPiBpcnEtbG9vbmdzb24taHRwaWMubwo+ICBvYmotJChDT05GSUdfTE9PTkdTT05fSFRW RUMpCQkrPSBpcnEtbG9vbmdzb24taHR2ZWMubwo+ICBvYmotJChDT05GSUdfTE9PTkdTT05fUENI X1BJQykJCSs9IGlycS1sb29uZ3Nvbi1wY2gtcGljLm8KPiAgb2JqLSQoQ09ORklHX0xPT05HU09O X1BDSF9NU0kpCQkrPSBpcnEtbG9vbmdzb24tcGNoLW1zaS5vCj4gK29iai0kKENPTkZJR19BUkNI X01TVEFSVjcpCQkrPSBpcnEtbXNjMzEzLWludGMubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2ly cWNoaXAvaXJxLW1zYzMxMy1pbnRjLmMKPiBiL2RyaXZlcnMvaXJxY2hpcC9pcnEtbXNjMzEzLWlu dGMuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5iNTBmNWM4 NThkMzgKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9pcnFjaGlwL2lycS1tc2MzMTMt aW50Yy5jCj4gQEAgLTAsMCArMSwyMTAgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAKPiArLyoKPiArICogQ29weXJpZ2h0IChDKSAyMDE5IERhbmllbCBQYWxtZXIKPiAr ICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvaXJxLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pcnFj aGlwLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pcnFkb21haW4uaD4KPiArI2luY2x1ZGUgPGxpbnV4 L29mLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9vZl9hZGRyZXNzLmg+Cj4gKyNpbmNsdWRlIDxkdC1i aW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9hcm0tZ2ljLmg+Cj4gKwo+ICsjZGVmaW5lIFJF R09GRl9NQVNLCQkweDAKPiArI2RlZmluZSBSRUdPRkZfUE9MQVJJVFkJCTB4MTAKPiArI2RlZmlu ZSBSRUdPRkZfU1RBVFVTQ0xFQVIJMHgyMAo+ICsjZGVmaW5lIElSUVNQRVJSRUcJCTE2Cj4gKyNk ZWZpbmUgSVJRQklUKGh3aXJxKQkJQklUKChod2lycSAlIElSUVNQRVJSRUcpKQo+ICsjZGVmaW5l IFJFR09GRihod2lycSkJCSgoaHdpcnEgPj4gNCkgKiA0KQo+ICsKPiArc3RydWN0IG1zYzMxM19p bnRjIHsKPiArCXN0cnVjdCBpcnFfZG9tYWluICpkb21haW47Cj4gKwl2b2lkIF9faW9tZW0gKmJh c2U7Cj4gKwlzdHJ1Y3QgaXJxX2NoaXAgaXJxY2hpcDsKCldoeSBkbyB5b3UgbmVlZCB0byBlbWJl ZCB0aGUgaXJxX2NoaXAgb24gYSBwZXItY29udHJvbGxlciBiYXNpcz8KCj4gKwl1OCBnaWNvZmY7 CgpHaXZlbiB0aGF0IGJhc2ljIFNQSXMgY2FuIGJlIGluIHRoZSAzMi0xMDE5IHJhbmdlLCB0aGlz IGlzIGF0CmJlc3Qgcmlza3kuIHUzMnMgYXJlIGZyZWUsIHBsZWFzZSB1c2UgdGhlbS4KCj4gK307 Cj4gKwo+ICtzdGF0aWMgdm9pZCBtc2MzMTNfaW50Y19tYXNrdW5tYXNrKHN0cnVjdCBtc2MzMTNf aW50YyAqaW50YywgaW50Cj4gaHdpcnEsIGJvb2wgbWFzaykKPiArewo+ICsJaW50IHJlZ29mZiA9 IFJFR09GRihod2lycSk7Cj4gKwl2b2lkIF9faW9tZW0gKmFkZHIgPSBpbnRjLT5iYXNlICsgUkVH T0ZGX01BU0sgKyByZWdvZmY7Cj4gKwl1MTYgYml0ID0gSVJRQklUKGh3aXJxKTsKPiArCXUxNiBy ZWcgPSByZWFkd19yZWxheGVkKGFkZHIpOwo+ICsKPiArCWlmIChtYXNrKQo+ICsJCXJlZyB8PSBi aXQ7Cj4gKwllbHNlCj4gKwkJcmVnICY9IH5iaXQ7Cj4gKwo+ICsJd3JpdGV3X3JlbGF4ZWQocmVn LCBhZGRyKTsKClJNVyBvbiBhIHNoYXJlZCBNTUlPIHJlZ2lzdGVyLiBOb3QgZ29pbmcgdG8gZW5k IHdlbGwuIFRoaXMgaXMgdmFsaWQKZm9yIGFsbCB0aGUgY2FsbGJhY2tzLCBJIGJlbGlldmUuCgpB bHNvLCBwbGVhc2UgaW5saW5lIHRoZSBtYXNrdW5tYXNrIGNvZGUgaW4gdGhlaXIgcmVzcGVjdGl2 ZSBjYWxsZXJzLgpJdCB3aWxsIGJlIG11Y2ggbW9yZSByZWFkYWJsZS4KCj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkIG1zYzMxM19pbnRjX21hc2tfaXJxKHN0cnVjdCBpcnFfZGF0YSAqZGF0YSkKPiAr ewo+ICsJc3RydWN0IG1zYzMxM19pbnRjICppbnRjID0gZGF0YS0+Y2hpcF9kYXRhOwo+ICsKPiAr CW1zYzMxM19pbnRjX21hc2t1bm1hc2soaW50YywgZGF0YS0+aHdpcnEsIHRydWUpOwo+ICsJaXJx X2NoaXBfbWFza19wYXJlbnQoZGF0YSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIG1zYzMxM19p bnRjX3VubWFza19pcnEoc3RydWN0IGlycV9kYXRhICpkYXRhKQo+ICt7Cj4gKwlzdHJ1Y3QgbXNj MzEzX2ludGMgKmludGMgPSBkYXRhLT5jaGlwX2RhdGE7Cj4gKwo+ICsJbXNjMzEzX2ludGNfbWFz a3VubWFzayhpbnRjLCBkYXRhLT5od2lycSwgZmFsc2UpOwo+ICsJaXJxX2NoaXBfdW5tYXNrX3Bh cmVudChkYXRhKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBtc2MzMTNfaW50Y19zZXRfdHlwZV9p cnEoc3RydWN0IGlycV9kYXRhICpkYXRhLCB1bnNpZ25lZAo+IGludCBmbG93X3R5cGUpCj4gK3sK PiArCXN0cnVjdCBtc2MzMTNfaW50YyAqaW50YyA9IGRhdGEtPmNoaXBfZGF0YTsKPiArCWludCBp cnEgPSBkYXRhLT5od2lycTsKPiArCWludCByZWdvZmYgPSBSRUdPRkYoaXJxKTsKPiArCXZvaWQg X19pb21lbSAqYWRkciA9IGludGMtPmJhc2UgKyBSRUdPRkZfUE9MQVJJVFkgKyByZWdvZmY7Cj4g Kwl1MTYgYml0ID0gSVJRQklUKGlycSk7Cj4gKwl1MTYgcmVnID0gcmVhZHdfcmVsYXhlZChhZGRy KTsKClBsZWFzZSB0cnkgdG8gd3JpdGUgdGhpcyBpbiBhIG1vcmUgcmVhZGFibGUgd2F5LiBGb3Ig ZXhhbXBsZToKCgogICAgICAgICBzdHJ1Y3QgbXNjMzEzX2ludGMgKmludGMgPSBkYXRhLT5jaGlw X2RhdGE7CiAgICAgICAgIHZvaWQgX19pb21lbSAqYWRkcjsKICAgICAgICAgdTE2IHJlZywgYml0 OwoKICAgICAgICAgYWRkciA9IGludGMtPmJhc2UgKyBSRUdPRkZfUE9MQVJJVFkgKyBSRUdPRkYo ZC0+aHdpcnEpOwogICAgICAgICByZWcgPSByZWFkd19yZWxheGVkKGFkZHIpOwogICAgICAgICBi aXQgPSBJUlFCSVQoZC0+aHdpcnEpOwoKV2hpdGUgc3BhY2UgaXMgZnJlZSwgYW5kIHNvbWUgb2Yg dGhlIHZhcmlhYmxlcyBhcmUgcmVhbGx5IHVzZWxlc3MuCgo+ICsKPiArCWlmIChmbG93X3R5cGUg JiAoSVJRX1RZUEVfRURHRV9GQUxMSU5HIHwgSVJRX1RZUEVfTEVWRUxfSElHSCkpCj4gKwkJcmVn ICY9IH5iaXQ7Cj4gKwllbHNlCj4gKwkJcmVnIHw9IGJpdDsKCkkgZG9uJ3QgZm9sbG93IGdyYXNw IHRoZSBsb2dpYyBoZXJlLiBXaGF0IGhhcHBlbnMgb24gRURHRV9CT1RILCBmb3IKZXhhbXBsZT8K Cj4gKwo+ICsJd3JpdGV3X3JlbGF4ZWQocmVnLCBhZGRyKTsKClN1cmVseSB5b3UgbmVlZCB0byBj b21tdW5pY2F0ZSB0aGUgY2hhbmdlIG9mIHNpZ25hbGxpbmcgbW9kZQp0byB0aGUgcGFyZW50IGly cWNoaXAsIGRvbid0IHlvdT8KCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQg bXNjMzEzX2ludGNfaXJxX2VvaShzdHJ1Y3QgaXJxX2RhdGEgKmRhdGEpCj4gK3sKPiArCXN0cnVj dCBtc2MzMTNfaW50YyAqaW50YyA9IGRhdGEtPmNoaXBfZGF0YTsKPiArCWludCBpcnEgPSBkYXRh LT5od2lycTsKPiArCWludCByZWdvZmYgPSBSRUdPRkYoaXJxKTsKPiArCXZvaWQgX19pb21lbSAq YWRkciA9IGludGMtPmJhc2UgKyBSRUdPRkZfU1RBVFVTQ0xFQVIgKyByZWdvZmY7Cj4gKwl1MTYg Yml0ID0gSVJRQklUKGlycSk7Cj4gKwl1MTYgcmVnID0gcmVhZHdfcmVsYXhlZChhZGRyKTsKPiAr Cj4gKwlyZWcgfD0gYml0Owo+ICsJd3JpdGV3X3JlbGF4ZWQocmVnLCBhZGRyKTsKPiArCWlycV9j aGlwX2VvaV9wYXJlbnQoZGF0YSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbXNjMzEzX2ludGNf ZG9tYWluX3RyYW5zbGF0ZShzdHJ1Y3QgaXJxX2RvbWFpbiAqZCwKPiArCQkJCSAgICAgc3RydWN0 IGlycV9md3NwZWMgKmZ3c3BlYywKPiArCQkJCSAgICAgdW5zaWduZWQgbG9uZyAqaHdpcnEsCj4g KwkJCQkgICAgIHVuc2lnbmVkIGludCAqdHlwZSkKPiArewo+ICsJaWYgKCFpc19vZl9ub2RlKGZ3 c3BlYy0+Zndub2RlKSB8fCBmd3NwZWMtPnBhcmFtX2NvdW50ICE9IDIpCj4gKwkJcmV0dXJuIC1F SU5WQUw7Cj4gKwo+ICsJKmh3aXJxID0gZndzcGVjLT5wYXJhbVswXTsKCkRvbid0IHlvdSB3YW50 IHRvIGNoZWNrIHRoYXQgdGhlIGlucHV0IHlvdSBnZXQgaXMgYWN0dWFsbHkgaW4gcmFuZ2U/Ck5v dCBhIGJpZyBkZWFsLCBnaXZlbiB0aGF0IHlvdSB0aGVuIHVzZSBpdCBhcyBhbiBpbnB1dCBwYXJh bWV0ZXIKdG8gdGhlIEdJQyBkcml2ZXIsIGl0J2QgYmV0dGVyIGJlIGNvcnJlY3QuCgo+ICsJKnR5 cGUgPSBmd3NwZWMtPnBhcmFtWzFdOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgaW50IG1zYzMxM19pbnRjX2RvbWFpbl9hbGxvYyhzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWlu LAo+IHVuc2lnbmVkIGludCB2aXJxLAo+ICsJCQkJIHVuc2lnbmVkIGludCBucl9pcnFzLCB2b2lk ICpkYXRhKQo+ICt7Cj4gKwlzdHJ1Y3QgaXJxX2Z3c3BlYyAqZndzcGVjID0gZGF0YTsKPiArCXN0 cnVjdCBpcnFfZndzcGVjIHBhcmVudF9md3NwZWM7Cj4gKwlzdHJ1Y3QgbXNjMzEzX2ludGMgKmlu dGMgPSBkb21haW4tPmhvc3RfZGF0YTsKPiArCj4gKwlpZiAoZndzcGVjLT5wYXJhbV9jb3VudCAh PSAyKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWlycV9kb21haW5fc2V0X2h3aXJxX2Fu ZF9jaGlwKGRvbWFpbiwgdmlycSwgZndzcGVjLT5wYXJhbVswXSwKPiAmaW50Yy0+aXJxY2hpcCwg aW50Yyk7Cj4gKwo+ICsJcGFyZW50X2Z3c3BlYy5md25vZGUgPSBkb21haW4tPnBhcmVudC0+Zndu b2RlOwo+ICsJcGFyZW50X2Z3c3BlYy5wYXJhbVswXSA9IEdJQ19TUEk7Cj4gKwlwYXJlbnRfZndz cGVjLnBhcmFtWzFdID0gZndzcGVjLT5wYXJhbVswXSArIGludGMtPmdpY29mZjsKPiArCXBhcmVu dF9md3NwZWMucGFyYW1bMl0gPSBmd3NwZWMtPnBhcmFtWzFdOwo+ICsJcGFyZW50X2Z3c3BlYy5w YXJhbV9jb3VudCA9IDM7Cj4gKwo+ICsJcmV0dXJuIGlycV9kb21haW5fYWxsb2NfaXJxc19wYXJl bnQoZG9tYWluLCB2aXJxLCBucl9pcnFzLAo+ICsJCQkJCSAgICAmcGFyZW50X2Z3c3BlYyk7Cj4g K30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgbXNjMzEzX2ludGNf ZG9tYWluX29wcyA9IHsKPiArCQkudHJhbnNsYXRlID0gbXNjMzEzX2ludGNfZG9tYWluX3RyYW5z bGF0ZSwKPiArCQkuYWxsb2MgPSBtc2MzMTNfaW50Y19kb21haW5fYWxsb2MsCj4gKwkJLmZyZWUg PSBpcnFfZG9tYWluX2ZyZWVfaXJxc19jb21tb24sCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50ICBt c2MzMTNfaW50Y19vZl9pbml0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSwKPiArCQkJCSAgIHN0 cnVjdCBkZXZpY2Vfbm9kZSAqcGFyZW50LAo+ICsJCQkJICAgdm9pZCAoKmVvaSkoc3RydWN0IGly cV9kYXRhICpkYXRhKSkKPiArewo+ICsJc3RydWN0IGlycV9kb21haW4gKmRvbWFpbl9wYXJlbnQ7 Cj4gKwlzdHJ1Y3QgbXNjMzEzX2ludGMgKmludGM7Cj4gKwlpbnQgcmV0ID0gMDsKPiArCXUzMiBn aWNvZmZzZXQsIG51bWlycXM7Cj4gKwo+ICsJaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUs ICJtc3RhcixnaWMtb2Zmc2V0IiwgJmdpY29mZnNldCkpIHsKPiArCQlyZXQgPSAtRUlOVkFMOwo+ ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsKPiArCWlmIChvZl9wcm9wZXJ0eV9yZWFkX3UzMihub2Rl LCAibXN0YXIsbnItaW50ZXJydXB0cyIsICZudW1pcnFzKSkgewo+ICsJCXJldCA9IC1FSU5WQUw7 Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwo+ICsJZG9tYWluX3BhcmVudCA9IGlycV9maW5kX2hv c3QocGFyZW50KTsKPiArCWlmICghZG9tYWluX3BhcmVudCkgewo+ICsJCXJldCA9IC1FSU5WQUw7 Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwo+ICsJaW50YyA9IGt6YWxsb2Moc2l6ZW9mKCppbnRj KSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIWludGMpIHsKPiArCQlyZXQgPSAtRU5PTUVNOwo+ICsJ CWdvdG8gb3V0Owo+ICsJfQo+ICsKPiArCWludGMtPmJhc2UgPSBvZl9pb21hcChub2RlLCAwKTsK PiArCWlmIChJU19FUlIoaW50Yy0+YmFzZSkpIHsKPiArCQlyZXQgPSBQVFJfRVJSKGludGMtPmJh c2UpOwo+ICsJCWdvdG8gZnJlZV9pbnRjOwo+ICsJfQo+ICsKPiArCWludGMtPmlycWNoaXAubmFt ZSA9IG5vZGUtPm5hbWU7CgpObywgcGxlYXNlLiAvcHJvYy9pbnRlcnJ1cHQgaXNuJ3QgYSBkdW1w aW5nIGdyb3VuZCBmb3IgRFQgcmVsYXRlZAppbmZvcm1hdGlvbi4gV2UgaGF2ZSBkZWJ1Z2ZzIGZv ciB0aGF0LgoKPiArCWludGMtPmlycWNoaXAuaXJxX21hc2sgPSBtc2MzMTNfaW50Y19tYXNrX2ly cTsKPiArCWludGMtPmlycWNoaXAuaXJxX3VubWFzayA9IG1zYzMxM19pbnRjX3VubWFza19pcnE7 Cj4gKwlpbnRjLT5pcnFjaGlwLmlycV9lb2kgPSBlb2k7Cj4gKwlpbnRjLT5pcnFjaGlwLmlycV9z ZXRfdHlwZSA9IG1zYzMxM19pbnRjX3NldF90eXBlX2lycTsKPiArCWludGMtPmlycWNoaXAuZmxh Z3MgPSBJUlFDSElQX01BU0tfT05fU1VTUEVORDsKClRoaXMgbmVlZHMgdG8gYmUgYSBzdGF0aWMg aXJxX2NoaXAgc3RydWN0dXJlLiBVc2UgdHdvIGZvciB0aGUgRU9JCndlaXJkbmVzcywgb3IgdGVz dCBhIGZsYWcgaW4geW91ciBlb2kgY2FsbGJhY2suCgo+ICsKPiArCWludGMtPmdpY29mZiA9IGdp Y29mZnNldDsKPiArCj4gKwlpbnRjLT5kb21haW4gPSBpcnFfZG9tYWluX2FkZF9oaWVyYXJjaHko ZG9tYWluX3BhcmVudCwgMCwgbnVtaXJxcywgCj4gbm9kZSwKPiArCQkJJm1zYzMxM19pbnRjX2Rv bWFpbl9vcHMsIGludGMpOwo+ICsJaWYgKCFpbnRjLT5kb21haW4pIHsKPiArCQlyZXQgPSAtRU5P TUVNOwo+ICsJCWdvdG8gdW5tYXA7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ICt1bm1h cDoKPiArCWlvdW5tYXAoaW50Yy0+YmFzZSk7Cj4gK2ZyZWVfaW50YzoKPiArCWtmcmVlKGludGMp Owo+ICtvdXQ6Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IF9faW5pdCBt c2MzMTNfaW50Y19pcnFfb2ZfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsCj4gKwkJCQkg ICBzdHJ1Y3QgZGV2aWNlX25vZGUgKnBhcmVudCkKPiArewo+ICsJcmV0dXJuIG1zYzMxM19pbnRj X29mX2luaXQobm9kZSwgcGFyZW50LCBpcnFfY2hpcF9lb2lfcGFyZW50KTsKPiArfTsKPiArCj4g K3N0YXRpYyBpbnQgX19pbml0IG1zYzMxM19pbnRjX2ZpcV9vZl9pbml0KHN0cnVjdCBkZXZpY2Vf bm9kZSAqbm9kZSwKPiArCQkJCSAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGFyZW50KQo+ICt7Cj4g KwlyZXR1cm4gbXNjMzEzX2ludGNfb2ZfaW5pdChub2RlLCBwYXJlbnQsIG1zYzMxM19pbnRjX2ly cV9lb2kpOwo+ICt9Owo+ICsKPiArSVJRQ0hJUF9ERUNMQVJFKG1zYzMxM19pbnRjX2lycSwgIm1z dGFyLG1zYzMxMy1pbnRjLWlycSIsCj4gKwkJbXNjMzEzX2ludGNfaXJxX29mX2luaXQpOwo+ICtJ UlFDSElQX0RFQ0xBUkUobXN0YXJfaW50Y19maXEsICJtc3Rhcixtc2MzMTMtaW50Yy1maXEiLAo+ ICsJCW1zYzMxM19pbnRjX2ZpcV9vZl9pbml0KTsKClRoaXMgZHJpdmVyIGhhcyBhIG1hc3NpdmUg ZmVlbGluZyBvZiBkw6lqYS12dS4gSXQgaXMgYWxtb3N0CmEgY29weSBvZiB0aGUgb25lIHBvc3Rl ZCBhdCBbMV0sIHdoaWNoIEkgcmV2aWV3ZWQgZWFybHkKdGhpcyB3ZWVrLiBUaGUgaXNzdWVzIGFy ZSB0aGUgZXhhY3Qgc2FtZSwgYW5kIEknbSA5OCUKc3VyZSB0aGlzIGlzIHRoZSBzYW1lIElQIGJs b2NrIHVzZWQgYnkgdHdvIFNvQyB2ZW5kb3JzLgoKUGxlYXNlIHRhbGsgdG8gZWFjaCBvdGhlciBh bmQgY29tZSB1cCB3aXRoIGEgc2luZ2xlIGRyaXZlci4KClRoYW5rcywKCiAgICAgICAgIE0uCgpb MV0gCmh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL3IvMjAyMDA4MDMwNjIyMTQuMjQwNzYtMS1tYXJr LXBrLnRzYWlAbWVkaWF0ZWsuY29tCi0tIApKYXp6IGlzIG5vdCBkZWFkLiBJdCBqdXN0IHNtZWxs cyBmdW5ueS4uLgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5p bmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8v bGludXgtYXJtLWtlcm5lbAo=