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 CF5EFC00140 for ; Thu, 18 Aug 2022 21:31:55 +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: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:References: List-Owner; bh=dEyHX4QrRv5TSMl13K3aIh/i6HqxQbRaPFEhbKs7zYk=; b=L/nUCLT1vzIWic Sd6u4Z09aWImuKBDQ9BJU3mOq/VaFqnBaGO6FdoiwrpENKVHJGBy293bD2geBQzxp2KF8paZKdQHZ QcrtCO9V+Fgg5S4+FCcds7lmbYaim+NCrCgykhYFtxvNintNhFOcAQn45j8KSFcgwSw7Mh6CV7zsC Y3psYhLwF/epv/jlXVeLgaCbwlKmqFrCc+E00RnzPEHqOlEPOYqqEBrTTE0znbUCRACMFUilxRI+U C3iOYpwtsk9EpbUUCrPc8KRoCsHvM5JsO5fjjYFrJwkeWu4VkaFXg5FtTAH8rSzjnG51iQUH8x9BV G6HzTzKUs3kOg+q9GznQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oOn6J-009rWt-OS; Thu, 18 Aug 2022 21:30:51 +0000 Received: from ams.source.kernel.org ([145.40.68.75]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oOn6G-009rUK-4K for linux-arm-kernel@lists.infradead.org; Thu, 18 Aug 2022 21:30:50 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id BC103B82472; Thu, 18 Aug 2022 21:30:45 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3D943C433C1; Thu, 18 Aug 2022 21:30:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1660858244; bh=PLUDvTC4dLxPvqujmb5K46XCmpAPihywS8euFcK5Hxw=; h=Date:From:To:Cc:Subject:In-Reply-To:From; b=XiXDeT5rsu12iCf36PVjtoQJnaL6Iiz6rp3e5+IiOey3Dul9XCyZQrxHpE9tTg6la HmLskfl+MxPLTSH02OVzxUZcsaBr9BwkQO8OhqgqOgfKUlUK/BL4QRKkEIRxUJsLzZ z00Yxoc3/wU1+++b+/b8zWRs3CfnGJJWsUa6ShaFnydkANjdS0uDUj+kmMGbecWi5Z CTLWHMRzSwbNVVTuBnvdfbf2S2RBeG+Eys4ZVawL4tM5JBBbfo90mQT2rmhRa5ZLZn yfwc/KAWlw4Bdr95N6UvMmUgd/wVoUOwg0EIKGKxcrHZ6TRpa5RaG4B0ZI1g6l/rwQ r3XQcBuiNmoWw== Date: Thu, 18 Aug 2022 16:30:42 -0500 From: Bjorn Helgaas To: Frank Li Cc: maz@kernel.org, tglx@linutronix.de, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, shawnguo@kernel.org, s.hauer@pengutronix.de, kw@linux.com, bhelgaas@google.com, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org, peng.fan@nxp.com, aisheng.dong@nxp.com, jdmason@kudzu.us, kernel@pengutronix.de, festevam@gmail.com, linux-imx@nxp.com, kishon@ti.com, lorenzo.pieralisi@arm.com, ntb@lists.linux.dev, lznuaa@gmail.com Subject: Re: [PATCH v6 4/4] pcie: endpoint: pci-epf-vntb: add endpoint MSI support Message-ID: <20220818213042.GA2394869@bhelgaas> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20220818151127.2449064-5-Frank.Li@nxp.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220818_143048_517257_FE3E375D X-CRM114-Status: GOOD ( 35.43 ) 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 UGxlYXNlIHBheSBhdHRlbnRpb24gdG8gdGhlIHN0eWxlIG9mIHByZXZpb3VzIHN1YmplY3QgbGlu ZXMgYW5kIGNvcHkKdGhlbToKCiAgJCBnaXQgbG9nIC0tb25lbGluZSBkcml2ZXJzL3BjaS9lbmRw b2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmMgfCBjYXQKICBiOGMwYWE5YjE2YmIgTlRCOiBF UEY6IFRpZHkgdXAgc29tZSBib3VuZHMgY2hlY2tzCiAgMzMwNWY0M2NiNmE4IE5UQjogRVBGOiBG aXggZXJyb3IgY29kZSBpbiBlcGZfbnRiX2JpbmQoKQogIGFlOWYzOGFkYWMyNiBQQ0k6IGVuZHBv aW50OiBwY2ktZXBmLXZudGI6IHJlZHVjZSBzZXZlcmFsIGdsb2JhbHMgdG8gc3RhdGljcwogIDhl NGJmYmU2NDRhNiBQQ0k6IGVuZHBvaW50OiBwY2ktZXBmLXZudGI6IGZpeCBlcnJvciBoYW5kbGUg aW4gZXBmX250Yl9td19iYXJfaW5pdCgpCiAgN2IxNGE1ZTk2MTI4IE5UQjogRVBGOiBzZXQgcG9p bnRlciBhZGRyIHRvIG51bGwgdXNpbmcgTlVMTCByYXRoZXIgdGhhbiAwCiAgZTM1ZjU2YmIwMzMw IFBDSTogZW5kcG9pbnQ6IFN1cHBvcnQgTlRCIHRyYW5zZmVyIGJldHdlZW4gUkMgYW5kIEVQCgpO b2JvZHkgaGFzIHBhaWQgbXVjaCBhdHRlbnRpb24gdG8gY29uc2lzdGVuY3kgaGVyZSBpbiB0aGUg cGFzdCwgYnV0IHdlCndpbGwgaW4gdGhlIGZ1dHVyZS4KCk1heWJlICJQQ0k6IGVuZHBvaW50OiBB ZGQgTlRCIE1TSSBzdXBwb3J0IiBvciBzaW1pbGFyPwoKT24gVGh1LCBBdWcgMTgsIDIwMjIgYXQg MTA6MTE6MjdBTSAtMDUwMCwgRnJhbmsgTGkgd3JvdGU6Cj4gICAgICAgICAgICAgICAgICAgICAg ICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQICAgICAgICAgIOKUjOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUkAo+ICAgICAgICAgICAgICAgICAgICAgICAgIOKUgiAgICAgICDi lIIgICAgICAgICAg4pSCICAgICAgICAgIOKUggo+ICAgICAgIOKUjOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkCAgIOKUgiAgICAgICDilIIgICAgICAgICAg4pSCIFBD SSBIb3N0IOKUggo+ICAgICAgIOKUgiBNU0kgICAgICAgICDilILil4TilJAg4pSCICAgICAgIOKU giAgICAgICAgICDilIIgICAgICAgICAg4pSCCj4gICAgICAg4pSCIENvbnRyb2xsZXIgIOKUgiDi lIIg4pSCICAgICAgIOKUgiAgICAgICAgICDilIIgICAgICAgICAg4pSCCj4gICAgICAg4pSU4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYIOKUlOKUgOKUvOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUvOKUgEJBUjAg ICAgIOKUggo+ICAgICAgICAgICAgICAgICAgICAgICAgIOKUgiBQQ0kgICDilIIgICAgICAgICAg 4pSCIEJBUjEgICAgIOKUggo+ICAgICAgICAgICAgICAgICAgICAgICAgIOKUgiBGdW5jICDilIIg ICAgICAgICAg4pSCIEJBUjIgICAgIOKUggo+ICAgICAgICAgICAgICAgICAgICAgICAgIOKUgiAg ICAgICDilIIgICAgICAgICAg4pSCIEJBUjMgICAgIOKUggo+ICAgICAgICAgICAgICAgICAgICAg ICAgIOKUgiAgICAgICDilIIgICAgICAgICAg4pSCIEJBUjQgICAgIOKUggo+ICAgICAgICAgICAg ICAgICAgICAgICAgIOKUgiAgICAgICDilJzilIDilIDilIDilIDilIDilIDilIDilIDilIDilrri lIIgICAgICAgICAg4pSCCj4gICAgICAgICAgICAgICAgICAgICAgICAg4pSU4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSYICAgICAgICAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU mAo+IAo+IExpbnV4IHN1cHBvcnRzIGVuZHBvaW50IGZ1bmN0aW9ucy4gUENJIEhvc3Qgd3JpdGUg QkFSPG4+IHNwYWNlIGxpa2Ugd3JpdGUKPiB0byBtZW1vcnkuIFRoZSBFUCBzaWRlIGNhbid0IGtu b3cgbWVtb3J5IGNoYW5nZWQgYnkgdGhlIGhvc3QgZHJpdmVyLgoKVGhlIGRpYWdyYW0gaXMgcHJl dHR5IGJ1dCBJIGRvbid0IHF1aXRlIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGlzCnRlbGxpbmcgbWUu ICBJIGFzc3VtZSAiUENJIEZ1bmMiIGlzIHRoZSAiRVAgc2lkZSI/ICBJZiBzbywgbGFiZWwgaXQK YXBwcm9wcmlhdGVseS4KCklzICJQQ0kgSG9zdCIgcmVmZXJyaW5nIHRvIGEgaG9zdCBDUFU/ICBJ IGd1ZXNzIG5vdCwgc2luY2UgeW91IGluY2x1ZGUKQkFScyBpbiB0aGUgYm94LgoKV2hhdCBhcmUg dGhlIGFycm93cz8gIEkgYXNzdW1lIG9uZSBpcyBhbiBNTUlPIHdyaXRlIHRvIGEgQkFSLCBzaW5j ZQp5b3UgbWVudGlvbiB0aGF0IGJlbG93LgoKPiBQQ0kgU3BlYyBoYXMgbm90IGRlZmluZWQgYSBz dGFuZGFyZCBtZXRob2QgdG8gZG8gdGhhdC4gT25seSBkZWZpbmUgTVNJKHgpCj4gdG8gbGV0IEVQ IG5vdGlmaWVkIFJDIHN0YXR1cyBjaGFuZ2UuCj4gCj4gVGhlIGJhc2ljIGlkZWEgaXMgdG8gdHJp Z2dlciBhbiBJUlEgd2hlbiBQQ0kgUkMgd3JpdGVzIHRvIGEgbWVtb3J5Cj4gYWRkcmVzcy4gVGhh dCdzIHdoYXQgTVNJIGNvbnRyb2xsZXIgcHJvdmlkZWQuIEVQIGRyaXZlcnMganVzdCBuZWVkIHRv Cj4gcmVxdWVzdCBhIHBsYXRmb3JtIE1TSSBpbnRlcnJ1cHQsIHN0cnVjdCBtc2lfbXNnICptc2cg d2lsbCBwYXNzIGRvd24gYQo+IG1lbW9yeSBhZGRyZXNzIGFuZCBkYXRhLiBFUCBkcml2ZXIgd2ls bCBtYXAgc3VjaCBtZW1vcnkgYWRkcmVzcyB0byBvbmUgb2YKPiBQQ0kgQkFSPG4+LiAgSG9zdCBq dXN0IHdyaXRlcyBzdWNoIGFuIGFkZHJlc3MgdG8gdHJpZ2dlciBFUCBzaWRlIGlycS4KCkkgdGhp bmsgIlBDSSBSQyB3cml0ZXMgdG8gbWVtb3J5IiBhbmQgIkhvc3Qgd3JpdGVzIHN1Y2ggYW4gYWRk cmVzcyIKYXJlIHJlZmVycmluZyB0byB0aGUgc2FtZSB3cml0ZS4gIElmIHNvLCB1c2UgdGhlIHNh bWUgd29yZHMgYm90aAp0aW1lcywgbm90ICJQQ0kgUkMiIG9uY2UgYW5kICJob3N0IiB0aGUgb3Ro ZXIuCgpzL2lycS9JUlEvLCBhcyB5b3UgZGlkIGFib3ZlLiAgSSBkb24ndCB3YW50IHRvIGhhdmUg dG8gZmlndXJlIG91dAp3aGV0aGVyICJpcnEiIGlzIHRoZSBzYW1lIGFzICJJUlEiLCBzbyBzcGVs bCBpdCB0aGUgc2FtZSB3YXkgYWxsIHRoZQp0aW1lLgoKPiBBZGQgTVNJIHN1cHBvcnQgZm9yIHBj aS1lcGYtdm50Yi4gcGNpLWVwZi12bnRiIGRyaXZlciBxdWVyeSBpZiBzeXN0ZW0KPiBoYXZlIE1T SSBjb250cm9sbGVyLiBTZXR1cCBkb29yYmVsbCBhZGRyZXNzIGFjY29yZGluZyB0byBzdHJ1Y3Qg bXNpX21zZy4KCnMvcGNpLWVwZi12bnRiIGRyaXZlciBxdWVyeS9RdWVyeS8Kcy9oYXZlL2hhcyBh bi8Kcy9TZXR1cC9TZXQgdXAvCgo+IFNvIFBDSWUgaG9zdCBjYW4gd3JpdGUgdGhpcyBkb29yYmVs bCBhZGRyZXNzIHRvIHRyaWdlciBFUCBzaWRlJ3MgaXJxLgoKSSBndWVzcyAiUENJZSBob3N0IiBp cyBzb21ldGhpbmcgZWxzZSB0aGF0IG1lYW5zIHRoZSBzYW1lIGFzICJQQ0kgUkMiCm9yICJob3N0 IiBhYm92ZT8gIFVzZSBjb25zaXN0ZW50IHRlcm1pbm9sb2d5LiAgVGhpcyBkb2Vzbid0IHNlZW0g bGlrZQpzb21ldGhpbmcgc3BlY2lmaWMgdG8gUENJZS4gIElmIGl0J3Mgbm90LCB1c2UgIlBDSSIg dG8gYmUgZ2VuZXJpYyBvcgpvbWl0IGl0IGFsdG9nZXRoZXIuCgpzL3RyaWdlci90cmlnZ2VyLwpz L2lycS9JUlEvIGFnYWluCgo+IElmIG5vIE1TSSBjb250cm9sbGVyIGV4aXN0LCBmYWxsIGJhY2sg dG8gc29mdHdhcmUgcG9sbGluZy4KCnMvZXhpc3QvZXhpc3RzLwoKPiBAQCAtMjUzLDcgKzI1Niw3 IEBAIHN0YXRpYyB2b2lkIGVwZl9udGJfY21kX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3 b3JrKQo+ICAKPiAgCW50YiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgZXBmX250YiwgY21k X2hhbmRsZXIud29yayk7Cj4gIAo+IC0JZm9yIChpID0gMTsgaSA8IG50Yi0+ZGJfY291bnQ7IGkr Kykgewo+ICsJZm9yIChpID0gMTsgaSA8IG50Yi0+ZGJfY291bnQgJiYgIW50Yi0+ZXBmX2RiX3Bo eTsgaSsrKSB7CgpUaGlzIGxvb3AgY29uZGl0aW9uIGlzIGhhcmQgdG8gcmVhZC4gIEl0IHdvdWxk IGJlIHNpbXBsZXIgYXM6CgogIGlmICghbnRiLT5lcGZfZGJfcGh5KSB7CiAgICBmb3IgKGkgPSAx OyBpIDwgbnRiLT5kYl9jb3VudDsgaSsrKSB7CiAgICAgIC4uLgogICAgfQogIH0KCj4gQEAgLTUy MCwzNSArNTQzLDMzIEBAIHN0YXRpYyBpbnQgZXBmX250Yl9kYl9iYXJfaW5pdChzdHJ1Y3QgZXBm X250YiAqbnRiKQo+ICAJc3RydWN0IGRldmljZSAqZGV2ID0gJm50Yi0+ZXBmLT5kZXY7Cj4gIAlp bnQgcmV0Owo+ICAJc3RydWN0IHBjaV9lcGZfYmFyICplcGZfYmFyOwo+IC0Jdm9pZCBfX2lvbWVt ICptd19hZGRyOwo+ICsJdm9pZCBfX2lvbWVtICptd19hZGRyID0gTlVMTDsKPiAgCWVudW0gcGNp X2Jhcm5vIGJhcm5vOwo+IC0Jc2l6ZV90IHNpemUgPSA0ICogbnRiLT5kYl9jb3VudDsKPiArCXNp emVfdCBzaXplOwo+ICAKPiAgCWVwY19mZWF0dXJlcyA9IHBjaV9lcGNfZ2V0X2ZlYXR1cmVzKG50 Yi0+ZXBmLT5lcGMsCj4gIAkJCQkJICAgIG50Yi0+ZXBmLT5mdW5jX25vLAo+ICAJCQkJCSAgICBu dGItPmVwZi0+dmZ1bmNfbm8pOwo+ICAJYWxpZ24gPSBlcGNfZmVhdHVyZXMtPmFsaWduOwo+IC0K PiAtCWlmIChzaXplIDwgMTI4KQo+IC0JCXNpemUgPSAxMjg7Cj4gLQo+IC0JaWYgKGFsaWduKQo+ IC0JCXNpemUgPSBBTElHTihzaXplLCBhbGlnbik7Cj4gLQllbHNlCj4gLQkJc2l6ZSA9IHJvdW5k dXBfcG93X29mX3R3byhzaXplKTsKPiArCXNpemUgPSBlcGZfbnRiX2RiX3NpemUobnRiKTsKPiAg Cj4gIAliYXJubyA9IG50Yi0+ZXBmX250Yl9iYXJbQkFSX0RCXTsKPiArCWVwZl9iYXIgPSAmbnRi LT5lcGYtPmJhcltiYXJub107Cj4gIAo+IC0JbXdfYWRkciA9IHBjaV9lcGZfYWxsb2Nfc3BhY2Uo bnRiLT5lcGYsIHNpemUsIGJhcm5vLCBhbGlnbiwgMCk7Cj4gLQlpZiAoIW13X2FkZHIpIHsKPiAt CQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBhbGxvY2F0ZSBPQiBhZGRyZXNzXG4iKTsKPiAtCQly ZXR1cm4gLUVOT01FTTsKPiArCWlmICghbnRiLT5lcGZfZGJfcGh5KSB7Cj4gKwkJbXdfYWRkciA9 IHBjaV9lcGZfYWxsb2Nfc3BhY2UobnRiLT5lcGYsIHNpemUsIGJhcm5vLCBhbGlnbiwgMCk7Cj4g KwkJaWYgKCFtd19hZGRyKSB7Cj4gKwkJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGFsbG9jYXRl IE9CIGFkZHJlc3NcbiIpOwo+ICsJCQlyZXR1cm4gLUVOT01FTTsKPiArCQl9Cj4gKwl9IGVsc2Ug ewo+ICsJCWVwZl9iYXItPnBoeXNfYWRkciA9IG50Yi0+ZXBmX2RiX3BoeTsKPiArCQllcGZfYmFy LT5iYXJubyA9IGJhcm5vOwo+ICsJCWVwZl9iYXItPnNpemUgPSBzaXplOwoKSSB0aGluayBpbnZl cnRlZCB0ZXN0cyBhcmUgaGFyZCB0byByZWFkLCBhbmQgc2V0dGluZyBtd19hZGRyIGhlcmUKaW5z dGVhZCBvZiBhdCB0aGUgZGVjbGFyYXRpb24gd2lsbCBtYWtlIHRoZSBjYXNlcyBtb3JlIHBhcmFs bGVsLCBzbwptYXliZSBvbWl0IHRoZSBpbml0aWFsaXphdGlvbiBhYm92ZSBhbmQgZG8gdGhpczoK CiAgaWYgKG50Yi0+ZXBmX2RiX3BoeSkgewogICAgbXdfYWRkciA9IE5VTEw7CiAgICBlcGZfYmFy LT5waHlzX2FkZHIgPSBudGItPmVwZl9kYl9waHk7CiAgICAuLi4KICB9IGVsc2UgewogICAgbXdf YWRkciA9IHBjaV9lcGZfYWxsb2Nfc3BhY2UobnRiLT5lcGYsIHNpemUsIGJhcm5vLCBhbGlnbiwg MCk7CiAgICAuLi4KICB9Cgo+ICtzdGF0aWMgdm9pZCBlcGZfbnRiX2VwY19tc2lfaW5pdChzdHJ1 Y3QgZXBmX250YiAqbnRiKQo+ICt7Cj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmbnRiLT5lcGYt PmRldjsKPiArCXN0cnVjdCBpcnFfZG9tYWluICpkb21haW47Cj4gKwlpbnQgdmlycTsKPiArCWlu dCByZXQ7Cj4gKwlpbnQgaTsKPiArCj4gKwlkb21haW4gPSBkZXZfZ2V0X21zaV9kb21haW4obnRi LT5lcGYtPmVwYy0+ZGV2LnBhcmVudCk7Cj4gKwlpZiAoIWRvbWFpbikKPiArCQlyZXR1cm47Cj4g Kwo+ICsJZGV2X3NldF9tc2lfZG9tYWluKGRldiwgZG9tYWluKTsKPiArCj4gKwlpZiAocGxhdGZv cm1fbXNpX2RvbWFpbl9hbGxvY19pcnFzKCZudGItPmVwZi0+ZGV2LAo+ICsJCW50Yi0+ZGJfY291 bnQsCj4gKwkJZXBmX250Yl93cml0ZV9tc2lfbXNnKSkgewo+ICsJCWRldl9pbmZvKGRldiwgIkNh bid0IGFsbG9jYXRlIE1TSSwgZmFsbCBiYWNrIHRvIHBvbGwgbW9kZVxuIik7Cj4gKwkJcmV0dXJu Owo+ICsJfQo+ICsKPiArCWRldl9pbmZvKGRldiwgInZudGIgdXNlIE1TSSBhcyBkb29yYmVsbFxu Iik7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IG50Yi0+ZGJfY291bnQ7IGkrKykgewo+ICsJCXZp cnEgPSBtc2lfZ2V0X3ZpcnEoZGV2LCBpKTsKPiArCQlyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKGRl diwgdmlycSwKPiArCQkJICAgICAgIGVwZl9udGJfaW50ZXJydXB0X2hhbmRsZXIsIDAsCj4gKwkJ CSAgICAgICAibnRiIiwgbnRiKTsKPiArCj4gKwkJaWYgKHJldCkKPiArCQkJZGV2X2VycihkZXYs ICJkZXZtX3JlcXVlc3RfaXJxKCkgZmFpbHVyZVxuIik7CgpZb3UgZG9uJ3QgcmV0dXJuIGFueXRo aW5nIHRvIGluZGljYXRlIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4gIERvZXMgdGhlCmNhbGxlciBjYXJl IGlmIHRoaXMgZmFpbHM/ICBBIG1lc3NhZ2UgaXMgb25seSBmb3IgZGVidWdnaW5nOyBpdCdzIG5v dAphIHdheSB0byB0ZWxsIHRoZSBjYWxsZXIgYW55dGhpbmcuCgo+ICsKPiArCQlpZiAoIWkpCj4g KwkJCW50Yi0+bXNpX3ZpcnFiYXNlID0gdmlycTsKCkkgZG9uJ3QgdW5kZXJzdGFuZCB3aGF0IHlv dSdyZSBkb2luZyBoZXJlLCBidXQgaXQgbG9va3Mgd2VpcmQgdG8gc2V0Cm50Yi0+bXNpX3ZpcnFi YXNlIGV2ZW4gaWYgZGV2bV9yZXF1ZXN0X2lycSgpIGZhaWxzLgoKPiArCX0KPiArfQoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5l bCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6 Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=