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 6742BCDB483 for ; Tue, 17 Oct 2023 18:38:03 +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=QTlxG3Zyb+Lj+/KUKuTK3eb7nFB0iDvKFsKuJ9h88Tg=; b=v7aywOl3sNuGlA WRpdDycmMyfn7rxBzznruNVxmxTIQDAWk4UuShlAHqiDR9wkop2XebLe31GEQfAZln0HDUh78v7Ab 3CJd+UfjTqdVHu+IHSYJBWR0kcVvJpUyqXnVEm9RCZEAr7QnEEb+ymgrLnTTrgGpJpaUIxqiYyu3d n0Yr1FP25wcJygCKfNhTEO3+7j/wXRefdGigldwMhHd1s9RFmGX5L4n1XxYR0aAyZytOpcTtt81h2 zCznq+eiI6aYurcXKYVWJ95CD83G0/2lcTMQWq4maX6Z8N+s1oKe2hDe67FDy/W+/WQDRWRSnfdxe 55mgwpj5o9Yi+WNcOcaQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qsowh-00CzM7-1w; Tue, 17 Oct 2023 18:37:35 +0000 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qsowf-00CzLk-0s for linux-arm-kernel@lists.infradead.org; Tue, 17 Oct 2023 18:37:35 +0000 Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-5ad5178d1bfso3121899a12.2 for ; Tue, 17 Oct 2023 11:37:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1697567850; x=1698172650; 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=fDIMPqihTJidR00sawm2Nr6O1yAKRnZhnAyaqVDW0po=; b=aAMUAe+PNZ3/3Foj7Tk3vuyj1qwMo2WmAeCEPDzrg2I+j6Bx9BFSe7+7sAo77aU70L +ubwrNbERYpBUg2jAZgV3yeiUGiQ4I6fRS4aKcioLVJyrmKiruBK09cIahsOUpCc96Ze ybgqTE63wdDPwvfvJhS5M1B5ZIXWau/t6I34QLvAf/iior8ME9fY9uKWCXfGipycG7MH uSupId1a6nGd2FrZdvd425BXOcanEe0TMqzx8v7SKo0DjS0JntCPc7eirRgd3O8BJjKt oy80l3adj7TdSWGZdMfgFYDLuhwos7AecjSI3Z15EGuqLudTM6xJ6qtfcNzQ31xpuEgi HdJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697567850; x=1698172650; 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=fDIMPqihTJidR00sawm2Nr6O1yAKRnZhnAyaqVDW0po=; b=rMcBHdDi1avsqtQc42BalO41VRE+zFeSQlmseiXbbjmEaK2AcwjRBSS0VxN9/TLipL U9mASruqJzOV6H791D2Lf6pKtxVj4osxLwF/LkGV467LVhdjZdEZylNvKfkEH0bRyM59 B5KFIJi3nQXs+PQUuVl31kstuLWZVUsAKdwa3Iii0fceLQhDxHkjGG5e7b0Quk3CClqj lbCQAUKjOw8IG0bYuuW9oINwk8graKyp7X885UA41xTwhc5cnl3VOMjBB2lMxFMGuR7k U6uZcRbu9EJRYYbhvcOkf74LKQ174UQUjwiL29wsJ+vEGkqk/3xr6ozlA4zltGVR+hgZ E6xw== X-Gm-Message-State: AOJu0Yz/WzmmnEnfKDBx09G36THsS1BUruTA5yUdAPl3nryGD+BRm3RE OQNZYv7URjfnMe9XeCgPhxTC X-Google-Smtp-Source: AGHT+IGZc+AgmoxdQbyFgHaq0HpMKMawgaGe+zQRacb1kYCqnv0STvUbAj7qgu4yUBj9NSvPcrfVDw== X-Received: by 2002:a05:6a20:1608:b0:14d:d9f8:83f8 with SMTP id l8-20020a056a20160800b0014dd9f883f8mr3663772pzj.1.1697567849901; Tue, 17 Oct 2023 11:37:29 -0700 (PDT) Received: from thinkpad ([117.202.186.25]) by smtp.gmail.com with ESMTPSA id i2-20020a63e442000000b00577d53c50f7sm211772pgk.75.2023.10.17.11.37.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Oct 2023 11:37:29 -0700 (PDT) Date: Wed, 18 Oct 2023 00:07:22 +0530 From: Manivannan Sadhasivam To: Frank Li Cc: 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: <20231017183722.GB137137@thinkpad> References: <20230911220920.1817033-1-Frank.Li@nxp.com> <20230911220920.1817033-2-Frank.Li@nxp.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20230911220920.1817033-2-Frank.Li@nxp.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231017_113733_340848_7ADB820C X-CRM114-Status: GOOD ( 39.90 ) 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 T24gTW9uLCBTZXAgMTEsIDIwMjMgYXQgMDY6MDk6MTZQTSAtMDQwMCwgRnJhbmsgTGkgd3JvdGU6 Cj4gVGhpcyBjb21taXQgaW50cm9kdWNlcyBhIGNvbW1vbiBtZXRob2QgZm9yIHNlbmRpbmcgbWVz c2FnZXMgZnJvbSB0aGUgUm9vdAo+IENvbXBsZXggKFJDKSB0byB0aGUgRW5kcG9pbnQgKEVQKSBi eSB1dGlsaXppbmcgdGhlIHBsYXRmb3JtIE1TSSBpbnRlcnJ1cHQKPiBjb250cm9sbGVyLCBzdWNo IGFzIEFSTSBHSUMsIGFzIGFuIEVQIGRvb3JiZWxsLiBNYXBzIHRoZSBtZW1vcnkgYXNzaWduZWQK PiBmb3IgdGhlIEJBUiByZWdpb24gYnkgdGhlIFBDSSBob3N0IHRvIHRoZSBtZXNzYWdlIGFkZHJl c3Mgb2YgdGhlIHBsYXRmb3JtCj4gTVNJIGludGVycnVwdCBjb250cm9sbGVyIGluIHRoZSBQQ0kg RVAuIEFzIGEgcmVzdWx0LCB3aGVuIHRoZSBQQ0kgUkMgd3JpdGVzCgoiRG9vcmJlbGwgZmVhdHVy ZSBpcyBpbXBsZW1lbnRlZCBieSBtYXBwaW5nIHRoZSBFUCdzIE1TSSBpbnRlcnJ1cHQgY29udHJv bGxlcgptZXNzYWdlIGFkZHJlc3MgdG8gYSBkZWRpY2F0ZWQgQkFSIGluIHRoZSBFUEMgY29yZS4g SXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5Cm9mIHRoZSBFUEYgZHJpdmVyIHRvIHBhc3MgdGhlIGFj dHVhbCBtZXNzYWdlIGRhdGEgdG8gYmUgd3JpdHRlbiBieSB0aGUgaG9zdCB0bwp0aGUgZG9vcmJl bGwgQkFSIHJlZ2lvbiB0aHJvdWdoIGl0cyBvd24gbG9naWMuIgoKPiB0byB0aGUgQkFSIHJlZ2lv biwgaXQgdHJpZ2dlcnMgYW4gSVJRIGF0IHRoZSBFUC4gVGhpcyBpbXBsZW1lbnRhdGlvbiBzZXJ2 ZXMKPiBhcyBhIGNvbW1vbiBtZXRob2QgZm9yIGFsbCBlbmRwb2ludCBmdW5jdGlvbiBkcml2ZXJz Lgo+IAo+IEhvd2V2ZXIsIGl0IGN1cnJlbnRseSBzdXBwb3J0cyBvbmx5IG9uZSBFUCBwaHlzaWNh bCBmdW5jdGlvbiBkdWUgdG8KPiBsaW1pdGF0aW9ucyBpbiBBUk0gTVNJL0lNUyByZWFkaW5lc3Mu Cj4gCj4gU2lnbmVkLW9mZi1ieTogRnJhbmsgTGkgPEZyYW5rLkxpQG54cC5jb20+Cj4gLS0tCj4g IGRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jIHwgMTkyICsrKysrKysrKysrKysr KysrKysrKysrKysrKysKPiAgZHJpdmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwZi1jb3JlLmMgfCAg NDQgKysrKysrKwo+ICBpbmNsdWRlL2xpbnV4L3BjaS1lcGMuaCAgICAgICAgICAgICB8ICAgNiAr Cj4gIGluY2x1ZGUvbGludXgvcGNpLWVwZi5oICAgICAgICAgICAgIHwgICA3ICsKPiAgNCBmaWxl cyBjaGFuZ2VkLCAyNDkgaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Bj aS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYyBiL2RyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMt Y29yZS5jCj4gaW5kZXggNWE0YThiMGJlNjI2Mi4uZDMzNmE5OWM2YTk0ZiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYwo+ICsrKyBiL2RyaXZlcnMvcGNp L2VuZHBvaW50L3BjaS1lcGMtY29yZS5jCj4gQEAgLTEwLDYgKzEwLDcgQEAKPiAgI2luY2x1ZGUg PGxpbnV4L3NsYWIuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ICAKPiArI2luY2x1 ZGUgPGxpbnV4L21zaS5oPgo+ICAjaW5jbHVkZSA8bGludXgvcGNpLWVwYy5oPgo+ICAjaW5jbHVk ZSA8bGludXgvcGNpLWVwZi5oPgo+ICAjaW5jbHVkZSA8bGludXgvcGNpLWVwLWNmcy5oPgo+IEBA IC03ODMsNiArNzg0LDE5NyBAQCB2b2lkIHBjaV9lcGNfYm1lX25vdGlmeShzdHJ1Y3QgcGNpX2Vw YyAqZXBjKQo+ICB9Cj4gIEVYUE9SVF9TWU1CT0xfR1BMKHBjaV9lcGNfYm1lX25vdGlmeSk7Cj4g IAo+ICsvKioKPiArICogcGNpX2VwY19hbGxvY19kb29yYmVsbCgpIC0gYWxsb2MgYW4gYWRkcmVz cyBzcGFjZSB0byBsZXQgUkMgdHJpZ2dlciBFUCBzaWRlIElSUSBieSB3cml0ZSBkYXRhIHRvCj4g KyAqCQkJICAgICAgdGhlIHNwYWNlLgoKIkFsbG9jYXRlIHBsYXRmb3JtIHNwZWNpZmljIGRvb3Ji ZWxsIElSUXMgdG8gYmUgdXNlZCBieSB0aGUgaG9zdCB0byB0cmlnZ2VyCmRvb3JiZWxscyBvbiBF UC4iCgo+ICsgKgo+ICsgKiBAZXBjOiB0aGUgRVBDIGRldmljZSB0aGF0IG5lZWQgZG9vcmJlbGwg YWRkcmVzcyBhbmQgZGF0YSBmcm9tIFJDLgoKRVBDIGRldmljZSBmb3Igd2hpY2ggdGhlIGRvb3Ji ZWxsIG5lZWRzIHRvIGJlIGFsbG9jYXRlZAoKPiArICogQGZ1bmNfbm86IHRoZSBwaHlzaWNhbCBl bmRwb2ludCBmdW5jdGlvbiBudW1iZXIgaW4gdGhlIEVQQyBkZXZpY2UuCj4gKyAqIEB2ZnVuY19u bzogdGhlIHZpcnR1YWwgZW5kcG9pbnQgZnVuY3Rpb24gbnVtYmVyIGluIHRoZSBwaHlzaWNhbCBm dW5jdGlvbi4KPiArICogQG51bV9tc2dzOiB0aGUgdG90YWwgbnVtYmVyIG9mIGRvb3JiZWxsIG1l c3NhZ2VzCgpzL251bV9tc2dzL251bV9kYgoKPiArICoKPiArICogUmV0dXJuOiAwIHN1Y2Nlc3Ms IG90aGVyIGlzIGZhaWx1cmUKPiArICovCj4gK2ludCBwY2lfZXBjX2FsbG9jX2Rvb3JiZWxsKHN0 cnVjdCBwY2lfZXBjICplcGMsIHU4IGZ1bmNfbm8sIHU4IHZmdW5jX25vLCBpbnQgbnVtX21zZ3Mp Cj4gK3sKPiArCWludCByZXQ7Cj4gKwo+ICsJaWYgKElTX0VSUl9PUl9OVUxMKGVwYykgfHwgZnVu Y19ubyA+PSBlcGMtPm1heF9mdW5jdGlvbnMpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJ aWYgKHZmdW5jX25vID4gMCAmJiAoIWVwYy0+bWF4X3ZmcyB8fCB2ZnVuY19ubyA+IGVwYy0+bWF4 X3Zmc1tmdW5jX25vXSkpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJaWYgKCFlcGMtPm9w cy0+YWxsb2NfZG9vcmJlbGwpCj4gKwkJcmV0dXJuIDA7CgpZb3UgbWVudGlvbmVkIDAgaXMgYSBz dWNjZXNzLiBTbyBpZiB0aGVyZSBpcyBubyBjYWxsYmFjaywgeW91IHdhbnQgdG8gcmV0dXJuCnN1 Y2Nlc3M/Cgo+ICsKPiArCW11dGV4X2xvY2soJmVwYy0+bG9jayk7Cj4gKwlyZXQgPSBlcGMtPm9w cy0+YWxsb2NfZG9vcmJlbGwoZXBjLCBmdW5jX25vLCB2ZnVuY19ubywgbnVtX21zZ3MpOwoKV2h5 IGNhbid0IHlvdSBqdXN0IGNhbGwgdGhlIGdlbmVyaWMgZnVuY3Rpb24gaGVyZSBhbmQgaW4gb3Ro ZXIgcGxhY2VzIGluc3RlYWQgb2YKaW1wbGVtZW50aW5nIGNhbGxiYWNrcz8gSSBkbyBub3Qgc2Vl IGEgbmVjZXNzaXR5IGZvciBFUEMgc3BlY2lmaWMgY2FsbGJhY2tzLiBJZgp0aGVyZSBpcyBvbmUs IHBsZWFzZSBzcGVjaWZ5LgoKPiArCW11dGV4X3VubG9jaygmZXBjLT5sb2NrKTsKPiArCj4gKwly ZXR1cm4gcmV0Owo+ICt9Cj4gK0VYUE9SVF9TWU1CT0xfR1BMKHBjaV9lcGNfYWxsb2NfZG9vcmJl bGwpOwo+ICsKPiArLyoqCj4gKyAqIHBjaV9lcGNfZnJlZV9kb29yYmVsbCgpIC0gZnJlZSByZXNv dXJjZSBhbGxvY2F0ZWQgYnkgcGNpX2VwY19hbGxvY19kb29yYmVsbCgpCj4gKyAqCj4gKyAqIEBl cGM6IHRoZSBFUEMgZGV2aWNlIHRoYXQgbmVlZCBkb29yYmVsbCBhZGRyZXNzIGFuZCBkYXRhIGZy b20gUkMuCgpTYW1lIGFzIGFib3ZlLgoKPiArICogQGZ1bmNfbm86IHRoZSBwaHlzaWNhbCBlbmRw b2ludCBmdW5jdGlvbiBudW1iZXIgaW4gdGhlIEVQQyBkZXZpY2UuCj4gKyAqIEB2ZnVuY19ubzog dGhlIHZpcnR1YWwgZW5kcG9pbnQgZnVuY3Rpb24gbnVtYmVyIGluIHRoZSBwaHlzaWNhbCBmdW5j dGlvbi4KPiArICoKPiArICogUmV0dXJuOiAwIHN1Y2Nlc3MsIG90aGVyIGlzIGZhaWx1cmUKPiAr ICovCj4gK3ZvaWQgcGNpX2VwY19mcmVlX2Rvb3JiZWxsKHN0cnVjdCBwY2lfZXBjICplcGMsIHU4 IGZ1bmNfbm8sIHU4IHZmdW5jX25vKQo+ICt7Cj4gKwlpZiAoSVNfRVJSX09SX05VTEwoZXBjKSB8 fCBmdW5jX25vID49IGVwYy0+bWF4X2Z1bmN0aW9ucykKPiArCQlyZXR1cm47Cj4gKwo+ICsJaWYg KHZmdW5jX25vID4gMCAmJiAoIWVwYy0+bWF4X3ZmcyB8fCB2ZnVuY19ubyA+IGVwYy0+bWF4X3Zm c1tmdW5jX25vXSkpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWlmICghZXBjLT5vcHMtPmZyZWVfZG9v cmJlbGwpCj4gKwkJcmV0dXJuOwo+ICsKPiArCW11dGV4X2xvY2soJmVwYy0+bG9jayk7Cj4gKwll cGMtPm9wcy0+ZnJlZV9kb29yYmVsbChlcGMsIGZ1bmNfbm8sIHZmdW5jX25vKTsKClNhbWUgYXMg c3VnZ2VzdGVkIGFib3ZlLgoKPiArCW11dGV4X3VubG9jaygmZXBjLT5sb2NrKTsKPiArfQo+ICtF WFBPUlRfU1lNQk9MX0dQTChwY2lfZXBjX2ZyZWVfZG9vcmJlbGwpOwo+ICsKPiArc3RhdGljIGly cXJldHVybl90IHBjaV9lcGZfZ2VuZXJpY19kb29yYmVsbF9oYW5kbGVyKGludCBpcnEsIHZvaWQg KmRhdGEpCj4gK3sKPiArCXN0cnVjdCBwY2lfZXBmICplcGYgPSBkYXRhOwo+ICsKPiArCWlmIChl cGYtPmV2ZW50X29wcyAmJiBlcGYtPmV2ZW50X29wcy0+ZG9vcmJlbGwpCj4gKwkJZXBmLT5ldmVu dF9vcHMtPmRvb3JiZWxsKGVwZiwgaXJxIC0gZXBmLT52aXJxX2Jhc2UpOwoKU2FtZSBhcyBzdWdn ZXN0ZWQgYWJvdmUuCgo+ICsKPiArCXJldHVybiBJUlFfSEFORExFRDsKPiArfQo+ICsKPiArc3Rh dGljIHZvaWQgcGNpX2VwY19nZW5lcmljX3dyaXRlX21zaV9tc2coc3RydWN0IG1zaV9kZXNjICpk ZXNjLCBzdHJ1Y3QgbXNpX21zZyAqbXNnKQo+ICt7Cj4gKwlzdHJ1Y3QgcGNpX2VwYyAqZXBjID0g TlVMTDsKPiArCXN0cnVjdCBjbGFzc19kZXZfaXRlciBpdGVyOwo+ICsJc3RydWN0IHBjaV9lcGYg KmVwZjsKPiArCXN0cnVjdCBkZXZpY2UgKmRldjsKPiArCj4gKwljbGFzc19kZXZfaXRlcl9pbml0 KCZpdGVyLCBwY2lfZXBjX2NsYXNzLCBOVUxMLCBOVUxMKTsKPiArCXdoaWxlICgoZGV2ID0gY2xh c3NfZGV2X2l0ZXJfbmV4dCgmaXRlcikpKSB7Cj4gKwkJaWYgKGRldi0+cGFyZW50ICE9IGRlc2Mt PmRldikKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCWVwYyA9IHRvX3BjaV9lcGMoZGV2KTsKPiAr Cj4gKwkJY2xhc3NfZGV2X2l0ZXJfZXhpdCgmaXRlcik7Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gKwo+ ICsJaWYgKCFlcGMpCj4gKwkJcmV0dXJuOwo+ICsKPiArCS8qIE9ubHkgc3VwcG9ydCBvbmUgRVBG IGZvciBkb29yYmVsbCAqLwo+ICsJZXBmID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKCZlcGMt PnBjaV9lcGYsIHN0cnVjdCBwY2lfZXBmLCBsaXN0KTsKPiArCgpObyBuZWVkIG9mIHRoaXMgbmV3 bGluZQoKPiArCWlmICghZXBmKQo+ICsJCXJldHVybjsKPiArCj4gKwlpZiAoZXBmLT5tc2cgJiYg ZGVzYy0+bXNpX2luZGV4IDwgZXBmLT5udW1fbXNncykKPiArCQllcGYtPm1zZ1tkZXNjLT5tc2lf aW5kZXhdID0gKm1zZzsKPiArfQo+ICsKPiArCgpSZW1vdmUgZXh0cmEgbmV3bGluZQoKPiArLyoq Cj4gKyAqIHBjaV9lcGNfZ2VuZXJpY19hbGxvY19kb29yYmVsbCgpIC0gQ29tbW9uIGhlbHAgZnVu Y3Rpb24uIEFsbG9jYXRlIGFkZHJlc3Mgc3BhY2UgZnJvbSBNU0kKPiArICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyCj4gKyAqCj4gKyAqIEBlcGM6IHRoZSBF UEMgZGV2aWNlIHRoYXQgbmVlZCBkb29yYmVsbCBhZGRyZXNzIGFuZCBkYXRhIGZyb20gUkMuCj4g KyAqIEBmdW5jX25vOiB0aGUgcGh5c2ljYWwgZW5kcG9pbnQgZnVuY3Rpb24gbnVtYmVyIGluIHRo ZSBFUEMgZGV2aWNlLgo+ICsgKiBAdmZ1bmNfbm86IHRoZSB2aXJ0dWFsIGVuZHBvaW50IGZ1bmN0 aW9uIG51bWJlciBpbiB0aGUgcGh5c2ljYWwgZnVuY3Rpb24uCj4gKyAqIEBudW1fbXNnczogdGhl IHRvdGFsIG51bWJlciBvZiBkb29yYmVsbCBtZXNzYWdlcwo+ICsgKgoKU2FtZSBjb21tZW50IGFz IGZvciBwY2lfZXBjX2FsbG9jX2Rvb3JiZWxsKCkKCj4gKyAqIFJlbWFyazogdXNlIHRoaXMgZnVu Y3Rpb24gb25seSBpZiBFUEMgZHJpdmVyIGp1c3QgcmVnaXN0ZXIgb25lIEVQQyBkZXZpY2UuCj4g KyAqCj4gKyAqIFJldHVybjogMCBzdWNjZXNzLCBvdGhlciBpcyBmYWlsdXJlCj4gKyAqLwo+ICtp bnQgcGNpX2VwY19nZW5lcmljX2FsbG9jX2Rvb3JiZWxsKHN0cnVjdCBwY2lfZXBjICplcGMsIHU4 IGZ1bmNfbm8sIHU4IHZmdW5jX25vLCBpbnQgbnVtX21zZ3MpCj4gK3sKPiArCXN0cnVjdCBwY2lf ZXBmICplcGY7Cj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4gKwlpbnQgdmlycSwgbGFzdDsKPiAr CWludCByZXQ7Cj4gKwlpbnQgaTsKPiArCj4gKwlpZiAoSVNfRVJSX09SX05VTEwoZXBjKSkKPiAr CQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwkvKiBDdXJyZW50bHkgb25seSBzdXBwb3J0IG9uZSBm dW5jIGFuZCBvbmUgdmZ1bmMgZm9yIGRvb3JiZWxsICovCj4gKwlpZiAoZnVuY19ubyB8fCB2ZnVu Y19ubykKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwllcGYgPSBsaXN0X2ZpcnN0X2VudHJ5 X29yX251bGwoJmVwYy0+cGNpX2VwZiwgc3RydWN0IHBjaV9lcGYsIGxpc3QpOwo+ICsJaWYgKCFl cGYpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJZGV2ID0gZXBjLT5kZXYucGFyZW50Owo+ ICsJcmV0ID0gcGxhdGZvcm1fbXNpX2RvbWFpbl9hbGxvY19pcnFzKGRldiwgbnVtX21zZ3MsIHBj aV9lcGNfZ2VuZXJpY193cml0ZV9tc2lfbXNnKTsKPiArCWlmIChyZXQpIHsKPiArCQlkZXZfZXJy KGRldiwgIkZhaWxlZCB0byBhbGxvY2F0ZSBNU0lcbiIpOwo+ICsJCXJldHVybiAtRU5PTUVNOwo+ ICsJfQo+ICsKPiArCWxhc3QgPSAtMTsKPiArCWZvciAoaSA9IDA7IGkgPCBudW1fbXNnczsgaSsr KSB7CgpZb3Ugc2hvdWxkIGl0ZXJhdGUgb3ZlciBtc2lfZGVzYyBhcyBiZWxvdzoKCiAgICAgICAg bXNpX2xvY2tfZGVzY3MoZGV2KTsKICAgICAgICBtc2lfZm9yX2VhY2hfZGVzYyhkZXNjLCBkZXYs IE1TSV9ERVNDX0FMTCkgewoJCS4uLgoJfQoJbXNpX3VubG9ja19kZXNjcyhkZXYpOwoKPiArCQl2 aXJxID0gbXNpX2dldF92aXJxKGRldiwgaSk7Cj4gKwkJaWYgKGkgPT0gMCkKPiArCQkJZXBmLT52 aXJxX2Jhc2UgPSB2aXJxOwo+ICsKPiArCQlyZXQgPSByZXF1ZXN0X2lycSh2aXJxLCBwY2lfZXBm X2dlbmVyaWNfZG9vcmJlbGxfaGFuZGxlciwgMCwKCglyZXF1ZXN0X2lycShkZXNjLT5pcnEsIC4u LikKCj4gKwkJCQkgIGthc3ByaW50ZihHRlBfS0VSTkVMLCAicGNpLWVwYy1kb29yYmVsbCVkIiwg aSksIGVwZik7Cj4gKwo+ICsJCWlmIChyZXQpIHsKPiArCQkJZGV2X2VycihkZXYsICJGYWlsZWQg dG8gcmVxdWVzdCBkb29yYmVsbFxuIik7Cj4gKwkJCWdvdG8gZXJyX2ZyZWVfaXJxOwo+ICsJCX0K PiArCQlsYXN0ID0gaTsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArCj4gK2Vycl9mcmVlX2ly cToKPiArCWZvciAoaSA9IDA7IGkgPCBsYXN0OyBpKyspCj4gKwkJa2ZyZWUoZnJlZV9pcnEoZXBm LT52aXJxX2Jhc2UgKyBpLCBlcGYpKTsKPiArCXBsYXRmb3JtX21zaV9kb21haW5fZnJlZV9pcnFz KGRldik7Cj4gKwo+ICsJcmV0dXJuIC1FSU5WQUw7CgoJcmV0dXJuIHJldDsKCj4gK30KPiArRVhQ T1JUX1NZTUJPTF9HUEwocGNpX2VwY19nZW5lcmljX2FsbG9jX2Rvb3JiZWxsKTsKPiArCgpbLi4u XQoKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wY2ktZXBmLmggYi9pbmNsdWRlL2xpbnV4 L3BjaS1lcGYuaAo+IGluZGV4IDNmNDRiNmFlYzQ3NzAuLjQ4NWMxNDZhNWVmZTIgMTAwNjQ0Cj4g LS0tIGEvaW5jbHVkZS9saW51eC9wY2ktZXBmLmgKPiArKysgYi9pbmNsdWRlL2xpbnV4L3BjaS1l cGYuaAo+IEBAIC03OSw2ICs3OSw3IEBAIHN0cnVjdCBwY2lfZXBjX2V2ZW50X29wcyB7Cj4gIAlp bnQgKCpsaW5rX3VwKShzdHJ1Y3QgcGNpX2VwZiAqZXBmKTsKPiAgCWludCAoKmxpbmtfZG93biko c3RydWN0IHBjaV9lcGYgKmVwZik7Cj4gIAlpbnQgKCpibWUpKHN0cnVjdCBwY2lfZXBmICplcGYp Owo+ICsJaW50ICgqZG9vcmJlbGwpKHN0cnVjdCBwY2lfZXBmICplcGYsIGludCBpbmRleCk7Cgpr ZG9jIG1pc3NpbmcuCgo+ICB9Owo+ICAKPiAgLyoqCj4gQEAgLTE4MCw2ICsxODEsOSBAQCBzdHJ1 Y3QgcGNpX2VwZiB7Cj4gIAl1bnNpZ25lZCBsb25nCQl2ZnVuY3Rpb25fbnVtX21hcDsKPiAgCXN0 cnVjdCBsaXN0X2hlYWQJcGNpX3ZlcGY7Cj4gIAljb25zdCBzdHJ1Y3QgcGNpX2VwY19ldmVudF9v cHMgKmV2ZW50X29wczsKPiArCXN0cnVjdCBtc2lfbXNnICptc2c7Cj4gKwl1MTYgbnVtX21zZ3M7 CgpudW1fZGIKCllvdSBhbHNvIG5lZWQgdG8gYWRkIGtkb2MgZm9yIGVhY2ggbmV3IG1lbWJlci4K Ci0gTWFuaQoKLS0gCuCuruCuo+Cuv+CuteCuo+CvjeCuo+CuqeCvjSDgrprgrqTgrr7grprgrr/g rrXgrq7gr40KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5m cmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xp bnV4LWFybS1rZXJuZWwK