From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [RFC v4 19/25] drm/client: Finish the in-kernel client API Date: Thu, 12 Apr 2018 18:12:31 +0200 Message-ID: <20180412161237.9314-8-noralf@tronnes.org> References: <20180412161237.9314-1-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180412161237.9314-1-noralf@tronnes.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, laurent.pinchart@ideasonboard.com, mstaudt@suse.de List-Id: dri-devel@lists.freedesktop.org VGhlIG1vZGVzZXR0aW5nIGNvZGUgaXMgYWxyZWFkeSBwcmVzZW50LCB0aGlzIGFkZHMgdGhlIHJl c3Qgb2YgdGhlIEFQSS4KClNpZ25lZC1vZmYtYnk6IE5vcmFsZiBUcsO4bm5lcyA8bm9yYWxmQHRy b25uZXMub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50LmMgICAgICAgfCA1NzMg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2Ry bV9kZWJ1Z2ZzLmMgICAgICB8ICAgNyArCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jICAgICAg ICAgIHwgIDExICsKIGRyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jICAgICAgICAgfCAgIDMgKwog ZHJpdmVycy9ncHUvZHJtL2RybV9wcm9iZV9oZWxwZXIuYyB8ICAgMyArCiBkcml2ZXJzL2dwdS9k cm0vZHJtX3N5c2ZzLmMgICAgICAgIHwgIDIwICsrCiBpbmNsdWRlL2RybS9kcm1fY2xpZW50Lmgg ICAgICAgICAgIHwgMTAzICsrKysrKysKIGluY2x1ZGUvZHJtL2RybV9kZXZpY2UuaCAgICAgICAg ICAgfCAgIDQgKwogOCBmaWxlcyBjaGFuZ2VkLCA3MjQgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Ns aWVudC5jCmluZGV4IGJjZTE2MzBhMGRiMi4uNzYwZjE3OTVmODEyIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2NsaWVudC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50 LmMKQEAgLTgsNyArOCw5IEBACiAgKiBDb3B5cmlnaHQgKGMpIDIwMDcgRGF2ZSBBaXJsaWUgPGFp cmxpZWRAbGludXguaWU+CiAgKi8KIAorI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4KICNpbmNs dWRlIDxsaW51eC9saXN0Lmg+CisjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KICNpbmNsdWRlIDxs aW51eC9zbGFiLmg+CiAKICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgpAQCAtMTcsMTQgKzE5 LDI4MCBAQAogI2luY2x1ZGUgPGRybS9kcm1fY29ubmVjdG9yLmg+CiAjaW5jbHVkZSA8ZHJtL2Ry bV9jcnRjLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxkcm0vZHJt X2ZpbGUuaD4KICNpbmNsdWRlIDxkcm0vZHJtX21vZGVzLmg+CiAKKyNpbmNsdWRlICJkcm1fY3J0 Y19pbnRlcm5hbC5oIgogI2luY2x1ZGUgImRybV9pbnRlcm5hbC5oIgogCiBzdHJ1Y3QgZHJtX2Ns aWVudF9kaXNwbGF5X29mZnNldCB7CiAJaW50IHgsIHk7CiB9OwogCitzdGF0aWMgaW50IGRybV9j bGllbnRfYWxsb2NfZmlsZShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCkKK3sKKwlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gY2xpZW50LT5kZXY7CisJc3RydWN0IGRybV9maWxlICpmaWxl OworCisJZmlsZSA9IGRybV9maWxlX2FsbG9jKGRldi0+cHJpbWFyeSk7CisJaWYgKElTX0VSUihm aWxlKSkKKwkJcmV0dXJuIFBUUl9FUlIoZmlsZSk7CisKKwlkcm1fZGV2X2dldChkZXYpOworCisJ bXV0ZXhfbG9jaygmZGV2LT5maWxlbGlzdF9tdXRleCk7CisJbGlzdF9hZGQoJmZpbGUtPmxoZWFk LCAmZGV2LT5maWxlbGlzdF9pbnRlcm5hbCk7CisJbXV0ZXhfdW5sb2NrKCZkZXYtPmZpbGVsaXN0 X211dGV4KTsKKworCWNsaWVudC0+ZmlsZSA9IGZpbGU7CisKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIHZvaWQgZHJtX2NsaWVudF9mcmVlX2ZpbGUoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGll bnQpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNsaWVudC0+ZGV2OworCisJbXV0ZXhf bG9jaygmZGV2LT5maWxlbGlzdF9tdXRleCk7CisJbGlzdF9kZWwoJmNsaWVudC0+ZmlsZS0+bGhl YWQpOworCW11dGV4X3VubG9jaygmZGV2LT5maWxlbGlzdF9tdXRleCk7CisKKwlkcm1fZmlsZV9m cmVlKGNsaWVudC0+ZmlsZSk7CisJZHJtX2Rldl9wdXQoZGV2KTsKK30KKworc3RydWN0IGRybV9j bGllbnRfZGV2ICoKK2RybV9jbGllbnRfbmV3KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGNvbnN0 IHN0cnVjdCBkcm1fY2xpZW50X2Z1bmNzICpmdW5jcykKK3sKKwlzdHJ1Y3QgZHJtX2NsaWVudF9k ZXYgKmNsaWVudDsKKwlpbnQgcmV0OworCisJaWYgKFdBUk5fT04oIWZ1bmNzLT5uYW1lKSkKKwkJ cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CisKKwljbGllbnQgPSBremFsbG9jKHNpemVvZigqY2xp ZW50KSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFjbGllbnQpCisJCXJldHVybiBFUlJfUFRSKC1FTk9N RU0pOworCisJY2xpZW50LT5kZXYgPSBkZXY7CisJY2xpZW50LT5mdW5jcyA9IGZ1bmNzOworCisJ cmV0ID0gZHJtX2NsaWVudF9hbGxvY19maWxlKGNsaWVudCk7CisJaWYgKHJldCkgeworCQlrZnJl ZShjbGllbnQpOworCQlyZXR1cm4gRVJSX1BUUihyZXQpOworCX0KKworCW11dGV4X2xvY2soJmRl di0+Y2xpZW50bGlzdF9tdXRleCk7CisJbGlzdF9hZGQoJmNsaWVudC0+bGlzdCwgJmRldi0+Y2xp ZW50bGlzdCk7CisJbXV0ZXhfdW5sb2NrKCZkZXYtPmNsaWVudGxpc3RfbXV0ZXgpOworCisJcmV0 dXJuIGNsaWVudDsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2NsaWVudF9uZXcpOworCitzdHJ1Y3Qg ZHJtX2NsaWVudF9kZXYgKgorZHJtX2NsaWVudF9uZXdfZnJvbV9pZCh1bnNpZ25lZCBpbnQgZGV2 X2lkLCBjb25zdCBzdHJ1Y3QgZHJtX2NsaWVudF9mdW5jcyAqZnVuY3MpCit7CisJc3RydWN0IGRy bV9jbGllbnRfZGV2ICpjbGllbnQ7CisJc3RydWN0IGRybV9taW5vciAqbWlub3I7CisKKwltaW5v ciA9IGRybV9taW5vcl9hY3F1aXJlKGRldl9pZCk7CisJaWYgKElTX0VSUihtaW5vcikpCisJCXJl dHVybiBFUlJfQ0FTVChtaW5vcik7CisKKwljbGllbnQgPSBkcm1fY2xpZW50X25ldyhtaW5vci0+ ZGV2LCBmdW5jcyk7CisKKwlkcm1fbWlub3JfcmVsZWFzZShtaW5vcik7CisKKwlyZXR1cm4gY2xp ZW50OworfQorRVhQT1JUX1NZTUJPTChkcm1fY2xpZW50X25ld19mcm9tX2lkKTsKKworLyoqCisg KiBkcm1fY2xpZW50X2ZyZWUgLSBGcmVlIERSTSBjbGllbnQgcmVzb3VyY2VzCisgKiBAY2xpZW50 OiBEUk0gY2xpZW50CisgKgorICogVGhpcyBpcyBjYWxsZWQgYXV0b21hdGljYWxseSBvbiBjbGll bnQgcmVtb3ZhbCB1bmxlc3MgdGhlIGNsaWVudCByZXR1cm5zCisgKiBub24temVybyBpbiB0aGUg JmRybV9jbGllbnRfZnVuY3MtPnJlbW92ZSBjYWxsYmFjay4gVGhlIGZiZGV2IGNsaWVudCBkb2Vz CisgKiB0aGlzIHdoZW4gaXQgY2FuJ3QgY2xvc2UgJmRybV9maWxlIGJlY2F1c2UgdXNlcnNwYWNl IGhhcyBhbiBvcGVuIGZkLgorICoKKyAqIE5vdGU6CisgKiBJZiB0aGUgY2xpZW50IGNhbid0IHJl bGVhc2UgaXQncyByZXNvdXJjZXMgb24gcmVtb3ZlLCBpdCBuZWVkcyB0byBob2xkIGEKKyAqIHJl ZmVyZW5jZSBvbiB0aGUgZHJpdmVyIG1vZHVsZSB0byBwcmV2ZW50IHRoZSBjb2RlIGZyb20gZ29p bmcgYXdheS4KKyAqLwordm9pZCBkcm1fY2xpZW50X2ZyZWUoc3RydWN0IGRybV9jbGllbnRfZGV2 ICpjbGllbnQpCit7CisJRFJNX0RFVl9ERUJVR19LTVMoY2xpZW50LT5kZXYtPmRldiwgIiVzXG4i LCBjbGllbnQtPmZ1bmNzLT5uYW1lKTsKKwlkcm1fY2xpZW50X2ZyZWVfZmlsZShjbGllbnQpOwor CWtmcmVlKGNsaWVudCk7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9jbGllbnRfZnJlZSk7CisKK3N0 YXRpYyB2b2lkIGRybV9jbGllbnRfcmVtb3ZlX2xvY2tlZChzdHJ1Y3QgZHJtX2NsaWVudF9kZXYg KmNsaWVudCkKK3sKKwlsaXN0X2RlbCgmY2xpZW50LT5saXN0KTsKKworCWlmICghY2xpZW50LT5m dW5jcy0+cmVtb3ZlIHx8ICFjbGllbnQtPmZ1bmNzLT5yZW1vdmUoY2xpZW50KSkKKwkJZHJtX2Ns aWVudF9mcmVlKGNsaWVudCk7Cit9CisKK3N0YXRpYyB2b2lkIGRybV9jbGllbnRfcmVtb3ZlX3Nh ZmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCQkgICBzdHJ1Y3QgZHJtX2NsaWVudF9kZXYg KmNsaWVudCkKK3sKKwlzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKml0ZXI7CisKKwltdXRleF9sb2Nr KCZkZXYtPmNsaWVudGxpc3RfbXV0ZXgpOworCWxpc3RfZm9yX2VhY2hfZW50cnkoaXRlciwgJmRl di0+Y2xpZW50bGlzdCwgbGlzdCkgeworCQlpZiAoaXRlciA9PSBjbGllbnQpIHsKKwkJCWRybV9j bGllbnRfcmVtb3ZlX2xvY2tlZChjbGllbnQpOworCQkJYnJlYWs7CisJCX0KKwl9CisJbXV0ZXhf dW5sb2NrKCZkZXYtPmNsaWVudGxpc3RfbXV0ZXgpOworfQorCisvKioKKyAqIGRybV9jbGllbnRf cmVtb3ZlIC0gUmVtb3ZlIGNsaWVudAorICogQGNsaWVudDogQ2xpZW50CisgKgorICogUmVtb3Zl IGEgY2xpZW50LgorICovCit2b2lkIGRybV9jbGllbnRfcmVtb3ZlKHN0cnVjdCBkcm1fY2xpZW50 X2RldiAqY2xpZW50KQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7CisKKwlpZiAoIWNsaWVu dCkKKwkJcmV0dXJuOworCisJZGV2ID0gY2xpZW50LT5kZXY7CisJZHJtX2Rldl9nZXQoZGV2KTsK Kwlkcm1fY2xpZW50X3JlbW92ZV9zYWZlKGRldiwgY2xpZW50KTsKKwlkcm1fZGV2X3B1dChkZXYp OworfQorRVhQT1JUX1NZTUJPTChkcm1fY2xpZW50X3JlbW92ZSk7CisKK3N0cnVjdCBkcm1fY2xp ZW50X3JlbW92ZV9kZWZlciB7CisJc3RydWN0IGxpc3RfaGVhZCBsaXN0OworCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXY7CisJc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQ7Cit9OworCitzdGF0 aWMgTElTVF9IRUFEKGRybV9jbGllbnRfcmVtb3ZlX2RlZmVyX2xpc3QpOworc3RhdGljIERFRklO RV9NVVRFWChkcm1fY2xpZW50X3JlbW92ZV9kZWZlcl9saXN0X2xvY2spOworCitzdGF0aWMgdm9p ZCBkcm1fY2xpZW50X3JlbW92ZV9kZWZlcl93b3JrX2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29y aykKK3sKKwlzdHJ1Y3QgZHJtX2NsaWVudF9yZW1vdmVfZGVmZXIgKmRlZmVyLCAqdG1wOworCisJ bXV0ZXhfbG9jaygmZHJtX2NsaWVudF9yZW1vdmVfZGVmZXJfbGlzdF9sb2NrKTsKKwlsaXN0X2Zv cl9lYWNoX2VudHJ5X3NhZmUoZGVmZXIsIHRtcCwgJmRybV9jbGllbnRfcmVtb3ZlX2RlZmVyX2xp c3QsIGxpc3QpIHsKKwkJZHJtX2NsaWVudF9yZW1vdmVfc2FmZShkZWZlci0+ZGV2LCBkZWZlci0+ Y2xpZW50KTsKKwkJZHJtX2Rldl9wdXQoZGVmZXItPmRldik7CisJCWxpc3RfZGVsKCZkZWZlci0+ bGlzdCk7CisJCWtmcmVlKGRlZmVyKTsKKwl9CisJbXV0ZXhfdW5sb2NrKCZkcm1fY2xpZW50X3Jl bW92ZV9kZWZlcl9saXN0X2xvY2spOworfQorCitzdGF0aWMgREVDTEFSRV9XT1JLKGRybV9jbGll bnRfcmVtb3ZlX2RlZmVyX3dvcmssIGRybV9jbGllbnRfcmVtb3ZlX2RlZmVyX3dvcmtfZm4pOwor CisvKioKKyAqIGRybV9jbGllbnRfcmVtb3ZlX2RlZmVyIC0gRGVmZXJyZWQgY2xpZW50IHJlbW92 YWwKKyAqIEBjbGllbnQ6IENsaWVudAorICoKKyAqIERlZmVyIGNsaWVudCByZW1vdmFsIHRvIGEg d29ya2VyLiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIGZvciBhIGNsaWVudCBydW5uaW5nCisgKiBp biBhIHdvcmtlciB0byByZW1vdmUgaXRzZWxmLgorICoKKyAqIFJldHVybnM6CisgKiBaZXJvIG9u IHN1Y2Nlc3MsIG9yIC1FTk9NRU0gb24gYWxsb2NhdGlvbiBmYWlsdXJlLgorICovCitpbnQgZHJt X2NsaWVudF9yZW1vdmVfZGVmZXIoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQpCit7CisJ c3RydWN0IGRybV9jbGllbnRfcmVtb3ZlX2RlZmVyICpkZWZlcjsKKworCWlmICghY2xpZW50KQor CQlyZXR1cm4gMDsKKworCWRlZmVyID0ga3phbGxvYyhzaXplb2YoKmRlZmVyKSwgR0ZQX0tFUk5F TCk7CisJaWYgKCFkZWZlcikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlkZWZlci0+ZGV2ID0gY2xp ZW50LT5kZXY7CisJZGVmZXItPmNsaWVudCA9IGNsaWVudDsKKwlkcm1fZGV2X2dldChjbGllbnQt PmRldik7CisKKwltdXRleF9sb2NrKCZkcm1fY2xpZW50X3JlbW92ZV9kZWZlcl9saXN0X2xvY2sp OworCWxpc3RfYWRkKCZkZWZlci0+bGlzdCwgJmRybV9jbGllbnRfcmVtb3ZlX2RlZmVyX2xpc3Qp OworCW11dGV4X3VubG9jaygmZHJtX2NsaWVudF9yZW1vdmVfZGVmZXJfbGlzdF9sb2NrKTsKKwor CXNjaGVkdWxlX3dvcmsoJmRybV9jbGllbnRfcmVtb3ZlX2RlZmVyX3dvcmspOworCisJcmV0dXJu IDA7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9jbGllbnRfcmVtb3ZlX2RlZmVyKTsKKwordm9pZCBk cm1fY2xpZW50X2luaXQodm9pZCkKK3sKK30KKwordm9pZCBkcm1fY2xpZW50X2V4aXQodm9pZCkK K3sKKwlmbHVzaF93b3JrKCZkcm1fY2xpZW50X3JlbW92ZV9kZWZlcl93b3JrKTsKK30KKwordm9p ZCBkcm1fY2xpZW50X2Rldl91bnJlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJ c3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsICp0bXA7CisKKwlpZiAoIWRybV9jb3JlX2No ZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfTU9ERVNFVCkpCisJCXJldHVybjsKKworCW11dGV4X2xv Y2soJmRldi0+Y2xpZW50bGlzdF9tdXRleCk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGNs aWVudCwgdG1wLCAmZGV2LT5jbGllbnRsaXN0LCBsaXN0KQorCQlkcm1fY2xpZW50X3JlbW92ZV9s b2NrZWQoY2xpZW50KTsKKwltdXRleF91bmxvY2soJmRldi0+Y2xpZW50bGlzdF9tdXRleCk7Cit9 CisKK3ZvaWQgZHJtX2NsaWVudF9kZXZfaG90cGx1ZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQor eworCXN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50OworCWludCByZXQ7CisKKwlpZiAoIWRy bV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfTU9ERVNFVCkpCisJCXJldHVybjsKKwor CW11dGV4X2xvY2soJmRldi0+Y2xpZW50bGlzdF9tdXRleCk7CisJbGlzdF9mb3JfZWFjaF9lbnRy eShjbGllbnQsICZkZXYtPmNsaWVudGxpc3QsIGxpc3QpIHsKKwkJaWYgKCFjbGllbnQtPmZ1bmNz LT5ob3RwbHVnKQorCQkJY29udGludWU7CisKKwkJcmV0ID0gY2xpZW50LT5mdW5jcy0+aG90cGx1 ZyhjbGllbnQpOworCQlEUk1fREVWX0RFQlVHX0tNUyhkZXYtPmRldiwgIiVzOiByZXQ9JWRcbiIs IGNsaWVudC0+ZnVuY3MtPm5hbWUsIHJldCk7CisJfQorCW11dGV4X3VubG9jaygmZGV2LT5jbGll bnRsaXN0X211dGV4KTsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2NsaWVudF9kZXZfaG90cGx1Zyk7 CisKK3ZvaWQgZHJtX2NsaWVudF9kZXZfbGFzdGNsb3NlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cit7CisJc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQ7CisJaW50IHJldDsKKworCWlmICgh ZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9NT0RFU0VUKSkKKwkJcmV0dXJuOwor CisJbXV0ZXhfbG9jaygmZGV2LT5jbGllbnRsaXN0X211dGV4KTsKKwlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KGNsaWVudCwgJmRldi0+Y2xpZW50bGlzdCwgbGlzdCkgeworCQlpZiAoIWNsaWVudC0+ZnVu Y3MtPmxhc3RjbG9zZSkKKwkJCWNvbnRpbnVlOworCisJCXJldCA9IGNsaWVudC0+ZnVuY3MtPmxh c3RjbG9zZShjbGllbnQpOworCQlEUk1fREVWX0RFQlVHX0tNUyhkZXYtPmRldiwgIiVzOiByZXQ9 JWRcbiIsIGNsaWVudC0+ZnVuY3MtPm5hbWUsIHJldCk7CisJfQorCW11dGV4X3VubG9jaygmZGV2 LT5jbGllbnRsaXN0X211dGV4KTsKK30KKwogLyoqCiAgKiBkcm1fY2xpZW50X2Rpc3BsYXlfY3Jl YXRlKCkgLSBDcmVhdGUgZGlzcGxheSBzdHJ1Y3R1cmUKICAqIEBkZXY6IERSTSBkZXZpY2UKQEAg LTM0OCw2ICs2MTYsOTAgQEAgaW50IGRybV9jbGllbnRfZGlzcGxheV9yZXN0b3JlKHN0cnVjdCBk cm1fY2xpZW50X2Rpc3BsYXkgKmRpc3BsYXksIGJvb2wgZm9yY2UpCiB9CiBFWFBPUlRfU1lNQk9M KGRybV9jbGllbnRfZGlzcGxheV9yZXN0b3JlKTsKIAorLyoqCisgKiBkcm1fY2xpZW50X2Rpc3Bs YXlfY29tbWl0X21vZGUgLSBDb21taXQgYSBtb2RlL2ZiIHRvIHRoZSBDUlRDKHMpCisgKiBAZGlz cGxheTogQ2xpZW50IGRpc3BsYXkKKyAqIEBmYjogRnJhbWVidWZmZXIgKGlmIE5VTEwgdGhlIGN1 cnJlbnQgZmIgaXMgdXNlZCkKKyAqIEBtb2RlOiBEaXNwbGF5IG1vZGUgKGlmIE5VTEwgdGhlIGN1 cnJlbnQgbW9kZSBpcyB1c2VkKQorICoKKyAqIFJldHVybnM6CisgKiBaZXJvIG9uIHN1Y2Nlc3Ms IG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqLworaW50IGRybV9jbGllbnRfZGlz cGxheV9jb21taXQoc3RydWN0IGRybV9jbGllbnRfZGlzcGxheSAqZGlzcGxheSwKKwkJCSAgICAg IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9k ZSkKK3sKKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqdXNlX21vZGUgPSBOVUxMOworCXN0cnVj dCBkcm1fbW9kZV9zZXQgKm1vZGVzZXQ7CisJdW5zaWduZWQgaW50IGNvdW50ID0gMDsKKworCWlm IChtb2RlKSB7CisJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICppdGVyOworCisJCWRybV9jbGll bnRfZGlzcGxheV9mb3JfZWFjaF9tb2RlKGl0ZXIsIGRpc3BsYXkpIHsKKwkJCWlmICghdXNlX21v ZGUgJiYgZHJtX21vZGVfZXF1YWwoaXRlciwgbW9kZSkpCisJCQkJdXNlX21vZGUgPSBpdGVyOwor CQkJY291bnQrKzsKKwkJfQorCisJCWlmICghdXNlX21vZGUpCisJCQlyZXR1cm4gLUVJTlZBTDsK KworCQkvKgorCQkgKiBEb24ndCBhY3R1YWxseSBzZXQgdGhlIG1vZGUgaW4gdGhlIHNpbmdsZSBt b2RlIGNhc2Ugc2luY2UgaXQKKwkJICogbWlnaHQgYmUgYSB0aWxlZCBkaXNwbGF5IHdoaWNoIGNv bnNpc3RzIG9mIG11bHRpcGxlIG1vZGVzLgorCQkgKiBKdXN0IGtlZXAgdGhlIGN1cnJlbnQgbW9k ZS4KKwkJICovCisJCWlmIChjb3VudCA9PSAxKQorCQkJdXNlX21vZGUgPSBOVUxMOworCX0KKwor CWNvdW50ID0gMDsKKwlkcm1fY2xpZW50X2Rpc3BsYXlfZm9yX2VhY2hfbW9kZXNldChtb2Rlc2V0 LCBkaXNwbGF5KSB7CisJCWlmICghbW9kZXNldC0+bnVtX2Nvbm5lY3RvcnMpCisJCQljb250aW51 ZTsKKworCQlpZiAoZmIpCisJCQltb2Rlc2V0LT5mYiA9IGZiOworCisJCWlmICh1c2VfbW9kZSkg eworCQkJaWYgKFdBUk5fT04oKytjb3VudCA+IDEpKQorCQkJCXJldHVybiAtRUlOVkFMOworCisJ CQlpZiAobW9kZXNldC0+bW9kZSkKKwkJCQlkcm1fbW9kZV9kZXN0cm95KGRpc3BsYXktPmRldiwg bW9kZXNldC0+bW9kZSk7CisJCQltb2Rlc2V0LT5tb2RlID0gZHJtX21vZGVfZHVwbGljYXRlKGRp c3BsYXktPmRldiwgdXNlX21vZGUpOworCQkJaWYgKCFtb2Rlc2V0LT5tb2RlKQorCQkJCXJldHVy biAtRU5PTUVNOworCQl9CisJfQorCisJcmV0dXJuIGRybV9jbGllbnRfZGlzcGxheV9yZXN0b3Jl KGRpc3BsYXksIGZhbHNlKTsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2NsaWVudF9kaXNwbGF5X2Nv bW1pdCk7CisKK3N0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmRybV9jbGllbnRfZGlzcGxheV9jdXJy ZW50X2ZiKHN0cnVjdCBkcm1fY2xpZW50X2Rpc3BsYXkgKmRpc3BsYXkpCit7CisJc3RydWN0IGRy bV9tb2RlX3NldCAqbW9kZXNldDsKKworCWRybV9jbGllbnRfZGlzcGxheV9mb3JfZWFjaF9tb2Rl c2V0KG1vZGVzZXQsIGRpc3BsYXkpIHsKKwkJc3RydWN0IGRybV9jcnRjICpjcnRjID0gbW9kZXNl dC0+Y3J0YzsKKwkJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBOVUxMOworCisJCWRybV9t b2Rlc2V0X2xvY2soJmNydGMtPnByaW1hcnktPm11dGV4LCBOVUxMKTsKKwkJaWYgKGNydGMtPnBy aW1hcnktPnN0YXRlICYmIGNydGMtPnByaW1hcnktPnN0YXRlLT5mYikKKwkJCWZiID0gY3J0Yy0+ cHJpbWFyeS0+c3RhdGUtPmZiOworCQllbHNlIGlmICghY3J0Yy0+cHJpbWFyeS0+c3RhdGUgJiYg Y3J0Yy0+cHJpbWFyeS0+ZmIpCisJCQlmYiA9IGNydGMtPnByaW1hcnktPmZiOworCQlkcm1fbW9k ZXNldF91bmxvY2soJmNydGMtPnByaW1hcnktPm11dGV4KTsKKworCQlpZiAoZmIpCisJCQlyZXR1 cm4gZmI7CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9jbGllbnRf ZGlzcGxheV9jdXJyZW50X2ZiKTsKKwogc3RhdGljIHZvaWQgZHJtX2NsaWVudF9kaXNwbGF5X2Rw bXNfbGVnYWN5KHN0cnVjdCBkcm1fY2xpZW50X2Rpc3BsYXkgKmRpc3BsYXksIGludCBkcG1zX21v ZGUpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRpc3BsYXktPmRldjsKQEAgLTg2OSwz ICsxMjIxLDIyNCBAQCBkcm1fY2xpZW50X2ZpbmRfZGlzcGxheShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB1bnNpZ25lZCBpbnQgd2lkdGgsIHVuc2lnbmVkIGludAogCXJldHVybiBkaXNwbGF5Owog fQogRVhQT1JUX1NZTUJPTChkcm1fY2xpZW50X2ZpbmRfZGlzcGxheSk7CisKK3N0YXRpYyB2b2lk IGRybV9jbGllbnRfYnVmZmVyX2RlbGV0ZShzdHJ1Y3QgZHJtX2NsaWVudF9idWZmZXIgKmJ1ZmZl cikKK3sKKwlpZiAoIWJ1ZmZlcikKKwkJcmV0dXJuOworCisJaWYgKGJ1ZmZlci0+dmFkZHIpCisJ CWRtYV9idWZfdnVubWFwKGJ1ZmZlci0+ZG1hX2J1ZiwgYnVmZmVyLT52YWRkcik7CisKKwlpZiAo YnVmZmVyLT5kbWFfYnVmKQorCQlkbWFfYnVmX3B1dChidWZmZXItPmRtYV9idWYpOworCisJZHJt X21vZGVfZGVzdHJveV9kdW1iKGJ1ZmZlci0+Y2xpZW50LT5kZXYsIGJ1ZmZlci0+aGFuZGxlLCBi dWZmZXItPmNsaWVudC0+ZmlsZSk7CisJa2ZyZWUoYnVmZmVyKTsKK30KKworLyogRm9yIHRlc3Rp bmcgX19jbG9zZV9mZCgpICovCisjaW5jbHVkZSA8bGludXgvZmR0YWJsZS5oPgorCitzdGF0aWMg c3RydWN0IGRybV9jbGllbnRfYnVmZmVyICoKK2RybV9jbGllbnRfYnVmZmVyX2NyZWF0ZShzdHJ1 Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgdTMyIHdpZHRoLCB1MzIgaGVpZ2h0LCB1MzIgZm9y bWF0KQoreworCXN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfZHVtYiBkdW1iX2FyZ3MgPSB7IH07CisJ c3RydWN0IGRybV9wcmltZV9oYW5kbGUgcHJpbWVfYXJncyA9IHsgfTsKKwlzdHJ1Y3QgZHJtX2Ns aWVudF9idWZmZXIgKmJ1ZmZlcjsKKwlzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZjsKKwl2b2lkICp2 YWRkcjsKKwlpbnQgcmV0OworCisJYnVmZmVyID0ga3phbGxvYyhzaXplb2YoKmJ1ZmZlciksIEdG UF9LRVJORUwpOworCWlmICghYnVmZmVyKQorCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKwor CWJ1ZmZlci0+Y2xpZW50ID0gY2xpZW50OworCWJ1ZmZlci0+d2lkdGggPSB3aWR0aDsKKwlidWZm ZXItPmhlaWdodCA9IGhlaWdodDsKKwlidWZmZXItPmZvcm1hdCA9IGZvcm1hdDsKKworCWR1bWJf YXJncy53aWR0aCA9IGJ1ZmZlci0+d2lkdGg7CisJZHVtYl9hcmdzLmhlaWdodCA9IGJ1ZmZlci0+ aGVpZ2h0OworCWR1bWJfYXJncy5icHAgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmb3JtYXQsIDAp ICogODsKKwlyZXQgPSBkcm1fbW9kZV9jcmVhdGVfZHVtYihjbGllbnQtPmRldiwgJmR1bWJfYXJn cywgY2xpZW50LT5maWxlKTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl9mcmVlOworCisJYnVmZmVy LT5oYW5kbGUgPSBkdW1iX2FyZ3MuaGFuZGxlOworCWJ1ZmZlci0+cGl0Y2ggPSBkdW1iX2FyZ3Mu cGl0Y2g7CisJYnVmZmVyLT5zaXplID0gZHVtYl9hcmdzLnNpemU7CisKKwlwcmltZV9hcmdzLmhh bmRsZSA9IGR1bWJfYXJncy5oYW5kbGU7CisJcmV0ID0gZHJtX3ByaW1lX2hhbmRsZV90b19mZChj bGllbnQtPmRldiwgJnByaW1lX2FyZ3MsIGNsaWVudC0+ZmlsZSk7CisJaWYgKHJldCkKKwkJZ290 byBlcnJfZGVsZXRlOworCisJZG1hX2J1ZiA9IGRtYV9idWZfZ2V0KHByaW1lX2FyZ3MuZmQpOwor CWlmIChJU19FUlIoZG1hX2J1ZikpIHsKKwkJcmV0ID0gUFRSX0VSUihkbWFfYnVmKTsKKwkJZ290 byBlcnJfZGVsZXRlOworCX0KKworCS8qCisJICogSWYgY2FsbGVkIGZyb20gYSB3b3JrZXIgdGhl IGRtYWJ1ZiBmZCBpc24ndCBjbG9zZWQgYW5kIHRoZSByZWYKKwkgKiBkb2Vzbid0IGRyb3AgdG8g emVybyBvbiBmcmVlLgorCSAqIElmIEkgdXNlIF9fY2xvc2VfZmQoKSBpdCdzIGFsbCBmaW5lLCBi dXQgdGhhdCBmdW5jdGlvbiBpcyBub3QgZXhwb3J0ZWQuCisJICoKKwkgKiBIb3cgZG8gSSBnZXQg cmlkIG9mIHRoaXMgZmQgd2hlbiBpbiBhIHdvcmtlci9rZXJuZWwgdGhyZWFkPworCSAqIFRoZSBm ZCBpc24ndCB1c2VkIGJleW9uZCB0aGlzIGZ1bmN0aW9uLgorCSAqLworLy8JV0FSTl9PTihfX2Ns b3NlX2ZkKGN1cnJlbnQtPmZpbGVzLCBwcmltZV9hcmdzLmZkKSk7CisKKwlwcl9pbmZvKCIlczog UEZfS1RIUkVBRD0ldVxuIiwgX19mdW5jX18sICEhKGN1cnJlbnQtPmZsYWdzICYgUEZfS1RIUkVB RCkpOworCisJYnVmZmVyLT5kbWFfYnVmID0gZG1hX2J1ZjsKKworCXZhZGRyID0gZG1hX2J1Zl92 bWFwKGRtYV9idWYpOworCWlmICghdmFkZHIpIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBl cnJfZGVsZXRlOworCX0KKworCWJ1ZmZlci0+dmFkZHIgPSB2YWRkcjsKKworCXJldHVybiBidWZm ZXI7CisKK2Vycl9kZWxldGU6CisJZHJtX2NsaWVudF9idWZmZXJfZGVsZXRlKGJ1ZmZlcik7Citl cnJfZnJlZToKKwlrZnJlZShidWZmZXIpOworCisJcmV0dXJuIEVSUl9QVFIocmV0KTsKK30KKwor c3RhdGljIGludCBkcm1fY2xpZW50X2J1ZmZlcl9ybWZiKHN0cnVjdCBkcm1fY2xpZW50X2J1ZmZl ciAqYnVmZmVyKQoreworCWludCByZXQ7CisKKwlpZiAoIWJ1ZmZlciB8fCAhYnVmZmVyLT5mYikK KwkJcmV0dXJuIDA7CisKKwlyZXQgPSBkcm1fbW9kZV9ybWZiKGJ1ZmZlci0+Y2xpZW50LT5kZXYs IGJ1ZmZlci0+ZmItPmJhc2UuaWQsIGJ1ZmZlci0+Y2xpZW50LT5maWxlKTsKKwlpZiAocmV0KQor CQlEUk1fREVWX0VSUk9SKGJ1ZmZlci0+Y2xpZW50LT5kZXYtPmRldiwKKwkJCSAgICAgICJFcnJv ciByZW1vdmluZyBGQjoldSAoJWQpXG4iLCBidWZmZXItPmZiLT5iYXNlLmlkLCByZXQpOworCisJ YnVmZmVyLT5mYiA9IE5VTEw7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBkcm1fY2xp ZW50X2J1ZmZlcl9hZGRmYihzdHJ1Y3QgZHJtX2NsaWVudF9idWZmZXIgKmJ1ZmZlciwKKwkJCQkg ICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKK3sKKwlzdHJ1Y3QgZHJtX2NsaWVudF9k ZXYgKmNsaWVudCA9IGJ1ZmZlci0+Y2xpZW50OworCXN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyIGZi X3JlcSA9IHsgfTsKKwlpbnQgcmV0OworCisJaWYgKG1vZGUtPmhkaXNwbGF5ID4gYnVmZmVyLT53 aWR0aCB8fCBtb2RlLT52ZGlzcGxheSA+IGJ1ZmZlci0+aGVpZ2h0KQorCQlyZXR1cm4gLUVJTlZB TDsKKworCWZiX3JlcS53aWR0aCA9IG1vZGUtPmhkaXNwbGF5OworCWZiX3JlcS5oZWlnaHQgPSBt b2RlLT52ZGlzcGxheTsKKwlmYl9yZXEucGl4ZWxfZm9ybWF0ID0gYnVmZmVyLT5mb3JtYXQ7CisJ ZmJfcmVxLmhhbmRsZXNbMF0gPSBidWZmZXItPmhhbmRsZTsKKwlmYl9yZXEucGl0Y2hlc1swXSA9 IGJ1ZmZlci0+cGl0Y2g7CisKKwlyZXQgPSBkcm1fbW9kZV9hZGRmYjIoY2xpZW50LT5kZXYsICZm Yl9yZXEsIGNsaWVudC0+ZmlsZSwgY2xpZW50LT5mdW5jcy0+bmFtZSk7CisJaWYgKHJldCkKKwkJ cmV0dXJuIHJldDsKKworCWJ1ZmZlci0+ZmIgPSBkcm1fZnJhbWVidWZmZXJfbG9va3VwKGNsaWVu dC0+ZGV2LCBidWZmZXItPmNsaWVudC0+ZmlsZSwgZmJfcmVxLmZiX2lkKTsKKwlpZiAoV0FSTl9P TighYnVmZmVyLT5mYikpCisJCXJldHVybiAtRU5PRU5UOworCisJLyogZHJvcCB0aGUgcmVmZXJl bmNlIHdlIHBpY2tlZCB1cCBpbiBmcmFtZWJ1ZmZlciBsb29rdXAgKi8KKwlkcm1fZnJhbWVidWZm ZXJfcHV0KGJ1ZmZlci0+ZmIpOworCisJcmV0dXJuIDA7Cit9CisKKy8qKgorICogZHJtX2NsaWVu dF9mcmFtZWJ1ZmZlcl9jcmVhdGUgLSBDcmVhdGUgYSBjbGllbnQgZnJhbWVidWZmZXIKKyAqIEBj bGllbnQ6IERSTSBjbGllbnQKKyAqIEBtb2RlOiBEaXNwbGF5IG1vZGUgdG8gY3JlYXRlIGEgYnVm ZmVyIGZvcgorICogQGZvcm1hdDogQnVmZmVyIGZvcm1hdAorICoKKyAqIFRoaXMgZnVuY3Rpb24g Y3JlYXRlcyBhICZkcm1fY2xpZW50X2J1ZmZlciB3aGljaCBjb25zaXN0cyBvZiBhCisgKiAmZHJt X2ZyYW1lYnVmZmVyIGJhY2tlZCBieSBhIGR1bWIgYnVmZmVyLiBUaGUgZHVtYiBidWZmZXIgaXMg JmRtYV9idWYKKyAqIGV4cG9ydGVkIHRvIGFxdWlyZSBhIHZpcnR1YWwgYWRkcmVzcyB3aGljaCBp cyBzdG9yZWQgaW4KKyAqICZkcm1fY2xpZW50X2J1ZmZlci0+dmFkZHIuCisgKiBDYWxsIGRybV9j bGllbnRfZnJhbWVidWZmZXJfZGVsZXRlKCkgdG8gZnJlZSB0aGUgYnVmZmVyLgorICoKKyAqIFJl dHVybnM6CisgKiBQb2ludGVyIHRvIGEgY2xpZW50IGJ1ZmZlciBvciBhbiBlcnJvciBwb2ludGVy IG9uIGZhaWx1cmUuCisgKi8KK3N0cnVjdCBkcm1fY2xpZW50X2J1ZmZlciAqCitkcm1fY2xpZW50 X2ZyYW1lYnVmZmVyX2NyZWF0ZShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwKKwkJCSAg ICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLCB1MzIgZm9ybWF0KQoreworCXN0cnVj dCBkcm1fY2xpZW50X2J1ZmZlciAqYnVmZmVyOworCWludCByZXQ7CisKKwlidWZmZXIgPSBkcm1f Y2xpZW50X2J1ZmZlcl9jcmVhdGUoY2xpZW50LCBtb2RlLT5oZGlzcGxheSwKKwkJCQkJICBtb2Rl LT52ZGlzcGxheSwgZm9ybWF0KTsKKwlpZiAoSVNfRVJSKGJ1ZmZlcikpCisJCXJldHVybiBidWZm ZXI7CisKKwlyZXQgPSBkcm1fY2xpZW50X2J1ZmZlcl9hZGRmYihidWZmZXIsIG1vZGUpOworCWlm IChyZXQpIHsKKwkJZHJtX2NsaWVudF9idWZmZXJfZGVsZXRlKGJ1ZmZlcik7CisJCXJldHVybiBF UlJfUFRSKHJldCk7CisJfQorCisJcmV0dXJuIGJ1ZmZlcjsKK30KK0VYUE9SVF9TWU1CT0woZHJt X2NsaWVudF9mcmFtZWJ1ZmZlcl9jcmVhdGUpOworCit2b2lkIGRybV9jbGllbnRfZnJhbWVidWZm ZXJfZGVsZXRlKHN0cnVjdCBkcm1fY2xpZW50X2J1ZmZlciAqYnVmZmVyKQoreworCWRybV9jbGll bnRfYnVmZmVyX3JtZmIoYnVmZmVyKTsKKwlkcm1fY2xpZW50X2J1ZmZlcl9kZWxldGUoYnVmZmVy KTsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2NsaWVudF9mcmFtZWJ1ZmZlcl9kZWxldGUpOworCitp bnQgZHJtX2NsaWVudF9mcmFtZWJ1ZmZlcl9mbHVzaChzdHJ1Y3QgZHJtX2NsaWVudF9idWZmZXIg KmJ1ZmZlciwKKwkJCQkgc3RydWN0IGRybV9jbGlwX3JlY3QgKnJlY3QpCit7CisJaWYgKCFidWZm ZXItPmZiIHx8ICFidWZmZXItPmZiLT5mdW5jcy0+ZGlydHkpCisJCXJldHVybiAwOworCisJcmV0 dXJuIGJ1ZmZlci0+ZmItPmZ1bmNzLT5kaXJ0eShidWZmZXItPmZiLCBidWZmZXItPmNsaWVudC0+ ZmlsZSwKKwkJCQkJMCwgMCwgcmVjdCwgcmVjdCA/IDEgOiAwKTsKK30KK0VYUE9SVF9TWU1CT0wo ZHJtX2NsaWVudF9mcmFtZWJ1ZmZlcl9mbHVzaCk7CisKKyNpZmRlZiBDT05GSUdfREVCVUdfRlMK K3N0YXRpYyBpbnQgZHJtX2NsaWVudF9kZWJ1Z2ZzX2ludGVybmFsX2NsaWVudHMoc3RydWN0IHNl cV9maWxlICptLCB2b2lkICpkYXRhKQoreworCXN0cnVjdCBkcm1faW5mb19ub2RlICpub2RlID0g bS0+cHJpdmF0ZTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gbm9kZS0+bWlub3ItPmRldjsK KwlzdHJ1Y3QgZHJtX3ByaW50ZXIgcCA9IGRybV9zZXFfZmlsZV9wcmludGVyKG0pOworCXN0cnVj dCBkcm1fY2xpZW50X2RldiAqY2xpZW50OworCisJbXV0ZXhfbG9jaygmZGV2LT5jbGllbnRsaXN0 X211dGV4KTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNsaWVudCwgJmRldi0+Y2xpZW50bGlzdCwg bGlzdCkKKwkJZHJtX3ByaW50ZigmcCwgIiVzXG4iLCBjbGllbnQtPmZ1bmNzLT5uYW1lKTsKKwlt dXRleF91bmxvY2soJmRldi0+Y2xpZW50bGlzdF9tdXRleCk7CisKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faW5mb19saXN0IGRybV9jbGllbnRfZGVidWdmc19saXN0 W10gPSB7CisJeyAiaW50ZXJuYWxfY2xpZW50cyIsIGRybV9jbGllbnRfZGVidWdmc19pbnRlcm5h bF9jbGllbnRzLCAwIH0sCit9OworCitpbnQgZHJtX2NsaWVudF9kZWJ1Z2ZzX2luaXQoc3RydWN0 IGRybV9taW5vciAqbWlub3IpCit7CisJcmV0dXJuIGRybV9kZWJ1Z2ZzX2NyZWF0ZV9maWxlcyhk cm1fY2xpZW50X2RlYnVnZnNfbGlzdCwKKwkJCQkJQVJSQVlfU0laRShkcm1fY2xpZW50X2RlYnVn ZnNfbGlzdCksCisJCQkJCW1pbm9yLT5kZWJ1Z2ZzX3Jvb3QsIG1pbm9yKTsKK30KKyNlbmRpZgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9k cm0vZHJtX2RlYnVnZnMuYwppbmRleCBiMjQ4MjgxOGZlZTguLjUwYTIwYmZjMDdlYSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2RybV9kZWJ1Z2ZzLmMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+ CiAjaW5jbHVkZSA8bGludXgvZXhwb3J0Lmg+CiAKKyNpbmNsdWRlIDxkcm0vZHJtX2NsaWVudC5o PgogI2luY2x1ZGUgPGRybS9kcm1fZGVidWdmcy5oPgogI2luY2x1ZGUgPGRybS9kcm1fZWRpZC5o PgogI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+CkBAIC0xNjQsNiArMTY1LDEyIEBAIGludCBk cm1fZGVidWdmc19pbml0KHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yLCBpbnQgbWlub3JfaWQsCiAJ CQlEUk1fRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZnJhbWVidWZmZXIgZGVidWdmcyBmaWxlXG4i KTsKIAkJCXJldHVybiByZXQ7CiAJCX0KKworCQlyZXQgPSBkcm1fY2xpZW50X2RlYnVnZnNfaW5p dChtaW5vcik7CisJCWlmIChyZXQpIHsKKwkJCURSTV9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBj bGllbnQgZGVidWdmcyBmaWxlXG4iKTsKKwkJCXJldHVybiByZXQ7CisJCX0KIAl9CiAKIAlpZiAo ZGV2LT5kcml2ZXItPmRlYnVnZnNfaW5pdCkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2RybV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHJ2LmMKaW5kZXggMzJhODNiNDFhYjYx Li42ZjIxYmFmYjI5YmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHJ2LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYwpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg PGxpbnV4L3NsYWIuaD4KICNpbmNsdWRlIDxsaW51eC9zcmN1Lmg+CiAKKyNpbmNsdWRlIDxkcm0v ZHJtX2NsaWVudC5oPgogI2luY2x1ZGUgPGRybS9kcm1fZHJ2Lmg+CiAjaW5jbHVkZSA8ZHJtL2Ry bVAuaD4KIApAQCAtNTA3LDYgKzUwOCw4IEBAIGludCBkcm1fZGV2X2luaXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKIAlkZXYtPmRyaXZlciA9IGRyaXZlcjsKIAogCUlOSVRfTElTVF9IRUFEKCZk ZXYtPmZpbGVsaXN0KTsKKwlJTklUX0xJU1RfSEVBRCgmZGV2LT5maWxlbGlzdF9pbnRlcm5hbCk7 CisJSU5JVF9MSVNUX0hFQUQoJmRldi0+Y2xpZW50bGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJmRl di0+Y3R4bGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJmRldi0+dm1hbGlzdCk7CiAJSU5JVF9MSVNU X0hFQUQoJmRldi0+bWFwbGlzdCk7CkBAIC01MTYsNiArNTE5LDcgQEAgaW50IGRybV9kZXZfaW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCXNwaW5fbG9ja19pbml0KCZkZXYtPmV2ZW50X2xv Y2spOwogCW11dGV4X2luaXQoJmRldi0+c3RydWN0X211dGV4KTsKIAltdXRleF9pbml0KCZkZXYt PmZpbGVsaXN0X211dGV4KTsKKwltdXRleF9pbml0KCZkZXYtPmNsaWVudGxpc3RfbXV0ZXgpOwog CW11dGV4X2luaXQoJmRldi0+Y3R4bGlzdF9tdXRleCk7CiAJbXV0ZXhfaW5pdCgmZGV2LT5tYXN0 ZXJfbXV0ZXgpOwogCkBAIC01NzIsNiArNTc2LDcgQEAgaW50IGRybV9kZXZfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAogZXJyX2ZyZWU6CiAJbXV0ZXhfZGVzdHJveSgmZGV2LT5tYXN0ZXJf bXV0ZXgpOwogCW11dGV4X2Rlc3Ryb3koJmRldi0+Y3R4bGlzdF9tdXRleCk7CisJbXV0ZXhfZGVz dHJveSgmZGV2LT5jbGllbnRsaXN0X211dGV4KTsKIAltdXRleF9kZXN0cm95KCZkZXYtPmZpbGVs aXN0X211dGV4KTsKIAltdXRleF9kZXN0cm95KCZkZXYtPnN0cnVjdF9tdXRleCk7CiAJcmV0dXJu IHJldDsKQEAgLTYwNyw2ICs2MTIsNyBAQCB2b2lkIGRybV9kZXZfZmluaShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQogCiAJbXV0ZXhfZGVzdHJveSgmZGV2LT5tYXN0ZXJfbXV0ZXgpOwogCW11dGV4 X2Rlc3Ryb3koJmRldi0+Y3R4bGlzdF9tdXRleCk7CisJbXV0ZXhfZGVzdHJveSgmZGV2LT5jbGll bnRsaXN0X211dGV4KTsKIAltdXRleF9kZXN0cm95KCZkZXYtPmZpbGVsaXN0X211dGV4KTsKIAlt dXRleF9kZXN0cm95KCZkZXYtPnN0cnVjdF9tdXRleCk7CiAJa2ZyZWUoZGV2LT51bmlxdWUpOwpA QCAtODYyLDYgKzg2OCw4IEBAIHZvaWQgZHJtX2Rldl91bnJlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9tYXBfbGlzdCAqcl9saXN0LCAqbGlzdF90ZW1wOwog CisJZHJtX2NsaWVudF9kZXZfdW5yZWdpc3RlcihkZXYpOworCiAJaWYgKGRybV9jb3JlX2NoZWNr X2ZlYXR1cmUoZGV2LCBEUklWRVJfTEVHQUNZKSkKIAkJZHJtX2xhc3RjbG9zZShkZXYpOwogCkBA IC05NjgsNiArOTc2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZHJt X3N0dWJfZm9wcyA9IHsKIAogc3RhdGljIHZvaWQgZHJtX2NvcmVfZXhpdCh2b2lkKQogeworCWRy bV9jbGllbnRfZXhpdCgpOwogCXVucmVnaXN0ZXJfY2hyZGV2KERSTV9NQUpPUiwgImRybSIpOwog CWRlYnVnZnNfcmVtb3ZlKGRybV9kZWJ1Z2ZzX3Jvb3QpOwogCWRybV9zeXNmc19kZXN0cm95KCk7 CkBAIC0xMDAxLDYgKzEwMTAsOCBAQCBzdGF0aWMgaW50IF9faW5pdCBkcm1fY29yZV9pbml0KHZv aWQpCiAJaWYgKHJldCA8IDApCiAJCWdvdG8gZXJyb3I7CiAKKwlkcm1fY2xpZW50X2luaXQoKTsK KwogCWRybV9jb3JlX2luaXRfY29tcGxldGUgPSB0cnVlOwogCiAJRFJNX0RFQlVHKCJJbml0aWFs aXplZFxuIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYyBiL2RyaXZl cnMvZ3B1L2RybS9kcm1fZmlsZS5jCmluZGV4IDU1NTA1Mzc4ZGY0Ny4uYmNjNjg4ZTU4Nzc2IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vZHJtX2ZpbGUuYwpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4K ICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KIAorI2luY2x1ZGUgPGRybS9kcm1fY2xpZW50Lmg+ CiAjaW5jbHVkZSA8ZHJtL2RybV9maWxlLmg+CiAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KIApAQCAt NDQzLDYgKzQ0NCw4IEBAIHZvaWQgZHJtX2xhc3RjbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAqIGRl dikKIAogCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX0xFR0FDWSkpCiAJ CWRybV9sZWdhY3lfZGV2X3JlaW5pdChkZXYpOworCisJZHJtX2NsaWVudF9kZXZfbGFzdGNsb3Nl KGRldik7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9wcm9iZV9o ZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJvYmVfaGVscGVyLmMKaW5kZXggNTI3NzQz Mzk0MTUwLi4yNmJlNTdlMjhhOWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJv YmVfaGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9wcm9iZV9oZWxwZXIuYwpAQCAt MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPGxpbnV4L21vZHVsZXBhcmFtLmg+CiAKICNpbmNsdWRl IDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9kcm1fY2xpZW50Lmg+CiAjaW5jbHVkZSA8ZHJt L2RybV9jcnRjLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9mb3VyY2MuaD4KICNpbmNsdWRlIDxkcm0v ZHJtX2NydGNfaGVscGVyLmg+CkBAIC01NjMsNiArNTY0LDggQEAgdm9pZCBkcm1fa21zX2hlbHBl cl9ob3RwbHVnX2V2ZW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJZHJtX3N5c2ZzX2hvdHBs dWdfZXZlbnQoZGV2KTsKIAlpZiAoZGV2LT5tb2RlX2NvbmZpZy5mdW5jcy0+b3V0cHV0X3BvbGxf Y2hhbmdlZCkKIAkJZGV2LT5tb2RlX2NvbmZpZy5mdW5jcy0+b3V0cHV0X3BvbGxfY2hhbmdlZChk ZXYpOworCisJZHJtX2NsaWVudF9kZXZfaG90cGx1ZyhkZXYpOwogfQogRVhQT1JUX1NZTUJPTChk cm1fa21zX2hlbHBlcl9ob3RwbHVnX2V2ZW50KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2RybV9zeXNmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeXNmcy5jCmluZGV4IDFjNWI1 Y2UxZmQ3Zi4uMWZjMDY2YzQxODYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5 c2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeXNmcy5jCkBAIC0xOCw2ICsxOCw3IEBA CiAjaW5jbHVkZSA8bGludXgvZXJyLmg+CiAjaW5jbHVkZSA8bGludXgvZXhwb3J0Lmg+CiAKKyNp bmNsdWRlIDxkcm0vZHJtX2NsaWVudC5oPgogI2luY2x1ZGUgPGRybS9kcm1fc3lzZnMuaD4KICNp bmNsdWRlIDxkcm0vZHJtUC5oPgogI2luY2x1ZGUgImRybV9pbnRlcm5hbC5oIgpAQCAtMzIwLDYg KzMyMSwyNCBAQCB2b2lkIGRybV9zeXNmc19ob3RwbHVnX2V2ZW50KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCiB9CiBFWFBPUlRfU1lNQk9MKGRybV9zeXNmc19ob3RwbHVnX2V2ZW50KTsKIAorc3Rh dGljIHNzaXplX3QgcmVtb3ZlX2ludGVybmFsX2NsaWVudHNfc3RvcmUoc3RydWN0IGRldmljZSAq ZGV2LAorCQkJCQkgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQkJCQkgICAg IGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbikKK3sKKwlzdHJ1Y3QgZHJtX21pbm9yICptaW5v ciA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCisJZHJtX2NsaWVudF9kZXZfdW5yZWdpc3Rlciht aW5vci0+ZGV2KTsKKworCXJldHVybiBsZW47Cit9CitzdGF0aWMgREVWSUNFX0FUVFJfV08ocmVt b3ZlX2ludGVybmFsX2NsaWVudHMpOworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqbWlub3Jf YXR0cnNbXSA9IHsKKwkmZGV2X2F0dHJfcmVtb3ZlX2ludGVybmFsX2NsaWVudHMuYXR0ciwKKwlO VUxMLAorfTsKK0FUVFJJQlVURV9HUk9VUFMobWlub3IpOworCiBzdGF0aWMgdm9pZCBkcm1fc3lz ZnNfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiB7CiAJa2ZyZWUoZGV2KTsKQEAgLTM0Nyw2 ICszNjYsNyBAQCBzdHJ1Y3QgZGV2aWNlICpkcm1fc3lzZnNfbWlub3JfYWxsb2Moc3RydWN0IGRy bV9taW5vciAqbWlub3IpCiAJa2Rldi0+Y2xhc3MgPSBkcm1fY2xhc3M7CiAJa2Rldi0+dHlwZSA9 ICZkcm1fc3lzZnNfZGV2aWNlX21pbm9yOwogCWtkZXYtPnBhcmVudCA9IG1pbm9yLT5kZXYtPmRl djsKKwlrZGV2LT5ncm91cHMgPSBtaW5vcl9ncm91cHM7CiAJa2Rldi0+cmVsZWFzZSA9IGRybV9z eXNmc19yZWxlYXNlOwogCWRldl9zZXRfZHJ2ZGF0YShrZGV2LCBtaW5vcik7CiAKZGlmZiAtLWdp dCBhL2luY2x1ZGUvZHJtL2RybV9jbGllbnQuaCBiL2luY2x1ZGUvZHJtL2RybV9jbGllbnQuaApp bmRleCA1MjRmNzkzZDZlN2IuLjZmZDJmY2FhZTgyNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0v ZHJtX2NsaWVudC5oCisrKyBiL2luY2x1ZGUvZHJtL2RybV9jbGllbnQuaApAQCAtNSwxMyArNSw5 MSBAQAogCiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KIAorc3RydWN0IGRybV9jbGlwX3JlY3Q7 CiBzdHJ1Y3QgZHJtX2Nvbm5lY3RvcjsKIHN0cnVjdCBkcm1fY3J0YzsKIHN0cnVjdCBkcm1fZGV2 aWNlOwogc3RydWN0IGRybV9kaXNwbGF5X21vZGU7CitzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyOwor c3RydWN0IGRybV9taW5vcjsKIHN0cnVjdCBkcm1fbW9kZV9zZXQ7CiBzdHJ1Y3QgZHJtX3BsYW5l OwogCitzdHJ1Y3QgZHJtX2NsaWVudF9kZXY7CisKKy8qKgorICogc3RydWN0IGRybV9jbGllbnRf ZnVuY3MgLSBEUk0gY2xpZW50IGNhbGxiYWNrcworICovCitzdHJ1Y3QgZHJtX2NsaWVudF9mdW5j cyB7CisJLyoqCisJICogQG5hbWU6CisJICoKKwkgKiBOYW1lIG9mIHRoZSBjbGllbnQuIE1hbmRh dG9yeS4KKwkgKi8KKwljb25zdCBjaGFyICpuYW1lOworCisJLyoqCisJICogQHJlbW92ZToKKwkg KgorCSAqIENhbGxlZCB3aGVuIGEgJmRybV9kZXZpY2UgaXMgdW5yZWdpc3RlcmVkIG9yIHRoZSBj bGllbnQgaXMKKwkgKiB1bnJlZ2lzdGVyZWQuIElmIHplcm8gaXMgcmV0dXJuZWQgZHJtX2NsaWVu dF9mcmVlKCkgaXMgY2FsbGVkCisJICogYXV0b21hdGljYWxseS4gSWYgdGhlIGNsaWVudCBjYW4n dCBkcm9wIGl0J3MgcmVzb3VyY2VzIGl0IHNob3VsZAorCSAqIHJldHVybiBub24temVybyBhbmQg Y2FsbCBkcm1fY2xpZW50X2ZyZWUoKSBsYXRlci4KKwkgKgorCSAqIFRoaXMgY2FsbGJhY2sgaXMg b3B0aW9uYWwuCisJICovCisJaW50ICgqcmVtb3ZlKShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNs aWVudCk7CisKKwkvKioKKwkgKiBAbGFzdGNsb3NlOgorCSAqCisJICogQ2FsbGVkIG9uIGRybV9s YXN0Y2xvc2UoKS4gVGhlIGZpcnN0IGNsaWVudCBpbnN0YW5jZSBpbiB0aGUgbGlzdAorCSAqIHRo YXQgcmV0dXJucyB6ZXJvIGdldHMgdGhlIHByaXZpbGVnZSB0byByZXN0b3JlIGFuZCBubyBtb3Jl IGNsaWVudHMKKwkgKiBhcmUgY2FsbGVkLgorCSAqCisJICogVGhpcyBjYWxsYmFjayBpcyBvcHRp b25hbC4KKwkgKi8KKwlpbnQgKCpsYXN0Y2xvc2UpKHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xp ZW50KTsKKworCS8qKgorCSAqIEBob3RwbHVnOgorCSAqCisJICogQ2FsbGVkIG9uIGRybV9rbXNf aGVscGVyX2hvdHBsdWdfZXZlbnQoKS4KKwkgKgorCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9u YWwuCisJICovCisJaW50ICgqaG90cGx1Zykoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQp OworfTsKKworLyoqCisgKiBzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgLSBEUk0gY2xpZW50IGluc3Rh bmNlCisgKi8KK3N0cnVjdCBkcm1fY2xpZW50X2RldiB7CisJc3RydWN0IGxpc3RfaGVhZCBsaXN0 OworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7CisJY29uc3Qgc3RydWN0IGRybV9jbGllbnRfZnVu Y3MgKmZ1bmNzOworCXN0cnVjdCBkcm1fZmlsZSAqZmlsZTsKKwl1bnNpZ25lZCBpbnQgZmlsZV9y ZWZfY291bnQ7CisJdm9pZCAqcHJpdmF0ZTsKK307CisKK3N0cnVjdCBkcm1fY2xpZW50X2RldiAq Citkcm1fY2xpZW50X25ldyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZHJt X2NsaWVudF9mdW5jcyAqZnVuY3MpOworc3RydWN0IGRybV9jbGllbnRfZGV2ICoKK2RybV9jbGll bnRfbmV3X2Zyb21faWQodW5zaWduZWQgaW50IGRldl9pZCwgY29uc3Qgc3RydWN0IGRybV9jbGll bnRfZnVuY3MgKmZ1bmNzKTsKK3ZvaWQgZHJtX2NsaWVudF9yZW1vdmUoc3RydWN0IGRybV9jbGll bnRfZGV2ICpjbGllbnQpOworaW50IGRybV9jbGllbnRfcmVtb3ZlX2RlZmVyKHN0cnVjdCBkcm1f Y2xpZW50X2RldiAqY2xpZW50KTsKK3ZvaWQgZHJtX2NsaWVudF9mcmVlKHN0cnVjdCBkcm1fY2xp ZW50X2RldiAqY2xpZW50KTsKKwordm9pZCBkcm1fY2xpZW50X2Rldl91bnJlZ2lzdGVyKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpOwordm9pZCBkcm1fY2xpZW50X2Rldl9ob3RwbHVnKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpOwordm9pZCBkcm1fY2xpZW50X2Rldl9sYXN0Y2xvc2Uoc3RydWN0IGRy bV9kZXZpY2UgKmRldik7CisKK3ZvaWQgZHJtX2NsaWVudF9pbml0KHZvaWQpOwordm9pZCBkcm1f Y2xpZW50X2V4aXQodm9pZCk7CisKK2ludCBkcm1fY2xpZW50X2RlYnVnZnNfaW5pdChzdHJ1Y3Qg ZHJtX21pbm9yICptaW5vcik7CisKIC8qKgogICogc3RydWN0IGRybV9jbGllbnRfZGlzcGxheSAt IERSTSBjbGllbnQgZGlzcGxheQogICovCkBAIC03Niw0ICsxNTQsMjkgQEAgZHJtX2NsaWVudF9m aW5kX2Rpc3BsYXkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHdpZHRoLCB1 bnNpZ25lZCBpbnQKICNkZWZpbmUgZHJtX2NsaWVudF9kaXNwbGF5X2Zvcl9lYWNoX21vZGUobW9k ZSwgZGlzcGxheSkgXAogCWxpc3RfZm9yX2VhY2hfZW50cnkobW9kZSwgJmRpc3BsYXktPm1vZGVz LCBoZWFkKQogCitpbnQgZHJtX2NsaWVudF9kaXNwbGF5X2NvbW1pdChzdHJ1Y3QgZHJtX2NsaWVu dF9kaXNwbGF5ICpkaXNwbGF5LAorCQkJICAgICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIs IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKTsKK3N0cnVjdCBkcm1fZnJhbWVidWZmZXIg KmRybV9jbGllbnRfZGlzcGxheV9jdXJyZW50X2ZiKHN0cnVjdCBkcm1fY2xpZW50X2Rpc3BsYXkg KmRpc3BsYXkpOworCitzdHJ1Y3QgZHJtX2NsaWVudF9idWZmZXIgeworCXN0cnVjdCBkcm1fY2xp ZW50X2RldiAqY2xpZW50OworCXUzMiB3aWR0aDsKKwl1MzIgaGVpZ2h0OworCXUzMiBmb3JtYXQ7 CisJdTMyIGhhbmRsZTsKKwl1MzIgcGl0Y2g7CisJdTY0IHNpemU7CisJc3RydWN0IGRtYV9idWYg KmRtYV9idWY7CisJdm9pZCAqdmFkZHI7CisJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7Cit9 OworCitzdHJ1Y3QgZHJtX2NsaWVudF9idWZmZXIgKgorZHJtX2NsaWVudF9mcmFtZWJ1ZmZlcl9j cmVhdGUoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsCisJCQkgICAgICBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqbW9kZSwgdTMyIGZvcm1hdCk7Cit2b2lkIGRybV9jbGllbnRfZnJhbWVi dWZmZXJfZGVsZXRlKHN0cnVjdCBkcm1fY2xpZW50X2J1ZmZlciAqYnVmZmVyKTsKKworaW50IGRy bV9jbGllbnRfZnJhbWVidWZmZXJfZmx1c2goc3RydWN0IGRybV9jbGllbnRfYnVmZmVyICpidWZm ZXIsCisJCQkJIHN0cnVjdCBkcm1fY2xpcF9yZWN0ICpyZWN0KTsKKwogI2VuZGlmCmRpZmYgLS1n aXQgYS9pbmNsdWRlL2RybS9kcm1fZGV2aWNlLmggYi9pbmNsdWRlL2RybS9kcm1fZGV2aWNlLmgK aW5kZXggM2EwZWFjMjg4NWI3Li4xN2VkYWRmOGI2OTEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJt L2RybV9kZXZpY2UuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fZGV2aWNlLmgKQEAgLTc0LDYgKzc0 LDEwIEBAIHN0cnVjdCBkcm1fZGV2aWNlIHsKIAogCXN0cnVjdCBtdXRleCBmaWxlbGlzdF9tdXRl eDsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGZpbGVsaXN0OworCXN0cnVjdCBsaXN0X2hlYWQgZmlsZWxp c3RfaW50ZXJuYWw7CisKKwlzdHJ1Y3QgbXV0ZXggY2xpZW50bGlzdF9tdXRleDsKKwlzdHJ1Y3Qg bGlzdF9oZWFkIGNsaWVudGxpc3Q7CiAKIAkvKiogXG5hbWUgTWVtb3J5IG1hbmFnZW1lbnQgKi8K IAkvKkB7ICovCi0tIAoyLjE1LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbAo=