From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Noralf_Tr=c3=b8nnes?= Subject: Re: [PATCH10 3/3] ARM:drm ivip Intel FPGA Video and Image Processing Suite Date: Wed, 15 Aug 2018 14:26:33 +0200 Message-ID: <28d5e08c-4ae2-2d09-6ce4-985578535d34@tronnes.org> References: <1534237029-2648-1-git-send-email-hean.loong.ong@intel.com> <1534237029-2648-4-git-send-email-hean.loong.ong@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1534237029-2648-4-git-send-email-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" , Rob Herring , Dinh Nguyen , David Airlie Cc: devicetree@vger.kernel.org, yves.vandervennet@intel.com, chin.liang.see@intel.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org CkRlbiAxNC4wOC4yMDE4IDEwLjU3LCBza3JldiBIZWFuLUxvb25nLCBPbmc6Cj4gRnJvbTogT25n IEhlYW4gTG9vbmcgPGhlYW4ubG9vbmcub25nQGludGVsLmNvbT4KPgo+IERyaXZlciBmb3IgSW50 ZWwgRlBHQSBWaWRlbyBhbmQgSW1hZ2UgUHJvY2Vzc2luZyBTdWl0ZSBGcmFtZSBCdWZmZXIgSUku Cj4gVGhlIGRyaXZlciBvbmx5IHN1cHBvcnRzIHRoZSBJbnRlbCBBcnJpYTEwIGRldmtpdCBhbmQg aXRzIHZhcmlhbnRzLgo+IFRoaXMgZHJpdmVyIGNhbiBiZSBlaXRoZXIgbG9hZGVkIHN0YXRpY2xs eSBvciBpbiBtb2R1bGVzLgo+IFRoZSBPRiBkZXZpY2UgdHJlZSBiaW5kaW5nIGlzIGxvY2F0ZWQg YXQ6Cj4gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvYWx0cix2aXAt ZmIyLnR4dAo+Cj4gU2lnbmVkLW9mZi1ieTogT25nIEhlYW4gTG9vbmcgPGhlYW4ubG9vbmcub25n QGludGVsLmNvbT4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9LY29uZmlnICAgICAgICAgICAg ICAgfCAgICAyICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAgICAgICAgICAgICAgfCAg ICAxICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pdmlwL0tjb25maWcgICAgICAgICAgfCAgIDE0ICsr Kwo+ICAgZHJpdmVycy9ncHUvZHJtL2l2aXAvTWFrZWZpbGUgICAgICAgICB8ICAgIDkgKysKPiAg IGRyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9jb25uLmMgfCAgIDk1ICsrKysrKysrKysr KysrKysKPiAgIGRyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9jb3JlLmMgfCAgMTYxICsr KysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50ZWxf dmlwX2Rydi5oICB8ICAgNTIgKysrKysrKysrCj4gICBkcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRl bF92aXBfb2YuYyAgIHwgIDE5MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAg IDggZmlsZXMgY2hhbmdlZCwgNTI3IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCj4gICBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2l2aXAvS2NvbmZpZwo+ICAgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pdmlwL01ha2VmaWxlCj4gICBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX2Nvbm4uYwo+ICAgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9jb3JlLmMKPiAgIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfZHJ2LmgKPiAg IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfb2YuYwo+ Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJt L0tjb25maWcKPiBpbmRleCBjYjg4NTI4Li42YjI4NDViIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9LY29uZmlnCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKPiBAQCAtMjE1 LDYgKzIxNSw4IEBAIHNvdXJjZSAiZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvS2NvbmZpZyIKPiAg IAo+ICAgc291cmNlICJkcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnIgo+ICAgCj4gK3NvdXJj ZSAiZHJpdmVycy9ncHUvZHJtL2l2aXAvS2NvbmZpZyIKPiArCj4gICBjb25maWcgRFJNX1ZHRU0K PiAgIAl0cmlzdGF0ZSAiVmlydHVhbCBHRU0gcHJvdmlkZXIiCj4gICAJZGVwZW5kcyBvbiBEUk0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJt L01ha2VmaWxlCj4gaW5kZXggYTY3NzFjZS4uNTcyMDVkOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPiBAQCAt NjEsNiArNjEsNyBAQCBvYmotJChDT05GSUdfRFJNX0FNREdQVSkrPSBhbWQvYW1kZ3B1Lwo+ICAg b2JqLSQoQ09ORklHX0RSTV9NR0EpCSs9IG1nYS8KPiAgIG9iai0kKENPTkZJR19EUk1fSTgxMCkJ Kz0gaTgxMC8KPiAgIG9iai0kKENPTkZJR19EUk1fSTkxNSkJKz0gaTkxNS8KPiArb2JqLSQoQ09O RklHX0RSTV9JVklQKQkrPSBpdmlwLwo+ICAgb2JqLSQoQ09ORklHX0RSTV9NR0FHMjAwKSArPSBt Z2FnMjAwLwo+ICAgb2JqLSQoQ09ORklHX0RSTV9WM0QpICArPSB2M2QvCj4gICBvYmotJChDT05G SUdfRFJNX1ZDNCkgICs9IHZjNC8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2l2aXAv S2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9pdmlwL0tjb25maWcKPiBuZXcgZmlsZSBtb2RlIDEw MDY0NAo+IGluZGV4IDAwMDAwMDAuLjFkMDhiOTAKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2l2aXAvS2NvbmZpZwo+IEBAIC0wLDAgKzEsMTQgQEAKPiArY29uZmlnIERS TV9JVklQCj4gKyAgICAgICAgdHJpc3RhdGUgIkludGVsIEZHUEEgVmlkZW8gYW5kIEltYWdlIFBy b2Nlc3NpbmciCj4gKyAgICAgICAgZGVwZW5kcyBvbiBEUk0gJiYgT0YKPiArICAgICAgICBzZWxl Y3QgRFJNX0dFTV9DTUFfSEVMUEVSCj4gKyAgICAgICAgc2VsZWN0IERSTV9LTVNfSEVMUEVSCj4g KyAgICAgICAgc2VsZWN0IERSTV9LTVNfRkJfSEVMUEVSCj4gKyAgICAgICAgc2VsZWN0IERSTV9L TVNfQ01BX0hFTFBFUgo+ICsgICAgICAgIGhlbHAKPiArCQkgIENob29zZSB0aGlzIG9wdGlvbiBp ZiB5b3UgaGF2ZSBhbiBJbnRlbCBGUEdBIEFycmlhIDEwIHN5c3RlbQo+ICsJCSAgYW5kIGFib3Zl IHdpdGggYW4gSW50ZWwgRGlzcGxheSBQb3J0IElQLiBUaGlzIGRvZXMgbm90IHN1cHBvcnQKPiAr CQkgIGxlZ2FjeSBJbnRlbCBGUEdBIEN5Y2xvbmUgViBkaXNwbGF5IHBvcnQuIEN1cnJlbnRseSBv bmx5IHNpbmdsZQo+ICsJCSAgZnJhbWUgYnVmZmVyIGlzIHN1cHBvcnRlZC4gTm90ZSB0aGF0IEFD UEkgYW5kIFhfODYgYXJjaGl0ZWN0dXJlCj4gKwkJICBpcyBub3Qgc3VwcG9ydGVkIGZvciBBcnJp YTEwLiBJZiBNIGlzIHNlbGVjdGVkIHRoZSBtb2R1bGUgd2lsbCBiZQo+ICsJCSAgY2FsbGVkIGl2 aXAuCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pdmlwL01ha2VmaWxlIGIvZHJpdmVy cy9ncHUvZHJtL2l2aXAvTWFrZWZpbGUKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAw MDAwMDAuLmNjNTViMDQKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2l2 aXAvTWFrZWZpbGUKPiBAQCAtMCwwICsxLDkgQEAKPiArIwo+ICsjIE1ha2VmaWxlIGZvciB0aGUg ZHJtIGRldmljZSBkcml2ZXIuICBUaGlzIGRyaXZlciBwcm92aWRlcyBzdXBwb3J0IGZvciB0aGUK PiArIyBEaXJlY3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJlIChEUkkpIGluIFhGcmVlODYgNC4x LjAgYW5kIGhpZ2hlci4KPiArCj4gK2NjZmxhZ3MteSA6PSAtSWluY2x1ZGUvZHJtCgpUaGlzIHNo b3VsZG4ndCBiZSBuZWNlc3NhcnkgQUZBSUsuCgo+ICsKPiArb2JqLSQoQ09ORklHX0RSTV9JVklQ KSArPSBpdmlwLm8KPiAraXZpcC1vYmpzIDo9IGludGVsX3ZpcF9vZi5vIGludGVsX3ZpcF9jb3Jl Lm8gXAo+ICsJaW50ZWxfdmlwX2Nvbm4ubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aXZpcC9pbnRlbF92aXBfY29ubi5jIGIvZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX2Nv bm4uYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNDZiYjA0Ywo+IC0t LSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfY29ubi5j Cj4gQEAgLTAsMCArMSw5NSBAQAoKUGxlYXNlIGFkZCBhbiBTUERYIGluZGVudGlmaWVyIGF0IHRo ZSB0b3Agb2YgeW91ciBmaWxlcyBhbmQgeW91IGNhbiBkcm9wCnRoZSBsaWNlbnNlIHRleHQuCgpI ZWFkZXIgZmlsZXMgdXNlIHRoaXM6Ci8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w ICovCgpDLWZpbGVzIHVzZXMgYysrIGNvbW1lbnQgZHVlIHRvIHJlYXNvbnM6Ci8vIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCgo+ICsvKgo+ICsgKiBpbnRlbF92aXBfY29ubi5jIC0t IEludGVsIFZpZGVvIGFuZCBJbWFnZSBQcm9jZXNzaW5nKFZJUCkKPiArICogRnJhbWUgQnVmZmVy IElJIGRyaXZlcgo+ICsgKgo+ICsgKiBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgSW50ZWwgVklQ IEZyYW1lIFJlYWRlciBjb21wb25lbnQuCj4gKyAqIE1vcmUgaW5mbyBvbiB0aGUgaGFyZHdhcmUg Y2FuIGJlIGZvdW5kIGluIHRoZSBJbnRlbCBWaWRlbwo+ICsgKiBhbmQgSW1hZ2UgUHJvY2Vzc2lu ZyBTdWl0ZSBVc2VyIEd1aWRlIGF0IHRoaXMgYWRkcmVzcwo+ICsgKiBodHRwOi8vd3d3LmFsdGVy YS5jb20vbGl0ZXJhdHVyZS91Zy91Z192aXAucGRmLgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBp dAo+ICsgKiB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlLAo+ICsgKiB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCj4gKyAqIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5U QUJJTElUWSBvcgo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCj4gKyAqIG1vcmUgZGV0YWlscy4KPiAr ICoKPiArICogQXV0aG9yczoKPiArICogT25nLCBIZWFuLUxvb25nIDxoZWFuLmxvb25nLm9uZ0Bp bnRlbC5jb20+Cj4gKyAqCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KPiAr I2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVs cGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxk cm0vZHJtX2VuY29kZXJfc2xhdmUuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fcGxhbmVfaGVscGVy Lmg+Cj4gKwo+ICtzdGF0aWMgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cwo+ICtpbnRlbHZpcGZi X2RybV9jb25uZWN0b3JfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGJv b2wgZm9yY2UpCj4gK3sKPiArCXJldHVybiBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZDsKPiAr fQo+ICsKPiArc3RhdGljIHZvaWQgaW50ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2Rlc3Ryb3koc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ICsJZHJtX2Nvbm5lY3Rvcl91bnJl Z2lzdGVyKGNvbm5lY3Rvcik7Cj4gKwlkcm1fY29ubmVjdG9yX2NsZWFudXAoY29ubmVjdG9yKTsK PiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2Z1bmNzIGludGVs dmlwZmJfZHJtX2Nvbm5lY3Rvcl9mdW5jcyA9IHsKPiArCS5yZXNldCA9IGRybV9hdG9taWNfaGVs cGVyX2Nvbm5lY3Rvcl9yZXNldCwKPiArCS5kZXRlY3QgPSBpbnRlbHZpcGZiX2RybV9jb25uZWN0 b3JfZGV0ZWN0LAo+ICsJLmZpbGxfbW9kZXMgPSBkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25u ZWN0b3JfbW9kZXMsCj4gKwkuZGVzdHJveSA9IGludGVsdmlwZmJfZHJtX2Nvbm5lY3Rvcl9kZXN0 cm95LAo+ICsJLmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVj dG9yX2Rlc3Ryb3lfc3RhdGUsCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IGludGVsdmlwZmJfZHJt X2Nvbm5lY3Rvcl9nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAr ewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGNvbm5lY3Rvci0+ZGV2Owo+ICsJaW50IGNv dW50Owo+ICsKPiArCWNvdW50ID0gZHJtX2FkZF9tb2Rlc19ub2VkaWQoY29ubmVjdG9yLCBkcm0t Pm1vZGVfY29uZmlnLm1heF93aWR0aCwKPiArCQkJCSAgICAgZHJtLT5tb2RlX2NvbmZpZy5tYXhf aGVpZ2h0KTsKPiArCWRybV9zZXRfcHJlZmVycmVkX21vZGUoY29ubmVjdG9yLCBkcm0tPm1vZGVf Y29uZmlnLm1heF93aWR0aCwKPiArCQkJICAgICAgIGRybS0+bW9kZV9jb25maWcubWF4X2hlaWdo dCk7Cj4gKwlyZXR1cm4gY291bnQ7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJt X2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MKPiAraW50ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2hlbHBl cl9mdW5jcyA9IHsKPiArCS5nZXRfbW9kZXMgPSBpbnRlbHZpcGZiX2RybV9jb25uZWN0b3JfZ2V0 X21vZGVzLAo+ICt9Owo+ICsKPiArc3RydWN0IGRybV9jb25uZWN0b3IgKgo+ICtpbnRlbHZpcGZi X2Nvbm5fc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRybSkKPiArewo+ICsJc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm47Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWNvbm4gPSBkZXZtX2t6YWxsb2Mo ZHJtLT5kZXYsIHNpemVvZigqY29ubiksIEdGUF9LRVJORUwpOwo+ICsJaWYgKElTX0VSUihjb25u KSkKPiArCQlyZXR1cm4gTlVMTDsKPiArCj4gKwlyZXQgPSBkcm1fY29ubmVjdG9yX2luaXQoZHJt LCBjb25uLCAmaW50ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2Z1bmNzLAo+ICsJCQkJIERSTV9NT0RF X0NPTk5FQ1RPUl9EaXNwbGF5UG9ydCk7Cj4gKwlpZiAocmV0IDwgMCkgewo+ICsJCWRldl9lcnIo ZHJtLT5kZXYsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBkcm0gY29ubmVjdG9yXG4iKTsKPiArCQly ZXQgPSAtRU5PTUVNOwo+ICsJCWdvdG8gZXJyb3JfY29ubmVjdG9yX2NsZWFudXA7Cj4gKwl9Cj4g Kwo+ICsJY29ubi0+cG9sbGVkID0gMDsKCk5vIG5lZWQgdG8gc2V0IHRoaXMsIGl0IGlzIGFscmVh ZHkgemVybyBmcm9tIHRoZSBhbGxvY2F0aW9uLgoKPiArCWRybV9jb25uZWN0b3JfaGVscGVyX2Fk ZChjb25uLCAmaW50ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyk7Cj4gKwo+ICsJ cmV0dXJuIGNvbm47Cj4gKwo+ICtlcnJvcl9jb25uZWN0b3JfY2xlYW51cDoKPiArCWRybV9jb25u ZWN0b3JfY2xlYW51cChjb25uKTsKPiArCj4gKwlyZXR1cm4gTlVMTDsKPiArfQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfY29yZS5jIGIvZHJpdmVycy9ncHUv ZHJtL2l2aXAvaW50ZWxfdmlwX2NvcmUuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXgg MDAwMDAwMC4uYjYwMWJiNAo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aXZpcC9pbnRlbF92aXBfY29yZS5jCj4gQEAgLTAsMCArMSwxNjAgQEAKPiArLyoKPiArICogaW50 ZWxfdmlwX2NvcmUuYyAtLSBJbnRlbCBWaWRlbyBhbmQgSW1hZ2UgUHJvY2Vzc2luZyhWSVApCj4g KyAqIEZyYW1lIEJ1ZmZlciBJSSBkcml2ZXIKPiArICoKPiArICogVGhpcyBkcml2ZXIgc3VwcG9y dHMgdGhlIEludGVsIFZJUCBGcmFtZSBSZWFkZXIgY29tcG9uZW50Lgo+ICsgKiBNb3JlIGluZm8g b24gdGhlIGhhcmR3YXJlIGNhbiBiZSBmb3VuZCBpbiB0aGUgSW50ZWwgVmlkZW8KPiArICogYW5k IEltYWdlIFByb2Nlc3NpbmcgU3VpdGUgVXNlciBHdWlkZSBhdCB0aGlzIGFkZHJlc3MKPiArICog aHR0cDovL3d3dy5hbHRlcmEuY29tL2xpdGVyYXR1cmUvdWcvdWdfdmlwLnBkZi4KPiArICoKPiAr ICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkgaXQKPiArICogdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKPiArICogdmVyc2lvbiAyLCBhcyBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiArICoKPiArICogVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIGl0IHdpbGwgYmUgdXNlZnVsLCBidXQg V0lUSE9VVAo+ICsgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgo+ICsgKiBt b3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqIEF1dGhvcnM6Cj4gKyAqIE9uZywgSGVhbi1Mb29uZyA8 aGVhbi5sb29uZy5vbmdAaW50ZWwuY29tPgo+ICsgKgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxk cm0vZHJtUC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KPiArI2luY2x1ZGUgPGRy bS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5o Pgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1f ZmJfY21hX2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9nZW1fY21hX2hlbHBlci5oPgo+ ICsjaW5jbHVkZSA8ZHJtL2RybV9wbGFuZV9oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1f c2ltcGxlX2ttc19oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2ZyYW1lYnVmZmVy X2hlbHBlci5oPgo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KPiArI2luY2x1ZGUgPGxp bnV4L2tlcm5lbC5oPgo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gKwo+ICsjaW5jbHVk ZSAiaW50ZWxfdmlwX2Rydi5oIgo+ICsKPiArc3RhdGljIHZvaWQgaW50ZWx2aXBmYl9lbmFibGUo c3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlLAo+ICsJCQkgICAgICBzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5l X3N0YXRlKQo+ICt7Cj4gKwkvKgo+ICsJICogVGhlIGZyYW1laW5mbyB2YXJpYWJsZSBoYXMgdG8g Y29ycmVzcG9uZCB0byB0aGUgc2l6ZSBvZiB0aGUgVklQIFN1aXRlCj4gKwkgKiBGcmFtZSBSZWFk ZXIgcmVnaXN0ZXIgNyB3aGljaCB3aWxsIGRldGVybWluZSB0aGUgbWF4aW11bSBzaXplIHVzZWQK PiArCSAqIGluIHRoaXMgZnJhbWVpbmZvCj4gKwkgKi8KPiArCj4gKwl1MzIgZnJhbWVpbmZvOwo+ ICsJc3RydWN0IGludGVsdmlwZmJfcHJpdiAqcHJpdiA9IHBpcGUtPnBsYW5lLmRldi0+ZGV2X3By aXZhdGU7Cj4gKwl2b2lkIF9faW9tZW0gKmJhc2UgPSBwcml2LT5iYXNlOwo+ICsJc3RydWN0IGRy bV9wbGFuZV9zdGF0ZSAqc3RhdGUgPSBwaXBlLT5wbGFuZS5zdGF0ZTsKPiArCWRtYV9hZGRyX3Qg YWRkcjsKPiArCj4gKwlhZGRyID0gZHJtX2ZiX2NtYV9nZXRfZ2VtX2FkZHIoc3RhdGUtPmZiLCBz dGF0ZSwgMCk7Cj4gKwo+ICsJZnJhbWVpbmZvID0KPiArCQlyZWFkbChiYXNlICsgSU5URUxWSVBG Ql9GUkFNRV9SRUFERVIpICYgMHgwMGZmZmZmZjsKPiArCXdyaXRlbChmcmFtZWluZm8sIGJhc2Ug KyBJTlRFTFZJUEZCX0ZSQU1FX0lORk8pOwo+ICsJd3JpdGVsKGFkZHIsIGJhc2UgKyBJTlRFTFZJ UEZCX0ZSQU1FX1NUQVJUKTsKPiArCS8qIEZpbmFsbHkgc2V0IHRoZSBjb250cm9sIHJlZ2lzdGVy IHRvIDEgdG8gc3RhcnQgc3RyZWFtaW5nICovCj4gKwl3cml0ZWwoMSwgYmFzZSArIElOVEVMVklQ RkJfQ09OVFJPTCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGludGVsdmlwZmJfZGlzYWJsZShz dHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBpcGUpCj4gK3sKPiArCXN0cnVjdCBpbnRl bHZpcGZiX3ByaXYgKnByaXYgPSBwaXBlLT5wbGFuZS5kZXYtPmRldl9wcml2YXRlOwo+ICsJdm9p ZCBfX2lvbWVtICpiYXNlID0gcHJpdi0+YmFzZTsKPiArCS8qIHNldCB0aGUgY29udHJvbCByZWdp c3RlciB0byAwIHRvIHN0b3Agc3RyZWFtaW5nICovCj4gKwl3cml0ZWwoMCwgYmFzZSArIElOVEVM VklQRkJfQ09OVFJPTCk7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX21vZGVf Y29uZmlnX2Z1bmNzIGludGVsdmlwZmJfbW9kZV9jb25maWdfZnVuY3MgPSB7Cj4gKwkuZmJfY3Jl YXRlID0gZHJtX2dlbV9mYl9jcmVhdGUsCj4gKwkuYXRvbWljX2NoZWNrID0gZHJtX2F0b21pY19o ZWxwZXJfY2hlY2ssCj4gKwkuYXRvbWljX2NvbW1pdCA9IGRybV9hdG9taWNfaGVscGVyX2NvbW1p dCwKPiArfTsKPiArCj4gK3N0YXRpYyB2b2lkIGludGVsdmlwZmJfc2V0dXBfbW9kZV9jb25maWco c3RydWN0IGRybV9kZXZpY2UgKmRybSkKPiArewo+ICsJZHJtX21vZGVfY29uZmlnX2luaXQoZHJt KTsKPiArCWRybS0+bW9kZV9jb25maWcuZnVuY3MgPSAmaW50ZWx2aXBmYl9tb2RlX2NvbmZpZ19m dW5jczsKPiArfQo+ICsKPiArc3RhdGljIGludCBpbnRlbHZpcGZiX3BpcGVfcHJlcGFyZV9mYihz dHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBpcGUsCj4gKwkJCQkgICAgICBzdHJ1Y3Qg ZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiArewo+ICsJcmV0dXJuIGRybV9nZW1fZmJf cHJlcGFyZV9mYigmcGlwZS0+cGxhbmUsIHBsYW5lX3N0YXRlKTsKPiArfQo+ICsKPiArc3RhdGlj IHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZV9mdW5jcyBmYnByaXZfZnVuY3MgPSB7Cj4g KwkucHJlcGFyZV9mYiA9IGludGVsdmlwZmJfcGlwZV9wcmVwYXJlX2ZiLAoKWW91IGNhbiB1c2Ug ZHJtX2dlbV9mYl9zaW1wbGVfZGlzcGxheV9waXBlX3ByZXBhcmVfZmIoKSwgbm8gbmVlZCB0byBy b2xsCnlvdXIgb3duLgoKPiArCS5lbmFibGUgPSBpbnRlbHZpcGZiX2VuYWJsZSwKPiArCS5kaXNh YmxlID0gaW50ZWx2aXBmYl9kaXNhYmxlCj4gK307Cj4gKwo+ICtpbnQgaW50ZWx2aXBmYl9wcm9i ZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gK3sKPiArCWludCByZXR2YWw7Cj4gKwlzdHJ1Y3QgZHJt X2RldmljZSAqZHJtOwo+ICsJc3RydWN0IGludGVsdmlwZmJfcHJpdiAqZmJwcml2ID0gZGV2X2dl dF9kcnZkYXRhKGRldik7Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+ICsJ dTMyIGZvcm1hdHNbXSA9IHtEUk1fRk9STUFUX1hSR0I4ODg4fTsKPiArCj4gKwlkcm0gPSBmYnBy aXYtPmRybTsKPiArCj4gKwlkcm0tPmRldl9wcml2YXRlID0gZmJwcml2Owo+ICsKPiArCWludGVs dmlwZmJfc2V0dXBfbW9kZV9jb25maWcoZHJtKTsKPiArCj4gKwljb25uZWN0b3IgPSBpbnRlbHZp cGZiX2Nvbm5fc2V0dXAoZHJtKTsKPiArCWlmICghY29ubmVjdG9yKSB7Cj4gKwkJZGV2X2Vycihk cm0tPmRldiwgIkNvbm5lY3RvciBzZXR1cCBmYWlsZWRcbiIpOwo+ICsJCWdvdG8gZXJyX21vZGVf Y29uZmlnOwo+ICsJfQo+ICsKPiArCXJldHZhbCA9IGRybV9zaW1wbGVfZGlzcGxheV9waXBlX2lu aXQoZHJtLCAmZmJwcml2LT5waXBlLAo+ICsJCQkJCSAgICAgICZmYnByaXZfZnVuY3MsIGZvcm1h dHMsCj4gKwkJCUFSUkFZX1NJWkUoZm9ybWF0cyksIE5VTEwsIGNvbm5lY3Rvcik7Cj4gKwlpZiAo cmV0dmFsIDwgMCkgewo+ICsJCWRldl9lcnIoZHJtLT5kZXYsICJDYW5ub3Qgc2V0dXAgc2ltcGxl IGRpc3BsYXkgcGlwZVxuIik7Cj4gKwkJZ290byBlcnJfbW9kZV9jb25maWc7Cj4gKwl9Cj4gKwo+ ICsJZmJwcml2LT5mYmNtYSA9IGRybV9mYmRldl9jbWFfaW5pdChkcm0sCj4gKwkJCWRybS0+bW9k ZV9jb25maWcucHJlZmVycmVkX2RlcHRoLAo+ICsJCQlkcm0tPm1vZGVfY29uZmlnLm51bV9jb25u ZWN0b3IpOwoKUGxlYXNlIHVzZSBkcm1fZmJkZXZfZ2VuZXJpY19zZXR1cCgpIGZvciBmYmRldiBl bXVsYXRpb24uIEl0IHRlYXJzIGRvd24KYXV0b21hdGljYWxseSBvbiBkcm1fZGV2X3VucmVnaXN0 ZXIoKSBhbmQgeW91IGRvbid0IG5lZWQgdGhlCmRybV9kcml2ZXItPmxhc3RjbG9zZSBob29rLgoK QWxsIGRyaXZlcnMgdGhhdCB1c2UgZHJtX2ZiZGV2X2NtYV9pbml0KCkgd2lsbCBtb3ZlIHRvIHRo aXMgc2hvcnRseS4KCk5vcmFsZi4KCj4gKwo+ICsJZHJtX21vZGVfY29uZmlnX3Jlc2V0KGRybSk7 Cj4gKwo+ICsJZHJtX2Rldl9yZWdpc3Rlcihkcm0sIDApOwo+ICsKPiArCXJldHVybiByZXR2YWw7 Cj4gKwo+ICtlcnJfbW9kZV9jb25maWc6Cj4gKwo+ICsJZHJtX21vZGVfY29uZmlnX2NsZWFudXAo ZHJtKTsKPiArCXJldHVybiAtRU5PREVWOwo+ICt9Cj4gKwo+ICtpbnQgaW50ZWx2aXBmYl9yZW1v dmUoc3RydWN0IGRldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWx2aXBmYl9wcml2ICpm YnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0g PSAgZmJwcml2LT5kcm07Cj4gKwo+ICsJZHJtX2Rldl91bnJlZ2lzdGVyKGRybSk7Cj4gKwo+ICsJ aWYgKGZicHJpdi0+ZmJjbWEpCj4gKwkJZHJtX2ZiZGV2X2NtYV9maW5pKGZicHJpdi0+ZmJjbWEp Owo+ICsKPiArCWRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKGRybSk7Cj4gKwlkcm1fZGV2X3VucmVm KGRybSk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK01PRFVMRV9BVVRIT1IoIk9uZywg SGVhbi1Mb29uZyA8aGVhbi5sb29uZy5vbmdAaW50ZWwuY29tPiIpOwo+ICtNT0RVTEVfREVTQ1JJ UFRJT04oIkludGVsIFZJUCBGcmFtZSBCdWZmZXIgSUkgZHJpdmVyIik7Cj4gK01PRFVMRV9MSUNF TlNFKCJHUEwgdjIiKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50ZWxf dmlwX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX2Rydi5oCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi4wYTM1NTVkCj4gLS0tIC9kZXYvbnVsbAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9kcnYuaAo+IEBAIC0wLDAgKzEs NTIgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENvcnBvcmF0aW9uLgo+ ICsgKgo+ICsgKiBJbnRlbCBWaWRlbyBhbmQgSW1hZ2UgUHJvY2Vzc2luZyhWSVApIEZyYW1lIEJ1 ZmZlciBJSSBkcml2ZXIuCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Cj4gKyAqIHVuZGVyIHRo ZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Us Cj4gKyAqIHZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24uCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKPiArICogQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCj4gKyAq IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IKPiArICogbW9yZSBkZXRhaWxzLgo+ICsgKgo+ICsgKiBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhbG9uZyB3aXRoCj4gKyAqIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KPiArICoKPiArICogQXV0aG9yczoKPiArICogT25nLCBIZWFu LUxvb25nIDxoZWFuLmxvb25nLm9uZ0BpbnRlbC5jb20+Cj4gKyAqCj4gKyAqLwo+ICsjaWZuZGVm IF9JTlRFTF9WSVBfRFJWX0gKPiArI2RlZmluZSBfSU5URUxfVklQX0RSVl9ICj4gKwo+ICsjZGVm aW5lIERSSVZFUl9OQU1FICAgICJpbnRlbHZpcGZiIgo+ICsjZGVmaW5lIEJZVEVTX1BFUl9QSVhF TAkgNAo+ICsjZGVmaW5lIENSVENfTlVNCSAgICAgICAgMQo+ICsjZGVmaW5lIENPTk5fTlVNCSAg ICAgICAgMQo+ICsKPiArLyogY29udHJvbCByZWdpc3RlcnMgKi8KPiArI2RlZmluZSBJTlRFTFZJ UEZCX0NPTlRST0wJICAgICAgMAo+ICsjZGVmaW5lIElOVEVMVklQRkJfU1RBVFVTCSAgICAgICAw eDQKPiArI2RlZmluZSBJTlRFTFZJUEZCX0lOVEVSUlVQVAkgICAgMHg4Cj4gKyNkZWZpbmUgSU5U RUxWSVBGQl9GUkFNRV9DT1VOVEVSCTB4Qwo+ICsjZGVmaW5lIElOVEVMVklQRkJfRlJBTUVfRFJP UAkgICAweDEwCj4gKyNkZWZpbmUgSU5URUxWSVBGQl9GUkFNRV9JTkZPCSAgIDB4MTQKPiArI2Rl ZmluZSBJTlRFTFZJUEZCX0ZSQU1FX1NUQVJUCSAgMHgxOAo+ICsjZGVmaW5lIElOVEVMVklQRkJf RlJBTUVfUkVBREVSCSAgICAgICAgIDB4MUMKPiArCj4gK2ludCBpbnRlbHZpcGZiX3Byb2JlKHN0 cnVjdCBkZXZpY2UgKmRldik7Cj4gK2ludCBpbnRlbHZpcGZiX3JlbW92ZShzdHJ1Y3QgZGV2aWNl ICpkZXYpOwo+ICtpbnQgaW50ZWx2aXBmYl9zZXR1cF9jcnRjKHN0cnVjdCBkcm1fZGV2aWNlICpk cm0pOwo+ICtzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqaW50ZWx2aXBmYl9jb25uX3NldHVwKHN0cnVj dCBkcm1fZGV2aWNlICpkcm0pOwo+ICsKPiArc3RydWN0IGludGVsdmlwZmJfcHJpdiB7Cj4gKwlz dHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgcGlwZTsKPiArCXN0cnVjdCBkcm1fZmJkZXZf Y21hICpmYmNtYTsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkcm07Cj4gKwl2b2lkICAgIF9faW9t ZW0gKmJhc2U7Cj4gK307Cj4gKwo+ICsjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2l2aXAvaW50ZWxfdmlwX29mLmMgYi9kcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBf b2YuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uNDczMDJmOQo+IC0t LSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfb2YuYwo+ IEBAIC0wLDAgKzEsMTkzIEBACj4gKy8qCj4gKyAqIGludGVsX3ZpcF9vZi5jIC0tIEludGVsIFZp ZGVvIGFuZCBJbWFnZSBQcm9jZXNzaW5nKFZJUCkKPiArICogRnJhbWUgQnVmZmVyIElJIGRyaXZl cgo+ICsgKgo+ICsgKiBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgSW50ZWwgVklQIEZyYW1lIFJl YWRlciBjb21wb25lbnQuCj4gKyAqIE1vcmUgaW5mbyBvbiB0aGUgaGFyZHdhcmUgY2FuIGJlIGZv dW5kIGluIHRoZSBJbnRlbCBWaWRlbwo+ICsgKiBhbmQgSW1hZ2UgUHJvY2Vzc2luZyBTdWl0ZSBV c2VyIEd1aWRlIGF0IHRoaXMgYWRkcmVzcwo+ICsgKiBodHRwOi8vd3d3LmFsdGVyYS5jb20vbGl0 ZXJhdHVyZS91Zy91Z192aXAucGRmLgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAo+ICsgKiB1 bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlLAo+ICsgKiB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLgo+ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCj4gKyAqIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBv cgo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCj4gKyAqIG1vcmUgZGV0YWlscy4KPiArICoKPiArICog QXV0aG9yczoKPiArICogT25nLCBIZWFuLUxvb25nIDxoZWFuLmxvb25nLm9uZ0BpbnRlbC5jb20+ Cj4gKyAqCj4gKyAqLwo+ICsjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4KPiArI2luY2x1 ZGUgPGRybS9kcm1fZmJfY21hX2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9nZW1fY21h X2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9vZi5oPgo+ICsjaW5jbHVkZSA8ZHJtL2Ry bV9zaW1wbGVfa21zX2hlbHBlci5oPgo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2NvbXBvbmVudC5o Pgo+ICsjaW5jbHVkZSA8bGludXgvaW5pdC5oPgo+ICsjaW5jbHVkZSA8bGludXgva2VybmVsLmg+ Cj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3Jt X2RldmljZS5oPgo+ICsKPiArI2luY2x1ZGUgImludGVsX3ZpcF9kcnYuaCIKPiArCj4gK0RFRklO RV9EUk1fR0VNX0NNQV9GT1BTKGRybV9mb3BzKTsKPiArCj4gK3N0YXRpYyB2b2lkIGludGVsdmlw ZmJfbGFzdGNsb3NlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0pCj4gK3sKPiArCXN0cnVjdCBpbnRl bHZpcGZiX3ByaXYgKnByaXYgPSBkcm0tPmRldl9wcml2YXRlOwo+ICsKPiArCWRybV9mYmRldl9j bWFfcmVzdG9yZV9tb2RlKHByaXYtPmZiY21hKTsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBk cm1fZHJpdmVyIGludGVsdmlwZmJfZHJtID0gewo+ICsJLmRyaXZlcl9mZWF0dXJlcyA9Cj4gKwkJ CURSSVZFUl9NT0RFU0VUIHwgRFJJVkVSX0dFTSB8Cj4gKwkJCURSSVZFUl9QUklNRSB8IERSSVZF Ul9BVE9NSUMsCj4gKwkuZ2VtX2ZyZWVfb2JqZWN0X3VubG9ja2VkID0gZHJtX2dlbV9jbWFfZnJl ZV9vYmplY3QsCj4gKwkuZ2VtX3ZtX29wcyA9ICZkcm1fZ2VtX2NtYV92bV9vcHMsCj4gKwkuZHVt Yl9jcmVhdGUgPSBkcm1fZ2VtX2NtYV9kdW1iX2NyZWF0ZSwKPiArCS5kdW1iX2Rlc3Ryb3kgPSBk cm1fZ2VtX2R1bWJfZGVzdHJveSwKPiArCS5wcmltZV9oYW5kbGVfdG9fZmQgPSBkcm1fZ2VtX3By aW1lX2hhbmRsZV90b19mZCwKPiArCS5wcmltZV9mZF90b19oYW5kbGUgPSBkcm1fZ2VtX3ByaW1l X2ZkX3RvX2hhbmRsZSwKPiArCS5nZW1fcHJpbWVfZXhwb3J0ID0gZHJtX2dlbV9wcmltZV9leHBv cnQsCj4gKwkuZ2VtX3ByaW1lX2ltcG9ydCA9IGRybV9nZW1fcHJpbWVfaW1wb3J0LAo+ICsJLmdl bV9wcmltZV9nZXRfc2dfdGFibGUgPSBkcm1fZ2VtX2NtYV9wcmltZV9nZXRfc2dfdGFibGUsCj4g KwkuZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZSA9IGRybV9nZW1fY21hX3ByaW1lX2ltcG9ydF9z Z190YWJsZSwKPiArCS5nZW1fcHJpbWVfdm1hcCA9IGRybV9nZW1fY21hX3ByaW1lX3ZtYXAsCj4g KwkuZ2VtX3ByaW1lX3Z1bm1hcCA9IGRybV9nZW1fY21hX3ByaW1lX3Z1bm1hcCwKPiArCS5nZW1f cHJpbWVfbW1hcCA9IGRybV9nZW1fY21hX3ByaW1lX21tYXAsCj4gKwkubGFzdGNsb3NlID0gaW50 ZWx2aXBmYl9sYXN0Y2xvc2UsCj4gKwkubmFtZSA9IERSSVZFUl9OQU1FLAo+ICsJLmRhdGUgPSAi MjAxNzA3MjkiLAo+ICsJLmRlc2MgPSAiSW50ZWwgRlBHQSBWSVAgU1VJVEUiLAo+ICsJLm1ham9y ID0gMSwKPiArCS5taW5vciA9IDAsCj4gKwkuaW9jdGxzID0gTlVMTCwKPiArCS5wYXRjaGxldmVs ID0gMCwKPiArCS5mb3BzID0gJmRybV9mb3BzLAo+ICt9Owo+ICsKPiArLyoKPiArICogU2V0dGlu ZyB1cCBpbmZvcm1hdGlvbiBkZXJpdmVkIGZyb20gT0YgRGV2aWNlIFRyZWUgTm9kZXMKPiArICog bWF4LXdpZHRoLCBtYXgtaGVpZ2h0LCBiaXRzIHBlciBwaXhlbCwgbWVtb3J5IHBvcnQgd2lkdGgK PiArICovCj4gKwo+ICtzdGF0aWMgaW50IGludGVsdmlwZmJfZHJtX3NldHVwKHN0cnVjdCBkZXZp Y2UgKmRldiwKPiArCQkJCXN0cnVjdCBpbnRlbHZpcGZiX3ByaXYgKmZicHJpdikKPiArewo+ICsJ c3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGZicHJpdi0+ZHJtOwo+ICsJc3RydWN0IGRldmljZV9u b2RlICpucCA9IGRldi0+b2Zfbm9kZTsKPiArCWludCBtZW1fd29yZF93aWR0aDsKPiArCWludCBt YXhfaCwgbWF4X3c7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRf dTMyKG5wLCAiYWx0cixtYXgtd2lkdGgiLCAmbWF4X3cpOwo+ICsJaWYgKHJldCkgewo+ICsJCWRl dl9lcnIoZGV2LAo+ICsJCQkiTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXIgJ2FsdHIsbWF4LXdp ZHRoJyIpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gb2ZfcHJvcGVydHlf cmVhZF91MzIobnAsICJhbHRyLG1heC1oZWlnaHQiLCAmbWF4X2gpOwo+ICsJaWYgKHJldCkgewo+ ICsJCWRldl9lcnIoZGV2LAo+ICsJCQkiTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXIgJ2FsdHIs bWF4LWhlaWdodCciKTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCXJldCA9IG9mX3By b3BlcnR5X3JlYWRfdTMyKG5wLCAiYWx0cixtZW0tcG9ydC13aWR0aCIsICZtZW1fd29yZF93aWR0 aCk7Cj4gKwlpZiAocmV0KSB7Cj4gKwkJZGV2X2VycihkZXYsICJNaXNzaW5nIHJlcXVpcmVkIHBh cmFtZXRlciAnYWx0cixtZW0tcG9ydC13aWR0aCAnIik7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0K PiArCj4gKwlpZiAoIShtZW1fd29yZF93aWR0aCA+PSAzMiAmJiBtZW1fd29yZF93aWR0aCAlIDMy ID09IDApKSB7Cj4gKwkJZGV2X2VycihkZXYsCj4gKwkJCSJtZW0td29yZC13aWR0aCBpcyBzZXQg dG8gJWkuIG11c3QgYmUgPj0gMzIgYW5kIG11bHRpcGxlIG9mIDMyLiIsCj4gKwkJCSBtZW1fd29y ZF93aWR0aCk7Cj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwl9Cj4gKwo+ICsJZHJtLT5tb2RlX2Nv bmZpZy5taW5fd2lkdGggPSA2NDA7Cj4gKwlkcm0tPm1vZGVfY29uZmlnLm1pbl9oZWlnaHQgPSA0 ODA7Cj4gKwlkcm0tPm1vZGVfY29uZmlnLm1heF93aWR0aCA9IG1heF93Owo+ICsJZHJtLT5tb2Rl X2NvbmZpZy5tYXhfaGVpZ2h0ID0gbWF4X2g7Cj4gKwlkcm0tPm1vZGVfY29uZmlnLnByZWZlcnJl ZF9kZXB0aCA9IDMyOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGlu dGVsdmlwZmJfb2ZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiArewo+ICsJ aW50IHJldHZhbDsKPiArCXN0cnVjdCByZXNvdXJjZSAqcmVnX3JlczsKPiArCXN0cnVjdCBpbnRl bHZpcGZiX3ByaXYgKmZicHJpdjsKPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7 Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtOwo+ICsKPiArCWZicHJpdiA9IGRldm1fa3phbGxv YyhkZXYsIHNpemVvZigqZmJwcml2KSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIWZicHJpdikKPiAr CQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwkvKnNldHVwIERSTSAqLwo+ICsJZHJtID0gZHJtX2Rl dl9hbGxvYygmaW50ZWx2aXBmYl9kcm0sIGRldik7Cj4gKwlpZiAoSVNfRVJSKGRybSkpCj4gKwkJ cmV0dXJuIFBUUl9FUlIoZHJtKTsKPiArCj4gKwlyZXR2YWwgPSBkbWFfc2V0X21hc2tfYW5kX2Nv aGVyZW50KGRybS0+ZGV2LCBETUFfQklUX01BU0soMzIpKTsKPiArCWlmIChyZXR2YWwpCj4gKwkJ cmV0dXJuIC1FTk9ERVY7Cj4gKwo+ICsJZmJwcml2LT5kcm0gPSBkcm07Cj4gKwo+ICsJcmVnX3Jl cyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7Cj4gKwlp ZiAoIXJlZ19yZXMpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJZmJwcml2LT5iYXNlID0g ZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgcmVnX3Jlcyk7Cj4gKwo+ICsJaWYgKElTX0VSUihm YnByaXYtPmJhc2UpKSB7Cj4gKwkJZGV2X2VycihkZXYsICJkZXZtX2lvcmVtYXBfcmVzb3VyY2Ug ZmFpbGVkXG4iKTsKPiArCQlyZXR2YWwgPSBQVFJfRVJSKGZicHJpdi0+YmFzZSk7Cj4gKwkJcmV0 dXJuIC1FTk9NRU07Cj4gKwl9Cj4gKwo+ICsJaW50ZWx2aXBmYl9kcm1fc2V0dXAoZGV2LCBmYnBy aXYpOwo+ICsKPiArCWRldl9zZXRfZHJ2ZGF0YShkZXYsIGZicHJpdik7Cj4gKwo+ICsJcmV0dXJu IGludGVsdmlwZmJfcHJvYmUoZGV2KTsKPiArfQo+ICsKPiArc3RhdGljIGludCBpbnRlbHZpcGZi X29mX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4gKwlyZXR1cm4g aW50ZWx2aXBmYl9yZW1vdmUoJnBkZXYtPmRldik7Cj4gK30KPiArCj4gKy8qCj4gKyAqIFRoZSBu YW1lIHZpcC1mcmFtZS1idWZmZXItMi4wIGlzIGRlcml2ZWQgZnJvbQo+ICsgKiBodHRwOi8vd3d3 LmFsdGVyYS5jb20vbGl0ZXJhdHVyZS91Zy91Z192aXAucGRmCj4gKyAqIGZyYW1lIGJ1ZmZlciBJ UCBjb3JlcyBzZWN0aW9uIDE0Cj4gKyAqLwo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9k ZXZpY2VfaWQgaW50ZWx2aXBmYl9vZl9tYXRjaFtdID0gewo+ICsJeyAuY29tcGF0aWJsZSA9ICJh bHRyLHZpcC1mcmFtZS1idWZmZXItMi4wIiB9LAo+ICsJe30sCj4gK307Cj4gKwo+ICtNT0RVTEVf REVWSUNFX1RBQkxFKG9mLCBpbnRlbHZpcGZiX29mX21hdGNoKTsKPiArCj4gK3N0YXRpYyBzdHJ1 Y3QgcGxhdGZvcm1fZHJpdmVyIGludGVsdmlwZmJfZHJpdmVyID0gewo+ICsJLnByb2JlID0gaW50 ZWx2aXBmYl9vZl9wcm9iZSwKPiArCS5yZW1vdmUgPSBpbnRlbHZpcGZiX29mX3JlbW92ZSwKPiAr CS5kcml2ZXIgPSB7Cj4gKwkJLm5hbWUgPSBEUklWRVJfTkFNRSwKPiArCQkub2ZfbWF0Y2hfdGFi bGUgPSBpbnRlbHZpcGZiX29mX21hdGNoLAo+ICsJfSwKPiArfTsKPiArCj4gK21vZHVsZV9wbGF0 Zm9ybV9kcml2ZXIoaW50ZWx2aXBmYl9kcml2ZXIpOwoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vZHJpLWRldmVsCg==