From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 35/39] drm/i915: Keep contexts pinned until after the next kernel context switch Date: Wed, 13 Mar 2019 14:43:57 +0000 Message-ID: <20190313144401.17735-35-chris@chris-wilson.co.uk> References: <20190313144401.17735-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 56B7C6E0B5 for ; Wed, 13 Mar 2019 14:45:04 +0000 (UTC) In-Reply-To: <20190313144401.17735-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org V2UgbmVlZCB0byBrZWVwIHRoZSBjb250ZXh0IGltYWdlIHBpbm5lZCBpbiBtZW1vcnkgdW50aWwg YWZ0ZXIgdGhlIEdQVQpoYXMgZmluaXNoZWQgd3JpdGluZyBpbnRvIGl0LiBTaW5jZSBpdCBjb250 aW51ZXMgdG8gd3JpdGUgYXMgd2Ugc2lnbmFsCnRoZSBmaW5hbCBicmVhZGNydW1iLCB3ZSBuZWVk IHRvIGtlZXAgaXQgcGlubmVkIHVudGlsIHRoZSByZXF1ZXN0IGFmdGVyCml0IGlzIGNvbXBsZXRl LiBDdXJyZW50bHkgd2Uga25vdyB0aGUgb3JkZXIgaW4gd2hpY2ggcmVxdWVzdHMgZXhlY3V0ZSBv bgplYWNoIGVuZ2luZSwgYW5kIHNvIHRvIHJlbW92ZSB0aGF0IHByZXN1bXB0aW9uIHdlIG5lZWQg dG8gaWRlbnRpZnkgYQpyZXF1ZXN0L2NvbnRleHQtc3dpdGNoIHdlIGtub3cgbXVzdCBvY2N1ciBh ZnRlciBvdXIgY29tcGxldGlvbi4gQW55CnJlcXVlc3QgcXVldWVkIGFmdGVyIHRoZSBzaWduYWwg bXVzdCBpbXBseSBhIGNvbnRleHQgc3dpdGNoLCBmb3IKc2ltcGxpY2l0eSB3ZSB1c2UgYSBmcmVz aCByZXF1ZXN0IGZyb20gdGhlIGtlcm5lbCBjb250ZXh0LgoKU2lnbmVkLW9mZi1ieTogQ2hyaXMg V2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYyAgIHwgMzUgKysrLS0tLS0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmggICB8ICAxIC0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfYWN0aXZlLmMgICAgICAgICAgICB8IDcyICsrKysrKysrKysrKysrKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmUuaCAgICAgICAgICAgIHwgIDQgKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgIDEgKwogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgICAgIHwgNDcgKysrKysrKystLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXZpY3QuYyAgICAgICAgIHwgMjUgKysrLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyAgICAgICAgICAgfCAxNSAtLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jlc2V0LmMgICAgICAgICAgICAgfCAgNSArLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfY29udGV4dC5jICAgICAgICAgIHwgODggKysrKysrKysrKysr KysrKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29udGV4dC5oICAgICAgICAgIHwg IDMgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29udGV4dF90eXBlcy5oICAgIHwgIDYg Ky0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jICAgICAgICB8IDIzICst LS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfdHlwZXMuaCAgICAgfCAxMyAr LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAgICAgICB8IDY0ICsr LS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgICAg ICAgfCA1NiArLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuaCAgICAgICB8ICAyIC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2Vu Z2luZS5jICB8IDExICstLQogLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2 aWNlLmMgIHwgIDggKy0KIDE5IGZpbGVzIGNoYW5nZWQsIDI1NCBpbnNlcnRpb25zKCspLCAyMjUg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVf Z2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0 LmMKaW5kZXggN2I3YWVhMmQxODc3Li5kOWJjMDViYTM5MDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYwpAQCAtNjUzLDE3ICs2NTMsNiBAQCBpbnQgaTkx NV9nZW1fY29udGV4dHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJ cmV0dXJuIDA7CiB9CiAKLXZvaWQgaTkxNV9nZW1fY29udGV4dHNfbG9zdChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCi17Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l OwotCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwotCi0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2 X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwotCi0JZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2 X3ByaXYsIGlkKQotCQlpbnRlbF9lbmdpbmVfbG9zdF9jb250ZXh0KGVuZ2luZSk7Ci19Ci0KIHZv aWQgaTkxNV9nZW1fY29udGV4dHNfZmluaShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkK IHsKIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKQEAgLTk1 Miw2ICs5NDEsNyBAQCBpbnQgaTkxNV9nZW1fc3dpdGNoX3RvX2tlcm5lbF9jb250ZXh0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCQkJCQkJCSBJOTE1X0ZFTkNFX0dGUCk7CiAJCX0K IAorCQlpOTE1X3JlcXVlc3RfYWRkX2JhcnJpZXJzKHJxKTsKIAkJaTkxNV9yZXF1ZXN0X2FkZChy cSk7CiAJfQogCkBAIC0xMTg5LDE1ICsxMTc5LDYgQEAgZ2VuOF9tb2RpZnlfcnBjcyhzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqY2UsIHN0cnVjdCBpbnRlbF9zc2V1IHNzZXUpCiAJCQlnb3RvIG91dF9h ZGQ7CiAJfQogCi0JLyogT3JkZXIgYWxsIGZvbGxvd2luZyByZXF1ZXN0cyB0byBiZSBhZnRlci4g Ki8KLQlyZXQgPSBpOTE1X3RpbWVsaW5lX3NldF9iYXJyaWVyKGNlLT5yaW5nLT50aW1lbGluZSwg cnEpOwotCWlmIChyZXQpCi0JCWdvdG8gb3V0X2FkZDsKLQotCXJldCA9IGdlbjhfZW1pdF9ycGNz X2NvbmZpZyhycSwgY2UsIHNzZXUpOwotCWlmIChyZXQpCi0JCWdvdG8gb3V0X2FkZDsKLQogCS8q CiAJICogR3VhcmFudGVlIGNvbnRleHQgaW1hZ2UgYW5kIHRoZSB0aW1lbGluZSByZW1haW5zIHBp bm5lZCB1bnRpbCB0aGUKIAkgKiBtb2RpZnlpbmcgcmVxdWVzdCBpcyByZXRpcmVkIGJ5IHNldHRp bmcgdGhlIGNlIGFjdGl2aXR5IHRyYWNrZXIuCkBAIC0xMjA1LDkgKzExODYsMTcgQEAgZ2VuOF9t b2RpZnlfcnBjcyhzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsIHN0cnVjdCBpbnRlbF9zc2V1IHNz ZXUpCiAJICogQnV0IHdlIG9ubHkgbmVlZCB0byB0YWtlIG9uZSBwaW4gb24gdGhlIGFjY291bnQg b2YgaXQuIE9yIGluIG90aGVyCiAJICogd29yZHMgdHJhbnNmZXIgdGhlIHBpbm5lZCBjZSBvYmpl Y3QgdG8gdHJhY2tlZCBhY3RpdmUgcmVxdWVzdC4KIAkgKi8KLQlpZiAoIWk5MTVfYWN0aXZlX3Jl cXVlc3RfaXNzZXQoJmNlLT5hY3RpdmVfdHJhY2tlcikpCi0JCV9faW50ZWxfY29udGV4dF9waW4o Y2UpOwotCV9faTkxNV9hY3RpdmVfcmVxdWVzdF9zZXQoJmNlLT5hY3RpdmVfdHJhY2tlciwgcnEp OworCUdFTV9CVUdfT04oaTkxNV9hY3RpdmVfaXNfaWRsZSgmY2UtPmFjdGl2ZSkpOworCXJldCA9 IGk5MTVfYWN0aXZlX3JlZigmY2UtPmFjdGl2ZSwgcnEtPmZlbmNlLmNvbnRleHQsIHJxKTsKKwlp ZiAocmV0KQorCQlnb3RvIG91dF9hZGQ7CisKKwkvKiBPcmRlciBhbGwgZm9sbG93aW5nIHJlcXVl c3RzIHRvIGJlIGFmdGVyLiAqLworCXJldCA9IGk5MTVfdGltZWxpbmVfc2V0X2JhcnJpZXIoY2Ut PnJpbmctPnRpbWVsaW5lLCBycSk7CisJaWYgKHJldCkKKwkJZ290byBvdXRfYWRkOworCisJcmV0 ID0gZ2VuOF9lbWl0X3JwY3NfY29uZmlnKHJxLCBjZSwgc3NldSk7CiAKIG91dF9hZGQ6CiAJaTkx NV9yZXF1ZXN0X2FkZChycSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v aTkxNV9nZW1fY29udGV4dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2Nv bnRleHQuaAppbmRleCAxMDdjNzEzMDczY2IuLjBlODEzZmFjYTQ1MSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5oCkBAIC0xMjAsNyArMTIwLDYgQEAgc3Rh dGljIGlubGluZSBib29sIGk5MTVfZ2VtX2NvbnRleHRfaXNfa2VybmVsKHN0cnVjdCBpOTE1X2dl bV9jb250ZXh0ICpjdHgpCiAKIC8qIGk5MTVfZ2VtX2NvbnRleHQuYyAqLwogaW50IF9fbXVzdF9j aGVjayBpOTE1X2dlbV9jb250ZXh0c19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdik7Ci12b2lkIGk5MTVfZ2VtX2NvbnRleHRzX2xvc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KTsKIHZvaWQgaTkxNV9nZW1fY29udGV4dHNfZmluaShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogCiBpbnQgaTkxNV9nZW1fY29udGV4dF9vcGVuKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9hY3RpdmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYWN0aXZlLmMKaW5k ZXggODYzYWUxMjcwN2JhLi5lMWE4NzU4ZmQ1ZDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfYWN0aXZlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3Rp dmUuYwpAQCAtMjYzLDYgKzI2Myw3OCBAQCB2b2lkIGk5MTVfYWN0aXZlX2Zpbmkoc3RydWN0IGk5 MTVfYWN0aXZlICpyZWYpCiB9CiAjZW5kaWYKIAoraW50IGk5MTVfYWN0aXZlX2FjcXVpcmVfYmFy cmllcihzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZiwKKwkJCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlbmdpbmUtPmk5 MTU7CisJdW5zaWduZWQgbG9uZyB0bXA7CisJaW50IGVyciA9IDA7CisKKwlpOTE1X2FjdGl2ZV9h Y3F1aXJlKHJlZik7CisJZm9yX2VhY2hfZW5naW5lX21hc2tlZChlbmdpbmUsIGk5MTUsIGVuZ2lu ZS0+bWFzaywgdG1wKSB7CisJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICprY3R4ID0gZW5naW5lLT5r ZXJuZWxfY29udGV4dDsKKwkJdTY0IGlkeCA9IGtjdHgtPnJpbmctPnRpbWVsaW5lLT5mZW5jZV9j b250ZXh0OworCQlzdHJ1Y3QgcmJfbm9kZSAqKnAsICpwYXJlbnQ7CisJCXN0cnVjdCBhY3RpdmVf bm9kZSAqbm9kZTsKKworCQlwYXJlbnQgPSBOVUxMOworCQlwID0gJnJlZi0+dHJlZS5yYl9ub2Rl OworCQl3aGlsZSAoKnApIHsKKwkJCXBhcmVudCA9ICpwOworCisJCQlub2RlID0gcmJfZW50cnko cGFyZW50LCBzdHJ1Y3QgYWN0aXZlX25vZGUsIG5vZGUpOworCQkJaWYgKG5vZGUtPnRpbWVsaW5l ID09IGlkeCkKKwkJCQlnb3RvIHJlcGxhY2U7CisKKwkJCWlmIChub2RlLT50aW1lbGluZSA8IGlk eCkKKwkJCQlwID0gJnBhcmVudC0+cmJfcmlnaHQ7CisJCQllbHNlCisJCQkJcCA9ICZwYXJlbnQt PnJiX2xlZnQ7CisJCX0KKworCQkvKiBUaGluayBiZWZvcmUgeW91IHNocmluayEgKi8KKwkJbm9k ZSA9IGttZW1fY2FjaGVfYWxsb2MoZ2xvYmFsLnNsYWJfY2FjaGUsIEdGUF9LRVJORUwpOworCQlp ZiAodW5saWtlbHkoIW5vZGUpKSB7CisJCQllcnIgPSAtRU5PTUVNOworCQkJYnJlYWs7CisJCX0K KworCQlpOTE1X2FjdGl2ZV9yZXF1ZXN0X2luaXQoJm5vZGUtPmJhc2UsIE5VTEwsIG5vZGVfcmV0 aXJlKTsKKwkJbm9kZS0+cmVmID0gcmVmOworCQlub2RlLT50aW1lbGluZSA9IGlkeDsKKworCQly Yl9saW5rX25vZGUoJm5vZGUtPm5vZGUsIHBhcmVudCwgcCk7CisJCXJiX2luc2VydF9jb2xvcigm bm9kZS0+bm9kZSwgJnJlZi0+dHJlZSk7CisKK3JlcGxhY2U6CisJCWlmICghbm9kZS0+YmFzZS5y ZXF1ZXN0KSB7IC8qIFhYWCByZWN1cnNlIHRpbWVsaW5lIGxvY2sgKi8KKwkJCVJDVV9JTklUX1BP SU5URVIobm9kZS0+YmFzZS5yZXF1ZXN0LCBFUlJfUFRSKC1FQUdBSU4pKTsKKwkJCWxsaXN0X2Fk ZCgoc3RydWN0IGxsaXN0X25vZGUgKikmbm9kZS0+YmFzZS5saW5rLAorCQkJCSAgJmVuZ2luZS0+ YmFycmllcl90YXNrcyk7CisJCQlyZWYtPmNvdW50Kys7CisJCX0KKworCQlfX3NldF9iaXQoZW5n aW5lLT5pZCwgKHVuc2lnbmVkIGxvbmcgKikmaTkxNS0+Z3QuaWRsZV9iYXJyaWVycyk7CisJfQor CWk5MTVfYWN0aXZlX3JlbGVhc2UocmVmKTsKKworCXJldHVybiBlcnI7Cit9CisKK3ZvaWQgaTkx NV9yZXF1ZXN0X2FkZF9iYXJyaWVycyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKK3sKKwlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBycS0+ZW5naW5lOworCXN0cnVjdCBsbGlzdF9u b2RlICpub2RlLCAqbmV4dDsKKworCUdFTV9CVUdfT04oIWlzX3Bvd2VyX29mXzIoZW5naW5lLT5t YXNrKSk7CisJaWYgKCFfX3Rlc3RfYW5kX2NsZWFyX2JpdChlbmdpbmUtPmlkLAorCQkJCSAgKHVu c2lnbmVkIGxvbmcgKikmZW5naW5lLT5pOTE1LT5ndC5pZGxlX2JhcnJpZXJzKSkKKwkJcmV0dXJu OworCisJbGxpc3RfZm9yX2VhY2hfc2FmZShub2RlLCBuZXh0LCBsbGlzdF9kZWxfYWxsKCZlbmdp bmUtPmJhcnJpZXJfdGFza3MpKQorCQlsaXN0X2FkZF90YWlsKChzdHJ1Y3QgbGlzdF9oZWFkICop bm9kZSwgJnJxLT5hY3RpdmVfbGlzdCk7Cit9CisKIGludCBpOTE1X2FjdGl2ZV9yZXF1ZXN0X3Nl dChzdHJ1Y3QgaTkxNV9hY3RpdmVfcmVxdWVzdCAqYWN0aXZlLAogCQkJICAgIHN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9h Y3RpdmUuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYWN0aXZlLmgKaW5kZXggN2Q3NTg3 MTljZTM5Li5hOWZkMDZjZjFmYzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfYWN0aXZlLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmUuaApAQCAt NDA2LDQgKzQwNiw4IEBAIHZvaWQgaTkxNV9hY3RpdmVfZmluaShzdHJ1Y3QgaTkxNV9hY3RpdmUg KnJlZik7CiBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9hY3RpdmVfZmluaShzdHJ1Y3QgaTkxNV9h Y3RpdmUgKnJlZikgeyB9CiAjZW5kaWYKIAoraW50IGk5MTVfYWN0aXZlX2FjcXVpcmVfYmFycmll cihzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZiwKKwkJCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpOwordm9pZCBpOTE1X3JlcXVlc3RfYWRkX2JhcnJpZXJzKHN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxKTsKKwogI2VuZGlmIC8qIF9JOTE1X0FDVElWRV9IXyAqLwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKaW5kZXggMTNhMGYzM2U2YzM5Li42MzNkM2MwYjZlOTYgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaApAQCAtMTk4Niw2ICsxOTg2LDcgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewog CQl9IHRpbWVsaW5lczsKIAogCQlpbnRlbF9lbmdpbmVfbWFza190IGFjdGl2ZV9lbmdpbmVzOwor CQlpbnRlbF9lbmdpbmVfbWFza190IGlkbGVfYmFycmllcnM7CiAJCXN0cnVjdCBsaXN0X2hlYWQg YWN0aXZlX3JpbmdzOwogCQl1MzIgYWN0aXZlX3JlcXVlc3RzOwogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYwppbmRleCA4YjJjOWRjYmEwZTAuLjA3YTgwNmI5ZmU3NCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jCkBAIC03Miw2ICs3MiwyNCBAQCByZW1vdmVfbWFwcGFibGVfbm9kZShzdHJ1Y3QgZHJt X21tX25vZGUgKm5vZGUpCiAJZHJtX21tX3JlbW92ZV9ub2RlKG5vZGUpOwogfQogCitzdGF0aWMg dm9pZCBjYWxsX2lkbGVfYmFycmllcnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCit7 CisJdW5zaWduZWQgbG9uZyB0bXAgPSB4Y2hnKCZpOTE1LT5ndC5pZGxlX2JhcnJpZXJzLCAwKTsK KwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisKKwlmb3JfZWFjaF9lbmdpbmVfbWFz a2VkKGVuZ2luZSwgaTkxNSwgdG1wLCB0bXApIHsKKwkJc3RydWN0IGxsaXN0X25vZGUgKm5vZGUs ICpuZXh0OworCisJCWxsaXN0X2Zvcl9lYWNoX3NhZmUobm9kZSwgbmV4dCwKKwkJCQlsbGlzdF9k ZWxfYWxsKCZlbmdpbmUtPmJhcnJpZXJfdGFza3MpKSB7CisJCQlzdHJ1Y3QgaTkxNV9hY3RpdmVf cmVxdWVzdCAqYWN0aXZlID0KKwkJCQljb250YWluZXJfb2YoKHN0cnVjdCBsaXN0X2hlYWQgKilu b2RlLAorCQkJCQkJdHlwZW9mKCphY3RpdmUpLCBsaW5rKTsKKwkJCWFjdGl2ZS0+cmV0aXJlKGFj dGl2ZSwgTlVMTCk7CisJCX0KKwl9Cit9CisKIHN0YXRpYyB2b2lkIF9faTkxNV9nZW1fcGFyayhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIHsKIAlpbnRlbF93YWtlcmVmX3Qgd2FrZXJl ZjsKQEAgLTg1LDYgKzEwMyw5IEBAIHN0YXRpYyB2b2lkIF9faTkxNV9nZW1fcGFyayhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAlpZiAoIWk5MTUtPmd0LmF3YWtlKQogCQlyZXR1cm47 CiAKKwkvKiBBcyB3ZSBtYXkgaGF2ZSBmb3JjaWJseSBwYXJrZWQgKHZpYSB3ZWRnaW5nKSBmbHVz aCByZXNpZHVhbCBjYiAqLworCWNhbGxfaWRsZV9iYXJyaWVycyhpOTE1KTsKKwogCS8qCiAJICog QmUgcGFyYW5vaWQgYW5kIGZsdXNoIGEgY29uY3VycmVudCBpbnRlcnJ1cHQgdG8gbWFrZSBzdXJl CiAJICogd2UgZG9uJ3QgcmVhY3RpdmF0ZSBhbnkgaXJxIHRhc2tsZXRzIGFmdGVyIHBhcmtpbmcu CkBAIC0xMDIwLDggKzEwNDEsOCBAQCBpOTE1X2dlbV9yZXRpcmVfd29ya19oYW5kbGVyKHN0cnVj dCB3b3JrX3N0cnVjdCAqd29yaykKIAkJCQkgICByb3VuZF9qaWZmaWVzX3VwX3JlbGF0aXZlKEha KSk7CiB9CiAKLXN0YXRpYyBib29sIHN3aXRjaF90b19rZXJuZWxfY29udGV4dF9zeW5jKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LAotCQkJCQkgIHVuc2lnbmVkIGxvbmcgbWFzaykKK3N0 YXRpYyBib29sIF9fc3dpdGNoX3RvX2tlcm5lbF9jb250ZXh0X3N5bmMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsCisJCQkJCSAgICB1bnNpZ25lZCBsb25nIG1hc2spCiB7CiAJYm9vbCBy ZXN1bHQgPSB0cnVlOwogCkBAIC0xMDU0LDEwICsxMDc1LDIyIEBAIHN0YXRpYyBib29sIHN3aXRj aF90b19rZXJuZWxfY29udGV4dF9zeW5jKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAog CXJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBib29sIHN3aXRjaF90b19rZXJuZWxfY29udGV4 dF9pZGxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAorCQkJCQkgIHVuc2lnbmVkIGxv bmcgbWFzaykKK3sKKwlpZiAoIV9fc3dpdGNoX3RvX2tlcm5lbF9jb250ZXh0X3N5bmMoaTkxNSwg bWFzaykpCisJCXJldHVybiBmYWxzZTsKKworCWlmICghX19zd2l0Y2hfdG9fa2VybmVsX2NvbnRl eHRfc3luYyhpOTE1LCBpOTE1LT5ndC5pZGxlX2JhcnJpZXJzKSkKKwkJcmV0dXJuIGZhbHNlOwor CisJcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyBib29sIGxvYWRfcG93ZXJfY29udGV4dChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIHsKIAkvKiBGb3JjZSBsb2FkaW5nIHRoZSBrZXJu ZWwgY29udGV4dCBvbiBhbGwgZW5naW5lcyAqLwotCWlmICghc3dpdGNoX3RvX2tlcm5lbF9jb250 ZXh0X3N5bmMoaTkxNSwgQUxMX0VOR0lORVMpKQorCWlmICghc3dpdGNoX3RvX2tlcm5lbF9jb250 ZXh0X2lkbGUoaTkxNSwgQUxMX0VOR0lORVMpKQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKgpAQCAt MTEwNSw3ICsxMTM4LDcgQEAgaTkxNV9nZW1faWRsZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtf c3RydWN0ICp3b3JrKQogCSAgICAhaTkxNS0+Z3QuYWN0aXZlX3JlcXVlc3RzKSB7CiAJCSsraTkx NS0+Z3QuYWN0aXZlX3JlcXVlc3RzOyAvKiBkb24ndCByZXF1ZXVlIGlkbGUgKi8KIAotCQlzd2l0 Y2hfdG9fa2VybmVsX2NvbnRleHRfc3luYyhpOTE1LCBpOTE1LT5ndC5hY3RpdmVfZW5naW5lcyk7 CisJCXN3aXRjaF90b19rZXJuZWxfY29udGV4dF9pZGxlKGk5MTUsIGk5MTUtPmd0LmFjdGl2ZV9l bmdpbmVzKTsKIAogCQlpZiAoIS0taTkxNS0+Z3QuYWN0aXZlX3JlcXVlc3RzKSB7CiAJCQlfX2k5 MTVfZ2VtX3BhcmsoaTkxNSk7CkBAIC0xMzc2LDEwICsxNDA5LDYgQEAgdm9pZCBpOTE1X2dlbV9z YW5pdGl6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAogCWludGVsX3VuY29yZV9m b3JjZXdha2VfcHV0KGk5MTUsIEZPUkNFV0FLRV9BTEwpOwogCWludGVsX3J1bnRpbWVfcG1fcHV0 KGk5MTUsIHdha2VyZWYpOwotCi0JbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7 Ci0JaTkxNV9nZW1fY29udGV4dHNfbG9zdChpOTE1KTsKLQltdXRleF91bmxvY2soJmk5MTUtPmRy bS5zdHJ1Y3RfbXV0ZXgpOwogfQogCiB2b2lkIGk5MTVfZ2VtX3N1c3BlbmQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpCkBAIC0xNDA0LDcgKzE0MzMsNyBAQCB2b2lkIGk5MTVfZ2VtX3N1 c3BlbmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJICogc3RhdGUuIEZvcnR1bmF0 ZWx5LCB0aGUga2VybmVsX2NvbnRleHQgaXMgZGlzcG9zYWJsZSBhbmQgd2UgZG8KIAkgKiBub3Qg cmVseSBvbiBpdHMgc3RhdGUuCiAJICovCi0Jc3dpdGNoX3RvX2tlcm5lbF9jb250ZXh0X3N5bmMo aTkxNSwgaTkxNS0+Z3QuYWN0aXZlX2VuZ2luZXMpOworCXN3aXRjaF90b19rZXJuZWxfY29udGV4 dF9pZGxlKGk5MTUsIGk5MTUtPmd0LmFjdGl2ZV9lbmdpbmVzKTsKIAogCW11dGV4X3VubG9jaygm aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CiAJaTkxNV9yZXNldF9mbHVzaChpOTE1KTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V2aWN0LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9ldmljdC5jCmluZGV4IDA5NDc0ODU3NzVhMy4uMTc0ODUwMWE3 NmNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ldmljdC5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V2aWN0LmMKQEAgLTQwLDcgKzQwLDcg QEAgSTkxNV9TRUxGVEVTVF9ERUNMQVJFKHN0YXRpYyBzdHJ1Y3QgaWd0X2V2aWN0X2N0bCB7CiAK IHN0YXRpYyBib29sIGdndHRfaXNfaWRsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkK IHsKLQlyZXR1cm4gIWk5MTUtPmd0LmFjdGl2ZV9yZXF1ZXN0czsKKwlyZXR1cm4gIWk5MTUtPmd0 LmFjdGl2ZV9yZXF1ZXN0cyAmJiAhaTkxNS0+Z3QuaWRsZV9iYXJyaWVyczsKIH0KIAogc3RhdGlj IGludCBnZ3R0X2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQpAQCAtNTQsMTkg KzU0LDE0IEBAIHN0YXRpYyBpbnQgZ2d0dF9mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSkKIAkgKiB0aGUgaG9wZXMgdGhhdCB3ZSBjYW4gdGhlbiByZW1vdmUgY29udGV4dHMgYW5k IHRoZSBsaWtlIG9ubHkKIAkgKiBib3VuZCBieSB0aGVpciBhY3RpdmUgcmVmZXJlbmNlLgogCSAq LwotCWVyciA9IGk5MTVfZ2VtX3N3aXRjaF90b19rZXJuZWxfY29udGV4dChpOTE1LCBpOTE1LT5n dC5hY3RpdmVfZW5naW5lcyk7CisJZXJyID0gaTkxNV9nZW1fc3dpdGNoX3RvX2tlcm5lbF9jb250 ZXh0KGk5MTUsIGk5MTUtPmd0LmlkbGVfYmFycmllcnMpOwogCWlmIChlcnIpCiAJCXJldHVybiBl cnI7CiAKLQllcnIgPSBpOTE1X2dlbV93YWl0X2Zvcl9pZGxlKGk5MTUsCi0JCQkJICAgICBJOTE1 X1dBSVRfSU5URVJSVVBUSUJMRSB8Ci0JCQkJICAgICBJOTE1X1dBSVRfTE9DS0VELAotCQkJCSAg ICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwotCWlmIChlcnIpCi0JCXJldHVybiBlcnI7Ci0KLQlH RU1fQlVHX09OKCFnZ3R0X2lzX2lkbGUoaTkxNSkpOwotCXJldHVybiAwOworCXJldHVybiBpOTE1 X2dlbV93YWl0X2Zvcl9pZGxlKGk5MTUsCisJCQkJICAgICAgSTkxNV9XQUlUX0lOVEVSUlVQVElC TEUgfAorCQkJCSAgICAgIEk5MTVfV0FJVF9MT0NLRUQsCisJCQkJICAgICAgTUFYX1NDSEVEVUxF X1RJTUVPVVQpOwogfQogCiBzdGF0aWMgYm9vbApAQCAtNDE2LDkgKzQxMSwxMSBAQCBpbnQgaTkx NV9nZW1fZXZpY3Rfdm0oc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCiAJICogc3dpdGNo IG90aGVyd2lzZSBpcyBpbmVmZmVjdGl2ZS4KIAkgKi8KIAlpZiAoaTkxNV9pc19nZ3R0KHZtKSkg ewotCQlyZXQgPSBnZ3R0X2ZsdXNoKHZtLT5pOTE1KTsKLQkJaWYgKHJldCkKLQkJCXJldHVybiBy ZXQ7CisJCWRvIHsKKwkJCXJldCA9IGdndHRfZmx1c2godm0tPmk5MTUpOworCQkJaWYgKHJldCkK KwkJCQlyZXR1cm4gcmV0OworCQl9IHdoaWxlICghZ2d0dF9pc19pZGxlKHZtLT5pOTE1KSk7CiAJ fQogCiAJSU5JVF9MSVNUX0hFQUQoJmV2aWN0aW9uX2xpc3QpOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlcXVlc3QuYwppbmRleCA0NjVkZTg5M2I2OWEuLmI3MTQyMWFlOTU4NyAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZXF1ZXN0LmMKQEAgLTIyNiwxOCArMjI2LDYgQEAgc3RhdGljIHZvaWQgX19y ZXRpcmVfZW5naW5lX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCXNw aW5fdW5sb2NrKCZycS0+bG9jayk7CiAKIAlsb2NhbF9pcnFfZW5hYmxlKCk7Ci0KLQkvKgotCSAq IFRoZSBiYWNraW5nIG9iamVjdCBmb3IgdGhlIGNvbnRleHQgaXMgZG9uZSBhZnRlciBzd2l0Y2hp bmcgdG8gdGhlCi0JICogKm5leHQqIGNvbnRleHQuIFRoZXJlZm9yZSB3ZSBjYW5ub3QgcmV0aXJl IHRoZSBwcmV2aW91cyBjb250ZXh0IHVudGlsCi0JICogdGhlIG5leHQgY29udGV4dCBoYXMgYWxy ZWFkeSBzdGFydGVkIHJ1bm5pbmcuIEhvd2V2ZXIsIHNpbmNlIHdlCi0JICogY2Fubm90IHRha2Ug dGhlIHJlcXVpcmVkIGxvY2tzIGF0IGk5MTVfcmVxdWVzdF9zdWJtaXQoKSB3ZQotCSAqIGRlZmVy IHRoZSB1bnBpbm5pbmcgb2YgdGhlIGFjdGl2ZSBjb250ZXh0IHRvIG5vdywgcmV0aXJlbWVudCBv ZgotCSAqIHRoZSBzdWJzZXF1ZW50IHJlcXVlc3QuCi0JICovCi0JaWYgKGVuZ2luZS0+bGFzdF9y ZXRpcmVkX2NvbnRleHQpCi0JCWludGVsX2NvbnRleHRfdW5waW4oZW5naW5lLT5sYXN0X3JldGly ZWRfY29udGV4dCk7Ci0JZW5naW5lLT5sYXN0X3JldGlyZWRfY29udGV4dCA9IHJxLT5od19jb250 ZXh0OwogfQogCiBzdGF0aWMgdm9pZCBfX3JldGlyZV9lbmdpbmVfdXB0byhzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUsCkBAIC03NzgsOSArNzY2LDYgQEAgaTkxNV9yZXF1ZXN0X2FsbG9j KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg KmN0eCkKIAlpZiAocmV0KQogCQlnb3RvIGVycl91bndpbmQ7CiAKLQkvKiBLZWVwIGEgc2Vjb25k IHBpbiBmb3IgdGhlIGR1YWwgcmV0aXJlbWVudCBhbG9uZyBlbmdpbmUgYW5kIHJpbmcgKi8KLQlf X2ludGVsX2NvbnRleHRfcGluKGNlKTsKLQogCXJxLT5pbmZpeCA9IHJxLT5yaW5nLT5lbWl0OyAv KiBlbmQgb2YgaGVhZGVyOyBzdGFydCBvZiB1c2VyIHBheWxvYWQgKi8KIAogCS8qIENoZWNrIHRo YXQgd2UgZGlkbid0IGludGVycnVwdCBvdXJzZWx2ZXMgd2l0aCBhIG5ldyByZXF1ZXN0ICovCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jlc2V0LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3Jlc2V0LmMKaW5kZXggMWNiNmMzODVjOTUwLi5iZWFjYzI4NTRkOTIg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVzZXQuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jlc2V0LmMKQEAgLTc2OCw5ICs3NjgsOCBAQCBzdGF0aWMg dm9pZCByZXNldF9yZXN0YXJ0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCiAJLyoK IAkgKiBGb2xsb3dpbmcgdGhlIHJlc2V0LCBlbnN1cmUgdGhhdCB3ZSBhbHdheXMgcmVsb2FkIGNv bnRleHQgZm9yCi0JICogcG93ZXJzYXZpbmcsIGFuZCB0byBjb3JyZWN0IGVuZ2luZS0+bGFzdF9y ZXRpcmVkX2NvbnRleHQuIFNpbmNlCi0JICogdGhpcyByZXF1aXJlcyB1cyB0byBzdWJtaXQgYSBy ZXF1ZXN0LCBxdWV1ZSBhIHdvcmtlciB0byBkbyB0aGF0Ci0JICogdGFzayBmb3IgdXMgdG8gZXZh ZGUgYW55IGxvY2tpbmcgaGVyZS4KKwkgKiBwb3dlcnNhdmluZy4gU2luY2UgdGhpcyByZXF1aXJl cyB1cyB0byBzdWJtaXQgYSByZXF1ZXN0LCBxdWV1ZQorCSAqIGEgd29ya2VyIHRvIGRvIHRoYXQg dGFzayBmb3IgdXMgdG8gZXZhZGUgYW55IGxvY2tpbmcgaGVyZS4KIAkgKi8KIAlpZiAoUkVBRF9P TkNFKGk5MTUtPmdwdV9lcnJvci5yZXN0YXJ0KSkKIAkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfY29udGV4dC5jCmluZGV4IDczNTMzZDBkMWM2OC4uOGFlOTc2MGMzY2E0IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb250ZXh0LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfY29udGV4dC5jCkBAIC0xNzMsNyArMTczLDYgQEAgaW50ZWxfY29u dGV4dF9waW4oc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKIAkJbGlzdF9hZGQoJmNlLT5h Y3RpdmVfbGluaywgJmN0eC0+YWN0aXZlX2VuZ2luZXMpOwogCQltdXRleF91bmxvY2soJmN0eC0+ bXV0ZXgpOwogCi0JCWludGVsX2NvbnRleHRfZ2V0KGNlKTsKIAkJc21wX21iX19iZWZvcmVfYXRv bWljKCk7IC8qIGZsdXNoIHBpbiBiZWZvcmUgaXQgaXMgdmlzaWJsZSAqLwogCX0KIApAQCAtMjA1 LDIwICsyMDQsMjMgQEAgdm9pZCBpbnRlbF9jb250ZXh0X3VucGluKHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZSkKIAkJbXV0ZXhfdW5sb2NrKCZjZS0+Z2VtX2NvbnRleHQtPm11dGV4KTsKIAogCQlp OTE1X2dlbV9jb250ZXh0X3B1dChjZS0+Z2VtX2NvbnRleHQpOwotCQlpbnRlbF9jb250ZXh0X3B1 dChjZSk7CisJCWludGVsX2NvbnRleHRfaW5hY3RpdmUoY2UpOwogCX0KIAogCW11dGV4X3VubG9j aygmY2UtPnBpbl9tdXRleCk7CiAJaW50ZWxfY29udGV4dF9wdXQoY2UpOwogfQogCi1zdGF0aWMg dm9pZCBpbnRlbF9jb250ZXh0X3JldGlyZShzdHJ1Y3QgaTkxNV9hY3RpdmVfcmVxdWVzdCAqYWN0 aXZlLAotCQkJCSBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKK3N0YXRpYyB2b2lkIGludGVsX2Nv bnRleHRfcmV0aXJlKHN0cnVjdCBpOTE1X2FjdGl2ZSAqYWN0aXZlKQogewotCXN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSA9Ci0JCWNvbnRhaW5lcl9vZihhY3RpdmUsIHR5cGVvZigqY2UpLCBhY3Rp dmVfdHJhY2tlcik7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gY29udGFpbmVyX29mKGFj dGl2ZSwgdHlwZW9mKCpjZSksIGFjdGl2ZSk7CisKKwlpZiAoY2UtPnN0YXRlKSB7CisJCWNlLT5z dGF0ZS0+b2JqLT5waW5fZ2xvYmFsLS07CisJCWk5MTVfdm1hX3VucGluKGNlLT5zdGF0ZSk7CisJ fQogCi0JaW50ZWxfY29udGV4dF91bnBpbihjZSk7CisJaW50ZWxfY29udGV4dF9wdXQoY2UpOwog fQogCiB2b2lkCkBAIC0yNDAsOCArMjQyLDc2IEBAIGludGVsX2NvbnRleHRfaW5pdChzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqY2UsCiAJLyogVXNlIHRoZSB3aG9sZSBkZXZpY2UgYnkgZGVmYXVsdCAq LwogCWNlLT5zc2V1ID0gaW50ZWxfZGV2aWNlX2RlZmF1bHRfc3NldShjdHgtPmk5MTUpOwogCi0J aTkxNV9hY3RpdmVfcmVxdWVzdF9pbml0KCZjZS0+YWN0aXZlX3RyYWNrZXIsCi0JCQkJIE5VTEws IGludGVsX2NvbnRleHRfcmV0aXJlKTsKKwlpOTE1X2FjdGl2ZV9pbml0KGN0eC0+aTkxNSwgJmNl LT5hY3RpdmUsIGludGVsX2NvbnRleHRfcmV0aXJlKTsKK30KKworc3RhdGljIGludCBfX2NvbnRl eHRfcGluX3N0YXRlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCB1bnNpZ25lZCBsb25nIGZsYWdzKQor eworCWludCBlcnI7CisKKwkvKgorCSAqIENsZWFyIHRoaXMgcGFnZSBvdXQgb2YgYW55IENQVSBj YWNoZXMgZm9yIGNvaGVyZW50IHN3YXAtaW4vb3V0LgorCSAqIFdlIG9ubHkgd2FudCB0byBkbyB0 aGlzIG9uIHRoZSBmaXJzdCBiaW5kIHNvIHRoYXQgd2UgZG8gbm90IHN0YWxsCisJICogb24gYW4g YWN0aXZlIGNvbnRleHQgKHdoaWNoIGJ5IG5hdHVyZSBpcyBhbHJlYWR5IG9uIHRoZSBHUFUpLgor CSAqLworCWlmICghKHZtYS0+ZmxhZ3MgJiBJOTE1X1ZNQV9HTE9CQUxfQklORCkpIHsKKwkJaTkx NV9nZW1fb2JqZWN0X2xvY2sodm1hLT5vYmopOworCQllcnIgPSBpOTE1X2dlbV9vYmplY3Rfc2V0 X3RvX3djX2RvbWFpbih2bWEtPm9iaiwgdHJ1ZSk7CisJCWk5MTVfZ2VtX29iamVjdF91bmxvY2so dm1hLT5vYmopOworCQlpZiAoZXJyKQorCQkJcmV0dXJuIGVycjsKKwl9CisKKwllcnIgPSBpOTE1 X3ZtYV9waW4odm1hLCAwLCAwLCBmbGFncyB8IFBJTl9HTE9CQUwpOworCWlmIChlcnIpCisJCXJl dHVybiBlcnI7CisKKwkvKgorCSAqIEFuZCBtYXJrIGlzIGFzIGEgZ2xvYmFsbHkgcGlubmVkIG9i amVjdCB0byBsZXQgdGhlIHNocmlua2VyIGtub3cKKwkgKiBpdCBjYW5ub3QgcmVjbGFpbSB0aGUg b2JqZWN0IHVudGlsIHdlIHJlbGVhc2UgaXQuCisJICovCisJdm1hLT5vYmotPnBpbl9nbG9iYWwr KzsKKwlyZXR1cm4gMDsKK30KKworaW50IGludGVsX2NvbnRleHRfYWN0aXZlKHN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSwgdW5zaWduZWQgbG9uZyBmbGFncykKK3sKKwlpbnQgZXJyOworCisJaWYg KCFpOTE1X2FjdGl2ZV9hY3F1aXJlKCZjZS0+YWN0aXZlKSkKKwkJcmV0dXJuIDA7CisKKwlpbnRl bF9jb250ZXh0X2dldChjZSk7CisKKwlpZiAoIWNlLT5zdGF0ZSkKKwkJcmV0dXJuIDA7CisKKwll cnIgPSBfX2NvbnRleHRfcGluX3N0YXRlKGNlLT5zdGF0ZSwgZmxhZ3MpOworCWlmIChlcnIpIHsK KwkJaTkxNV9hY3RpdmVfY2FuY2VsKCZjZS0+YWN0aXZlKTsKKwkJaW50ZWxfY29udGV4dF9wdXQo Y2UpOworCQlyZXR1cm4gZXJyOworCX0KKworCS8qIFByZWFsbG9jYXRlIHRyYWNraW5nIG5vZGVz ICovCisJaWYgKCFpOTE1X2dlbV9jb250ZXh0X2lzX2tlcm5lbChjZS0+Z2VtX2NvbnRleHQpKSB7 CisJCWVyciA9IGk5MTVfYWN0aXZlX2FjcXVpcmVfYmFycmllcigmY2UtPmFjdGl2ZSwgY2UtPmVu Z2luZSk7CisJCWlmIChlcnIpIHsKKwkJCWk5MTVfYWN0aXZlX3JlbGVhc2UoJmNlLT5hY3RpdmUp OworCQkJcmV0dXJuIGVycjsKKwkJfQorCX0KKworCXJldHVybiAwOworfQorCit2b2lkIGludGVs X2NvbnRleHRfaW5hY3RpdmUoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQoreworCS8qIE5vZGVz IHByZWFsbG9jYXRlZCBpbiBpbnRlbF9jb250ZXh0X2FjdGl2ZSgpICovCisJaWYgKGNlLT5zdGF0 ZSAmJiAhaTkxNV9nZW1fY29udGV4dF9pc19rZXJuZWwoY2UtPmdlbV9jb250ZXh0KSkKKwkJaTkx NV9hY3RpdmVfYWNxdWlyZV9iYXJyaWVyKCZjZS0+YWN0aXZlLCBjZS0+ZW5naW5lKTsKKworCWk5 MTVfYWN0aXZlX3JlbGVhc2UoJmNlLT5hY3RpdmUpOwogfQogCiBzdGF0aWMgdm9pZCBpOTE1X2ds b2JhbF9jb250ZXh0X3Nocmluayh2b2lkKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfY29udGV4dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29udGV4dC5o CmluZGV4IGViYzg2MWIxYTQ5ZS4uNmU2YWVkMTk4YmM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9jb250ZXh0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfY29udGV4dC5oCkBAIC03Myw2ICs3Myw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX2ludGVs X2NvbnRleHRfcGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIAogdm9pZCBpbnRlbF9jb250 ZXh0X3VucGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSk7CiAKK2ludCBpbnRlbF9jb250ZXh0 X2FjdGl2ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOwor dm9pZCBpbnRlbF9jb250ZXh0X2luYWN0aXZlKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSk7CisK IHN0YXRpYyBpbmxpbmUgc3RydWN0IGludGVsX2NvbnRleHQgKmludGVsX2NvbnRleHRfZ2V0KHN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIHsKIAlrcmVmX2dldCgmY2UtPnJlZik7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb250ZXh0X3R5cGVzLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9jb250ZXh0X3R5cGVzLmgKaW5kZXggZjg2ZjRhZTg3MjRjLi41 Yzk5OTMzOGJjZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbnRl eHRfdHlwZXMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb250ZXh0X3R5cGVz LmgKQEAgLTU4LDEwICs1OCwxMCBAQCBzdHJ1Y3QgaW50ZWxfY29udGV4dCB7CiAJc3RydWN0IG11 dGV4IHBpbl9tdXRleDsgLyogZ3VhcmRzIHBpbm5pbmcgYW5kIGFzc29jaWF0ZWQgb24tZ3B1aW5n ICovCiAKIAkvKioKLQkgKiBhY3RpdmVfdHJhY2tlcjogQWN0aXZlIHRyYWNrZXIgZm9yIHRoZSBl eHRlcm5hbCBycSBhY3Rpdml0eQotCSAqIG9uIHRoaXMgaW50ZWxfY29udGV4dCBvYmplY3QuCisJ ICogYWN0aXZlOiBBY3RpdmUgdHJhY2tlciBmb3IgdGhlIHJxIGFjdGl2aXR5IChpbmMuIGV4dGVy bmFsKSBvbiB0aGlzCisJICogaW50ZWxfY29udGV4dCBvYmplY3QuCiAJICovCi0Jc3RydWN0IGk5 MTVfYWN0aXZlX3JlcXVlc3QgYWN0aXZlX3RyYWNrZXI7CisJc3RydWN0IGk5MTVfYWN0aXZlIGFj dGl2ZTsKIAogCWNvbnN0IHN0cnVjdCBpbnRlbF9jb250ZXh0X29wcyAqb3BzOwogCXN0cnVjdCBy Yl9ub2RlIG5vZGU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdp bmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCmluZGV4IDRl YjBlODc5Yjc2YS4uODExZTExM2Y0MzRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9lbmdpbmVfY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdp bmVfY3MuYwpAQCAtNTc0LDYgKzU3NCw4IEBAIGludCBpbnRlbF9lbmdpbmVfc2V0dXBfY29tbW9u KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAlpbnQgZXJyOwogCisJaW5pdF9s bGlzdF9oZWFkKCZlbmdpbmUtPmJhcnJpZXJfdGFza3MpOworCiAJZXJyID0gaW5pdF9zdGF0dXNf cGFnZShlbmdpbmUpOwogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CkBAIC03NzksNiArNzgxLDcg QEAgdm9pZCBpbnRlbF9lbmdpbmVfY2xlYW51cF9jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQogCWlmIChlbmdpbmUtPnByZWVtcHRfY29udGV4dCkKIAkJaW50ZWxfY29udGV4 dF91bnBpbihlbmdpbmUtPnByZWVtcHRfY29udGV4dCk7CiAJaW50ZWxfY29udGV4dF91bnBpbihl bmdpbmUtPmtlcm5lbF9jb250ZXh0KTsKKwlHRU1fQlVHX09OKCFsbGlzdF9lbXB0eSgmZW5naW5l LT5iYXJyaWVyX3Rhc2tzKSk7CiAKIAlpOTE1X3RpbWVsaW5lX2ZpbmkoJmVuZ2luZS0+dGltZWxp bmUpOwogCkBAIC0xMjEwLDI2ICsxMjEzLDYgQEAgdm9pZCBpbnRlbF9lbmdpbmVzX3VucGFyayhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAl9CiB9CiAKLS8qKgotICogaW50ZWxfZW5n aW5lX2xvc3RfY29udGV4dDogY2FsbGVkIHdoZW4gdGhlIEdQVSBpcyByZXNldCBpbnRvIHVua25v d24gc3RhdGUKLSAqIEBlbmdpbmU6IHRoZSBlbmdpbmUKLSAqCi0gKiBXZSBoYXZlIGVpdGhlciBy ZXNldCB0aGUgR1BVIG9yIG90aGVyd2lzZSBhYm91dCB0byBsb3NlIHN0YXRlIHRyYWNraW5nIG9m Ci0gKiB0aGUgY3VycmVudCBHUFUgbG9naWNhbCBzdGF0ZSAoZS5nLiBzdXNwZW5kKS4gT24gbmV4 dCB1c2UsIGl0IGlzIHRoZXJlZm9yZQotICogaW1wZXJhdGl2ZSB0aGF0IHdlIG1ha2Ugbm8gcHJl c3VtcHRpb25zIGFib3V0IHRoZSBjdXJyZW50IHN0YXRlIGFuZCBsb2FkCi0gKiBmcm9tIHNjcmF0 Y2guCi0gKi8KLXZvaWQgaW50ZWxfZW5naW5lX2xvc3RfY29udGV4dChzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCi17Ci0Jc3RydWN0IGludGVsX2NvbnRleHQgKmNlOwotCi0JbG9ja2Rl cF9hc3NlcnRfaGVsZCgmZW5naW5lLT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKLQotCWNlID0g ZmV0Y2hfYW5kX3plcm8oJmVuZ2luZS0+bGFzdF9yZXRpcmVkX2NvbnRleHQpOwotCWlmIChjZSkK LQkJaW50ZWxfY29udGV4dF91bnBpbihjZSk7Ci19Ci0KIGJvb2wgaW50ZWxfZW5naW5lX2Nhbl9z dG9yZV9kd29yZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJc3dpdGNoIChJ TlRFTF9HRU4oZW5naW5lLT5pOTE1KSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZW5naW5lX3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdp bmVfdHlwZXMuaAppbmRleCAzNzU4NWI1MTM3MzAuLmZiYjM1MGYwMzdmNyAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX3R5cGVzLmgKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX3R5cGVzLmgKQEAgLTExLDYgKzExLDcgQEAKICNpbmNs dWRlIDxsaW51eC9pcnFfd29yay5oPgogI2luY2x1ZGUgPGxpbnV4L2tyZWYuaD4KICNpbmNsdWRl IDxsaW51eC9saXN0Lmg+CisjaW5jbHVkZSA8bGludXgvbGxpc3QuaD4KICNpbmNsdWRlIDxsaW51 eC90eXBlcy5oPgogCiAjaW5jbHVkZSAiaTkxNV90aW1lbGluZV90eXBlcy5oIgpAQCAtMjY5LDYg KzI3MCw3IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgewogCXN0cnVjdCBpbnRlbF9yaW5nICpi dWZmZXI7CiAKIAlzdHJ1Y3QgaTkxNV90aW1lbGluZSB0aW1lbGluZTsKKwlzdHJ1Y3QgbGxpc3Rf aGVhZCBiYXJyaWVyX3Rhc2tzOwogCiAJc3RydWN0IGludGVsX2NvbnRleHQgKmtlcm5lbF9jb250 ZXh0OyAvKiBwaW5uZWQgKi8KIAlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqcHJlZW1wdF9jb250ZXh0 OyAvKiBwaW5uZWQ7IG9wdGlvbmFsICovCkBAIC00MTIsMTcgKzQxNCw2IEBAIHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgewogCiAJc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgZXhlY2xpc3Rz OwogCi0JLyogQ29udGV4dHMgYXJlIHBpbm5lZCB3aGlsc3QgdGhleSBhcmUgYWN0aXZlIG9uIHRo ZSBHUFUuIFRoZSBsYXN0Ci0JICogY29udGV4dCBleGVjdXRlZCByZW1haW5zIGFjdGl2ZSB3aGls c3QgdGhlIEdQVSBpcyBpZGxlIC0gdGhlCi0JICogc3dpdGNoIGF3YXkgYW5kIHdyaXRlIHRvIHRo ZSBjb250ZXh0IG9iamVjdCBvbmx5IG9jY3VycyBvbiB0aGUKLQkgKiBuZXh0IGV4ZWN1dGlvbi4g IENvbnRleHRzIGFyZSBvbmx5IHVucGlubmVkIG9uIHJldGlyZW1lbnQgb2YgdGhlCi0JICogZm9s bG93aW5nIHJlcXVlc3QgZW5zdXJpbmcgdGhhdCB3ZSBjYW4gYWx3YXlzIHdyaXRlIHRvIHRoZSBv YmplY3QKLQkgKiBvbiB0aGUgY29udGV4dCBzd2l0Y2ggZXZlbiBhZnRlciBpZGxpbmcuIEFjcm9z cyBzdXNwZW5kLCB3ZSBzd2l0Y2gKLQkgKiB0byB0aGUga2VybmVsIGNvbnRleHQgYW5kIHRyYXNo IGl0IGFzIHRoZSBzYXZlIG1heSBub3QgaGFwcGVuCi0JICogYmVmb3JlIHRoZSBoYXJkd2FyZSBp cyBwb3dlcmVkIGRvd24uCi0JICovCi0Jc3RydWN0IGludGVsX2NvbnRleHQgKmxhc3RfcmV0aXJl ZF9jb250ZXh0OwotCiAJLyogc3RhdHVzX25vdGlmaWVyOiBsaXN0IG9mIGNhbGxiYWNrcyBmb3Ig Y29udGV4dC1zd2l0Y2ggY2hhbmdlcyAqLwogCXN0cnVjdCBhdG9taWNfbm90aWZpZXJfaGVhZCBj b250ZXh0X3N0YXR1c19ub3RpZmllcjsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwppbmRleCBm NGQ5OGY4NTMwYTUuLjBhNDA2OTc4NjZiNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbHJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKQEAg LTE1MDgsNTkgKzE1MDgsOSBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfY29udGV4dF9kZXN0cm95 KHN0cnVjdCBrcmVmICprcmVmKQogCiBzdGF0aWMgdm9pZCBleGVjbGlzdHNfY29udGV4dF91bnBp bihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lOwotCi0JLyoKLQkgKiBUaGUgdGFza2xldCBtYXkgc3RpbGwgYmUgdXNpbmcgYSBwb2lu dGVyIHRvIG91ciBzdGF0ZSwgdmlhIGFuCi0JICogb2xkIHJlcXVlc3QuIEhvd2V2ZXIsIHNpbmNl IHdlIGtub3cgd2Ugb25seSB1bnBpbiB0aGUgY29udGV4dAotCSAqIG9uIHJldGlyZW1lbnQgb2Yg dGhlIGZvbGxvd2luZyByZXF1ZXN0LCB3ZSBrbm93IHRoYXQgdGhlIGxhc3QKLQkgKiByZXF1ZXN0 IHJlZmVyZW5jaW5nIHVzIHdpbGwgaGF2ZSBoYWQgYSBjb21wbGV0aW9uIENTIGludGVycnVwdC4K LQkgKiBJZiB3ZSBzZWUgdGhhdCBpdCBpcyBzdGlsbCBhY3RpdmUsIGl0IG1lYW5zIHRoYXQgdGhl IHRhc2tsZXQgaGFzbid0Ci0JICogaGFkIHRoZSBjaGFuY2UgdG8gcnVuIHlldDsgbGV0IGl0IHJ1 biBiZWZvcmUgd2UgdGVhcmRvd24gdGhlCi0JICogcmVmZXJlbmNlIGl0IG1heSB1c2UuCi0JICov Ci0JZW5naW5lID0gUkVBRF9PTkNFKGNlLT5pbmZsaWdodCk7Ci0JaWYgKHVubGlrZWx5KGVuZ2lu ZSkpIHsKLQkJdW5zaWduZWQgbG9uZyBmbGFnczsKLQotCQlzcGluX2xvY2tfaXJxc2F2ZSgmZW5n aW5lLT50aW1lbGluZS5sb2NrLCBmbGFncyk7Ci0JCXByb2Nlc3NfY3NiKGVuZ2luZSk7Ci0JCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+dGltZWxpbmUubG9jaywgZmxhZ3MpOwotCi0J CUdFTV9CVUdfT04oUkVBRF9PTkNFKGNlLT5pbmZsaWdodCkpOwotCX0KLQogCWk5MTVfZ2VtX2Nv bnRleHRfdW5waW5faHdfaWQoY2UtPmdlbV9jb250ZXh0KTsKLQotCWludGVsX3JpbmdfdW5waW4o Y2UtPnJpbmcpOwotCi0JY2UtPnN0YXRlLT5vYmotPnBpbl9nbG9iYWwtLTsKIAlpOTE1X2dlbV9v YmplY3RfdW5waW5fbWFwKGNlLT5zdGF0ZS0+b2JqKTsKLQlpOTE1X3ZtYV91bnBpbihjZS0+c3Rh dGUpOwotfQotCi1zdGF0aWMgaW50IF9fY29udGV4dF9waW4oc3RydWN0IGk5MTVfdm1hICp2bWEp Ci17Ci0JdW5zaWduZWQgaW50IGZsYWdzOwotCWludCBlcnI7Ci0KLQkvKgotCSAqIENsZWFyIHRo aXMgcGFnZSBvdXQgb2YgYW55IENQVSBjYWNoZXMgZm9yIGNvaGVyZW50IHN3YXAtaW4vb3V0Lgot CSAqIFdlIG9ubHkgd2FudCB0byBkbyB0aGlzIG9uIHRoZSBmaXJzdCBiaW5kIHNvIHRoYXQgd2Ug ZG8gbm90IHN0YWxsCi0JICogb24gYW4gYWN0aXZlIGNvbnRleHQgKHdoaWNoIGJ5IG5hdHVyZSBp cyBhbHJlYWR5IG9uIHRoZSBHUFUpLgotCSAqLwotCWlmICghKHZtYS0+ZmxhZ3MgJiBJOTE1X1ZN QV9HTE9CQUxfQklORCkpIHsKLQkJaTkxNV9nZW1fb2JqZWN0X2xvY2sodm1hLT5vYmopOwotCQll cnIgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX3djX2RvbWFpbih2bWEtPm9iaiwgdHJ1ZSk7Ci0J CWk5MTVfZ2VtX29iamVjdF91bmxvY2sodm1hLT5vYmopOwotCQlpZiAoZXJyKQotCQkJcmV0dXJu IGVycjsKLQl9Ci0KLQlmbGFncyA9IFBJTl9HTE9CQUwgfCBQSU5fSElHSDsKLQlmbGFncyB8PSBQ SU5fT0ZGU0VUX0JJQVMgfCBpOTE1X2dndHRfcGluX2JpYXModm1hKTsKLQotCXJldHVybiBpOTE1 X3ZtYV9waW4odm1hLCAwLCAwLCBmbGFncyk7CisJaW50ZWxfcmluZ191bnBpbihjZS0+cmluZyk7 CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNTk3LDcgKzE1NDcsMTAgQEAgX19leGVjbGlzdHNfY29u dGV4dF9waW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAogCQlnb3RvIGVycjsKIAlHRU1fQlVH X09OKCFjZS0+c3RhdGUpOwogCi0JcmV0ID0gX19jb250ZXh0X3BpbihjZS0+c3RhdGUpOworCXJl dCA9IGludGVsX2NvbnRleHRfYWN0aXZlKGNlLAorCQkJCSAgIGVuZ2luZS0+aTkxNS0+Z2d0dC5w aW5fYmlhcyB8CisJCQkJICAgUElOX09GRlNFVF9CSUFTIHwKKwkJCQkgICBQSU5fSElHSCk7CiAJ aWYgKHJldCkKIAkJZ290byBlcnI7CiAKQEAgLTE2MDYsNyArMTU1OSw3IEBAIF9fZXhlY2xpc3Rz X2NvbnRleHRfcGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKIAkJCQkJSTkxNV9NQVBfT1ZF UlJJREUpOwogCWlmIChJU19FUlIodmFkZHIpKSB7CiAJCXJldCA9IFBUUl9FUlIodmFkZHIpOwot CQlnb3RvIHVucGluX3ZtYTsKKwkJZ290byB1bnBpbl9hY3RpdmU7CiAJfQogCiAJcmV0ID0gaW50 ZWxfcmluZ19waW4oY2UtPnJpbmcpOwpAQCAtMTYyMSwxNSArMTU3NCwxNCBAQCBfX2V4ZWNsaXN0 c19jb250ZXh0X3BpbihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCiAJY2UtPmxyY19yZWdfc3Rh dGUgPSB2YWRkciArIExSQ19TVEFURV9QTiAqIFBBR0VfU0laRTsKIAlfX2V4ZWNsaXN0c191cGRh dGVfcmVnX3N0YXRlKGNlLCBlbmdpbmUpOwogCi0JY2UtPnN0YXRlLT5vYmotPnBpbl9nbG9iYWwr KzsKIAlyZXR1cm4gMDsKIAogdW5waW5fcmluZzoKIAlpbnRlbF9yaW5nX3VucGluKGNlLT5yaW5n KTsKIHVucGluX21hcDoKIAlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKGNlLT5zdGF0ZS0+b2Jq KTsKLXVucGluX3ZtYToKLQlfX2k5MTVfdm1hX3VucGluKGNlLT5zdGF0ZSk7Cit1bnBpbl9hY3Rp dmU6CisJaW50ZWxfY29udGV4dF9pbmFjdGl2ZShjZSk7CiBlcnI6CiAJcmV0dXJuIHJldDsKIH0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwppbmRleCBiNTE4MjRiYWEwNjku LjkyOTE5ZTM1OWZhZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwpA QCAtMTM4Nyw1NyArMTM4Nyw5IEBAIHN0YXRpYyB2b2lkIF9fY29udGV4dF91bnBpbl9wcGd0dChz dHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQogCQlnZW42X3BwZ3R0X3VucGluKHBwZ3R0KTsK IH0KIAotc3RhdGljIGludCBfX2NvbnRleHRfcGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkK LXsKLQlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKLQlpbnQgZXJyOwotCi0Jdm1hID0gY2UtPnN0YXRl OwotCWlmICghdm1hKQotCQlyZXR1cm4gMDsKLQotCS8qCi0JICogQ2xlYXIgdGhpcyBwYWdlIG91 dCBvZiBhbnkgQ1BVIGNhY2hlcyBmb3IgY29oZXJlbnQgc3dhcC1pbi9vdXQuCi0JICogV2Ugb25s eSB3YW50IHRvIGRvIHRoaXMgb24gdGhlIGZpcnN0IGJpbmQgc28gdGhhdCB3ZSBkbyBub3Qgc3Rh bGwKLQkgKiBvbiBhbiBhY3RpdmUgY29udGV4dCAod2hpY2ggYnkgbmF0dXJlIGlzIGFscmVhZHkg b24gdGhlIEdQVSkuCi0JICovCi0JaWYgKCEodm1hLT5mbGFncyAmIEk5MTVfVk1BX0dMT0JBTF9C SU5EKSkgewotCQlpOTE1X2dlbV9vYmplY3RfbG9jayh2bWEtPm9iaik7Ci0JCWVyciA9IGk5MTVf Z2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbih2bWEtPm9iaiwgdHJ1ZSk7Ci0JCWk5MTVfZ2Vt X29iamVjdF91bmxvY2sodm1hLT5vYmopOwotCQlpZiAoZXJyKQotCQkJcmV0dXJuIGVycjsKLQl9 Ci0KLQllcnIgPSBpOTE1X3ZtYV9waW4odm1hLCAwLCAwLCBQSU5fR0xPQkFMIHwgUElOX0hJR0gp OwotCWlmIChlcnIpCi0JCXJldHVybiBlcnI7Ci0KLQkvKgotCSAqIEFuZCBtYXJrIGlzIGFzIGEg Z2xvYmFsbHkgcGlubmVkIG9iamVjdCB0byBsZXQgdGhlIHNocmlua2VyIGtub3cKLQkgKiBpdCBj YW5ub3QgcmVjbGFpbSB0aGUgb2JqZWN0IHVudGlsIHdlIHJlbGVhc2UgaXQuCi0JICovCi0Jdm1h LT5vYmotPnBpbl9nbG9iYWwrKzsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZCBfX2Nv bnRleHRfdW5waW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQotewotCXN0cnVjdCBpOTE1X3Zt YSAqdm1hOwotCi0Jdm1hID0gY2UtPnN0YXRlOwotCWlmICghdm1hKQotCQlyZXR1cm47Ci0KLQl2 bWEtPm9iai0+cGluX2dsb2JhbC0tOwotCWk5MTVfdm1hX3VucGluKHZtYSk7Ci19Ci0KIHN0YXRp YyB2b2lkIHJpbmdfY29udGV4dF91bnBpbihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiB7CiAJ X19jb250ZXh0X3VucGluX3BwZ3R0KGNlLT5nZW1fY29udGV4dCk7Ci0JX19jb250ZXh0X3VucGlu KGNlKTsKIH0KIAogc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqCkBAIC0xNTI2LDE4ICsxNDc4LDE4 IEBAIHN0YXRpYyBpbnQgcmluZ19jb250ZXh0X3BpbihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2Up CiAJCWNlLT5zdGF0ZSA9IHZtYTsKIAl9CiAKLQllcnIgPSBfX2NvbnRleHRfcGluKGNlKTsKKwll cnIgPSBpbnRlbF9jb250ZXh0X2FjdGl2ZShjZSwgUElOX0hJR0gpOwogCWlmIChlcnIpCiAJCXJl dHVybiBlcnI7CiAKIAllcnIgPSBfX2NvbnRleHRfcGluX3BwZ3R0KGNlLT5nZW1fY29udGV4dCk7 CiAJaWYgKGVycikKLQkJZ290byBlcnJfdW5waW47CisJCWdvdG8gZXJyX2FjdGl2ZTsKIAogCXJl dHVybiAwOwogCi1lcnJfdW5waW46Ci0JX19jb250ZXh0X3VucGluKGNlKTsKK2Vycl9hY3RpdmU6 CisJaW50ZWxfY29udGV4dF9pbmFjdGl2ZShjZSk7CiAJcmV0dXJuIGVycjsKIH0KIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCmluZGV4IGEwMmM5MmRhYzVkYS4uYTkwY2U5 MjU2OTZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCkBAIC00NDYs OCArNDQ2LDYgQEAgdm9pZCBpbnRlbF9lbmdpbmVzX3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1LCBib29sIGZvcmNlKTsKIGJvb2wgaW50ZWxfZW5naW5lX2lzX2lkbGUoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIGJvb2wgaW50ZWxfZW5naW5lc19hcmVfaWRs ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogCi12b2lkIGludGVsX2VuZ2lu ZV9sb3N0X2NvbnRleHQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKLQogdm9pZCBp bnRlbF9lbmdpbmVzX3Bhcmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwogdm9pZCBp bnRlbF9lbmdpbmVzX3VucGFyayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7CiAKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZW5naW5lLmMKaW5kZXggOTMxYTBk ZTNjMDQ4Li4wYjEzZDI4YWRlNjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9tb2NrX2VuZ2luZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9tb2NrX2VuZ2luZS5jCkBAIC0xNDQsMTIgKzE0NCwxOCBAQCBzdGF0aWMgdm9pZCBtb2NrX2Nv bnRleHRfZGVzdHJveShzdHJ1Y3Qga3JlZiAqcmVmKQogCiBzdGF0aWMgaW50IG1vY2tfY29udGV4 dF9waW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQogeworCWludCByZXQ7CisKIAlpZiAoIWNl LT5yaW5nKSB7CiAJCWNlLT5yaW5nID0gbW9ja19yaW5nKGNlLT5lbmdpbmUpOwogCQlpZiAoIWNl LT5yaW5nKQogCQkJcmV0dXJuIC1FTk9NRU07CiAJfQogCisJcmV0ID0gaW50ZWxfY29udGV4dF9h Y3RpdmUoY2UsIFBJTl9ISUdIKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCiAJbW9ja190 aW1lbGluZV9waW4oY2UtPnJpbmctPnRpbWVsaW5lKTsKIAlyZXR1cm4gMDsKIH0KQEAgLTMxMSwx NCArMzE3LDkgQEAgdm9pZCBtb2NrX2VuZ2luZV9mcmVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKIHsKIAlzdHJ1Y3QgbW9ja19lbmdpbmUgKm1vY2sgPQogCQljb250YWluZXJfb2Yo ZW5naW5lLCB0eXBlb2YoKm1vY2spLCBiYXNlKTsKLQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7 CiAKIAlHRU1fQlVHX09OKHRpbWVyX3BlbmRpbmcoJm1vY2stPmh3X2RlbGF5KSk7CiAKLQljZSA9 IGZldGNoX2FuZF96ZXJvKCZlbmdpbmUtPmxhc3RfcmV0aXJlZF9jb250ZXh0KTsKLQlpZiAoY2Up Ci0JCWludGVsX2NvbnRleHRfdW5waW4oY2UpOwotCiAJaW50ZWxfY29udGV4dF91bnBpbihlbmdp bmUtPmtlcm5lbF9jb250ZXh0KTsKIAogCWludGVsX2VuZ2luZV9maW5pX2JyZWFkY3J1bWJzKGVu Z2luZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19n ZW1fZGV2aWNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2 aWNlLmMKaW5kZXggMzdjOWE1NzA2ZjY5Li43YThhOWFmMmM0YTAgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2UuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMKQEAgLTU2LDcgKzU2LDYg QEAgc3RhdGljIHZvaWQgbW9ja19kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQogCiAJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CiAJbW9ja19kZXZpY2Vf Zmx1c2goaTkxNSk7Ci0JaTkxNV9nZW1fY29udGV4dHNfbG9zdChpOTE1KTsKIAltdXRleF91bmxv Y2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCiAJZHJhaW5fZGVsYXllZF93b3JrKCZpOTE1 LT5ndC5yZXRpcmVfd29yayk7CkBAIC0xMTMsNyArMTEyLDEyIEBAIHN0YXRpYyB2b2lkIG1vY2tf aWRsZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1ID0KIAkJY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqaTkxNSks IGd0LmlkbGVfd29yay53b3JrKTsKIAotCWk5MTUtPmd0LmFjdGl2ZV9lbmdpbmVzID0gMDsKKwlt dXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwlpZiAoIWk5MTUtPmd0LmFjdGl2 ZV9yZXF1ZXN0cykgeworCQljYWxsX2lkbGVfYmFycmllcnMoaTkxNSk7CisJCWk5MTUtPmd0LmFj dGl2ZV9lbmdpbmVzID0gMDsKKwl9CisJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKIH0KIAogc3RhdGljIGludCBwbV9kb21haW5fcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRl dikKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4