From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ayan Halder Subject: Re: [RFC v3 AFBC 04/12] drm/arm/malidp: Set the AFBC register bits if the framebuffer has AFBC modifier Date: Fri, 14 Dec 2018 13:45:13 +0000 Message-ID: <20181214134512.GA19564@arm.com> References: <1543836703-8491-1-git-send-email-ayan.halder@arm.com> <1543836703-8491-5-git-send-email-ayan.halder@arm.com> <20181204165051.GL988@e110455-lin.cambridge.arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40050.outbound.protection.outlook.com [40.107.4.50]) by gabe.freedesktop.org (Postfix) with ESMTPS id ED04C6F4DD for ; Fri, 14 Dec 2018 13:45:16 +0000 (UTC) In-Reply-To: <20181204165051.GL988@e110455-lin.cambridge.arm.com> Content-Language: en-US Content-ID: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Liviu Dudau Cc: "arnd@arndb.de" , "corbet@lwn.net" , "airlied@linux.ie" , "gregkh@linuxfoundation.org" , "linux-doc@vger.kernel.org" , "nicolas.ferre@microchip.com" , "dri-devel@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" , "maxime.ripard@bootlin.com" , "malidp@foss.arm.com" , "mchehab+samsung@kernel.org" , "akpm@linux-foundation.org" , nd , "sean@poorly.run" , "davem@davemloft.net" List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBEZWMgMDQsIDIwMTggYXQgMDQ6NTA6NTFQTSArMDAwMCwgTGl2aXUgRHVkYXUgd3Jv dGU6CgpIaSBMaXZpdSwKClBsZWFzZSBsZXQgbWUga25vdyBpZiB5b3UgYWdyZWUgd2l0aCBteSBj b21tZW50cy4gVGhlbiBJIHdpbGwgc2VuZCBhCnY0IHBhdGNoIGZvciB0aGlzLgo+IE9uIE1vbiwg RGVjIDAzLCAyMDE4IGF0IDExOjMxOjU4QU0gKzAwMDAsIEF5YW4gSGFsZGVyIHdyb3RlOgo+ID4g QWRkZWQgdGhlIEFGQkMgZGVjb2RlciByZWdpc3RlcnMgZm9yIERQNTAwICwgRFA1NTAgYW5kIERQ NjUwLgo+ID4gVGhlc2UgcmVnaXN0ZXJzIGNvbnRyb2wgdGhlIHByb2Nlc3Npbmcgb2YgQUZCQyBi dWZmZXJzLiBJdCBjb250cm9scyB2YXJpb3VzCj4gPiBmZWF0dXJlcyBsaWtlIEFGQkMgZGVjb2Rl ciBlbmFibGUsIGxvc3NsZXNzIHRyYW5zZm9ybWF0aW9uIGFuZCBibG9jayBzcGxpdAo+ID4gYXMg d2VsbCBhcyBzZXR0aW5nIG9mIHRoZSBsZWZ0LCByaWdodCwgdG9wIGFuZCBib3R0b20gY3JvcHBp bmcgb2YgQUZCQyBidWZmZXJzCj4gPiAoaW4gbnVtYmVyIG9mIHBpeGVscykuCj4gPiBBbGwgdGhl IGxheWVycyAoZXhjZXB0IERFX1NNQVJUKSBzdXBwb3J0IGZyYW1lYnVmZmVycyB3aXRoIEFGQkMg bW9kaWZpZXJzLgo+ID4gT25lIG5lZWRzIHRvIHNldCB0aGUgcGl4ZWwgdmFsdWVzIG9mIHRoZSB0 b3AsIGxlZnQsIGJvdHRvbSBhbmQgcmlnaHQgY3JvcHBpbmcKPiA+IGZvciB0aGUgQUZCQyBmcmFt ZWJ1ZmZlci4KPiA+IENyb3BwaW5nIGFuIEFGQkMgZnJhbWVidWZmZXIgaXMgY29udHJvbGxlZCBi eSB0aGUgQUZCQyBjcm9wIHJlZ2lzdGVycy4KPiA+IEluIHRoYXQgY2FzZSwgdGhlIGxheWVyIGlu cHV0IHNpemUgcmVnaXN0ZXJzIHNob3VsZCBiZSBjb25maWd1cmVkIHdpdGgKPiA+IGZyYW1lYnVm ZmVyJ3MgZGltZW5zaW9ucyBhbmQgbm90IHdpdGggZHJtX3BsYW5lX3N0YXRlIHNvdXJjZSB3aWR0 aC9oZWlnaHQKPiA+IHZhbHVlcyAod2hpY2ggaXMgdXNlZCBmb3Igbm9uIEFGQkMgZnJhbWVidWZm ZXIgdG8gZGVub3RlIGNyb3BwaW5nKS4KPiA+IAo+ID4gQ2hhbmdlcyBmcm9tIHYxOgo+ID4gIC0g UmVtb3ZlZCB0aGUgImlmIChmYi0+bW9kaWZpZXIpIiBjaGVjayBmcm9tIG1hbGlkcF9kZV9wbGFu ZV91cGRhdGUoKQo+ID4gYW5kIGFkZGVkIGl0IGluIG1hbGlkcF9kZV9zZXRfcGxhbmVfYWZiYygp LiBUaGlzIHdpbGwgY29uc29saWRhdGUgYWxsIHRoZQo+ID4gQUZCQyBzcGVjaWZpYyByZWdpc3Rl ciBjb25maWd1cmF0aW9ucyBpbiBhIHNpbmdsZSBmdW5jdGlvbiBpZQo+ID4gbWFsaWRwX2RlX3Nl dF9wbGFuZV9hZmJjKCkuCj4gPiAKPiA+IENoYW5nZXMgZnJvbSB2MjoKPiA+ICAtIEZvciBBRkJD IGZyYW1lYnVmZmVyLCBsYXllciBpbnB1dCBzaXplIHJlZ2lzdGVyIHNob3VsZCBiZSBzZXQgdG8g ZnJhbWVidWZmZXIncwo+ID4gd2lkdGggYW5kIGhlaWdodAo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5 OiBBeWFuIEt1bWFyIEhhbGRlciA8YXlhbi5oYWxkZXJAYXJtLmNvbT4KPiA+IC0tLQo+ID4gIGRy aXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX2h3LmMgICAgIHwgIDI1ICsrKysrLS0tLQo+ID4gIGRy aXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX2h3LmggICAgIHwgICAyICsKPiA+ICBkcml2ZXJzL2dw dS9kcm0vYXJtL21hbGlkcF9wbGFuZXMuYyB8IDEwOSArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vYXJtL21hbGlkcF9yZWdzLmggICB8ICAy MCArKysrKysrCj4gPiAgNCBmaWxlcyBjaGFuZ2VkLCAxMzAgaW5zZXJ0aW9ucygrKSwgMjYgZGVs ZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL21hbGlk cF9ody5jIGIvZHJpdmVycy9ncHUvZHJtL2FybS9tYWxpZHBfaHcuYwo+ID4gaW5kZXggYjliZWQx MS4uODdiN2IxMiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX2h3 LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX2h3LmMKPiA+IEBAIC05NCwx MSArOTQsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtYWxpZHBfbGF5ZXIgbWFsaWRwNTAwX2xh eWVyc1tdID0gewo+ID4gIAkgKgl5dXYycmdiIG1hdHJpeCBvZmZzZXQsIG1tdSBjb250cm9sIHJl Z2lzdGVyIG9mZnNldCwgcm90YXRpb25fZmVhdHVyZXMKPiA+ICAJICovCj4gPiAgCXsgREVfVklE RU8xLCBNQUxJRFA1MDBfREVfTFZfQkFTRSwgTUFMSURQNTAwX0RFX0xWX1BUUl9CQVNFLAo+ID4g LQkJTUFMSURQX0RFX0xWX1NUUklERTAsIE1BTElEUDUwMF9MVl9ZVVYyUkdCLCAwLCBST1RBVEVf QU5ZIH0sCj4gPiArCQlNQUxJRFBfREVfTFZfU1RSSURFMCwgTUFMSURQNTAwX0xWX1lVVjJSR0Is IDAsIFJPVEFURV9BTlksCj4gPiArCQlNQUxJRFA1MDBfREVfTFZfQURfQ1RSTCB9LAo+ID4gIAl7 IERFX0dSQVBISUNTMSwgTUFMSURQNTAwX0RFX0xHMV9CQVNFLCBNQUxJRFA1MDBfREVfTEcxX1BU Ul9CQVNFLAo+ID4gLQkJTUFMSURQX0RFX0xHX1NUUklERSwgMCwgMCwgUk9UQVRFX0FOWSB9LAo+ ID4gKwkJTUFMSURQX0RFX0xHX1NUUklERSwgMCwgMCwgUk9UQVRFX0FOWSwgTUFMSURQNTAwX0RF X0xHMV9BRF9DVFJMIH0sCj4gPiAgCXsgREVfR1JBUEhJQ1MyLCBNQUxJRFA1MDBfREVfTEcyX0JB U0UsIE1BTElEUDUwMF9ERV9MRzJfUFRSX0JBU0UsCj4gPiAtCQlNQUxJRFBfREVfTEdfU1RSSURF LCAwLCAwLCBST1RBVEVfQU5ZIH0sCj4gPiArCQlNQUxJRFBfREVfTEdfU1RSSURFLCAwLCAwLCBS T1RBVEVfQU5ZLCBNQUxJRFA1MDBfREVfTEcyX0FEX0NUUkwgfSwKPiA+ICB9Owo+ID4gIAo+ID4g IHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWFsaWRwX2xheWVyIG1hbGlkcDU1MF9sYXllcnNbXSA9IHsK PiA+IEBAIC0xMDYsMTMgKzEwNywxNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1hbGlkcF9sYXll ciBtYWxpZHA1NTBfbGF5ZXJzW10gPSB7Cj4gPiAgCSAqCXl1djJyZ2IgbWF0cml4IG9mZnNldCwg bW11IGNvbnRyb2wgcmVnaXN0ZXIgb2Zmc2V0LCByb3RhdGlvbl9mZWF0dXJlcwo+ID4gIAkgKi8K PiA+ICAJeyBERV9WSURFTzEsIE1BTElEUDU1MF9ERV9MVjFfQkFTRSwgTUFMSURQNTUwX0RFX0xW MV9QVFJfQkFTRSwKPiA+IC0JCU1BTElEUF9ERV9MVl9TVFJJREUwLCBNQUxJRFA1NTBfTFZfWVVW MlJHQiwgMCwgUk9UQVRFX0FOWSB9LAo+ID4gKwkJTUFMSURQX0RFX0xWX1NUUklERTAsIE1BTElE UDU1MF9MVl9ZVVYyUkdCLCAwLCBST1RBVEVfQU5ZLAo+ID4gKwkJTUFMSURQNTUwX0RFX0xWMV9B RF9DVFJMIH0sCj4gPiAgCXsgREVfR1JBUEhJQ1MxLCBNQUxJRFA1NTBfREVfTEdfQkFTRSwgTUFM SURQNTUwX0RFX0xHX1BUUl9CQVNFLAo+ID4gLQkJTUFMSURQX0RFX0xHX1NUUklERSwgMCwgMCwg Uk9UQVRFX0FOWSB9LAo+ID4gKwkJTUFMSURQX0RFX0xHX1NUUklERSwgMCwgMCwgUk9UQVRFX0FO WSwgTUFMSURQNTUwX0RFX0xHX0FEX0NUUkwgfSwKPiA+ICAJeyBERV9WSURFTzIsIE1BTElEUDU1 MF9ERV9MVjJfQkFTRSwgTUFMSURQNTUwX0RFX0xWMl9QVFJfQkFTRSwKPiA+IC0JCU1BTElEUF9E RV9MVl9TVFJJREUwLCBNQUxJRFA1NTBfTFZfWVVWMlJHQiwgMCwgUk9UQVRFX0FOWSB9LAo+ID4g KwkJTUFMSURQX0RFX0xWX1NUUklERTAsIE1BTElEUDU1MF9MVl9ZVVYyUkdCLCAwLCBST1RBVEVf QU5ZLAo+ID4gKwkJTUFMSURQNTUwX0RFX0xWMl9BRF9DVFJMIH0sCj4gPiAgCXsgREVfU01BUlQs IE1BTElEUDU1MF9ERV9MU19CQVNFLCBNQUxJRFA1NTBfREVfTFNfUFRSX0JBU0UsCj4gPiAtCQlN QUxJRFA1NTBfREVfTFNfUjFfU1RSSURFLCAwLCAwLCBST1RBVEVfTk9ORSB9LAo+ID4gKwkJTUFM SURQNTUwX0RFX0xTX1IxX1NUUklERSwgMCwgMCwgUk9UQVRFX05PTkUsIDAgfSwKPiA+ICB9Owo+ ID4gIAo+ID4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWFsaWRwX2xheWVyIG1hbGlkcDY1MF9sYXll cnNbXSA9IHsKPiA+IEBAIC0xMjIsMTYgKzEyNSwxNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1h bGlkcF9sYXllciBtYWxpZHA2NTBfbGF5ZXJzW10gPSB7Cj4gPiAgCSAqLwo+ID4gIAl7IERFX1ZJ REVPMSwgTUFMSURQNTUwX0RFX0xWMV9CQVNFLCBNQUxJRFA1NTBfREVfTFYxX1BUUl9CQVNFLAo+ ID4gIAkJTUFMSURQX0RFX0xWX1NUUklERTAsIE1BTElEUDU1MF9MVl9ZVVYyUkdCLAo+ID4gLQkJ TUFMSURQNjUwX0RFX0xWX01NVV9DVFJMLCBST1RBVEVfQU5ZIH0sCj4gPiArCQlNQUxJRFA2NTBf REVfTFZfTU1VX0NUUkwsIFJPVEFURV9BTlksIE1BTElEUDU1MF9ERV9MVjFfQURfQ1RSTCB9LAo+ ID4gIAl7IERFX0dSQVBISUNTMSwgTUFMSURQNTUwX0RFX0xHX0JBU0UsIE1BTElEUDU1MF9ERV9M R19QVFJfQkFTRSwKPiA+ICAJCU1BTElEUF9ERV9MR19TVFJJREUsIDAsIE1BTElEUDY1MF9ERV9M R19NTVVfQ1RSTCwKPiA+IC0JCVJPVEFURV9DT01QUkVTU0VEIH0sCj4gPiArCQlST1RBVEVfQ09N UFJFU1NFRCwgTUFMSURQNTUwX0RFX0xHX0FEX0NUUkwgfSwKPiA+ICAJeyBERV9WSURFTzIsIE1B TElEUDU1MF9ERV9MVjJfQkFTRSwgTUFMSURQNTUwX0RFX0xWMl9QVFJfQkFTRSwKPiA+ICAJCU1B TElEUF9ERV9MVl9TVFJJREUwLCBNQUxJRFA1NTBfTFZfWVVWMlJHQiwKPiA+IC0JCU1BTElEUDY1 MF9ERV9MVl9NTVVfQ1RSTCwgUk9UQVRFX0FOWSB9LAo+ID4gKwkJTUFMSURQNjUwX0RFX0xWX01N VV9DVFJMLCBST1RBVEVfQU5ZLCBNQUxJRFA1NTBfREVfTFYyX0FEX0NUUkwgfSwKPiA+ICAJeyBE RV9TTUFSVCwgTUFMSURQNTUwX0RFX0xTX0JBU0UsIE1BTElEUDU1MF9ERV9MU19QVFJfQkFTRSwK PiA+ICAJCU1BTElEUDU1MF9ERV9MU19SMV9TVFJJREUsIDAsIE1BTElEUDY1MF9ERV9MU19NTVVf Q1RSTCwKPiA+IC0JCVJPVEFURV9OT05FIH0sCj4gPiArCQlST1RBVEVfTk9ORSwgMCB9LAo+ID4g IH07Cj4gPiAgCj4gPiAgI2RlZmluZSBTRV9OX1NDQUxJTkdfQ09FRkZTCTk2Cj4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9tYWxpZHBfaHcuaCBiL2RyaXZlcnMvZ3B1L2RybS9h cm0vbWFsaWRwX2h3LmgKPiA+IGluZGV4IDQwMTU1ZTIuLjY1MTU1OGYgMTAwNjQ0Cj4gPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vYXJtL21hbGlkcF9ody5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYXJtL21hbGlkcF9ody5oCj4gPiBAQCAtNzAsNiArNzAsOCBAQCBzdHJ1Y3QgbWFsaWRwX2xh eWVyIHsKPiA+ICAJczE2IHl1djJyZ2Jfb2Zmc2V0OwkvKiBvZmZzZXQgdG8gdGhlIFlVVi0+UkdC IG1hdHJpeCBlbnRyaWVzICovCj4gPiAgCXUxNiBtbXVfY3RybF9vZmZzZXQ7ICAgIC8qIG9mZnNl dCB0byB0aGUgTU1VIGNvbnRyb2wgcmVnaXN0ZXIgKi8KPiA+ICAJZW51bSByb3RhdGlvbl9mZWF0 dXJlcyByb3Q7CS8qIHR5cGUgb2Ygcm90YXRpb24gc3VwcG9ydGVkICovCj4gPiArCS8qIGFkZHJl c3Mgb2Zmc2V0IGZvciB0aGUgQUZCQyBkZWNvZGVyIHJlZ2lzdGVycyAqLwo+ID4gKwl1MTYgYWZi Y19kZWNvZGVyX29mZnNldDsKPiA+ICB9Owo+ID4gIAo+ID4gIGVudW0gbWFsaWRwX3NjYWxpbmdf Y29lZmZfc2V0IHsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL21hbGlkcF9w bGFuZXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX3BsYW5lcy5jCj4gPiBpbmRleCBj OWE2ZDNlLi5jZDYwZjczIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FybS9tYWxp ZHBfcGxhbmVzLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX3BsYW5lcy5j Cj4gPiBAQCAtNTkyLDYgKzU5Miw4MCBAQCBzdGF0aWMgdm9pZCBtYWxpZHBfZGVfc2V0X21tdV9j b250cm9sKHN0cnVjdCBtYWxpZHBfcGxhbmUgKm1wLAo+ID4gIAkJCW1wLT5sYXllci0+YmFzZSAr IG1wLT5sYXllci0+bW11X2N0cmxfb2Zmc2V0KTsKPiA+ICB9Cj4gPiAgCj4gPiArc3RhdGljIHZv aWQgbWFsaWRwX3NldF9wbGFuZV9iYXNlX2FkZHIoc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIs Cj4gPiArCQkJCSAgICAgICBzdHJ1Y3QgbWFsaWRwX3BsYW5lICptcCwKPiA+ICsJCQkJICAgICAg IGludCBwbGFuZV9pbmRleCkKPiA+ICt7Cj4gPiArCWRtYV9hZGRyX3QgcGFkZHI7Cj4gPiArCXUx NiBwdHI7Cj4gPiArCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lID0gJm1wLT5iYXNlOwo+ID4gKwli b29sIGFmYmMgPSBmYi0+bW9kaWZpZXIgPyB0cnVlIDogZmFsc2U7Cj4gPiArCj4gPiArCXB0ciA9 IG1wLT5sYXllci0+cHRyICsgKHBsYW5lX2luZGV4IDw8IDQpOwo+ID4gKwo+ID4gKwkvKgo+ID4g KwkgKiBGb3IgQUZCQyBidWZmZXJzLCBjcm9wcGluZyBpcyBoYW5kbGVkIGJ5IEFGQkMgZGVjb2Rl ciByYXRoZXIgdGhhbgo+ID4gKwkgKiBwb2ludGVyIG1hbmlwdWxhdGlvbi4KPiA+ICsJICovCj4g Cj4gSSB0aGluayB0aGlzIGNvbW1lbnQgbmVlZHMgdG8gZ28gaW4gbWFsaWRwX2RlX3BsYW5lX3Vw ZGF0ZSwgbm90IGluIHRoaXMgZnVuY3Rpb24uCj4gVGhpcyBmdW5jdGlvbiBvbmx5IHVwZGF0ZXMg dGhlIHBsYW5lJ3MgYmFzZSBhZGRyZXNzLgo+Ckkgd2lsbCByZXdvcmQgdGhlIGNvbW1lbnQgbGlr ZSB0aGlzIGlmIGl0IHNvdW5kcyBzYW5lIDotCgpkcm1fZmJfY21hX2dldF9nZW1fYWRkcigpIGFs dGVycyB0aGUgcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBmcmFtZWJ1ZmZlcgphcyBwZXIg dGhlIHBsYW5lJ3Mgc3JjX3gsIHNyY195IGNvLW9yZGluYXRlcyAoaWUgdG8gdGFrZSBjYXJlIG9m IHNvdXJjZSBjcm9wcGluZykuCkZvciBBRkJDLCB0aGlzIGlzIG5vdCBuZWVkZWQgYXMgdGhlIGNy b3BwaW5nIGlzIGhhbmRsZWQgYnkgX0FEX0NST1BfSAphbmQgX0FEX0NST1BfViByZWdpc3RlcnMu Cgo+ID4gKwlpZiAoIWFmYmMpIHsKPiA+ICsJCXBhZGRyID0gZHJtX2ZiX2NtYV9nZXRfZ2VtX2Fk ZHIoZmIsIHBsYW5lLT5zdGF0ZSwKPiA+ICsJCQkJCQlwbGFuZV9pbmRleCk7Cj4gPiArCX0gZWxz ZSB7Cj4gPiArCQlzdHJ1Y3QgZHJtX2dlbV9jbWFfb2JqZWN0ICpvYmo7Cj4gPiArCj4gPiArCQlv YmogPSBkcm1fZmJfY21hX2dldF9nZW1fb2JqKGZiLCBwbGFuZV9pbmRleCk7Cj4gPiArCj4gPiAr CQlpZiAoV0FSTl9PTighb2JqKSkKPiA+ICsJCQlyZXR1cm47Cj4gPiArCQlwYWRkciA9IG9iai0+ cGFkZHI7Cj4gPiArCX0KPiA+ICsKPiA+ICsJbWFsaWRwX2h3X3dyaXRlKG1wLT5od2RldiwgbG93 ZXJfMzJfYml0cyhwYWRkciksIHB0cik7Cj4gPiArCW1hbGlkcF9od193cml0ZShtcC0+aHdkZXYs IHVwcGVyXzMyX2JpdHMocGFkZHIpLCBwdHIgKyA0KTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGlj IHZvaWQgbWFsaWRwX2RlX3NldF9wbGFuZV9hZmJjKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQo+ ID4gK3sKPiA+ICsJc3RydWN0IG1hbGlkcF9wbGFuZSAqbXA7Cj4gPiArCXUzMiBzcmNfdywgc3Jj X2gsIHZhbCA9IDAsIHNyY194LCBzcmNfeTsKPiA+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmIgPSBwbGFuZS0+c3RhdGUtPmZiOwo+ID4gKwo+ID4gKwltcCA9IHRvX21hbGlkcF9wbGFuZShw bGFuZSk7Cj4gPiArCj4gPiArCS8qIG5vIGFmYmNfZGVjb2Rlcl9vZmZzZXQgbWVhbnMgQUZCQyBp cyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhbmUgKi8KPiA+ICsJaWYgKCFtcC0+bGF5ZXItPmFm YmNfZGVjb2Rlcl9vZmZzZXQpCj4gPiArCQlyZXR1cm47Cj4gPiArCj4gPiArCWlmICghZmItPm1v ZGlmaWVyKSB7Cj4gPiArCQltYWxpZHBfaHdfd3JpdGUobXAtPmh3ZGV2LCAwLCBtcC0+bGF5ZXIt PmFmYmNfZGVjb2Rlcl9vZmZzZXQpOwo+ID4gKwkJcmV0dXJuOwo+ID4gKwl9Cj4gPiArCj4gPiAr CS8qIGNvbnZlcnQgc3JjIHZhbHVlcyBmcm9tIFExNiBmaXhlZCBwb2ludCB0byBpbnRlZ2VyICov Cj4gPiArCXNyY193ID0gcGxhbmUtPnN0YXRlLT5zcmNfdyA+PiAxNjsKPiA+ICsJc3JjX2ggPSBw bGFuZS0+c3RhdGUtPnNyY19oID4+IDE2Owo+ID4gKwlzcmNfeCA9IHBsYW5lLT5zdGF0ZS0+c3Jj X3ggPj4gMTY7Cj4gPiArCXNyY195ID0gcGxhbmUtPnN0YXRlLT5zcmNfeSA+PiAxNjsKPiA+ICsK PiA+ICsJdmFsID0gKChmYi0+d2lkdGggLSAoc3JjX3ggKyBzcmNfdykpIDw8IE1BTElEUF9BRF9D Uk9QX1JJR0hUX09GRlNFVCkgfAo+ID4gKwkJICAgc3JjX3g7Cj4gPiArCW1hbGlkcF9od193cml0 ZShtcC0+aHdkZXYsIHZhbCwKPiA+ICsJCQltcC0+bGF5ZXItPmFmYmNfZGVjb2Rlcl9vZmZzZXQg KyBNQUxJRFBfQURfQ1JPUF9IKTsKPiA+ICsKPiA+ICsJdmFsID0gKChmYi0+aGVpZ2h0IC0gKHNy Y195ICsgc3JjX2gpKSA8PCBNQUxJRFBfQURfQ1JPUF9CT1RUT01fT0ZGU0VUKSB8Cj4gPiArCQkg ICBzcmNfeTsKPiA+ICsJbWFsaWRwX2h3X3dyaXRlKG1wLT5od2RldiwgdmFsLAo+ID4gKwkJCW1w LT5sYXllci0+YWZiY19kZWNvZGVyX29mZnNldCArIE1BTElEUF9BRF9DUk9QX1YpOwo+ID4gKwo+ ID4gKwl2YWwgPSBNQUxJRFBfQURfRU47Cj4gPiArCWlmIChmYi0+bW9kaWZpZXIgJiBBRkJDX0ZP Uk1BVF9NT0RfU1BMSVQpCj4gPiArCQl2YWwgfD0gTUFMSURQX0FEX0JTOwo+ID4gKwlpZiAoZmIt Pm1vZGlmaWVyICYgQUZCQ19GT1JNQVRfTU9EX1lUUikKPiA+ICsJCXZhbCB8PSBNQUxJRFBfQURf WVRSOwo+ID4gKwo+ID4gKwltYWxpZHBfaHdfd3JpdGUobXAtPmh3ZGV2LCB2YWwsIG1wLT5sYXll ci0+YWZiY19kZWNvZGVyX29mZnNldCk7Cj4gPiArfQo+ID4gKwo+ID4gIHN0YXRpYyB2b2lkIG1h bGlkcF9kZV9wbGFuZV91cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPiAgCQkJCSAg IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSkKPiA+ICB7Cj4gPiBAQCAtNjAwLDMw ICs2NzQsMzMgQEAgc3RhdGljIHZvaWQgbWFsaWRwX2RlX3BsYW5lX3VwZGF0ZShzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwKPiA+ICAJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUgPSBwbGFu ZS0+c3RhdGU7Cj4gPiAgCXUxNiBwaXhlbF9hbHBoYSA9IHN0YXRlLT5waXhlbF9ibGVuZF9tb2Rl Owo+ID4gIAl1OCBwbGFuZV9hbHBoYSA9IHN0YXRlLT5hbHBoYSA+PiA4Owo+ID4gKwlib29sIGZv cm1hdF9oYXNfYWxwaGEgPSBzdGF0ZS0+ZmItPmZvcm1hdC0+aGFzX2FscGhhOwo+ID4gIAl1MzIg c3JjX3csIHNyY19oLCBkZXN0X3csIGRlc3RfaCwgdmFsOwo+ID4gIAlpbnQgaTsKPiA+ICsJc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZS0+c3RhdGUtPmZiOwo+ID4gIAo+ID4gIAlt cCA9IHRvX21hbGlkcF9wbGFuZShwbGFuZSk7Cj4gPiAgCj4gPiAtCS8qIGNvbnZlcnQgc3JjIHZh bHVlcyBmcm9tIFExNiBmaXhlZCBwb2ludCB0byBpbnRlZ2VyICovCj4gPiAtCXNyY193ID0gc3Rh dGUtPnNyY193ID4+IDE2Owo+ID4gLQlzcmNfaCA9IHN0YXRlLT5zcmNfaCA+PiAxNjsKPiA+IC0J ZGVzdF93ID0gc3RhdGUtPmNydGNfdzsKPiA+IC0JZGVzdF9oID0gc3RhdGUtPmNydGNfaDsKPiA+ ICsJLyogRm9yIEFGQkMgZnJhbWVidWZmZXIsIHVzZSB0aGUgZnJhbWVidWZmZXIgd2lkdGggYW5k IGhlaWdodCBmb3IgY29uZmlndXJpbmcKPiA+ICsJICogbGF5ZXIgaW5wdXQgc2l6ZSByZWdpc3Rl ci4KPiA+ICsJICovCj4gPiArCWlmIChmYi0+bW9kaWZpZXIpIHsKPiA+ICsJCXNyY193ID0gZmIt PndpZHRoOwo+ID4gKwkJc3JjX2ggPSBmYi0+aGVpZ2h0Owo+ID4gKwl9IGVsc2Ugewo+ID4gKwkJ LyogY29udmVydCBzcmMgdmFsdWVzIGZyb20gUTE2IGZpeGVkIHBvaW50IHRvIGludGVnZXIgKi8K PiA+ICsJCXNyY193ID0gbXMtPmJhc2Uuc3JjX3cgPj4gMTY7Cj4gPiArCQlzcmNfaCA9IG1zLT5i YXNlLnNyY19oID4+IDE2Owo+ID4gKwl9Cj4gPiArCWRlc3RfdyA9IG1zLT5iYXNlLmNydGNfdzsK PiA+ICsJZGVzdF9oID0gbXMtPmJhc2UuY3J0Y19oOwo+IAo+IFRoZXNlIHR3byBsaW5lcyBhYm92 ZSBhcmUgZXF1aXZhbGVudCB0byB0aGUgbGFzdCB0d28gbGluZXMgeW91IGRlbGV0ZWQuIFdoeSB5 b3UgbmVlZCB0aGlzIGNoYW5nZT8KPiAKQWdyZWVkLCBJIHdpbGwgcmVtb3ZlIHRoaXMgY2hhbmdl Lgo+ID4gIAo+ID4gIAl2YWwgPSBtYWxpZHBfaHdfcmVhZChtcC0+aHdkZXYsIG1wLT5sYXllci0+ YmFzZSk7Cj4gPiAgCXZhbCA9ICh2YWwgJiB+TEFZRVJfRk9STUFUX01BU0spIHwgbXMtPmZvcm1h dDsKPiA+ICAJbWFsaWRwX2h3X3dyaXRlKG1wLT5od2RldiwgdmFsLCBtcC0+bGF5ZXItPmJhc2Up Owo+ID4gIAo+ID4gLQlmb3IgKGkgPSAwOyBpIDwgbXMtPm5fcGxhbmVzOyBpKyspIHsKPiA+IC0J CS8qIGNhbGN1bGF0ZSB0aGUgb2Zmc2V0IGZvciB0aGUgbGF5ZXIncyBwbGFuZSByZWdpc3RlcnMg Ki8KPiA+IC0JCXUxNiBwdHIgPSBtcC0+bGF5ZXItPnB0ciArIChpIDw8IDQpOwo+ID4gLQkJZG1h X2FkZHJfdCBmYl9hZGRyID0gZHJtX2ZiX2NtYV9nZXRfZ2VtX2FkZHIoc3RhdGUtPmZiLAo+ID4g LQkJCQkJCQkgICAgIHN0YXRlLCBpKTsKPiA+IC0KPiA+IC0JCW1hbGlkcF9od193cml0ZShtcC0+ aHdkZXYsIGxvd2VyXzMyX2JpdHMoZmJfYWRkciksIHB0cik7Cj4gPiAtCQltYWxpZHBfaHdfd3Jp dGUobXAtPmh3ZGV2LCB1cHBlcl8zMl9iaXRzKGZiX2FkZHIpLCBwdHIgKyA0KTsKPiA+IC0JfQo+ ID4gKwlmb3IgKGkgPSAwOyBpIDwgbXMtPm5fcGxhbmVzOyBpKyspCj4gPiArCQltYWxpZHBfc2V0 X3BsYW5lX2Jhc2VfYWRkcihmYiwgbXAsIGkpOwo+ID4gIAo+ID4gIAltYWxpZHBfZGVfc2V0X21t dV9jb250cm9sKG1wLCBtcyk7Cj4gPiAgCj4gPiBAQCAtNjU3LDYgKzczNCw4IEBAIHN0YXRpYyB2 b2lkIG1hbGlkcF9kZV9wbGFuZV91cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPiAg CQkJCW1wLT5sYXllci0+YmFzZSArIE1BTElEUDU1MF9MU19SMV9JTl9TSVpFKTsKPiA+ICAJfQo+ ID4gIAo+ID4gKwltYWxpZHBfZGVfc2V0X3BsYW5lX2FmYmMocGxhbmUpOwo+IAo+IEkgZmVlbCBs aWtlIHRoaXMgZnVuY3Rpb24gY2FsbCBzaG91bGQgYmUgZG9uZSBvbmx5IGlmIChmYi0+bW9kaWZp ZXIpIGlzCj4gdHJ1ZS4KV2UgbmVlZCB0byBjYWxsIHRoaXMgZnVuY3Rpb24gZXZlbiBpcyBmYi0+ bW9kaWZpZXIgPSAwLiBQbGVhc2UgcmVmZXIKdG8gdGhlIGZvbGxvd2luZyBzbmlwcGV0IGluIG1h bGlkcF9kZV9zZXRfcGxhbmVfYWZiYygpCgppZiAoIWZiLT5tb2RpZmllcikgewogICAgICBtYWxp ZHBfaHdfd3JpdGUobXAtPmh3ZGV2LCAwLCBtcC0+bGF5ZXItPmFmYmNfZGVjb2Rlcl9vZmZzZXQp OwogICAgICByZXR1cm47Cn0KSSB3aWxsIHByZWZlciB0byBrZWVwIGFsbCB0aGUgQUZCQyByZWdp c3RlciBjb25maWd1cmF0aW9uIGluIGEgc2luZ2xlCmZ1bmN0aW9uLgoKVGhhbmtzLApBeWFuIEt1 bWFyIEhhbGRlcgo+IAo+ID4gKwo+ID4gIAkvKiBmaXJzdCBjbGVhciB0aGUgcm90YXRpb24gYml0 cyAqLwo+ID4gIAl2YWwgPSBtYWxpZHBfaHdfcmVhZChtcC0+aHdkZXYsIG1wLT5sYXllci0+YmFz ZSArIE1BTElEUF9MQVlFUl9DT05UUk9MKTsKPiA+ICAJdmFsICY9IH5MQVlFUl9ST1RfTUFTSzsK PiA+IEBAIC02NzQsNyArNzUzLDcgQEAgc3RhdGljIHZvaWQgbWFsaWRwX2RlX3BsYW5lX3VwZGF0 ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+ICAKPiA+ICAJaWYgKHN0YXRlLT5hbHBoYSAh PSBEUk1fQkxFTkRfQUxQSEFfT1BBUVVFKSB7Cj4gPiAgCQl2YWwgfD0gTEFZRVJfQ09NUF9QTEFO RTsKPiA+IC0JfSBlbHNlIGlmIChzdGF0ZS0+ZmItPmZvcm1hdC0+aGFzX2FscGhhKSB7Cj4gPiAr CX0gZWxzZSBpZiAoZm9ybWF0X2hhc19hbHBoYSkgewo+IAo+IFRoaXMgY2hhbmdlIGhhcyBub3Ro aW5nIHRvIGRvIHdpdGggQUZCQywgaXQgc2hvdWxkIG5vdCBiZSBpbiB0aGlzIHBhdGNoLgo+IAo+ ID4gIAkJLyogV2Ugb25seSBjYXJlIGFib3V0IGJsZW5kIG1vZGUgaWYgdGhlIGZvcm1hdCBoYXMg YWxwaGEgKi8KPiA+ICAJCXN3aXRjaCAocGl4ZWxfYWxwaGEpIHsKPiA+ICAJCWNhc2UgRFJNX01P REVfQkxFTkRfUFJFTVVMVEk6Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9t YWxpZHBfcmVncy5oIGIvZHJpdmVycy9ncHUvZHJtL2FybS9tYWxpZHBfcmVncy5oCj4gPiBpbmRl eCA3Y2UzZTE0Li5hMGRkNmUxIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FybS9t YWxpZHBfcmVncy5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL21hbGlkcF9yZWdzLmgK PiA+IEBAIC0xOTgsMTAgKzE5OCwxMyBAQAo+ID4gICNkZWZpbmUgTUFMSURQNTAwX0xWX1lVVjJS R0IJCSgoczE2KSgtMHhCOCkpCj4gPiAgI2RlZmluZSBNQUxJRFA1MDBfREVfTFZfQkFTRQkJMHgw MDEwMAo+ID4gICNkZWZpbmUgTUFMSURQNTAwX0RFX0xWX1BUUl9CQVNFCTB4MDAxMjQKPiA+ICsj ZGVmaW5lIE1BTElEUDUwMF9ERV9MVl9BRF9DVFJMCQkweDAwNDAwCj4gPiAgI2RlZmluZSBNQUxJ RFA1MDBfREVfTEcxX0JBU0UJCTB4MDAyMDAKPiA+ICAjZGVmaW5lIE1BTElEUDUwMF9ERV9MRzFf UFRSX0JBU0UJMHgwMDIxYwo+ID4gKyNkZWZpbmUgTUFMSURQNTAwX0RFX0xHMV9BRF9DVFJMCTB4 MDA0MGMKPiA+ICAjZGVmaW5lIE1BTElEUDUwMF9ERV9MRzJfQkFTRQkJMHgwMDMwMAo+ID4gICNk ZWZpbmUgTUFMSURQNTAwX0RFX0xHMl9QVFJfQkFTRQkweDAwMzFjCj4gPiArI2RlZmluZSBNQUxJ RFA1MDBfREVfTEcyX0FEX0NUUkwJMHgwMDQxOAo+ID4gICNkZWZpbmUgTUFMSURQNTAwX1NFX0JB U0UJCTB4MDBjMDAKPiA+ICAjZGVmaW5lIE1BTElEUDUwMF9TRV9DT05UUk9MCQkweDAwYzBjCj4g PiAgI2RlZmluZSBNQUxJRFA1MDBfU0VfTUVNV1JJVEVfT1VUX1NJWkUJMHgwMGMyYwo+ID4gQEAg LTIyOCwxMCArMjMxLDEzIEBACj4gPiAgI2RlZmluZSBNQUxJRFA1NTBfTFZfWVVWMlJHQgkJMHgw MDA4NAo+ID4gICNkZWZpbmUgTUFMSURQNTUwX0RFX0xWMV9CQVNFCQkweDAwMTAwCj4gPiAgI2Rl ZmluZSBNQUxJRFA1NTBfREVfTFYxX1BUUl9CQVNFCTB4MDAxMjQKPiA+ICsjZGVmaW5lIE1BTElE UDU1MF9ERV9MVjFfQURfQ1RSTAkweDAwMUI4Cj4gPiAgI2RlZmluZSBNQUxJRFA1NTBfREVfTFYy X0JBU0UJCTB4MDAyMDAKPiA+ICAjZGVmaW5lIE1BTElEUDU1MF9ERV9MVjJfUFRSX0JBU0UJMHgw MDIyNAo+ID4gKyNkZWZpbmUgTUFMSURQNTUwX0RFX0xWMl9BRF9DVFJMCTB4MDAyQjgKPiA+ICAj ZGVmaW5lIE1BTElEUDU1MF9ERV9MR19CQVNFCQkweDAwMzAwCj4gPiAgI2RlZmluZSBNQUxJRFA1 NTBfREVfTEdfUFRSX0JBU0UJMHgwMDMxYwo+ID4gKyNkZWZpbmUgTUFMSURQNTUwX0RFX0xHX0FE X0NUUkwJCTB4MDAzMzAKPiA+ICAjZGVmaW5lIE1BTElEUDU1MF9ERV9MU19CQVNFCQkweDAwNDAw Cj4gPiAgI2RlZmluZSBNQUxJRFA1NTBfREVfTFNfUFRSX0JBU0UJMHgwMDQyYwo+ID4gICNkZWZp bmUgTUFMSURQNTUwX0RFX1BFUkZfQkFTRQkJMHgwMDUwMAo+ID4gQEAgLTI1OCw2ICsyNjQsMjAg QEAKPiA+ICAjZGVmaW5lIE1BTElEUF9NTVVfQ1RSTF9QWF9QUyh4KQkoMSA8PCAoOCArICh4KSkp Cj4gPiAgI2RlZmluZSBNQUxJRFBfTU1VX0NUUkxfUFBfTlVNX1JFUSh4KQkoKCh4KSAmIDB4N2Yp IDw8IDEyKQo+ID4gIAo+ID4gKy8qIEFGQkMgcmVnaXN0ZXIgb2Zmc2V0cyByZWxhdGl2ZSB0byBN QUxJRFBYWFhfREVfTFhfQURfQ1RSTCAqLwo+ID4gKy8qIFRoZSBmb2xsb3dpbmcgcmVnaXN0ZXIg b2Zmc2V0cyBhcmUgY29tbW9uIGZvciBEUDUwMCwgRFA1NTAgYW5kIERQNjUwICovCj4gPiArI2Rl ZmluZSBNQUxJRFBfQURfQ1JPUF9IICAgICAgICAgICAgICAgIDB4NAo+ID4gKyNkZWZpbmUgTUFM SURQX0FEX0NST1BfViAgICAgICAgICAgICAgICAweDgKPiA+ICsjZGVmaW5lIE1BTElEUF9BRF9F TkRfUFRSX0xPVyAgICAgICAgICAgMHhjCj4gPiArI2RlZmluZSBNQUxJRFBfQURfRU5EX1BUUl9I SUdIICAgICAgICAgIDB4MTAKPiA+ICsKPiA+ICsvKiBBRkJDIGRlY29kZXIgUmVnaXN0ZXJzICov Cj4gPiArI2RlZmluZSBNQUxJRFBfQURfRU4gICAgICAgICAgICAgICAgICAgIEJJVCgwKQo+ID4g KyNkZWZpbmUgTUFMSURQX0FEX1lUUiAgICAgICAgICAgICAgICAgICBCSVQoNCkKPiA+ICsjZGVm aW5lIE1BTElEUF9BRF9CUyAgICAgICAgICAgICAgICAgICAgQklUKDgpCj4gPiArI2RlZmluZSBN QUxJRFBfQURfQ1JPUF9SSUdIVF9PRkZTRVQgICAgIDE2Cj4gPiArI2RlZmluZSBNQUxJRFBfQURf Q1JPUF9CT1RUT01fT0ZGU0VUICAgIDE2Cj4gPiArCj4gPiAgLyoKPiA+ICAgKiBTdGFydGluZyB3 aXRoIERQNTUwIHRoZSByZWdpc3RlciBtYXAgYmxvY2tzIGhhcyBiZWVuIHN0YW5kYXJkaXNlZCB0 byB0aGUKPiA+ICAgKiBmb2xsb3dpbmcgbGF5b3V0Ogo+ID4gLS0gCj4gPiAyLjcuNAo+ID4gCj4g Cj4gQmVzdCByZWdhcmRzLAo+IExpdml1Cj4gCj4gCj4gLS0gCj4gPT09PT09PT09PT09PT09PT09 PT0KPiB8IEkgd291bGQgbGlrZSB0byB8Cj4gfCBmaXggdGhlIHdvcmxkLCAgfAo+IHwgYnV0IHRo ZXkncmUgbm90IHwKPiB8IGdpdmluZyBtZSB0aGUgICB8Cj4gIFwgc291cmNlIGNvZGUhICAvCj4g ICAtLS0tLS0tLS0tLS0tLS0KPiAgICAgPz9cXyg/Pz8pXy8/Pwo+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+ IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbApfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWwK