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 54AF0C54EE9 for ; Tue, 13 Sep 2022 17:25:53 +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=mcRG4DkaG0+cazQpjOgtx1Q4RnbM9hfsWQbKUSiLPzk=; b=4daS9uPddclJQW DrbnbcO7pufs4THlLHfVars9vWBPHvilkHr82aHFAu53T4DSqMWeXk7ABa8Gg1vCc/UA5WhziXO5G qFnmBE0GCzPyzgar4V+RTd1bRI3aA5cQNq/BnRXfvToHusWkBM71R4DJAKKcKkGsqmUUoPZf0joIo fmNWeyf13oQ3I0jTboxc8Aet5ARh69yyKVtRasMWFVSSfQoLlsVFve97M2zDbSIB8gKAWaP+ohwC3 pxd33PZ0/G7zPbyf4m0rZX1ZZLaISWWPYHl9wTQgqP73Dq54TGgVsGmRGx7IrRwCy1y5g4FTyS1dH SNd9BJo8b6ZSbNbBR+/g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oY9e9-00DxUY-3j; Tue, 13 Sep 2022 17:24:29 +0000 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oY9e5-00DxNQ-5F for linux-arm-kernel@lists.infradead.org; Tue, 13 Sep 2022 17:24:27 +0000 Received: by mail-pj1-x1030.google.com with SMTP id fv3so12035945pjb.0 for ; Tue, 13 Sep 2022 10:24:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=user-agent:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:from:to:cc:subject:date; bh=f3cAxQlpr9MhS7L+K6LHuUXyazd8km8sEFTCZsuiIvQ=; b=fnJqn0M2B0RToDQUjjL1EmukHybpmMuK8fRRr2q+TZnOO9velXjw9L0tsaFiChol1x HFmaPuPVRqD3bA5j1y45QlOKmv0E9zL29sDq5zlxQptQqAr95+yNmRNBkfgHTKN18Oq9 7VhYbBLoA+wgAA17xKfUP3OSQLW7Ww3VA7Bb+z207uDw8xCyLGgxovAXHA76HLCgKZIM rnXirn6N7I9db4jbQ8RTN3dlz0EAKr6D8warBfQynfE43xeS5nzpHXoErneWK+1FoXFD +YWEel/Rr+cNmBeEWbpeGdNUjWBSMj9xtonM3h4UHPJUgU/YAFHEEGoazJ4a5XRWP7Np RVLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=user-agent: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; bh=f3cAxQlpr9MhS7L+K6LHuUXyazd8km8sEFTCZsuiIvQ=; b=2Bh5+UOIu21EnRqfBlMGMYBf30CPVQcEA1N72eDHfgb+MmvIY4ZQPi6IU7CpOjVWH5 0i/ZYA8eImxoRAQFMfauXni9ghHg37VQgyb/4X/toEBOIrshlriT4N+3u+JG61xQG7WG 70ibV2ZRR8AUajRBLSLIpYl0E8XPu9lNUlzOc89UNtq6MTUCH2xCtlVt1SghotPzqLv1 3WG+TH7o+uGJs146/L7Lk62Ea6aJBQjqNCKKol9VqBG6rTdE3kHMX0FR++o6A486ejIF griRHF+jIrnRxHfK3HfFQCL7RBnQZKSfXZZ10iHSq4VSysyoqq8dwroCj8swB8ps/W4A 61eQ== X-Gm-Message-State: ACgBeo3vVBftnScDGAssPWUXU3U6CK+BvjZP9xPE+Micyi1l1RZuQtGc x95F7J76rWqeUB89iSzb9Ght X-Google-Smtp-Source: AA6agR6ukeHUFbmmO6edAqgXbgWT6JjNXjHE/gxuAJ+TuicNIIQoj2Qr1icVvhmbbqft7T+tAYtj/A== X-Received: by 2002:a17:902:d58a:b0:177:f86c:4456 with SMTP id k10-20020a170902d58a00b00177f86c4456mr25523705plh.171.1663089860501; Tue, 13 Sep 2022 10:24:20 -0700 (PDT) Received: from workstation ([117.202.184.122]) by smtp.gmail.com with ESMTPSA id 199-20020a6217d0000000b0053e3ed14419sm8169606pfx.48.2022.09.13.10.24.14 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 13 Sep 2022 10:24:19 -0700 (PDT) Date: Tue, 13 Sep 2022 22:54:11 +0530 From: Manivannan Sadhasivam 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, imx@lists.linux.dev Subject: Re: [PATCH v9 4/4] PCI: endpoint: Add vNTB MSI support Message-ID: <20220913172411.GI25849@workstation> References: <20220907034856.3101570-1-Frank.Li@nxp.com> <20220907034856.3101570-5-Frank.Li@nxp.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20220907034856.3101570-5-Frank.Li@nxp.com> User-Agent: Mutt/1.9.4 (2018-02-28) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220913_102425_275887_6AD93241 X-CRM114-Status: GOOD ( 37.55 ) 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 T24gVHVlLCBTZXAgMDYsIDIwMjIgYXQgMTA6NDg6NTZQTSAtMDUwMCwgRnJhbmsgTGkgd3JvdGU6 Cj4gICAgICAgICAgICAgICAgICAgICAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkCAgICAg ICAgICAgICAgICAgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAKPiAgICAg ICAgICAgICAgICAgICAgICAg4pSCICAgICAgIOKUgiAgICAgICAgICAgICAgICAgICDilIIgICAg ICAgICAg4pSCCj4gICAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUkCAgIOKUgiBQQ0kgICDilIIgICAgICAgICAgICAgICAgICAg4pSCIFBDSSBIb3N0IOKUggo+ ICAgICDilIIgTVNJICAgICAgICAg4pSC4peE4pSQIOKUgiBFUCAgICDilIIgICAgICAgICAgICAg ICAgICAg4pSCICAgICAgICAgIOKUggo+ICAgICDilIIgQ29udHJvbGxlciAg4pSCIOKUgiDilIIg ICAgICAg4pSCIDMuTVNJIFdyaXRlICAgICAgIOKUgiAgICAgICAgICDilIIKPiAgICAg4pSU4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSYIOKUlOKUgOKUvOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUpCAgICAgICAgICDilIIKPiAgICAgICDilrIgICAgICDilIIgICAg ICAgIOKUgiAgICAgICDilIIgICAgICAgICAgICAgICAgICAg4pSc4pSAQkFSX24gICAg4pSCCj4g ICAgICAg4pSCICAgICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS84pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pS84pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pa64pSCICAgICAgICAgIOKUggo+ICAgICAgIOKUgiAgICAgICAgICAgICAgIOKU giAgICAgICDilIIgMi5DYWxsIEJhY2sgICAgICAg4pSCICAgICAgICAgIOKUggo+ICAgICAgIOKU giAgICAgICAgICAgICAgIOKUgiAgICAgICDilIIgICB3cml0ZV9tc2lfbXNnKCkg4pSCICAgICAg ICAgIOKUggo+ICAgICAgIOKUgiAgICAgICAgICAgICAgIOKUgiAgICAgICDilIIgICAgICAgICAg ICAgICAgICAg4pSCICAgICAgICAgIOKUggo+ICAgICAgIOKUgiAgICAgICAgICAgICAgIOKUlOKU gOKUgOKUgOKUrOKUgOKUgOKUgOKUmCAgICAgICAgICAgICAgICAgICDilJTilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilJgKPiAgICAgICDilIIgICAgICAgICAgICAgICAgICAg4pSCCj4g ICAgICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSYCj4gICAgICAgMS5wbGF0Zm9ybV9tc2lfZG9tYWluX2FsbG9jX2lycXMoKQo+ IAo+IFRoZXJlIGlzIG5vIGRlZmluZWQgd2F5IG9mIHJhaXNpbmcgSVJRcyBieSBQQ0kgaG9zdCB0 byB0aGUgUENJIGVuZHBvaW50Lgo+IE9ubHkgZGVmaW5lIE1TSS9NU0ktWCB0byBsZXQgRVAgbm90 aWZpZWQgUkMgc3RhdHVzIGNoYW5nZS4KPiAKPiBUaGUgbWVtb3J5IGFzc2lnbmVkIGZvciBCQVIg cmVnaW9uIGJ5IHRoZSBQQ0kgaG9zdCBpcyBtYXBwZWQgdG8gdGhlCj4gbWVzc2FnZSBhZGRyZXNz IG9mIHBsYXRmb3JtIG1zaSBpbnRlcnJ1cHQgY29udHJvbGxlciBpbiBQQ0kgRW5kcG9pbnQuCj4g U3VjaCB0aGF0LCB3aGVuZXZlciB0aGUgUENJIGhvc3Qgd3JpdGVzIHRvIHRoZSBCQVIgcmVnaW9u LCBpdCB3aWxsCj4gdHJpZ2dlciBhbiBJUlEgaW4gdGhlIEVuZHBvaW50Lgo+IAo+IEJhc2ljIHdv cmtpbmcgZm9sbG93IGFzCj4gMS4gRVAgZnVuY3Rpb24gZHJpdmVyIGNhbGwgcGxhdGZvcm1fbXNp X2RvbWFpbl9hbGxvY19pcnFzKCkgYWxsb2MgYQo+IE1TSSBpcnEgZnJvbSBNU0kgY29udHJvbGxl ciB3aXRoIGNhbGwgYmFjayBmdW5jdGlvbiB3cml0ZV9tc2lfbXNnKCk7Cj4gMi4gd3JpdGVfbXNn X21zZyB3aWxsIGNvbmZpZyBCQVIgYW5kIG1hcCB0byBhZGRyZXNzIGRlZmluZWQgaW4gbXNpX21z ZzsKPiAzLiBIb3N0IHNpZGUgdHJpZ2dlciBhbiBJUlEgaW4gRW5kcG9pbnQgYnkgd3JpdGUgdG8g QkFSIHJlZ2lvbi4KPiAKPiBBZGQgTVNJIHN1cHBvcnQgZm9yIHBjaS1lcGYtdm50Yi4gUXVlcnkg aWYgc3lzdGVtIGhhcyBhbiBNU0kgY29udHJvbGxlci4KPiBTZXQgdXAgZG9vcmJlbGwgYWRkcmVz cyBhY2NvcmRpbmcgdG8gc3RydWN0IG1zaV9tc2cuCj4gCj4gU28gUENJIFJDIGNhbiB3cml0ZSB0 aGlzIGRvb3JiZWxsIGFkZHJlc3MgdG8gdHJpZ2dlciBFUCBzaWRlJ3MgSVJRLgo+IAo+IElmIG5v IE1TSSBjb250cm9sbGVyIGV4aXN0cywgZmFsbCBiYWNrIHRvIHNvZnR3YXJlIHBvbGxpbmcuCj4g Cj4gU2lnbmVkLW9mZi1ieTogRnJhbmsgTGkgPEZyYW5rLkxpQG54cC5jb20+Cj4gLS0tCj4gIGRy aXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYyB8IDE1NSArKysrKysr KysrKysrKystLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDEyOCBpbnNlcnRpb25zKCspLCAyNyBkZWxl dGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25z L3BjaS1lcGYtdm50Yi5jIGIvZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYt dm50Yi5jCj4gaW5kZXggMTQ2NmRkMTkwNDE3NS4uNDI2MjA1Yjk4MGEwOSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmMKPiArKysgYi9k cml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmMKPiBAQCAtNDQsNiAr NDQsNyBAQAo+ICAjaW5jbHVkZSA8bGludXgvcGNpLWVwYy5oPgo+ICAjaW5jbHVkZSA8bGludXgv cGNpLWVwZi5oPgo+ICAjaW5jbHVkZSA8bGludXgvbnRiLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9t c2kuaD4KPiAgCj4gIHN0YXRpYyBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqa3BjaW50Yl93b3Jr cXVldWU7Cj4gIAo+IEBAIC0xMzYsMTMgKzEzNywxNSBAQCBzdHJ1Y3QgZXBmX250YiB7Cj4gIAo+ ICAJc3RydWN0IGVwZl9udGJfY3RybCAqcmVnOwo+ICAKPiAtCXBoeXNfYWRkcl90IGVwZl9kYl9w aHk7Cj4gKwlwaHlzX2FkZHJfdCBlcGZfZGJfcGh5czsKClRoaXMgc2hvdWxkIGJlIHBhcnQgb2Yg YSBzZXBhcmF0ZSBwYXRjaC4KCj4gIAl2b2lkIF9faW9tZW0gKmVwZl9kYjsKPiAgCj4gIAlwaHlz X2FkZHJfdCB2cGNpX213X3BoeVtNQVhfTVddOwo+ICAJdm9pZCBfX2lvbWVtICp2cGNpX213X2Fk ZHJbTUFYX01XXTsKPiAgCj4gIAlzdHJ1Y3QgZGVsYXllZF93b3JrIGNtZF9oYW5kbGVyOwo+ICsK PiArCWludCBtc2lfdmlycWJhc2U7Cj4gIH07Cj4gIAo+ICAjZGVmaW5lIHRvX2VwZl9udGIoZXBm X2dyb3VwKSBjb250YWluZXJfb2YoKGVwZl9ncm91cCksIHN0cnVjdCBlcGZfbnRiLCBncm91cCkK PiBAQCAtMjUzLDEzICsyNTYsMTUgQEAgc3RhdGljIHZvaWQgZXBmX250Yl9jbWRfaGFuZGxlcihz dHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gIAo+ICAJbnRiID0gY29udGFpbmVyX29mKHdvcmss IHN0cnVjdCBlcGZfbnRiLCBjbWRfaGFuZGxlci53b3JrKTsKPiAgCj4gLQlmb3IgKGkgPSAxOyBp IDwgbnRiLT5kYl9jb3VudDsgaSsrKSB7Cj4gLQkJaWYgKHJlYWRsKG50Yi0+ZXBmX2RiICsgaSAq IDQpKSB7Cj4gLQkJCWlmIChyZWFkbChudGItPmVwZl9kYiArIGkgKiA0KSkKPiAtCQkJCW50Yi0+ ZGIgfD0gMSA8PCAoaSAtIDEpOwo+ICsJaWYgKCFudGItPmVwZl9kYl9waHlzKSB7Cj4gKwkJZm9y IChpID0gMTsgaSA8IG50Yi0+ZGJfY291bnQ7IGkrKykgewo+ICsJCQlpZiAocmVhZGwobnRiLT5l cGZfZGIgKyBpICogNCkpIHsKPiArCQkJCWlmIChyZWFkbChudGItPmVwZl9kYiArIGkgKiA0KSkK CldoeSBhcmUgeW91IHJlYWRpbmcgdHdpY2U/IEFuZCB3aHkgY2Fubm90IHlvdSB1c2UgX3JlbGF4 ZWQoKSB2YXJpYW50CmhlcmUgYW5kIGJlbG93PwoKPiArCQkJCQludGItPmRiIHw9IDEgPDwgKGkg LSAxKTsKPiAgCj4gLQkJCW50Yl9kYl9ldmVudCgmbnRiLT5udGIsIGkpOwo+IC0JCQl3cml0ZWwo MCwgbnRiLT5lcGZfZGIgKyBpICogNCk7Cj4gKwkJCQludGJfZGJfZXZlbnQoJm50Yi0+bnRiLCBp KTsKPiArCQkJCXdyaXRlbCgwLCBudGItPmVwZl9kYiArIGkgKiA0KTsKPiArCQkJfQo+ICAJCX0K PiAgCX0KPiAgCj4gQEAgLTQ1NCwxMSArNDU5LDkgQEAgc3RhdGljIGludCBlcGZfbnRiX2NvbmZp Z19zcGFkX2Jhcl9hbGxvYyhzdHJ1Y3QgZXBmX250YiAqbnRiKQo+ICAJY3RybC0+bnVtX213cyA9 IG50Yi0+bnVtX213czsKPiAgCW50Yi0+c3BhZF9zaXplID0gc3BhZF9zaXplOwo+ICAKPiAtCWN0 cmwtPmRiX2VudHJ5X3NpemUgPSA0Owo+IC0KPiAgCWZvciAoaSA9IDA7IGkgPCBudGItPmRiX2Nv dW50OyBpKyspIHsKPiAgCQludGItPnJlZy0+ZGJfZGF0YVtpXSA9IDEgKyBpOwo+IC0JCW50Yi0+ cmVnLT5kYl9vZmZzZXRbaV0gPSAwOwo+ICsJCW50Yi0+cmVnLT5kYl9vZmZzZXRbaV0gPSA0ICog aTsKCjQgc2hvdWxkIGJlIGRlZmluZWQgYXMgYSBtYWNybyBvZiB3aGF0IGl0IHJlcHJlc2VudHMu Cgo+ICAJfQo+ICAKPiAgCXJldHVybiAwOwo+IEBAIC01MDksNiArNTEyLDI4IEBAIHN0YXRpYyBp bnQgZXBmX250Yl9jb25maWd1cmVfaW50ZXJydXB0KHN0cnVjdCBlcGZfbnRiICpudGIpCj4gIAly ZXR1cm4gMDsKPiAgfQo+ICAKPiArc3RhdGljIGludCBlcGZfbnRiX2RiX3NpemUoc3RydWN0IGVw Zl9udGIgKm50YikKPiArewo+ICsJY29uc3Qgc3RydWN0IHBjaV9lcGNfZmVhdHVyZXMgKmVwY19m ZWF0dXJlczsKPiArCXNpemVfdCBzaXplID0gNCAqIG50Yi0+ZGJfY291bnQ7CgpIZXJlIGFsc28u Cgo+ICsJdTMyIGFsaWduOwo+ICsKPiArCWVwY19mZWF0dXJlcyA9IHBjaV9lcGNfZ2V0X2ZlYXR1 cmVzKG50Yi0+ZXBmLT5lcGMsCj4gKwkJCQkJICAgIG50Yi0+ZXBmLT5mdW5jX25vLAo+ICsJCQkJ CSAgICBudGItPmVwZi0+dmZ1bmNfbm8pOwo+ICsJYWxpZ24gPSBlcGNfZmVhdHVyZXMtPmFsaWdu Owo+ICsKPiArCWlmIChzaXplIDwgMTI4KQo+ICsJCXNpemUgPSAxMjg7Cj4gKwo+ICsJaWYgKGFs aWduKQo+ICsJCXNpemUgPSBBTElHTihzaXplLCBhbGlnbik7Cj4gKwllbHNlCj4gKwkJc2l6ZSA9 IHJvdW5kdXBfcG93X29mX3R3byhzaXplKTsKPiArCj4gKwlyZXR1cm4gc2l6ZTsKPiArfQo+ICsK PiAgLyoqCj4gICAqIGVwZl9udGJfZGJfYmFyX2luaXQoKSAtIENvbmZpZ3VyZSBEb29yYmVsbCB3 aW5kb3cgQkFScwo+ICAgKiBAbnRiOiBOVEIgZGV2aWNlIHRoYXQgZmFjaWxpdGF0ZXMgY29tbXVu aWNhdGlvbiBiZXR3ZWVuIEhPU1QgYW5kIHZIT1NUCj4gQEAgLTUyMiwzMyArNTQ3LDMyIEBAIHN0 YXRpYyBpbnQgZXBmX250Yl9kYl9iYXJfaW5pdChzdHJ1Y3QgZXBmX250YiAqbnRiKQo+ICAJc3Ry dWN0IHBjaV9lcGZfYmFyICplcGZfYmFyOwo+ICAJdm9pZCBfX2lvbWVtICptd19hZGRyOwo+ICAJ ZW51bSBwY2lfYmFybm8gYmFybm87Cj4gLQlzaXplX3Qgc2l6ZSA9IDQgKiBudGItPmRiX2NvdW50 Owo+ICsJc2l6ZV90IHNpemU7Cj4gIAo+ICAJZXBjX2ZlYXR1cmVzID0gcGNpX2VwY19nZXRfZmVh dHVyZXMobnRiLT5lcGYtPmVwYywKPiAgCQkJCQkgICAgbnRiLT5lcGYtPmZ1bmNfbm8sCj4gIAkJ CQkJICAgIG50Yi0+ZXBmLT52ZnVuY19ubyk7Cj4gIAlhbGlnbiA9IGVwY19mZWF0dXJlcy0+YWxp Z247Cj4gLQo+IC0JaWYgKHNpemUgPCAxMjgpCj4gLQkJc2l6ZSA9IDEyODsKPiAtCj4gLQlpZiAo YWxpZ24pCj4gLQkJc2l6ZSA9IEFMSUdOKHNpemUsIGFsaWduKTsKPiAtCWVsc2UKPiAtCQlzaXpl ID0gcm91bmR1cF9wb3dfb2ZfdHdvKHNpemUpOwo+ICsJc2l6ZSA9IGVwZl9udGJfZGJfc2l6ZShu dGIpOwo+ICAKPiAgCWJhcm5vID0gbnRiLT5lcGZfbnRiX2JhcltCQVJfREJdOwo+ICsJZXBmX2Jh ciA9ICZudGItPmVwZi0+YmFyW2Jhcm5vXTsKPiAgCj4gLQltd19hZGRyID0gcGNpX2VwZl9hbGxv Y19zcGFjZShudGItPmVwZiwgc2l6ZSwgYmFybm8sIGFsaWduLCAwKTsKPiAtCWlmICghbXdfYWRk cikgewo+IC0JCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGFsbG9jYXRlIE9CIGFkZHJlc3NcbiIp Owo+IC0JCXJldHVybiAtRU5PTUVNOwo+ICsJaWYgKG50Yi0+ZXBmX2RiX3BoeXMpIHsKPiArCQlt d19hZGRyID0gTlVMTDsKPiArCQllcGZfYmFyLT5waHlzX2FkZHIgPSBudGItPmVwZl9kYl9waHlz Owo+ICsJCWVwZl9iYXItPmJhcm5vID0gYmFybm87Cj4gKwkJZXBmX2Jhci0+c2l6ZSA9IHNpemU7 Cj4gKwl9IGVsc2Ugewo+ICsJCW13X2FkZHIgPSBwY2lfZXBmX2FsbG9jX3NwYWNlKG50Yi0+ZXBm LCBzaXplLCBiYXJubywgYWxpZ24sIDApOwo+ICsJCWlmICghbXdfYWRkcikgewo+ICsJCQlkZXZf ZXJyKGRldiwgIkZhaWxlZCB0byBhbGxvY2F0ZSBkb29yIGJlbGwgYWRkcmVzc1xuIik7Cgpkb29y YmVsbAoKPiArCQkJcmV0dXJuIC1FTk9NRU07Cj4gKwkJfQo+ICAJfQo+ICAKPiAgCW50Yi0+ZXBm X2RiID0gbXdfYWRkcjsKPiAgCj4gLQllcGZfYmFyID0gJm50Yi0+ZXBmLT5iYXJbYmFybm9dOwo+ IC0KPiAgCXJldCA9IHBjaV9lcGNfc2V0X2JhcihudGItPmVwZi0+ZXBjLCBudGItPmVwZi0+ZnVu Y19ubywgbnRiLT5lcGYtPnZmdW5jX25vLCBlcGZfYmFyKTsKPiAgCWlmIChyZXQpIHsKPiAgCQlk ZXZfZXJyKGRldiwgIkRvb3JiZWxsIEJBUiBzZXQgZmFpbGVkXG4iKTsKPiBAQCAtNzA0LDYgKzcy OCw4MiBAQCBzdGF0aWMgaW50IGVwZl9udGJfaW5pdF9lcGNfYmFyKHN0cnVjdCBlcGZfbnRiICpu dGIpCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiArI2lmZGVmIENPTkZJR19HRU5FUklDX01TSV9J UlFfRE9NQUlOCj4gK3N0YXRpYyB2b2lkIGVwZl9udGJfd3JpdGVfbXNpX21zZyhzdHJ1Y3QgbXNp X2Rlc2MgKmRlc2MsIHN0cnVjdCBtc2lfbXNnICptc2cpCj4gK3sKPiArCXN0cnVjdCBlcGZfbnRi ICpudGIgPSBkZXZfZ2V0X2RydmRhdGEoZGVzYy0+ZGV2KTsKPiArCXN0cnVjdCBlcGZfbnRiX2N0 cmwgKnJlZyA9IG50Yi0+cmVnOwo+ICsJaW50IHNpemUgPSBlcGZfbnRiX2RiX3NpemUobnRiKTsK PiArCXU2NCBhZGRyOwo+ICsKPiArCWFkZHIgPSBtc2ctPmFkZHJlc3NfaGk7Cj4gKwlhZGRyIDw8 PSAzMjsKPiArCWFkZHIgfD0gbXNnLT5hZGRyZXNzX2xvOwo+ICsKPiArCXJlZy0+ZGJfZGF0YVtk ZXNjLT5tc2lfaW5kZXhdID0gbXNnLT5kYXRhOwo+ICsKPiArCWlmIChkZXNjLT5tc2lfaW5kZXgg PT0gMCkKCmlmICghZGVzYy0+bXNpX2luZGV4KQoKPiArCQludGItPmVwZl9kYl9waHlzID0gcm91 bmRfZG93bihhZGRyLCBzaXplKTsKPiArCj4gKwlyZWctPmRiX29mZnNldFtkZXNjLT5tc2lfaW5k ZXhdID0gYWRkciAtIG50Yi0+ZXBmX2RiX3BoeXM7Cj4gK30KPiArI2VuZGlmCj4gKwo+ICtzdGF0 aWMgaXJxcmV0dXJuX3QgZXBmX250Yl9pbnRlcnJ1cHRfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpk YXRhKQo+ICt7Cj4gKwlzdHJ1Y3QgZXBmX250YiAqbnRiID0gZGF0YTsKPiArCWludCBpbmRleDsK PiArCj4gKwlpbmRleCA9IGlycSAtIG50Yi0+bXNpX3ZpcnFiYXNlOwo+ICsJbnRiLT5kYiB8PSAx IDw8IChpbmRleCAtIDEpOwo+ICsJbnRiX2RiX2V2ZW50KCZudGItPm50YiwgaW5kZXgpOwo+ICsK PiArCXJldHVybiBJUlFfSEFORExFRDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZXBmX250Yl9l cGNfbXNpX2luaXQoc3RydWN0IGVwZl9udGIgKm50YikKCldoeSBjYW5ub3QgeW91IGd1YXJkIHRo aXMgd2hvbGUgZnVuY3Rpb24gd2l0aCBDT05GSUdfR0VORVJJQ19NU0lfSVJRX0RPTUFJTj8KCj4g K3sKPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZudGItPmVwZi0+ZGV2Owo+ICsJc3RydWN0IGly cV9kb21haW4gKmRvbWFpbjsKPiArCWludCB2aXJxOwo+ICsJaW50IHJldDsKPiArCWludCBpOwo+ ICsKPiArCWRvbWFpbiA9IGRldl9nZXRfbXNpX2RvbWFpbihudGItPmVwZi0+ZXBjLT5kZXYucGFy ZW50KTsKPiArCWlmICghZG9tYWluKQo+ICsJCXJldHVybjsKPiArCj4gKwlkZXZfc2V0X21zaV9k b21haW4oZGV2LCBkb21haW4pOwo+ICsKPiArI2lmZGVmIENPTkZJR19HRU5FUklDX01TSV9JUlFf RE9NQUlOCj4gKwlpZiAocGxhdGZvcm1fbXNpX2RvbWFpbl9hbGxvY19pcnFzKCZudGItPmVwZi0+ ZGV2LAo+ICsJCW50Yi0+ZGJfY291bnQsCj4gKwkJZXBmX250Yl93cml0ZV9tc2lfbXNnKSkgewo+ ICsJCWRldl9pbmZvKGRldiwgIkNhbid0IGFsbG9jYXRlIE1TSSwgZmFsbCBiYWNrIHRvIHBvbGwg bW9kZVxuIik7CgpmYWxsaW5nIGJhY2sgdG8gcG9sbGluZyBtb2RlCgpTaG91bGQgdGhpcyBiZSBk ZXZfZXJyPwoKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKyNlbHNlCj4gKwlyZXR1cm47Cj4gKyNlbmRp Zgo+ICsJZGV2X2luZm8oZGV2LCAidm50YiB1c2UgTVNJIGFzIGRvb3JiZWxsXG4iKTsKClVzaW5n IE1TSSBhcyBhIGRvb3JiZWxsCgo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBudGItPmRiX2NvdW50 OyBpKyspIHsKPiArCQl2aXJxID0gbXNpX2dldF92aXJxKGRldiwgaSk7Cj4gKwkJcmV0ID0gZGV2 bV9yZXF1ZXN0X2lycShkZXYsIHZpcnEsCj4gKwkJCSAgICAgICBlcGZfbnRiX2ludGVycnVwdF9o YW5kbGVyLCAwLAo+ICsJCQkgICAgICAgInZudGIiLCBudGIpOwoKcy92bnRiL3BjaV9lcGZfdm50 YgoKPiArCj4gKwkJaWYgKHJldCkgewo+ICsJCQlkZXZfZXJyKGRldiwgImRldm1fcmVxdWVzdF9p cnEoKSBmYWlsdXJlLCBmYWxsIGJhY2sgdG8gcG9sbCBtb2RlXG4iKTsKCkZhaWxlZCB0byByZXF1 ZXN0IGRvb3JiZWxsIElSUSEgRmFsbGluZyBiYWNrIHRvIHBvbGxpbmcgbW9kZQoKPiArCQkJbnRi LT5lcGZfZGJfcGh5cyA9IDA7Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCj4gKwkJaWYgKCFpKQo+ ICsJCQludGItPm1zaV92aXJxYmFzZSA9IHZpcnE7CgpBIGNvbW1lbnQgaGVyZSB3b3VsZCBiZSBo ZWxwZnVsCgpUaGFua3MsCk1hbmkKCj4gKwl9Cj4gK30KPiArCj4gIC8qKgo+ICAgKiBlcGZfbnRi X2VwY19pbml0KCkgLSBJbml0aWFsaXplIE5UQiBpbnRlcmZhY2UKPiAgICogQG50YjogTlRCIGRl dmljZSB0aGF0IGZhY2lsaXRhdGVzIGNvbW11bmljYXRpb24gYmV0d2VlbiBIT1NUIGFuZCB2SE9T VDIKPiBAQCAtMTI5OSwxNCArMTM5OSwxNSBAQCBzdGF0aWMgaW50IGVwZl9udGJfYmluZChzdHJ1 Y3QgcGNpX2VwZiAqZXBmKQo+ICAJCWdvdG8gZXJyX2Jhcl9hbGxvYzsKPiAgCX0KPiAgCj4gKwll cGZfc2V0X2RydmRhdGEoZXBmLCBudGIpOwo+ICsJZXBmX250Yl9lcGNfbXNpX2luaXQobnRiKTsK PiArCj4gIAlyZXQgPSBlcGZfbnRiX2VwY19pbml0KG50Yik7Cj4gIAlpZiAocmV0KSB7Cj4gIAkJ ZGV2X2VycihkZXYsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBFUENcbiIpOwo+ICAJCWdvdG8gZXJy X2Jhcl9hbGxvYzsKPiAgCX0KPiAgCj4gLQllcGZfc2V0X2RydmRhdGEoZXBmLCBudGIpOwo+IC0K PiAgCXBjaV9zcGFjZVswXSA9IChudGItPnZudGJfcGlkIDw8IDE2KSB8IG50Yi0+dm50Yl92aWQ7 Cj4gIAlwY2lfdm50Yl90YWJsZVswXS52ZW5kb3IgPSBudGItPnZudGJfdmlkOwo+ICAJcGNpX3Zu dGJfdGFibGVbMF0uZGV2aWNlID0gbnRiLT52bnRiX3BpZDsKPiAtLSAKPiAyLjM1LjEKPiAKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1r ZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpo dHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJu ZWwK