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 2353CCDB465 for ; Thu, 19 Oct 2023 17:24:32 +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=FmCKTkB5U3sFTP+OFpFnwT2vX5/a1hzzLaThbUvxPUo=; b=r/GyBgwx//QIXX XnVs7Z+DKqJo36Y8toQaDRLzsXSUooHraYz873eJMNqNWVWFt6BbvW313Hgvem2ev2vx9LA+6GjGw imnWAJuXMbFBlJqwv3SDBLhciCwQ2HZfcOxgSLEqUfdD1RFhA96C0cLlYIEDIFidHdUZAhnEAPAot UKcgFjbZRx5zA1HFIEh5oKMMCcU0Pr0wtboMdO0O+IAXXBRzH81ZXzc6YpCVzA1aShd4cTO5xnONZ uOqSn8wbw4moVI0dIWFPhcV9m585+AFuWKNkIFTSmLPF14ayIav5sp9AqFsetM2M/UTl6UUAy5tps N1uHg66LSG8xJ4SO+QNg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qtWkf-000Pb5-1J; Thu, 19 Oct 2023 17:24:05 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qtWkZ-000PWz-31 for linux-arm-kernel@lists.infradead.org; Thu, 19 Oct 2023 17:24:03 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id DBD0061C00; Thu, 19 Oct 2023 17:23:58 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id BF349C433C7; Thu, 19 Oct 2023 17:23:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1697736238; bh=N6rJotQAYKUbY3kdI/jN7i/D6rMJHj9xwtiC6QCP87s=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=WMlwZQW0kKr46J/2uM/wWEtQmhWvqTGSyTYCDriesS8L59DTZ3yWSHrK+xkxVIH9Y ax5f1V6Whi5BSEIov2GenCVaKuPp3PYSXqLYwUYZpYFkUUVtWeW+KXesj79wVBiAS+ D/tC/BjJoFCHhbkbjTYoTddz7xoXrjnUqmzbrVYDYmhWHmoq1hLWAL4s6PHDwSMaQ8 fp7g6t7dLIpu6Q33BobOQXW8BCJ+gFBrLdyWp5Z45Fio1subHcw3SQeQ78EKpIhEnI tgP99YXSpyrt9B8ik03iMRo0R6KcSPW45tYbhyJExq7KPDmNi1148f9OLFgQqP22GP hGm+Q6X3BfOwg== Date: Thu, 19 Oct 2023 22:53:47 +0530 From: Manivannan Sadhasivam To: Frank Li Cc: Manivannan Sadhasivam , 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@kernel.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, s.hauer@pengutronix.de, shawnguo@kernel.org, tglx@linutronix.de Subject: Re: [PATCH v2 1/5] PCI: endpoint: Add RC-to-EP doorbell support using platform MSI controller Message-ID: <20231019172347.GC7254@thinkpad> References: <20230911220920.1817033-1-Frank.Li@nxp.com> <20230911220920.1817033-2-Frank.Li@nxp.com> <20231017183722.GB137137@thinkpad> <20231019150441.GA7254@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-20231019_102400_081489_86475BCC X-CRM114-Status: GOOD ( 59.24 ) 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 T24gVGh1LCBPY3QgMTksIDIwMjMgYXQgMTI6MDA6MjJQTSAtMDQwMCwgRnJhbmsgTGkgd3JvdGU6 Cj4gT24gVGh1LCBPY3QgMTksIDIwMjMgYXQgMDg6MzQ6NDFQTSArMDUzMCwgTWFuaXZhbm5hbiBT YWRoYXNpdmFtIHdyb3RlOgo+ID4gT24gVHVlLCBPY3QgMTcsIDIwMjMgYXQgMDI6NTU6NTdQTSAt MDQwMCwgRnJhbmsgTGkgd3JvdGU6Cj4gPiA+IE9uIFdlZCwgT2N0IDE4LCAyMDIzIGF0IDEyOjA3 OjIyQU0gKzA1MzAsIE1hbml2YW5uYW4gU2FkaGFzaXZhbSB3cm90ZToKPiA+ID4gPiBPbiBNb24s IFNlcCAxMSwgMjAyMyBhdCAwNjowOToxNlBNIC0wNDAwLCBGcmFuayBMaSB3cm90ZToKPiA+ID4g PiA+IFRoaXMgY29tbWl0IGludHJvZHVjZXMgYSBjb21tb24gbWV0aG9kIGZvciBzZW5kaW5nIG1l c3NhZ2VzIGZyb20gdGhlIFJvb3QKPiA+ID4gPiA+IENvbXBsZXggKFJDKSB0byB0aGUgRW5kcG9p bnQgKEVQKSBieSB1dGlsaXppbmcgdGhlIHBsYXRmb3JtIE1TSSBpbnRlcnJ1cHQKPiA+ID4gPiA+ IGNvbnRyb2xsZXIsIHN1Y2ggYXMgQVJNIEdJQywgYXMgYW4gRVAgZG9vcmJlbGwuIE1hcHMgdGhl IG1lbW9yeSBhc3NpZ25lZAo+ID4gPiA+ID4gZm9yIHRoZSBCQVIgcmVnaW9uIGJ5IHRoZSBQQ0kg aG9zdCB0byB0aGUgbWVzc2FnZSBhZGRyZXNzIG9mIHRoZSBwbGF0Zm9ybQo+ID4gPiA+ID4gTVNJ IGludGVycnVwdCBjb250cm9sbGVyIGluIHRoZSBQQ0kgRVAuIEFzIGEgcmVzdWx0LCB3aGVuIHRo ZSBQQ0kgUkMgd3JpdGVzCj4gPiA+ID4gCj4gPiA+ID4gIkRvb3JiZWxsIGZlYXR1cmUgaXMgaW1w bGVtZW50ZWQgYnkgbWFwcGluZyB0aGUgRVAncyBNU0kgaW50ZXJydXB0IGNvbnRyb2xsZXIKPiA+ ID4gPiBtZXNzYWdlIGFkZHJlc3MgdG8gYSBkZWRpY2F0ZWQgQkFSIGluIHRoZSBFUEMgY29yZS4g SXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5Cj4gPiA+ID4gb2YgdGhlIEVQRiBkcml2ZXIgdG8gcGFz cyB0aGUgYWN0dWFsIG1lc3NhZ2UgZGF0YSB0byBiZSB3cml0dGVuIGJ5IHRoZSBob3N0IHRvCj4g PiA+ID4gdGhlIGRvb3JiZWxsIEJBUiByZWdpb24gdGhyb3VnaCBpdHMgb3duIGxvZ2ljLiIKPiA+ ID4gPiAKPiA+ID4gPiA+IHRvIHRoZSBCQVIgcmVnaW9uLCBpdCB0cmlnZ2VycyBhbiBJUlEgYXQg dGhlIEVQLiBUaGlzIGltcGxlbWVudGF0aW9uIHNlcnZlcwo+ID4gPiA+ID4gYXMgYSBjb21tb24g bWV0aG9kIGZvciBhbGwgZW5kcG9pbnQgZnVuY3Rpb24gZHJpdmVycy4KPiA+ID4gPiA+IAo+ID4g PiA+ID4gSG93ZXZlciwgaXQgY3VycmVudGx5IHN1cHBvcnRzIG9ubHkgb25lIEVQIHBoeXNpY2Fs IGZ1bmN0aW9uIGR1ZSB0bwo+ID4gPiA+ID4gbGltaXRhdGlvbnMgaW4gQVJNIE1TSS9JTVMgcmVh ZGluZXNzLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBGcmFuayBMaSA8RnJh bmsuTGlAbnhwLmNvbT4KPiA+ID4gPiA+IC0tLQo+ID4gPiA+ID4gIGRyaXZlcnMvcGNpL2VuZHBv aW50L3BjaS1lcGMtY29yZS5jIHwgMTkyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ ID4gPiA+ICBkcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBmLWNvcmUuYyB8ICA0NCArKysrKysr Cj4gPiA+ID4gPiAgaW5jbHVkZS9saW51eC9wY2ktZXBjLmggICAgICAgICAgICAgfCAgIDYgKwo+ ID4gPiA+ID4gIGluY2x1ZGUvbGludXgvcGNpLWVwZi5oICAgICAgICAgICAgIHwgICA3ICsKPiA+ ID4gPiA+ICA0IGZpbGVzIGNoYW5nZWQsIDI0OSBpbnNlcnRpb25zKCspCj4gPiA+ID4gPiAKPiA+ ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYyBi L2RyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jCj4gPiA+ID4gPiBpbmRleCA1YTRh OGIwYmU2MjYyLi5kMzM2YTk5YzZhOTRmIDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9w Y2kvZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmMKPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvcGNpL2Vu ZHBvaW50L3BjaS1lcGMtY29yZS5jCj4gPiA+ID4gPiBAQCAtMTAsNiArMTAsNyBAQAo+ID4gPiA+ ID4gICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gPiA+ID4gPiAgI2luY2x1ZGUgPGxpbnV4L21v ZHVsZS5oPgo+ID4gPiA+ID4gIAo+ID4gPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9tc2kuaD4KPiA+ ID4gPiA+ICAjaW5jbHVkZSA8bGludXgvcGNpLWVwYy5oPgo+ID4gPiA+ID4gICNpbmNsdWRlIDxs aW51eC9wY2ktZXBmLmg+Cj4gPiA+ID4gPiAgI2luY2x1ZGUgPGxpbnV4L3BjaS1lcC1jZnMuaD4K PiA+ID4gPiA+IEBAIC03ODMsNiArNzg0LDE5NyBAQCB2b2lkIHBjaV9lcGNfYm1lX25vdGlmeShz dHJ1Y3QgcGNpX2VwYyAqZXBjKQo+ID4gPiA+ID4gIH0KPiA+ID4gPiA+ICBFWFBPUlRfU1lNQk9M X0dQTChwY2lfZXBjX2JtZV9ub3RpZnkpOwo+ID4gPiA+ID4gIAo+ID4gPiA+ID4gKy8qKgo+ID4g PiA+ID4gKyAqIHBjaV9lcGNfYWxsb2NfZG9vcmJlbGwoKSAtIGFsbG9jIGFuIGFkZHJlc3Mgc3Bh Y2UgdG8gbGV0IFJDIHRyaWdnZXIgRVAgc2lkZSBJUlEgYnkgd3JpdGUgZGF0YSB0bwo+ID4gPiA+ ID4gKyAqCQkJICAgICAgdGhlIHNwYWNlLgo+ID4gPiA+IAo+ID4gPiA+ICJBbGxvY2F0ZSBwbGF0 Zm9ybSBzcGVjaWZpYyBkb29yYmVsbCBJUlFzIHRvIGJlIHVzZWQgYnkgdGhlIGhvc3QgdG8gdHJp Z2dlcgo+ID4gPiA+IGRvb3JiZWxscyBvbiBFUC4iCj4gPiA+ID4gCj4gPiA+ID4gPiArICoKPiA+ ID4gPiA+ICsgKiBAZXBjOiB0aGUgRVBDIGRldmljZSB0aGF0IG5lZWQgZG9vcmJlbGwgYWRkcmVz cyBhbmQgZGF0YSBmcm9tIFJDLgo+ID4gPiA+IAo+ID4gPiA+IEVQQyBkZXZpY2UgZm9yIHdoaWNo IHRoZSBkb29yYmVsbCBuZWVkcyB0byBiZSBhbGxvY2F0ZWQKPiA+ID4gPiAKPiA+ID4gPiA+ICsg KiBAZnVuY19ubzogdGhlIHBoeXNpY2FsIGVuZHBvaW50IGZ1bmN0aW9uIG51bWJlciBpbiB0aGUg RVBDIGRldmljZS4KPiA+ID4gPiA+ICsgKiBAdmZ1bmNfbm86IHRoZSB2aXJ0dWFsIGVuZHBvaW50 IGZ1bmN0aW9uIG51bWJlciBpbiB0aGUgcGh5c2ljYWwgZnVuY3Rpb24uCj4gPiA+ID4gPiArICog QG51bV9tc2dzOiB0aGUgdG90YWwgbnVtYmVyIG9mIGRvb3JiZWxsIG1lc3NhZ2VzCj4gPiA+ID4g Cj4gPiA+ID4gcy9udW1fbXNncy9udW1fZGIKPiA+ID4gPiAKPiA+ID4gPiA+ICsgKgo+ID4gPiA+ ID4gKyAqIFJldHVybjogMCBzdWNjZXNzLCBvdGhlciBpcyBmYWlsdXJlCj4gPiA+ID4gPiArICov Cj4gPiA+ID4gPiAraW50IHBjaV9lcGNfYWxsb2NfZG9vcmJlbGwoc3RydWN0IHBjaV9lcGMgKmVw YywgdTggZnVuY19ubywgdTggdmZ1bmNfbm8sIGludCBudW1fbXNncykKPiA+ID4gPiA+ICt7Cj4g PiA+ID4gPiArCWludCByZXQ7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCWlmIChJU19FUlJfT1Jf TlVMTChlcGMpIHx8IGZ1bmNfbm8gPj0gZXBjLT5tYXhfZnVuY3Rpb25zKQo+ID4gPiA+ID4gKwkJ cmV0dXJuIC1FSU5WQUw7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCWlmICh2ZnVuY19ubyA+IDAg JiYgKCFlcGMtPm1heF92ZnMgfHwgdmZ1bmNfbm8gPiBlcGMtPm1heF92ZnNbZnVuY19ub10pKQo+ ID4gPiA+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCWlmICgh ZXBjLT5vcHMtPmFsbG9jX2Rvb3JiZWxsKQo+ID4gPiA+ID4gKwkJcmV0dXJuIDA7Cj4gPiA+ID4g Cj4gPiA+ID4gWW91IG1lbnRpb25lZCAwIGlzIGEgc3VjY2Vzcy4gU28gaWYgdGhlcmUgaXMgbm8g Y2FsbGJhY2ssIHlvdSB3YW50IHRvIHJldHVybgo+ID4gPiA+IHN1Y2Nlc3M/Cj4gPiA+ID4gCj4g PiA+ID4gPiArCj4gPiA+ID4gPiArCW11dGV4X2xvY2soJmVwYy0+bG9jayk7Cj4gPiA+ID4gPiAr CXJldCA9IGVwYy0+b3BzLT5hbGxvY19kb29yYmVsbChlcGMsIGZ1bmNfbm8sIHZmdW5jX25vLCBu dW1fbXNncyk7Cj4gPiA+ID4gCj4gPiA+ID4gV2h5IGNhbid0IHlvdSBqdXN0IGNhbGwgdGhlIGdl bmVyaWMgZnVuY3Rpb24gaGVyZSBhbmQgaW4gb3RoZXIgcGxhY2VzIGluc3RlYWQgb2YKPiA+ID4g PiBpbXBsZW1lbnRpbmcgY2FsbGJhY2tzPyBJIGRvIG5vdCBzZWUgYSBuZWNlc3NpdHkgZm9yIEVQ QyBzcGVjaWZpYyBjYWxsYmFja3MuIElmCj4gPiA+ID4gdGhlcmUgaXMgb25lLCBwbGVhc2Ugc3Bl Y2lmeS4KPiA+ID4gCj4gPiA+IDEuIFJlZmVyIHYxIHlvdXIgY29tbWVudHMuCj4gPiA+IGh0dHBz Oi8vbG9yZS5rZXJuZWwub3JnL2lteC8yMDIzMDkwNjE0NTIyNy5HQzU5MzBAdGhpbmtwYWQvCj4g PiAKPiA+IEkgZG8gbm90IGZpbmQgd2hlcmUgSSBzdWdnZXN0ZWQgdGhlIGNhbGxiYWNrIGFwcHJv YWNoLgo+IAo+IAk+ID4gPiBJZiB0aGF0LCBFYWNoIEVQRiBkcml2ZXIgbmVlZCBkbyBkdXBsaWNh dGUgd29yay4gCj4gCT4gPiA+IAo+IAk+ID4gCj4gCT4gPiBZZXMsIGFuZCB0aGF0J3MgaG93IGl0 IHNob3VsZCBiZS4gRVBGIGNvcmUgaGFzIG5vIGpvYiBpbiBzdXBwbHlpbmcgdGhlIG9mX25vZGUu Cj4gCT4gPiBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIEVQRiBkcml2ZXJzIGFzIHRo ZXkgZGVwZW5kIG9uIE9GIGZvciBwbGF0Zm9ybQo+IAk+ID4gc3VwcG9ydC4KPiAJPiAKPiAJPiBF UEYgZHJpdmVyIHN0aWxsIG5vdCBkZXBlbmQgb24gT0YuIHN1Y2ggcGNpLWVwZi10ZXN0LCB3aGlj aCB3YXMgcHJvYmVkIGJ5Cj4gCT4gY29uZmlnZnMuCj4gCT4gCj4gCj4gCUhtbSwgeWVhaC4gVGhl biBpdCBzaG91bGQgYmUgcGFydCBvZiB0aGUgRVBDIGRyaXZlci4KPiAKPiAJU29ycnkgZm9yIHRo ZSBjb25mdXNpb24uCj4gCj4gSGVyZSwgYWxsICJFUEYiIHNob3VsZCBiZSAiRVBDIi4gVGhlIGtl eSBwcm9ibGVtIGlzIG9mX25vZGUuIEVQQyBjb3JlIGhhdmUKPiBub3Qgb2Zfbm9kZSwgRVBDIGNv cmUncyBwYXJlbnQgZHJpdmVyIChsaWtlIGR3Yy1lcCBkcml2ZXIpIGhhdmUgb2Zfbm9kZS4gCj4g Cj4gcGNpX2VwY19nZW5lcmljX2FsbG9jX2Rvb3JiZWxsKGRldiksIGRldiBpcyBwcm9iZWQgYnkg cGxhdGZvcm0gZHJpdmVyLCBzdWNoCj4gYXMgZHdjLWVwLCB3aGljaCBoYXZlIG9mX25vZGUsICBF UEMgY29yZSB3aWxsIGNyZWF0ZSBjaGlsZCBkZXZpY2UuCj4gCj4gZHdjLWVwIGRldmljZQo+ICB8 LSBlcGMgY29yZSBkZXZpY2UKPiAKPiB3ZSBjYW4gZGlyZWN0IGNhbGwgcGNpX2VwY19nZW5lcmlj X2FsbG9jX2Rvb3JiZWxsKGVwYy0+cGFyZW50KSBoZXJlLgo+IAo+IEkgbWF5IG1pc3MgdW5kZXJz dGFuZCB3aGF0IHlvdXIgbWVhbnMuIEkgdGhpbmsgeW91IHdhbnQgdG8gZHdjLWVwCj4gKHdpdGgg b2Zfbm9kZSkgaGFuZGxlIHRoZXNlIGFsbG9jIGZ1bmN0aW9ucy4gCj4gCgpNeSBjb21tZW50IHdh cyB0byBoYXZlIGp1c3Qgb25lIGZ1bmN0aW9uIGRlZmluaXRpb24uIEJ1dCBsb29raW5nIGF0IGl0 IGFnYWluLCBJCnRoaW5rIGl0IGlzIGJldHRlciB0byBtb3ZlIGFsbCB0aGUgKGFsbG9jLCBmcmVl LCB3cml0ZV9tc2cpIGRlZmluaXRpb25zIHRvCmR3Yy1lcCwgc2luY2UgdGhlIGNvbnRlbnRzIG9m IHRob3NlIGZ1bmN0aW9ucyBhcmUgbm90IEVQQyBjb3JlIHNwZWNpZmljLgoKSW4gdGhlIEVQQyBj b3JlLCB5b3UgY2FuIHN0aWxsIGhhdmUgdGhlIGNhbGxiYWNrcyBzcGVjaWZpYyB0byBlYWNoIEVQ Qy4gVGhpcwphbHNvIHNvbHZlcyB5b3VyIG9mX25vZGUgcHJvYmxlbS4KCi0gTWFuaQoKPiA+IAo+ ID4gPiAyLiBNYXliZSBzb21lIGVwIGNvbnRyb2xsZXIgaGF2ZSBidWlsdC1pbiBkb29yYmVsbCBz dXBwb3J0LiBXcml0ZSB0byBzb21lCj4gPiA+IGFkZHJlc3MgdG8gdHJpZ2dlciBkb29yYmVsbCBp cnEuCj4gPiA+IAo+ID4gCj4gPiBXZSB3aWxsIGhhbmRsZSBpdCB3aGVuZXZlciBzdWNoIEVQIGNv bnRyb2xsZXJzIGFycml2ZS4gVW50aWwgdGhlbiwgbGV0J3Mga2VlcCBpdAo+ID4gc2ltcGxlLgo+ ID4gCj4gPiAtIE1hbmkKPiA+IAo+ID4gPiBGcmFuawo+ID4gPiAKPiA+ID4gPiAKPiA+ID4gPiA+ ICsJbXV0ZXhfdW5sb2NrKCZlcGMtPmxvY2spOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlyZXR1 cm4gcmV0Owo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChwY2lfZXBj X2FsbG9jX2Rvb3JiZWxsKTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsvKioKPiA+ID4gPiA+ICsg KiBwY2lfZXBjX2ZyZWVfZG9vcmJlbGwoKSAtIGZyZWUgcmVzb3VyY2UgYWxsb2NhdGVkIGJ5IHBj aV9lcGNfYWxsb2NfZG9vcmJlbGwoKQo+ID4gPiA+ID4gKyAqCj4gPiA+ID4gPiArICogQGVwYzog dGhlIEVQQyBkZXZpY2UgdGhhdCBuZWVkIGRvb3JiZWxsIGFkZHJlc3MgYW5kIGRhdGEgZnJvbSBS Qy4KPiA+ID4gPiAKPiA+ID4gPiBTYW1lIGFzIGFib3ZlLgo+ID4gPiA+IAo+ID4gPiA+ID4gKyAq IEBmdW5jX25vOiB0aGUgcGh5c2ljYWwgZW5kcG9pbnQgZnVuY3Rpb24gbnVtYmVyIGluIHRoZSBF UEMgZGV2aWNlLgo+ID4gPiA+ID4gKyAqIEB2ZnVuY19ubzogdGhlIHZpcnR1YWwgZW5kcG9pbnQg ZnVuY3Rpb24gbnVtYmVyIGluIHRoZSBwaHlzaWNhbCBmdW5jdGlvbi4KPiA+ID4gPiA+ICsgKgo+ ID4gPiA+ID4gKyAqIFJldHVybjogMCBzdWNjZXNzLCBvdGhlciBpcyBmYWlsdXJlCj4gPiA+ID4g PiArICovCj4gPiA+ID4gPiArdm9pZCBwY2lfZXBjX2ZyZWVfZG9vcmJlbGwoc3RydWN0IHBjaV9l cGMgKmVwYywgdTggZnVuY19ubywgdTggdmZ1bmNfbm8pCj4gPiA+ID4gPiArewo+ID4gPiA+ID4g KwlpZiAoSVNfRVJSX09SX05VTEwoZXBjKSB8fCBmdW5jX25vID49IGVwYy0+bWF4X2Z1bmN0aW9u cykKPiA+ID4gPiA+ICsJCXJldHVybjsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJaWYgKHZmdW5j X25vID4gMCAmJiAoIWVwYy0+bWF4X3ZmcyB8fCB2ZnVuY19ubyA+IGVwYy0+bWF4X3Zmc1tmdW5j X25vXSkpCj4gPiA+ID4gPiArCQlyZXR1cm47Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCWlmICgh ZXBjLT5vcHMtPmZyZWVfZG9vcmJlbGwpCj4gPiA+ID4gPiArCQlyZXR1cm47Cj4gPiA+ID4gPiAr Cj4gPiA+ID4gPiArCW11dGV4X2xvY2soJmVwYy0+bG9jayk7Cj4gPiA+ID4gPiArCWVwYy0+b3Bz LT5mcmVlX2Rvb3JiZWxsKGVwYywgZnVuY19ubywgdmZ1bmNfbm8pOwo+ID4gPiA+IAo+ID4gPiA+ IFNhbWUgYXMgc3VnZ2VzdGVkIGFib3ZlLgo+ID4gPiA+IAo+ID4gPiA+ID4gKwltdXRleF91bmxv Y2soJmVwYy0+bG9jayk7Cj4gPiA+ID4gPiArfQo+ID4gPiA+ID4gK0VYUE9SVF9TWU1CT0xfR1BM KHBjaV9lcGNfZnJlZV9kb29yYmVsbCk7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArc3RhdGljIGly cXJldHVybl90IHBjaV9lcGZfZ2VuZXJpY19kb29yYmVsbF9oYW5kbGVyKGludCBpcnEsIHZvaWQg KmRhdGEpCj4gPiA+ID4gPiArewo+ID4gPiA+ID4gKwlzdHJ1Y3QgcGNpX2VwZiAqZXBmID0gZGF0 YTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJaWYgKGVwZi0+ZXZlbnRfb3BzICYmIGVwZi0+ZXZl bnRfb3BzLT5kb29yYmVsbCkKPiA+ID4gPiA+ICsJCWVwZi0+ZXZlbnRfb3BzLT5kb29yYmVsbChl cGYsIGlycSAtIGVwZi0+dmlycV9iYXNlKTsKPiA+ID4gPiAKPiA+ID4gPiBTYW1lIGFzIHN1Z2dl c3RlZCBhYm92ZS4KPiA+ID4gPiAKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJcmV0dXJuIElSUV9I QU5ETEVEOwo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICtzdGF0aWMgdm9pZCBw Y2lfZXBjX2dlbmVyaWNfd3JpdGVfbXNpX21zZyhzdHJ1Y3QgbXNpX2Rlc2MgKmRlc2MsIHN0cnVj dCBtc2lfbXNnICptc2cpCj4gPiA+ID4gPiArewo+ID4gPiA+ID4gKwlzdHJ1Y3QgcGNpX2VwYyAq ZXBjID0gTlVMTDsKPiA+ID4gPiA+ICsJc3RydWN0IGNsYXNzX2Rldl9pdGVyIGl0ZXI7Cj4gPiA+ ID4gPiArCXN0cnVjdCBwY2lfZXBmICplcGY7Cj4gPiA+ID4gPiArCXN0cnVjdCBkZXZpY2UgKmRl djsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJY2xhc3NfZGV2X2l0ZXJfaW5pdCgmaXRlciwgcGNp X2VwY19jbGFzcywgTlVMTCwgTlVMTCk7Cj4gPiA+ID4gPiArCXdoaWxlICgoZGV2ID0gY2xhc3Nf ZGV2X2l0ZXJfbmV4dCgmaXRlcikpKSB7Cj4gPiA+ID4gPiArCQlpZiAoZGV2LT5wYXJlbnQgIT0g ZGVzYy0+ZGV2KQo+ID4gPiA+ID4gKwkJCWNvbnRpbnVlOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4g KwkJZXBjID0gdG9fcGNpX2VwYyhkZXYpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwkJY2xhc3Nf ZGV2X2l0ZXJfZXhpdCgmaXRlcik7Cj4gPiA+ID4gPiArCQlicmVhazsKPiA+ID4gPiA+ICsJfQo+ ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlpZiAoIWVwYykKPiA+ID4gPiA+ICsJCXJldHVybjsKPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ICsJLyogT25seSBzdXBwb3J0IG9uZSBFUEYgZm9yIGRvb3JiZWxs ICovCj4gPiA+ID4gPiArCWVwZiA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmZXBjLT5wY2lf ZXBmLCBzdHJ1Y3QgcGNpX2VwZiwgbGlzdCk7Cj4gPiA+ID4gPiArCj4gPiA+ID4gCj4gPiA+ID4g Tm8gbmVlZCBvZiB0aGlzIG5ld2xpbmUKPiA+ID4gPiAKPiA+ID4gPiA+ICsJaWYgKCFlcGYpCj4g PiA+ID4gPiArCQlyZXR1cm47Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCWlmIChlcGYtPm1zZyAm JiBkZXNjLT5tc2lfaW5kZXggPCBlcGYtPm51bV9tc2dzKQo+ID4gPiA+ID4gKwkJZXBmLT5tc2db ZGVzYy0+bXNpX2luZGV4XSA9ICptc2c7Cj4gPiA+ID4gPiArfQo+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gKwo+ID4gPiA+IAo+ID4gPiA+IFJlbW92ZSBleHRyYSBuZXdsaW5lCj4gPiA+ID4gCj4gPiA+ ID4gPiArLyoqCj4gPiA+ID4gPiArICogcGNpX2VwY19nZW5lcmljX2FsbG9jX2Rvb3JiZWxsKCkg LSBDb21tb24gaGVscCBmdW5jdGlvbi4gQWxsb2NhdGUgYWRkcmVzcyBzcGFjZSBmcm9tIE1TSQo+ ID4gPiA+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxl cgo+ID4gPiA+ID4gKyAqCj4gPiA+ID4gPiArICogQGVwYzogdGhlIEVQQyBkZXZpY2UgdGhhdCBu ZWVkIGRvb3JiZWxsIGFkZHJlc3MgYW5kIGRhdGEgZnJvbSBSQy4KPiA+ID4gPiA+ICsgKiBAZnVu Y19ubzogdGhlIHBoeXNpY2FsIGVuZHBvaW50IGZ1bmN0aW9uIG51bWJlciBpbiB0aGUgRVBDIGRl dmljZS4KPiA+ID4gPiA+ICsgKiBAdmZ1bmNfbm86IHRoZSB2aXJ0dWFsIGVuZHBvaW50IGZ1bmN0 aW9uIG51bWJlciBpbiB0aGUgcGh5c2ljYWwgZnVuY3Rpb24uCj4gPiA+ID4gPiArICogQG51bV9t c2dzOiB0aGUgdG90YWwgbnVtYmVyIG9mIGRvb3JiZWxsIG1lc3NhZ2VzCj4gPiA+ID4gPiArICoK PiA+ID4gPiAKPiA+ID4gPiBTYW1lIGNvbW1lbnQgYXMgZm9yIHBjaV9lcGNfYWxsb2NfZG9vcmJl bGwoKQo+ID4gPiA+IAo+ID4gPiA+ID4gKyAqIFJlbWFyazogdXNlIHRoaXMgZnVuY3Rpb24gb25s eSBpZiBFUEMgZHJpdmVyIGp1c3QgcmVnaXN0ZXIgb25lIEVQQyBkZXZpY2UuCj4gPiA+ID4gPiAr ICoKPiA+ID4gPiA+ICsgKiBSZXR1cm46IDAgc3VjY2Vzcywgb3RoZXIgaXMgZmFpbHVyZQo+ID4g PiA+ID4gKyAqLwo+ID4gPiA+ID4gK2ludCBwY2lfZXBjX2dlbmVyaWNfYWxsb2NfZG9vcmJlbGwo c3RydWN0IHBjaV9lcGMgKmVwYywgdTggZnVuY19ubywgdTggdmZ1bmNfbm8sIGludCBudW1fbXNn cykKPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiArCXN0cnVjdCBwY2lfZXBmICplcGY7Cj4gPiA+ID4g PiArCXN0cnVjdCBkZXZpY2UgKmRldjsKPiA+ID4gPiA+ICsJaW50IHZpcnEsIGxhc3Q7Cj4gPiA+ ID4gPiArCWludCByZXQ7Cj4gPiA+ID4gPiArCWludCBpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4g KwlpZiAoSVNfRVJSX09SX05VTEwoZXBjKSkKPiA+ID4gPiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwkvKiBDdXJyZW50bHkgb25seSBzdXBwb3J0IG9uZSBmdW5j IGFuZCBvbmUgdmZ1bmMgZm9yIGRvb3JiZWxsICovCj4gPiA+ID4gPiArCWlmIChmdW5jX25vIHx8 IHZmdW5jX25vKQo+ID4gPiA+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ID4gPiArCj4gPiA+ ID4gPiArCWVwZiA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmZXBjLT5wY2lfZXBmLCBzdHJ1 Y3QgcGNpX2VwZiwgbGlzdCk7Cj4gPiA+ID4gPiArCWlmICghZXBmKQo+ID4gPiA+ID4gKwkJcmV0 dXJuIC1FSU5WQUw7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCWRldiA9IGVwYy0+ZGV2LnBhcmVu dDsKPiA+ID4gPiA+ICsJcmV0ID0gcGxhdGZvcm1fbXNpX2RvbWFpbl9hbGxvY19pcnFzKGRldiwg bnVtX21zZ3MsIHBjaV9lcGNfZ2VuZXJpY193cml0ZV9tc2lfbXNnKTsKPiA+ID4gPiA+ICsJaWYg KHJldCkgewo+ID4gPiA+ID4gKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gYWxsb2NhdGUgTVNJ XG4iKTsKPiA+ID4gPiA+ICsJCXJldHVybiAtRU5PTUVNOwo+ID4gPiA+ID4gKwl9Cj4gPiA+ID4g PiArCj4gPiA+ID4gPiArCWxhc3QgPSAtMTsKPiA+ID4gPiA+ICsJZm9yIChpID0gMDsgaSA8IG51 bV9tc2dzOyBpKyspIHsKPiA+ID4gPiAKPiA+ID4gPiBZb3Ugc2hvdWxkIGl0ZXJhdGUgb3ZlciBt c2lfZGVzYyBhcyBiZWxvdzoKPiA+ID4gPiAKPiA+ID4gPiAgICAgICAgIG1zaV9sb2NrX2Rlc2Nz KGRldik7Cj4gPiA+ID4gICAgICAgICBtc2lfZm9yX2VhY2hfZGVzYyhkZXNjLCBkZXYsIE1TSV9E RVNDX0FMTCkgewo+ID4gPiA+IAkJLi4uCj4gPiA+ID4gCX0KPiA+ID4gPiAJbXNpX3VubG9ja19k ZXNjcyhkZXYpOwo+ID4gPiA+IAo+ID4gPiA+ID4gKwkJdmlycSA9IG1zaV9nZXRfdmlycShkZXYs IGkpOwo+ID4gPiA+ID4gKwkJaWYgKGkgPT0gMCkKPiA+ID4gPiA+ICsJCQllcGYtPnZpcnFfYmFz ZSA9IHZpcnE7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCQlyZXQgPSByZXF1ZXN0X2lycSh2aXJx LCBwY2lfZXBmX2dlbmVyaWNfZG9vcmJlbGxfaGFuZGxlciwgMCwKPiA+ID4gPiAKPiA+ID4gPiAJ cmVxdWVzdF9pcnEoZGVzYy0+aXJxLCAuLi4pCj4gPiA+ID4gCj4gPiA+ID4gPiArCQkJCSAga2Fz cHJpbnRmKEdGUF9LRVJORUwsICJwY2ktZXBjLWRvb3JiZWxsJWQiLCBpKSwgZXBmKTsKPiA+ID4g PiA+ICsKPiA+ID4gPiA+ICsJCWlmIChyZXQpIHsKPiA+ID4gPiA+ICsJCQlkZXZfZXJyKGRldiwg IkZhaWxlZCB0byByZXF1ZXN0IGRvb3JiZWxsXG4iKTsKPiA+ID4gPiA+ICsJCQlnb3RvIGVycl9m cmVlX2lycTsKPiA+ID4gPiA+ICsJCX0KPiA+ID4gPiA+ICsJCWxhc3QgPSBpOwo+ID4gPiA+ID4g Kwl9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCXJldHVybiAwOwo+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gK2Vycl9mcmVlX2lycToKPiA+ID4gPiA+ICsJZm9yIChpID0gMDsgaSA8IGxhc3Q7IGkrKykK PiA+ID4gPiA+ICsJCWtmcmVlKGZyZWVfaXJxKGVwZi0+dmlycV9iYXNlICsgaSwgZXBmKSk7Cj4g PiA+ID4gPiArCXBsYXRmb3JtX21zaV9kb21haW5fZnJlZV9pcnFzKGRldik7Cj4gPiA+ID4gPiAr Cj4gPiA+ID4gPiArCXJldHVybiAtRUlOVkFMOwo+ID4gPiA+IAo+ID4gPiA+IAlyZXR1cm4gcmV0 Owo+ID4gPiA+IAo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChwY2lf ZXBjX2dlbmVyaWNfYWxsb2NfZG9vcmJlbGwpOwo+ID4gPiA+ID4gKwo+ID4gPiA+IAo+ID4gPiA+ IFsuLi5dCj4gPiA+ID4gCj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wY2kt ZXBmLmggYi9pbmNsdWRlL2xpbnV4L3BjaS1lcGYuaAo+ID4gPiA+ID4gaW5kZXggM2Y0NGI2YWVj NDc3MC4uNDg1YzE0NmE1ZWZlMiAxMDA2NDQKPiA+ID4gPiA+IC0tLSBhL2luY2x1ZGUvbGludXgv cGNpLWVwZi5oCj4gPiA+ID4gPiArKysgYi9pbmNsdWRlL2xpbnV4L3BjaS1lcGYuaAo+ID4gPiA+ ID4gQEAgLTc5LDYgKzc5LDcgQEAgc3RydWN0IHBjaV9lcGNfZXZlbnRfb3BzIHsKPiA+ID4gPiA+ ICAJaW50ICgqbGlua191cCkoc3RydWN0IHBjaV9lcGYgKmVwZik7Cj4gPiA+ID4gPiAgCWludCAo KmxpbmtfZG93bikoc3RydWN0IHBjaV9lcGYgKmVwZik7Cj4gPiA+ID4gPiAgCWludCAoKmJtZSko c3RydWN0IHBjaV9lcGYgKmVwZik7Cj4gPiA+ID4gPiArCWludCAoKmRvb3JiZWxsKShzdHJ1Y3Qg cGNpX2VwZiAqZXBmLCBpbnQgaW5kZXgpOwo+ID4gPiA+IAo+ID4gPiA+IGtkb2MgbWlzc2luZy4K PiA+ID4gPiAKPiA+ID4gPiA+ICB9Owo+ID4gPiA+ID4gIAo+ID4gPiA+ID4gIC8qKgo+ID4gPiA+ ID4gQEAgLTE4MCw2ICsxODEsOSBAQCBzdHJ1Y3QgcGNpX2VwZiB7Cj4gPiA+ID4gPiAgCXVuc2ln bmVkIGxvbmcJCXZmdW5jdGlvbl9udW1fbWFwOwo+ID4gPiA+ID4gIAlzdHJ1Y3QgbGlzdF9oZWFk CXBjaV92ZXBmOwo+ID4gPiA+ID4gIAljb25zdCBzdHJ1Y3QgcGNpX2VwY19ldmVudF9vcHMgKmV2 ZW50X29wczsKPiA+ID4gPiA+ICsJc3RydWN0IG1zaV9tc2cgKm1zZzsKPiA+ID4gPiA+ICsJdTE2 IG51bV9tc2dzOwo+ID4gPiA+IAo+ID4gPiA+IG51bV9kYgo+ID4gPiA+IAo+ID4gPiA+IFlvdSBh bHNvIG5lZWQgdG8gYWRkIGtkb2MgZm9yIGVhY2ggbmV3IG1lbWJlci4KPiA+ID4gPiAKPiA+ID4g PiAtIE1hbmkKPiA+ID4gPiAKPiA+ID4gPiAtLSAKPiA+ID4gPiDgrq7grqPgrr/grrXgrqPgr43g rqPgrqngr40g4K6a4K6k4K6+4K6a4K6/4K614K6u4K+NCj4gPiAKPiA+IC0tIAo+ID4g4K6u4K6j 4K6/4K614K6j4K+N4K6j4K6p4K+NIOCumuCupOCuvuCumuCuv+CuteCuruCvjQoKLS0gCuCuruCu o+Cuv+CuteCuo+CvjeCuo+CuqeCvjSDgrprgrqTgrr7grprgrr/grrXgrq7gr40KCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwg bWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8v bGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK