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=-7.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS 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 B67E9C10DCE for ; Sun, 8 Mar 2020 17:57:55 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 83CEA20684 for ; Sun, 8 Mar 2020 17:57:55 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Oa5HXs8H"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="2XOPPrk1" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 83CEA20684 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+infradead-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=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Subject:To:From:Message-ID:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=7TRdodboVoSkgDN5vm0TU5eI4jgHz3kSpDrxM0JxTdc=; b=Oa5HXs8HQAbADp P2xR9bSxT36r3D6kxm+eSqpno6pFYWvSHb0qJhdOpK2++30OzWgvjQtHSb4SdIIchwSOszXoyCYc3 +KPjVdhPaJ98Mh5fyg4l2fxrfj7F3AOjMRyjYq3STdNO0mk05nr6spOUjt9kQjlyyBk8roP5vVYK+ BJz3amOgj2vA8u+er8mBUNKXCnbi6d8ay50I9ksct49eXqt2JHK52cogQSh4mz74ljs6aACsbVnOX U3k5Wb0MVK8ramKd0fong52x89fQgpHDNYrCal+cqj1PKblbsvgJSCOo52pHa+OYSAT77IdBpjfbP WVwoJfVoOAUoyFSToMJg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jB0BS-0005fh-JO; Sun, 08 Mar 2020 17:57:50 +0000 Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jB0BO-0005fK-OC for linux-arm-kernel@lists.infradead.org; Sun, 08 Mar 2020 17:57:48 +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 894EE20684; Sun, 8 Mar 2020 17:57:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1583690265; bh=VAchi9Kqw5iP4YDp9ASK3XFKLiXzbasm8zCgNURPvmI=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=2XOPPrk1XwGZMpNAPuaxYNQ8IpH8sg+QG/LEW3scQp3BfYlgqpLMEN+/RA6SbAYKg 2Ln/fDKTfhhvUXpRXVrJOoRJUHFUbgNr3vKWwWllgJjTBszLV+zbP+ScWviAy8NG5h /Caqx9sOWVOvT8y2ThvzXXKId2AtRmLS/pqJaI2M= Received: from 78.163-31-62.static.virginmediabusiness.co.uk ([62.31.163.78] helo=big-swifty.misterjones.org) by disco-boy.misterjones.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jB0BL-00B50K-LL; Sun, 08 Mar 2020 17:57:43 +0000 Date: Sun, 08 Mar 2020 17:57:42 +0000 Message-ID: <86zhcq686h.wl-maz@kernel.org> From: Marc Zyngier To: Andreas =?UTF-8?B?RsOkcmJlcg==?= Subject: Re: [RFC 09/11] irqchip: Add Sunplus SP7021 interrupt (mux) controller In-Reply-To: <20200308163230.4002-10-afaerber@suse.de> References: <20200308163230.4002-1-afaerber@suse.de> <20200308163230.4002-10-afaerber@suse.de> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL/10.8 EasyPG/1.0.0 Emacs/26 (aarch64-unknown-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") X-SA-Exim-Connect-IP: 62.31.163.78 X-SA-Exim-Rcpt-To: afaerber@suse.de, linux-arm-kernel@lists.infradead.org, wells.lu@sunplus.com, dvorkin@tibbo.com, linux-kernel@vger.kernel.org, tglx@linutronix.de, jason@lakedaemon.net 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-20200308_105746_836159_3D400DB9 X-CRM114-Status: GOOD ( 25.59 ) 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: Jason Cooper , Dvorkin Dmitry , linux-kernel@vger.kernel.org, Thomas Gleixner , linux-arm-kernel@lists.infradead.org, Wells Lu =?UTF-8?B?5ZGC6Iqz6aiw?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gU3VuLCAwOCBNYXIgMjAyMCAxNjozMjoyNyArMDAwMCwKQW5kcmVhcyBGw6RyYmVyIDxhZmFl cmJlckBzdXNlLmRlPiB3cm90ZToKPiAKPiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIEbDpHJiZXIg PGFmYWVyYmVyQHN1c2UuZGU+CgpTaW5jZSB5b3UndmUgbm93IGdpdmVuIG1lIGZ1bGwgcGVybWlz c2lvbiB0byBjb21wbGFpbiwgY2FuIEkgdHJvdWJsZQp5b3UgZm9yIGEgbWVhbmluZ2Z1bCBjb21t aXQgbWVzc2FnZS4gSXQncyBub3QgbGlrZSBpdCBpcyB0aGUgZmlyc3QKdGltZSB5b3Ugd3JpdGUg YSBwYXRjaC4uLgoKPiAtLS0KPiAgZHJpdmVycy9pcnFjaGlwL01ha2VmaWxlICAgICB8ICAgMSAr Cj4gIGRyaXZlcnMvaXJxY2hpcC9pcnEtc3A3MDIxLmMgfCAyODUgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAyIGZpbGVzIGNoYW5nZWQsIDI4NiBpbnNlcnRp b25zKCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2lycWNoaXAvaXJxLXNwNzAyMS5j Cj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZSBiL2RyaXZlcnMvaXJx Y2hpcC9NYWtlZmlsZQo+IGluZGV4IGVhZTBkNzhjYmYyMi4uYTZiNzBkNjY2NzM5IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvaXJxY2hpcC9N YWtlZmlsZQo+IEBAIC0xMDUsMyArMTA1LDQgQEAgb2JqLSQoQ09ORklHX01BREVSQV9JUlEpCQkr PSBpcnEtbWFkZXJhLm8KPiAgb2JqLSQoQ09ORklHX0xTMVhfSVJRKQkJCSs9IGlycS1sczF4Lm8K PiAgb2JqLSQoQ09ORklHX1RJX1NDSV9JTlRSX0lSUUNISVApCSs9IGlycS10aS1zY2ktaW50ci5v Cj4gIG9iai0kKENPTkZJR19USV9TQ0lfSU5UQV9JUlFDSElQKQkrPSBpcnEtdGktc2NpLWludGEu bwo+ICtvYmotJChDT05GSUdfQVJDSF9TVU5QTFVTKQkJKz0gaXJxLXNwNzAyMS5vCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtc3A3MDIxLmMgYi9kcml2ZXJzL2lycWNoaXAvaXJx LXNwNzAyMS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmEw Yjc5NzJmMmFiYgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2lycWNoaXAvaXJxLXNw NzAyMS5jCj4gQEAgLTAsMCArMSwyODUgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAtb3ItbGF0ZXIKPiArLyoKPiArICogU3VucGx1cyBQbHVzMSBTUDcwMjEgU29DIGlu dGVycnVwdCBjb250cm9sbGVyCj4gKyAqCj4gKyAqIENvcHlyaWdodCAoYykgMjAyMCBBbmRyZWFz IEbDpHJiZXIKPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvYml0ZmllbGQuaD4KPiArI2lu Y2x1ZGUgPGxpbnV4L2JpdG9wcy5oPgo+ICsjaW5jbHVkZSA8bGludXgvaXJxLmg+Cj4gKyNpbmNs dWRlIDxsaW51eC9pcnFjaGlwLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pcnFjaGlwL2NoYWluZWRf aXJxLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pcnFkb21haW4uaD4KPiArI2luY2x1ZGUgPGxpbnV4 L29mX2FkZHJlc3MuaD4KPiArI2luY2x1ZGUgPGxpbnV4L29mX2lycS5oPgo+ICsKPiArI2RlZmlu ZSBSRUdfSU5UQ19JTlRSX1RZUEUoaSkJCSgweDAgKyAoaSkgKiA0KQo+ICsjZGVmaW5lIFJFR19J TlRDX0lOVFJfUE9MQVJJVFkoaSkJKDB4MWMgKyAoaSkgKiA0KQo+ICsjZGVmaW5lIFJFR19JTlRD X0lOVFJfUFJJTyhpKQkJKDB4MzggKyAoaSkgKiA0KQo+ICsjZGVmaW5lIFJFR19JTlRDX0lOVFJf TUFTSyhpKQkJKDB4NTQgKyAoaSkgKiA0KQo+ICsKPiArI2RlZmluZSBSRUdfSU5UQ19JTlRSX0NM UihpKQkJKDB4MCArIChpKSAqIDQpCj4gKyNkZWZpbmUgUkVHX0lOVENfTUFTS0VEX0ZJUVMoaSkJ CSgweDFjICsgKGkpICogNCkKPiArI2RlZmluZSBSRUdfSU5UQ19NQVNLRURfSVJRUyhpKQkJKDB4 MzggKyAoaSkgKiA0KQo+ICsjZGVmaW5lIFJFR19JTlRDX0lOVFJfR1JPVVAJCTB4N2MKPiArCj4g KyNkZWZpbmUgSU5UQ19JTlRSX0dST1VQX0ZJUQlHRU5NQVNLKDYsIDApCj4gKyNkZWZpbmUgSU5U Q19JTlRSX0dST1VQX0lSUQlHRU5NQVNLKDE0LCA4KQo+ICsKPiArc3RydWN0IHNwNzAyMV9pbnRj X2RhdGEgewo+ICsJdm9pZCBfX2lvbWVtCQkqYmFzZTA7Cj4gKwl2b2lkIF9faW9tZW0JCSpiYXNl MTsKPiArCWludAkJCWV4dDBfaXJxOwo+ICsJaW50CQkJZXh0MV9pcnE7Cj4gKwlzdHJ1Y3QgaXJx X2NoaXAJCWNoaXA7CgpXaHkgZG8geW91IG5lZWQgdGhpcyBpcnFfY2hpcCBvbiBhIHBlciBpbnN0 YW5jZSBiYXNpcz8KCj4gKwlzdHJ1Y3QgaXJxX2RvbWFpbgkqZG9tYWluOwo+ICsJcmF3X3NwaW5s b2NrX3QJCWxvY2s7Cj4gK307Cj4gKwo+ICtzdGF0aWMgdm9pZCBzcDcwMjFfaW50Y19leHQwX2ly cV9oYW5kbGUoc3RydWN0IGlycV9kZXNjICpkZXNjKQo+ICt7Cj4gKwlzdHJ1Y3Qgc3A3MDIxX2lu dGNfZGF0YSAqcyA9IGlycV9kZXNjX2dldF9oYW5kbGVyX2RhdGEoZGVzYyk7Cj4gKwlzdHJ1Y3Qg aXJxX2NoaXAgKmNoaXAgPSBpcnFfZGVzY19nZXRfY2hpcChkZXNjKTsKPiArCXUzMiBtYXNrLCBt YXNrZWQ7Cj4gKwlpbnQgaSwgajsKPiArCj4gKwljaGFpbmVkX2lycV9lbnRlcihjaGlwLCBkZXNj KTsKPiArCj4gKwltYXNrID0gcmVhZGxfcmVsYXhlZChzLT5iYXNlMSArIFJFR19JTlRDX0lOVFJf R1JPVVApOwo+ICsJbWFzayA9IEZJRUxEX0dFVChJTlRDX0lOVFJfR1JPVVBfSVJRLCBtYXNrKTsK PiArCXdoaWxlIChtYXNrKSB7Cj4gKwkJaSA9IGZscyhtYXNrKSAtIDE7Cj4gKwkJbWFzayAmPSB+ QklUKGkpOwo+ICsKPiArCQltYXNrZWQgPSByZWFkbF9yZWxheGVkKHMtPmJhc2UxICsgUkVHX0lO VENfTUFTS0VEX0lSUVMoaSkpOwo+ICsJCXdoaWxlIChtYXNrZWQpIHsKPiArCQkJaiA9IGZscyht YXNrZWQpIC0gMTsKPiArCQkJbWFza2VkICY9IH5CSVQoaik7Cj4gKwo+ICsJCQlnZW5lcmljX2hh bmRsZV9pcnEoaXJxX2ZpbmRfbWFwcGluZyhzLT5kb21haW4sCj4gKwkJCQkJCQkgICAgaSAqIDMy ICsgaikpOwo+ICsJCX0KPiArCX0KPiArCj4gKwljaGFpbmVkX2lycV9leGl0KGNoaXAsIGRlc2Mp Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBzcDcwMjFfaW50Y19leHQxX2lycV9oYW5kbGUoc3Ry dWN0IGlycV9kZXNjICpkZXNjKQo+ICt7Cj4gKwlzdHJ1Y3Qgc3A3MDIxX2ludGNfZGF0YSAqcyA9 IGlycV9kZXNjX2dldF9oYW5kbGVyX2RhdGEoZGVzYyk7Cj4gKwlzdHJ1Y3QgaXJxX2NoaXAgKmNo aXAgPSBpcnFfZGVzY19nZXRfY2hpcChkZXNjKTsKPiArCXUzMiBtYXNrLCBtYXNrZWQ7Cj4gKwlp bnQgaSwgajsKPiArCj4gKwljaGFpbmVkX2lycV9lbnRlcihjaGlwLCBkZXNjKTsKPiArCj4gKwlt YXNrID0gcmVhZGxfcmVsYXhlZChzLT5iYXNlMSArIFJFR19JTlRDX0lOVFJfR1JPVVApOwo+ICsJ bWFzayA9IEZJRUxEX0dFVChJTlRDX0lOVFJfR1JPVVBfRklRLCBtYXNrKTsKPiArCXdoaWxlICht YXNrKSB7Cj4gKwkJaSA9IGZscyhtYXNrKSAtIDE7Cj4gKwkJbWFzayAmPSB+QklUKGkpOwo+ICsK PiArCQltYXNrZWQgPSByZWFkbF9yZWxheGVkKHMtPmJhc2UxICsgUkVHX0lOVENfTUFTS0VEX0ZJ UVMoaSkpOwo+ICsJCXdoaWxlIChtYXNrZWQpIHsKPiArCQkJaiA9IGZscyhtYXNrZWQpIC0gMTsK PiArCQkJbWFza2VkICY9IH5CSVQoaik7Cj4gKwo+ICsJCQlnZW5lcmljX2hhbmRsZV9pcnEoaXJx X2ZpbmRfbWFwcGluZyhzLT5kb21haW4sCj4gKwkJCQkJCQkgICAgaSAqIDMyICsgaikpOwo+ICsJ CX0KPiArCX0KPiArCj4gKwljaGFpbmVkX2lycV9leGl0KGNoaXAsIGRlc2MpOwo+ICt9CgpHaXZl biB0aGF0IHRoZSBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiB0aGVzZSB0d28gZnVuY3Rpb25zIGlz CklOVENfSU5UUl9HUk9VUF9JUlEgdnMgSU5UQ19JTlRSX0dST1VQX0ZJUSAod2hhdGV2ZXIgdGhh dCBtZWFucyBmb3IKc29tZXRoaW5nIGNvbm5lY3RlZCB0byBTUElzLi4uKSwgc3VyZWx5IHlvdSBj YW4gZGV2aXNlIGEgd2F5IHRvIG1ha2UKdGhpcyBjb21tb24gY29kZS4KCj4gKwo+ICtzdGF0aWMg dm9pZCBzcDcwMjFfaW50Y19hY2tfaXJxKHN0cnVjdCBpcnFfZGF0YSAqZGF0YSkKPiArewo+ICsJ c3RydWN0IHNwNzAyMV9pbnRjX2RhdGEgKnMgPSBpcnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShk YXRhKTsKPiArCXVuc2lnbmVkIGludCBpZHg7Cj4gKwl1MzIgbWFzazsKPiArCj4gKwlpZHggPSBk YXRhLT5od2lycSAvIDMyOwoKWW91IGhhdmUgdGhpcyBjb25zdHJ1Y3QgZXZlcnl3aGVyZS4gSG93 IGFib3V0IG1ha2luZyBhbGwgeW91ciBvZmZzZXQKaGVscGVycyB0YWtlIGEgaHdpcnEgbnVtYmVy IGluc3RlYWQ/IEl0IHdvdWxkIGNlcnRhaW5seSBtYWtlIHRoZSB3aG9sZQp0aGluZyBsb29rIGEg bGl0dGxlIGxlc3MgZnJhZ2lsZS4KCj4gKwo+ICsJbWFzayA9IEJJVChkYXRhLT5od2lycSAlIDMy KTsKPiArCXdyaXRlbF9yZWxheGVkKG1hc2ssIHMtPmJhc2UxICsgUkVHX0lOVENfSU5UUl9DTFIo aWR4KSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHNwNzAyMV9pbnRjX21hc2tfaXJxKHN0cnVj dCBpcnFfZGF0YSAqZGF0YSkKPiArewo+ICsJc3RydWN0IHNwNzAyMV9pbnRjX2RhdGEgKnMgPSBp cnFfZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkYXRhKTsKPiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7 Cj4gKwl1bnNpZ25lZCBpbnQgaWR4Owo+ICsJdTMyIG1hc2s7Cj4gKwo+ICsJaWR4ID0gZGF0YS0+ aHdpcnEgLyAzMjsKPiArCj4gKwlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJnMtPmxvY2ssIGZsYWdz KTsKPiArCj4gKwltYXNrID0gcmVhZGxfcmVsYXhlZChzLT5iYXNlMCArIFJFR19JTlRDX0lOVFJf TUFTSyhpZHgpKTsKPiArCW1hc2sgJj0gfkJJVChkYXRhLT5od2lycSAlIDMyKTsKPiArCXdyaXRl bF9yZWxheGVkKG1hc2ssIHMtPmJhc2UwICsgUkVHX0lOVENfSU5UUl9NQVNLKGlkeCkpOwo+ICsK PiArCXJhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKCZzLT5sb2NrLCBmbGFncyk7Cj4gK30KPiAr Cj4gK3N0YXRpYyB2b2lkIHNwNzAyMV9pbnRjX3VubWFza19pcnEoc3RydWN0IGlycV9kYXRhICpk YXRhKQo+ICt7Cj4gKwlzdHJ1Y3Qgc3A3MDIxX2ludGNfZGF0YSAqcyA9IGlycV9kYXRhX2dldF9p cnFfY2hpcF9kYXRhKGRhdGEpOwo+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsKPiArCXVuc2lnbmVk IGludCBpZHg7Cj4gKwl1MzIgbWFzazsKPiArCj4gKwlpZHggPSBkYXRhLT5od2lycSAvIDMyOwo+ ICsKPiArCXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmcy0+bG9jaywgZmxhZ3MpOwo+ICsKPiArCW1h c2sgPSByZWFkbF9yZWxheGVkKHMtPmJhc2UwICsgUkVHX0lOVENfSU5UUl9NQVNLKGlkeCkpOwo+ ICsJbWFzayB8PSBCSVQoZGF0YS0+aHdpcnEgJSAzMik7Cj4gKwl3cml0ZWxfcmVsYXhlZChtYXNr LCBzLT5iYXNlMCArIFJFR19JTlRDX0lOVFJfTUFTSyhpZHgpKTsKPiArCj4gKwlyYXdfc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmcy0+bG9jaywgZmxhZ3MpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50 IHNwNzAyMV9pbnRjX3NldF9pcnFfdHlwZShzdHJ1Y3QgaXJxX2RhdGEgKmRhdGEsIHVuc2lnbmVk IGludCBmbG93X3R5cGUpCj4gK3sKPiArCXN0cnVjdCBzcDcwMjFfaW50Y19kYXRhICpzID0gaXJx X2RhdGFfZ2V0X2lycV9jaGlwX2RhdGEoZGF0YSk7Cj4gKwl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ ICsJdW5zaWduZWQgaW50IGlkeDsKPiArCXUzMiBtYXNrLCB0eXBlLCBwb2xhcml0eTsKPiArCj4g KwlpZHggPSBkYXRhLT5od2lycSAvIDMyOwo+ICsJbWFzayA9IEJJVChkYXRhLT5od2lycSAlIDMy KTsKPiArCj4gKwlpZiAoZmxvd190eXBlICYgSVJRX1RZUEVfTEVWRUxfTUFTSykKPiArCQlpcnFf c2V0X2NoaXBfaGFuZGxlcl9uYW1lX2xvY2tlZChkYXRhLCAmcy0+Y2hpcCwgaGFuZGxlX2xldmVs X2lycSwgTlVMTCk7Cj4gKwllbHNlCj4gKwkJaXJxX3NldF9jaGlwX2hhbmRsZXJfbmFtZV9sb2Nr ZWQoZGF0YSwgJnMtPmNoaXAsIGhhbmRsZV9lZGdlX2lycSwgTlVMTCk7CgpOb3cgeW91J3ZlIGNo YW5nZWQgdGhlIGZsb3cgdHlwZSBldmVuIGlmIHRoZSBjaGVja3MgYmVsb3cgZW5kLXVwCmZhaWxp bmcuIERvbid0IGRvIHRoYXQuIEFsc28sIHBsZWFzZSB1c2UgaXJxX3NldF9jaGlwX2hhbmRsZXJf bG9ja2VkKCkKaW5zdGVhZC4gWW91IGRvbid0IG5lZWQgdG8gY2hhbmdlIHRoZSBpcnFjaGlwLgoK PiArCj4gKwlyYXdfc3Bpbl9sb2NrX2lycXNhdmUoJnMtPmxvY2ssIGZsYWdzKTsKPiArCj4gKwl0 eXBlID0gcmVhZGxfcmVsYXhlZChzLT5iYXNlMCArIFJFR19JTlRDX0lOVFJfVFlQRShpZHgpKTsK PiArCXBvbGFyaXR5ID0gcmVhZGxfcmVsYXhlZChzLT5iYXNlMCArIFJFR19JTlRDX0lOVFJfUE9M QVJJVFkoaWR4KSk7Cj4gKwo+ICsJc3dpdGNoIChmbG93X3R5cGUpIHsKPiArCWNhc2UgSVJRX1RZ UEVfRURHRV9SSVNJTkc6Cj4gKwkJdHlwZSB8PSBtYXNrOwo+ICsJCXBvbGFyaXR5ICY9IH5tYXNr Owo+ICsJCWJyZWFrOwo+ICsJY2FzZSBJUlFfVFlQRV9FREdFX0ZBTExJTkc6Cj4gKwkJdHlwZSB8 PSBtYXNrOwo+ICsJCXBvbGFyaXR5IHw9IG1hc2s7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIElSUV9U WVBFX0xFVkVMX0hJR0g6Cj4gKwkJdHlwZSAmPSB+bWFzazsKPiArCQlwb2xhcml0eSAmPSB+bWFz azsKPiArCQlicmVhazsKPiArCWNhc2UgSVJRX1RZUEVfTEVWRUxfTE9XOgo+ICsJCXR5cGUgJj0g fm1hc2s7Cj4gKwkJcG9sYXJpdHkgfD0gbWFzazsKPiArCQlicmVhazsKPiArCWRlZmF1bHQ6Cj4g KwkJcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnMtPmxvY2ssIGZsYWdzKTsKPiArCQlyZXR1 cm4gLUVCQURSOwoKVGhlIGNhbm9uaWNhbCBlcnJvciB0byB1c2UgaXMgLUVJTlZBTC4KCj4gKwl9 Cj4gKwo+ICsJd3JpdGVsX3JlbGF4ZWQodHlwZSwgcy0+YmFzZTAgKyBSRUdfSU5UQ19JTlRSX1RZ UEUoaWR4KSk7Cj4gKwl3cml0ZWxfcmVsYXhlZChwb2xhcml0eSwgcy0+YmFzZTAgKyBSRUdfSU5U Q19JTlRSX1BPTEFSSVRZKGlkeCkpOwo+ICsKPiArCXJhd19zcGluX3VubG9ja19pcnFyZXN0b3Jl KCZzLT5sb2NrLCBmbGFncyk7Cj4gKwo+ICsJcmV0dXJuIElSUV9TRVRfTUFTS19PSzsKPiArfQo+ ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfY2hpcCBzcDcwMjFfaW50Y19pcnFfY2hpcCA9 IHsKPiArCS5uYW1lCQkJPSAiU1A3MDIxLUEiLAo+ICsJLmlycV9hY2sJCT0gc3A3MDIxX2ludGNf YWNrX2lycSwKPiArCS5pcnFfbWFzawkJPSBzcDcwMjFfaW50Y19tYXNrX2lycSwKPiArCS5pcnFf dW5tYXNrCQk9IHNwNzAyMV9pbnRjX3VubWFza19pcnEsCj4gKwkuaXJxX3NldF90eXBlCQk9IHNw NzAyMV9pbnRjX3NldF9pcnFfdHlwZSwKCkkgYXNzdW1lIHRoaXMgU29DIGlzIFNNUC4gWW91IG5l ZWQgYSBzZXRfYWZmaW5pdHkgbWV0aG9kIHRoYXQgcmV0dXJucwotRUlOVkFMLgoKPiArfTsKPiAr Cj4gK3N0YXRpYyBpbnQgc3A3MDIxX2ludGNfaXJxX2RvbWFpbl9tYXAoc3RydWN0IGlycV9kb21h aW4gKmQsCj4gKwkJdW5zaWduZWQgaW50IGlycSwgaXJxX2h3X251bWJlcl90IGh3KQo+ICt7Cj4g KwlzdHJ1Y3Qgc3A3MDIxX2ludGNfZGF0YSAqcyA9IGQtPmhvc3RfZGF0YTsKPiArCXVuc2lnbmVk IGludCBpZHg7Cj4gKwl1MzIgbWFzaywgdHlwZTsKPiArCj4gKwlpZHggPSBodyAvIDMyOwo+ICsJ bWFzayA9IEJJVChodyAlIDMyKTsKPiArCj4gKwl0eXBlID0gcmVhZGxfcmVsYXhlZChzLT5iYXNl MCArIFJFR19JTlRDX0lOVFJfVFlQRShpZHgpKTsKPiArCj4gKwlpcnFfc2V0X2NoaXBfYW5kX2hh bmRsZXIoaXJxLCAmcy0+Y2hpcCwgKHR5cGUgJiBtYXNrKSA/IGhhbmRsZV9lZGdlX2lycSA6IGhh bmRsZV9sZXZlbF9pcnEpOwo+ICsJaXJxX3NldF9jaGlwX2RhdGEoaXJxLCBzKTsKPiArCWlycV9z ZXRfcHJvYmUoaXJxKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0 IHN0cnVjdCBpcnFfZG9tYWluX29wcyBzcDcwMjFfaW50Y19kb21haW5fb3BzID0gewo+ICsJLnhs YXRlCT0gaXJxX2RvbWFpbl94bGF0ZV9vbmVjZWxsLAoKSWYgaXQgaXMgYSBzaW5nbGUgY2VsbCwg aG93IGRvIHlvdSBleHByZXNzIHRoZSBpbnRlcnJ1cHQgcG9sYXJpdHkgaW4KdGhlIERUPyBTcGVj aWFsbHkgd2hlbiB0aGUgRFQgYmluZGluZyBzYXlzIHRoYXQgI2ludGVycnVwdC1jZWxscyA9IDwy Pi4KQ2xlYXJseSwgeW91IGhhdmUgbmV2ZXIgdGVzdGVkIHRoaXMuCgo+ICsJLm1hcAk9IHNwNzAy MV9pbnRjX2lycV9kb21haW5fbWFwLAo+ICt9Owo+ICsKPiAraW50IF9faW5pdCBzcDcwMjFfaW50 Y19pbml0KHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSwgc3RydWN0IGRldmljZV9ub2RlICpwYXJl bnQpCj4gK3sKPiArCXN0cnVjdCBzcDcwMjFfaW50Y19kYXRhICpzOwo+ICsJdm9pZCBfX2lvbWVt ICpiYXNlMCwgKmJhc2UxOwo+ICsJaW50IGk7Cj4gKwo+ICsJYmFzZTAgPSBvZl9pb21hcChub2Rl LCAwKTsKPiArCWlmICghYmFzZTApCj4gKwkJcmV0dXJuIC1FSU87CgotRU5PTUVNLgoKPiArCj4g KwliYXNlMSA9IG9mX2lvbWFwKG5vZGUsIDEpOwo+ICsJaWYgKCFiYXNlMSkKPiArCQlyZXR1cm4g LUVJTzsKCkxlYWtpbmcgbWFwcGluZy4KCj4gKwo+ICsJcyA9IGt6YWxsb2Moc2l6ZW9mKCpzKSwg R0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIXMpCj4gKwkJcmV0dXJuIC1FTk9NRU07CgpBZ2Fpbi4KCj4g Kwo+ICsJcy0+YmFzZTAgPSBiYXNlMDsKPiArCXMtPmJhc2UxID0gYmFzZTE7Cj4gKwlzLT5jaGlw ID0gc3A3MDIxX2ludGNfaXJxX2NoaXA7CgpUaGF0J3MgZXhhY3RseSB3aGF0IEkgd2FzIGNvbXBs YWluaW5nIGFib3V0IGVhcmxpZXI6IHBvaW50bGVzc2x5CnN0b3JpbmcgYSBjb3B5IG9mIGEgc3Rh dGljIGNvbnN0IGRhdGEgc3RydWN0dXJlIHRoYXQgbmV2ZXIgZ2V0cwp1cGRhdGVkLiBEcm9wIHRo aXMuCgo+ICsKPiArCXMtPmV4dDBfaXJxID0gaXJxX29mX3BhcnNlX2FuZF9tYXAobm9kZSwgMCk7 Cj4gKwlpZiAocy0+ZXh0MF9pcnEgPD0gMCkgewo+ICsJCWtmcmVlKHMpOwo+ICsJCXJldHVybiAt RUlOVkFMOwo+ICsJfQo+ICsKPiArCXMtPmV4dDFfaXJxID0gaXJxX29mX3BhcnNlX2FuZF9tYXAo bm9kZSwgMSk7Cj4gKwlpZiAocy0+ZXh0MV9pcnEgPD0gMCkgewo+ICsJCWtmcmVlKHMpOwo+ICsJ CXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXJhd19zcGluX2xvY2tfaW5pdCgmcy0+bG9j ayk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IDc7IGkrKykgewo+ICsJCXdyaXRlbF9yZWxheGVk KDAsIHMtPmJhc2UwICsgUkVHX0lOVENfSU5UUl9NQVNLKGkpKTsKPiArCQl3cml0ZWxfcmVsYXhl ZCh+MCwgcy0+YmFzZTAgKyBSRUdfSU5UQ19JTlRSX1RZUEUoaSkpOwo+ICsJCXdyaXRlbF9yZWxh eGVkKDAsIHMtPmJhc2UwICsgUkVHX0lOVENfSU5UUl9QT0xBUklUWShpKSk7Cj4gKwo+ICsJCS8q IGlycSwgbm90IGZpcSAqLwo+ICsJCXdyaXRlbF9yZWxheGVkKH4wLCBzLT5iYXNlMCArIFJFR19J TlRDX0lOVFJfUFJJTyhpKSk7Cj4gKwo+ICsJCXdyaXRlbF9yZWxheGVkKH4wLCBzLT5iYXNlMSAr IFJFR19JTlRDX0lOVFJfQ0xSKGkpKTsKPiArCX0KPiArCj4gKwlzLT5kb21haW4gPSBpcnFfZG9t YWluX2FkZF9saW5lYXIobm9kZSwgMjAwLCAmc3A3MDIxX2ludGNfZG9tYWluX29wcywKCk1hZ2lj IG51bWJlcnMuCgo+ICsJCQkJCSAgcyk7Cj4gKwlpZiAoIXMtPmRvbWFpbikgewo+ICsJCWtmcmVl KHMpOwo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsJfQo+ICsKPiArCWlycV9zZXRfY2hhaW5lZF9o YW5kbGVyX2FuZF9kYXRhKHMtPmV4dDBfaXJxLCBzcDcwMjFfaW50Y19leHQwX2lycV9oYW5kbGUs IHMpOwo+ICsJaXJxX3NldF9jaGFpbmVkX2hhbmRsZXJfYW5kX2RhdGEocy0+ZXh0MV9pcnEsIHNw NzAyMV9pbnRjX2V4dDFfaXJxX2hhbmRsZSwgcyk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiAr SVJRQ0hJUF9ERUNMQVJFKHNwNzAyMV9pbnRjLCAic3VucGx1cyxzcDcwMjEtaW50YyIsIHNwNzAy MV9pbnRjX2luaXQpOwoKU28geWVzLCBJIGNvbXBsYWluZWQgYSBsb3QuIFRoYW5rcyBmb3IgZ2l2 aW5nIG1lIHRoZSBvcHBvcnR1bml0eS4KCglNLgoKLS0gCkphenogaXMgbm90IGRlYWQsIGl0IGp1 c3Qgc21lbGxzIGZ1bm55LgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBs aXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlz dGluZm8vbGludXgtYXJtLWtlcm5lbAo=