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 DFA18CDB465 for ; Thu, 19 Oct 2023 15:05:21 +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=CaTpWzcRbJGUvEKb9rTaXtdEIIXXuv2REWiYWs1Hrwc=; b=2lIJ8Gf9/R6rra ha1PksHMeLOAxbrn0IPNTXWPiVsni8vdUNGePfP+yg6Whl2hAwAlVTeUiuivqcSBhVRqzyCd/empM 4K39IGmHBRIx+r9zOPe9uQ+LY5U83KeVb4dmcuw/aQHmymojLelWOhdH9QCFokAlH+F96sniJpXAL wuJ/dPUTbK5IDvqJAayrKtIUd30BCwEpEIyOpuigpINynwibI/8PsefyWtQ7GgaBEHY7VloY0WSwT DL1/OcI7+TBy7TCPNIyxkUMRw2E9vh9UwH6d9vB7N2mFeEtqAjO7+OnIKvt15ezd2zvMRSpcRDWIU KdY+C7CgwmCT1Floz/8Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qtUZy-0009qD-1o; Thu, 19 Oct 2023 15:04:54 +0000 Received: from mail-oo1-xc2f.google.com ([2607:f8b0:4864:20::c2f]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qtUZv-0009pZ-1J for linux-arm-kernel@lists.infradead.org; Thu, 19 Oct 2023 15:04:53 +0000 Received: by mail-oo1-xc2f.google.com with SMTP id 006d021491bc7-57de6e502fcso4680051eaf.3 for ; Thu, 19 Oct 2023 08:04:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1697727889; x=1698332689; 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=IIXhQZU8Z4kn0kT0kPBF+vVNN+HKrEeu0tgZww4gEls=; b=zx7d7xN8qrVR6bUcl8QOVjEfhcOeCH7oAXBFILuFIB1xj+CYtWQaZvdigw/CxADU8N fTsxbMdPHD+XM1Vr8WRqVYrkAMabsT3RRlV4ubtIUDAlob7z/JQnOR1WqVoSFqP/xFD7 6Mm7BoxFTCaNuUnI8mNcsg84oBIi/LlQ0yQH51WP1p9lffIlICbX0689Yn4VBM7yEJsY 7RNXCcc7sdTV7+8L59EP1Pu5kNUc2qXe5D7yPshxtrglc4cmZjahxCftdi7Z4iQZ+WAw tLqvgwYY6anD3dGyXKQk3LT2ebGEV8L5f9Zux1FZkZPOKpuhXm9yiHvm/URMyaeEfmBF lQ+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697727889; x=1698332689; 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=IIXhQZU8Z4kn0kT0kPBF+vVNN+HKrEeu0tgZww4gEls=; b=FDw0C6Y2QfWMAyMrXMGsRLkH+PpaqQa75UNHWvykbOKhyFu49GdKO+gsr3+cMRtB7G /ZQc3dHactNgw1x6hs0vVajORFaHEtHmxOwJnqTfw8v8Awr0v6ItqrIv+lGIUTf3S1jF p/53pg7B8Ie3D4RYKVFCEpdPHASN3YDT1TY3OhouGUW3/bHu2dNGXoYr+MtPs3PHaWGp tKYKrpCfdQUjFqo9f8yn18FvQCZYjTr2sDFmRV/9FDXXlXL29xcS85IbHeY6fAGwlOCj NUZ+MeWDHBwklcLSIQtZ+sh8iuB3bbO39ONmX6yp/LmupNizgaq7HYIEzhwBC3nPH1+a 4nEA== X-Gm-Message-State: AOJu0YzT075Mj0vA/MxaBmAmLWE052PlkOLC2/sQVbjW52XyxMF8CUwH h6WPLIrDEZ9Gtlb5w8IX8cvD X-Google-Smtp-Source: AGHT+IHswvGO/BsCpanzXCw3l9Yzeb9XsuqM1gWPXOnqP5h+AFTTxtYIt8BiUG5mY9q2I/pa9JygBg== X-Received: by 2002:a05:6358:cb27:b0:142:fb84:92e6 with SMTP id gr39-20020a056358cb2700b00142fb8492e6mr2190669rwb.9.1697727888774; Thu, 19 Oct 2023 08:04:48 -0700 (PDT) Received: from thinkpad ([117.202.186.40]) by smtp.gmail.com with ESMTPSA id h18-20020aa79f52000000b00692b6fe1c7asm5384074pfr.179.2023.10.19.08.04.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Oct 2023 08:04:48 -0700 (PDT) Date: Thu, 19 Oct 2023 20:34:41 +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: <20231019150441.GA7254@thinkpad> References: <20230911220920.1817033-1-Frank.Li@nxp.com> <20230911220920.1817033-2-Frank.Li@nxp.com> <20231017183722.GB137137@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_080451_453129_B75C6137 X-CRM114-Status: GOOD ( 50.40 ) 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 T24gVHVlLCBPY3QgMTcsIDIwMjMgYXQgMDI6NTU6NTdQTSAtMDQwMCwgRnJhbmsgTGkgd3JvdGU6 Cj4gT24gV2VkLCBPY3QgMTgsIDIwMjMgYXQgMTI6MDc6MjJBTSArMDUzMCwgTWFuaXZhbm5hbiBT YWRoYXNpdmFtIHdyb3RlOgo+ID4gT24gTW9uLCBTZXAgMTEsIDIwMjMgYXQgMDY6MDk6MTZQTSAt MDQwMCwgRnJhbmsgTGkgd3JvdGU6Cj4gPiA+IFRoaXMgY29tbWl0IGludHJvZHVjZXMgYSBjb21t b24gbWV0aG9kIGZvciBzZW5kaW5nIG1lc3NhZ2VzIGZyb20gdGhlIFJvb3QKPiA+ID4gQ29tcGxl eCAoUkMpIHRvIHRoZSBFbmRwb2ludCAoRVApIGJ5IHV0aWxpemluZyB0aGUgcGxhdGZvcm0gTVNJ IGludGVycnVwdAo+ID4gPiBjb250cm9sbGVyLCBzdWNoIGFzIEFSTSBHSUMsIGFzIGFuIEVQIGRv b3JiZWxsLiBNYXBzIHRoZSBtZW1vcnkgYXNzaWduZWQKPiA+ID4gZm9yIHRoZSBCQVIgcmVnaW9u IGJ5IHRoZSBQQ0kgaG9zdCB0byB0aGUgbWVzc2FnZSBhZGRyZXNzIG9mIHRoZSBwbGF0Zm9ybQo+ ID4gPiBNU0kgaW50ZXJydXB0IGNvbnRyb2xsZXIgaW4gdGhlIFBDSSBFUC4gQXMgYSByZXN1bHQs IHdoZW4gdGhlIFBDSSBSQyB3cml0ZXMKPiA+IAo+ID4gIkRvb3JiZWxsIGZlYXR1cmUgaXMgaW1w bGVtZW50ZWQgYnkgbWFwcGluZyB0aGUgRVAncyBNU0kgaW50ZXJydXB0IGNvbnRyb2xsZXIKPiA+ IG1lc3NhZ2UgYWRkcmVzcyB0byBhIGRlZGljYXRlZCBCQVIgaW4gdGhlIEVQQyBjb3JlLiBJdCBp cyB0aGUgcmVzcG9uc2liaWxpdHkKPiA+IG9mIHRoZSBFUEYgZHJpdmVyIHRvIHBhc3MgdGhlIGFj dHVhbCBtZXNzYWdlIGRhdGEgdG8gYmUgd3JpdHRlbiBieSB0aGUgaG9zdCB0bwo+ID4gdGhlIGRv b3JiZWxsIEJBUiByZWdpb24gdGhyb3VnaCBpdHMgb3duIGxvZ2ljLiIKPiA+IAo+ID4gPiB0byB0 aGUgQkFSIHJlZ2lvbiwgaXQgdHJpZ2dlcnMgYW4gSVJRIGF0IHRoZSBFUC4gVGhpcyBpbXBsZW1l bnRhdGlvbiBzZXJ2ZXMKPiA+ID4gYXMgYSBjb21tb24gbWV0aG9kIGZvciBhbGwgZW5kcG9pbnQg ZnVuY3Rpb24gZHJpdmVycy4KPiA+ID4gCj4gPiA+IEhvd2V2ZXIsIGl0IGN1cnJlbnRseSBzdXBw b3J0cyBvbmx5IG9uZSBFUCBwaHlzaWNhbCBmdW5jdGlvbiBkdWUgdG8KPiA+ID4gbGltaXRhdGlv bnMgaW4gQVJNIE1TSS9JTVMgcmVhZGluZXNzLgo+ID4gPiAKPiA+ID4gU2lnbmVkLW9mZi1ieTog RnJhbmsgTGkgPEZyYW5rLkxpQG54cC5jb20+Cj4gPiA+IC0tLQo+ID4gPiAgZHJpdmVycy9wY2kv ZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmMgfCAxOTIgKysrKysrKysrKysrKysrKysrKysrKysrKysr Kwo+ID4gPiAgZHJpdmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwZi1jb3JlLmMgfCAgNDQgKysrKysr Kwo+ID4gPiAgaW5jbHVkZS9saW51eC9wY2ktZXBjLmggICAgICAgICAgICAgfCAgIDYgKwo+ID4g PiAgaW5jbHVkZS9saW51eC9wY2ktZXBmLmggICAgICAgICAgICAgfCAgIDcgKwo+ID4gPiAgNCBm aWxlcyBjaGFuZ2VkLCAyNDkgaW5zZXJ0aW9ucygrKQo+ID4gPiAKPiA+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jIGIvZHJpdmVycy9wY2kvZW5kcG9p bnQvcGNpLWVwYy1jb3JlLmMKPiA+ID4gaW5kZXggNWE0YThiMGJlNjI2Mi4uZDMzNmE5OWM2YTk0 ZiAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmMK PiA+ID4gKysrIGIvZHJpdmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmMKPiA+ID4gQEAg LTEwLDYgKzEwLDcgQEAKPiA+ID4gICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gPiA+ICAjaW5j bHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gPiA+ICAKPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9tc2ku aD4KPiA+ID4gICNpbmNsdWRlIDxsaW51eC9wY2ktZXBjLmg+Cj4gPiA+ICAjaW5jbHVkZSA8bGlu dXgvcGNpLWVwZi5oPgo+ID4gPiAgI2luY2x1ZGUgPGxpbnV4L3BjaS1lcC1jZnMuaD4KPiA+ID4g QEAgLTc4Myw2ICs3ODQsMTk3IEBAIHZvaWQgcGNpX2VwY19ibWVfbm90aWZ5KHN0cnVjdCBwY2lf ZXBjICplcGMpCj4gPiA+ICB9Cj4gPiA+ICBFWFBPUlRfU1lNQk9MX0dQTChwY2lfZXBjX2JtZV9u b3RpZnkpOwo+ID4gPiAgCj4gPiA+ICsvKioKPiA+ID4gKyAqIHBjaV9lcGNfYWxsb2NfZG9vcmJl bGwoKSAtIGFsbG9jIGFuIGFkZHJlc3Mgc3BhY2UgdG8gbGV0IFJDIHRyaWdnZXIgRVAgc2lkZSBJ UlEgYnkgd3JpdGUgZGF0YSB0bwo+ID4gPiArICoJCQkgICAgICB0aGUgc3BhY2UuCj4gPiAKPiA+ ICJBbGxvY2F0ZSBwbGF0Zm9ybSBzcGVjaWZpYyBkb29yYmVsbCBJUlFzIHRvIGJlIHVzZWQgYnkg dGhlIGhvc3QgdG8gdHJpZ2dlcgo+ID4gZG9vcmJlbGxzIG9uIEVQLiIKPiA+IAo+ID4gPiArICoK PiA+ID4gKyAqIEBlcGM6IHRoZSBFUEMgZGV2aWNlIHRoYXQgbmVlZCBkb29yYmVsbCBhZGRyZXNz IGFuZCBkYXRhIGZyb20gUkMuCj4gPiAKPiA+IEVQQyBkZXZpY2UgZm9yIHdoaWNoIHRoZSBkb29y YmVsbCBuZWVkcyB0byBiZSBhbGxvY2F0ZWQKPiA+IAo+ID4gPiArICogQGZ1bmNfbm86IHRoZSBw aHlzaWNhbCBlbmRwb2ludCBmdW5jdGlvbiBudW1iZXIgaW4gdGhlIEVQQyBkZXZpY2UuCj4gPiA+ ICsgKiBAdmZ1bmNfbm86IHRoZSB2aXJ0dWFsIGVuZHBvaW50IGZ1bmN0aW9uIG51bWJlciBpbiB0 aGUgcGh5c2ljYWwgZnVuY3Rpb24uCj4gPiA+ICsgKiBAbnVtX21zZ3M6IHRoZSB0b3RhbCBudW1i ZXIgb2YgZG9vcmJlbGwgbWVzc2FnZXMKPiA+IAo+ID4gcy9udW1fbXNncy9udW1fZGIKPiA+IAo+ ID4gPiArICoKPiA+ID4gKyAqIFJldHVybjogMCBzdWNjZXNzLCBvdGhlciBpcyBmYWlsdXJlCj4g PiA+ICsgKi8KPiA+ID4gK2ludCBwY2lfZXBjX2FsbG9jX2Rvb3JiZWxsKHN0cnVjdCBwY2lfZXBj ICplcGMsIHU4IGZ1bmNfbm8sIHU4IHZmdW5jX25vLCBpbnQgbnVtX21zZ3MpCj4gPiA+ICt7Cj4g PiA+ICsJaW50IHJldDsKPiA+ID4gKwo+ID4gPiArCWlmIChJU19FUlJfT1JfTlVMTChlcGMpIHx8 IGZ1bmNfbm8gPj0gZXBjLT5tYXhfZnVuY3Rpb25zKQo+ID4gPiArCQlyZXR1cm4gLUVJTlZBTDsK PiA+ID4gKwo+ID4gPiArCWlmICh2ZnVuY19ubyA+IDAgJiYgKCFlcGMtPm1heF92ZnMgfHwgdmZ1 bmNfbm8gPiBlcGMtPm1heF92ZnNbZnVuY19ub10pKQo+ID4gPiArCQlyZXR1cm4gLUVJTlZBTDsK PiA+ID4gKwo+ID4gPiArCWlmICghZXBjLT5vcHMtPmFsbG9jX2Rvb3JiZWxsKQo+ID4gPiArCQly ZXR1cm4gMDsKPiA+IAo+ID4gWW91IG1lbnRpb25lZCAwIGlzIGEgc3VjY2Vzcy4gU28gaWYgdGhl cmUgaXMgbm8gY2FsbGJhY2ssIHlvdSB3YW50IHRvIHJldHVybgo+ID4gc3VjY2Vzcz8KPiA+IAo+ ID4gPiArCj4gPiA+ICsJbXV0ZXhfbG9jaygmZXBjLT5sb2NrKTsKPiA+ID4gKwlyZXQgPSBlcGMt Pm9wcy0+YWxsb2NfZG9vcmJlbGwoZXBjLCBmdW5jX25vLCB2ZnVuY19ubywgbnVtX21zZ3MpOwo+ ID4gCj4gPiBXaHkgY2FuJ3QgeW91IGp1c3QgY2FsbCB0aGUgZ2VuZXJpYyBmdW5jdGlvbiBoZXJl IGFuZCBpbiBvdGhlciBwbGFjZXMgaW5zdGVhZCBvZgo+ID4gaW1wbGVtZW50aW5nIGNhbGxiYWNr cz8gSSBkbyBub3Qgc2VlIGEgbmVjZXNzaXR5IGZvciBFUEMgc3BlY2lmaWMgY2FsbGJhY2tzLiBJ Zgo+ID4gdGhlcmUgaXMgb25lLCBwbGVhc2Ugc3BlY2lmeS4KPiAKPiAxLiBSZWZlciB2MSB5b3Vy IGNvbW1lbnRzLgo+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2lteC8yMDIzMDkwNjE0NTIyNy5H QzU5MzBAdGhpbmtwYWQvCgpJIGRvIG5vdCBmaW5kIHdoZXJlIEkgc3VnZ2VzdGVkIHRoZSBjYWxs YmFjayBhcHByb2FjaC4KCj4gMi4gTWF5YmUgc29tZSBlcCBjb250cm9sbGVyIGhhdmUgYnVpbHQt aW4gZG9vcmJlbGwgc3VwcG9ydC4gV3JpdGUgdG8gc29tZQo+IGFkZHJlc3MgdG8gdHJpZ2dlciBk b29yYmVsbCBpcnEuCj4gCgpXZSB3aWxsIGhhbmRsZSBpdCB3aGVuZXZlciBzdWNoIEVQIGNvbnRy b2xsZXJzIGFycml2ZS4gVW50aWwgdGhlbiwgbGV0J3Mga2VlcCBpdApzaW1wbGUuCgotIE1hbmkK Cj4gRnJhbmsKPiAKPiA+IAo+ID4gPiArCW11dGV4X3VubG9jaygmZXBjLT5sb2NrKTsKPiA+ID4g Kwo+ID4gPiArCXJldHVybiByZXQ7Cj4gPiA+ICt9Cj4gPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChw Y2lfZXBjX2FsbG9jX2Rvb3JiZWxsKTsKPiA+ID4gKwo+ID4gPiArLyoqCj4gPiA+ICsgKiBwY2lf ZXBjX2ZyZWVfZG9vcmJlbGwoKSAtIGZyZWUgcmVzb3VyY2UgYWxsb2NhdGVkIGJ5IHBjaV9lcGNf YWxsb2NfZG9vcmJlbGwoKQo+ID4gPiArICoKPiA+ID4gKyAqIEBlcGM6IHRoZSBFUEMgZGV2aWNl IHRoYXQgbmVlZCBkb29yYmVsbCBhZGRyZXNzIGFuZCBkYXRhIGZyb20gUkMuCj4gPiAKPiA+IFNh bWUgYXMgYWJvdmUuCj4gPiAKPiA+ID4gKyAqIEBmdW5jX25vOiB0aGUgcGh5c2ljYWwgZW5kcG9p bnQgZnVuY3Rpb24gbnVtYmVyIGluIHRoZSBFUEMgZGV2aWNlLgo+ID4gPiArICogQHZmdW5jX25v OiB0aGUgdmlydHVhbCBlbmRwb2ludCBmdW5jdGlvbiBudW1iZXIgaW4gdGhlIHBoeXNpY2FsIGZ1 bmN0aW9uLgo+ID4gPiArICoKPiA+ID4gKyAqIFJldHVybjogMCBzdWNjZXNzLCBvdGhlciBpcyBm YWlsdXJlCj4gPiA+ICsgKi8KPiA+ID4gK3ZvaWQgcGNpX2VwY19mcmVlX2Rvb3JiZWxsKHN0cnVj dCBwY2lfZXBjICplcGMsIHU4IGZ1bmNfbm8sIHU4IHZmdW5jX25vKQo+ID4gPiArewo+ID4gPiAr CWlmIChJU19FUlJfT1JfTlVMTChlcGMpIHx8IGZ1bmNfbm8gPj0gZXBjLT5tYXhfZnVuY3Rpb25z KQo+ID4gPiArCQlyZXR1cm47Cj4gPiA+ICsKPiA+ID4gKwlpZiAodmZ1bmNfbm8gPiAwICYmICgh ZXBjLT5tYXhfdmZzIHx8IHZmdW5jX25vID4gZXBjLT5tYXhfdmZzW2Z1bmNfbm9dKSkKPiA+ID4g KwkJcmV0dXJuOwo+ID4gPiArCj4gPiA+ICsJaWYgKCFlcGMtPm9wcy0+ZnJlZV9kb29yYmVsbCkK PiA+ID4gKwkJcmV0dXJuOwo+ID4gPiArCj4gPiA+ICsJbXV0ZXhfbG9jaygmZXBjLT5sb2NrKTsK PiA+ID4gKwllcGMtPm9wcy0+ZnJlZV9kb29yYmVsbChlcGMsIGZ1bmNfbm8sIHZmdW5jX25vKTsK PiA+IAo+ID4gU2FtZSBhcyBzdWdnZXN0ZWQgYWJvdmUuCj4gPiAKPiA+ID4gKwltdXRleF91bmxv Y2soJmVwYy0+bG9jayk7Cj4gPiA+ICt9Cj4gPiA+ICtFWFBPUlRfU1lNQk9MX0dQTChwY2lfZXBj X2ZyZWVfZG9vcmJlbGwpOwo+ID4gPiArCj4gPiA+ICtzdGF0aWMgaXJxcmV0dXJuX3QgcGNpX2Vw Zl9nZW5lcmljX2Rvb3JiZWxsX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGF0YSkKPiA+ID4gK3sK PiA+ID4gKwlzdHJ1Y3QgcGNpX2VwZiAqZXBmID0gZGF0YTsKPiA+ID4gKwo+ID4gPiArCWlmIChl cGYtPmV2ZW50X29wcyAmJiBlcGYtPmV2ZW50X29wcy0+ZG9vcmJlbGwpCj4gPiA+ICsJCWVwZi0+ ZXZlbnRfb3BzLT5kb29yYmVsbChlcGYsIGlycSAtIGVwZi0+dmlycV9iYXNlKTsKPiA+IAo+ID4g U2FtZSBhcyBzdWdnZXN0ZWQgYWJvdmUuCj4gPiAKPiA+ID4gKwo+ID4gPiArCXJldHVybiBJUlFf SEFORExFRDsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIHZvaWQgcGNpX2VwY19nZW5l cmljX3dyaXRlX21zaV9tc2coc3RydWN0IG1zaV9kZXNjICpkZXNjLCBzdHJ1Y3QgbXNpX21zZyAq bXNnKQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBwY2lfZXBjICplcGMgPSBOVUxMOwo+ID4gPiAr CXN0cnVjdCBjbGFzc19kZXZfaXRlciBpdGVyOwo+ID4gPiArCXN0cnVjdCBwY2lfZXBmICplcGY7 Cj4gPiA+ICsJc3RydWN0IGRldmljZSAqZGV2Owo+ID4gPiArCj4gPiA+ICsJY2xhc3NfZGV2X2l0 ZXJfaW5pdCgmaXRlciwgcGNpX2VwY19jbGFzcywgTlVMTCwgTlVMTCk7Cj4gPiA+ICsJd2hpbGUg KChkZXYgPSBjbGFzc19kZXZfaXRlcl9uZXh0KCZpdGVyKSkpIHsKPiA+ID4gKwkJaWYgKGRldi0+ cGFyZW50ICE9IGRlc2MtPmRldikKPiA+ID4gKwkJCWNvbnRpbnVlOwo+ID4gPiArCj4gPiA+ICsJ CWVwYyA9IHRvX3BjaV9lcGMoZGV2KTsKPiA+ID4gKwo+ID4gPiArCQljbGFzc19kZXZfaXRlcl9l eGl0KCZpdGVyKTsKPiA+ID4gKwkJYnJlYWs7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJaWYg KCFlcGMpCj4gPiA+ICsJCXJldHVybjsKPiA+ID4gKwo+ID4gPiArCS8qIE9ubHkgc3VwcG9ydCBv bmUgRVBGIGZvciBkb29yYmVsbCAqLwo+ID4gPiArCWVwZiA9IGxpc3RfZmlyc3RfZW50cnlfb3Jf bnVsbCgmZXBjLT5wY2lfZXBmLCBzdHJ1Y3QgcGNpX2VwZiwgbGlzdCk7Cj4gPiA+ICsKPiA+IAo+ ID4gTm8gbmVlZCBvZiB0aGlzIG5ld2xpbmUKPiA+IAo+ID4gPiArCWlmICghZXBmKQo+ID4gPiAr CQlyZXR1cm47Cj4gPiA+ICsKPiA+ID4gKwlpZiAoZXBmLT5tc2cgJiYgZGVzYy0+bXNpX2luZGV4 IDwgZXBmLT5udW1fbXNncykKPiA+ID4gKwkJZXBmLT5tc2dbZGVzYy0+bXNpX2luZGV4XSA9ICpt c2c7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gKwo+ID4gCj4gPiBSZW1vdmUgZXh0cmEgbmV3bGlu ZQo+ID4gCj4gPiA+ICsvKioKPiA+ID4gKyAqIHBjaV9lcGNfZ2VuZXJpY19hbGxvY19kb29yYmVs bCgpIC0gQ29tbW9uIGhlbHAgZnVuY3Rpb24uIEFsbG9jYXRlIGFkZHJlc3Mgc3BhY2UgZnJvbSBN U0kKPiA+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxl cgo+ID4gPiArICoKPiA+ID4gKyAqIEBlcGM6IHRoZSBFUEMgZGV2aWNlIHRoYXQgbmVlZCBkb29y YmVsbCBhZGRyZXNzIGFuZCBkYXRhIGZyb20gUkMuCj4gPiA+ICsgKiBAZnVuY19ubzogdGhlIHBo eXNpY2FsIGVuZHBvaW50IGZ1bmN0aW9uIG51bWJlciBpbiB0aGUgRVBDIGRldmljZS4KPiA+ID4g KyAqIEB2ZnVuY19ubzogdGhlIHZpcnR1YWwgZW5kcG9pbnQgZnVuY3Rpb24gbnVtYmVyIGluIHRo ZSBwaHlzaWNhbCBmdW5jdGlvbi4KPiA+ID4gKyAqIEBudW1fbXNnczogdGhlIHRvdGFsIG51bWJl ciBvZiBkb29yYmVsbCBtZXNzYWdlcwo+ID4gPiArICoKPiA+IAo+ID4gU2FtZSBjb21tZW50IGFz IGZvciBwY2lfZXBjX2FsbG9jX2Rvb3JiZWxsKCkKPiA+IAo+ID4gPiArICogUmVtYXJrOiB1c2Ug dGhpcyBmdW5jdGlvbiBvbmx5IGlmIEVQQyBkcml2ZXIganVzdCByZWdpc3RlciBvbmUgRVBDIGRl dmljZS4KPiA+ID4gKyAqCj4gPiA+ICsgKiBSZXR1cm46IDAgc3VjY2Vzcywgb3RoZXIgaXMgZmFp bHVyZQo+ID4gPiArICovCj4gPiA+ICtpbnQgcGNpX2VwY19nZW5lcmljX2FsbG9jX2Rvb3JiZWxs KHN0cnVjdCBwY2lfZXBjICplcGMsIHU4IGZ1bmNfbm8sIHU4IHZmdW5jX25vLCBpbnQgbnVtX21z Z3MpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IHBjaV9lcGYgKmVwZjsKPiA+ID4gKwlzdHJ1Y3Qg ZGV2aWNlICpkZXY7Cj4gPiA+ICsJaW50IHZpcnEsIGxhc3Q7Cj4gPiA+ICsJaW50IHJldDsKPiA+ ID4gKwlpbnQgaTsKPiA+ID4gKwo+ID4gPiArCWlmIChJU19FUlJfT1JfTlVMTChlcGMpKQo+ID4g PiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4gKwo+ID4gPiArCS8qIEN1cnJlbnRseSBvbmx5IHN1 cHBvcnQgb25lIGZ1bmMgYW5kIG9uZSB2ZnVuYyBmb3IgZG9vcmJlbGwgKi8KPiA+ID4gKwlpZiAo ZnVuY19ubyB8fCB2ZnVuY19ubykKPiA+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ICsKPiA+ ID4gKwllcGYgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJmVwYy0+cGNpX2VwZiwgc3RydWN0 IHBjaV9lcGYsIGxpc3QpOwo+ID4gPiArCWlmICghZXBmKQo+ID4gPiArCQlyZXR1cm4gLUVJTlZB TDsKPiA+ID4gKwo+ID4gPiArCWRldiA9IGVwYy0+ZGV2LnBhcmVudDsKPiA+ID4gKwlyZXQgPSBw bGF0Zm9ybV9tc2lfZG9tYWluX2FsbG9jX2lycXMoZGV2LCBudW1fbXNncywgcGNpX2VwY19nZW5l cmljX3dyaXRlX21zaV9tc2cpOwo+ID4gPiArCWlmIChyZXQpIHsKPiA+ID4gKwkJZGV2X2Vycihk ZXYsICJGYWlsZWQgdG8gYWxsb2NhdGUgTVNJXG4iKTsKPiA+ID4gKwkJcmV0dXJuIC1FTk9NRU07 Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJbGFzdCA9IC0xOwo+ID4gPiArCWZvciAoaSA9IDA7 IGkgPCBudW1fbXNnczsgaSsrKSB7Cj4gPiAKPiA+IFlvdSBzaG91bGQgaXRlcmF0ZSBvdmVyIG1z aV9kZXNjIGFzIGJlbG93Ogo+ID4gCj4gPiAgICAgICAgIG1zaV9sb2NrX2Rlc2NzKGRldik7Cj4g PiAgICAgICAgIG1zaV9mb3JfZWFjaF9kZXNjKGRlc2MsIGRldiwgTVNJX0RFU0NfQUxMKSB7Cj4g PiAJCS4uLgo+ID4gCX0KPiA+IAltc2lfdW5sb2NrX2Rlc2NzKGRldik7Cj4gPiAKPiA+ID4gKwkJ dmlycSA9IG1zaV9nZXRfdmlycShkZXYsIGkpOwo+ID4gPiArCQlpZiAoaSA9PSAwKQo+ID4gPiAr CQkJZXBmLT52aXJxX2Jhc2UgPSB2aXJxOwo+ID4gPiArCj4gPiA+ICsJCXJldCA9IHJlcXVlc3Rf aXJxKHZpcnEsIHBjaV9lcGZfZ2VuZXJpY19kb29yYmVsbF9oYW5kbGVyLCAwLAo+ID4gCj4gPiAJ cmVxdWVzdF9pcnEoZGVzYy0+aXJxLCAuLi4pCj4gPiAKPiA+ID4gKwkJCQkgIGthc3ByaW50ZihH RlBfS0VSTkVMLCAicGNpLWVwYy1kb29yYmVsbCVkIiwgaSksIGVwZik7Cj4gPiA+ICsKPiA+ID4g KwkJaWYgKHJldCkgewo+ID4gPiArCQkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gcmVxdWVzdCBk b29yYmVsbFxuIik7Cj4gPiA+ICsJCQlnb3RvIGVycl9mcmVlX2lycTsKPiA+ID4gKwkJfQo+ID4g PiArCQlsYXN0ID0gaTsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4g Kwo+ID4gPiArZXJyX2ZyZWVfaXJxOgo+ID4gPiArCWZvciAoaSA9IDA7IGkgPCBsYXN0OyBpKysp Cj4gPiA+ICsJCWtmcmVlKGZyZWVfaXJxKGVwZi0+dmlycV9iYXNlICsgaSwgZXBmKSk7Cj4gPiA+ ICsJcGxhdGZvcm1fbXNpX2RvbWFpbl9mcmVlX2lycXMoZGV2KTsKPiA+ID4gKwo+ID4gPiArCXJl dHVybiAtRUlOVkFMOwo+ID4gCj4gPiAJcmV0dXJuIHJldDsKPiA+IAo+ID4gPiArfQo+ID4gPiAr RVhQT1JUX1NZTUJPTF9HUEwocGNpX2VwY19nZW5lcmljX2FsbG9jX2Rvb3JiZWxsKTsKPiA+ID4g Kwo+ID4gCj4gPiBbLi4uXQo+ID4gCj4gPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3Bj aS1lcGYuaCBiL2luY2x1ZGUvbGludXgvcGNpLWVwZi5oCj4gPiA+IGluZGV4IDNmNDRiNmFlYzQ3 NzAuLjQ4NWMxNDZhNWVmZTIgMTAwNjQ0Cj4gPiA+IC0tLSBhL2luY2x1ZGUvbGludXgvcGNpLWVw Zi5oCj4gPiA+ICsrKyBiL2luY2x1ZGUvbGludXgvcGNpLWVwZi5oCj4gPiA+IEBAIC03OSw2ICs3 OSw3IEBAIHN0cnVjdCBwY2lfZXBjX2V2ZW50X29wcyB7Cj4gPiA+ICAJaW50ICgqbGlua191cCko c3RydWN0IHBjaV9lcGYgKmVwZik7Cj4gPiA+ICAJaW50ICgqbGlua19kb3duKShzdHJ1Y3QgcGNp X2VwZiAqZXBmKTsKPiA+ID4gIAlpbnQgKCpibWUpKHN0cnVjdCBwY2lfZXBmICplcGYpOwo+ID4g PiArCWludCAoKmRvb3JiZWxsKShzdHJ1Y3QgcGNpX2VwZiAqZXBmLCBpbnQgaW5kZXgpOwo+ID4g Cj4gPiBrZG9jIG1pc3NpbmcuCj4gPiAKPiA+ID4gIH07Cj4gPiA+ICAKPiA+ID4gIC8qKgo+ID4g PiBAQCAtMTgwLDYgKzE4MSw5IEBAIHN0cnVjdCBwY2lfZXBmIHsKPiA+ID4gIAl1bnNpZ25lZCBs b25nCQl2ZnVuY3Rpb25fbnVtX21hcDsKPiA+ID4gIAlzdHJ1Y3QgbGlzdF9oZWFkCXBjaV92ZXBm Owo+ID4gPiAgCWNvbnN0IHN0cnVjdCBwY2lfZXBjX2V2ZW50X29wcyAqZXZlbnRfb3BzOwo+ID4g PiArCXN0cnVjdCBtc2lfbXNnICptc2c7Cj4gPiA+ICsJdTE2IG51bV9tc2dzOwo+ID4gCj4gPiBu dW1fZGIKPiA+IAo+ID4gWW91IGFsc28gbmVlZCB0byBhZGQga2RvYyBmb3IgZWFjaCBuZXcgbWVt YmVyLgo+ID4gCj4gPiAtIE1hbmkKPiA+IAo+ID4gLS0gCj4gPiDgrq7grqPgrr/grrXgrqPgr43g rqPgrqngr40g4K6a4K6k4K6+4K6a4K6/4K614K6u4K+NCgotLSAK4K6u4K6j4K6/4K614K6j4K+N 4K6j4K6p4K+NIOCumuCupOCuvuCumuCuv+CuteCuruCvjQoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QK bGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRl YWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=