Received: by 2002:a05:7412:b795:b0:e2:908c:2ebd with SMTP id iv21csp183282rdb; Wed, 1 Nov 2023 23:40:06 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGeOXenYWm/j1AZpiuef1dtaHNlDdh0cMa/n5E88rUz1NxbutDZEz9Hod18trF+QlDuzAdX X-Received: by 2002:a17:902:f98d:b0:1cc:32df:8ebd with SMTP id ky13-20020a170902f98d00b001cc32df8ebdmr5803729plb.25.1698907205715; Wed, 01 Nov 2023 23:40:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698907205; cv=none; d=google.com; s=arc-20160816; b=sSjWeFeV7zn20u+W2Y8Gh5liFIta5qWngsEgC/CXPh2kxEv0Bw91VE/GvMNkFpq7ij 3DWUx2an3a7kmn5s6fdI+gzIIKfRqoYqqhSRsAE129O3Nmg25pBikGb7QdaYdPMP7hDd lDUmLX0zRCTNsk20mx7NZVuqIWF26IsArB/ti3F4OjZV0cL1i98cNKzRqF17PNjXX2v6 p6EVo20SvXV31UFYj7VoDhYWbxkV7otoVFtjgfZcTh5t7h3sClkoqA/oEK91/Gkd67hL WWBhGETC/+Wyu66wI0IerPTKzDkfxtDtzTIQPhWAfVX2cq+v+wKNCVP0aSK9UVcc7BVD 3UlQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:mime-version :content-transfer-encoding:references:in-reply-to:subject:cc:to:from :date:dkim-signature; bh=QIbfxSvZBxnjc8Vn5tb662Ua5hkdvGm9rkjO8poIM/Q=; fh=8+PT5aK54oWBNdigCI4bKBqaMn1eAKCbFBTQaIuBkoQ=; b=s7DNkgvWOy4PdOYSIsVkjQEaEjmRGw5gHf620F7P1vuHAKRxphQUYKiE7FBzv7fu9W UtzC/aXS29jE1UG9RLRgHjt+f1QCaMr0oTVzq41VIJeKb2zgCE57+f61HbWcJzC8iZVo yFo+T5O4Q4kBus8/jjD96SN/0NxsJca0xSRasbVC8e33GQOWtv3C38JI2tjdvkU2jghV YXGgjMT9u92wBjuldXZ5hO6pqdk7YUC6shKwAvRDyYjD0BxvFPcp3Kc1EudY5MeKJ0kq 7BJXTnJG8ks26pT9T+i8I1BPiYy7Be9/7xJLqeHiIaHcxiekmhQGi40W8KJ5SQV8Ym0+ mZ+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@126.com header.s=s110527 header.b=W42IypzM; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=126.com Return-Path: Received: from agentk.vger.email (agentk.vger.email. [2620:137:e000::3:2]) by mx.google.com with ESMTPS id q10-20020a170902c74a00b001c72dbaf7b9si4223685plq.415.2023.11.01.23.40.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Nov 2023 23:40:05 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) client-ip=2620:137:e000::3:2; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@126.com header.s=s110527 header.b=W42IypzM; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=126.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 8D69E801D1FD; Wed, 1 Nov 2023 23:39:58 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231893AbjKBGj2 (ORCPT + 99 others); Thu, 2 Nov 2023 02:39:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39336 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229445AbjKBGj1 (ORCPT ); Thu, 2 Nov 2023 02:39:27 -0400 X-Greylist: delayed 825 seconds by postgrey-1.37 at lindbergh.monkeyblade.net; Wed, 01 Nov 2023 23:39:22 PDT Received: from m1542.mail.126.com (m1542.mail.126.com [220.181.15.42]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 9510D111; Wed, 1 Nov 2023 23:39:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=126.com; s=s110527; h=Date:From:Subject:Content-Type:MIME-Version: Message-ID; bh=JhwPo/5fQIuIsuLIbBHF0L1PUfc7KUfBl0DLMqcvfHQ=; b=W 42IypzM3lZUCRZryBDl97fWxZjy00eVEnQUnwzlz9/0FoRTzJdAwE+RZ6UCQXqDG flXrjwTJ4JvYNvspUlxGCR9L23iztz0K+oY8wOAmBRYetRqcPd6J7REDbWus/ipZ vvDt0KqrNnRlpGhVzbIr9hr7lBG6kyHto9U8bAkye4= Received: from figure1802$126.com ( [116.230.161.2] ) by ajax-webmail-wmsvr42 (Coremail) ; Thu, 2 Nov 2023 14:38:25 +0800 (CST) X-Originating-IP: [116.230.161.2] Date: Thu, 2 Nov 2023 14:38:25 +0800 (CST) From: Ben To: "Anup Patel" Cc: "Palmer Dabbelt" , "Paul Walmsley" , "Thomas Gleixner" , "Rob Herring" , "Krzysztof Kozlowski" , "Frank Rowand" , "Conor Dooley" , devicetree@vger.kernel.org, "Saravana Kannan" , "Marc Zyngier" , "Anup Patel" , linux-kernel@vger.kernel.org, =?UTF-8?Q?Bj=C3=B6rn_T=C3=B6pel?= , "Atish Patra" , linux-riscv@lists.infradead.org, "Andrew Jones" Subject: Re:[PATCH v11 12/14] irqchip/riscv-aplic: Add support for MSI-mode X-Priority: 3 X-Mailer: Coremail Webmail Server Version XT5.0.14 build 20230109(dcb5de15) Copyright (c) 2002-2023 www.mailtech.cn 126com In-Reply-To: <20231023172800.315343-13-apatel@ventanamicro.com> References: <20231023172800.315343-1-apatel@ventanamicro.com> <20231023172800.315343-13-apatel@ventanamicro.com> X-NTES-SC: AL_QuySCvWbuEkr4ymbYekfm08Xhew/XsK1vfkm3I5QN5FwjBHk2TAdVFxgH0D369KyFieUmzu0cCNO0+9ddrVGQJAS7dvG1RYpme0LZo5kTGfbJg== Content-Transfer-Encoding: base64 Content-Type: text/plain; charset=UTF-8 MIME-Version: 1.0 Message-ID: <5cac8e90.333b.18b8ec12a90.Coremail.figure1802@126.com> X-Coremail-Locale: zh_CN X-CM-TRANSID: KsqowADnj4rhQ0NlJJATAA--.62121W X-CM-SenderInfo: pilj32bhryija6rslhhfrp/1tbiLQEcXlpEBsgBDwAAsw X-Coremail-Antispam: 1U5529EdanIXcx71UUUUU7vcSsGvfC2KfnxnUU== X-Spam-Status: No, score=-0.3 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Wed, 01 Nov 2023 23:39:58 -0700 (PDT) CkF0IDIwMjMtMTAtMjQgMDE6Mjc6NTgsICJBbnVwIFBhdGVsIiA8YXBhdGVsQHZlbnRhbmFtaWNy by5jb20+IHdyb3RlOgo+VGhlIFJJU0MtViBhZHZhbmNlZCBwbGF0Zm9ybS1sZXZlbCBpbnRlcnJ1 cHQgY29udHJvbGxlciAoQVBMSUMpIGhhcwo+dHdvIG1vZGVzIG9mIG9wZXJhdGlvbjogMSkgRGly ZWN0IG1vZGUgYW5kIDIpIE1TSSBtb2RlLgo+KEZvciBtb3JlIGRldGFpbHMsIHJlZmVyIGh0dHBz Oi8vZ2l0aHViLmNvbS9yaXNjdi9yaXNjdi1haWEpCj4KPkluIEFQTElDIE1TSS1tb2RlLCB3aXJl ZCBpbnRlcnJ1cHRzIGFyZSBmb3J3YXJlZCBhcyBtZXNzYWdlIHNpZ25hbGVkCj5pbnRlcnJ1cHRz IChNU0lzKSB0byBDUFVzIHZpYSBJTVNJQy4KPgo+V2UgZXh0ZW5kIHRoZSBleGlzdGluZyBBUExJ QyBpcnFjaGlwIGRyaXZlciB0byBzdXBwb3J0IE1TSS1tb2RlIGZvcgo+UklTQy1WIHBsYXRmb3Jt cyBoYXZpbmcgYm90aCB3aXJlZCBpbnRlcnJ1cHRzIGFuZCBNU0lzLgo+Cj5TaWduZWQtb2ZmLWJ5 OiBBbnVwIFBhdGVsIDxhcGF0ZWxAdmVudGFuYW1pY3JvLmNvbT4KPi0tLQo+IGRyaXZlcnMvaXJx Y2hpcC9LY29uZmlnICAgICAgICAgICAgICAgIHwgICA2ICsKPiBkcml2ZXJzL2lycWNoaXAvTWFr ZWZpbGUgICAgICAgICAgICAgICB8ICAgMSArCj4gZHJpdmVycy9pcnFjaGlwL2lycS1yaXNjdi1h cGxpYy1tYWluLmMgfCAgIDIgKy0KPiBkcml2ZXJzL2lycWNoaXAvaXJxLXJpc2N2LWFwbGljLW1h aW4uaCB8ICAgOCArCj4gZHJpdmVycy9pcnFjaGlwL2lycS1yaXNjdi1hcGxpYy1tc2kuYyAgfCAy ODUgKysrKysrKysrKysrKysrKysrKysrKysrKwo+IDUgZmlsZXMgY2hhbmdlZCwgMzAxIGluc2Vy dGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9pcnFj aGlwL2lycS1yaXNjdi1hcGxpYy1tc2kuYwo+Cj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pcnFjaGlw L0tjb25maWcgYi9kcml2ZXJzL2lycWNoaXAvS2NvbmZpZwo+aW5kZXggMTk5NmNjNmY2NjZhLi43 YWRjNGRiZTA3ZmYgMTAwNjQ0Cj4tLS0gYS9kcml2ZXJzL2lycWNoaXAvS2NvbmZpZwo+KysrIGIv ZHJpdmVycy9pcnFjaGlwL0tjb25maWcKPkBAIC01NTEsNiArNTUxLDEyIEBAIGNvbmZpZyBSSVND Vl9BUExJQwo+IAlkZXBlbmRzIG9uIFJJU0NWCj4gCXNlbGVjdCBJUlFfRE9NQUlOX0hJRVJBUkNI WQo+IAo+K2NvbmZpZyBSSVNDVl9BUExJQ19NU0kKPisJYm9vbAo+KwlkZXBlbmRzIG9uIFJJU0NW X0FQTElDCj4rCXNlbGVjdCBHRU5FUklDX01TSV9JUlEKPisJZGVmYXVsdCBSSVNDVl9BUExJQwo+ Kwo+IGNvbmZpZyBSSVNDVl9JTVNJQwo+IAlib29sCj4gCWRlcGVuZHMgb24gUklTQ1YKPmRpZmYg LS1naXQgYS9kcml2ZXJzL2lycWNoaXAvTWFrZWZpbGUgYi9kcml2ZXJzL2lycWNoaXAvTWFrZWZp bGUKPmluZGV4IDdmODI4OTc5MGVkOC4uNDc5OTVmZGIyYzYwIDEwMDY0NAo+LS0tIGEvZHJpdmVy cy9pcnFjaGlwL01ha2VmaWxlCj4rKysgYi9kcml2ZXJzL2lycWNoaXAvTWFrZWZpbGUKPkBAIC05 Niw2ICs5Niw3IEBAIG9iai0kKENPTkZJR19DU0tZX01QSU5UQykJCSs9IGlycS1jc2t5LW1waW50 Yy5vCj4gb2JqLSQoQ09ORklHX0NTS1lfQVBCX0lOVEMpCQkrPSBpcnEtY3NreS1hcGItaW50Yy5v Cj4gb2JqLSQoQ09ORklHX1JJU0NWX0lOVEMpCQkrPSBpcnEtcmlzY3YtaW50Yy5vCj4gb2JqLSQo Q09ORklHX1JJU0NWX0FQTElDKQkJKz0gaXJxLXJpc2N2LWFwbGljLW1haW4ubyBpcnEtcmlzY3Yt YXBsaWMtZGlyZWN0Lm8KPitvYmotJChDT05GSUdfUklTQ1ZfQVBMSUNfTVNJKQkJKz0gaXJxLXJp c2N2LWFwbGljLW1zaS5vCj4gb2JqLSQoQ09ORklHX1JJU0NWX0lNU0lDKQkJKz0gaXJxLXJpc2N2 LWltc2ljLXN0YXRlLm8gaXJxLXJpc2N2LWltc2ljLWVhcmx5Lm8gaXJxLXJpc2N2LWltc2ljLXBs YXRmb3JtLm8KPiBvYmotJChDT05GSUdfU0lGSVZFX1BMSUMpCQkrPSBpcnEtc2lmaXZlLXBsaWMu bwo+IG9iai0kKENPTkZJR19JTVhfSVJRU1RFRVIpCQkrPSBpcnEtaW14LWlycXN0ZWVyLm8KPmRp ZmYgLS1naXQgYS9kcml2ZXJzL2lycWNoaXAvaXJxLXJpc2N2LWFwbGljLW1haW4uYyBiL2RyaXZl cnMvaXJxY2hpcC9pcnEtcmlzY3YtYXBsaWMtbWFpbi5jCj5pbmRleCA4NzQ1MDcwOGE3MzMuLmQx YjM0MmI2NjU1MSAxMDA2NDQKPi0tLSBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtcmlzY3YtYXBsaWMt bWFpbi5jCj4rKysgYi9kcml2ZXJzL2lycWNoaXAvaXJxLXJpc2N2LWFwbGljLW1haW4uYwo+QEAg LTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMgaW50IGFwbGljX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYpCj4gCQltc2lfbW9kZSA9IG9mX3Byb3BlcnR5X3ByZXNlbnQodG9fb2Zfbm9k ZShkZXYtPmZ3bm9kZSksCj4gCQkJCQkJIm1zaS1wYXJlbnQiKTsKPiAJaWYgKG1zaV9tb2RlKQo+ LQkJcmMgPSAtRU5PREVWOwo+KwkJcmMgPSBhcGxpY19tc2lfc2V0dXAoZGV2LCByZWdzKTsKPiAJ ZWxzZQo+IAkJcmMgPSBhcGxpY19kaXJlY3Rfc2V0dXAoZGV2LCByZWdzKTsKPiAJaWYgKHJjKSB7 Cj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pcnFjaGlwL2lycS1yaXNjdi1hcGxpYy1tYWluLmggYi9k cml2ZXJzL2lycWNoaXAvaXJxLXJpc2N2LWFwbGljLW1haW4uaAo+aW5kZXggNDc0YTA0MjI5MzM0 Li43ODI2N2VjNTgwOTggMTAwNjQ0Cj4tLS0gYS9kcml2ZXJzL2lycWNoaXAvaXJxLXJpc2N2LWFw bGljLW1haW4uaAo+KysrIGIvZHJpdmVycy9pcnFjaGlwL2lycS1yaXNjdi1hcGxpYy1tYWluLmgK PkBAIC00MSw1ICs0MSwxMyBAQCB2b2lkIGFwbGljX2luaXRfaHdfZ2xvYmFsKHN0cnVjdCBhcGxp Y19wcml2ICpwcml2LCBib29sIG1zaV9tb2RlKTsKPiBpbnQgYXBsaWNfc2V0dXBfcHJpdihzdHJ1 Y3QgYXBsaWNfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZSAqZGV2LAo+IAkJICAgICB2b2lkIF9f aW9tZW0gKnJlZ3MpOwo+IGludCBhcGxpY19kaXJlY3Rfc2V0dXAoc3RydWN0IGRldmljZSAqZGV2 LCB2b2lkIF9faW9tZW0gKnJlZ3MpOwo+KyNpZmRlZiBDT05GSUdfUklTQ1ZfQVBMSUNfTVNJCj4r aW50IGFwbGljX21zaV9zZXR1cChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgX19pb21lbSAqcmVn cyk7Cj4rI2Vsc2UKPitzdGF0aWMgaW5saW5lIGludCBhcGxpY19tc2lfc2V0dXAoc3RydWN0IGRl dmljZSAqZGV2LCB2b2lkIF9faW9tZW0gKnJlZ3MpCj4rewo+KwlyZXR1cm4gLUVOT0RFVjsKPit9 Cj4rI2VuZGlmCj4gCj4gI2VuZGlmCj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pcnFjaGlwL2lycS1y aXNjdi1hcGxpYy1tc2kuYyBiL2RyaXZlcnMvaXJxY2hpcC9pcnEtcmlzY3YtYXBsaWMtbXNpLmMK Pm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj5pbmRleCAwMDAwMDAwMDAwMDAuLjA4NmQwMGUwNDI5ZQo+ LS0tIC9kZXYvbnVsbAo+KysrIGIvZHJpdmVycy9pcnFjaGlwL2lycS1yaXNjdi1hcGxpYy1tc2ku Ywo+QEAgLTAsMCArMSwyODUgQEAKPisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIu MAo+Ky8qCj4rICogQ29weXJpZ2h0IChDKSAyMDIxIFdlc3Rlcm4gRGlnaXRhbCBDb3Jwb3JhdGlv biBvciBpdHMgYWZmaWxpYXRlcy4KPisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgVmVudGFuYSBNaWNy byBTeXN0ZW1zIEluYy4KPisgKi8KPisKPisjaW5jbHVkZSA8bGludXgvYml0b3BzLmg+Cj4rI2lu Y2x1ZGUgPGxpbnV4L2NwdS5oPgo+KyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KPisjaW5j bHVkZSA8bGludXgvaXJxY2hpcC5oPgo+KyNpbmNsdWRlIDxsaW51eC9pcnFjaGlwL3Jpc2N2LWFw bGljLmg+Cj4rI2luY2x1ZGUgPGxpbnV4L2lycWNoaXAvcmlzY3YtaW1zaWMuaD4KPisjaW5jbHVk ZSA8bGludXgvbW9kdWxlLmg+Cj4rI2luY2x1ZGUgPGxpbnV4L21zaS5oPgo+KyNpbmNsdWRlIDxs aW51eC9vZl9pcnEuaD4KPisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4rI2lu Y2x1ZGUgPGxpbnV4L3ByaW50ay5oPgo+KyNpbmNsdWRlIDxsaW51eC9zbXAuaD4KPisKPisjaW5j bHVkZSAiaXJxLXJpc2N2LWFwbGljLW1haW4uaCIKPisKPitzdGF0aWMgdm9pZCBhcGxpY19tc2lf aXJxX3VubWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpCj4rewo+KwlhcGxpY19pcnFfdW5tYXNrKGQp Owo+KwlpcnFfY2hpcF91bm1hc2tfcGFyZW50KGQpOwo+K30KPisKPitzdGF0aWMgdm9pZCBhcGxp Y19tc2lfaXJxX21hc2soc3RydWN0IGlycV9kYXRhICpkKQo+K3sKPisJYXBsaWNfaXJxX21hc2so ZCk7Cj4rCWlycV9jaGlwX21hc2tfcGFyZW50KGQpOwo+K30KPisKPitzdGF0aWMgdm9pZCBhcGxp Y19tc2lfaXJxX2VvaShzdHJ1Y3QgaXJxX2RhdGEgKmQpCj4rewo+KwlzdHJ1Y3QgYXBsaWNfcHJp diAqcHJpdiA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQpOwo+Kwl1MzIgcmVnX29mZiwg cmVnX21hc2s7Cj4rCj4rCS8qCj4rCSAqIEVPSSBoYW5kbGluZyBvbmx5IHJlcXVpcmVkIG9ubHkg Zm9yIGxldmVsLXRyaWdnZXJlZAo+KwkgKiBpbnRlcnJ1cHRzIGluIEFQTElDIE1TSSBtb2RlLgo+ KwkgKi8KPisKPisJcmVnX29mZiA9IEFQTElDX0NMUklQX0JBU0UgKyAoKGQtPmh3aXJxIC8gQVBM SUNfSVJRQklUU19QRVJfUkVHKSAqIDQpOwo+KwlyZWdfbWFzayA9IEJJVChkLT5od2lycSAlIEFQ TElDX0lSUUJJVFNfUEVSX1JFRyk7Cj4rCXN3aXRjaCAoaXJxZF9nZXRfdHJpZ2dlcl90eXBlKGQp KSB7Cj4rCWNhc2UgSVJRX1RZUEVfTEVWRUxfTE9XOgo+KwkJaWYgKCEocmVhZGwocHJpdi0+cmVn cyArIHJlZ19vZmYpICYgcmVnX21hc2spKQo+KwkJCXdyaXRlbChkLT5od2lycSwgcHJpdi0+cmVn cyArIEFQTElDX1NFVElQTlVNX0xFKTsKPisJCWJyZWFrOwo+KwljYXNlIElSUV9UWVBFX0xFVkVM X0hJR0g6Cj4rCQlpZiAocmVhZGwocHJpdi0+cmVncyArIHJlZ19vZmYpICYgcmVnX21hc2spCj4r CQkJd3JpdGVsKGQtPmh3aXJxLCBwcml2LT5yZWdzICsgQVBMSUNfU0VUSVBOVU1fTEUpOwo+KwkJ YnJlYWs7Cj4rCX0KPit9Cj4rCj4rc3RhdGljIHN0cnVjdCBpcnFfY2hpcCBhcGxpY19tc2lfY2hp cCA9IHsKPisJLm5hbWUJCT0gIkFQTElDLU1TSSIsCj4rCS5pcnFfbWFzawk9IGFwbGljX21zaV9p cnFfbWFzaywKPisJLmlycV91bm1hc2sJPSBhcGxpY19tc2lfaXJxX3VubWFzaywKPisJLmlycV9z ZXRfdHlwZQk9IGFwbGljX2lycV9zZXRfdHlwZSwKPisJLmlycV9lb2kJPSBhcGxpY19tc2lfaXJx X2VvaSwKPisjaWZkZWYgQ09ORklHX1NNUAo+KwkuaXJxX3NldF9hZmZpbml0eSA9IGlycV9jaGlw X3NldF9hZmZpbml0eV9wYXJlbnQsCj4rI2VuZGlmCj4rCS5mbGFncwkJPSBJUlFDSElQX1NFVF9U WVBFX01BU0tFRCB8Cj4rCQkJICBJUlFDSElQX1NLSVBfU0VUX1dBS0UgfAo+KwkJCSAgSVJRQ0hJ UF9NQVNLX09OX1NVU1BFTkQsCj4rfTsKPisKPitzdGF0aWMgaW50IGFwbGljX21zaV9pcnFkb21h aW5fdHJhbnNsYXRlKHN0cnVjdCBpcnFfZG9tYWluICpkLAo+KwkJCQkJIHN0cnVjdCBpcnFfZndz cGVjICpmd3NwZWMsCj4rCQkJCQkgdW5zaWduZWQgbG9uZyAqaHdpcnEsCj4rCQkJCQkgdW5zaWdu ZWQgaW50ICp0eXBlKQo+K3sKPisJc3RydWN0IGFwbGljX3ByaXYgKnByaXYgPSBwbGF0Zm9ybV9t c2lfZ2V0X2hvc3RfZGF0YShkKTsKPisKPisJcmV0dXJuIGFwbGljX2lycWRvbWFpbl90cmFuc2xh dGUoZndzcGVjLCBwcml2LT5nc2lfYmFzZSwgaHdpcnEsIHR5cGUpOwo+K30KPisKPitzdGF0aWMg aW50IGFwbGljX21zaV9pcnFkb21haW5fYWxsb2Moc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwK PisJCQkJICAgICB1bnNpZ25lZCBpbnQgdmlycSwgdW5zaWduZWQgaW50IG5yX2lycXMsCj4rCQkJ CSAgICAgdm9pZCAqYXJnKQo+K3sKPisJaW50IGksIHJldDsKPisJdW5zaWduZWQgaW50IHR5cGU7 Cj4rCWlycV9od19udW1iZXJfdCBod2lycTsKPisJc3RydWN0IGlycV9md3NwZWMgKmZ3c3BlYyA9 IGFyZzsKPisJc3RydWN0IGFwbGljX3ByaXYgKnByaXYgPSBwbGF0Zm9ybV9tc2lfZ2V0X2hvc3Rf ZGF0YShkb21haW4pOwo+Kwo+KwlyZXQgPSBhcGxpY19pcnFkb21haW5fdHJhbnNsYXRlKGZ3c3Bl YywgcHJpdi0+Z3NpX2Jhc2UsICZod2lycSwgJnR5cGUpOwo+KwlpZiAocmV0KQo+KwkJcmV0dXJu IHJldDsKPisKPisJcmV0ID0gcGxhdGZvcm1fbXNpX2RldmljZV9kb21haW5fYWxsb2MoZG9tYWlu LCB2aXJxLCBucl9pcnFzKTsKPisJaWYgKHJldCkKPisJCXJldHVybiByZXQ7Cj4rCj4rCWZvciAo aSA9IDA7IGkgPCBucl9pcnFzOyBpKyspIHsKPisJCWlycV9kb21haW5fc2V0X2luZm8oZG9tYWlu LCB2aXJxICsgaSwgaHdpcnEgKyBpLAo+KwkJCQkgICAgJmFwbGljX21zaV9jaGlwLCBwcml2LCBo YW5kbGVfZmFzdGVvaV9pcnEsCj4rCQkJCSAgICBOVUxMLCBOVUxMKTsKPisJCS8qCj4rCQkgKiBB UExJQyBkb2VzIG5vdCBpbXBsZW1lbnQgaXJxX2Rpc2FibGUoKSBzbyBMaW51eCBpbnRlcnJ1cHQK PisJCSAqIHN1YnN5c3RlbSB3aWxsIHRha2UgYSBsYXp5IGFwcHJvYWNoIGZvciBkaXNhYmxpbmcg YW4gQVBMSUMKPisJCSAqIGludGVycnVwdC4gVGhpcyBtZWFucyBBUExJQyBpbnRlcnJ1cHRzIGFy ZSBsZWZ0IHVubWFza2VkCj4rCQkgKiB1cG9uIHN5c3RlbSBzdXNwZW5kIGFuZCBpbnRlcnJ1cHRz IGFyZSBub3QgcHJvY2Vzc2VkCj4rCQkgKiBpbW1lZGlhdGVseSB1cG9uIHN5c3RlbSB3YWtlIHVw LiBUbyB0YWNrbGUgdGhpcywgd2UgZGlzYWJsZQo+KwkJICogdGhlIGxhenkgYXBwcm9hY2ggZm9y IGFsbCBBUExJQyBpbnRlcnJ1cHRzLgo+KwkJICovCj4rCQlpcnFfc2V0X3N0YXR1c19mbGFncyh2 aXJxICsgaSwgSVJRX0RJU0FCTEVfVU5MQVpZKTsKCj4rCX0KCgpGb3IgcGxhdGZyb20gTVNJIGly cSwgaXQgd2lsbCBjYWxsIGlycV9kb21haW5fc2V0X2luZm8oKSBhbmQgaXJxX3NldF9zdGF0dXNf ZmxhZ3MoKSB0d2ljZSwgdGhlIGZpcnN0IG9uZSBpcyBoZXJlOgpwbGF0Zm9ybV9tc2lfZGV2aWNl X2RvbWFpbl9hbGxvYy0+bXNpX2RvbWFpbl9wb3B1bGF0ZV9pcnFzLT5pcnFfZG9tYWluX2FsbG9j X2lycXNfaGllcmFyY2h5LT5pbXNpY19pcnFfZG9tYWluX2FsbG9jLT5pcnFfZG9tYWluX3NldF9p bmZvCgoKc28gIGkgdGhpbmsgaGVyZSB0aGlzIGZvciguLi4pIGlzIG5vdCBuZWNlc3NhcnksIGNh biBiZSByZW1vdmVkLgoKCgoK