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 9D42DEB8FA5 for ; Wed, 6 Sep 2023 12:26:49 +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=+jaNQQ6cZfDsOhzsmoFRQbyk0ztoKEz9yYAiWz9ft0k=; b=AGr5bXncUiUJ2k S/Hau0bSJXtRW5h6nLZ3Wmqzi8b1U7cnBhjAa3Y5KKPugfOVPMs/P+mDaO4F7WxyMmM7VPHVNjcya 3bXjk+I7m8TBJxJFIm+XMSBQjoDVWCemLNqJvIoGcTN7gqIYdipDCH1jICxNOsr9y3bZQ1K+/pJks s3hZBB0CrigqRadQRoq73YT/7CPRm5sVsAFoVyOqnmDSJuqcZtEMjvW7ZA1H/fsv+jnQQX4AMDHEf ijNk6Z9UySS2hU5lksIC9WcTkFdXxWv2NYzhc0aOoBpBaf9wykCgzCIk7ShEJA4MO0jdUHjWUYsLT 26cKbQg2oDcSzSHMjBQg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qdrbw-009Nj1-10; Wed, 06 Sep 2023 12:26:20 +0000 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qdrbt-009Nfg-1A for linux-arm-kernel@lists.infradead.org; Wed, 06 Sep 2023 12:26:19 +0000 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-1c364fb8a4cso3067945ad.1 for ; Wed, 06 Sep 2023 05:26:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1694003176; x=1694607976; 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=kjnnzDLUDo2+D27D03H2YWRaB12AVyK4xgoDBE0WK78=; b=T7+prhaMYx5OfSPpVbAvBPMj84Xs2x9IjmOOtc3QnnE6dnUzNwAToclewcuMw6wNdB jAPCym4zdef8iCqPv0ZASUxvevVOBD0e5KQ+f1089Clh1y0i8UMygSyE6I/DHgmea+IB OIt5fS5cOSZaJ9old5UeLuKIZklF7H0bHwylNz0gVNOIUQqY/veKIw4/4+KUFl0fsI8D HyKEnFcantL1oaOdt4y2OCJT4rtBp7+4WaauC+EuLNHscTNMCUe0emWCtluAJPMA5uab OsUlAL4/Nx1fKQlVKjQwaWAE+Spdb2aRRc60n1IiVJ1xb1KbNm4GqN0aOFbWrZF5h18j 5M3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1694003176; x=1694607976; 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=kjnnzDLUDo2+D27D03H2YWRaB12AVyK4xgoDBE0WK78=; b=W0zA/2ZDg1S1HvuB09qtfV/QREKHSgsaz9wyXWHWtZLeN/XC0rGlMN06ErTQJB2pza vLnuLHexRXUFhNfR3akt7tvygp5+e7AoFRblwvo8H2SJpcnnVw/CiOiXLtzZ7TdytJiJ 3jCreO0T86S7PetKZM4VIhBPI2CpE9KeQI6z+ScpZ9fhwkrFoBKt7QSs9I7Zw4X9BmcI sO9sV1muu4QLfEfu38zbZxGSOVwBoKvtlxg9EYyPmvmnMJnIv4QmwU6mgkeVOyY7kPKC d2QztPyg/Kb7OdzH3xuAD5qxNQ3+SyMXBjhrmIy5zNSlwgd7UaLzQbuuocrPzNN+rzGC O4QA== X-Gm-Message-State: AOJu0YyxxsCot1gU36A8HrajS5CSU4MJ8OUIn0nrrB8v4WdwEiICzM5W eZD6q0y3DiVbe2chi/c6e6BO X-Google-Smtp-Source: AGHT+IFRy+f9cPt6hImhbeLHiudZgHv2ne6+5hiV0JlI5JP4oipQdy+eixxMA2W/+788/8cEth4xNw== X-Received: by 2002:a17:90b:fc8:b0:26f:2c5a:bbb3 with SMTP id gd8-20020a17090b0fc800b0026f2c5abbb3mr14027269pjb.40.1694003175797; Wed, 06 Sep 2023 05:26:15 -0700 (PDT) Received: from thinkpad ([120.138.12.139]) by smtp.gmail.com with ESMTPSA id 25-20020a17090a199900b002693505391csm13493081pji.37.2023.09.06.05.26.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Sep 2023 05:26:15 -0700 (PDT) Date: Wed, 6 Sep 2023 17:56:05 +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: <20230906122605.GB5930@thinkpad> References: <20230426203436.1277307-1-Frank.Li@nxp.com> <20230426203436.1277307-2-Frank.Li@nxp.com> <20230902045214.GA2913@thinkpad> <20230902045328.GB2913@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_052617_405149_77E6A864 X-CRM114-Status: GOOD ( 46.72 ) 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 T24gV2VkLCBTZXAgMDYsIDIwMjMgYXQgMTI6MjQ6NTBBTSAtMDQwMCwgRnJhbmsgTGkgd3JvdGU6 Cj4gT24gU2F0LCBTZXAgMDIsIDIwMjMgYXQgMTA6MjM6MjhBTSArMDUzMCwgTWFuaXZhbm5hbiBT YWRoYXNpdmFtIHdyb3RlOgo+ID4gT24gU2F0LCBTZXAgMDIsIDIwMjMgYXQgMTA6MjI6MjVBTSAr MDUzMCwgTWFuaXZhbm5hbiBTYWRoYXNpdmFtIHdyb3RlOgo+ID4gPiBPbiBXZWQsIEFwciAyNiwg MjAyMyBhdCAwNDozNDozNFBNIC0wNDAwLCBGcmFuayBMaSB3cm90ZToKPiA+ID4gPiBUaGlzIGNv bW1pdCBpbnRyb2R1Y2VzIGEgY29tbW9uIG1ldGhvZCBmb3Igc2VuZGluZyBtZXNzYWdlcyBmcm9t IHRoZSBSb290IENvbXBsZXgKPiA+ID4gPiAoUkMpIHRvIHRoZSBFbmRwb2ludCAoRVApIGJ5IHV0 aWxpemluZyB0aGUgcGxhdGZvcm0gTVNJIGludGVycnVwdCBjb250cm9sbGVyLAo+ID4gPiA+IHN1 Y2ggYXMgQVJNIEdJQywgYXMgYW4gRVAgZG9vcmJlbGwuIE1hcHMgdGhlIG1lbW9yeSBhc3NpZ25l ZCBmb3IgdGhlIEJBUiByZWdpb24KPiA+ID4gPiBieSB0aGUgUENJIGhvc3QgdG8gdGhlIG1lc3Nh Z2UgYWRkcmVzcyBvZiB0aGUgcGxhdGZvcm0gTVNJIGludGVycnVwdCBjb250cm9sbGVyCj4gPiA+ ID4gaW4gdGhlIFBDSSBFUC4gQXMgYSByZXN1bHQsIHdoZW4gdGhlIFBDSSBSQyB3cml0ZXMgdG8g dGhlIEJBUiByZWdpb24sIGl0IHRyaWdnZXJzCj4gPiA+ID4gYW4gSVJRIGF0IHRoZSBFUC4gVGhp cyBpbXBsZW1lbnRhdGlvbiBzZXJ2ZXMgYXMgYSBjb21tb24gbWV0aG9kIGZvciBhbGwgZW5kcG9p bnQKPiA+ID4gPiBmdW5jdGlvbiBkcml2ZXJzLgo+ID4gPiA+IAo+ID4gPiA+IEhvd2V2ZXIsIGl0 IGN1cnJlbnRseSBzdXBwb3J0cyBvbmx5IG9uZSBFUCBwaHlzaWNhbCBmdW5jdGlvbiBkdWUgdG8g bGltaXRhdGlvbnMKPiA+ID4gPiBpbiBBUk0gTVNJL0lNUyByZWFkaW5lc3MuCj4gPiA+ID4gCj4g PiA+IAo+ID4gPiBJJ3ZlIHByb3ZpZGVkIGdlbmVyaWMgY29tbWVudHMgYmVsb3csIGJ1dCBJIHdp bGwgZG8gb25lIG1vcmUgdGhvcm91Z2ggcmV2aWV3Cj4gPiA+IGFmdGVyIHNlZWluZyBlcGYtdGVz dCBkcml2ZXIgcGF0Y2guCj4gPiA+IAo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IEZyYW5rIExpIDxG cmFuay5MaUBueHAuY29tPgo+ID4gPiA+IC0tLQo+ID4gPiA+ICBkcml2ZXJzL3BjaS9lbmRwb2lu dC9wY2ktZXBmLWNvcmUuYyB8IDEwOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiA+ ID4gIGluY2x1ZGUvbGludXgvcGNpLWVwZi5oICAgICAgICAgICAgIHwgIDE2ICsrKysKPiA+ID4g PiAgMiBmaWxlcyBjaGFuZ2VkLCAxMjUgaW5zZXJ0aW9ucygrKQo+ID4gPiA+IAo+ID4gPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBmLWNvcmUuYyBiL2RyaXZlcnMv cGNpL2VuZHBvaW50L3BjaS1lcGYtY29yZS5jCj4gPiA+ID4gaW5kZXggMzU1YTZmNTZmY2VhLi45 NGFjODJiZjg0YzUgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9wY2kvZW5kcG9pbnQvcGNp LWVwZi1jb3JlLmMKPiA+ID4gPiArKysgYi9kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBmLWNv cmUuYwo+ID4gPiA+IEBAIC02LDEwICs2LDEyIEBACj4gPiA+ID4gICAqIEF1dGhvcjogS2lzaG9u IFZpamF5IEFicmFoYW0gSSA8a2lzaG9uQHRpLmNvbT4KPiA+ID4gPiAgICovCj4gPiA+ID4gIAo+ ID4gPiA+ICsjaW5jbHVkZSA8bGludXgvaXJxcmV0dXJuLmg+Cj4gPiA+IAo+ID4gPiBXaHkgaXMg dGhpcyBuZWVkZWQ/Cj4gPiA+IAo+ID4gPiA+ICAjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+Cj4g PiA+ID4gICNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgo+ID4gPiA+ICAjaW5jbHVkZSA8 bGludXgvc2xhYi5oPgo+ID4gPiA+ICAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gPiA+ID4g KyNpbmNsdWRlIDxsaW51eC9tc2kuaD4KPiA+ID4gPiAgCj4gPiA+ID4gICNpbmNsdWRlIDxsaW51 eC9wY2ktZXBjLmg+Cj4gPiA+ID4gICNpbmNsdWRlIDxsaW51eC9wY2ktZXBmLmg+Cj4gPiA+ID4g QEAgLTMwMCw2ICszMDIsMTEzIEBAIHZvaWQgKnBjaV9lcGZfYWxsb2Nfc3BhY2Uoc3RydWN0IHBj aV9lcGYgKmVwZiwgc2l6ZV90IHNpemUsIGVudW0gcGNpX2Jhcm5vIGJhciwKPiA+ID4gPiAgfQo+ ID4gPiA+ICBFWFBPUlRfU1lNQk9MX0dQTChwY2lfZXBmX2FsbG9jX3NwYWNlKTsKPiA+ID4gPiAg Cj4gPiA+ID4gK3N0YXRpYyBlbnVtIGlycXJldHVybiBwY2lfZXBmX2ludGVycnVwdF9oYW5kbGVy KGludCBpcnEsIHZvaWQgKmRhdGEpCj4gPiA+IAo+ID4gPiBzdGF0aWMgaXJxcmV0dXJuX3QKPiA+ ID4gCj4gPiA+IHMvcGNpX2VwZl9pbnRlcnJ1cHRfaGFuZGxlci9wY2lfZXBmX2Rvb3JiZWxsX2hh bmRsZXIKPiA+ID4gCj4gPiA+ID4gK3sKPiA+ID4gPiArCXN0cnVjdCBwY2lfZXBmICplcGYgPSBk YXRhOwo+ID4gPiA+ICsKPiA+ID4gPiArCWlmIChlcGYtPmV2ZW50X29wcyAmJiBlcGYtPmV2ZW50 X29wcy0+ZG9vcmJlbGwpCj4gPiA+ID4gKwkJZXBmLT5ldmVudF9vcHMtPmRvb3JiZWxsKGVwZiwg aXJxIC0gZXBmLT52aXJxX2Jhc2UpOwo+ID4gPiA+ICsKPiA+ID4gPiArCXJldHVybiBJUlFfSEFO RExFRDsKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gPiArc3RhdGljIHZvaWQgcGNpX2VwZl93 cml0ZV9tc2lfbXNnKHN0cnVjdCBtc2lfZGVzYyAqZGVzYywgc3RydWN0IG1zaV9tc2cgKm1zZykK PiA+ID4gPiArewo+ID4gPiA+ICsJc3RydWN0IHBjaV9lcGMgKmVwYyA9IGNvbnRhaW5lcl9vZihk ZXNjLT5kZXYsIHN0cnVjdCBwY2lfZXBjLCBkZXYpOwo+ID4gPiA+ICsJc3RydWN0IHBjaV9lcGYg KmVwZjsKPiA+ID4gPiArCj4gPiA+ID4gKwkvKiBUb2RvOiBOZWVkIGNoZWNrIGNvcnJlY3QgZXBm IGlmIG11bHRpIGVwZiBzdXBwb3J0ZWQgKi8KPiA+ID4gPiArCWxpc3RfZm9yX2VhY2hfZW50cnko ZXBmLCAmZXBjLT5wY2lfZXBmLCBsaXN0KSB7Cj4gPiA+ID4gKwkJaWYgKGVwZi0+bXNnICYmIGRl c2MtPm1zaV9pbmRleCA8IGVwZi0+bnVtX21zZ3MpCj4gPiA+ID4gKwkJCWVwZi0+bXNnW2Rlc2Mt Pm1zaV9pbmRleF0gPSAqbXNnOwo+ID4gPiA+ICsJfQo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4g PiA+ICtpbnQgcGNpX2VwZl9hbGxvY19kb29yYmVsbChzdHJ1Y3QgcGNpX2VwZiAqZXBmLCB1MTYg bnVtX21zZ3MpCj4gPiA+ID4gK3sKPiA+ID4gPiArCXN0cnVjdCBpcnFfZG9tYWluICpkb21haW47 Cj4gPiA+ID4gKwlzdHJ1Y3QgcGNpX2VwYyAqZXBjOwo+ID4gPiA+ICsJc3RydWN0IGRldmljZSAq ZGV2Owo+ID4gPiA+ICsJaW50IHZpcnE7Cj4gPiA+ID4gKwlpbnQgcmV0Owo+ID4gPiA+ICsJaW50 IGk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJZXBjID0gZXBmLT5lcGM7Cj4gPiA+ID4gKwlkZXYgPSAm ZXBjLT5kZXY7Cj4gPiA+IAo+ID4gPiAiZXBjX2RldiIgdG8gbWFrZSBpdCBleHBsaWNpdAo+IAo+ IEFsbCBvdGhlciBwbGFjZSB1c2UgJ2RldicsIEkgdGhpbmsgYmV0dGVyIGtlZXAgdGhlIGNvbnNp c3RlbnQuCj4gCj4gRnJhbmsKPiA+ID4gCj4gPiA+ID4gKwo+ID4gPiA+ICsJLyoKPiA+ID4gPiAr CSAqIEN1cnJlbnQgb25seSBzdXBwb3J0IDEgZnVuY3Rpb24uCj4gPiA+IAo+ID4gPiBXaGF0IGRv ZXMgdGhpcyBtZWFuIGV4YWN0bHk/IEV2ZW4gYSBzaW5nbGUgRVBDIGNhbiBzdXBwb3J0IG11bHRp cGxlIEVQRnMKPiA+ID4gCj4gPiAKPiA+IFBsZWFzZSBpZ25vcmUgYWJvdmUgY29tbWVudC4KPiA+ IAo+ID4gLSBNYW5pCj4gPiAKPiA+ID4gPiArCSAqIFBDSSBJTVMoaW50ZXJydXB0IG1lc3NhZ2Ug c3RvcmUpIEFSTSBzdXBwb3J0IGhhdmUgbm90IGJlZW4KPiA+ID4gPiArCSAqIHJlYWR5IHlldC4K PiA+ID4gCj4gPiA+IE5vIG5lZWQgdG8gbWVudGlvbiBwbGF0Zm9ybSBpcnEgY29udHJvbGxlciBu YW1lLgo+IAo+IHdoYXQncyBtZWFucz8KPiAKCiJQQ0kgSU1TIEFSTSBzdXBwb3J0IiBpcyBub3Qg bmVlZGVkLiBKdXN0IHNheSB0aGF0IG9ubHkgb25lIEVQRiBpcyBzdXBwb3J0ZWQuCgo+ID4gPiAK PiA+ID4gPiArCSAqLwo+ID4gPiA+ICsJaWYgKGVwYy0+ZnVuY3Rpb25fbnVtX21hcCAhPSAxKQo+ ID4gPiAKPiA+ID4gV2h5IGNhbid0IHlvdSB1c2UsIGVwZi0+ZnVuY19ubz8KPiA+ID4gCj4gPiA+ ID4gKwkJcmV0dXJuIC1FT1BOT1RTVVBQOwo+ID4gPiA+ICsKPiA+ID4gPiArCWRvbWFpbiA9IGRl dl9nZXRfbXNpX2RvbWFpbihkZXYtPnBhcmVudCk7Cj4gPiA+ID4gKwlpZiAoIWRvbWFpbikKPiA+ ID4gPiArCQlyZXR1cm4gLUVPUE5UU1VQUDsKPiA+ID4gCj4gPiA+IE5ld2xpbmUKPiA+ID4gCj4g PiA+ID4gKwlkZXZfc2V0X21zaV9kb21haW4oZGV2LCBkb21haW4pOwo+ID4gPiA+ICsKPiA+ID4g PiArCS8qIHVzZSBwYXJlbnQgb2Zfbm9kZSB0byBnZXQgZGV2aWNlIGlkIGluZm9ybWF0aW9uICov Cj4gPiA+ID4gKwlkZXYtPm9mX25vZGUgPSBkZXYtPnBhcmVudC0+b2Zfbm9kZTsKPiA+ID4gPiAr Cj4gPiA+IAo+ID4gPiBXaHkgZG8geW91IG5lZWQgb2Zfbm9kZSBhc3NpZ25tZW50IGluc2lkZSBF UEYgY29yZT8KPiAKPiBHSUMgbmVlZCBpdCB0byBhbGxvY2F0ZSBhIE1TSSBpcnEgdG8gcGxhdGZv cm0gZGV2aWNlcy4KPiBJIHRoaW5rIGl0IG1heSBpbXByb3ZlIGlmIElNUyBzdXBwb3J0Lgo+IAoK Q2FuJ3QgeW91IGFzc2lnbiBpdCBpbiB0aGUgRVBGIGRyaXZlciBpdHNlbGY/IEkgZG8gbm90IHdh bnQgYW55IE9GIHJlZmVyZW5jZSBpbgp0aGUgRVBGIGNvcmUgc2luY2UgaXQgaGFzIG5vIE9GIHN1 cHBvcnQuCgotIE1hbmkKCj4gRnJhbmsKPiAKPiA+ID4gCj4gPiA+ID4gKwllcGYtPm1zZyA9IGtj YWxsb2MobnVtX21zZ3MsIHNpemVvZihzdHJ1Y3QgbXNpX21zZyksIEdGUF9LRVJORUwpOwo+ID4g PiA+ICsJaWYgKCFlcGYtPm1zZykKPiA+ID4gPiArCQlyZXR1cm4gLUVOT01FTTsKPiA+ID4gPiAr Cj4gPiA+ID4gKwllcGYtPm51bV9tc2dzID0gbnVtX21zZ3M7Cj4gPiA+ID4gKwo+ID4gPiAKPiA+ ID4gTW92ZSB0aGlzIHRvIHRoZSBzdGFydCBvZiB0aGUgZnVuY3Rpb24sIGFmdGVyIGNoZWNrcy4K PiA+ID4gCj4gPiA+ID4gKwlyZXQgPSBwbGF0Zm9ybV9tc2lfZG9tYWluX2FsbG9jX2lycXMoZGV2 LCBudW1fbXNncywgcGNpX2VwZl93cml0ZV9tc2lfbXNnKTsKPiA+ID4gPiArCWlmIChyZXQpIHsK PiA+ID4gPiArCQlkZXZfZXJyKGRldiwgIkNhbid0IGFsbG9jYXRlIE1TSSBmcm9tIHN5c3RlbSBN U0kgY29udHJvbGxlclxuIik7Cj4gPiA+IAo+ID4gPiAiRmFpbGVkIHRvIGFsbG9jYXRlIE1TSSIK PiA+ID4gCj4gPiA+ID4gKwkJZ290byBlcnJfbWVtOwo+ID4gPiAKPiA+ID4gZXJyX2ZyZWVfbWVt Cj4gPiA+IAo+ID4gPiA+ICsJfQo+ID4gPiA+ICsKPiA+ID4gPiArCWZvciAoaSA9IDA7IGkgPCBu dW1fbXNnczsgaSsrKSB7Cj4gPiA+ID4gKwkJdmlycSA9IG1zaV9nZXRfdmlycShkZXYsIGkpOwo+ ID4gPiA+ICsJCWlmIChpID09IDApCj4gPiA+ID4gKwkJCWVwZi0+dmlycV9iYXNlID0gdmlycTsK PiA+ID4gPiArCj4gPiA+ID4gKwkJcmV0ID0gcmVxdWVzdF9pcnEodmlycSwgcGNpX2VwZl9pbnRl cnJ1cHRfaGFuZGxlciwgMCwKPiA+ID4gPiArCQkJCSAgInBjaS1lcGYtZG9vcmJlbGwiLCBlcGYp Owo+ID4gPiAKPiA+ID4gSVJRIG5hbWUgc2hvdWxkIGhhdmUgYW4gaW5kZXgsIG90aGVyd2lzZSBh bGwgb2YgdGhlbSB3aWxsIGhhdmUgdGhlIHNhbWUgbmFtZS4KPiA+ID4gCj4gPiA+ID4gKwo+ID4g PiA+ICsJCWlmIChyZXQpIHsKPiA+ID4gPiArCQkJZGV2X2VycihkZXYsICJGYWlsdXJlIHJlcXVl c3QgZG9vcmJlbGwgSVJRXG4iKTsKPiA+ID4gCj4gPiA+ICJGYWlsZWQgdG8gcmVxdWVzdCBkb29y YmVsbCIKPiA+ID4gCj4gPiA+ID4gKwkJCWdvdG8gZXJyX2lycTsKPiA+ID4gCj4gPiA+IGVycl9m cmVlX2lycQo+ID4gPiAKPiA+ID4gPiArCQl9Cj4gPiA+ID4gKwl9Cj4gPiA+ID4gKwo+ID4gPiA+ ICsJZXBmLT5udW1fbXNncyA9IG51bV9tc2dzOwo+ID4gPiAKPiA+ID4gTmV3bGluZQo+ID4gPiAK PiA+ID4gPiArCXJldHVybiByZXQ7Cj4gPiA+ID4gKwo+ID4gPiA+ICtlcnJfaXJxOgo+ID4gPiA+ ICsJcGxhdGZvcm1fbXNpX2RvbWFpbl9mcmVlX2lycXMoZGV2KTsKPiA+ID4gPiArZXJyX21lbToK PiA+ID4gPiArCWtmcmVlKGVwZi0+bXNnKTsKPiA+ID4gPiArCWVwZi0+bXNnID0gTlVMTDsKPiA+ ID4gPiArCWVwZi0+bnVtX21zZ3MgPSAwOwo+ID4gPiA+ICsKPiA+ID4gPiArCXJldHVybiByZXQ7 Cj4gPiA+ID4gK30KPiA+ID4gPiArRVhQT1JUX1NZTUJPTF9HUEwocGNpX2VwZl9hbGxvY19kb29y YmVsbCk7Cj4gPiA+ID4gKwo+ID4gPiA+ICt2b2lkIHBjaV9lcGZfZnJlZV9kb29yYmVsbChzdHJ1 Y3QgcGNpX2VwZiAqZXBmKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKwlzdHJ1Y3QgcGNpX2VwYyAqZXBj Owo+ID4gPiA+ICsJaW50IGk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJZXBjID0gZXBmLT5lcGM7Cj4g PiA+ID4gKwo+ID4gPiA+ICsJZm9yIChpID0gMDsgaSA8IGVwZi0+bnVtX21zZ3M7IGkrKykKPiA+ ID4gPiArCQlmcmVlX2lycShlcGYtPnZpcnFfYmFzZSArIGksIGVwZik7Cj4gPiA+ID4gKwo+ID4g PiA+ICsJcGxhdGZvcm1fbXNpX2RvbWFpbl9mcmVlX2lycXMoJmVwYy0+ZGV2KTsKPiA+ID4gPiAr CWtmcmVlKGVwZi0+bXNnKTsKPiA+ID4gPiArCWVwZi0+bXNnID0gTlVMTDsKPiA+ID4gPiArCWVw Zi0+bnVtX21zZ3MgPSAwOwo+ID4gPiA+ICt9Cj4gPiA+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKHBj aV9lcGZfZnJlZV9kb29yYmVsbCk7Cj4gPiA+ID4gKwo+ID4gPiA+ICBzdGF0aWMgdm9pZCBwY2lf ZXBmX3JlbW92ZV9jZnMoc3RydWN0IHBjaV9lcGZfZHJpdmVyICpkcml2ZXIpCj4gPiA+ID4gIHsK PiA+ID4gPiAgCXN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCAqdG1wOwo+ID4gPiA+IGRpZmYg LS1naXQgYS9pbmNsdWRlL2xpbnV4L3BjaS1lcGYuaCBiL2luY2x1ZGUvbGludXgvcGNpLWVwZi5o Cj4gPiA+ID4gaW5kZXggYjg0NDFkYjJmYTUyLi5lMTg3ZTNlZTQ4ZDIgMTAwNjQ0Cj4gPiA+ID4g LS0tIGEvaW5jbHVkZS9saW51eC9wY2ktZXBmLmgKPiA+ID4gPiArKysgYi9pbmNsdWRlL2xpbnV4 L3BjaS1lcGYuaAo+ID4gPiA+IEBAIC03NSw2ICs3NSw3IEBAIHN0cnVjdCBwY2lfZXBmX29wcyB7 Cj4gPiA+ID4gIHN0cnVjdCBwY2lfZXBjX2V2ZW50X29wcyB7Cj4gPiA+ID4gIAlpbnQgKCpjb3Jl X2luaXQpKHN0cnVjdCBwY2lfZXBmICplcGYpOwo+ID4gPiA+ICAJaW50ICgqbGlua191cCkoc3Ry dWN0IHBjaV9lcGYgKmVwZik7Cj4gPiA+ID4gKwlpbnQgKCpkb29yYmVsbCkoc3RydWN0IHBjaV9l cGYgKmVwZiwgaW50IGluZGV4KTsKPiA+ID4gPiAgfTsKPiA+ID4gPiAgCj4gPiA+ID4gIC8qKgo+ ID4gPiA+IEBAIC0xNzMsNiArMTc0LDkgQEAgc3RydWN0IHBjaV9lcGYgewo+ID4gPiA+ICAJdW5z aWduZWQgbG9uZwkJdmZ1bmN0aW9uX251bV9tYXA7Cj4gPiA+ID4gIAlzdHJ1Y3QgbGlzdF9oZWFk CXBjaV92ZXBmOwo+ID4gPiA+ICAJY29uc3Qgc3RydWN0IHBjaV9lcGNfZXZlbnRfb3BzICpldmVu dF9vcHM7Cj4gPiA+ID4gKwlzdHJ1Y3QgbXNpX21zZyAqbXNnOwo+ID4gPiA+ICsJdTE2IG51bV9t c2dzOwo+ID4gPiA+ICsJaW50IHZpcnFfYmFzZTsKPiA+ID4gPiAgfTsKPiA+ID4gPiAgCj4gPiA+ ID4gIC8qKgo+ID4gPiA+IEBAIC0yMTYsNCArMjIwLDE2IEBAIGludCBwY2lfZXBmX2JpbmQoc3Ry dWN0IHBjaV9lcGYgKmVwZik7Cj4gPiA+ID4gIHZvaWQgcGNpX2VwZl91bmJpbmQoc3RydWN0IHBj aV9lcGYgKmVwZik7Cj4gPiA+ID4gIGludCBwY2lfZXBmX2FkZF92ZXBmKHN0cnVjdCBwY2lfZXBm ICplcGZfcGYsIHN0cnVjdCBwY2lfZXBmICplcGZfdmYpOwo+ID4gPiA+ICB2b2lkIHBjaV9lcGZf cmVtb3ZlX3ZlcGYoc3RydWN0IHBjaV9lcGYgKmVwZl9wZiwgc3RydWN0IHBjaV9lcGYgKmVwZl92 Zik7Cj4gPiA+ID4gK2ludCBwY2lfZXBmX2FsbG9jX2Rvb3JiZWxsKHN0cnVjdCBwY2lfZXBmICpl cGYsIHUxNiBudW1zKTsKPiA+ID4gPiArdm9pZCBwY2lfZXBmX2ZyZWVfZG9vcmJlbGwoc3RydWN0 IHBjaV9lcGYgKmVwZik7Cj4gPiA+ID4gKwo+ID4gPiA+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBt c2lfbXNnICplcGZfZ2V0X21zZyhzdHJ1Y3QgcGNpX2VwZiAqZXBmKQo+ID4gPiA+ICt7Cj4gPiA+ ID4gKwlyZXR1cm4gZXBmLT5tc2c7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRp YyBpbmxpbmUgdTE2IGVwZl9nZXRfbXNnX251bShzdHJ1Y3QgcGNpX2VwZiAqZXBmKQo+ID4gPiA+ ICt7Cj4gPiA+ID4gKwlyZXR1cm4gZXBmLT5udW1fbXNnczsKPiA+ID4gPiArfQo+ID4gPiAKPiA+ ID4gSSBkb24ndCBzZWUgYSBuZWVkIGZvciB0aGVzZSB0d28gZnVuY3Rpb25zIGFzIHRoZXkgYXJl IGRvaW5nIGp1c3QgZGVyZWZlcmVuY2VzLgo+ID4gPiAKPiA+ID4gLSBNYW5pCj4gPiA+IAo+ID4g PiA+ICAjZW5kaWYgLyogX19MSU5VWF9QQ0lfRVBGX0ggKi8KPiA+ID4gPiAtLSAKPiA+ID4gPiAy LjM0LjEKPiA+ID4gPiAKPiA+ID4gCj4gPiA+IC0tIAo+ID4gPiDgrq7grqPgrr/grrXgrqPgr43g rqPgrqngr40g4K6a4K6k4K6+4K6a4K6/4K614K6u4K+NCj4gPiAKPiA+IC0tIAo+ID4g4K6u4K6j 4K6/4K614K6j4K+N4K6j4K6p4K+NIOCumuCupOCuvuCumuCuv+CuteCuruCvjQoKLS0gCuCuruCu o+Cuv+CuteCuo+CvjeCuo+CuqeCvjSDgrprgrqTgrr7grprgrr/grrXgrq7gr40KCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwg bWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8v bGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK