From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Ong, Hean Loong" Subject: Re: DRM Display driver for Intel FPGA Video and Image Processing Suite Date: Thu, 06 Apr 2017 14:29:22 +0800 Message-ID: <1491460162.2483.1.camel@intel.com> References: <1490950994.21575.21.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 74C5D6E8FC for ; Thu, 6 Apr 2017 06:29:25 +0000 (UTC) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "Vetter, Daniel" , "airlied@linux.ie" Cc: "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org SGkgQWxsLAoKQW55IGNvbW1lbnRzIGZvciB0aGUgcGF0Y2ggYmVsb3c/CgpUaGFua3MKCkhlYW4g TG9vbmcKCk9uIFR1ZSwgMjAxNy0wNC0wNCBhdCAwNDowMSArMDAwMCwgT25nLCBIZWFuIExvb25n IHdyb3RlOgo+IEhpIEFsbCwKPiAKPiBBcG9sb2dpZXMgZm9yIHRoZSBhdHRhY2htZW50IGVhcmxp ZXIuIEJlbG93IGFyZSB0aGUgaW5saW5lIGNoYW5nZXMKPiBmb3IgdGhlIHBhdGNoCj4gCj4gRnJv bSAwZGUyOTNlMzY0NmExNzgwZWQ2MDNjZjhlMWYyYTE5ZDlhZWJiZTgzIE1vbiBTZXAgMTcgMDA6 MDA6MDAKPiAyMDAxCj4gRnJvbTogT25nLCBIZWFuIExvb25nIDxoZWFuLmxvb25nLm9uZ0BpbnRl bC5jb20+Cj4gRGF0ZTogVGh1LCAzMCBNYXIgMjAxNyAxODowMjoyMiArMDgwMAo+IFN1YmplY3Q6 IFtQQVRDSHYwXSBJbnRlbCBGUEdBIFZpZGVvIGFuZCBJbWFnZSBQcm9jZXNzaW5nIFN1aXRlIEZy YW1lCj4gQnVmZmVyIElJIGRyaXZlcgo+IAo+IFNpZ25lZC1vZmYtYnk6IE9uZywgSGVhbiBMb29u ZyA8aGVhbi5sb29uZy5vbmdAaW50ZWwuY29tPgo+IC0tLQo+IMKgZHJpdmVycy9ncHUvZHJtL0tj b25maWfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoMKgwqAyICsKPiDCoGRyaXZl cnMvZ3B1L2RybS9NYWtlZmlsZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoMKgwqAx ICsKPiDCoGRyaXZlcnMvZ3B1L2RybS9pdmlwL0tjb25maWfCoMKgwqDCoMKgwqDCoMKgwqDCoHzC oMKgwqAyMiArKysrCj4gwqBkcml2ZXJzL2dwdS9kcm0vaXZpcC9NYWtlZmlsZcKgwqDCoMKgwqDC oMKgwqDCoHzCoMKgwqDCoDkgKysKPiDCoGRyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9j b25uLmMgfMKgwqAxNDUgKysrKysrKysrKysrKysrKysrKysrKwo+IMKgZHJpdmVycy9ncHUvZHJt L2l2aXAvaW50ZWxfdmlwX2NvcmUuYyB8wqDCoDIxNQo+ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwo+IMKgZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX2NydGMuYyB8wqDC oDE2MQo+ICsrKysrKysrKysrKysrKysrKysrKysrKwo+IMKgZHJpdmVycy9ncHUvZHJtL2l2aXAv aW50ZWxfdmlwX2Rydi5owqDCoHzCoMKgwqA1NSArKysrKysrKysKPiDCoGRyaXZlcnMvZ3B1L2Ry bS9pdmlwL2ludGVsX3ZpcF9vZi5jwqDCoMKgfMKgwqAxNDYgKysrKysrKysrKysrKysrKysrKysr Kwo+IMKgOSBmaWxlcyBjaGFuZ2VkLCA3NTYgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkK PiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaXZpcC9LY29uZmlnCj4gwqBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2l2aXAvTWFrZWZpbGUKPiDCoGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfY29ubi5jCj4gwqBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX2NvcmUuYwo+ IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9jcnRj LmMKPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBf ZHJ2LmgKPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92 aXBfb2YuYwo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyBiL2RyaXZl cnMvZ3B1L2RybS9LY29uZmlnCj4gaW5kZXggZWJmZTg0MC4uYzQ4NzUwNyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmln Cj4gQEAgLTE2Nyw2ICsxNjcsOCBAQCBzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L0tj b25maWciCj4gwqAKPiDCoHNvdXJjZSAiZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZyIKPiDC oAo+ICtzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS9pdmlwL0tjb25maWciCj4gKwo+IMKgY29uZmln IERSTV9WR0VNCj4gwqAJdHJpc3RhdGUgIlZpcnR1YWwgR0VNIHByb3ZpZGVyIgo+IMKgCWRlcGVu ZHMgb24gRFJNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZl cnMvZ3B1L2RybS9NYWtlZmlsZQo+IGluZGV4IGI5YWU0MjguLjk0NWNmNTMgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL01ha2Vm aWxlCj4gQEAgLTUyLDYgKzUyLDcgQEAgb2JqLSQoQ09ORklHX0RSTV9BTURHUFUpKz0gYW1kL2Ft ZGdwdS8KPiDCoG9iai0kKENPTkZJR19EUk1fTUdBKQkrPSBtZ2EvCj4gwqBvYmotJChDT05GSUdf RFJNX0k4MTApCSs9IGk4MTAvCj4gwqBvYmotJChDT05GSUdfRFJNX0k5MTUpCSs9IGk5MTUvCj4g K29iai0kKENPTkZJR19EUk1fSVZJUCkJKz0gaXZpcC8KPiDCoG9iai0kKENPTkZJR19EUk1fTUdB RzIwMCkgKz0gbWdhZzIwMC8KPiDCoG9iai0kKENPTkZJR19EUk1fVkM0KcKgwqArPSB2YzQvCj4g wqBvYmotJChDT05GSUdfRFJNX0NJUlJVU19RRU1VKSArPSBjaXJydXMvCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pdmlwL0tjb25maWcKPiBiL2RyaXZlcnMvZ3B1L2RybS9pdmlwL0tj b25maWcKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmRkZjNjYjUKPiAt LS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2l2aXAvS2NvbmZpZwo+IEBAIC0w LDAgKzEsMjIgQEAKPiArY29uZmlnIERSTV9JVklQCj4gK8KgwqDCoMKgwqDCoMKgwqB0cmlzdGF0 ZSAiSW50ZWwgRkdQQSBWaWRlbyBhbmQgSW1hZ2UgUHJvY2Vzc2luZyIKPiArwqDCoMKgwqDCoMKg wqDCoGRlcGVuZHMgb24gRFJNCj4gK8KgwqDCoMKgwqDCoMKgwqBzZWxlY3QgRFJNX0dFTV9DTUFf SEVMUEVSCj4gK8KgwqDCoMKgwqDCoMKgwqBzZWxlY3QgRFJNX0tNU19IRUxQRVIKPiArwqDCoMKg wqDCoMKgwqDCoHNlbGVjdCBEUk1fS01TX0ZCX0hFTFBFUgo+ICvCoMKgwqDCoMKgwqDCoMKgc2Vs ZWN0IERSTV9LTVNfQ01BX0hFTFBFUgo+ICvCoMKgwqDCoMKgwqDCoMKgaGVscAo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoENob29zZSB0aGlzIG9wdGlvbiBpZiB5b3UgaGF2ZSBh IEludGVsIEZQR0EgQXJyaWEgMTAKPiBzeXN0ZW0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBhbmQgYWJvdmUgd2l0aCBhIERpc3BsYXkgUG9ydCBJUC4gVGhpcyBkb2VzIG5vdAo+ IHN1cHBvcnQgbGVnYWN5Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgSW50ZWwg RlBHQSBDeWNsb25lIFYgZGlzcGxheSBwb3J0LiBDdXJyZW50bHkgb25seQo+IHNpbmdsZSBmcmFt ZQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJ1ZmZlciBpcyBzdXBwb3J0ZWQu IE5vdGUgdGhhdCBBQ1BJIGFuZCBYXzg2Cj4gYXJjaGl0ZWN0dXJlIGlzIHlldAo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRvIGJlIHN1cHBvcnRlZC4KPiArCj4gK2NvbmZpZyBE Uk1fSVZJUF9PRgo+ICvCoMKgwqDCoMKgwqDCoMKgdHJpc3RhdGUgIkludGVsIEZHUEEgVmlkZW8g YW5kIEltYWdlIFByb2Nlc3NpbmcgT3Blbgo+IEZpcm13YXJlIFN5c3RlbXMiCj4gK8KgwqDCoMKg wqDCoMKgwqBkZXBlbmRzIG9uIERSTV9JVklQICYmIE9GCj4gK8KgwqDCoMKgwqDCoMKgwqBoZWxw Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQ2hvb3NlIHRoaXMgb3B0aW9uIGlm IHRoZSBJbnRlbCBGUEdBIHN5c3RlbSBpcyB1c2luZwo+IE9wZW4KPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBGaXJtd2FyZSBzeXN0ZW1zIChBcnJpYSAxMCkuIElmIE0gaXMgc2Vs ZWN0ZWQgdGhlCj4gbW9kdWxlIHdvdWxkCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgYmUgY2FsbGVkIGl2aXAuCj4gKwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaXZp cC9NYWtlZmlsZQo+IGIvZHJpdmVycy9ncHUvZHJtL2l2aXAvTWFrZWZpbGUKPiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjdiZTFlOTkKPiAtLS0gL2Rldi9udWxsCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2l2aXAvTWFrZWZpbGUKPiBAQCAtMCwwICsxLDkgQEAKPiArIwo+ ICsjIE1ha2VmaWxlIGZvciB0aGUgZHJtIGRldmljZSBkcml2ZXIuwqDCoFRoaXMgZHJpdmVyIHBy b3ZpZGVzIHN1cHBvcnQKPiBmb3IgdGhlCj4gKyMgRGlyZWN0IFJlbmRlcmluZyBJbmZyYXN0cnVj dHVyZSAoRFJJKSBpbiBYRnJlZTg2IDQuMS4wIGFuZCBoaWdoZXIuCj4gKwo+ICtjY2ZsYWdzLXkg Oj0gLUlpbmNsdWRlL2RybQo+ICsKPiArb2JqLSQoQ09ORklHX0RSTV9JVklQX09GKSArPSBpdmlw Lm8KPiAraXZpcC1vYmpzIDo9IGludGVsX3ZpcF9vZi5vIGludGVsX3ZpcF9jb3JlLm8gXAo+ICtp bnRlbF92aXBfY29ubi5vIGludGVsX3ZpcF9jcnRjLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2l2aXAvaW50ZWxfdmlwX2Nvbm4uYwo+IGIvZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50 ZWxfdmlwX2Nvbm4uYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uODlh YjU4Nwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92 aXBfY29ubi5jCj4gQEAgLTAsMCArMSwxNDUgQEAKPiArLyoKPiArICogaW50ZWxfdmlwX2Nvbm4u YyAtLSBJbnRlbCBWaWRlbyBhbmQgSW1hZ2UgUHJvY2Vzc2luZyhWSVApCj4gKyAqIEZyYW1lIEJ1 ZmZlciBJSSBkcml2ZXIKPiArICoKPiArICogVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIEludGVs IFZJUCBGcmFtZSBSZWFkZXIgY29tcG9uZW50Lgo+ICsgKiBNb3JlIGluZm8gb24gdGhlIGhhcmR3 YXJlIGNhbiBiZSBmb3VuZCBpbiB0aGUgSW50ZWwgVmlkZW8KPiArICogYW5kIEltYWdlIFByb2Nl c3NpbmcgU3VpdGUgVXNlciBHdWlkZSBhdCB0aGlzIGFkZHJlc3MKPiArICogaHR0cDovL3d3dy5h bHRlcmEuY29tL2xpdGVyYXR1cmUvdWcvdWdfdmlwLnBkZi4KPiArICoKPiArICogVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+IG1v ZGlmeSBpdAo+ICsgKiB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAo+ICsgKiB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAo+IFdJVEhPVVQK PiArICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK PiBNRVJDSEFOVEFCSUxJVFkgb3IKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuwqDCoFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljCj4gTGljZW5zZSBmb3IKPiArICogbW9y ZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBBdXRob3JzOgo+ICsgKiBPbmcsIEhlYW4tTG9vbmcgPGhl YW4ubG9vbmcub25nQGludGVsLmNvbT4KPiArICoKPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGlu dXgvaW5pdC5oPgo+ICsjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4gKyNpbmNsdWRlIDxkcm0v ZHJtX2F0b21pY19oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4K PiArI2luY2x1ZGUgPGRybS9kcm1fZW5jb2Rlcl9zbGF2ZS5oPgo+ICsjaW5jbHVkZSA8ZHJtL2Ry bV9wbGFuZV9oZWxwZXIuaD4KPiArCj4gK3N0YXRpYyBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVz Cj4gK2ludGVsdmlwZmJfZHJtX2Nvbm5lY3Rvcl9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvciwKPiBib29sIGZvcmNlKQo+ICt7Cj4gKwlyZXR1cm4gY29ubmVjdG9yX3N0YXR1 c19jb25uZWN0ZWQ7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGludGVsdmlwZmJfZHJtX2Nvbm5l Y3Rvcl9kZXN0cm95KHN0cnVjdCBkcm1fY29ubmVjdG9yCj4gKmNvbm5lY3RvcikKPiArewo+ICsJ ZHJtX2Nvbm5lY3Rvcl91bnJlZ2lzdGVyKGNvbm5lY3Rvcik7Cj4gKwlkcm1fY29ubmVjdG9yX2Ns ZWFudXAoY29ubmVjdG9yKTsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29u bmVjdG9yX2Z1bmNzCj4gaW50ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2Z1bmNzID0gewo+ICsJLmRw bXMgPSBkcm1faGVscGVyX2Nvbm5lY3Rvcl9kcG1zLAo+ICsJLnJlc2V0ID0gZHJtX2F0b21pY19o ZWxwZXJfY29ubmVjdG9yX3Jlc2V0LAo+ICsJLmRldGVjdCA9IGludGVsdmlwZmJfZHJtX2Nvbm5l Y3Rvcl9kZXRlY3QsCj4gKwkuZmlsbF9tb2RlcyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nv bm5lY3Rvcl9tb2RlcywKPiArCS5kZXN0cm95ID0gaW50ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2Rl c3Ryb3ksCj4gKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9Cj4gZHJtX2F0b21pY19oZWxwZXJf Y29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZSwKPiArCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9Cj4g ZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2Rlc3Ryb3lfc3RhdGUsCj4gK307Cj4gKwo+ICtz dGF0aWMgaW50IGludGVsdmlwZmJfZHJtX2Nvbm5lY3Rvcl9nZXRfbW9kZXMoc3RydWN0IGRybV9j b25uZWN0b3IKPiAqY29ubmVjdG9yKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0g Y29ubmVjdG9yLT5kZXY7Cj4gKwlpbnQgY291bnQ7Cj4gKwo+ICsJY291bnQgPSBkcm1fYWRkX21v ZGVzX25vZWRpZChjb25uZWN0b3IsIGRybS0KPiA+bW9kZV9jb25maWcubWF4X3dpZHRoLAo+ICsJ CQkJwqDCoMKgwqDCoGRybS0+bW9kZV9jb25maWcubWF4X2hlaWdodCk7Cj4gKwlkcm1fc2V0X3By ZWZlcnJlZF9tb2RlKGNvbm5lY3RvciwgZHJtLQo+ID5tb2RlX2NvbmZpZy5tYXhfd2lkdGgsCj4g KwkJCcKgwqDCoMKgwqDCoMKgZHJtLT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0KTsKPiArCXJldHVy biBjb3VudDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hl bHBlcl9mdW5jcwo+ICtpbnRlbHZpcGZiX2RybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzID0gewo+ ICsJLmdldF9tb2RlcyA9IGludGVsdmlwZmJfZHJtX2Nvbm5lY3Rvcl9nZXRfbW9kZXMsCj4gK307 Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2Z1bmNzCj4gK2ludGVsdmlw ZmJfZHJtX2VuY29kZXJfZnVuY3MgPSB7Cj4gKwkuZGVzdHJveSA9IGRybV9lbmNvZGVyX2NsZWFu dXAsCj4gK307Cj4gKwo+ICtzdGF0aWMgdm9pZCBpbnRlbHZpcGZiX21vZGVfc2V0KHN0cnVjdCBk cm1fZW5jb2RlciAqZW5jb2RlciwKPiArCQkJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2Rl LAo+ICsJCQkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUKPiAqYWRqdXN0ZWRfbW9kZSkKPiArewo+ ICsJLyogZG8gbm90aGluZyAqLwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpbnRlbHZpcGZiX25v cChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCj4gK3sKPiArCS8qIGRvIG5vdGhpbmcgKi8K PiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3Mg aQo+ICtpbnRlbHZpcGZiX2RybV9lbmNvZGVyX2hlbHBlciA9IHsKPiArCS5tb2RlX3NldCA9IGlu dGVsdmlwZmJfbW9kZV9zZXQsCj4gKwkuZW5hYmxlID0gaW50ZWx2aXBmYl9ub3AsCj4gKwkuZGlz YWJsZSA9IGludGVsdmlwZmJfbm9wLAo+ICt9Owo+ICsKPiAraW50IGludGVsdmlwZmJfZHJtX2Nv bm5faW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2VuY29k ZXJfc2xhdmUgKmVuY29kZXI7Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubjsKPiArCWlu dCByZXQ7Cj4gKwo+ICsJZW5jb2RlciA9IGRldm1fa3phbGxvYyhkcm0tPmRldiwgc2l6ZW9mKCpl bmNvZGVyKSwKPiBHRlBfS0VSTkVMKTsKPiArCWlmICghZW5jb2RlcikKPiArCQlyZXR1cm4gLUVO T01FTTsKPiArCj4gKwllbmNvZGVyLT5iYXNlLnBvc3NpYmxlX2NydGNzID0gMTsKPiArCWVuY29k ZXItPmJhc2UucG9zc2libGVfY2xvbmVzID0gMDsKPiArCj4gKwlyZXQgPSBkcm1fZW5jb2Rlcl9p bml0KGRybSwgJmVuY29kZXItPmJhc2UsCj4gKwkJCcKgwqDCoMKgwqDCoMKgJmludGVsdmlwZmJf ZHJtX2VuY29kZXJfZnVuY3MsCj4gKwkJCcKgwqDCoMKgwqDCoMKgRFJNX01PREVfRU5DT0RFUl9W SVJUVUFMLCBOVUxMKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlkcm1f ZW5jb2Rlcl9oZWxwZXJfYWRkKCZlbmNvZGVyLT5iYXNlLAo+ICZpbnRlbHZpcGZiX2RybV9lbmNv ZGVyX2hlbHBlcik7Cj4gKwo+ICsJY29ubiA9IGRldm1fa3phbGxvYyhkcm0tPmRldiwgc2l6ZW9m KCpjb25uKSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoSVNfRVJSKGNvbm4pKQo+ICsJCXJldHVybiBQ VFJfRVJSKGNvbm4pOwo+ICsKPiArCXJldCA9IGRybV9jb25uZWN0b3JfaW5pdChkcm0sIGNvbm4s Cj4gJmludGVsdmlwZmJfZHJtX2Nvbm5lY3Rvcl9mdW5jcywKPiArCQkJCcKgRFJNX01PREVfQ09O TkVDVE9SX0Rpc3BsYXlQb3J0KTsKPiArCWlmIChyZXQgPCAwKSB7Cj4gKwkJZGV2X2Vycihkcm0t PmRldiwgImZhaWxlZCB0byBpbml0aWFsaXplIGRybQo+IGNvbm5lY3RvclxuIik7Cj4gKwkJcmV0 ID0gLUVOT01FTTsKPiArCQlnb3RvIGVycm9yX2VuY29kZXJfY2xlYW51cDsKPiArCX0KPiArCj4g Kwlkcm1fY29ubmVjdG9yX2hlbHBlcl9hZGQoY29ubiwKPiAmaW50ZWx2aXBmYl9kcm1fY29ubmVj dG9yX2hlbHBlcl9mdW5jcyk7Cj4gKwo+ICsJcmV0ID0gZHJtX21vZGVfY29ubmVjdG9yX2F0dGFj aF9lbmNvZGVyKGNvbm4sICZlbmNvZGVyLQo+ID5iYXNlKTsKPiArCWlmIChyZXQgPCAwKSB7Cj4g KwkJZGV2X2Vycihkcm0tPmRldiwgImNvdWxkIG5vdCBhdHRhY2ggY29ubmVjdG9yIHRvCj4gZW5j b2RlclxuIik7Cj4gKwkJZHJtX2Nvbm5lY3Rvcl91bnJlZ2lzdGVyKGNvbm4pOwo+ICsJCWdvdG8g ZXJyb3JfY29ubmVjdG9yX2NsZWFudXA7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ICtl cnJvcl9jb25uZWN0b3JfY2xlYW51cDoKPiArCWRybV9jb25uZWN0b3JfY2xlYW51cChjb25uKTsK PiArCj4gK2Vycm9yX2VuY29kZXJfY2xlYW51cDoKPiArCWRybV9lbmNvZGVyX2NsZWFudXAoJmVu Y29kZXItPmJhc2UpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX2NvcmUuYwo+IGIvZHJpdmVycy9ncHUvZHJtL2l2 aXAvaW50ZWxfdmlwX2NvcmUuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAw MC4uMzAwMWFkMAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaXZpcC9p bnRlbF92aXBfY29yZS5jCj4gQEAgLTAsMCArMSwyMTUgQEAKPiArLyoKPiArICogaW50ZWxfdmlw X2NvcmUuYyAtLSBJbnRlbCBWaWRlbyBhbmQgSW1hZ2UgUHJvY2Vzc2luZyhWSVApCj4gKyAqIEZy YW1lIEJ1ZmZlciBJSSBkcml2ZXIKPiArICoKPiArICogVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhl IEludGVsIFZJUCBGcmFtZSBSZWFkZXIgY29tcG9uZW50Lgo+ICsgKiBNb3JlIGluZm8gb24gdGhl IGhhcmR3YXJlIGNhbiBiZSBmb3VuZCBpbiB0aGUgSW50ZWwgVmlkZW8KPiArICogYW5kIEltYWdl IFByb2Nlc3NpbmcgU3VpdGUgVXNlciBHdWlkZSBhdCB0aGlzIGFkZHJlc3MKPiArICogaHR0cDov L3d3dy5hbHRlcmEuY29tL2xpdGVyYXR1cmUvdWcvdWdfdmlwLnBkZi4KPiArICoKPiArICogVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v cgo+IG1vZGlmeSBpdAo+ICsgKiB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAo+ICsgKiB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgo+ICsgKgo+ICsgKiBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAo+IFdJ VEhPVVQKPiArICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKPiBNRVJDSEFOVEFCSUxJVFkgb3IKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuwqDCoFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljCj4gTGljZW5zZSBmb3IKPiAr ICogbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBBdXRob3JzOgo+ICsgKiBPbmcsIEhlYW4tTG9v bmcgPGhlYW4ubG9vbmcub25nQGludGVsLmNvbT4KPiArICoKPiArICovCj4gKwo+ICsjaW5jbHVk ZSA8bGludXgvaW5pdC5oPgo+ICsjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC9tb2R1bGUuaD4KPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ICsjaW5jbHVk ZSA8ZHJtL2RybV9hdG9taWMuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5o Pgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2Ry bV9mYl9oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZmJfY21hX2hlbHBlci5oPgo+ICsj aW5jbHVkZSA8ZHJtL2RybV9nZW1fY21hX2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9v Zi5oPgo+ICsKPiArI2luY2x1ZGUgImludGVsX3ZpcF9kcnYuaCIKPiArCj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGludGVsdmlwZmJfZHJtX2ZvcHMgPSB7Cj4gKwkub3du ZXIJCT0gVEhJU19NT0RVTEUsCj4gKwkub3BlbgkJPSBkcm1fb3BlbiwKPiArCS5yZWxlYXNlCT0g ZHJtX3JlbGVhc2UsCj4gKwkudW5sb2NrZWRfaW9jdGwJPSBkcm1faW9jdGwsCj4gKwkucG9sbAkJ PSBkcm1fcG9sbCwKPiArCS5yZWFkCQk9IGRybV9yZWFkLAo+ICsJLmxsc2VlawkJPSBub19sbHNl ZWssCj4gKwkubW1hcAkJPSBkcm1fZ2VtX2NtYV9tbWFwLAo+ICt9Owo+ICsKPiArc3RhdGljIHZv aWQgaW50ZWx2aXBmYl9sYXN0Y2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRybSkKPiArewo+ICsJ c3RydWN0IGludGVsdmlwZmJfcHJpdiAqZmJwcml2ID0gZHJtLT5kZXZfcHJpdmF0ZTsKPiArCj4g Kwlkcm1fZmJkZXZfY21hX3Jlc3RvcmVfbW9kZShmYnByaXYtPmZiY21hKTsKPiArfQo+ICsKPiAr c3RhdGljIHN0cnVjdCBkcm1fZHJpdmVyIGludGVsdmlwZmJfZHJtID0gewo+ICsJLmRyaXZlcl9m ZWF0dXJlcyA9Cj4gKwnCoMKgwqDCoERSSVZFUl9HRU0gfCBEUklWRVJfUFJJTUUgfAo+ICsJwqDC oMKgwqBEUklWRVJfUkVOREVSIHwgRFJJVkVSX01PREVTRVQgfCBEUklWRVJfQVRPTUlDLAo+ICsJ LmdlbV9mcmVlX29iamVjdF91bmxvY2tlZCA9IGRybV9nZW1fY21hX2ZyZWVfb2JqZWN0LAo+ICsJ LmdlbV92bV9vcHMgPSAmZHJtX2dlbV9jbWFfdm1fb3BzLAo+ICsJLmR1bWJfY3JlYXRlID0gZHJt X2dlbV9jbWFfZHVtYl9jcmVhdGUsCj4gKwkuZHVtYl9tYXBfb2Zmc2V0ID0gZHJtX2dlbV9jbWFf ZHVtYl9tYXBfb2Zmc2V0LAo+ICsJLmR1bWJfZGVzdHJveSA9IGRybV9nZW1fZHVtYl9kZXN0cm95 LAo+ICsJLnByaW1lX2hhbmRsZV90b19mZCA9IGRybV9nZW1fcHJpbWVfaGFuZGxlX3RvX2ZkLAo+ ICsJLnByaW1lX2ZkX3RvX2hhbmRsZSA9IGRybV9nZW1fcHJpbWVfZmRfdG9faGFuZGxlLAo+ICsJ LmdlbV9wcmltZV9leHBvcnQgPSBkcm1fZ2VtX3ByaW1lX2V4cG9ydCwKPiArCS5nZW1fcHJpbWVf aW1wb3J0ID0gZHJtX2dlbV9wcmltZV9pbXBvcnQsCj4gKwkuZ2VtX3ByaW1lX2dldF9zZ190YWJs ZSA9IGRybV9nZW1fY21hX3ByaW1lX2dldF9zZ190YWJsZSwKPiArCS5nZW1fcHJpbWVfaW1wb3J0 X3NnX3RhYmxlID0KPiBkcm1fZ2VtX2NtYV9wcmltZV9pbXBvcnRfc2dfdGFibGUsCj4gKwkuZ2Vt X3ByaW1lX3ZtYXAgPSBkcm1fZ2VtX2NtYV9wcmltZV92bWFwLAo+ICsJLmdlbV9wcmltZV92dW5t YXAgPSBkcm1fZ2VtX2NtYV9wcmltZV92dW5tYXAsCj4gKwkuZ2VtX3ByaW1lX21tYXAgPSBkcm1f Z2VtX2NtYV9wcmltZV9tbWFwLAo+ICsJLm5hbWUgPSBEUklWRVJfTkFNRSwKPiArCS5kYXRlID0g IjIwMTcwMzI5IiwKPiArCS5kZXNjID0gIkludGVsIEZQR0EgVklQIFNVSVRFIiwKPiArCS5tYWpv ciA9IDEsCj4gKwkubWlub3IgPSAwLAo+ICsJLnBhdGNobGV2ZWwgPSAwLAo+ICsJLmxhc3RjbG9z ZSA9IGludGVsdmlwZmJfbGFzdGNsb3NlLAo+ICsJLmZvcHMgPSAmaW50ZWx2aXBmYl9kcm1fZm9w cywKPiArfTsKPiArCj4gK3N0YXRpYyB2b2lkIGludGVsdmlwZmJfc3RhcnRfaHcodm9pZCBfX2lv bWVtICpiYXNlLCByZXNvdXJjZV9zaXplX3QKPiBhZGRyKQo+ICt7Cj4gKwkvKgo+ICsJwqAqIFRo ZSBmcmFtZWluZm8gdmFyaWFibGUgaGFzIHRvIGNvcnJlc3BvbmQgdG8gdGhlIHNpemUgb2YKPiB0 aGUgVklQIFN1aXRlCj4gKwnCoCogRnJhbWUgUmVhZGVyIHJlZ2lzdGVyIDcgd2hpY2ggd2lsbCBk ZXRlcm1pbmUgdGhlIG1heGltdW0KPiBzaXplIHVzZWQKPiArCcKgKiBpbiB0aGlzIGZyYW1laW5m bwo+ICsJwqAqLwo+ICsKPiArCXUzMiBmcmFtZWluZm87Cj4gKwo+ICsJZnJhbWVpbmZvID0KPiAr CQlyZWFkbChiYXNlICsgSU5URUxWSVBGQl9GUkFNRV9SRUFERVIpICYgMHgwMGZmZmZmZjsKPiAr Cj4gKwl3cml0ZWwoZnJhbWVpbmZvLCBiYXNlICsgSU5URUxWSVBGQl9GUkFNRV9JTkZPKTsKPiAr Cj4gKwl3cml0ZWwoYWRkciwgYmFzZSArIElOVEVMVklQRkJfRlJBTUVfU1RBUlQpOwo+ICsJLyog RmluYWxseSBzZXQgdGhlIGNvbnRyb2wgcmVnaXN0ZXIgdG8gMSB0byBzdGFydCBzdHJlYW1pbmcK PiAqLwo+ICsJd3JpdGVsKDEsIGJhc2UgKyBJTlRFTFZJUEZCX0NPTlRST0wpOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZCBpbnRlbHZpcGZiX2Rpc2FibGVfaHcodm9pZCBfX2lvbWVtICpiYXNlKQo+ ICt7Cj4gKwkvKiBzZXQgdGhlIGNvbnRyb2wgcmVnaXN0ZXIgdG8gMCB0byBzdG9wIHN0cmVhbWlu ZyAqLwo+ICsJd3JpdGVsKDAsIGJhc2UgKyBJTlRFTFZJUEZCX0NPTlRST0wpOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZCBpbnRlbHZpcGZiX291dHB1dF9wb2xsX2NoYW5nZWQoc3RydWN0IGRybV9k ZXZpY2UgKmRybSkKPiArewo+ICsJc3RydWN0IGludGVsdmlwZmJfcHJpdiAqZmJwcml2ID0gZHJt LT5kZXZfcHJpdmF0ZTsKPiArCj4gKwlkcm1fZmJkZXZfY21hX2hvdHBsdWdfZXZlbnQoZmJwcml2 LT5mYmNtYSk7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmln X2Z1bmNzCj4gaW50ZWx2aXBmYl9tb2RlX2NvbmZpZ19mdW5jcyA9IHsKPiArCS5mYl9jcmVhdGUg PSBkcm1fZmJfY21hX2NyZWF0ZSwKPiArCS5vdXRwdXRfcG9sbF9jaGFuZ2VkID0gaW50ZWx2aXBm Yl9vdXRwdXRfcG9sbF9jaGFuZ2VkLAo+ICsJLmF0b21pY19jaGVjayA9IGRybV9hdG9taWNfaGVs cGVyX2NoZWNrLAo+ICsJLmF0b21pY19jb21taXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jb21taXQs Cj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGRybV9tb2RlX2NvbmZpZ19oZWxwZXJfZnVuY3MK PiBpbnRlbHZpcGZiX21vZGVfY29uZmlnX2hlbHBlcnMgPSB7Cj4gKwkuYXRvbWljX2NvbW1pdF90 YWlsID0gZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3RhaWwsCj4gK307Cj4gKwo+ICtzdGF0aWMg dm9pZCBpbnRlbHZpcGZiX3NldHVwX21vZGVfY29uZmlnKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0s Cj4gKwkJCQkJwqBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKPiArewo+ICsJZHJtX21vZGVfY29uZmln X2luaXQoZHJtKTsKPiArCWRybS0+bW9kZV9jb25maWcubWluX3dpZHRoID0gMDsKPiArCWRybS0+ bW9kZV9jb25maWcubWluX2hlaWdodCA9IDA7Cj4gKwlkcm0tPm1vZGVfY29uZmlnLm1heF93aWR0 aCA9IGluZm8tPnZhci54cmVzOwo+ICsJZHJtLT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0ID0gaW5m by0+dmFyLnlyZXM7Cj4gKwlkcm0tPm1vZGVfY29uZmlnLnByZWZlcnJlZF9kZXB0aCA9IDMyOwo+ ICsJZHJtLT5tb2RlX2NvbmZpZy5mdW5jcyA9ICZpbnRlbHZpcGZiX21vZGVfY29uZmlnX2Z1bmNz Owo+ICsJZHJtLT5tb2RlX2NvbmZpZy5oZWxwZXJfcHJpdmF0ZSA9Cj4gJmludGVsdmlwZmJfbW9k ZV9jb25maWdfaGVscGVyczsKPiArfQo+ICsKPiAraW50IGludGVsdmlwZmJfcHJvYmUoc3RydWN0 IGRldmljZSAqZGV2LCB2b2lkIF9faW9tZW0gKmJhc2UpCj4gK3sKPiArCWludCByZXR2YWw7Cj4g KwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtOwo+ICsJc3RydWN0IGludGVsdmlwZmJfcHJpdiAqZmJw cml2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwlzdHJ1Y3QgZmJfaW5mbyAqaW5mbyA9ICZm YnByaXYtPmluZm87Cj4gKwo+ICsJLypzZXR1cCBEUk0gKi8KPiArCWRybSA9IGRybV9kZXZfYWxs b2MoJmludGVsdmlwZmJfZHJtLCBkZXYpOwo+ICsJaWYgKElTX0VSUihkcm0pKQo+ICsJCXJldHVy biBQVFJfRVJSKGRybSk7Cj4gKwo+ICsJZHJtLT5kZXZfcHJpdmF0ZSA9IGZicHJpdjsKPiArCj4g KwlkZXZfc2V0X2RydmRhdGEoZGV2LCBkcm0pOwo+ICsKPiArCWludGVsdmlwZmJfc2V0dXBfbW9k ZV9jb25maWcoZHJtLCBpbmZvKTsKPiArCj4gKwlyZXR2YWwgPSBkbWFfc2V0X21hc2tfYW5kX2Nv aGVyZW50KGRybS0+ZGV2LAo+IERNQV9CSVRfTUFTSygzMikpOwo+ICsJaWYgKHJldHZhbCkKPiAr CQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gKwlyZXR2YWwgPSBpbnRlbHZpcGZiX3NldHVwX2NydGMo ZHJtKTsKPiArCWlmIChyZXR2YWwgPCAwKQo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsKPiArCXJl dHZhbCA9IGludGVsdmlwZmJfZHJtX2Nvbm5faW5pdChkcm0pOwo+ICsJaWYgKHJldHZhbCkKPiAr CQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwlkcm1fbW9kZV9jb25maWdfcmVzZXQoZHJtKTsKPiAr Cj4gKwlmYnByaXYtPmZiY21hID0gZHJtX2ZiZGV2X2NtYV9pbml0KGRybSwgUFJFRl9CUFAsCj4g KwkJCQkJCQlDUlRDX05VTSwKPiBDT05OX05VTSk7Cj4gKwlpZiAoIWZicHJpdi0+ZmJjbWEpIHsK PiArCQlmYnByaXYtPmZiY21hID0gTlVMTDsKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCX0KPiAr Cj4gKwlpbnRlbHZpcGZiX3N0YXJ0X2h3KGJhc2UsIGRybS0+bW9kZV9jb25maWcuZmJfYmFzZSk7 Cj4gKwo+ICsJZHJtX2ttc19oZWxwZXJfcG9sbF9pbml0KGRybSk7Cj4gKwo+ICsJZHJtX2Rldl9y ZWdpc3Rlcihkcm0sIDApOwo+ICsKPiArCXJldHVybiByZXR2YWw7Cj4gK30KPiArRVhQT1JUX1NZ TUJPTF9HUEwoaW50ZWx2aXBmYl9wcm9iZSk7Cj4gKwo+ICtpbnQgaW50ZWx2aXBmYl9yZW1vdmUo c3RydWN0IGRldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gZGV2 X2dldF9kcnZkYXRhKGRldik7Cj4gKwlzdHJ1Y3QgaW50ZWx2aXBmYl9wcml2ICpmYnByaXYgPSBk cm0tPmRldl9wcml2YXRlOwo+ICsKPiArCWRybV9kZXZfdW5yZWdpc3Rlcihkcm0pOwo+ICsKPiAr CWRybV9rbXNfaGVscGVyX3BvbGxfZmluaShkcm0pOwo+ICsJZHJtX2ZiZGV2X2NtYV9maW5pKGZi cHJpdi0+ZmJjbWEpOwo+ICsKPiArCWludGVsdmlwZmJfZGlzYWJsZV9odyhmYnByaXYtPmJhc2Up Owo+ICsKPiArZHJtX21vZGVfY29uZmlnX2NsZWFudXAoZHJtKTsKPiArCj4gK2RybV9kZXZfdW5y ZWYoZHJtKTsKPiArCj4gK2Rldm1fa2ZyZWUoZGV2LCBmYnByaXYpOwo+ICsKPiArCXJldHVybiAw Owo+ICt9Cj4gK0VYUE9SVF9TWU1CT0xfR1BMKGludGVsdmlwZmJfcmVtb3ZlKTsKPiArCj4gK01P RFVMRV9BVVRIT1IoIk9uZywgSGVhbi1Mb29uZyA8aGVhbi5sb29uZy5vbmdAaW50ZWwuY29tPiIp Owo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIkludGVsIFZJUCBGcmFtZSBCdWZmZXIgSUkgZHJpdmVy Iik7Cj4gK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2l2aXAvaW50ZWxfdmlwX2NydGMuYwo+IGIvZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50 ZWxfdmlwX2NydGMuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uOTdh Mzk1NAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92 aXBfY3J0Yy5jCj4gQEAgLTAsMCArMSwxNjEgQEAKPiArLyoKPiArICogaW50ZWxfdmlwX2NydGMu YyAtLSBJbnRlbCBWaWRlbyBhbmQgSW1hZ2UgUHJvY2Vzc2luZyhWSVApCj4gKyAqIEZyYW1lIEJ1 ZmZlciBJSSBkcml2ZXIKPiArICoKPiArICogVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIEludGVs IFZJUCBGcmFtZSBSZWFkZXIgY29tcG9uZW50Lgo+ICsgKiBNb3JlIGluZm8gb24gdGhlIGhhcmR3 YXJlIGNhbiBiZSBmb3VuZCBpbiB0aGUgSW50ZWwgVmlkZW8KPiArICogYW5kIEltYWdlIFByb2Nl c3NpbmcgU3VpdGUgVXNlciBHdWlkZSBhdCB0aGlzIGFkZHJlc3MKPiArICogaHR0cDovL3d3dy5h bHRlcmEuY29tL2xpdGVyYXR1cmUvdWcvdWdfdmlwLnBkZi4KPiArICoKPiArICogVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+IG1v ZGlmeSBpdAo+ICsgKiB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAo+ICsgKiB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAo+IFdJVEhPVVQK PiArICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK PiBNRVJDSEFOVEFCSUxJVFkgb3IKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuwqDCoFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljCj4gTGljZW5zZSBmb3IKPiArICogbW9y ZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBBdXRob3JzOgo+ICsgKiBPbmcsIEhlYW4tTG9vbmcgPGhl YW4ubG9vbmcub25nQGludGVsLmNvbT4KPiArICoKPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGlu dXgvaW5pdC5oPgo+ICsjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4gKyNpbmNsdWRlIDxsaW51 eC9wbGF0Zm9ybV9kYXRhL3NpbXBsZWZiLmg+Cj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9t aWMuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8 ZHJtL2RybV9jcnRjLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+Cj4gKyNp bmNsdWRlIDxkcm0vZHJtX2ZiX2NtYV9oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZ2Vt X2NtYV9oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fcGxhbmVfaGVscGVyLmg+Cj4gKwo+ ICsjaW5jbHVkZSAiaW50ZWxfdmlwX2Rydi5oIgo+ICsKPiArc3RhdGljIHN0cnVjdCBzaW1wbGVm Yl9mb3JtYXQgaW50ZWx2aXBmYl9mb3JtYXRzW10gPQo+IFNJTVBMRUZCX0ZPUk1BVFM7Cj4gKwo+ ICtzdGF0aWMgdm9pZCBpbnRlbHZpcGZiX2NydGNfZGVzdHJveShzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpCj4gK3sKPiArCWRybV9jcnRjX2NsZWFudXAoY3J0Yyk7Cj4gKwlrZnJlZShjcnRjKTsKPiAr fQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19mdW5jcyBpbnRlbHZpcGZiX2Ny dGNfZnVuY3MgPSB7Cj4gKwkuZGVzdHJveSA9IGludGVsdmlwZmJfY3J0Y19kZXN0cm95LAo+ICsJ LnNldF9jb25maWcgPSBkcm1fYXRvbWljX2hlbHBlcl9zZXRfY29uZmlnLAo+ICsJLnBhZ2VfZmxp cCA9IGRybV9hdG9taWNfaGVscGVyX3BhZ2VfZmxpcCwKPiArCS5yZXNldCA9IGRybV9hdG9taWNf aGVscGVyX2NydGNfcmVzZXQsCj4gKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9Cj4gZHJtX2F0 b21pY19oZWxwZXJfY3J0Y19kdXBsaWNhdGVfc3RhdGUsCj4gKwkuYXRvbWljX2Rlc3Ryb3lfc3Rh dGUgPQo+IGRybV9hdG9taWNfaGVscGVyX2NydGNfZGVzdHJveV9zdGF0ZSwKPiArfTsKPiArCj4g K3N0YXRpYyB2b2lkIGludGVsdmlwZmJfY3J0Y19hdG9taWNfYmVnaW4oc3RydWN0IGRybV9jcnRj ICpjcnRjLAo+ICsJCQkJCcKgc3RydWN0IGRybV9jcnRjX3N0YXRlCj4gKnN0YXRlKQo+ICt7Cj4g KwlzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICpldmVudCA9IGNydGMtPnN0YXRlLT5l dmVudDsKPiArCj4gKwlpZiAoZXZlbnQpIHsKPiArCQljcnRjLT5zdGF0ZS0+ZXZlbnQgPSBOVUxM Owo+ICsKPiArCQlzcGluX2xvY2tfaXJxKCZjcnRjLT5kZXYtPmV2ZW50X2xvY2spOwo+ICsJCWRy bV9jcnRjX3NlbmRfdmJsYW5rX2V2ZW50KGNydGMsIGV2ZW50KTsKPiArCQlzcGluX3VubG9ja19p cnEoJmNydGMtPmRldi0+ZXZlbnRfbG9jayk7Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk IGludGVsdmlwZmJfY3J0Y19ub3Aoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICt7Cj4gKwkvKiBk byBub3RoaW5nICovOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2hl bHBlcl9mdW5jcwo+IGludGVsdmlwZmJfY3J0Y19oZWxwZXJfZnVuY3MgPSB7Cj4gKwkuYXRvbWlj X2JlZ2luCT0gaW50ZWx2aXBmYl9jcnRjX2F0b21pY19iZWdpbiwKPiArCS5lbmFibGUgPSBpbnRl bHZpcGZiX2NydGNfbm9wLAo+ICt9Owo+ICsKPiArc3RhdGljIHZvaWQgaW50ZWx2aXBmYl9wbGFu ZV9kZXN0cm95KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQo+ICt7Cj4gKwlkcm1fcGxhbmVfaGVs cGVyX2Rpc2FibGUocGxhbmUpOwo+ICsJZHJtX3BsYW5lX2NsZWFudXAocGxhbmUpOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBpbnRlbHZpcGZiX3BsYW5l X2Z1bmNzID0gewo+ICsJLnVwZGF0ZV9wbGFuZQkJPQo+IGRybV9hdG9taWNfaGVscGVyX3VwZGF0 ZV9wbGFuZSwKPiArCS5kaXNhYmxlX3BsYW5lCQk9Cj4gZHJtX2F0b21pY19oZWxwZXJfZGlzYWJs ZV9wbGFuZSwKPiArCS5kZXN0cm95CQk9IGludGVsdmlwZmJfcGxhbmVfZGVzdHJveSwKPiArCS5y ZXNldAkJCT0KPiBkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9yZXNldCwKPiArCS5hdG9taWNfZHVw bGljYXRlX3N0YXRlID0KPiBkcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kdXBsaWNhdGVfc3RhdGUs Cj4gKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUJPQo+IGRybV9hdG9taWNfaGVscGVyX3BsYW5lX2Rl c3Ryb3lfc3RhdGUsCj4gK307Cj4gKwo+ICtzdGF0aWMgdm9pZCBpbnRlbHZpcGZiX3BsYW5lX2F0 b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gKwkJCQkJwqDCoMKgc3RydWN0 IGRybV9wbGFuZV9zdGF0ZQo+ICpzdGF0ZSkKPiArewo+ICsJc3RydWN0IGludGVsdmlwZmJfcHJp diAqZmJwcml2Owo+ICsJc3RydWN0IGRybV9nZW1fY21hX29iamVjdCAqZ2VtOwo+ICsKPiArCWlm ICghcGxhbmUtPnN0YXRlLT5jcnRjIHx8ICFwbGFuZS0+c3RhdGUtPmZiKQo+ICsJCXJldHVybjsK PiArCj4gKwlmYnByaXYgPSBwbGFuZS0+ZGV2LT5kZXZfcHJpdmF0ZTsKPiArCWdlbSA9IGRybV9m Yl9jbWFfZ2V0X2dlbV9vYmoocGxhbmUtPnN0YXRlLT5mYiwgMCk7Cj4gKwl3cml0ZWwoZ2VtLT5w YWRkciwgZmJwcml2LT5iYXNlICsgSU5URUxWSVBGQl9GUkFNRV9TVEFSVCk7Cj4gK30KPiArCj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcwo+IGludGVsdmlwZmJf cGxhbmVfaGVscGVyX2Z1bmNzID0gewo+ICsJLmF0b21pY191cGRhdGUgPSBpbnRlbHZpcGZiX3Bs YW5lX2F0b21pY191cGRhdGUsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGRybV9wbGFuZSAq aW50ZWx2aXBmYl9wbGFuZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlCj4gKmRybSkKPiArewo+ICsJ c3RydWN0IGRybV9wbGFuZSAqcGxhbmUgPSBOVUxMOwo+ICsJdTMyIGZvcm1hdHNbQVJSQVlfU0la RShpbnRlbHZpcGZiX2Zvcm1hdHMpXSwgaTsKPiArCWludCByZXQ7Cj4gKwo+ICsJcGxhbmUgPSBk ZXZtX2t6YWxsb2MoZHJtLT5kZXYsIHNpemVvZigqcGxhbmUpLCBHRlBfS0VSTkVMKTsKPiArCWlm ICghcGxhbmUpCj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gKwo+ICsJZm9yIChpID0g MDsgaSA8IEFSUkFZX1NJWkUoaW50ZWx2aXBmYl9mb3JtYXRzKTsgaSsrKQo+ICsJCWZvcm1hdHNb aV0gPSBpbnRlbHZpcGZiX2Zvcm1hdHNbaV0uZm91cmNjOwo+ICsKPiArCXJldCA9IGRybV91bml2 ZXJzYWxfcGxhbmVfaW5pdChkcm0sIHBsYW5lLCAweGZmLAo+ICsJCQkJwqDCoMKgwqDCoMKgwqAm aW50ZWx2aXBmYl9wbGFuZV9mdW5jcywKPiArCQkJCcKgwqDCoMKgwqDCoMKgZm9ybWF0cywgQVJS QVlfU0laRShmb3JtYXRzKSwKPiArCQkJCcKgwqDCoMKgwqDCoMKgRFJNX1BMQU5FX1RZUEVfUFJJ TUFSWSwKPiBOVUxMKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiAr Cj4gKwlkcm1fcGxhbmVfaGVscGVyX2FkZChwbGFuZSwgJmludGVsdmlwZmJfcGxhbmVfaGVscGVy X2Z1bmNzKTsKPiArCj4gKwlyZXR1cm4gcGxhbmU7Cj4gK30KPiArCj4gK2ludCBpbnRlbHZpcGZi X3NldHVwX2NydGMoc3RydWN0IGRybV9kZXZpY2UgKmRybSkKPiArewo+ICsJc3RydWN0IGRybV9j cnRjICpjcnRjOwo+ICsJc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeTsKPiArCWludCByZXQ7Cj4g Kwo+ICsJY3J0YyA9IGt6YWxsb2Moc2l6ZW9mKCpjcnRjKSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAo IWNydGMpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJcHJpbWFyeSA9IGludGVsdmlwZmJf cGxhbmVfaW5pdChkcm0pOwo+ICsJaWYgKElTX0VSUihwcmltYXJ5KSkKPiArCQlyZXR1cm4gUFRS X0VSUihwcmltYXJ5KTsKPiArCj4gKwlyZXQgPSBkcm1fY3J0Y19pbml0X3dpdGhfcGxhbmVzKGRy bSwgY3J0YywgcHJpbWFyeSwgTlVMTCwKPiArCQkJCQkmaW50ZWx2aXBmYl9jcnRjX2Z1bmNzLAo+ IE5VTEwpOwo+ICsKPiArCWlmIChyZXQpIHsKPiArCQlpbnRlbHZpcGZiX3BsYW5lX2Rlc3Ryb3ko cHJpbWFyeSk7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlkcm1fY3J0Y19oZWxwZXJf YWRkKGNydGMsICZpbnRlbHZpcGZiX2NydGNfaGVscGVyX2Z1bmNzKTsKPiArCXJldHVybiAwOwo+ ICt9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9kcnYuaAo+ IGIvZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX2Rydi5oCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPiBpbmRleCAwMDAwMDAwLi42NTdmMjNjCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9kcnYuaAo+IEBAIC0wLDAgKzEsNTUgQEAKPiAr LyoKPiArICogQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENvcnBvcmF0aW9uLgo+ICsgKgo+ICsg KiBJbnRlbCBWaWRlbyBhbmQgSW1hZ2UgUHJvY2Vzc2luZyhWSVApIEZyYW1lIEJ1ZmZlciBJSSBk cml2ZXIuCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPiBtb2RpZnkgaXQKPiArICogdW5kZXIgdGhlIHRlcm1z IGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKPiArICog dmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4K PiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIGl0IHdp bGwgYmUgdXNlZnVsLCBidXQKPiBXSVRIT1VUCj4gKyAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gTUVSQ0hBTlRBQklMSVRZIG9yCj4gKyAqIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLsKgwqBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYwo+IExpY2Vuc2UgZm9yCj4gKyAqIG1vcmUgZGV0YWlscy4KPiArICoKPiArICogWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKPiBhbG9uZyB3aXRoCj4gKyAqIHRoaXMgcHJvZ3JhbS7CoMKgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgo+ICsgKgo+ICsgKiBBdXRob3JzOgo+ICsgKiBPbmcs IEhlYW4tTG9vbmcgPGhlYW4ubG9vbmcub25nQGludGVsLmNvbT4KPiArICoKPiArICovCj4gKyNp Zm5kZWYgX0lOVEVMX1ZJUF9EUlZfSAo+ICsjZGVmaW5lIF9JTlRFTF9WSVBfRFJWX0gKPiArI2lu Y2x1ZGUgPGxpbnV4L2lvLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9mYi5oPgo+ICsKPiArI2RlZmlu ZSBEUklWRVJfTkFNRQkiaW50ZWx2aXBmYiIKPiArI2RlZmluZSBCWVRFU19QRVJfUElYRUwJNAo+ ICsjZGVmaW5lIFBSRUZfQlBQCQkzMgo+ICsjZGVmaW5lIENSVENfTlVNCQkxCj4gKyNkZWZpbmUg Q09OTl9OVU0JCTEKPiArCj4gKy8qIGNvbnRyb2wgcmVnaXN0ZXJzICovCj4gKyNkZWZpbmUgSU5U RUxWSVBGQl9DT05UUk9MCQkwCj4gKyNkZWZpbmUgSU5URUxWSVBGQl9TVEFUVVMJCTB4NAo+ICsj ZGVmaW5lIElOVEVMVklQRkJfSU5URVJSVVBUCQkweDgKPiArI2RlZmluZSBJTlRFTFZJUEZCX0ZS QU1FX0NPVU5URVIJMHhDCj4gKyNkZWZpbmUgSU5URUxWSVBGQl9GUkFNRV9EUk9QCQkweDEwCj4g KyNkZWZpbmUgSU5URUxWSVBGQl9GUkFNRV9JTkZPCQkweDE0Cj4gKyNkZWZpbmUgSU5URUxWSVBG Ql9GUkFNRV9TVEFSVAkJMHgxOAo+ICsjZGVmaW5lIElOVEVMVklQRkJfRlJBTUVfUkVBREVSCQkw eDFDCj4gKwo+ICtpbnQgaW50ZWx2aXBmYl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQg X19pb21lbSAqYmFzZSk7Cj4gK2ludCBpbnRlbHZpcGZiX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpk ZXYpOwo+ICtpbnQgaW50ZWx2aXBmYl9zZXR1cF9jcnRjKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0p Owo+ICtpbnQgaW50ZWx2aXBmYl9kcm1fY29ubl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0p Owo+ICsKPiArc3RydWN0IGludGVsdmlwZmJfcHJpdiB7Cj4gKwlzdHJ1Y3QgZHJtX2ZiZGV2X2Nt YSAqZmJjbWE7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtOwo+ICsJc3RydWN0IGZiX2luZm8g aW5mbzsKPiArCXZvaWQJX19pb21lbQkJKmJhc2U7Cj4gK307Cj4gKwo+ICsjZW5kaWYKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX29mLmMKPiBiL2RyaXZlcnMv Z3B1L2RybS9pdmlwL2ludGVsX3ZpcF9vZi5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl eCAwMDAwMDAwLi4xN2RmZjM2Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pdmlwL2ludGVsX3ZpcF9vZi5jCj4gQEAgLTAsMCArMSwxNDYgQEAKPiArLyoKPiArICogaW50 ZWxfdmlwX29mLmMgLS0gSW50ZWwgVmlkZW8gYW5kIEltYWdlIFByb2Nlc3NpbmcoVklQKQo+ICsg KiBGcmFtZSBCdWZmZXIgSUkgZHJpdmVyCj4gKyAqCj4gKyAqIFRoaXMgZHJpdmVyIHN1cHBvcnRz IHRoZSBJbnRlbCBWSVAgRnJhbWUgUmVhZGVyIGNvbXBvbmVudC4KPiArICogTW9yZSBpbmZvIG9u IHRoZSBoYXJkd2FyZSBjYW4gYmUgZm91bmQgaW4gdGhlIEludGVsIFZpZGVvCj4gKyAqIGFuZCBJ bWFnZSBQcm9jZXNzaW5nIFN1aXRlIFVzZXIgR3VpZGUgYXQgdGhpcyBhZGRyZXNzCj4gKyAqIGh0 dHA6Ly93d3cuYWx0ZXJhLmNvbS9saXRlcmF0dXJlL3VnL3VnX3ZpcC5wZGYuCj4gKyAqCj4gKyAq IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IKPiBtb2RpZnkgaXQKPiArICogdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKPiArICogdmVyc2lvbiAyLCBhcyBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiArICoKPiArICogVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIGl0IHdpbGwgYmUgdXNlZnVsLCBidXQK PiBXSVRIT1VUCj4gKyAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCj4gTUVSQ0hBTlRBQklMSVRZIG9yCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLsKgwqBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwo+IExpY2Vuc2UgZm9y Cj4gKyAqIG1vcmUgZGV0YWlscy4KPiArICoKPiArICogQXV0aG9yczoKPiArICogT25nLCBIZWFu LUxvb25nIDxoZWFuLmxvb25nLm9uZ0BpbnRlbC5jb20+Cj4gKyAqCj4gKyAqLwo+ICsKPiArI2lu Y2x1ZGUgPGxpbnV4L2ZiLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Cj4gKyNpbmNsdWRl IDxsaW51eC9rZXJuZWwuaD4KPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ICsjaW5jbHVk ZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2RybV9mYl9o ZWxwZXIuaD4KPiArI2luY2x1ZGUgImludGVsX3ZpcF9kcnYuaCIKPiArCj4gKy8qCj4gKyAqIFNl dHRpbmcgdXAgaW5mb3JtYXRpb24gZGVyaXZlZCBmcm9tIE9GIERldmljZSBUcmVlIE5vZGVzCj4g KyAqIG1heC13aWR0aCwgbWF4LWhlaWdodCwgYml0cyBwZXIgcGl4ZWwsIG1lbW9yeSBwb3J0IHdp ZHRoCj4gKyAqLwo+ICsKPiArc3RhdGljIGludCBpbnRlbHZpcGZiX29mX3NldHVwKHN0cnVjdCBp bnRlbHZpcGZiX3ByaXYgKmZiZGF0YSwKPiArCQkJwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsJaW50IG1lbV93b3JkX3dpZHRo Owo+ICsJdTMyIGJpdHNfcGVyX2NvbG9yOwo+ICsJc3RydWN0IGRldmljZV9ub2RlICpucCA9IHBk ZXYtPmRldi5vZl9ub2RlOwo+ICsKPiArCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAi YWx0cixtYXgtd2lkdGgiLAo+ICsJCQkJwqDCoMKgJmZiZGF0YS0+aW5mby52YXIueHJlcyk7Cj4g KwlpZiAocmV0KSB7Cj4gKwkJZGV2X2VycigmcGRldi0+ZGV2LAo+ICsJCQkiTWlzc2luZyByZXF1 aXJlZCBwYXJhbWV0ZXIgJ2FsdHIsbWF4LQo+IHdpZHRoJyIpOwo+ICsJCXJldHVybiByZXQ7Cj4g Kwl9Cj4gKwlmYmRhdGEtPmluZm8udmFyLnhyZXNfdmlydHVhbCA9IGZiZGF0YS0+aW5mby52YXIu eHJlczsKPiArCj4gKwlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgImFsdHIsbWF4LWhl aWdodCIsCj4gKwkJCQnCoMKgwqAmZmJkYXRhLT5pbmZvLnZhci55cmVzKTsKPiArCWlmIChyZXQp IHsKPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsCj4gKwkJCSJNaXNzaW5nIHJlcXVpcmVkIHBhcmFt ZXRlciAnYWx0cixtYXgtCj4gaGVpZ2h0JyIpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwlm YmRhdGEtPmluZm8udmFyLnlyZXNfdmlydHVhbCA9IGZiZGF0YS0+aW5mby52YXIueXJlczsKPiAr Cj4gKwlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgImFsdHIsYml0cy1wZXItc3ltYm9s IiwKPiAmYml0c19wZXJfY29sb3IpOwo+ICsJaWYgKHJldCkgewo+ICsJCWRldl9lcnIoJnBkZXYt PmRldiwKPiArCQkJIk1pc3NpbmcgcmVxdWlyZWQgcGFyYW1ldGVyICdhbHRyLGJpdHMtcGVyLQo+ IHN5bWJvbCciKTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCWZiZGF0YS0+aW5mby52 YXIuYml0c19wZXJfcGl4ZWwgPSBiaXRzX3Blcl9jb2xvciAqCj4gQllURVNfUEVSX1BJWEVMOwo+ ICsKPiArCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAiYWx0cixtZW0tcG9ydC13aWR0 aCIsCj4gJm1lbV93b3JkX3dpZHRoKTsKPiArCWlmIChyZXQpIHsKPiArCQlkZXZfZXJyKCZwZGV2 LT5kZXYsCj4gKwkJCSJNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlciAnYWx0cixtZW0tcG9ydC0K PiB3aWR0aCAnIik7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlpZiAoIShtZW1fd29y ZF93aWR0aCA+PSAzMiAmJiBtZW1fd29yZF93aWR0aCAlIDMyID09IDApKSB7Cj4gKwkJZGV2X2Vy cigmcGRldi0+ZGV2LAo+ICsJCQkibWVtLXdvcmQtd2lkdGggaXMgc2V0IHRvICVpLiBtdXN0IGJl ID49IDMyCj4gYW5kIG11bHRpcGxlIG9mIDMyLiIsCj4gKwkJCcKgbWVtX3dvcmRfd2lkdGgpOwo+ ICsJCXJldHVybiAtRU5PREVWOwo+ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtz dGF0aWMgaW50IGludGVsdmlwZmJfb2ZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl dikKPiArewo+ICsJaW50IHJldHZhbDsKPiArCXN0cnVjdCByZXNvdXJjZSAqcmVnX3JlczsKPiAr CXN0cnVjdCBpbnRlbHZpcGZiX3ByaXYgKmZiZGF0YTsKPiArCj4gKwlmYmRhdGEgPSBkZXZtX2t6 YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpmYmRhdGEpLAo+IEdGUF9LRVJORUwpOwo+ICsJaWYg KCFmYmRhdGEpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJcmVnX3JlcyA9IHBsYXRmb3Jt X2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7Cj4gKwlpZiAoIXJlZ19yZXMp Cj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJZmJkYXRhLT5iYXNlID0gZGV2bV9pb3JlbWFw X3Jlc291cmNlKCZwZGV2LT5kZXYsIHJlZ19yZXMpOwo+ICsKPiArCWlmIChJU19FUlIoZmJkYXRh LT5iYXNlKSkgewo+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwgImRldm1faW9yZW1hcF9yZXNvdXJj ZQo+IGZhaWxlZFxuIik7Cj4gKwkJcmV0dmFsID0gUFRSX0VSUihmYmRhdGEtPmJhc2UpOwo+ICsJ CXJldHVybiAtRU5PTUVNOwo+ICsJfQo+ICsKPiArCWludGVsdmlwZmJfb2Zfc2V0dXAoZmJkYXRh LCBwZGV2KTsKPiArCj4gKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBmYmRhdGEpOwo+ICsK PiArCXJldHVybiBpbnRlbHZpcGZiX3Byb2JlKCZwZGV2LT5kZXYsIGZiZGF0YS0+YmFzZSk7Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQgaW50ZWx2aXBmYl9vZl9yZW1vdmUoc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqcGRldikKPiArewo+ICsJcmV0dXJuIGludGVsdmlwZmJfcmVtb3ZlKCZwZGV2LT5k ZXYpOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBUaGUgbmFtZSB2aXAtZnJhbWUtYnVmZmVyLTIuMCBp cyBkZXJpdmVkIGZyb20KPiArICogaHR0cDovL3d3dy5hbHRlcmEuY29tL2xpdGVyYXR1cmUvdWcv dWdfdmlwLnBkZgo+ICsgKiBmcmFtZSBidWZmZXIgSVAgY29yZXMgc2VjdGlvbiAxNAo+ICsgKi8K PiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGludGVsdmlwZmJfb2ZfbWF0 Y2hbXSA9IHsKPiArCXsgLmNvbXBhdGlibGUgPSAiYWx0cix2aXAtZnJhbWUtYnVmZmVyLTIuMCIg fSwKPiArCXt9LAo+ICt9Owo+ICsKPiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgaW50ZWx2aXBm Yl9vZl9tYXRjaCk7Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBpbnRlbHZp cGZiX2RyaXZlciA9IHsKPiArCS5wcm9iZSA9IGludGVsdmlwZmJfb2ZfcHJvYmUsCj4gKwkucmVt b3ZlID0gaW50ZWx2aXBmYl9vZl9yZW1vdmUsCj4gKwkuZHJpdmVyID0gewo+ICsJCS5uYW1lID0g RFJJVkVSX05BTUUsCj4gKwkJLm9mX21hdGNoX3RhYmxlID0gaW50ZWx2aXBmYl9vZl9tYXRjaCwK PiArCX0sCj4gK307Cj4gKwo+ICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGludGVsdmlwZmJfZHJp dmVyKTsKPiAtLcKgCj4gMS43LjEKPiAKPiAKPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ IEZyb206IE9uZywgSGVhbiBMb29uZ8KgCj4gU2VudDogRnJpZGF5LCBNYXJjaCAzMSwgMjAxNyA1 OjA5IFBNCj4gVG86IFZldHRlciwgRGFuaWVsIDxkYW5pZWwudmV0dGVyQGludGVsLmNvbT47IGFp cmxpZWRAbGludXguaWUKPiBDYzogZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IFN1 YmplY3Q6IERSTSBEaXNwbGF5IGRyaXZlciBmb3IgSW50ZWwgRlBHQSBWaWRlbyBhbmQgSW1hZ2Ug UHJvY2Vzc2luZwo+IFN1aXRlCj4gCj4gSGksCj4gCj4gSSB3b3VsZCBsaWtlIHRvIHVwc3RyZWFt IHRoZSBhdHRhY2hlZCBJbnRlbCBGUEdBIFZpZGVvIGFuZCBJbWFnZQo+IFByb2Nlc3NpbmcgU3Vp dGUuIFRoZSBhdHRhY2hlZCBwYXRjaCBzdXBwb3J0cyB0aGUgSW50ZWwgQXJyaWExMAo+IGRldmtp dCBhbmQgaXRzIHZhcmlhbnRzLiBUaGUgcHVycG9zZSBvZiB0aGUgcGF0Y2ggaXMgdG8gZW5hYmxl IHRoZQo+IEZQR0EgZHJpdmVuIGRpc3BsYXkgZGVzaWduZWQgZnJvbSB0aGUgSW50ZWwgUXVhcnR1 cyBGUEdBIGRlc2lnbgo+IHN1aXRlLgo+IAo+IFRoZSBkcml2ZXIgaXMgcmVxdWlyZWQgYXMgcGFy dCBvZiB0aGUgSW50ZWwgQXJyaWExMCBkZXZraXQgcmVmZXJlbmNlCj4gZGVzaWduLiBUaGUgZHJp dmVyIHdhcyB0ZXN0ZWQgb246Cj4gLSBUaGUgT3BlbiBFbWJlZGRlZCBBbmdzdHJvbSBEaXN0cm8u Cj4gLSBUaGUgbWF0Y2hib3gtdGVybWluYWwgYW5kIHdpbmRvdy1tYW5hZ2VyIHdhcyB1c2VkIGZv ciBmdW5jdGlvbmFsCj4gdGVzdGluZwo+IAo+IEN1cnJlbnQgdGhlIGludGVudGlvbiBvZiB0aGUg ZHJpdmVyIGlzIG1lYW50IHRvIHZhbGlkYXRlIHRoZSBGUEdBCj4gZGVzaWducyBvbiB0aGUgQXJy aWExMCBkZXZraXQgZm9yIERpc3BsYXkgUG9ydCBjb25uZWN0ZXIuIFdlIGhhdmUgbm90Cj4gdmVy aWZpZWQgaXRzIHBlcmZvcm1hbmNlIG9mIG9yIHN0YWJpbGl0eSBpbiAzRCBhY2NlbGVyYXRpb24g b3Igb3RoZXIKPiBub24gSW50ZWwgRlBHQSBoYXJkd2FyZQo+IAo+IEJSCj4gCj4gSGVhbiBMb29u ZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK