From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCHv11 3/3] ARM:drm ivip Intel FPGA Video and Image Processing Suite Date: Thu, 28 Feb 2019 15:10:09 +0100 Message-ID: <20190228141009.GP2665@phenom.ffwll.local> References: <20190211021110.2717-1-hean.loong.ong@intel.com> <20190211021110.2717-4-hean.loong.ong@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20190211021110.2717-4-hean.loong.ong@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "Hean-Loong, Ong" Cc: devicetree@vger.kernel.org, Rienk de Jong , chin.liang.see@intel.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Dinh Nguyen , Rob Herring , Daniel Vetter , linux-arm-kernel@lists.infradead.org, Ong@freedesktop.org List-Id: devicetree@vger.kernel.org T24gTW9uLCBGZWIgMTEsIDIwMTkgYXQgMTA6MTE6MTBBTSArMDgwMCwgSGVhbi1Mb29uZywgT25n IHdyb3RlOgo+IEZyb206IE9uZywgSGVhbiBMb29uZyA8aGVhbi5sb29uZy5vbmdAaW50ZWwuY29t Pgo+IAo+IFNpZ25lZC1vZmYtYnk6IE9uZywgSGVhbiBMb29uZyA8aGVhbi5sb29uZy5vbmdAaW50 ZWwuY29tPgoKUGVyLXBhdGNoIGNoYW5nZWxvZyBpcyBtaXNzaW5nIGhlcmUsIHdvdWxkIGJlIGdv b2QgdG8gaW5jbHVkZSB0aGF0IHRvIGhlbHAKcmV2aWV3ZXJzLiBJJ3ZlIGRvbmUgYSB2ZXJ5IHF1 aWNrIHNjcm9sbCB0aHJvdWdoLCBsb29rcyBsaWtlIGEgbmljZSZjbGVhbgpkcml2ZXIuCgpBY2tl ZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KCkkgdGhpbmsgYWxs IHdlIG5lZWQgaXMgYWNrIGZyb20gdGhlIGR0IHNpZGUuIFJvYiBIZXJyaW5nIGhhcyBjb21taXQg cmlnaHRzCnRvIGRybS1taXNjLCBzbyBoZSBjYW4gcHVzaCB5b3VyIGRyaXZlciBvbmNlIGhlJ3Mg cmV2aWV3ZWQgdGhlIGR0IHNpZGUuCgpDaGVlcnMsIERhbmllbAoKPiAtLS0KPiAgZHJpdmVycy9n cHUvZHJtL2l2aXAvS2NvbmZpZyAgICAgICAgICB8ICAgMTQgKysrCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pdmlwL01ha2VmaWxlICAgICAgICAgfCAgICA3ICsrCj4gIGRyaXZlcnMvZ3B1L2RybS9pdmlw L2ludGVsX3ZpcF9jb25uLmMgfCAgIDkxICsrKysrKysrKysrKysrKysKPiAgZHJpdmVycy9ncHUv ZHJtL2l2aXAvaW50ZWxfdmlwX2NvcmUuYyB8ICAxODkgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9kcnYuaCAgfCAgIDcz ICsrKysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX29mLmMgICB8 ICAxODEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICA2IGZpbGVzIGNoYW5nZWQs IDU1NSBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9ncHUvZHJtL2l2aXAvS2NvbmZpZwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL2l2aXAvTWFrZWZpbGUKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1 L2RybS9pdmlwL2ludGVsX3ZpcF9jb25uLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9pdmlwL2ludGVsX3ZpcF9jb3JlLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9kcnYuaAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX29mLmMKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2l2aXAvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9pdmlwL0tjb25maWcKPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjFkMDhiOTAKPiAtLS0gL2Rldi9u dWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2l2aXAvS2NvbmZpZwo+IEBAIC0wLDAgKzEsMTQg QEAKPiArY29uZmlnIERSTV9JVklQCj4gKyAgICAgICAgdHJpc3RhdGUgIkludGVsIEZHUEEgVmlk ZW8gYW5kIEltYWdlIFByb2Nlc3NpbmciCj4gKyAgICAgICAgZGVwZW5kcyBvbiBEUk0gJiYgT0YK PiArICAgICAgICBzZWxlY3QgRFJNX0dFTV9DTUFfSEVMUEVSCj4gKyAgICAgICAgc2VsZWN0IERS TV9LTVNfSEVMUEVSCj4gKyAgICAgICAgc2VsZWN0IERSTV9LTVNfRkJfSEVMUEVSCj4gKyAgICAg ICAgc2VsZWN0IERSTV9LTVNfQ01BX0hFTFBFUgo+ICsgICAgICAgIGhlbHAKPiArCQkgIENob29z ZSB0aGlzIG9wdGlvbiBpZiB5b3UgaGF2ZSBhbiBJbnRlbCBGUEdBIEFycmlhIDEwIHN5c3RlbQo+ ICsJCSAgYW5kIGFib3ZlIHdpdGggYW4gSW50ZWwgRGlzcGxheSBQb3J0IElQLiBUaGlzIGRvZXMg bm90IHN1cHBvcnQKPiArCQkgIGxlZ2FjeSBJbnRlbCBGUEdBIEN5Y2xvbmUgViBkaXNwbGF5IHBv cnQuIEN1cnJlbnRseSBvbmx5IHNpbmdsZQo+ICsJCSAgZnJhbWUgYnVmZmVyIGlzIHN1cHBvcnRl ZC4gTm90ZSB0aGF0IEFDUEkgYW5kIFhfODYgYXJjaGl0ZWN0dXJlCj4gKwkJICBpcyBub3Qgc3Vw cG9ydGVkIGZvciBBcnJpYTEwLiBJZiBNIGlzIHNlbGVjdGVkIHRoZSBtb2R1bGUgd2lsbCBiZQo+ ICsJCSAgY2FsbGVkIGl2aXAuCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pdmlwL01h a2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2l2aXAvTWFrZWZpbGUKPiBuZXcgZmlsZSBtb2RlIDEw MDY0NAo+IGluZGV4IDAwMDAwMDAuLjNmZDJlNzUKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2l2aXAvTWFrZWZpbGUKPiBAQCAtMCwwICsxLDcgQEAKPiArIwo+ICsjIE1h a2VmaWxlIGZvciB0aGUgZHJtIGRldmljZSBkcml2ZXIuICBUaGlzIGRyaXZlciBwcm92aWRlcyBz dXBwb3J0IGZvciB0aGUKPiArIyBEaXJlY3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJlIChEUkkp IGluIFhGcmVlODYgNC4xLjAgYW5kIGhpZ2hlci4KPiArCj4gK29iai0kKENPTkZJR19EUk1fSVZJ UCkgKz0gaXZpcC5vCj4gK2l2aXAtb2JqcyA6PSBpbnRlbF92aXBfb2YubyBpbnRlbF92aXBfY29y ZS5vIFwKPiArCWludGVsX3ZpcF9jb25uLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2l2aXAvaW50ZWxfdmlwX2Nvbm4uYyBiL2RyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9j b25uLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjkzY2UwYjMKPiAt LS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX2Nvbm4u Ywo+IEBAIC0wLDAgKzEsOTEgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjAKPiArLyoKPiArICogQ29weXJpZ2h0IChDKSAyMDE5IEludGVsIENvcnBvcmF0aW9uLgo+ICsg Kgo+ICsgKiBpbnRlbF92aXBfY29ubi5jIC0tIEludGVsIFZpZGVvIGFuZCBJbWFnZSBQcm9jZXNz aW5nKFZJUCkKPiArICogRnJhbWUgQnVmZmVyIElJIGRyaXZlcgo+ICsgKgo+ICsgKiBUaGlzIGRy aXZlciBzdXBwb3J0cyB0aGUgSW50ZWwgVklQIEZyYW1lIFJlYWRlciBjb21wb25lbnQuCj4gKyAq IE1vcmUgaW5mbyBvbiB0aGUgaGFyZHdhcmUgY2FuIGJlIGZvdW5kIGluIHRoZSBJbnRlbCBWaWRl bwo+ICsgKiBhbmQgSW1hZ2UgUHJvY2Vzc2luZyBTdWl0ZSBVc2VyIEd1aWRlIGF0IHRoaXMgYWRk cmVzcwo+ICsgKiBodHRwOi8vd3d3LmFsdGVyYS5jb20vbGl0ZXJhdHVyZS91Zy91Z192aXAucGRm Lgo+ICsgKgo+ICsgKiBBdXRob3JzOgo+ICsgKiBXYWx0ZXIgR29vc3NlbnMgPHdhbHRlcmdvb3Nz ZW5zQGhvbWUubmw+Cj4gKyAqIFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KPiAr ICogQ2hyaXMgUmF1ZXIgPGNyYXVlckBhbHRlcmEuY29tPgo+ICsgKiBPbmcsIEhlYW4tTG9vbmcg PGhlYW4ubG9vbmcub25nQGludGVsLmNvbT4KPiArICoKPiArICovCj4gKwo+ICsjaW5jbHVkZSA8 bGludXgvaW5pdC5oPgo+ICsjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4gKyNpbmNsdWRlIDxk cm0vZHJtX2F0b21pY19oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIu aD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZW5jb2Rlcl9zbGF2ZS5oPgo+ICsjaW5jbHVkZSA8ZHJt L2RybV9wbGFuZV9oZWxwZXIuaD4KPiArCj4gK3N0YXRpYyBlbnVtIGRybV9jb25uZWN0b3Jfc3Rh dHVzCj4gK2ludGVsdmlwZmJfZHJtX2Nvbm5lY3Rvcl9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkKPiArewo+ICsJcmV0dXJuIGNvbm5lY3Rvcl9zdGF0 dXNfY29ubmVjdGVkOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpbnRlbHZpcGZiX2RybV9jb25u ZWN0b3JfZGVzdHJveShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICt7Cj4gKwlk cm1fY29ubmVjdG9yX3VucmVnaXN0ZXIoY29ubmVjdG9yKTsKPiArCWRybV9jb25uZWN0b3JfY2xl YW51cChjb25uZWN0b3IpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25u ZWN0b3JfZnVuY3MgaW50ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2Z1bmNzID0gewo+ICsJLmRldGVj dCA9IGludGVsdmlwZmJfZHJtX2Nvbm5lY3Rvcl9kZXRlY3QsCj4gKwkucmVzZXQgPSBkcm1fYXRv bWljX2hlbHBlcl9jb25uZWN0b3JfcmVzZXQsCj4gKwkuZmlsbF9tb2RlcyA9IGRybV9oZWxwZXJf cHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcywKPiArCS5hdG9taWNfZHVwbGljYXRlX3N0YXRl ID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZSwKPiArCS5hdG9t aWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kZXN0cm95X3N0 YXRlLAo+ICsJLmRlc3Ryb3kgPSBpbnRlbHZpcGZiX2RybV9jb25uZWN0b3JfZGVzdHJveSwKPiAr fTsKPiArCj4gK3N0YXRpYyBpbnQgaW50ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2dldF9tb2Rlcyhz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZHJtID0gY29ubmVjdG9yLT5kZXY7Cj4gKwlpbnQgY291bnQ7Cj4gKwo+ICsJY291bnQgPSBk cm1fYWRkX21vZGVzX25vZWRpZChjb25uZWN0b3IsIGRybS0+bW9kZV9jb25maWcubWF4X3dpZHRo LAo+ICsJCQlkcm0tPm1vZGVfY29uZmlnLm1heF9oZWlnaHQpOwo+ICsJZHJtX3NldF9wcmVmZXJy ZWRfbW9kZShjb25uZWN0b3IsIGRybS0+bW9kZV9jb25maWcubWF4X3dpZHRoLAo+ICsJCQlkcm0t Pm1vZGVfY29uZmlnLm1heF9oZWlnaHQpOwo+ICsJcmV0dXJuIGNvdW50Owo+ICt9Cj4gKwo+ICtz dGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzCj4gK2ludGVsdmlw ZmJfZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgPSB7Cj4gKwkuZ2V0X21vZGVzID0gaW50ZWx2 aXBmYl9kcm1fY29ubmVjdG9yX2dldF9tb2RlcywKPiArfTsKPiArCj4gK3N0cnVjdCBkcm1fY29u bmVjdG9yICoKPiAraW50ZWx2aXBmYl9jb25uX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0p Cj4gK3sKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uOwo+ICsJaW50IHJldDsKPiArCj4g Kwljb25uID0gZGV2bV9remFsbG9jKGRybS0+ZGV2LCBzaXplb2YoKmNvbm4pLCBHRlBfS0VSTkVM KTsKPiArCWlmIChJU19FUlIoY29ubikpCj4gKwkJcmV0dXJuIE5VTEw7Cj4gKwo+ICsJZHJtX2Nv bm5lY3Rvcl9oZWxwZXJfYWRkKGNvbm4sICZpbnRlbHZpcGZiX2RybV9jb25uZWN0b3JfaGVscGVy X2Z1bmNzKTsKPiArCXJldCA9IGRybV9jb25uZWN0b3JfaW5pdChkcm0sIGNvbm4sICZpbnRlbHZp cGZiX2RybV9jb25uZWN0b3JfZnVuY3MsCj4gKwkJCURSTV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5 UG9ydCk7Cj4gKwlpZiAocmV0IDwgMCkgewo+ICsJCWRldl9lcnIoZHJtLT5kZXYsICJmYWlsZWQg dG8gaW5pdGlhbGl6ZSBkcm0gY29ubmVjdG9yXG4iKTsKPiArCQlyZXQgPSAtRU5PTUVNOwo+ICsJ CWdvdG8gZXJyb3JfY29ubmVjdG9yX2NsZWFudXA7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIGNvbm47 Cj4gKwo+ICtlcnJvcl9jb25uZWN0b3JfY2xlYW51cDoKPiArCWRybV9jb25uZWN0b3JfY2xlYW51 cChjb25uKTsKPiArCj4gKwlyZXR1cm4gTlVMTDsKPiArfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfY29yZS5jIGIvZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50 ZWxfdmlwX2NvcmUuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uOTgw ZjBmMwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92 aXBfY29yZS5jCj4gQEAgLTAsMCArMSwxODkgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEdQTC0yLjAKPiArLyoKPiArICogQ29weXJpZ2h0IChDKSAyMDE5IEludGVsIENvcnBvcmF0 aW9uLgo+ICsgKgo+ICsgKiBpbnRlbF92aXBfY29yZS5jIC0tIEludGVsIFZpZGVvIGFuZCBJbWFn ZSBQcm9jZXNzaW5nKFZJUCkKPiArICogRnJhbWUgQnVmZmVyIElJIGRyaXZlcgo+ICsgKgo+ICsg KiBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgSW50ZWwgVklQIEZyYW1lIFJlYWRlciBjb21wb25l bnQuCj4gKyAqIE1vcmUgaW5mbyBvbiB0aGUgaGFyZHdhcmUgY2FuIGJlIGZvdW5kIGluIHRoZSBJ bnRlbCBWaWRlbwo+ICsgKiBhbmQgSW1hZ2UgUHJvY2Vzc2luZyBTdWl0ZSBVc2VyIEd1aWRlIGF0 IHRoaXMgYWRkcmVzcwo+ICsgKiBodHRwOi8vd3d3LmFsdGVyYS5jb20vbGl0ZXJhdHVyZS91Zy91 Z192aXAucGRmLgo+ICsgKgo+ICsgKiBBdXRob3JzOgo+ICsgKiBXYWx0ZXIgR29vc3NlbnMgPHdh bHRlcmdvb3NzZW5zQGhvbWUubmw+Cj4gKyAqIFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNv bS50dz4KPiArICogQ2hyaXMgUmF1ZXIgPGNyYXVlckBhbHRlcmEuY29tPgo+ICsgKiBPbmcsIEhl YW4tTG9vbmcgPGhlYW4ubG9vbmcub25nQGludGVsLmNvbT4KPiArICoKPiArICovCj4gKwo+ICsj aW5jbHVkZSA8ZHJtL2RybVAuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+Cj4gKyNp bmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fY3J0 Y19oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+Cj4gKyNpbmNsdWRl IDxkcm0vZHJtX2ZiX2NtYV9oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2NtYV9o ZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fcGxhbmVfaGVscGVyLmg+Cj4gKyNpbmNsdWRl IDxkcm0vZHJtX3NpbXBsZV9rbXNfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9m cmFtZWJ1ZmZlcl9oZWxwZXIuaD4KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Cj4gKyNp bmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ICsK PiArI2luY2x1ZGUgImludGVsX3ZpcF9kcnYuaCIKPiArCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0 IGludGVsdmlwZmJfcHJpdiAqCj4gK3BpcGVfdG9faW50ZWx2aXBkcm0oc3RydWN0IGRybV9zaW1w bGVfZGlzcGxheV9waXBlICpwaXBlKQo+ICt7Cj4gKwlyZXR1cm4gY29udGFpbmVyX29mKHBpcGUs IHN0cnVjdCBpbnRlbHZpcGZiX3ByaXYsIHBpcGUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBp bnRlbHZpcGZiX2VuYWJsZShzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBpcGUsCj4g KwkgICAgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLCBzdHJ1Y3QgZHJtX3Bs YW5lX3N0YXRlICoKPiArCSAgICAgICBwbGFuZV9zdGF0ZSkKPiArewo+ICsJLyoKPiArCSAqIFRo ZSBmcmFtZWluZm8gdmFyaWFibGUgaGFzIHRvIGNvcnJlc3BvbmQgdG8gdGhlIHNpemUgb2YgdGhl IFZJUCBTdWl0ZQo+ICsJICogRnJhbWUgUmVhZGVyIHJlZ2lzdGVyIDcgd2hpY2ggd2lsbCBkZXRl cm1pbmUgdGhlIG1heGltdW0gc2l6ZSB1c2VkCj4gKwkgKiBpbiB0aGlzIGZyYW1laW5mbwo+ICsJ ICovCj4gKwo+ICsJdTMyIGZyYW1laW5mbzsKPiArCXN0cnVjdCBpbnRlbHZpcGZiX3ByaXYgKnBy aXYgPSBwaXBlLT5wbGFuZS5kZXYtPmRldl9wcml2YXRlOwo+ICsJdm9pZCBfX2lvbWVtICpiYXNl ID0gcHJpdi0+YmFzZTsKPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlID0gcGlwZS0+ cGxhbmUuc3RhdGU7Cj4gKwlkbWFfYWRkcl90IGFkZHI7Cj4gKwo+ICsJYWRkciA9IGRybV9mYl9j bWFfZ2V0X2dlbV9hZGRyKHN0YXRlLT5mYiwgc3RhdGUsIDApOwo+ICsKPiArCWZyYW1laW5mbyA9 Cj4gKwkJcmVhZGwoYmFzZSArIElOVEVMVklQRkJfRlJBTUVfUkVBREVSKSAmIDB4MDBmZmZmZmY7 Cj4gKwl3cml0ZWwoZnJhbWVpbmZvLCBiYXNlICsgSU5URUxWSVBGQl9GUkFNRV9JTkZPKTsKPiAr CXdyaXRlbChhZGRyLCBiYXNlICsgSU5URUxWSVBGQl9GUkFNRV9TVEFSVCk7Cj4gKwkvKiBGaW5h bGx5IHNldCB0aGUgY29udHJvbCByZWdpc3RlciB0byAxIHRvIHN0YXJ0IHN0cmVhbWluZyAqLwo+ ICsJd3JpdGVsKDEsIGJhc2UgKyBJTlRFTFZJUEZCX0NPTlRST0wpOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgdm9pZCBpbnRlbHZpcGZiX2Rpc2FibGUoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBl ICpwaXBlKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWx2aXBmYl9wcml2ICpwcml2ID0gcGlwZS0+cGxh bmUuZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXZvaWQgX19pb21lbSAqYmFzZSA9IHByaXYtPmJhc2U7 Cj4gKwkvKiBzZXQgdGhlIGNvbnRyb2wgcmVnaXN0ZXIgdG8gMCB0byBzdG9wIHN0cmVhbWluZyAq Lwo+ICsJd3JpdGVsKDAsIGJhc2UgKyBJTlRFTFZJUEZCX0NPTlRST0wpOwo+ICt9Cj4gKwo+ICsK PiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9jb25maWdfZnVuY3MgaW50ZWx2aXBmYl9t b2RlX2NvbmZpZ19mdW5jcyA9IHsKPiArCS5mYl9jcmVhdGUgPSBkcm1fZ2VtX2ZiX2NyZWF0ZSwK PiArCS5hdG9taWNfY2hlY2sgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVjaywKPiArCS5hdG9taWNf Y29tbWl0ID0gZHJtX2F0b21pY19oZWxwZXJfY29tbWl0LAo+ICt9Owo+ICsKPiArCj4gK3N0YXRp YyB2b2lkIGludGVsdmlwZmJfc2V0dXBfbW9kZV9jb25maWcoc3RydWN0IGRybV9kZXZpY2UgKmRy bSkKPiArewo+ICsJZHJtX21vZGVfY29uZmlnX2luaXQoZHJtKTsKPiArCWRybS0+bW9kZV9jb25m aWcuZnVuY3MgPSAmaW50ZWx2aXBmYl9tb2RlX2NvbmZpZ19mdW5jczsKPiArfQo+ICsKPiArdm9p ZCBpbnRlbHZpcGZiX2Rpc3BsYXlfcGlwZV91cGRhdGUoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxh eV9waXBlICpwaXBlLAo+ICsJCQkJIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSkK PiArewo+ICsJc3RydWN0IGludGVsdmlwZmJfcHJpdiAqZmJwcml2ID0gcGlwZV90b19pbnRlbHZp cGRybShwaXBlKTsKPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGlwZS0+cGxhbmUu c3RhdGUtPmZiOwo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gJmZicHJpdi0+cGlwZS5jcnRj Owo+ICsKPiArCWlmIChmYiAmJiAoZmIgIT0gb2xkX3N0YXRlLT5mYikpIHsKPiArCQlpZiAoZmJw cml2LT5mYl9kaXJ0eSkKPiArCQkJZmJwcml2LT5mYl9kaXJ0eShmYiwgTlVMTCwgMCwgMCwgTlVM TCwgMCk7Cj4gKwl9Cj4gKwo+ICsJaWYgKGNydGMtPnN0YXRlLT5ldmVudCkgewo+ICsJCXNwaW5f bG9ja19pcnEoJmNydGMtPmRldi0+ZXZlbnRfbG9jayk7Cj4gKwkJZHJtX2NydGNfc2VuZF92Ymxh bmtfZXZlbnQoY3J0YywgY3J0Yy0+c3RhdGUtPmV2ZW50KTsKPiArCQlzcGluX3VubG9ja19pcnEo JmNydGMtPmRldi0+ZXZlbnRfbG9jayk7Cj4gKwkJY3J0Yy0+c3RhdGUtPmV2ZW50ID0gTlVMTDsK PiArCX0KPiArfQo+ICtFWFBPUlRfU1lNQk9MKGludGVsdmlwZmJfZGlzcGxheV9waXBlX3VwZGF0 ZSk7Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlX2Z1bmNzIGZi cHJpdl9mdW5jcyA9IHsKPiArCS5wcmVwYXJlX2ZiID0gZHJtX2dlbV9mYl9zaW1wbGVfZGlzcGxh eV9waXBlX3ByZXBhcmVfZmIsCj4gKwkudXBkYXRlID0gaW50ZWx2aXBmYl9kaXNwbGF5X3BpcGVf dXBkYXRlLAo+ICsJLmVuYWJsZSA9IGludGVsdmlwZmJfZW5hYmxlLAo+ICsJLmRpc2FibGUgPSBp bnRlbHZpcGZiX2Rpc2FibGUsCj4gK307Cj4gKwo+ICsKPiAraW50IGludGVsdmlwZmJfcHJvYmUo c3RydWN0IGRldmljZSAqZGV2KQo+ICt7Cj4gKwlpbnQgcmV0dmFsOwo+ICsJc3RydWN0IGRybV9k ZXZpY2UgKmRybTsKPiArCXN0cnVjdCBpbnRlbHZpcGZiX3ByaXYgKmZicHJpdiA9IGRldl9nZXRf ZHJ2ZGF0YShkZXYpOwo+ICsKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4g Kwl1MzIgZm9ybWF0c1tdID0ge0RSTV9GT1JNQVRfWFJHQjg4ODh9Owo+ICsKPiArCWRybSA9IGZi cHJpdi0+ZHJtOwo+ICsKPiArCWRybS0+ZGV2X3ByaXZhdGUgPSBmYnByaXY7Cj4gKwo+ICsJaW50 ZWx2aXBmYl9zZXR1cF9tb2RlX2NvbmZpZyhkcm0pOwo+ICsKPiArCWNvbm5lY3RvciA9IGludGVs dmlwZmJfY29ubl9zZXR1cChkcm0pOwo+ICsJaWYgKCFjb25uZWN0b3IpIHsKPiArCQlkZXZfZXJy KGRybS0+ZGV2LCAiQ29ubmVjdG9yIHNldHVwIGZhaWxlZFxuIik7Cj4gKwkJZ290byBlcnJfbW9k ZV9jb25maWc7Cj4gKwl9Cj4gKwo+ICsJcmV0dmFsID0gZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGVf aW5pdChkcm0sCj4gKwkJCSZmYnByaXYtPnBpcGUsCj4gKwkJCSZmYnByaXZfZnVuY3MsCj4gKwkJ CWZvcm1hdHMsCj4gKwkJCUFSUkFZX1NJWkUoZm9ybWF0cyksCj4gKwkJCU5VTEwsIGNvbm5lY3Rv cik7Cj4gKwo+ICsJaWYgKHJldHZhbCA8IDApIHsKPiArCQlkZXZfZXJyKGRybS0+ZGV2LCAiQ2Fu bm90IHNldHVwIHNpbXBsZSBkaXNwbGF5IHBpcGVcbiIpOwo+ICsJCWdvdG8gZXJyX21vZGVfY29u ZmlnOwo+ICsJfQo+ICsKPiArCWRybV9tb2RlX2NvbmZpZ19yZXNldChkcm0pOwo+ICsKPiArCWRy bV9kZXZfcmVnaXN0ZXIoZHJtLCAwKTsKPiArCj4gKwlkcm1fZmJkZXZfZ2VuZXJpY19zZXR1cChk cm0sIDMyKTsKPiArCj4gKwlkZXZfaW5mbyhkcm0tPmRldiwgIml2aXA6IFN1Y2Nlc3NmdWxseSBj cmVhdGVkIGZiXG4iKTsKPiArCj4gKwlyZXR1cm4gcmV0dmFsOwo+ICsKPiArZXJyX21vZGVfY29u ZmlnOgo+ICsKPiArCWRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKGRybSk7Cj4gKwlyZXR1cm4gLUVO T0RFVjsKPiArfQo+ICsKPiAraW50IGludGVsdmlwZmJfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRl dikKPiArewo+ICsJc3RydWN0IGludGVsdmlwZmJfcHJpdiAqZmJwcml2ID0gZGV2X2dldF9kcnZk YXRhKGRldik7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gIGZicHJpdi0+ZHJtOwo+ICsK PiArCWRybV9kZXZfdW5yZWdpc3Rlcihkcm0pOwo+ICsKPiArCWRybV9tb2RlX2NvbmZpZ19jbGVh bnVwKGRybSk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gKy8qIE9yaWdpbmFsIGF1dGhv ciBvZiBBbHRlcmEgRnJhbWUgQnVmZmVyKi8KPiArTU9EVUxFX0FVVEhPUigiV2FsdGVyIEdvb3Nz ZW5zIDx3YWx0ZXJnb29zc2Vuc0Bob21lLm5sPiIpOwo+ICtNT0RVTEVfQVVUSE9SKCJUaG9tYXMg Q2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+Iik7Cj4gK01PRFVMRV9BVVRIT1IoIkNocmlzIFJh dWVyIDxjcmF1ZXJAYWx0ZXJhLmNvbT4iKTsKPiArLyogQXV0aG9yIG9mIEludGVsIEZQR0EgRnJh bWUgQnVmZmVyIElJKi8KPiArTU9EVUxFX0FVVEhPUigiT25nLCBIZWFuLUxvb25nIDxoZWFuLmxv b25nLm9uZ0BpbnRlbC5jb20+Iik7Cj4gK01PRFVMRV9ERVNDUklQVElPTigiSW50ZWwgVklQIEZy YW1lIEJ1ZmZlciBJSSBkcml2ZXIiKTsKPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfZHJ2LmggYi9kcml2ZXJz L2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfZHJ2LmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGlu ZGV4IDAwMDAwMDAuLmMwMzhmMjkKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2l2aXAvaW50ZWxfdmlwX2Rydi5oCj4gQEAgLTAsMCArMSw3MyBAQAo+ICsvKiBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLwo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIw MTkgSW50ZWwgQ29ycG9yYXRpb24uCj4gKyAqCj4gKyAqIEludGVsIFZpZGVvIGFuZCBJbWFnZSBQ cm9jZXNzaW5nKFZJUCkgRnJhbWUgQnVmZmVyIElJIGRyaXZlci4KPiArICogRnJhbWUgQnVmZmVy IElJIGRyaXZlcgo+ICsgKgo+ICsgKiBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgSW50ZWwgVklQ IEZyYW1lIFJlYWRlciBjb21wb25lbnQuCj4gKyAqIE1vcmUgaW5mbyBvbiB0aGUgaGFyZHdhcmUg Y2FuIGJlIGZvdW5kIGluIHRoZSBJbnRlbCBWaWRlbwo+ICsgKiBhbmQgSW1hZ2UgUHJvY2Vzc2lu ZyBTdWl0ZSBVc2VyIEd1aWRlIGF0IHRoaXMgYWRkcmVzcwo+ICsgKiBodHRwOi8vd3d3LmFsdGVy YS5jb20vbGl0ZXJhdHVyZS91Zy91Z192aXAucGRmLgo+ICsgKgo+ICsgKiBBdXRob3JzOgo+ICsg KiBXYWx0ZXIgR29vc3NlbnMgPHdhbHRlcmdvb3NzZW5zQGhvbWUubmw+Cj4gKyAqIFRob21hcyBD aG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KPiArICogQ2hyaXMgUmF1ZXIgPGNyYXVlckBhbHRl cmEuY29tPgo+ICsgKiBPbmcsIEhlYW4tTG9vbmcgPGhlYW4ubG9vbmcub25nQGludGVsLmNvbT4K PiArICoKPiArICovCj4gKyNpZm5kZWYgX0lOVEVMX1ZJUF9EUlZfSAo+ICsjZGVmaW5lIF9JTlRF TF9WSVBfRFJWX0gKPiArCj4gKyNkZWZpbmUgRFJJVkVSX05BTUUgICAgImludGVsdmlwZmIiCj4g KyNkZWZpbmUgQllURVNfUEVSX1BJWEVMCSA0Cj4gKyNkZWZpbmUgQ1JUQ19OVU0JICAgICAgICAx Cj4gKyNkZWZpbmUgQ09OTl9OVU0JICAgICAgICAxCj4gKwo+ICsvKiBjb250cm9sIHJlZ2lzdGVy cyAqLwo+ICsjZGVmaW5lIElOVEVMVklQRkJfQ09OVFJPTAkgICAgICAwCj4gKyNkZWZpbmUgSU5U RUxWSVBGQl9TVEFUVVMJICAgICAgIDB4NAo+ICsjZGVmaW5lIElOVEVMVklQRkJfSU5URVJSVVBU CSAgICAweDgKPiArI2RlZmluZSBJTlRFTFZJUEZCX0ZSQU1FX0NPVU5URVIJMHhDCj4gKyNkZWZp bmUgSU5URUxWSVBGQl9GUkFNRV9EUk9QCSAgIDB4MTAKPiArI2RlZmluZSBJTlRFTFZJUEZCX0ZS QU1FX0lORk8JICAgMHgxNAo+ICsjZGVmaW5lIElOVEVMVklQRkJfRlJBTUVfU1RBUlQJICAweDE4 Cj4gKyNkZWZpbmUgSU5URUxWSVBGQl9GUkFNRV9SRUFERVIJICAgICAgICAgMHgxQwo+ICsKPiAr aW50IGludGVsdmlwZmJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KTsKPiAraW50IGludGVsdmlw ZmJfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldik7Cj4gK2ludCBpbnRlbHZpcGZiX3NldHVwX2Ny dGMoc3RydWN0IGRybV9kZXZpY2UgKmRybSk7Cj4gK3N0cnVjdCBkcm1fY29ubmVjdG9yICppbnRl bHZpcGZiX2Nvbm5fc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRybSk7Cj4gKwo+ICtzdHJ1Y3Qg aW50ZWx2aXBmYl9wcml2IHsKPiArCS8qKgo+ICsJICogQHBpcGU6IERpc3BsYXkgcGlwZSBzdHJ1 Y3R1cmUKPiArCSAqLwo+ICsJc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlIHBpcGU7Cj4g Kwo+ICsJLyoqCj4gKwkgKiBAZHJtOiBEUk0gZGV2aWNlCj4gKwkgKi8KPiArCXN0cnVjdCBkcm1f ZGV2aWNlICpkcm07Cj4gKwo+ICsJLyoqCj4gKwkgKiBAZGlydHlfbG9jazogU2VyaWFsaXplcyBm cmFtZWJ1ZmZlciBmbHVzaGluZwo+ICsJICovCj4gKwlzdHJ1Y3QgbXV0ZXggZGlydHlfbG9jazsK PiArCj4gKwkvKioKPiArCSAqIEBiYXNlOiBCYXNlIG1lbW9yeSBmb3IgdGhlIGZyYW1lYnVmZmVy Cj4gKwkgKi8KPiArCXZvaWQgICAgX19pb21lbSAqYmFzZTsKPiArCj4gKwkvKioKPiArCSAqIEBm Yl9kaXJ0eTogRnJhbWVidWZmZXIgZGlydHkgY2FsbGJhY2sKPiArCSAqLwo+ICsJaW50ICgqZmJf ZGlydHkpKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLAo+ICsJCXN0cnVjdCBk cm1fZmlsZSAqZmlsZV9wcml2LCB1bnNpZ25lZCBpbnQgZmxhZ3MsCj4gKwkJdW5zaWduZWQgaW50 IGNvbG9yLCBzdHJ1Y3QgZHJtX2NsaXBfcmVjdCAqY2xpcHMsCj4gKwkJdW5zaWduZWQgaW50IG51 bV9jbGlwcyk7Cj4gK307Cj4gKwo+ICsjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2l2aXAvaW50ZWxfdmlwX29mLmMgYi9kcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBf b2YuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uYzg5OWUzMAo+IC0t LSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfb2YuYwo+ IEBAIC0wLDAgKzEsMTgxIEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w Cj4gKy8qCj4gKyAqIENvcHlyaWdodCAoQykgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbi4KPiArICoK PiArICogaW50ZWxfdmlwX29mLmMgLS0gSW50ZWwgVmlkZW8gYW5kIEltYWdlIFByb2Nlc3Npbmco VklQKQo+ICsgKiBGcmFtZSBCdWZmZXIgSUkgZHJpdmVyCj4gKyAqCj4gKyAqIFRoaXMgZHJpdmVy IHN1cHBvcnRzIHRoZSBJbnRlbCBWSVAgRnJhbWUgUmVhZGVyIGNvbXBvbmVudC4KPiArICogTW9y ZSBpbmZvIG9uIHRoZSBoYXJkd2FyZSBjYW4gYmUgZm91bmQgaW4gdGhlIEludGVsIFZpZGVvCj4g KyAqIGFuZCBJbWFnZSBQcm9jZXNzaW5nIFN1aXRlIFVzZXIgR3VpZGUgYXQgdGhpcyBhZGRyZXNz Cj4gKyAqIGh0dHA6Ly93d3cuYWx0ZXJhLmNvbS9saXRlcmF0dXJlL3VnL3VnX3ZpcC5wZGYuCj4g KyAqCj4gKyAqIEF1dGhvcnM6Cj4gKyAqIE9uZywgSGVhbi1Mb29uZyA8aGVhbi5sb29uZy5vbmdA aW50ZWwuY29tPgo+ICsgKgo+ICsgKi8KPiArI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gKyNpbmNs dWRlIDxkcm0vZHJtX2Rydi5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4KPiAr I2luY2x1ZGUgPGRybS9kcm1fZmJfY21hX2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9n ZW1fY21hX2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9vZi5oPgo+ICsjaW5jbHVkZSA8 ZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5oPgo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2NvbXBv bmVudC5oPgo+ICsjaW5jbHVkZSA8bGludXgvaW5pdC5oPgo+ICsjaW5jbHVkZSA8bGludXgva2Vy bmVsLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3Bs YXRmb3JtX2RldmljZS5oPgo+ICsKPiArI2luY2x1ZGUgImludGVsX3ZpcF9kcnYuaCIKPiArCj4g K0RFRklORV9EUk1fR0VNX0NNQV9GT1BTKGRybV9mb3BzKTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3Qg ZHJtX2RyaXZlciBpbnRlbHZpcGZiX2RybSA9IHsKPiArCS5kcml2ZXJfZmVhdHVyZXMgPQo+ICsJ CQlEUklWRVJfTU9ERVNFVCB8IERSSVZFUl9HRU0gfAo+ICsJCQlEUklWRVJfUFJJTUUgfCBEUklW RVJfQVRPTUlDLAo+ICsJLmdlbV9mcmVlX29iamVjdF91bmxvY2tlZCA9IGRybV9nZW1fY21hX2Zy ZWVfb2JqZWN0LAo+ICsJLmdlbV92bV9vcHMgPSAmZHJtX2dlbV9jbWFfdm1fb3BzLAo+ICsJLmR1 bWJfY3JlYXRlID0gZHJtX2dlbV9jbWFfZHVtYl9jcmVhdGUsCj4gKwkuZHVtYl9kZXN0cm95ID0g ZHJtX2dlbV9kdW1iX2Rlc3Ryb3ksCj4gKwkucHJpbWVfaGFuZGxlX3RvX2ZkID0gZHJtX2dlbV9w cmltZV9oYW5kbGVfdG9fZmQsCj4gKwkucHJpbWVfZmRfdG9faGFuZGxlID0gZHJtX2dlbV9wcmlt ZV9mZF90b19oYW5kbGUsCj4gKwkuZ2VtX3ByaW1lX2V4cG9ydCA9IGRybV9nZW1fcHJpbWVfZXhw b3J0LAo+ICsJLmdlbV9wcmltZV9pbXBvcnQgPSBkcm1fZ2VtX3ByaW1lX2ltcG9ydCwKPiArCS5n ZW1fcHJpbWVfZ2V0X3NnX3RhYmxlID0gZHJtX2dlbV9jbWFfcHJpbWVfZ2V0X3NnX3RhYmxlLAo+ ICsJLmdlbV9wcmltZV9pbXBvcnRfc2dfdGFibGUgPSBkcm1fZ2VtX2NtYV9wcmltZV9pbXBvcnRf c2dfdGFibGUsCj4gKwkuZ2VtX3ByaW1lX3ZtYXAgPSBkcm1fZ2VtX2NtYV9wcmltZV92bWFwLAo+ ICsJLmdlbV9wcmltZV92dW5tYXAgPSBkcm1fZ2VtX2NtYV9wcmltZV92dW5tYXAsCj4gKwkuZ2Vt X3ByaW1lX21tYXAgPSBkcm1fZ2VtX2NtYV9wcmltZV9tbWFwLAo+ICsJLm5hbWUgPSBEUklWRVJf TkFNRSwKPiArCS5kYXRlID0gIjIwMTkwMTI5IiwKPiArCS5kZXNjID0gIkludGVsIEZQR0EgVklQ IFNVSVRFIiwKPiArCS5tYWpvciA9IDEsCj4gKwkubWlub3IgPSAwLAo+ICsJLmlvY3RscyA9IE5V TEwsCj4gKwkucGF0Y2hsZXZlbCA9IDAsCj4gKwkuZm9wcyA9ICZkcm1fZm9wcywKPiArfTsKPiAr Cj4gKy8qCj4gKyAqIFNldHRpbmcgdXAgaW5mb3JtYXRpb24gZGVyaXZlZCBmcm9tIE9GIERldmlj ZSBUcmVlIE5vZGVzCj4gKyAqIG1heC13aWR0aCwgbWF4LWhlaWdodCwgYml0cyBwZXIgcGl4ZWws IG1lbW9yeSBwb3J0IHdpZHRoCj4gKyAqLwo+ICsKPiArc3RhdGljIGludCBpbnRlbHZpcGZiX2Ry bV9zZXR1cChzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCQkJc3RydWN0IGludGVsdmlwZmJfcHJp diAqZmJwcml2KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gZmJwcml2LT5kcm07 Cj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2LT5vZl9ub2RlOwo+ICsJaW50IG1lbV93 b3JkX3dpZHRoOwo+ICsJaW50IG1heF9oLCBtYXhfdzsKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0 ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICJhbHRyLG1heC13aWR0aCIsICZtYXhfdyk7Cj4g KwlpZiAocmV0KSB7Cj4gKwkJZGV2X2VycihkZXYsCj4gKwkJCSJNaXNzaW5nIHJlcXVpcmVkIHBh cmFtZXRlciAnYWx0cixtYXgtd2lkdGgnIik7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4g KwlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgImFsdHIsbWF4LWhlaWdodCIsICZtYXhf aCk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJZGV2X2VycihkZXYsCj4gKwkJCSJNaXNzaW5nIHJlcXVp cmVkIHBhcmFtZXRlciAnYWx0cixtYXgtaGVpZ2h0JyIpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9 Cj4gKwo+ICsJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICJhbHRyLG1lbS1wb3J0LXdp ZHRoIiwgJm1lbV93b3JkX3dpZHRoKTsKPiArCWlmIChyZXQpIHsKPiArCQlkZXZfZXJyKGRldiwg Ik1pc3NpbmcgcmVxdWlyZWQgcGFyYW1ldGVyICdhbHRyLG1lbS1wb3J0LXdpZHRoICciKTsKPiAr CQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCWlmICghKG1lbV93b3JkX3dpZHRoID49IDMyICYm IG1lbV93b3JkX3dpZHRoICUgMzIgPT0gMCkpIHsKPiArCQlkZXZfZXJyKGRldiwKPiArCQkJIm1l bS13b3JkLXdpZHRoIGlzIHNldCB0byAlaS4gbXVzdCBiZSA+PSAzMiBhbmQgbXVsdGlwbGUgb2Yg MzIuIiwKPiArCQkJIG1lbV93b3JkX3dpZHRoKTsKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCX0K PiArCj4gKwlkcm0tPm1vZGVfY29uZmlnLm1pbl93aWR0aCA9IDY0MDsKPiArCWRybS0+bW9kZV9j b25maWcubWluX2hlaWdodCA9IDQ4MDsKPiArCWRybS0+bW9kZV9jb25maWcubWF4X3dpZHRoID0g bWF4X3c7Cj4gKwlkcm0tPm1vZGVfY29uZmlnLm1heF9oZWlnaHQgPSBtYXhfaDsKPiArCWRybS0+ bW9kZV9jb25maWcucHJlZmVycmVkX2RlcHRoID0gMzI7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30K PiArCj4gK3N0YXRpYyBpbnQgaW50ZWx2aXBmYl9vZl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpwZGV2KQo+ICt7Cj4gKwlpbnQgcmV0dmFsOwo+ICsJc3RydWN0IHJlc291cmNlICpyZWdf cmVzOwo+ICsJc3RydWN0IGludGVsdmlwZmJfcHJpdiAqZmJwcml2Owo+ICsJc3RydWN0IGRldmlj ZSAqZGV2ID0gJnBkZXYtPmRldjsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkcm07Cj4gKwo+ICsJ ZmJwcml2ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpmYnByaXYpLCBHRlBfS0VSTkVMKTsK PiArCWlmICghZmJwcml2KQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCS8qc2V0dXAgRFJN ICovCj4gKwlkcm0gPSBkcm1fZGV2X2FsbG9jKCZpbnRlbHZpcGZiX2RybSwgZGV2KTsKPiArCWlm IChJU19FUlIoZHJtKSkKPiArCQlyZXR1cm4gUFRSX0VSUihkcm0pOwo+ICsKPiArCXJldHZhbCA9 IGRtYV9zZXRfbWFza19hbmRfY29oZXJlbnQoZHJtLT5kZXYsIERNQV9CSVRfTUFTSygzMikpOwo+ ICsJaWYgKHJldHZhbCkKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gKwlmYnByaXYtPmRybSA9 IGRybTsKPiArCj4gKwlyZWdfcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVT T1VSQ0VfTUVNLCAwKTsKPiArCWlmICghcmVnX3JlcykKPiArCQlyZXR1cm4gLUVOT01FTTsKPiAr Cj4gKwlmYnByaXYtPmJhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCByZWdfcmVzKTsK PiArCj4gKwlpZiAoSVNfRVJSKGZicHJpdi0+YmFzZSkpIHsKPiArCQlkZXZfZXJyKGRldiwgImRl dm1faW9yZW1hcF9yZXNvdXJjZSBmYWlsZWRcbiIpOwo+ICsJCXJldHZhbCA9IFBUUl9FUlIoZmJw cml2LT5iYXNlKTsKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCX0KPiArCj4gKwlpbnRlbHZpcGZi X2RybV9zZXR1cChkZXYsIGZicHJpdik7Cj4gKwo+ICsJZGV2X3NldF9kcnZkYXRhKGRldiwgZmJw cml2KTsKPiArCj4gKwlyZXR1cm4gaW50ZWx2aXBmYl9wcm9iZShkZXYpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgaW50IGludGVsdmlwZmJfb2ZfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpCj4gK3sKPiArCXJldHVybiBpbnRlbHZpcGZiX3JlbW92ZSgmcGRldi0+ZGV2KTsKPiArfQo+ ICsKPiArLyoKPiArICogVGhlIG5hbWUgdmlwLWZyYW1lLWJ1ZmZlci0yLjAgaXMgZGVyaXZlZCBm cm9tCj4gKyAqIGh0dHA6Ly93d3cuYWx0ZXJhLmNvbS9saXRlcmF0dXJlL3VnL3VnX3ZpcC5wZGYK PiArICogZnJhbWUgYnVmZmVyIElQIGNvcmVzIHNlY3Rpb24gMTQKPiArICovCj4gKwo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBpbnRlbHZpcGZiX29mX21hdGNoW10gPSB7Cj4g Kwl7IC5jb21wYXRpYmxlID0gImFsdHIsdmlwLWZyYW1lLWJ1ZmZlci0yLjAiIH0sCj4gKwl7fSwK PiArfTsKPiArCj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGludGVsdmlwZmJfb2ZfbWF0Y2gp Owo+ICsKPiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaW50ZWx2aXBmYl9kcml2ZXIg PSB7Cj4gKwkucHJvYmUgPSBpbnRlbHZpcGZiX29mX3Byb2JlLAo+ICsJLnJlbW92ZSA9IGludGVs dmlwZmJfb2ZfcmVtb3ZlLAo+ICsJLmRyaXZlciA9IHsKPiArCQkubmFtZSA9IERSSVZFUl9OQU1F LAo+ICsJCS5vZl9tYXRjaF90YWJsZSA9IGludGVsdmlwZmJfb2ZfbWF0Y2gsCj4gKwl9LAo+ICt9 Owo+ICsKPiArbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihpbnRlbHZpcGZiX2RyaXZlcik7Cj4gLS0g Cj4gMS43LjEKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWwKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jw b3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWw=