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 121D9CCD183 for ; Mon, 13 Oct 2025 22:04:58 +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:From:References:Cc:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=4RJ85elJu+ITzmyhBU/66K87Itjcs3RTf2qoXxxpOIY=; b=pIZ/by2qT4FXi8 u9ht1zwJnyNrBf+ABuFJ224Z/p/Vac2Nm0ICosnC5URTM4o1DFu61J3P765swaI12HOdy5/7+KBOO s/ynwXri6DyCl9O5sgY55AijWC7fhFbAixGkJVmi4ptvchQF/YvX7469Vn2NoYcUxhWTmaYOg+pph dVQH1cHJlWW90d7dpRWGoNvTH26AhgnguiO7bvl/aJAcym+sMTPngBKIr549jE07Ji9dKCIStZMga lgZMIU8Bq3b6gHTfHcfQrbGCjAxot9JcmloZh2aHCJIso5z0+NmtIEMLMoH6n2sf+fvDhXabs/DET P+yz4Th2zeV/JAXVoQNg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1v8Qev-0000000EfNa-3yzq; Mon, 13 Oct 2025 22:04:49 +0000 Received: from mail-io1-xd36.google.com ([2607:f8b0:4864:20::d36]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1v8Qeu-0000000EfMn-0hKd for linux-riscv@lists.infradead.org; Mon, 13 Oct 2025 22:04:49 +0000 Received: by mail-io1-xd36.google.com with SMTP id ca18e2360f4ac-9335a918867so477504939f.2 for ; Mon, 13 Oct 2025 15:04:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1760393087; x=1760997887; darn=lists.infradead.org; h=content-transfer-encoding:in-reply-to:content-language:from :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=fxWRgO6YEocf6mS8jeQDPGKocXFshKz211hZPwFIojA=; b=guPIONaM3AhMxPVUL5hmVYkQ/RMdVhsY0Z2FuksEFhXr98YcRkdUrytF0qJ2ocasgH bGeSU2k3FM1apj36oqpH/+0Wip78e3VLZz7Du1I7Vo6Z3O0Tn/Wnud30vGRI8tMO960F yPZFL3KJDdUdr5RViS3zt2aSiMcraQXsYlsWLJCJP0YuLfbvYTo14hYKhG4BIxqDhc92 DJM93tNSvWJ3XTsU9heCeBA3bFPGgWt7vUr3yw5BCI63v+L19M/isC+5t4xp5s92wbSV nUPJlx2pPBvcsgBDWn8nMgh4t0XpAmJaod0wdJG6lwqdR7Jqod9lP06FSYIX5yiURtzC o/qA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760393087; x=1760997887; h=content-transfer-encoding:in-reply-to:content-language:from :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=fxWRgO6YEocf6mS8jeQDPGKocXFshKz211hZPwFIojA=; b=uDRfrfP4uvrBl0kihdjm+kwulhnFR16tgA4V+b5M29LcS1yA9GpaFAtuqwq9e8w9EG WYevaY9UrGwOhpBD7OZ1LjmffEsnbQqI4WOWEh9Km14BrkSlrdRmbP3JHVXV2cKpIejH K4fZgnGZNZV44KKyWJQenSxvvF26oew7O2T/AgmTfA4ti0dMuYKdzwVZeO7u+hRfPZ3e reqheqoAkudYjkFr0QfQfTwSRyu0C5uPS3Kf0KCTax131p7u9yXejh3viVlDJRTmw7I2 JL2WzaQTp/AEifh7486p7lTN/tnWXyGvkU15pe9HjJNc9kfK2dsxnQo5HACRRPqpD4cj Ve0w== X-Forwarded-Encrypted: i=1; AJvYcCVaNPUOgOjGQotO+FpRbLhP3ep/YTBmAqIwJg/vI1Uardx15rbGHa/pJBAG+FUqBXeONQugTUVV3gMJ7A==@lists.infradead.org X-Gm-Message-State: AOJu0Yz1Z09TLM6ctCQfE50v9ypXa3jvxslhgscUOYY6ZZn2g5I0ETdT XMylAJEd3GK52o/yxUU/cnijisrVS5I1QQ0AYS6GgwnJAExX+p7beE/QzXnHsQTd3ro= X-Gm-Gg: ASbGnctIoPiYsGeSVXcMyZu0DGi5SyxZQ/9gYcp66J6TknFG3IgBwNalImUOjmbwqcg MT2KV5vqyxsS6YvZkt9p0jHRGNESROKicd7G8u/ThRM5gsxQrcAxp/p4zAlkfmKirEQ/q4vw/YB F+77V/WXFi5QpTJRB4++zm1qNcdWDdbiv3VHdcs0yXrOm2qyZCi9A2RaNgwyWao4GvRGmsB1Sir VfxP+Nl0t21fj7gPR/F0ePF948PihVeQUjJnLv/6T4HCfJiNIrkLHTjnopJNE7d+46QgLLonFqn jpAUJuDnQt3UvkXucAsD3FsKI1ASbjVhlG1+fUvHkeusKk5iiE/QN3FmQ7hSOH5jb2Vuz74p9gl YGKaA13ipcv6touEZvdwN0l39ALX+nXqtLW7xrSK/f775wwnhG4Dr1SqMWm+zM53b7l1B X-Google-Smtp-Source: AGHT+IGN3mhSATc8aFHDp4wT3kbflEafLQXVUUqdCPIUPkRo1fRMYru2F06C7CxBpT0syEUELwo3Zw== X-Received: by 2002:a05:6602:6b12:b0:906:c3ea:3fb7 with SMTP id ca18e2360f4ac-93bd192b70amr2341106139f.12.1760393087138; Mon, 13 Oct 2025 15:04:47 -0700 (PDT) Received: from [100.64.0.1] ([170.85.6.207]) by smtp.gmail.com with ESMTPSA id ca18e2360f4ac-93e2594a558sm433456339f.7.2025.10.13.15.04.45 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 13 Oct 2025 15:04:46 -0700 (PDT) Message-ID: <6fe6a924-b156-4b2a-858e-163ccc7e49d1@sifive.com> Date: Mon, 13 Oct 2025 17:04:45 -0500 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 3/3] irqchip/plic: add support for UltraRISC DP1000 PLIC To: Bo Gan Cc: Charles Mirabile , Thomas Gleixner , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Vivian Wang , linux-riscv@lists.infradead.org, Zhang Xincheng , linux-kernel@vger.kernel.org, Lucas Zampieri References: <20251013111539.2206477-1-lzampier@redhat.com> <20251013111539.2206477-4-lzampier@redhat.com> <1ecbd61e-6b3f-42e8-86cd-e1c589a45262@sifive.com> <65122c79-7497-4b40-8112-a8ccaeeb16ab@gmail.com> From: Samuel Holland Content-Language: en-US In-Reply-To: <65122c79-7497-4b40-8112-a8ccaeeb16ab@gmail.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20251013_150448_220340_43FB77EC X-CRM114-Status: GOOD ( 31.33 ) X-BeenThere: linux-riscv@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-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org SGkgQm8sCgpPbiAyMDI1LTEwLTEzIDQ6MjQgUE0sIEJvIEdhbiB3cm90ZToKPiBPbiAxMC8xMy8y NSAxMjowMCwgU2FtdWVsIEhvbGxhbmQgd3JvdGU6Cj4+IEhpIEx1Y2FzLAo+Pgo+PiBPbiAyMDI1 LTEwLTEzIDY6MTUgQU0sIEx1Y2FzIFphbXBpZXJpIHdyb3RlOgo+Pj4gRnJvbTogQ2hhcmxlcyBN aXJhYmlsZSA8Y21pcmFiaWxAcmVkaGF0LmNvbT4KPj4+Cj4+PiBBZGQgYSBuZXcgY29tcGF0aWJs ZSBmb3IgdGhlIHBsaWMgZm91bmQgaW4gVWx0cmFSSVNDIERQMTAwMCB3aXRoIGEgcXVpcmsgdG8K Pj4+IHdvcmsgYXJvdW5kIGEga25vd24gaGFyZHdhcmUgYnVnIHdpdGggSVJRIGNsYWltaW5nLgo+ Pj4KPj4+IFdoZW4gY2xhaW1pbmcgYW4gaW50ZXJydXB0IG9uIHRoZSBEUDEwMDAgUExJQyBhbGwg b3RoZXIgaW50ZXJydXB0cyBtdXN0IGJlCj4+PiBkaXNhYmxlZCBiZWZvcmUgdGhlIGNsYWltIHJl Z2lzdGVyIGlzIGFjY2Vzc2VkIHRvIHByZXZlbnQgaW5jb3JyZWN0Cj4+PiBoYW5kbGluZyBvZiB0 aGUgaW50ZXJydXB0Lgo+Pj4KPj4+IFdoZW4gdGhlIFBMSUNfUVVJUktfQ0xBSU1fUkVHSVNURVIg aXMgcHJlc2VudCwgZHVyaW5nIHBsaWNfaGFuZGxlX2lycQo+Pj4gdGhlIGVuYWJsZSBzdGF0ZSBv ZiBhbGwgaW50ZXJydXB0cyBpcyBzYXZlZCBhbmQgdGhlbiBhbGwgaW50ZXJydXB0cwo+Pj4gZXhj ZXB0IGZvciB0aGUgZmlyc3QgcGVuZGluZyBvbmUgYXJlIGRpc2FibGVkIGJlZm9yZSByZWFkaW5n IHRoZSBjbGFpbQo+Pj4gcmVnaXN0ZXIuIFRoZSBpbnRlcnJ1cHRzIGFyZSB0aGVuIHJlc3RvcmVk IGJlZm9yZSBmdXJ0aGVyIHByb2Nlc3Npbmcgb2YKPj4+IHRoZSBjbGFpbWVkIGludGVycnVwdCBj b250aW51ZXMuCj4+Cj4+IFNpbmNlIHRoZSB3b3JrYXJvdW5kIHJlcXVpcmVzIHNjYW5uaW5nIHRo ZSBwZW5kaW5nIGJpdHMgZm9yIGVhY2ggaW50ZXJydXB0Cj4+IGFueXdheSwgaXQgd291bGQgYmUg c2ltcGxlciBhbmQgbW9yZSBlZmZpY2llbnQgdG8gaWdub3JlIHRoZSBjbGFpbSByZWdpc3Rlcgo+ PiBlbnRpcmVseS4gQ2FsbCBnZW5lcmljX2hhbmRsZV9kb21haW5faXJxKCkgZm9yIGVhY2ggaW50 ZXJydXB0IHRoYXQgaXMgKGVuYWJsZWQKPj4gQU5EIHBlbmRpbmcpLCB0aGVuIGNsZWFyIHRoZSBw ZW5kaW5nIGJpdC4gVGhlbiB5b3Ugd291bGQgbm90IG5lZWQgdG8gc2F2ZSBhbmQKPj4gcmVzdG9y ZSB0aGUgZW5hYmxlIHJlZ2lzdGVycy4KPj4KPiAKPiBJcyB0aGF0IHNhZmUgYW5kIHJhY2UtZnJl ZT8gQ2FuIHdlIGd1YXJhbnRlZSB0aGF0IHRoZSBlbmFibGUgYml0cyBmb3IKPiBkaWZmZXJlbnQg Y29udGV4dHMgKGhhcnRzKSBhcmUgZGlzam9pbnQgYXQgYW55IGdpdmVuIHRpbWU/IEknbSBhIGxp dHRsZQo+IGJpdCB3b3JyaWVkIGFib3V0IHRoZSBzY2VuYXJpbyB3aGVyZSAyKyBoYXJ0cyBoYXZp bmcgdGhlIHNhbWUgaXJxIGVuYWJsZWQKPiBhbmQgY29tcGV0aW5nIGZvciB0aGUgc2FtZSBpcnEg Y2xhaW0uIFdpdGhvdXQgdXNpbmcgdGhlIEhXIGNsYWltIHJlZ2lzdGVyLAo+IHdlIG1heSBnZXQg c3B1cmlvdXMgaW50ZXJydXB0LCBhbmQgdGhlbiB3cm9uZ2x5IGNsYWltZWQgdGhlIHNwdXJpb3Vz Cj4gaW50ZXJydXB0IGNhdXNpbmcgdGhlIG5leHQgcmVhbCBvbmUgdG8gYmUgZGVsYXllZCBpbmRl ZmluaXRlbHkuCgpZZXMsIHdlIGNhbiBndWFyYW50ZWUgZWFjaCBpbnRlcnJ1cHQgaXMgZW5hYmxl ZCBvbiBvbmx5IG9uZSBoYXJ0IGF0IGEgdGltZS4KcGxpY19zZXRfYWZmaW5pdHkoKSBhbHdheXMg Y2hvb3NlcyBhIHNpbmdsZSBDUFUgYW5kIGdldHMgY2FsbGVkIGZyb20KaXJxX3N0YXJ0dXAoKSBi ZWZvcmUgdGhlIGZpcnN0IHRpbWUgdGhlIGludGVycnVwdCBpcyBlbmFibGVkLgoKVGhlcmUgYXJl IG90aGVyIHJhY2VzIHRvIGNvbnNpZGVyIChlLmcuIGNsZWFyaW5nIG9uZSBwZW5kaW5nIGJpdCB3 aGlsZSB0aGUKaGFyZHdhcmUgc2V0cyBhbiBhZGphY2VudCBvbmUpLCBidXQgaXQgbG9va3MgbGlr ZSB0aGlzIHN0cmF0ZWd5IG1heSBub3Qgd29yayBvbgp0aGUgaGFyZHdhcmUgYW55d2F5LgoKUmVn YXJkcywKU2FtdWVsCgo+Pj4gVGhlIGRyaXZlciBtYXRjaGVzIG9uICJ1bHRyYXJpc2MsY3AxMDAt cGxpYyIgdG8gYXBwbHkgdGhlIHF1aXJrIHRvIGFsbAo+Pj4gU29DcyB1c2luZyBVUi1DUDEwMCBj b3JlcywgcmVnYXJkbGVzcyBvZiB0aGUgc3BlY2lmaWMgU29DIGltcGxlbWVudGF0aW9uLgo+Pj4g VGhpcyBoYXMgbm8gaW1wYWN0IG9uIG90aGVyIHBsYXRmb3Jtcy4KPj4+Cj4+PiBDby1kZXZlbG9w ZWQtYnk6IFpoYW5nIFhpbmNoZW5nIDx6aGFuZ3hpbmNoZW5nQHVsdHJhcmlzYy5jb20+Cj4+PiBT aWduZWQtb2ZmLWJ5OiBaaGFuZyBYaW5jaGVuZyA8emhhbmd4aW5jaGVuZ0B1bHRyYXJpc2MuY29t Pgo+Pj4gU2lnbmVkLW9mZi1ieTogQ2hhcmxlcyBNaXJhYmlsZSA8Y21pcmFiaWxAcmVkaGF0LmNv bT4KPj4+IFNpZ25lZC1vZmYtYnk6IEx1Y2FzIFphbXBpZXJpIDxsemFtcGllckByZWRoYXQuY29t Pgo+Pj4gLS0tCj4+PiDCoCBkcml2ZXJzL2lycWNoaXAvaXJxLXNpZml2ZS1wbGljLmMgfCA4MyAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4+PiDCoCAxIGZpbGUgY2hhbmdlZCwgODIg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2lycWNoaXAvaXJxLXNpZml2ZS1wbGljLmMgYi9kcml2ZXJzL2lycWNoaXAvaXJxLXNpZml2ZS0K Pj4+IHBsaWMuYwo+Pj4gaW5kZXggOWM0YWY3ZDU4ODQ2Li5hN2I1MWE5MjVlOTYgMTAwNjQ0Cj4+ PiAtLS0gYS9kcml2ZXJzL2lycWNoaXAvaXJxLXNpZml2ZS1wbGljLmMKPj4+ICsrKyBiL2RyaXZl cnMvaXJxY2hpcC9pcnEtc2lmaXZlLXBsaWMuYwo+Pj4gQEAgLTQ5LDYgKzQ5LDggQEAKPj4+IMKg ICNkZWZpbmUgQ09OVEVYVF9FTkFCTEVfQkFTRcKgwqDCoMKgwqDCoMKgIDB4MjAwMAo+Pj4gwqAg I2RlZmluZcKgwqDCoMKgIENPTlRFWFRfRU5BQkxFX1NJWkXCoMKgwqDCoMKgwqDCoCAweDgwCj4+ Pgo+Pj4gKyNkZWZpbmUgUEVORElOR19CQVNFwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgMHgxMDAwCj4+PiArCj4+PiDCoCAvKgo+Pj4gwqDCoCAqIEVhY2ggaGFydCBjb250 ZXh0IGhhcyBhIHNldCBvZiBjb250cm9sIHJlZ2lzdGVycyBhc3NvY2lhdGVkIHdpdGggaXQuwqAg UmlnaHQKPj4+IMKgwqAgKiBub3cgdGhlcmUncyBvbmx5IHR3bzogYSBzb3VyY2UgcHJpb3JpdHkg dGhyZXNob2xkIG92ZXIgd2hpY2ggdGhlIGhhcnQgd2lsbAo+Pj4gQEAgLTYzLDYgKzY1LDcgQEAK Pj4+IMKgICNkZWZpbmXCoMKgwqAgUExJQ19FTkFCTEVfVEhSRVNIT0xEwqDCoMKgwqDCoMKgwqAg MAo+Pj4KPj4+IMKgICNkZWZpbmUgUExJQ19RVUlSS19FREdFX0lOVEVSUlVQVMKgwqDCoCAwCj4+ PiArI2RlZmluZSBQTElDX1FVSVJLX0NMQUlNX1JFR0lTVEVSwqDCoMKgIDEKPj4+Cj4+PiDCoCBz dHJ1Y3QgcGxpY19wcml2IHsKPj4+IMKgwqDCoMKgwqAgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3 bm9kZTsKPj4+IEBAIC0zNjcsNiArMzcwLDgyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX2Rv bWFpbl9vcHMgcGxpY19pcnFkb21haW5fb3BzID0gewo+Pj4gwqDCoMKgwqDCoCAuZnJlZcKgwqDC oMKgwqDCoMKgID0gaXJxX2RvbWFpbl9mcmVlX2lycXNfdG9wLAo+Pj4gwqAgfTsKPj4+Cj4+PiAr c3RhdGljIGJvb2wgZHAxMDAwX2lzb2xhdGVfcGVuZGluZ19pcnEoaW50IG5yX2lycV9ncm91cHMs IHUzMiBpZVtdLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHZvaWQgX19pb21lbSAqcGVuZGluZywKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB2b2lkIF9faW9tZW0gKmVuYWJsZSkKPj4+ICt7Cj4+PiArwqDC oMKgIHUzMiBwZW5kaW5nX2lycXMgPSAwOwo+Pj4gK8KgwqDCoCBpbnQgaSwgajsKPj4+ICsKPj4+ ICvCoMKgwqAgLyogTG9vayBmb3IgZmlyc3QgcGVuZGluZyBpbnRlcnJ1cHQgKi8KPj4+ICvCoMKg wqAgZm9yIChpID0gMDsgaSA8IG5yX2lycV9ncm91cHM7IGkrKykgewo+Pj4gK8KgwqDCoMKgwqDC oMKgIHBlbmRpbmdfaXJxcyA9IGllW2ldICYgcmVhZGwocGVuZGluZyArIGkgKiBzaXplb2YodTMy KSk7Cj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKHBlbmRpbmdfaXJxcykKPj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGJyZWFrOwo+Pj4gK8KgwqDCoCB9Cj4+PiArCj4+PiArwqDCoMKgIGlmICgh cGVuZGluZ19pcnFzKQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBmYWxzZTsKPj4+ICsKPj4+ ICvCoMKgwqAgLyogRGlzYWJsZSBhbGwgaW50ZXJydXB0cyBidXQgdGhlIGZpcnN0IHBlbmRpbmcg b25lICovCj4+PiArwqDCoMKgIGZvciAoaiA9IDA7IGogPCBucl9pcnFfZ3JvdXBzOyBqKyspIHsK Pj4+ICvCoMKgwqDCoMKgwqDCoCB1MzIgbmV3X21hc2sgPSAwOwo+Pj4gKwo+Pj4gK8KgwqDCoMKg wqDCoMKgIGlmIChqID09IGkpCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBFeHRyYWN0 IG1hc2sgd2l0aCBsb3dlc3Qgc2V0IGJpdCAqLwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg bmV3X21hc2sgPSAocGVuZGluZ19pcnFzICYgLXBlbmRpbmdfaXJxcyk7Cj4+PiArCj4+PiArwqDC oMKgwqDCoMKgwqAgd3JpdGVsKG5ld19tYXNrLCBlbmFibGUgKyBqICogc2l6ZW9mKHUzMikpOwo+ Pj4gK8KgwqDCoCB9Cj4+PiArCj4+PiArwqDCoMKgIHJldHVybiB0cnVlOwo+Pj4gK30KPj4+ICsK Pj4+ICtzdGF0aWMgaXJxX2h3X251bWJlcl90IGRwMTAwMF9nZXRfaHdpcnEoc3RydWN0IHBsaWNf aGFuZGxlciAqaGFuZGxlciwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB2b2lkIF9faW9tZW0gKmNsYWltKQo+Pj4gK3sKPj4+ICvCoMKgwqAgdm9pZCBfX2lvbWVt ICplbmFibGUgPSBoYW5kbGVyLT5lbmFibGVfYmFzZTsKPj4+ICvCoMKgwqAgdm9pZCBfX2lvbWVt ICpwZW5kaW5nID0gaGFuZGxlci0+cHJpdi0+cmVncyArIFBFTkRJTkdfQkFTRTsKPj4+ICvCoMKg wqAgaW50IG5yX2lycXMgPSBoYW5kbGVyLT5wcml2LT5ucl9pcnFzOwo+Pj4gK8KgwqDCoCBpbnQg bnJfaXJxX2dyb3VwcyA9IERJVl9ST1VORF9VUChucl9pcnFzLCAzMik7Cj4+PiArwqDCoMKgIGlu dCBpOwo+Pj4gK8KgwqDCoCB1MzIgaWVbMzJdID0geyAwIH07Cj4+PiArwqDCoMKgIGlycV9od19u dW1iZXJfdCBod2lycSA9IDA7Cj4+PiArCj4+PiArwqDCoMKgIHJhd19zcGluX2xvY2soJmhhbmRs ZXItPmVuYWJsZV9sb2NrKTsKPj4+ICsKPj4+ICvCoMKgwqAgLyogU2F2ZSBjdXJyZW50IGludGVy cnVwdCBlbmFibGUgc3RhdGUgKi8KPj4+ICvCoMKgwqAgZm9yIChpID0gMDsgaSA8IG5yX2lycV9n cm91cHM7IGkrKykKPj4+ICvCoMKgwqDCoMKgwqDCoCBpZVtpXSA9IHJlYWRsKGVuYWJsZSArIGkg KiBzaXplb2YodTMyKSk7Cj4+PiArCj4+PiArwqDCoMKgIGlmICghZHAxMDAwX2lzb2xhdGVfcGVu ZGluZ19pcnEobnJfaXJxX2dyb3VwcywgaWUsIHBlbmRpbmcsIGVuYWJsZSkpCj4+PiArwqDCoMKg wqDCoMKgwqAgZ290byBvdXQ7Cj4+PiArCj4+PiArwqDCoMKgIGh3aXJxID0gcmVhZGwoY2xhaW0p Owo+Pj4gKwo+Pj4gK8KgwqDCoCAvKiBSZXN0b3JlIHByZXZpb3VzIHN0YXRlICovCj4+PiArwqDC oMKgIGZvciAoaSA9IDA7IGkgPCBucl9pcnFfZ3JvdXBzOyBpKyspCj4+PiArwqDCoMKgwqDCoMKg wqAgd3JpdGVsKGllW2ldLCBlbmFibGUgKyBpICogc2l6ZW9mKHUzMikpOwo+Pj4gK291dDoKPj4+ ICvCoMKgwqAgcmF3X3NwaW5fdW5sb2NrKCZoYW5kbGVyLT5lbmFibGVfbG9jayk7Cj4+PiArwqDC oMKgIHJldHVybiBod2lycTsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGlycV9od19udW1iZXJf dCBwbGljX2dldF9od2lycShzdHJ1Y3QgcGxpY19oYW5kbGVyICpoYW5kbGVyLAo+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2b2lkIF9faW9tZW0gKmNsYWlt KQo+Pj4gK3sKPj4+ICvCoMKgwqAgLyoKPj4+ICvCoMKgwqDCoCAqIER1ZSB0byBhIGhhcmR3YXJl IGJ1ZyBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGNsYWltIHJlZ2lzdGVyCj4+PiArwqDC oMKgwqAgKiBpbiB0aGUgVWx0cmFSSVNDIERQMTAwMCBwbGF0Zm9ybSwgb3RoZXIgaW50ZXJydXB0 cyBtdXN0IGJlIGRpc2FibGVkCj4+PiArwqDCoMKgwqAgKiBiZWZvcmUgcmVhZGluZyB0aGUgY2xh aW0gcmVnaXN0ZXIgYW5kIHJlc3RvcmVkIGFmdGVyd2FyZHMuCj4+PiArwqDCoMKgwqAgKi8KPj4+ ICsKPj4+ICvCoMKgwqAgaWYgKHRlc3RfYml0KFBMSUNfUVVJUktfQ0xBSU1fUkVHSVNURVIsICZo YW5kbGVyLT5wcml2LT5wbGljX3F1aXJrcykpCj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGRw MTAwMF9nZXRfaHdpcnEoaGFuZGxlciwgY2xhaW0pOwo+Pj4gKwo+Pj4gK8KgwqDCoCByZXR1cm4g cmVhZGwoY2xhaW0pOwo+Pj4gK30KPj4+ICsKPj4+IMKgIC8qCj4+PiDCoMKgICogSGFuZGxpbmcg YW4gaW50ZXJydXB0IGlzIGEgdHdvLXN0ZXAgcHJvY2VzczogZmlyc3QgeW91IGNsYWltIHRoZSBp bnRlcnJ1cHQKPj4+IMKgwqAgKiBieSByZWFkaW5nIHRoZSBjbGFpbSByZWdpc3RlciwgdGhlbiB5 b3UgY29tcGxldGUgdGhlIGludGVycnVwdCBieSB3cml0aW5nCj4+PiBAQCAtMzg0LDcgKzQ2Myw3 IEBAIHN0YXRpYyB2b2lkIHBsaWNfaGFuZGxlX2lycShzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2MpCj4+ Pgo+Pj4gwqDCoMKgwqDCoCBjaGFpbmVkX2lycV9lbnRlcihjaGlwLCBkZXNjKTsKPj4+Cj4+PiAt wqDCoMKgIHdoaWxlICgoaHdpcnEgPSByZWFkbChjbGFpbSkpKSB7Cj4+PiArwqDCoMKgIHdoaWxl ICgoaHdpcnEgPSBwbGljX2dldF9od2lycShoYW5kbGVyLCBjbGFpbSkpKSB7Cj4+Cj4+IFRoaXMg aXMgdGhlIGhvdCBwYXRoIGZvciBpbnRlcnJ1cHQgaGFuZGxpbmcuIEluc3RlYWQgb2YgY2hlY2tp bmcgZm9yIHRoZSBxdWlyawo+PiBvbiBldmVyeSBpbnRlcnJ1cHQsIHBsZWFzZSBjcmVhdGUgYSBu ZXcgZnVuY3Rpb24gdGhhdCB5b3UgY29uZGl0aW9uYWxseSBwYXNzIHRvCj4+IGlycV9zZXRfY2hh aW5lZF9oYW5kbGVyKCksIHNvIHRoZSBxdWlyayBjaGVjayBvbmx5IGhhcHBlbnMgb25jZSBhdCBi b290Lgo+Pgo+PiBSZWdhcmRzLAo+PiBTYW11ZWwKPj4KPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBp bnQgZXJyID0gZ2VuZXJpY19oYW5kbGVfZG9tYWluX2lycShoYW5kbGVyLT5wcml2LT5pcnFkb21h aW4sCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGh3aXJxKTsKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAodW5saWtlbHkoZXJy KSkgewo+Pj4gQEAgLTQzMiw2ICs1MTEsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rldmlj ZV9pZCBwbGljX21hdGNoW10gPSB7Cj4+PiDCoMKgwqDCoMKgwqDCoCAuZGF0YSA9IChjb25zdCB2 b2lkICopQklUKFBMSUNfUVVJUktfRURHRV9JTlRFUlJVUFQpIH0sCj4+PiDCoMKgwqDCoMKgIHsg LmNvbXBhdGlibGUgPSAidGhlYWQsYzkwMC1wbGljIiwKPj4+IMKgwqDCoMKgwqDCoMKgIC5kYXRh ID0gKGNvbnN0IHZvaWQgKilCSVQoUExJQ19RVUlSS19FREdFX0lOVEVSUlVQVCkgfSwKPj4+ICvC oMKgwqAgeyAuY29tcGF0aWJsZSA9ICJ1bHRyYXJpc2MsY3AxMDAtcGxpYyIsCj4+PiArwqDCoMKg wqDCoCAuZGF0YSA9IChjb25zdCB2b2lkICopQklUKFBMSUNfUVVJUktfQ0xBSU1fUkVHSVNURVIp IH0sCj4+PiDCoMKgwqDCoMKgIHt9Cj4+PiDCoCB9Owo+Pj4KPj4+IC0tIAo+Pj4gMi41MS4wCj4+ Pgo+Pgo+IAo+IEJvCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KbGludXgtcmlzY3YgbWFpbGluZyBsaXN0CmxpbnV4LXJpc2N2QGxpc3RzLmluZnJhZGVh ZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1y aXNjdgo=