From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= Subject: [PATCH v2] drm/connector: Allow max possible encoders to attach to a connector Date: Thu, 5 Sep 2019 14:09:27 -0700 Message-ID: <20190905210927.26540-1-jose.souza@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= , dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Alex Deucher , =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= , Dhinakaran Pandiyan List-Id: dri-devel@lists.freedesktop.org RnJvbTogRGhpbmFrYXJhbiBQYW5kaXlhbiA8ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+ CgpDdXJyZW50bHkgd2UgcmVzdHJpY3QgdGhlIG51bWJlciBvZiBlbmNvZGVycyB0aGF0IGNhbiBi ZSBsaW5rZWQgdG8KYSBjb25uZWN0b3IgdG8gMywgaW5jcmVhc2UgaXQgdG8gbWF0Y2ggdGhlIG1h eGltdW0gbnVtYmVyIG9mIGVuY29kZXJzCnRoYXQgY2FuIGJlIGluaXRpYWxpemVkKDMyKS4KClRv IG1vcmUgZWZmaWVudGx5IGRvIHRoYXQgbGV0cyBzd2l0Y2ggZnJvbSBhbiBhcnJheSBvZiBlbmNv ZGVyIGlkcyB0bwpiaXRtYXNrLgoKQWxzbyByZW1vdmluZyB0aGUgYmVzdF9lbmNvZGVyIGhvb2sg ZnJvbSB0aGUgZHJpdmVycyB0aGF0IG9ubHkgaGF2ZQpvbmUgZW5jb2RlciBwZXIgY29ubmVjdG9y KHRoaXMgb25lcyBoYXZlIG9uZSBlbmNvZGVyIGluIHRoZSB3aG9sZQpkcml2ZXIpLCBwaWNrX3Np bmdsZV9lbmNvZGVyX2Zvcl9jb25uZWN0b3IoKSB3aWxsIGRvIHRoZSBzYW1lIGpvYgp3aXRoIG5v IGZ1bmN0aW9uYWwgY2hhbmdlLgoKdjI6IEZpeGluZyBtaXNzZWQgcmV0dXJuIG9uIGFtZGdwdV9k bV9jb25uZWN0b3JfdG9fZW5jb2RlcigpCgpTdWdnZXN0ZWQtYnk6IFZpbGxlIFN5cmrDpGzDpCA8 dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+CkNjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxl LnN5cmphbGFAbGludXguaW50ZWwuY29tPgpDYzogQWxleCBEZXVjaGVyIDxhbGV4YW5kZXIuZGV1 Y2hlckBhbWQuY29tPgpDYzogZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpDYzogaW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpDYzogbm91dmVhdUBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKQ2M6IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnClNpZ25lZC1vZmYtYnk6IERo aW5ha2FyYW4gUGFuZGl5YW4gPGRoaW5ha2FyYW4ucGFuZGl5YW5AaW50ZWwuY29tPgpTaWduZWQt b2ZmLWJ5OiBKb3PDqSBSb2JlcnRvIGRlIFNvdXphIDxqb3NlLnNvdXphQGludGVsLmNvbT4KLS0t CiAuLi4vZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jb25uZWN0b3JzLmMgICAgfCAyMyArKysr Ky0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZGNlX3ZpcnR1YWwuYyAgICAg IHwgIDUgKystCiAuLi4vZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMg fCAgNiArKystCiBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tb2RlLmMgICAgICAgICAgICAgICAg fCAxMiAtLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyAgICAgICAg ICAgfCAgOSArKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYyAgICAg ICAgICB8ICAzICstCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rvci5jICAgICAgICAgICAg ICAgfCAzMSArKysrKy0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX3Byb2JlX2hl bHBlci5jICAgICAgICAgICAgfCAgMyArLQogZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIw MF9tb2RlLmMgICAgICAgIHwgMTEgLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvZGlz cG52MDQvZGlzcC5jICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L2Rpc3Bu djUwL2Rpc3AuYyAgICAgICB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1 X2Nvbm5lY3Rvci5jICAgfCAgNyArKy0tLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25f Y29ubmVjdG9ycy5jICAgIHwgMjcgKysrKysrLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL3Vk bC91ZGxfY29ubmVjdG9yLmMgICAgICAgICAgIHwgIDggLS0tLS0KIGluY2x1ZGUvZHJtL2RybV9j b25uZWN0b3IuaCAgICAgICAgICAgICAgICAgICB8IDE4ICsrKysrLS0tLS0tCiAxNSBmaWxlcyBj aGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCAxMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Nvbm5lY3RvcnMuYyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jb25uZWN0b3JzLmMKaW5kZXggZWNlNTVjOGZhNjcz Li5kODcyOTI4NWY3MzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9jb25uZWN0b3JzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2Nvbm5lY3RvcnMuYwpAQCAtMjE3LDExICsyMTcsMTAgQEAgYW1kZ3B1X2Nvbm5lY3Rvcl91cGRh dGVfc2NyYXRjaF9yZWdzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAJc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyOwogCWNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBl cl9mdW5jcyAqY29ubmVjdG9yX2Z1bmNzID0gY29ubmVjdG9yLT5oZWxwZXJfcHJpdmF0ZTsKIAli b29sIGNvbm5lY3RlZDsKLQlpbnQgaTsKIAogCWJlc3RfZW5jb2RlciA9IGNvbm5lY3Rvcl9mdW5j cy0+YmVzdF9lbmNvZGVyKGNvbm5lY3Rvcik7CiAKLQlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bv c3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyLCBpKSB7CisJZHJtX2Nvbm5lY3Rvcl9m b3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2RlcikgewogCQlpZiAoKGVu Y29kZXIgPT0gYmVzdF9lbmNvZGVyKSAmJiAoc3RhdHVzID09IGNvbm5lY3Rvcl9zdGF0dXNfY29u bmVjdGVkKSkKIAkJCWNvbm5lY3RlZCA9IHRydWU7CiAJCWVsc2UKQEAgLTIzNiw5ICsyMzUsOCBA QCBhbWRncHVfY29ubmVjdG9yX2ZpbmRfZW5jb2RlcihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yLAogCQkJICAgICAgIGludCBlbmNvZGVyX3R5cGUpCiB7CiAJc3RydWN0IGRybV9lbmNv ZGVyICplbmNvZGVyOwotCWludCBpOwogCi0JZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJs ZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2RlciwgaSkgeworCWRybV9jb25uZWN0b3JfZm9yX2Vh Y2hfcG9zc2libGVfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIpIHsKIAkJaWYgKGVuY29kZXIt PmVuY29kZXJfdHlwZSA9PSBlbmNvZGVyX3R5cGUpCiAJCQlyZXR1cm4gZW5jb2RlcjsKIAl9CkBA IC0zNDcsMTAgKzM0NSw5IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2VuY29kZXIgKgogYW1kZ3B1X2Nv bm5lY3Rvcl9iZXN0X3NpbmdsZV9lbmNvZGVyKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0 b3IpCiB7CiAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwotCWludCBpOwogCiAJLyogcGlj ayB0aGUgZmlyc3Qgb25lICovCi0JZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNv ZGVyKGNvbm5lY3RvciwgZW5jb2RlciwgaSkKKwlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3Np YmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyKQogCQlyZXR1cm4gZW5jb2RlcjsKIAogCXJl dHVybiBOVUxMOwpAQCAtMTA2NSw5ICsxMDYyLDggQEAgYW1kZ3B1X2Nvbm5lY3Rvcl9kdmlfZGV0 ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGJvb2wgZm9yY2UpCiAJLyogZmlu ZCBhbmFsb2cgZW5jb2RlciAqLwogCWlmIChhbWRncHVfY29ubmVjdG9yLT5kYWNfbG9hZF9kZXRl Y3QpIHsKIAkJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwotCQlpbnQgaTsKIAotCQlkcm1f Y29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyLCBp KSB7CisJCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVfZW5jb2Rlcihjb25uZWN0b3Is IGVuY29kZXIpIHsKIAkJCWlmIChlbmNvZGVyLT5lbmNvZGVyX3R5cGUgIT0gRFJNX01PREVfRU5D T0RFUl9EQUMgJiYKIAkJCSAgICBlbmNvZGVyLT5lbmNvZGVyX3R5cGUgIT0gRFJNX01PREVfRU5D T0RFUl9UVkRBQykKIAkJCQljb250aW51ZTsKQEAgLTExMTcsOSArMTExMyw4IEBAIGFtZGdwdV9j b25uZWN0b3JfZHZpX2VuY29kZXIoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKIHsK IAlzdHJ1Y3QgYW1kZ3B1X2Nvbm5lY3RvciAqYW1kZ3B1X2Nvbm5lY3RvciA9IHRvX2FtZGdwdV9j b25uZWN0b3IoY29ubmVjdG9yKTsKIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7Ci0JaW50 IGk7CiAKLQlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9y LCBlbmNvZGVyLCBpKSB7CisJZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVy KGNvbm5lY3RvciwgZW5jb2RlcikgewogCQlpZiAoYW1kZ3B1X2Nvbm5lY3Rvci0+dXNlX2RpZ2l0 YWwgPT0gdHJ1ZSkgewogCQkJaWYgKGVuY29kZXItPmVuY29kZXJfdHlwZSA9PSBEUk1fTU9ERV9F TkNPREVSX1RNRFMpCiAJCQkJcmV0dXJuIGVuY29kZXI7CkBAIC0xMTM0LDcgKzExMjksNyBAQCBh bWRncHVfY29ubmVjdG9yX2R2aV9lbmNvZGVyKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0 b3IpCiAKIAkvKiB0aGVuIGNoZWNrIHVzZSBkaWdpdGlhbCAqLwogCS8qIHBpY2sgdGhlIGZpcnN0 IG9uZSAqLwotCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVfZW5jb2Rlcihjb25uZWN0 b3IsIGVuY29kZXIsIGkpCisJZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVy KGNvbm5lY3RvciwgZW5jb2RlcikKIAkJcmV0dXJuIGVuY29kZXI7CiAKIAlyZXR1cm4gTlVMTDsK QEAgLTEyNzEsOSArMTI2Niw4IEBAIHUxNiBhbWRncHVfY29ubmVjdG9yX2VuY29kZXJfZ2V0X2Rw X2JyaWRnZV9lbmNvZGVyX2lkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uCiB7CiAJc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyOwogCXN0cnVjdCBhbWRncHVfZW5jb2RlciAqYW1kZ3B1X2Vu Y29kZXI7Ci0JaW50IGk7CiAKLQlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29k ZXIoY29ubmVjdG9yLCBlbmNvZGVyLCBpKSB7CisJZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3Nz aWJsZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2RlcikgewogCQlhbWRncHVfZW5jb2RlciA9IHRv X2FtZGdwdV9lbmNvZGVyKGVuY29kZXIpOwogCiAJCXN3aXRjaCAoYW1kZ3B1X2VuY29kZXItPmVu Y29kZXJfaWQpIHsKQEAgLTEyOTIsMTAgKzEyODYsOSBAQCBzdGF0aWMgYm9vbCBhbWRncHVfY29u bmVjdG9yX2VuY29kZXJfaXNfaGJyMihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQog ewogCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKIAlzdHJ1Y3QgYW1kZ3B1X2VuY29kZXIg KmFtZGdwdV9lbmNvZGVyOwotCWludCBpOwogCWJvb2wgZm91bmQgPSBmYWxzZTsKIAotCWRybV9j b25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIsIGkp IHsKKwlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBl bmNvZGVyKSB7CiAJCWFtZGdwdV9lbmNvZGVyID0gdG9fYW1kZ3B1X2VuY29kZXIoZW5jb2Rlcik7 CiAJCWlmIChhbWRncHVfZW5jb2Rlci0+Y2FwcyAmIEFUT01fRU5DT0RFUl9DQVBfUkVDT1JEX0hC UjIpCiAJCQlmb3VuZCA9IHRydWU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9kY2VfdmlydHVhbC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZGNlX3ZpcnR1 YWwuYwppbmRleCBmMWZhZGI1YmExOTEuLjk5ZDEyZTg4ZGU5MiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvZGNlX3ZpcnR1YWwuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9kY2VfdmlydHVhbC5jCkBAIC0yNjAsMTUgKzI2MCwxNCBAQCBzdGF0aWMgc3Ry dWN0IGRybV9lbmNvZGVyICoKIGRjZV92aXJ0dWFsX2VuY29kZXIoc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvcikKIHsKIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7Ci0JaW50IGk7 CiAKLQlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBl bmNvZGVyLCBpKSB7CisJZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNv bm5lY3RvciwgZW5jb2RlcikgewogCQlpZiAoZW5jb2Rlci0+ZW5jb2Rlcl90eXBlID09IERSTV9N T0RFX0VOQ09ERVJfVklSVFVBTCkKIAkJCXJldHVybiBlbmNvZGVyOwogCX0KIAogCS8qIHBpY2sg dGhlIGZpcnN0IG9uZSAqLwotCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVfZW5jb2Rl cihjb25uZWN0b3IsIGVuY29kZXIsIGkpCisJZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJs ZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2RlcikKIAkJcmV0dXJuIGVuY29kZXI7CiAKIAlyZXR1 cm4gTlVMTDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVf ZG0vYW1kZ3B1X2RtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2Ft ZGdwdV9kbS5jCmluZGV4IDBhNzFlZDFlNzc2Mi4uZDZlMzkyNWNhNjMzIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMKQEAgLTQ4MjIs NyArNDgyMiwxMSBAQCBzdGF0aWMgaW50IHRvX2RybV9jb25uZWN0b3JfdHlwZShlbnVtIHNpZ25h bF90eXBlIHN0KQogCiBzdGF0aWMgc3RydWN0IGRybV9lbmNvZGVyICphbWRncHVfZG1fY29ubmVj dG9yX3RvX2VuY29kZXIoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKIHsKLQlyZXR1 cm4gZHJtX2VuY29kZXJfZmluZChjb25uZWN0b3ItPmRldiwgTlVMTCwgY29ubmVjdG9yLT5lbmNv ZGVyX2lkc1swXSk7CisJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOworCisJLyogVGhlcmUg aXMgb25seSBvbmUgZW5jb2RlciBwZXIgY29ubmVjdG9yICovCisJZHJtX2Nvbm5lY3Rvcl9mb3Jf ZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2RlcikKKwkJcmV0dXJuIGVuY29k ZXI7CiB9CiAKIHN0YXRpYyB2b2lkIGFtZGdwdV9kbV9nZXRfbmF0aXZlX21vZGUoc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvcikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3Qv YXN0X21vZGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21vZGUuYwppbmRleCBkMzQ5Yzcy MTUwMWMuLmVlZjk1ZTFhZjA2YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3Rf bW9kZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21vZGUuYwpAQCAtNjg3LDE3ICs2 ODcsNiBAQCBzdGF0aWMgdm9pZCBhc3RfZW5jb2Rlcl9kZXN0cm95KHN0cnVjdCBkcm1fZW5jb2Rl ciAqZW5jb2RlcikKIAlrZnJlZShlbmNvZGVyKTsKIH0KIAotCi1zdGF0aWMgc3RydWN0IGRybV9l bmNvZGVyICphc3RfYmVzdF9zaW5nbGVfZW5jb2RlcihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yKQotewotCWludCBlbmNfaWQgPSBjb25uZWN0b3ItPmVuY29kZXJfaWRzWzBdOwotCS8q IHBpY2sgdGhlIGVuY29kZXIgaWRzICovCi0JaWYgKGVuY19pZCkKLQkJcmV0dXJuIGRybV9lbmNv ZGVyX2ZpbmQoY29ubmVjdG9yLT5kZXYsIE5VTEwsIGVuY19pZCk7Ci0JcmV0dXJuIE5VTEw7Ci19 Ci0KLQogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9mdW5jcyBhc3RfZW5jX2Z1bmNz ID0gewogCS5kZXN0cm95ID0gYXN0X2VuY29kZXJfZGVzdHJveSwKIH07CkBAIC04NDcsNyArODM2 LDYgQEAgc3RhdGljIHZvaWQgYXN0X2Nvbm5lY3Rvcl9kZXN0cm95KHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IpCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVy X2Z1bmNzIGFzdF9jb25uZWN0b3JfaGVscGVyX2Z1bmNzID0gewogCS5tb2RlX3ZhbGlkID0gYXN0 X21vZGVfdmFsaWQsCiAJLmdldF9tb2RlcyA9IGFzdF9nZXRfbW9kZXMsCi0JLmJlc3RfZW5jb2Rl ciA9IGFzdF9iZXN0X3NpbmdsZV9lbmNvZGVyLAogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBk cm1fY29ubmVjdG9yX2Z1bmNzIGFzdF9jb25uZWN0b3JfZnVuY3MgPSB7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f YXRvbWljX2hlbHBlci5jCmluZGV4IDQ3MDY0MzlmYjQ5MC4uYzQ0MDAyN2NiNTM3IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwpAQCAtMTA0LDggKzEwNCwxMyBAQCBkcm1fYXRvbWlj X2hlbHBlcl9wbGFuZV9jaGFuZ2VkKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKIHN0 YXRpYyBzdHJ1Y3QgZHJtX2VuY29kZXIgKgogcGlja19zaW5nbGVfZW5jb2Rlcl9mb3JfY29ubmVj dG9yKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCiB7Ci0JV0FSTl9PTihjb25uZWN0 b3ItPmVuY29kZXJfaWRzWzFdKTsKLQlyZXR1cm4gZHJtX2VuY29kZXJfZmluZChjb25uZWN0b3It PmRldiwgTlVMTCwgY29ubmVjdG9yLT5lbmNvZGVyX2lkc1swXSk7CisJc3RydWN0IGRybV9lbmNv ZGVyICplbmNvZGVyOworCisJV0FSTl9PTihod2VpZ2h0MzIoY29ubmVjdG9yLT5wb3NzaWJsZV9l bmNvZGVycykgPiAxKTsKKwlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIo Y29ubmVjdG9yLCBlbmNvZGVyKQorCQlyZXR1cm4gZW5jb2RlcjsKKworCXJldHVybiBOVUxMOwog fQogCiBzdGF0aWMgaW50IGhhbmRsZV9jb25mbGljdGluZ19lbmNvZGVycyhzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVu dF9tb2Rlc2V0LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMKaW5kZXgg Yzg5MjJiN2NhYzA5Li44OTViNzNmMjMwNzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fY2xpZW50X21vZGVzZXQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rl c2V0LmMKQEAgLTQxNSw5ICs0MTUsOCBAQCBzdGF0aWMgYm9vbCBjb25uZWN0b3JfaGFzX3Bvc3Np YmxlX2NydGMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAkJCQkJc3RydWN0IGRy bV9jcnRjICpjcnRjKQogewogCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKLQlpbnQgaTsK IAotCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVfZW5jb2Rlcihjb25uZWN0b3IsIGVu Y29kZXIsIGkpIHsKKwlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29u bmVjdG9yLCBlbmNvZGVyKSB7CiAJCWlmIChlbmNvZGVyLT5wb3NzaWJsZV9jcnRjcyAmIGRybV9j cnRjX21hc2soY3J0YykpCiAJCQlyZXR1cm4gdHJ1ZTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZHJtX2Nvbm5lY3Rvci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3Iu YwppbmRleCA0Yzc2NjYyNGIyMGQuLjQzODk2YzcxMWI1MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2RybV9jb25uZWN0b3IuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rv ci5jCkBAIC0zNjUsOCArMzY1LDYgQEAgRVhQT1JUX1NZTUJPTChkcm1fY29ubmVjdG9yX2F0dGFj aF9lZGlkX3Byb3BlcnR5KTsKIGludCBkcm1fY29ubmVjdG9yX2F0dGFjaF9lbmNvZGVyKHN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAJCQkJIHN0cnVjdCBkcm1fZW5jb2RlciAqZW5j b2RlcikKIHsKLQlpbnQgaTsKLQogCS8qCiAJICogSW4gdGhlIHBhc3QsIGRyaXZlcnMgaGF2ZSBh dHRlbXB0ZWQgdG8gbW9kZWwgdGhlIHN0YXRpYyBhc3NvY2lhdGlvbgogCSAqIG9mIGNvbm5lY3Rv ciB0byBlbmNvZGVyIGluIHNpbXBsZSBjb25uZWN0b3IvZW5jb2RlciBkZXZpY2VzIHVzaW5nIGEK QEAgLTM4MSwxOCArMzc5LDE1IEBAIGludCBkcm1fY29ubmVjdG9yX2F0dGFjaF9lbmNvZGVyKHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAJaWYgKFdBUk5fT04oY29ubmVjdG9yLT5l bmNvZGVyKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0la RShjb25uZWN0b3ItPmVuY29kZXJfaWRzKTsgaSsrKSB7Ci0JCWlmIChjb25uZWN0b3ItPmVuY29k ZXJfaWRzW2ldID09IDApIHsKLQkJCWNvbm5lY3Rvci0+ZW5jb2Rlcl9pZHNbaV0gPSBlbmNvZGVy LT5iYXNlLmlkOwotCQkJcmV0dXJuIDA7Ci0JCX0KLQl9Ci0JcmV0dXJuIC1FTk9NRU07CisJY29u bmVjdG9yLT5wb3NzaWJsZV9lbmNvZGVycyB8PSBkcm1fZW5jb2Rlcl9tYXNrKGVuY29kZXIpOwor CisJcmV0dXJuIDA7CiB9CiBFWFBPUlRfU1lNQk9MKGRybV9jb25uZWN0b3JfYXR0YWNoX2VuY29k ZXIpOwogCiAvKioKLSAqIGRybV9jb25uZWN0b3JfaGFzX3Bvc3NpYmxlX2VuY29kZXIgLSBjaGVj ayBpZiB0aGUgY29ubmVjdG9yIGFuZCBlbmNvZGVyIGFyZSBhc3Nvc2ljYXRlZCB3aXRoIGVhY2gg b3RoZXIKKyAqIGRybV9jb25uZWN0b3JfaGFzX3Bvc3NpYmxlX2VuY29kZXIgLSBjaGVjayBpZiB0 aGUgY29ubmVjdG9yIGFuZCBlbmNvZGVyIGFyZQorICogYXNzb2NpYXRlZCB3aXRoIGVhY2ggb3Ro ZXIKICAqIEBjb25uZWN0b3I6IHRoZSBjb25uZWN0b3IKICAqIEBlbmNvZGVyOiB0aGUgZW5jb2Rl cgogICoKQEAgLTQwMiwxNSArMzk3LDcgQEAgRVhQT1JUX1NZTUJPTChkcm1fY29ubmVjdG9yX2F0 dGFjaF9lbmNvZGVyKTsKIGJvb2wgZHJtX2Nvbm5lY3Rvcl9oYXNfcG9zc2libGVfZW5jb2Rlcihz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCQkJCQlzdHJ1Y3QgZHJtX2VuY29kZXIg KmVuY29kZXIpCiB7Ci0Jc3RydWN0IGRybV9lbmNvZGVyICplbmM7Ci0JaW50IGk7Ci0KLQlkcm1f Y29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmMsIGkpIHsK LQkJaWYgKGVuYyA9PSBlbmNvZGVyKQotCQkJcmV0dXJuIHRydWU7Ci0JfQotCi0JcmV0dXJuIGZh bHNlOworCXJldHVybiBjb25uZWN0b3ItPnBvc3NpYmxlX2VuY29kZXJzICYgZHJtX2VuY29kZXJf bWFzayhlbmNvZGVyKTsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2Nvbm5lY3Rvcl9oYXNfcG9zc2li bGVfZW5jb2Rlcik7CiAKQEAgLTIxMjEsNyArMjEwOCw2IEBAIGludCBkcm1fbW9kZV9nZXRjb25u ZWN0b3Ioc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlpbnQgZW5jb2RlcnNf Y291bnQgPSAwOwogCWludCByZXQgPSAwOwogCWludCBjb3BpZWQgPSAwOwotCWludCBpOwogCXN0 cnVjdCBkcm1fbW9kZV9tb2RlaW5mbyB1X21vZGU7CiAJc3RydWN0IGRybV9tb2RlX21vZGVpbmZv IF9fdXNlciAqbW9kZV9wdHI7CiAJdWludDMyX3QgX191c2VyICplbmNvZGVyX3B0cjsKQEAgLTIx MzYsMTQgKzIxMjIsMTMgQEAgaW50IGRybV9tb2RlX2dldGNvbm5lY3RvcihzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLAogCWlmICghY29ubmVjdG9yKQogCQlyZXR1cm4gLUVOT0VO VDsKIAotCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVfZW5jb2Rlcihjb25uZWN0b3Is IGVuY29kZXIsIGkpCi0JCWVuY29kZXJzX2NvdW50Kys7CisJZW5jb2RlcnNfY291bnQgPSBod2Vp Z2h0MzIoY29ubmVjdG9yLT5wb3NzaWJsZV9lbmNvZGVycyk7CiAKIAlpZiAoKG91dF9yZXNwLT5j b3VudF9lbmNvZGVycyA+PSBlbmNvZGVyc19jb3VudCkgJiYgZW5jb2RlcnNfY291bnQpIHsKIAkJ Y29waWVkID0gMDsKIAkJZW5jb2Rlcl9wdHIgPSAodWludDMyX3QgX191c2VyICopKHVuc2lnbmVk IGxvbmcpKG91dF9yZXNwLT5lbmNvZGVyc19wdHIpOwogCi0JCWRybV9jb25uZWN0b3JfZm9yX2Vh Y2hfcG9zc2libGVfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIsIGkpIHsKKwkJZHJtX2Nvbm5l Y3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2RlcikgewogCQkJ aWYgKHB1dF91c2VyKGVuY29kZXItPmJhc2UuaWQsIGVuY29kZXJfcHRyICsgY29waWVkKSkgewog CQkJCXJldCA9IC1FRkFVTFQ7CiAJCQkJZ290byBvdXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vZHJtX3Byb2JlX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9wcm9iZV9oZWxw ZXIuYwppbmRleCAzNTFjYmM0MGYwZjguLmE3Yzg3YWJlODhkMCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2RybV9wcm9iZV9oZWxwZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3By b2JlX2hlbHBlci5jCkBAIC05Myw3ICs5Myw2IEBAIGRybV9tb2RlX3ZhbGlkYXRlX3BpcGVsaW5l KHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjb25uZWN0b3ItPmRldjsKIAllbnVtIGRybV9tb2RlX3N0YXR1cyByZXQgPSBNT0RFX09LOwog CXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKLQlpbnQgaTsKIAogCS8qIFN0ZXAgMTogVmFs aWRhdGUgYWdhaW5zdCBjb25uZWN0b3IgKi8KIAlyZXQgPSBkcm1fY29ubmVjdG9yX21vZGVfdmFs aWQoY29ubmVjdG9yLCBtb2RlKTsKQEAgLTEwMSw3ICsxMDAsNyBAQCBkcm1fbW9kZV92YWxpZGF0 ZV9waXBlbGluZShzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKIAkJcmV0dXJuIHJldDsK IAogCS8qIFN0ZXAgMjogVmFsaWRhdGUgYWdhaW5zdCBlbmNvZGVycyBhbmQgY3J0Y3MgKi8KLQlk cm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVy LCBpKSB7CisJZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5lY3Rv ciwgZW5jb2RlcikgewogCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CiAKIAkJcmV0ID0gZHJtX2Vu Y29kZXJfbW9kZV92YWxpZChlbmNvZGVyLCBtb2RlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9tZ2FnMjAwL21nYWcyMDBfbW9kZS5jIGIvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdh ZzIwMF9tb2RlLmMKaW5kZXggNWU3NzhiNWYxYTEwLi42ODIyNjU1NjA0NGIgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfbW9kZS5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9tZ2FnMjAwL21nYWcyMDBfbW9kZS5jCkBAIC0xNjM4LDE2ICsxNjM4LDYgQEAgc3RhdGlj IGVudW0gZHJtX21vZGVfc3RhdHVzIG1nYV92Z2FfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubmVjdG9yLAogCXJldHVybiBNT0RFX09LOwogfQogCi1zdGF0aWMgc3RydWN0IGRy bV9lbmNvZGVyICptZ2FfY29ubmVjdG9yX2Jlc3RfZW5jb2RlcihzdHJ1Y3QgZHJtX2Nvbm5lY3Rv cgotCQkJCQkJICAqY29ubmVjdG9yKQotewotCWludCBlbmNfaWQgPSBjb25uZWN0b3ItPmVuY29k ZXJfaWRzWzBdOwotCS8qIHBpY2sgdGhlIGVuY29kZXIgaWRzICovCi0JaWYgKGVuY19pZCkKLQkJ cmV0dXJuIGRybV9lbmNvZGVyX2ZpbmQoY29ubmVjdG9yLT5kZXYsIE5VTEwsIGVuY19pZCk7Ci0J cmV0dXJuIE5VTEw7Ci19Ci0KIHN0YXRpYyB2b2lkIG1nYV9jb25uZWN0b3JfZGVzdHJveShzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogewogCXN0cnVjdCBtZ2FfY29ubmVjdG9yICpt Z2FfY29ubmVjdG9yID0gdG9fbWdhX2Nvbm5lY3Rvcihjb25uZWN0b3IpOwpAQCAtMTY1OSw3ICsx NjQ5LDYgQEAgc3RhdGljIHZvaWQgbWdhX2Nvbm5lY3Rvcl9kZXN0cm95KHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IpCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVs cGVyX2Z1bmNzIG1nYV92Z2FfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyA9IHsKIAkuZ2V0X21vZGVz ID0gbWdhX3ZnYV9nZXRfbW9kZXMsCiAJLm1vZGVfdmFsaWQgPSBtZ2FfdmdhX21vZGVfdmFsaWQs Ci0JLmJlc3RfZW5jb2RlciA9IG1nYV9jb25uZWN0b3JfYmVzdF9lbmNvZGVyLAogfTsKIAogc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2Z1bmNzIG1nYV92Z2FfY29ubmVjdG9yX2Z1 bmNzID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvZGlzcG52MDQvZGlz cC5jIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvZGlzcG52MDQvZGlzcC5jCmluZGV4IGRjNjQ4 NjNiNWZkOC4uNDRlZTgyZDBjOWI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVh dS9kaXNwbnYwNC9kaXNwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvZGlzcG52MDQv ZGlzcC5jCkBAIC0yNTYsNyArMjU2LDcgQEAgbnYwNF9kaXNwbGF5X2NyZWF0ZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGNvbm5lY3RvciwgY3Qs CiAJCQkJICZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rvcl9saXN0LCBoZWFkKSB7Ci0JCWlmICgh Y29ubmVjdG9yLT5lbmNvZGVyX2lkc1swXSkgeworCQlpZiAoIWNvbm5lY3Rvci0+cG9zc2libGVf ZW5jb2RlcnMpIHsKIAkJCU5WX1dBUk4oZHJtLCAiJXMgaGFzIG5vIGVuY29kZXJzLCByZW1vdmlu Z1xuIiwKIAkJCQljb25uZWN0b3ItPm5hbWUpOwogCQkJY29ubmVjdG9yLT5mdW5jcy0+ZGVzdHJv eShjb25uZWN0b3IpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvZGlzcG52 NTAvZGlzcC5jIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvZGlzcG52NTAvZGlzcC5jCmluZGV4 IDMwNzU4NDEwN2Q3Ny4uOThjODcxOTVkNzExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v bm91dmVhdS9kaXNwbnY1MC9kaXNwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvZGlz cG52NTAvZGlzcC5jCkBAIC0yMzkxLDcgKzIzOTEsNyBAQCBudjUwX2Rpc3BsYXlfY3JlYXRlKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAKIAkvKiBjdWxsIGFueSBjb25uZWN0b3JzIHdlIGNyZWF0 ZWQgdGhhdCBkb24ndCBoYXZlIGFuIGVuY29kZXIgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3Nh ZmUoY29ubmVjdG9yLCB0bXAsICZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rvcl9saXN0LCBoZWFk KSB7Ci0JCWlmIChjb25uZWN0b3ItPmVuY29kZXJfaWRzWzBdKQorCQlpZiAoY29ubmVjdG9yLT5w b3NzaWJsZV9lbmNvZGVycykKIAkJCWNvbnRpbnVlOwogCiAJCU5WX1dBUk4oZHJtLCAiJXMgaGFz IG5vIGVuY29kZXJzLCByZW1vdmluZ1xuIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9u b3V2ZWF1L25vdXZlYXVfY29ubmVjdG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2 ZWF1X2Nvbm5lY3Rvci5jCmluZGV4IDU2ODcxZDM0ZTNmYi4uM2E1ZGIxN2JjNWM3IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2Nvbm5lY3Rvci5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfY29ubmVjdG9yLmMKQEAgLTM2NSw5ICszNjUs OCBAQCBmaW5kX2VuY29kZXIoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgaW50IHR5 cGUpCiB7CiAJc3RydWN0IG5vdXZlYXVfZW5jb2RlciAqbnZfZW5jb2RlcjsKIAlzdHJ1Y3QgZHJt X2VuY29kZXIgKmVuYzsKLQlpbnQgaTsKIAotCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2li bGVfZW5jb2Rlcihjb25uZWN0b3IsIGVuYywgaSkgeworCWRybV9jb25uZWN0b3JfZm9yX2VhY2hf cG9zc2libGVfZW5jb2Rlcihjb25uZWN0b3IsIGVuYykgewogCQludl9lbmNvZGVyID0gbm91dmVh dV9lbmNvZGVyKGVuYyk7CiAKIAkJaWYgKHR5cGUgPT0gRENCX09VVFBVVF9BTlkgfHwKQEAgLTQx NCwxMCArNDEzLDEwIEBAIG5vdXZlYXVfY29ubmVjdG9yX2RkY19kZXRlY3Qoc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvcikKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9y LT5kZXY7CiAJc3RydWN0IG5vdXZlYXVfZW5jb2RlciAqbnZfZW5jb2RlciA9IE5VTEwsICpmb3Vu ZCA9IE5VTEw7CiAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwotCWludCBpLCByZXQ7CisJ aW50IHJldDsKIAlib29sIHN3aXRjaGVyb29fZGRjID0gZmFsc2U7CiAKLQlkcm1fY29ubmVjdG9y X2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyLCBpKSB7CisJZHJt X2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2Rlcikg ewogCQludl9lbmNvZGVyID0gbm91dmVhdV9lbmNvZGVyKGVuY29kZXIpOwogCiAJCXN3aXRjaCAo bnZfZW5jb2Rlci0+ZGNiLT50eXBlKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFk ZW9uL3JhZGVvbl9jb25uZWN0b3JzLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9j b25uZWN0b3JzLmMKaW5kZXggYjY4NGNkNzE5NjEyLi5jMDc0MjdkM2MxOTkgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Nvbm5lY3RvcnMuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9jb25uZWN0b3JzLmMKQEAgLTI0OSwxMSArMjQ5LDEwIEBA IHJhZGVvbl9jb25uZWN0b3JfdXBkYXRlX3NjcmF0Y2hfcmVncyhzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLCBlbnVtIGRybV9jCiAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwog CWNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyAqY29ubmVjdG9yX2Z1bmNz ID0gY29ubmVjdG9yLT5oZWxwZXJfcHJpdmF0ZTsKIAlib29sIGNvbm5lY3RlZDsKLQlpbnQgaTsK IAogCWJlc3RfZW5jb2RlciA9IGNvbm5lY3Rvcl9mdW5jcy0+YmVzdF9lbmNvZGVyKGNvbm5lY3Rv cik7CiAKLQlkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9y LCBlbmNvZGVyLCBpKSB7CisJZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVy KGNvbm5lY3RvciwgZW5jb2RlcikgewogCQlpZiAoKGVuY29kZXIgPT0gYmVzdF9lbmNvZGVyKSAm JiAoc3RhdHVzID09IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkKSkKIAkJCWNvbm5lY3RlZCA9 IHRydWU7CiAJCWVsc2UKQEAgLTI2OSw5ICsyNjgsOCBAQCByYWRlb25fY29ubmVjdG9yX3VwZGF0 ZV9zY3JhdGNoX3JlZ3Moc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgZW51bSBkcm1f Ywogc3RhdGljIHN0cnVjdCBkcm1fZW5jb2RlciAqcmFkZW9uX2ZpbmRfZW5jb2RlcihzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBpbnQgZW5jb2Rlcl90eXBlKQogewogCXN0cnVjdCBk cm1fZW5jb2RlciAqZW5jb2RlcjsKLQlpbnQgaTsKIAotCWRybV9jb25uZWN0b3JfZm9yX2VhY2hf cG9zc2libGVfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIsIGkpIHsKKwlkcm1fY29ubmVjdG9y X2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyKSB7CiAJCWlmIChl bmNvZGVyLT5lbmNvZGVyX3R5cGUgPT0gZW5jb2Rlcl90eXBlKQogCQkJcmV0dXJuIGVuY29kZXI7 CiAJfQpAQCAtMzgwLDEwICszNzgsOSBAQCBzdGF0aWMgaW50IHJhZGVvbl9kZGNfZ2V0X21vZGVz KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCiBzdGF0aWMgc3RydWN0IGRybV9lbmNv ZGVyICpyYWRlb25fYmVzdF9zaW5nbGVfZW5jb2RlcihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yKQogewogCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKLQlpbnQgaTsKIAogCS8q IHBpY2sgdGhlIGZpcnN0IG9uZSAqLwotCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVf ZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIsIGkpCisJZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9w b3NzaWJsZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2RlcikKIAkJcmV0dXJuIGVuY29kZXI7CiAK IAlyZXR1cm4gTlVMTDsKQEAgLTQyOCwxNCArNDI1LDEzIEBAIHJhZGVvbl9jb25uZWN0b3JfYW5h bG9nX2VuY29kZXJfY29uZmxpY3Rfc29sdmUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv ciwKIAogCWxpc3RfZm9yX2VhY2hfZW50cnkoY29uZmxpY3QsICZkZXYtPm1vZGVfY29uZmlnLmNv bm5lY3Rvcl9saXN0LCBoZWFkKSB7CiAJCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jOwotCQlpbnQg aTsKIAogCQlpZiAoY29uZmxpY3QgPT0gY29ubmVjdG9yKQogCQkJY29udGludWU7CiAKIAkJcmFk ZW9uX2NvbmZsaWN0ID0gdG9fcmFkZW9uX2Nvbm5lY3Rvcihjb25mbGljdCk7CiAKLQkJZHJtX2Nv bm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbmZsaWN0LCBlbmMsIGkpIHsKKwkJ ZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbmZsaWN0LCBlbmMpIHsK IAkJCS8qIGlmIHRoZSBJRHMgbWF0Y2ggKi8KIAkJCWlmIChlbmMgPT0gZW5jb2RlcikgewogCQkJ CWlmIChjb25mbGljdC0+c3RhdHVzICE9IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkKQpAQCAt MTM2Myw5ICsxMzU5LDcgQEAgcmFkZW9uX2R2aV9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvciwgYm9vbCBmb3JjZSkKIAogCS8qIGZpbmQgYW5hbG9nIGVuY29kZXIgKi8KIAlp ZiAocmFkZW9uX2Nvbm5lY3Rvci0+ZGFjX2xvYWRfZGV0ZWN0KSB7Ci0JCWludCBpOwotCi0JCWRy bV9jb25uZWN0b3JfZm9yX2VhY2hfcG9zc2libGVfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIs IGkpIHsKKwkJZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5lY3Rv ciwgZW5jb2RlcikgewogCQkJaWYgKGVuY29kZXItPmVuY29kZXJfdHlwZSAhPSBEUk1fTU9ERV9F TkNPREVSX0RBQyAmJgogCQkJICAgIGVuY29kZXItPmVuY29kZXJfdHlwZSAhPSBEUk1fTU9ERV9F TkNPREVSX1RWREFDKQogCQkJCWNvbnRpbnVlOwpAQCAtMTQ0Myw5ICsxNDM3LDggQEAgc3RhdGlj IHN0cnVjdCBkcm1fZW5jb2RlciAqcmFkZW9uX2R2aV9lbmNvZGVyKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IpCiB7CiAJc3RydWN0IHJhZGVvbl9jb25uZWN0b3IgKnJhZGVvbl9jb25u ZWN0b3IgPSB0b19yYWRlb25fY29ubmVjdG9yKGNvbm5lY3Rvcik7CiAJc3RydWN0IGRybV9lbmNv ZGVyICplbmNvZGVyOwotCWludCBpOwogCi0JZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJs ZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2RlciwgaSkgeworCWRybV9jb25uZWN0b3JfZm9yX2Vh Y2hfcG9zc2libGVfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIpIHsKIAkJaWYgKHJhZGVvbl9j b25uZWN0b3ItPnVzZV9kaWdpdGFsID09IHRydWUpIHsKIAkJCWlmIChlbmNvZGVyLT5lbmNvZGVy X3R5cGUgPT0gRFJNX01PREVfRU5DT0RFUl9UTURTKQogCQkJCXJldHVybiBlbmNvZGVyOwpAQCAt MTQ2MCw3ICsxNDUzLDcgQEAgc3RhdGljIHN0cnVjdCBkcm1fZW5jb2RlciAqcmFkZW9uX2R2aV9l bmNvZGVyKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCiAKIAkvKiB0aGVuIGNoZWNr IHVzZSBkaWdpdGlhbCAqLwogCS8qIHBpY2sgdGhlIGZpcnN0IG9uZSAqLwotCWRybV9jb25uZWN0 b3JfZm9yX2VhY2hfcG9zc2libGVfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIsIGkpCisJZHJt X2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2RlcikK IAkJcmV0dXJuIGVuY29kZXI7CiAKIAlyZXR1cm4gTlVMTDsKQEAgLTE2MDMsOSArMTU5Niw4IEBA IHUxNiByYWRlb25fY29ubmVjdG9yX2VuY29kZXJfZ2V0X2RwX2JyaWRnZV9lbmNvZGVyX2lkKHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uCiB7CiAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVy OwogCXN0cnVjdCByYWRlb25fZW5jb2RlciAqcmFkZW9uX2VuY29kZXI7Ci0JaW50IGk7CiAKLQlk cm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVy LCBpKSB7CisJZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5lY3Rv ciwgZW5jb2RlcikgewogCQlyYWRlb25fZW5jb2RlciA9IHRvX3JhZGVvbl9lbmNvZGVyKGVuY29k ZXIpOwogCiAJCXN3aXRjaCAocmFkZW9uX2VuY29kZXItPmVuY29kZXJfaWQpIHsKQEAgLTE2MjQs MTAgKzE2MTYsOSBAQCBzdGF0aWMgYm9vbCByYWRlb25fY29ubmVjdG9yX2VuY29kZXJfaXNfaGJy MihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogewogCXN0cnVjdCBkcm1fZW5jb2Rl ciAqZW5jb2RlcjsKIAlzdHJ1Y3QgcmFkZW9uX2VuY29kZXIgKnJhZGVvbl9lbmNvZGVyOwotCWlu dCBpOwogCWJvb2wgZm91bmQgPSBmYWxzZTsKIAotCWRybV9jb25uZWN0b3JfZm9yX2VhY2hfcG9z c2libGVfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIsIGkpIHsKKwlkcm1fY29ubmVjdG9yX2Zv cl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVjdG9yLCBlbmNvZGVyKSB7CiAJCXJhZGVvbl9l bmNvZGVyID0gdG9fcmFkZW9uX2VuY29kZXIoZW5jb2Rlcik7CiAJCWlmIChyYWRlb25fZW5jb2Rl ci0+Y2FwcyAmIEFUT01fRU5DT0RFUl9DQVBfUkVDT1JEX0hCUjIpCiAJCQlmb3VuZCA9IHRydWU7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9jb25uZWN0b3IuYyBiL2RyaXZl cnMvZ3B1L2RybS91ZGwvdWRsX2Nvbm5lY3Rvci5jCmluZGV4IGRkYjYxYTYwYzYxMC4uYjRhZTNl ODlhN2I0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9jb25uZWN0b3IuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9jb25uZWN0b3IuYwpAQCAtOTAsMTMgKzkwLDYg QEAgdWRsX2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBib29sIGZvcmNl KQogCXJldHVybiBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZDsKIH0KIAotc3RhdGljIHN0cnVj dCBkcm1fZW5jb2RlcioKLXVkbF9iZXN0X3NpbmdsZV9lbmNvZGVyKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IpCi17Ci0JaW50IGVuY19pZCA9IGNvbm5lY3Rvci0+ZW5jb2Rlcl9pZHNb MF07Ci0JcmV0dXJuIGRybV9lbmNvZGVyX2ZpbmQoY29ubmVjdG9yLT5kZXYsIE5VTEwsIGVuY19p ZCk7Ci19Ci0KIHN0YXRpYyBpbnQgdWRsX2Nvbm5lY3Rvcl9zZXRfcHJvcGVydHkoc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAkJCQkgICAgICBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpw cm9wZXJ0eSwKIAkJCQkgICAgICB1aW50NjRfdCB2YWwpCkBAIC0xMjAsNyArMTEzLDYgQEAgc3Rh dGljIHZvaWQgdWRsX2Nvbm5lY3Rvcl9kZXN0cm95KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3IpCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzIHVk bF9jb25uZWN0b3JfaGVscGVyX2Z1bmNzID0gewogCS5nZXRfbW9kZXMgPSB1ZGxfZ2V0X21vZGVz LAogCS5tb2RlX3ZhbGlkID0gdWRsX21vZGVfdmFsaWQsCi0JLmJlc3RfZW5jb2RlciA9IHVkbF9i ZXN0X3NpbmdsZV9lbmNvZGVyLAogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVj dG9yX2Z1bmNzIHVkbF9jb25uZWN0b3JfZnVuY3MgPSB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2Ry bS9kcm1fY29ubmVjdG9yLmggYi9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgKaW5kZXggNjgx Y2I1OTBmOTUyLi5jNmU5OTNlNzhkYmQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9jb25u ZWN0b3IuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgKQEAgLTEyODgsMTIgKzEy ODgsMTIgQEAgc3RydWN0IGRybV9jb25uZWN0b3IgewogCS8qKiBAb3ZlcnJpZGVfZWRpZDogaGFz IHRoZSBFRElEIGJlZW4gb3ZlcndyaXR0ZW4gdGhyb3VnaCBkZWJ1Z2ZzIGZvciB0ZXN0aW5nPyAq LwogCWJvb2wgb3ZlcnJpZGVfZWRpZDsKIAotI2RlZmluZSBEUk1fQ09OTkVDVE9SX01BWF9FTkNP REVSIDMKIAkvKioKLQkgKiBAZW5jb2Rlcl9pZHM6IFZhbGlkIGVuY29kZXJzIGZvciB0aGlzIGNv bm5lY3Rvci4gUGxlYXNlIG9ubHkgdXNlCi0JICogZHJtX2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3Nz aWJsZV9lbmNvZGVyKCkgdG8gZW51bWVyYXRlIHRoZXNlLgorCSAqIEBwb3NzaWJsZV9lbmNvZGVy czogQml0IG1hc2sgb2YgZW5jb2RlcnMgdGhhdCBjYW4gZHJpdmUgdGhpcworCSAqIGNvbm5lY3Rv ciwgZHJtX2VuY29kZXJfaW5kZXgoKSBkZXRlcm1pbmVzIHRoZSBpbmRleCBpbnRvIHRoZSBiaXRm aWVsZAorCSAqIGFuZCB0aGUgYml0cyBhcmUgc2V0IHdpdGggZHJtX2Nvbm5lY3Rvcl9hdHRhY2hf ZW5jb2RlcigpLgogCSAqLwotCXVpbnQzMl90IGVuY29kZXJfaWRzW0RSTV9DT05ORUNUT1JfTUFY X0VOQ09ERVJdOworCXUzMiBwb3NzaWJsZV9lbmNvZGVyczsKIAogCS8qKgogCSAqIEBlbmNvZGVy OiBDdXJyZW50bHkgYm91bmQgZW5jb2RlciBkcml2aW5nIHRoaXMgY29ubmVjdG9yLCBpZiBhbnku CkBAIC0xNjA4LDEzICsxNjA4LDkgQEAgYm9vbCBkcm1fY29ubmVjdG9yX2hhc19wb3NzaWJsZV9l bmNvZGVyKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAgKiBkcm1fY29ubmVjdG9y X2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIgLSBpdGVyYXRlIGNvbm5lY3RvcidzIHBvc3NpYmxl IGVuY29kZXJzCiAgKiBAY29ubmVjdG9yOiAmc3RydWN0IGRybV9jb25uZWN0b3IgcG9pbnRlcgog ICogQGVuY29kZXI6ICZzdHJ1Y3QgZHJtX2VuY29kZXIgcG9pbnRlciB1c2VkIGFzIGN1cnNvcgot ICogQF9faTogaW50IGl0ZXJhdGlvbiBjdXJzb3IsIGZvciBtYWNyby1pbnRlcm5hbCB1c2UKICAq LwotI2RlZmluZSBkcm1fY29ubmVjdG9yX2Zvcl9lYWNoX3Bvc3NpYmxlX2VuY29kZXIoY29ubmVj dG9yLCBlbmNvZGVyLCBfX2kpIFwKLQlmb3IgKChfX2kpID0gMDsgKF9faSkgPCBBUlJBWV9TSVpF KChjb25uZWN0b3IpLT5lbmNvZGVyX2lkcykgJiYgXAotCQkgICAgIChjb25uZWN0b3IpLT5lbmNv ZGVyX2lkc1soX19pKV0gIT0gMDsgKF9faSkrKykgXAotCQlmb3JfZWFjaF9pZigoZW5jb2Rlcikg PSBcCi0JCQkgICAgZHJtX2VuY29kZXJfZmluZCgoY29ubmVjdG9yKS0+ZGV2LCBOVUxMLCBcCi0J CQkJCSAgICAgKGNvbm5lY3RvciktPmVuY29kZXJfaWRzWyhfX2kpXSkpIFwKKyNkZWZpbmUgZHJt X2Nvbm5lY3Rvcl9mb3JfZWFjaF9wb3NzaWJsZV9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2Rlcikg XAorCWRybV9mb3JfZWFjaF9lbmNvZGVyX21hc2soZW5jb2RlciwgKGNvbm5lY3RvciktPmRldiwg XAorCQkJCSAgKGNvbm5lY3RvciktPnBvc3NpYmxlX2VuY29kZXJzKQogCiAjZW5kaWYKLS0gCjIu MjMuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1k LWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4