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 32529EE14A0 for ; Wed, 6 Sep 2023 14:53:07 +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=ZaS5x3Cn7MsgQd4eUb6DRMhb20bSnD6/XdMwf2q/Tug=; b=MZChjNUV4jR1qD g1/NHnUObzOQbTp4inVu/dJ2iVbdgczgy37RXR3agt1kTI9Jvn0CedLiC3UOUDIwfD3pNjKXgyd1c jZfJzvNYRQUkgftRwlZEE8O7/tANj9fAHxWuTGxH+QsD/smKBkjpbllN8UnQYdNYb1yOD0lUzW7wX 1qiWF6a/yFGmr6OpTgZ3gIzqha3R0Twbxe7m9IpHqwzSWazhYMab/u51WD5MZVofgUFoI9s/N0lKN n8Bp90z9X29+YstdcjonH3A5J/fQuqXqU+V1cXUIMQ3+fiwRCoRLjGh75+EGRNSUUKipaKLY/RtOC ZVYzj5NKE1IbK/qn8Amw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qdttc-00AKCh-1L; Wed, 06 Sep 2023 14:52:44 +0000 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qdttX-00AK9G-2D for linux-arm-kernel@lists.infradead.org; Wed, 06 Sep 2023 14:52:41 +0000 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-68a41031768so2525025b3a.3 for ; Wed, 06 Sep 2023 07:52:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1694011957; x=1694616757; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=iIXskIa41OJTqF4jDznPqpoe/ky/IVDYujtOuF39ld4=; b=UVaTLHFUCYovnS86gXt7W1iHQy38kkBZZyhRbx4M+vJQMIqHtkfmrWAFoYIaUgH5zc gFQ9Hdt0MB0mQiP/TNcz9E0tqH43SdTS8LRNRqTg6Kw1QWy5xiT/oSOAyONOgvCIbZ3B Z8h/Yy6wOaSGwPKdxKCxdR20zX/ul/ub05y1T9SONrhEaZWVfRtJ3YhRSZza+PwYR9gJ w+xMf0KI2pU00JuiAwgn0D3PJcVXD4y/kG4K0DECNApyN0cM639bnThe74Vb8R0es7Xj rYQBzYivjSfI2e+4fx4UBI8r0dBtL0iAFqAX0Jds23yZP2WT5Esc3uoa5b0UexYQ24lW BNxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1694011957; x=1694616757; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=iIXskIa41OJTqF4jDznPqpoe/ky/IVDYujtOuF39ld4=; b=anKM21FOIRgvscJtU7iRmLioR3cCWaSIlw9LmNMWHAfaejJO6O+d90dsOXAUyfCGMn j5AIuuVs0nxsscJxFO008AXFYSST1xk9sPFEUdKRlUSgnZlByt2T5p5ohLOKAbXHkplk jsipvkDdqLKuosZXo23SFicLf2E1rugAWswOBsuAoNKEvJ13tQKsqUJbm7+4YRoIOuuO +n5cEA7jlP5cxdwg3aAXep5BnMOl8dhScpDZo+ZFm0PuH0OhI0lMMaNAFG/dpTs1lX3x h4ACrPh5JVbL380MEPyIMjrAenaOxwMvw8OjYHhG5FXqyYRCdtnMN8EI9DDMzW/5PSf+ mm2w== X-Gm-Message-State: AOJu0Yyw0KURpgvFWQSPVp6W0KJFgi72pXdLjhzUNKKAj9dOV+/5Mk3+ qRA5i1Z9Rt4UrHh2EwL2b8bX X-Google-Smtp-Source: AGHT+IHCPnadD7sSvbHw2CVVTutjbc0V+gUCV6BgHafqcgrpRS25li4uEeyVZTnravxDqg1XCFHj4Q== X-Received: by 2002:a05:6a21:3b4a:b0:142:aced:c643 with SMTP id zy10-20020a056a213b4a00b00142acedc643mr15536371pzb.31.1694011957329; Wed, 06 Sep 2023 07:52:37 -0700 (PDT) Received: from thinkpad ([120.138.12.139]) by smtp.gmail.com with ESMTPSA id l24-20020a637018000000b0056afdbd0a24sm11400168pgc.9.2023.09.06.07.52.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Sep 2023 07:52:36 -0700 (PDT) Date: Wed, 6 Sep 2023 20:22:27 +0530 From: Manivannan Sadhasivam To: Frank Li Cc: tglx@linutronix.de, aisheng.dong@nxp.com, bhelgaas@google.com, devicetree@vger.kernel.org, festevam@gmail.com, imx@lists.linux.dev, jdmason@kudzu.us, kernel@pengutronix.de, kishon@ti.com, krzysztof.kozlowski+dt@linaro.org, kw@linux.com, linux-arm-kernel@lists.infradead.org, linux-imx@nxp.com, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, lorenzo.pieralisi@arm.com, lpieralisi@kernel.org, maz@kernel.org, ntb@lists.linux.dev, peng.fan@nxp.com, robh+dt@kernel.org, s.hauer@pengutronix.de, shawnguo@kernel.org Subject: Re: [PATCH 1/3] PCI: endpoint: Add RC-to-EP doorbell support using platform MSI controller Message-ID: <20230906145227.GC5930@thinkpad> References: <20230426203436.1277307-1-Frank.Li@nxp.com> <20230426203436.1277307-2-Frank.Li@nxp.com> <20230902045214.GA2913@thinkpad> <20230902045328.GB2913@thinkpad> <20230906122605.GB5930@thinkpad> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230906_075239_761729_0783FBC4 X-CRM114-Status: GOOD ( 51.52 ) 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 T24gV2VkLCBTZXAgMDYsIDIwMjMgYXQgMTA6MzM6MzdBTSAtMDQwMCwgRnJhbmsgTGkgd3JvdGU6 Cj4gT24gV2VkLCBTZXAgMDYsIDIwMjMgYXQgMDU6NTY6MDVQTSArMDUzMCwgTWFuaXZhbm5hbiBT YWRoYXNpdmFtIHdyb3RlOgo+ID4gT24gV2VkLCBTZXAgMDYsIDIwMjMgYXQgMTI6MjQ6NTBBTSAt MDQwMCwgRnJhbmsgTGkgd3JvdGU6Cj4gPiA+IE9uIFNhdCwgU2VwIDAyLCAyMDIzIGF0IDEwOjIz OjI4QU0gKzA1MzAsIE1hbml2YW5uYW4gU2FkaGFzaXZhbSB3cm90ZToKPiA+ID4gPiBPbiBTYXQs IFNlcCAwMiwgMjAyMyBhdCAxMDoyMjoyNUFNICswNTMwLCBNYW5pdmFubmFuIFNhZGhhc2l2YW0g d3JvdGU6Cj4gPiA+ID4gPiBPbiBXZWQsIEFwciAyNiwgMjAyMyBhdCAwNDozNDozNFBNIC0wNDAw LCBGcmFuayBMaSB3cm90ZToKPiA+ID4gPiA+ID4gVGhpcyBjb21taXQgaW50cm9kdWNlcyBhIGNv bW1vbiBtZXRob2QgZm9yIHNlbmRpbmcgbWVzc2FnZXMgZnJvbSB0aGUgUm9vdCBDb21wbGV4Cj4g PiA+ID4gPiA+IChSQykgdG8gdGhlIEVuZHBvaW50IChFUCkgYnkgdXRpbGl6aW5nIHRoZSBwbGF0 Zm9ybSBNU0kgaW50ZXJydXB0IGNvbnRyb2xsZXIsCj4gPiA+ID4gPiA+IHN1Y2ggYXMgQVJNIEdJ QywgYXMgYW4gRVAgZG9vcmJlbGwuIE1hcHMgdGhlIG1lbW9yeSBhc3NpZ25lZCBmb3IgdGhlIEJB UiByZWdpb24KPiA+ID4gPiA+ID4gYnkgdGhlIFBDSSBob3N0IHRvIHRoZSBtZXNzYWdlIGFkZHJl c3Mgb2YgdGhlIHBsYXRmb3JtIE1TSSBpbnRlcnJ1cHQgY29udHJvbGxlcgo+ID4gPiA+ID4gPiBp biB0aGUgUENJIEVQLiBBcyBhIHJlc3VsdCwgd2hlbiB0aGUgUENJIFJDIHdyaXRlcyB0byB0aGUg QkFSIHJlZ2lvbiwgaXQgdHJpZ2dlcnMKPiA+ID4gPiA+ID4gYW4gSVJRIGF0IHRoZSBFUC4gVGhp cyBpbXBsZW1lbnRhdGlvbiBzZXJ2ZXMgYXMgYSBjb21tb24gbWV0aG9kIGZvciBhbGwgZW5kcG9p bnQKPiA+ID4gPiA+ID4gZnVuY3Rpb24gZHJpdmVycy4KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ IEhvd2V2ZXIsIGl0IGN1cnJlbnRseSBzdXBwb3J0cyBvbmx5IG9uZSBFUCBwaHlzaWNhbCBmdW5j dGlvbiBkdWUgdG8gbGltaXRhdGlvbnMKPiA+ID4gPiA+ID4gaW4gQVJNIE1TSS9JTVMgcmVhZGlu ZXNzLgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+IAo+ID4gPiA+ID4gSSd2ZSBwcm92aWRlZCBnZW5l cmljIGNvbW1lbnRzIGJlbG93LCBidXQgSSB3aWxsIGRvIG9uZSBtb3JlIHRob3JvdWdoIHJldmll dwo+ID4gPiA+ID4gYWZ0ZXIgc2VlaW5nIGVwZi10ZXN0IGRyaXZlciBwYXRjaC4KPiA+ID4gPiA+ IAo+ID4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBGcmFuayBMaSA8RnJhbmsuTGlAbnhwLmNvbT4K PiA+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiA+ICBkcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBm LWNvcmUuYyB8IDEwOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiA+ID4gPiA+ICBp bmNsdWRlL2xpbnV4L3BjaS1lcGYuaCAgICAgICAgICAgICB8ICAxNiArKysrCj4gPiA+ID4gPiA+ ICAyIGZpbGVzIGNoYW5nZWQsIDEyNSBpbnNlcnRpb25zKCspCj4gPiA+ID4gPiA+IAo+ID4gPiA+ ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwZi1jb3JlLmMgYi9k cml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBmLWNvcmUuYwo+ID4gPiA+ID4gPiBpbmRleCAzNTVh NmY1NmZjZWEuLjk0YWM4MmJmODRjNSAxMDA2NDQKPiA+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9w Y2kvZW5kcG9pbnQvcGNpLWVwZi1jb3JlLmMKPiA+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9wY2kv ZW5kcG9pbnQvcGNpLWVwZi1jb3JlLmMKPiA+ID4gPiA+ID4gQEAgLTYsMTAgKzYsMTIgQEAKPiA+ ID4gPiA+ID4gICAqIEF1dGhvcjogS2lzaG9uIFZpamF5IEFicmFoYW0gSSA8a2lzaG9uQHRpLmNv bT4KPiA+ID4gPiA+ID4gICAqLwo+ID4gPiA+ID4gPiAgCj4gPiA+ID4gPiA+ICsjaW5jbHVkZSA8 bGludXgvaXJxcmV0dXJuLmg+Cj4gPiA+ID4gPiAKPiA+ID4gPiA+IFdoeSBpcyB0aGlzIG5lZWRl ZD8KPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiAgI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgo+ID4g PiA+ID4gPiAgI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+Cj4gPiA+ID4gPiA+ICAjaW5j bHVkZSA8bGludXgvc2xhYi5oPgo+ID4gPiA+ID4gPiAgI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5o Pgo+ID4gPiA+ID4gPiArI2luY2x1ZGUgPGxpbnV4L21zaS5oPgo+ID4gPiA+ID4gPiAgCj4gPiA+ ID4gPiA+ICAjaW5jbHVkZSA8bGludXgvcGNpLWVwYy5oPgo+ID4gPiA+ID4gPiAgI2luY2x1ZGUg PGxpbnV4L3BjaS1lcGYuaD4KPiA+ID4gPiA+ID4gQEAgLTMwMCw2ICszMDIsMTEzIEBAIHZvaWQg KnBjaV9lcGZfYWxsb2Nfc3BhY2Uoc3RydWN0IHBjaV9lcGYgKmVwZiwgc2l6ZV90IHNpemUsIGVu dW0gcGNpX2Jhcm5vIGJhciwKPiA+ID4gPiA+ID4gIH0KPiA+ID4gPiA+ID4gIEVYUE9SVF9TWU1C T0xfR1BMKHBjaV9lcGZfYWxsb2Nfc3BhY2UpOwo+ID4gPiA+ID4gPiAgCj4gPiA+ID4gPiA+ICtz dGF0aWMgZW51bSBpcnFyZXR1cm4gcGNpX2VwZl9pbnRlcnJ1cHRfaGFuZGxlcihpbnQgaXJxLCB2 b2lkICpkYXRhKQo+ID4gPiA+ID4gCj4gPiA+ID4gPiBzdGF0aWMgaXJxcmV0dXJuX3QKPiA+ID4g PiA+IAo+ID4gPiA+ID4gcy9wY2lfZXBmX2ludGVycnVwdF9oYW5kbGVyL3BjaV9lcGZfZG9vcmJl bGxfaGFuZGxlcgo+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ICsJc3RydWN0 IHBjaV9lcGYgKmVwZiA9IGRhdGE7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKwlpZiAoZXBm LT5ldmVudF9vcHMgJiYgZXBmLT5ldmVudF9vcHMtPmRvb3JiZWxsKQo+ID4gPiA+ID4gPiArCQll cGYtPmV2ZW50X29wcy0+ZG9vcmJlbGwoZXBmLCBpcnEgLSBlcGYtPnZpcnFfYmFzZSk7Cj4gPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ID4gKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cj4gPiA+ID4gPiA+ICt9 Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gK3N0YXRpYyB2b2lkIHBjaV9lcGZfd3JpdGVfbXNp X21zZyhzdHJ1Y3QgbXNpX2Rlc2MgKmRlc2MsIHN0cnVjdCBtc2lfbXNnICptc2cpCj4gPiA+ID4g PiA+ICt7Cj4gPiA+ID4gPiA+ICsJc3RydWN0IHBjaV9lcGMgKmVwYyA9IGNvbnRhaW5lcl9vZihk ZXNjLT5kZXYsIHN0cnVjdCBwY2lfZXBjLCBkZXYpOwo+ID4gPiA+ID4gPiArCXN0cnVjdCBwY2lf ZXBmICplcGY7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKwkvKiBUb2RvOiBOZWVkIGNoZWNr IGNvcnJlY3QgZXBmIGlmIG11bHRpIGVwZiBzdXBwb3J0ZWQgKi8KPiA+ID4gPiA+ID4gKwlsaXN0 X2Zvcl9lYWNoX2VudHJ5KGVwZiwgJmVwYy0+cGNpX2VwZiwgbGlzdCkgewo+ID4gPiA+ID4gPiAr CQlpZiAoZXBmLT5tc2cgJiYgZGVzYy0+bXNpX2luZGV4IDwgZXBmLT5udW1fbXNncykKPiA+ID4g PiA+ID4gKwkJCWVwZi0+bXNnW2Rlc2MtPm1zaV9pbmRleF0gPSAqbXNnOwo+ID4gPiA+ID4gPiAr CX0KPiA+ID4gPiA+ID4gK30KPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiAraW50IHBjaV9lcGZf YWxsb2NfZG9vcmJlbGwoc3RydWN0IHBjaV9lcGYgKmVwZiwgdTE2IG51bV9tc2dzKQo+ID4gPiA+ ID4gPiArewo+ID4gPiA+ID4gPiArCXN0cnVjdCBpcnFfZG9tYWluICpkb21haW47Cj4gPiA+ID4g PiA+ICsJc3RydWN0IHBjaV9lcGMgKmVwYzsKPiA+ID4gPiA+ID4gKwlzdHJ1Y3QgZGV2aWNlICpk ZXY7Cj4gPiA+ID4gPiA+ICsJaW50IHZpcnE7Cj4gPiA+ID4gPiA+ICsJaW50IHJldDsKPiA+ID4g PiA+ID4gKwlpbnQgaTsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArCWVwYyA9IGVwZi0+ZXBj Owo+ID4gPiA+ID4gPiArCWRldiA9ICZlcGMtPmRldjsKPiA+ID4gPiA+IAo+ID4gPiA+ID4gImVw Y19kZXYiIHRvIG1ha2UgaXQgZXhwbGljaXQKPiA+ID4gCj4gPiA+IEFsbCBvdGhlciBwbGFjZSB1 c2UgJ2RldicsIEkgdGhpbmsgYmV0dGVyIGtlZXAgdGhlIGNvbnNpc3RlbnQuCj4gPiA+IAo+ID4g PiBGcmFuawo+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKwkvKgo+ID4gPiA+ ID4gPiArCSAqIEN1cnJlbnQgb25seSBzdXBwb3J0IDEgZnVuY3Rpb24uCj4gPiA+ID4gPiAKPiA+ ID4gPiA+IFdoYXQgZG9lcyB0aGlzIG1lYW4gZXhhY3RseT8gRXZlbiBhIHNpbmdsZSBFUEMgY2Fu IHN1cHBvcnQgbXVsdGlwbGUgRVBGcwo+ID4gPiA+ID4gCj4gPiA+ID4gCj4gPiA+ID4gUGxlYXNl IGlnbm9yZSBhYm92ZSBjb21tZW50Lgo+ID4gPiA+IAo+ID4gPiA+IC0gTWFuaQo+ID4gPiA+IAo+ ID4gPiA+ID4gPiArCSAqIFBDSSBJTVMoaW50ZXJydXB0IG1lc3NhZ2Ugc3RvcmUpIEFSTSBzdXBw b3J0IGhhdmUgbm90IGJlZW4KPiA+ID4gPiA+ID4gKwkgKiByZWFkeSB5ZXQuCj4gPiA+ID4gPiAK PiA+ID4gPiA+IE5vIG5lZWQgdG8gbWVudGlvbiBwbGF0Zm9ybSBpcnEgY29udHJvbGxlciBuYW1l Lgo+ID4gPiAKPiA+ID4gd2hhdCdzIG1lYW5zPwo+ID4gPiAKPiA+IAo+ID4gIlBDSSBJTVMgQVJN IHN1cHBvcnQiIGlzIG5vdCBuZWVkZWQuIEp1c3Qgc2F5IHRoYXQgb25seSBvbmUgRVBGIGlzIHN1 cHBvcnRlZC4KPiA+IAo+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ICsJICovCj4gPiA+ID4gPiA+ICsJ aWYgKGVwYy0+ZnVuY3Rpb25fbnVtX21hcCAhPSAxKQo+ID4gPiA+ID4gCj4gPiA+ID4gPiBXaHkg Y2FuJ3QgeW91IHVzZSwgZXBmLT5mdW5jX25vPwo+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ICsJCXJl dHVybiAtRU9QTk9UU1VQUDsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArCWRvbWFpbiA9IGRl dl9nZXRfbXNpX2RvbWFpbihkZXYtPnBhcmVudCk7Cj4gPiA+ID4gPiA+ICsJaWYgKCFkb21haW4p Cj4gPiA+ID4gPiA+ICsJCXJldHVybiAtRU9QTlRTVVBQOwo+ID4gPiA+ID4gCj4gPiA+ID4gPiBO ZXdsaW5lCj4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gKwlkZXZfc2V0X21zaV9kb21haW4oZGV2LCBk b21haW4pOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsJLyogdXNlIHBhcmVudCBvZl9ub2Rl IHRvIGdldCBkZXZpY2UgaWQgaW5mb3JtYXRpb24gKi8KPiA+ID4gPiA+ID4gKwlkZXYtPm9mX25v ZGUgPSBkZXYtPnBhcmVudC0+b2Zfbm9kZTsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gCj4gPiA+ ID4gPiBXaHkgZG8geW91IG5lZWQgb2Zfbm9kZSBhc3NpZ25tZW50IGluc2lkZSBFUEYgY29yZT8K PiA+ID4gCj4gPiA+IEdJQyBuZWVkIGl0IHRvIGFsbG9jYXRlIGEgTVNJIGlycSB0byBwbGF0Zm9y bSBkZXZpY2VzLgo+ID4gPiBJIHRoaW5rIGl0IG1heSBpbXByb3ZlIGlmIElNUyBzdXBwb3J0Lgo+ ID4gPiAKPiA+IAo+ID4gQ2FuJ3QgeW91IGFzc2lnbiBpdCBpbiB0aGUgRVBGIGRyaXZlciBpdHNl bGY/IEkgZG8gbm90IHdhbnQgYW55IE9GIHJlZmVyZW5jZSBpbgo+ID4gdGhlIEVQRiBjb3JlIHNp bmNlIGl0IGhhcyBubyBPRiBzdXBwb3J0Lgo+IAo+IElmIHRoYXQsIEVhY2ggRVBGIGRyaXZlciBu ZWVkIGRvIGR1cGxpY2F0ZSB3b3JrLiAKPiAKClllcywgYW5kIHRoYXQncyBob3cgaXQgc2hvdWxk IGJlLiBFUEYgY29yZSBoYXMgbm8gam9iIGluIHN1cHBseWluZyB0aGUgb2Zfbm9kZS4KSXQgaXMg dGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBFUEYgZHJpdmVycyBhcyB0aGV5IGRlcGVuZCBvbiBP RiBmb3IgcGxhdGZvcm0Kc3VwcG9ydC4KCi0gTWFuaQoKPiBJTVMgd2lsbCBzdXBwb3J0IHBlci1k ZXZpY2UgTVNJIGRvbWFpbiwgdGhlbiB3ZSBjYW4gaW1wbGVtZW50IGN1c3RvbWl6ZWQKPiBNU0kg aXJxIGFsbG9jYXRlZC4gQnV0IHNvIGZhciwgaXQgaXMgc2ltcGxlc3Qgc29sdXRpb24sIHdlIGNh biB1cGRhdGUgaXQKPiBhZnRlciBJTVMgaW1wbGVtZW50YXRpb24gYXQga2VybmVsLiBPbmx5IG9u ZSBwbGFjZSBuZWVkIGJlIGNoYW5nZWQuCj4gCj4gRnJhbmsgTGkgCj4gCj4gPiAKPiA+IC0gTWFu aQo+ID4gCj4gPiA+IEZyYW5rCj4gPiA+IAo+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ICsJZXBmLT5t c2cgPSBrY2FsbG9jKG51bV9tc2dzLCBzaXplb2Yoc3RydWN0IG1zaV9tc2cpLCBHRlBfS0VSTkVM KTsKPiA+ID4gPiA+ID4gKwlpZiAoIWVwZi0+bXNnKQo+ID4gPiA+ID4gPiArCQlyZXR1cm4gLUVO T01FTTsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArCWVwZi0+bnVtX21zZ3MgPSBudW1fbXNn czsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gCj4gPiA+ID4gPiBNb3ZlIHRoaXMgdG8gdGhlIHN0 YXJ0IG9mIHRoZSBmdW5jdGlvbiwgYWZ0ZXIgY2hlY2tzLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ ICsJcmV0ID0gcGxhdGZvcm1fbXNpX2RvbWFpbl9hbGxvY19pcnFzKGRldiwgbnVtX21zZ3MsIHBj aV9lcGZfd3JpdGVfbXNpX21zZyk7Cj4gPiA+ID4gPiA+ICsJaWYgKHJldCkgewo+ID4gPiA+ID4g PiArCQlkZXZfZXJyKGRldiwgIkNhbid0IGFsbG9jYXRlIE1TSSBmcm9tIHN5c3RlbSBNU0kgY29u dHJvbGxlclxuIik7Cj4gPiA+ID4gPiAKPiA+ID4gPiA+ICJGYWlsZWQgdG8gYWxsb2NhdGUgTVNJ Igo+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ICsJCWdvdG8gZXJyX21lbTsKPiA+ID4gPiA+IAo+ID4g PiA+ID4gZXJyX2ZyZWVfbWVtCj4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gKwl9Cj4gPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ID4gKwlmb3IgKGkgPSAwOyBpIDwgbnVtX21zZ3M7IGkrKykgewo+ID4gPiA+ ID4gPiArCQl2aXJxID0gbXNpX2dldF92aXJxKGRldiwgaSk7Cj4gPiA+ID4gPiA+ICsJCWlmIChp ID09IDApCj4gPiA+ID4gPiA+ICsJCQllcGYtPnZpcnFfYmFzZSA9IHZpcnE7Cj4gPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ID4gKwkJcmV0ID0gcmVxdWVzdF9pcnEodmlycSwgcGNpX2VwZl9pbnRlcnJ1 cHRfaGFuZGxlciwgMCwKPiA+ID4gPiA+ID4gKwkJCQkgICJwY2ktZXBmLWRvb3JiZWxsIiwgZXBm KTsKPiA+ID4gPiA+IAo+ID4gPiA+ID4gSVJRIG5hbWUgc2hvdWxkIGhhdmUgYW4gaW5kZXgsIG90 aGVyd2lzZSBhbGwgb2YgdGhlbSB3aWxsIGhhdmUgdGhlIHNhbWUgbmFtZS4KPiA+ID4gPiA+IAo+ ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsJCWlmIChyZXQpIHsKPiA+ID4gPiA+ID4gKwkJCWRl dl9lcnIoZGV2LCAiRmFpbHVyZSByZXF1ZXN0IGRvb3JiZWxsIElSUVxuIik7Cj4gPiA+ID4gPiAK PiA+ID4gPiA+ICJGYWlsZWQgdG8gcmVxdWVzdCBkb29yYmVsbCIKPiA+ID4gPiA+IAo+ID4gPiA+ ID4gPiArCQkJZ290byBlcnJfaXJxOwo+ID4gPiA+ID4gCj4gPiA+ID4gPiBlcnJfZnJlZV9pcnEK PiA+ID4gPiA+IAo+ID4gPiA+ID4gPiArCQl9Cj4gPiA+ID4gPiA+ICsJfQo+ID4gPiA+ID4gPiAr Cj4gPiA+ID4gPiA+ICsJZXBmLT5udW1fbXNncyA9IG51bV9tc2dzOwo+ID4gPiA+ID4gCj4gPiA+ ID4gPiBOZXdsaW5lCj4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gKwlyZXR1cm4gcmV0Owo+ID4gPiA+ ID4gPiArCj4gPiA+ID4gPiA+ICtlcnJfaXJxOgo+ID4gPiA+ID4gPiArCXBsYXRmb3JtX21zaV9k b21haW5fZnJlZV9pcnFzKGRldik7Cj4gPiA+ID4gPiA+ICtlcnJfbWVtOgo+ID4gPiA+ID4gPiAr CWtmcmVlKGVwZi0+bXNnKTsKPiA+ID4gPiA+ID4gKwllcGYtPm1zZyA9IE5VTEw7Cj4gPiA+ID4g PiA+ICsJZXBmLT5udW1fbXNncyA9IDA7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKwlyZXR1 cm4gcmV0Owo+ID4gPiA+ID4gPiArfQo+ID4gPiA+ID4gPiArRVhQT1JUX1NZTUJPTF9HUEwocGNp X2VwZl9hbGxvY19kb29yYmVsbCk7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gK3ZvaWQgcGNp X2VwZl9mcmVlX2Rvb3JiZWxsKHN0cnVjdCBwY2lfZXBmICplcGYpCj4gPiA+ID4gPiA+ICt7Cj4g PiA+ID4gPiA+ICsJc3RydWN0IHBjaV9lcGMgKmVwYzsKPiA+ID4gPiA+ID4gKwlpbnQgaTsKPiA+ ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArCWVwYyA9IGVwZi0+ZXBjOwo+ID4gPiA+ID4gPiArCj4g PiA+ID4gPiA+ICsJZm9yIChpID0gMDsgaSA8IGVwZi0+bnVtX21zZ3M7IGkrKykKPiA+ID4gPiA+ ID4gKwkJZnJlZV9pcnEoZXBmLT52aXJxX2Jhc2UgKyBpLCBlcGYpOwo+ID4gPiA+ID4gPiArCj4g PiA+ID4gPiA+ICsJcGxhdGZvcm1fbXNpX2RvbWFpbl9mcmVlX2lycXMoJmVwYy0+ZGV2KTsKPiA+ ID4gPiA+ID4gKwlrZnJlZShlcGYtPm1zZyk7Cj4gPiA+ID4gPiA+ICsJZXBmLT5tc2cgPSBOVUxM Owo+ID4gPiA+ID4gPiArCWVwZi0+bnVtX21zZ3MgPSAwOwo+ID4gPiA+ID4gPiArfQo+ID4gPiA+ ID4gPiArRVhQT1JUX1NZTUJPTF9HUEwocGNpX2VwZl9mcmVlX2Rvb3JiZWxsKTsKPiA+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gPiAgc3RhdGljIHZvaWQgcGNpX2VwZl9yZW1vdmVfY2ZzKHN0cnVjdCBw Y2lfZXBmX2RyaXZlciAqZHJpdmVyKQo+ID4gPiA+ID4gPiAgewo+ID4gPiA+ID4gPiAgCXN0cnVj dCBjb25maWdfZ3JvdXAgKmdyb3VwLCAqdG1wOwo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvaW5j bHVkZS9saW51eC9wY2ktZXBmLmggYi9pbmNsdWRlL2xpbnV4L3BjaS1lcGYuaAo+ID4gPiA+ID4g PiBpbmRleCBiODQ0MWRiMmZhNTIuLmUxODdlM2VlNDhkMiAxMDA2NDQKPiA+ID4gPiA+ID4gLS0t IGEvaW5jbHVkZS9saW51eC9wY2ktZXBmLmgKPiA+ID4gPiA+ID4gKysrIGIvaW5jbHVkZS9saW51 eC9wY2ktZXBmLmgKPiA+ID4gPiA+ID4gQEAgLTc1LDYgKzc1LDcgQEAgc3RydWN0IHBjaV9lcGZf b3BzIHsKPiA+ID4gPiA+ID4gIHN0cnVjdCBwY2lfZXBjX2V2ZW50X29wcyB7Cj4gPiA+ID4gPiA+ ICAJaW50ICgqY29yZV9pbml0KShzdHJ1Y3QgcGNpX2VwZiAqZXBmKTsKPiA+ID4gPiA+ID4gIAlp bnQgKCpsaW5rX3VwKShzdHJ1Y3QgcGNpX2VwZiAqZXBmKTsKPiA+ID4gPiA+ID4gKwlpbnQgKCpk b29yYmVsbCkoc3RydWN0IHBjaV9lcGYgKmVwZiwgaW50IGluZGV4KTsKPiA+ID4gPiA+ID4gIH07 Cj4gPiA+ID4gPiA+ICAKPiA+ID4gPiA+ID4gIC8qKgo+ID4gPiA+ID4gPiBAQCAtMTczLDYgKzE3 NCw5IEBAIHN0cnVjdCBwY2lfZXBmIHsKPiA+ID4gPiA+ID4gIAl1bnNpZ25lZCBsb25nCQl2ZnVu Y3Rpb25fbnVtX21hcDsKPiA+ID4gPiA+ID4gIAlzdHJ1Y3QgbGlzdF9oZWFkCXBjaV92ZXBmOwo+ ID4gPiA+ID4gPiAgCWNvbnN0IHN0cnVjdCBwY2lfZXBjX2V2ZW50X29wcyAqZXZlbnRfb3BzOwo+ ID4gPiA+ID4gPiArCXN0cnVjdCBtc2lfbXNnICptc2c7Cj4gPiA+ID4gPiA+ICsJdTE2IG51bV9t c2dzOwo+ID4gPiA+ID4gPiArCWludCB2aXJxX2Jhc2U7Cj4gPiA+ID4gPiA+ICB9Owo+ID4gPiA+ ID4gPiAgCj4gPiA+ID4gPiA+ICAvKioKPiA+ID4gPiA+ID4gQEAgLTIxNiw0ICsyMjAsMTYgQEAg aW50IHBjaV9lcGZfYmluZChzdHJ1Y3QgcGNpX2VwZiAqZXBmKTsKPiA+ID4gPiA+ID4gIHZvaWQg cGNpX2VwZl91bmJpbmQoc3RydWN0IHBjaV9lcGYgKmVwZik7Cj4gPiA+ID4gPiA+ICBpbnQgcGNp X2VwZl9hZGRfdmVwZihzdHJ1Y3QgcGNpX2VwZiAqZXBmX3BmLCBzdHJ1Y3QgcGNpX2VwZiAqZXBm X3ZmKTsKPiA+ID4gPiA+ID4gIHZvaWQgcGNpX2VwZl9yZW1vdmVfdmVwZihzdHJ1Y3QgcGNpX2Vw ZiAqZXBmX3BmLCBzdHJ1Y3QgcGNpX2VwZiAqZXBmX3ZmKTsKPiA+ID4gPiA+ID4gK2ludCBwY2lf ZXBmX2FsbG9jX2Rvb3JiZWxsKHN0cnVjdCBwY2lfZXBmICplcGYsIHUxNiBudW1zKTsKPiA+ID4g PiA+ID4gK3ZvaWQgcGNpX2VwZl9mcmVlX2Rvb3JiZWxsKHN0cnVjdCBwY2lfZXBmICplcGYpOwo+ ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBtc2lfbXNnICpl cGZfZ2V0X21zZyhzdHJ1Y3QgcGNpX2VwZiAqZXBmKQo+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4g PiArCXJldHVybiBlcGYtPm1zZzsKPiA+ID4gPiA+ID4gK30KPiA+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gPiArc3RhdGljIGlubGluZSB1MTYgZXBmX2dldF9tc2dfbnVtKHN0cnVjdCBwY2lfZXBmICpl cGYpCj4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ICsJcmV0dXJuIGVwZi0+bnVtX21zZ3M7Cj4g PiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiAKPiA+ID4gPiA+IEkgZG9uJ3Qgc2VlIGEgbmVlZCBmb3Ig dGhlc2UgdHdvIGZ1bmN0aW9ucyBhcyB0aGV5IGFyZSBkb2luZyBqdXN0IGRlcmVmZXJlbmNlcy4K PiA+ID4gPiA+IAo+ID4gPiA+ID4gLSBNYW5pCj4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gICNlbmRp ZiAvKiBfX0xJTlVYX1BDSV9FUEZfSCAqLwo+ID4gPiA+ID4gPiAtLSAKPiA+ID4gPiA+ID4gMi4z NC4xCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gCj4gPiA+ID4gPiAtLSAKPiA+ID4gPiA+IOCuruCu o+Cuv+CuteCuo+CvjeCuo+CuqeCvjSDgrprgrqTgrr7grprgrr/grrXgrq7gr40KPiA+ID4gPiAK PiA+ID4gPiAtLSAKPiA+ID4gPiDgrq7grqPgrr/grrXgrqPgr43grqPgrqngr40g4K6a4K6k4K6+ 4K6a4K6/4K614K6u4K+NCj4gPiAKPiA+IC0tIAo+ID4g4K6u4K6j4K6/4K614K6j4K+N4K6j4K6p 4K+NIOCumuCupOCuvuCumuCuv+CuteCuruCvjQoKLS0gCuCuruCuo+Cuv+CuteCuo+CvjeCuo+Cu qeCvjSDgrprgrqTgrr7grprgrr/grrXgrq7gr40KCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4 LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK