From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 10/22] drm/i915: Separate GEM context construction and registration to userspace Date: Mon, 18 Mar 2019 09:51:52 +0000 Message-ID: <20190318095204.9913-10-chris@chris-wilson.co.uk> References: <20190318095204.9913-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 2213D896A5 for ; Mon, 18 Mar 2019 09:52:24 +0000 (UTC) In-Reply-To: <20190318095204.9913-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 SW4gbGF0ZXIgcGF0Y2hlcywgaXQgYmVjYW1lIGFwcGFyZW50IHRoYXQgdXNlcnNwYWNlIGNhbiBz ZWUgYSBwYXJ0aWFsbHkKY29uc3RydWN0ZWQgR0VNIGNvbnRleHQgYW5kIGJlZ2luIHVzaW5nIGl0 IGJlZm9yZSBpdCB3YXMgcmVhZHksIHRvIG11Y2gKaGlsYXJpdHkuIENsb3NlIHRoaXMgd2luZG93 IG9mIG9wcG9ydHVuaXR5IGJ5IGxpZnRpbmcgdGhlIHJlZ2lzdHJhdGlvbiBvZgp0aGUgY29udGV4 dCB3aXRoIHVzZXJzcGFjZSAodGhlIGluc2VydGlvbiBvZiB0aGUgY29udGV4dCBpbnRvIHRoZSBm aWxwJ3MKaWRyKSB0byB0aGUgdmVyeSBlbmQgb2YgdGhlIENPTlRFWFRfQ1JFQVRFIGlvY3RsLgoK U2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNj OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgotLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyAgICAgICB8IDE0MyArKysrKysrKysrKy0t LS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgICAgICAgICB8ICAg NyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggICAgICAgICAgIHwgICA4 ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jICAgfCAgIDIg Ky0KIC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYyB8ICAxMiAr LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2d0dC5jIHwgICAyICst CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMgfCAgMTcgKyst CiA3IGZpbGVzIGNoYW5nZWQsIDExNiBpbnNlcnRpb25zKCspLCA3NSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXggZDc3NmQ0MzcwN2UwLi41 ZGYzZDQyM2VjNmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Nv bnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKQEAg LTMzNywxNSArMzM3LDEzIEBAIHN0YXRpYyB1MzIgZGVmYXVsdF9kZXNjX3RlbXBsYXRlKGNvbnN0 IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogfQogCiBzdGF0aWMgc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKgotX19jcmVhdGVfaHdfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCi0JCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3By aXYpCitfX2NyZWF0ZV9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK IHsKIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OwotCWludCByZXQ7CiAJaW50IGk7CiAK IAljdHggPSBremFsbG9jKHNpemVvZigqY3R4KSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKGN0eCA9PSBO VUxMKQorCWlmICghY3R4KQogCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKIAogCWtyZWZfaW5p dCgmY3R4LT5yZWYpOwpAQCAtMzYyLDI5ICszNjAsNiBAQCBfX2NyZWF0ZV9od19jb250ZXh0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlJTklUX0xJU1RfSEVBRCgmY3R4LT5o YW5kbGVzX2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZjdHgtPmh3X2lkX2xpbmspOwogCi0JLyog RGVmYXVsdCBjb250ZXh0IHdpbGwgbmV2ZXIgaGF2ZSBhIGZpbGVfcHJpdiAqLwotCXJldCA9IERF RkFVTFRfQ09OVEVYVF9IQU5ETEU7Ci0JaWYgKGZpbGVfcHJpdikgewotCQlyZXQgPSBpZHJfYWxs b2MoJmZpbGVfcHJpdi0+Y29udGV4dF9pZHIsIGN0eCwKLQkJCQlERUZBVUxUX0NPTlRFWFRfSEFO RExFLCAwLCBHRlBfS0VSTkVMKTsKLQkJaWYgKHJldCA8IDApCi0JCQlnb3RvIGVycl9sdXQ7Ci0J fQotCWN0eC0+dXNlcl9oYW5kbGUgPSByZXQ7Ci0KLQljdHgtPmZpbGVfcHJpdiA9IGZpbGVfcHJp djsKLQlpZiAoZmlsZV9wcml2KSB7Ci0JCWN0eC0+cGlkID0gZ2V0X3Rhc2tfcGlkKGN1cnJlbnQs IFBJRFRZUEVfUElEKTsKLQkJY3R4LT5uYW1lID0ga2FzcHJpbnRmKEdGUF9LRVJORUwsICIlc1sl ZF0vJXgiLAotCQkJCSAgICAgIGN1cnJlbnQtPmNvbW0sCi0JCQkJICAgICAgcGlkX25yKGN0eC0+ cGlkKSwKLQkJCQkgICAgICBjdHgtPnVzZXJfaGFuZGxlKTsKLQkJaWYgKCFjdHgtPm5hbWUpIHsK LQkJCXJldCA9IC1FTk9NRU07Ci0JCQlnb3RvIGVycl9waWQ7Ci0JCX0KLQl9Ci0KIAkvKiBOQjog TWFyayBhbGwgc2xpY2VzIGFzIG5lZWRpbmcgYSByZW1hcCBzbyB0aGF0IHdoZW4gdGhlIGNvbnRl eHQgZmlyc3QKIAkgKiBsb2FkcyBpdCB3aWxsIHJlc3RvcmUgd2hhdGV2ZXIgcmVtYXAgc3RhdGUg YWxyZWFkeSBleGlzdHMuIElmIHRoZXJlCiAJICogaXMgbm8gcmVtYXAgaW5mbywgaXQgd2lsbCBi ZSBhIE5PUC4gKi8KQEAgLTQwMSwyNSArMzc2LDEwIEBAIF9fY3JlYXRlX2h3X2NvbnRleHQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQljdHgtPmhhbmdfdGltZXN0YW1wW2ld ID0gamlmZmllcyAtIENPTlRFWFRfRkFTVF9IQU5HX0pJRkZJRVM7CiAKIAlyZXR1cm4gY3R4Owot Ci1lcnJfcGlkOgotCXB1dF9waWQoY3R4LT5waWQpOwotCWlkcl9yZW1vdmUoJmZpbGVfcHJpdi0+ Y29udGV4dF9pZHIsIGN0eC0+dXNlcl9oYW5kbGUpOwotZXJyX2x1dDoKLQljb250ZXh0X2Nsb3Nl KGN0eCk7Ci0JcmV0dXJuIEVSUl9QVFIocmV0KTsKLX0KLQotc3RhdGljIHZvaWQgX19kZXN0cm95 X2h3X2NvbnRleHQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKLQkJCQkgc3RydWN0IGRy bV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2KQotewotCWlkcl9yZW1vdmUoJmZpbGVfcHJp di0+Y29udGV4dF9pZHIsIGN0eC0+dXNlcl9oYW5kbGUpOwotCWNvbnRleHRfY2xvc2UoY3R4KTsK IH0KIAogc3RhdGljIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICoKLWk5MTVfZ2VtX2NyZWF0ZV9j b250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCXN0cnVjdCBkcm1f aTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdikKK2k5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAlzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqY3R4OwogCkBAIC00MjgsMTggKzM4OCwxOCBAQCBpOTE1X2dlbV9jcmVhdGVfY29udGV4 dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJLyogUmVhcCB0aGUgbW9zdCBz dGFsZSBjb250ZXh0ICovCiAJY29udGV4dHNfZnJlZV9maXJzdChkZXZfcHJpdik7CiAKLQljdHgg PSBfX2NyZWF0ZV9od19jb250ZXh0KGRldl9wcml2LCBmaWxlX3ByaXYpOworCWN0eCA9IF9fY3Jl YXRlX2NvbnRleHQoZGV2X3ByaXYpOwogCWlmIChJU19FUlIoY3R4KSkKIAkJcmV0dXJuIGN0eDsK IAogCWlmIChIQVNfRlVMTF9QUEdUVChkZXZfcHJpdikpIHsKIAkJc3RydWN0IGk5MTVfaHdfcHBn dHQgKnBwZ3R0OwogCi0JCXBwZ3R0ID0gaTkxNV9wcGd0dF9jcmVhdGUoZGV2X3ByaXYsIGZpbGVf cHJpdik7CisJCXBwZ3R0ID0gaTkxNV9wcGd0dF9jcmVhdGUoZGV2X3ByaXYpOwogCQlpZiAoSVNf RVJSKHBwZ3R0KSkgewogCQkJRFJNX0RFQlVHX0RSSVZFUigiUFBHVFQgc2V0dXAgZmFpbGVkICgl bGQpXG4iLAogCQkJCQkgUFRSX0VSUihwcGd0dCkpOwotCQkJX19kZXN0cm95X2h3X2NvbnRleHQo Y3R4LCBmaWxlX3ByaXYpOworCQkJY29udGV4dF9jbG9zZShjdHgpOwogCQkJcmV0dXJuIEVSUl9D QVNUKHBwZ3R0KTsKIAkJfQogCkBAIC00NzUsNyArNDM1LDcgQEAgaTkxNV9nZW1fY29udGV4dF9j cmVhdGVfZ3Z0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJaWYgKHJldCkKIAkJcmV0dXJuIEVS Ul9QVFIocmV0KTsKIAotCWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KHRvX2k5MTUoZGV2 KSwgTlVMTCk7CisJY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQodG9faTkxNShkZXYpKTsK IAlpZiAoSVNfRVJSKGN0eCkpCiAJCWdvdG8gb3V0OwogCkBAIC01MTEsNyArNDcxLDcgQEAgaTkx NV9nZW1fY29udGV4dF9jcmVhdGVfa2VybmVsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LCBpbnQgcHJpbykKIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OwogCWludCBlcnI7CiAK LQljdHggPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBOVUxMKTsKKwljdHggPSBpOTE1 X2dlbV9jcmVhdGVfY29udGV4dChpOTE1KTsKIAlpZiAoSVNfRVJSKGN0eCkpCiAJCXJldHVybiBj dHg7CiAKQEAgLTYyNSwyNSArNTg1LDc5IEBAIHN0YXRpYyBpbnQgY29udGV4dF9pZHJfY2xlYW51 cChpbnQgaWQsIHZvaWQgKnAsIHZvaWQgKmRhdGEpCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBp bnQgZ2VtX2NvbnRleHRfcmVnaXN0ZXIoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJ CQlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmcHJpdikKK3sKKwlpbnQgcmV0OworCisJ Y3R4LT5waWQgPSBnZXRfdGFza19waWQoY3VycmVudCwgUElEVFlQRV9QSUQpOworCisJaWYgKGN0 eC0+cHBndHQpCisJCWN0eC0+cHBndHQtPnZtLmZpbGUgPSBmcHJpdjsKKworCS8qIEFuZCAobmVh cmx5KSBmaW5hbGx5IGV4cG9zZSBvdXJzZWx2ZXMgdG8gdXNlcnNwYWNlIHZpYSB0aGUgaWRyICov CisJcmV0ID0gaWRyX2FsbG9jKCZmcHJpdi0+Y29udGV4dF9pZHIsIGN0eCwKKwkJCURFRkFVTFRf Q09OVEVYVF9IQU5ETEUsIDAsIEdGUF9LRVJORUwpOworCWlmIChyZXQgPCAwKQorCQlnb3RvIGVy cl9waWQ7CisKKwljdHgtPmZpbGVfcHJpdiA9IGZwcml2OworCWN0eC0+dXNlcl9oYW5kbGUgPSBy ZXQ7CisKKwljdHgtPm5hbWUgPSBrYXNwcmludGYoR0ZQX0tFUk5FTCwgIiVzWyVkXS8leCIsCisJ CQkgICAgICBjdXJyZW50LT5jb21tLAorCQkJICAgICAgcGlkX25yKGN0eC0+cGlkKSwKKwkJCSAg ICAgIGN0eC0+dXNlcl9oYW5kbGUpOworCWlmICghY3R4LT5uYW1lKSB7CisJCXJldCA9IC1FTk9N RU07CisJCWdvdG8gZXJyX2lkcjsKKwl9CisKKwlyZXR1cm4gMDsKKworZXJyX2lkcjoKKwlpZHJf cmVtb3ZlKCZmcHJpdi0+Y29udGV4dF9pZHIsIGN0eC0+dXNlcl9oYW5kbGUpOworCWN0eC0+Zmls ZV9wcml2ID0gTlVMTDsKK2Vycl9waWQ6CisJcHV0X3BpZChjdHgtPnBpZCk7CisJY3R4LT5waWQg PSBOVUxMOworCXJldHVybiByZXQ7Cit9CisKIGludCBpOTE1X2dlbV9jb250ZXh0X29wZW4oc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJCQkgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkK IHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXYgPSBmaWxlLT5kcml2 ZXJfcHJpdjsKIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OworCWludCBlcnI7CiAKIAlp ZHJfaW5pdCgmZmlsZV9wcml2LT5jb250ZXh0X2lkcik7CiAKIAltdXRleF9sb2NrKCZpOTE1LT5k cm0uc3RydWN0X211dGV4KTsKLQljdHggPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBm aWxlX3ByaXYpOwotCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisKKwlj dHggPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1KTsKIAlpZiAoSVNfRVJSKGN0eCkpIHsK LQkJaWRyX2Rlc3Ryb3koJmZpbGVfcHJpdi0+Y29udGV4dF9pZHIpOwotCQlyZXR1cm4gUFRSX0VS UihjdHgpOworCQllcnIgPSBQVFJfRVJSKGN0eCk7CisJCWdvdG8gZXJyOwogCX0KIAorCWVyciA9 IGdlbV9jb250ZXh0X3JlZ2lzdGVyKGN0eCwgZmlsZV9wcml2KTsKKwlpZiAoZXJyKQorCQlnb3Rv IGVycl9jdHg7CisKKwlHRU1fQlVHX09OKGN0eC0+dXNlcl9oYW5kbGUgIT0gREVGQVVMVF9DT05U RVhUX0hBTkRMRSk7CiAJR0VNX0JVR19PTihpOTE1X2dlbV9jb250ZXh0X2lzX2tlcm5lbChjdHgp KTsKIAorCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisKIAlyZXR1cm4g MDsKKworZXJyX2N0eDoKKwljb250ZXh0X2Nsb3NlKGN0eCk7CitlcnI6CisJbXV0ZXhfdW5sb2Nr KCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwlpZHJfZGVzdHJveSgmZmlsZV9wcml2LT5jb250 ZXh0X2lkcik7CisJcmV0dXJuIFBUUl9FUlIoY3R4KTsKIH0KIAogdm9pZCBpOTE1X2dlbV9jb250 ZXh0X2Nsb3NlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKQEAgLTgzNSwxNyArODQ5LDI4IEBAIGlu dCBpOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2 b2lkICpkYXRhLAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQljdHggPSBpOTE1X2dlbV9j cmVhdGVfY29udGV4dChpOTE1LCBmaWxlX3ByaXYpOwotCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1 Y3RfbXV0ZXgpOwotCWlmIChJU19FUlIoY3R4KSkKLQkJcmV0dXJuIFBUUl9FUlIoY3R4KTsKKwlj dHggPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1KTsKKwlpZiAoSVNfRVJSKGN0eCkpIHsK KwkJcmV0ID0gUFRSX0VSUihjdHgpOworCQlnb3RvIGVycl91bmxvY2s7CisJfQogCi0JR0VNX0JV R19PTihpOTE1X2dlbV9jb250ZXh0X2lzX2tlcm5lbChjdHgpKTsKKwlyZXQgPSBnZW1fY29udGV4 dF9yZWdpc3RlcihjdHgsIGZpbGVfcHJpdik7CisJaWYgKHJldCkKKwkJZ290byBlcnJfY3R4Owor CisJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CiAKIAlhcmdzLT5jdHhfaWQgPSBj dHgtPnVzZXJfaGFuZGxlOwogCURSTV9ERUJVRygiSFcgY29udGV4dCAlZCBjcmVhdGVkXG4iLCBh cmdzLT5jdHhfaWQpOwogCiAJcmV0dXJuIDA7CisKK2Vycl9jdHg6CisJY29udGV4dF9jbG9zZShj dHgpOworZXJyX3VubG9jazoKKwltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwly ZXR1cm4gcmV0OwogfQogCiBpbnQgaTkxNV9nZW1fY29udGV4dF9kZXN0cm95X2lvY3RsKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCkBAIC04NzAsNyArODk1LDkgQEAgaW50IGk5 MTVfZ2VtX2NvbnRleHRfZGVzdHJveV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lk ICpkYXRhLAogCWlmIChyZXQpCiAJCWdvdG8gb3V0OwogCi0JX19kZXN0cm95X2h3X2NvbnRleHQo Y3R4LCBmaWxlX3ByaXYpOworCWlkcl9yZW1vdmUoJmZpbGVfcHJpdi0+Y29udGV4dF9pZHIsIGN0 eC0+dXNlcl9oYW5kbGUpOworCWNvbnRleHRfY2xvc2UoY3R4KTsKKwogCW11dGV4X3VubG9jaygm ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCiBvdXQ6CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5j CmluZGV4IGI4MDU1YzhkNGU3MS4uYjllMGUzYTAwMjIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuYwpAQCAtMjA2OSw4ICsyMDY5LDcgQEAgX19od19wcGd0dF9jcmVhdGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiB9CiAKIHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICoKLWk5 MTVfcHBndHRfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAotCQkgIHN0cnVj dCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZwcml2KQoraTkxNV9wcGd0dF9jcmVhdGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiB7CiAJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0 OwogCkBAIC0yMDc4LDggKzIwNzcsNiBAQCBpOTE1X3BwZ3R0X2NyZWF0ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwKIAlpZiAoSVNfRVJSKHBwZ3R0KSkKIAkJcmV0dXJuIHBwZ3R0Owog Ci0JcHBndHQtPnZtLmZpbGUgPSBmcHJpdjsKLQogCXRyYWNlX2k5MTVfcHBndHRfY3JlYXRlKCZw cGd0dC0+dm0pOwogCiAJcmV0dXJuIHBwZ3R0OwpAQCAtMjY1Nyw3ICsyNjU0LDcgQEAgaW50IGk5 MTVfZ2VtX2luaXRfYWxpYXNpbmdfcHBndHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUp CiAJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0OwogCWludCBlcnI7CiAKLQlwcGd0dCA9IGk5 MTVfcHBndHRfY3JlYXRlKGk5MTUsIEVSUl9QVFIoLUVQRVJNKSk7CisJcHBndHQgPSBpOTE1X3Bw Z3R0X2NyZWF0ZShpOTE1KTsKIAlpZiAoSVNfRVJSKHBwZ3R0KSkKIAkJcmV0dXJuIFBUUl9FUlIo cHBndHQpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCmluZGV4IDM1ZjIxYTJhZTM2 Yy4uYjc2YWI0YzJhMGU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaApAQCAtNjAz LDE1ICs2MDMsMTcgQEAgaW50IGk5MTVfZ2VtX2luaXRfZ2d0dChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBpOTE1X2dndHRfY2xlYW51cF9odyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogCiBpbnQgaTkxNV9wcGd0dF9pbml0X2h3KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Ci12b2lkIGk5MTVfcHBndHRfcmVsZWFzZShzdHJ1 Y3Qga3JlZiAqa3JlZik7Ci1zdHJ1Y3QgaTkxNV9od19wcGd0dCAqaTkxNV9wcGd0dF9jcmVhdGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJCQlzdHJ1Y3QgZHJtX2k5MTVf ZmlsZV9wcml2YXRlICpmcHJpdik7CisKK3N0cnVjdCBpOTE1X2h3X3BwZ3R0ICppOTE1X3BwZ3R0 X2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBpOTE1X3Bw Z3R0X2Nsb3NlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKTsKK3ZvaWQgaTkxNV9wcGd0 dF9yZWxlYXNlKHN0cnVjdCBrcmVmICprcmVmKTsKKwogc3RhdGljIGlubGluZSB2b2lkIGk5MTVf cHBndHRfZ2V0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKIHsKIAlpZiAocHBndHQpCiAJ CWtyZWZfZ2V0KCZwcGd0dC0+cmVmKTsKIH0KKwogc3RhdGljIGlubGluZSB2b2lkIGk5MTVfcHBn dHRfcHV0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKIHsKIAlpZiAocHBndHQpCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYwppbmRleCAyMThjZmMzNjFk ZTMuLmM1YzhiYTZjMDU5ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2h1Z2VfcGFnZXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaHVn ZV9wYWdlcy5jCkBAIC0xNzEwLDcgKzE3MTAsNyBAQCBpbnQgaTkxNV9nZW1faHVnZV9wYWdlX21v Y2tfc2VsZnRlc3RzKHZvaWQpCiAJbWt3cml0ZV9kZXZpY2VfaW5mbyhkZXZfcHJpdiktPnBwZ3R0 X3NpemUgPSA0ODsKIAogCW11dGV4X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsK LQlwcGd0dCA9IGk5MTVfcHBndHRfY3JlYXRlKGRldl9wcml2LCBFUlJfUFRSKC1FTk9ERVYpKTsK KwlwcGd0dCA9IGk5MTVfcHBndHRfY3JlYXRlKGRldl9wcml2KTsKIAlpZiAoSVNfRVJSKHBwZ3R0 KSkgewogCQllcnIgPSBQVFJfRVJSKHBwZ3R0KTsKIAkJZ290byBvdXRfdW5sb2NrOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXgg ZjE4Yzc4ZWJmZjA3Li40ZGM5NmUyOGQ4OWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYwpAQCAtNzYsNyArNzYsNyBAQCBzdGF0aWMg aW50IGxpdmVfbm9wX3N3aXRjaCh2b2lkICphcmcpCiAJfQogCiAJZm9yIChuID0gMDsgbiA8IG5j dHg7IG4rKykgewotCQljdHhbbl0gPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBmaWxl LT5kcml2ZXJfcHJpdik7CisJCWN0eFtuXSA9IGxpdmVfY29udGV4dChpOTE1LCBmaWxlKTsKIAkJ aWYgKElTX0VSUihjdHhbbl0pKSB7CiAJCQllcnIgPSBQVFJfRVJSKGN0eFtuXSk7CiAJCQlnb3Rv IG91dF91bmxvY2s7CkBAIC01MTQsNyArNTE0LDcgQEAgc3RhdGljIGludCBpZ3RfY3R4X2V4ZWMo dm9pZCAqYXJnKQogCQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OwogCQl1bnNpZ25lZCBp bnQgaWQ7CiAKLQkJY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZS0+ZHJp dmVyX3ByaXYpOworCQljdHggPSBsaXZlX2NvbnRleHQoaTkxNSwgZmlsZSk7CiAJCWlmIChJU19F UlIoY3R4KSkgewogCQkJZXJyID0gUFRSX0VSUihjdHgpOwogCQkJZ290byBvdXRfdW5sb2NrOwpA QCAtOTYwLDcgKzk2MCw3IEBAIF9faWd0X2N0eF9zc2V1KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1LAogCiAJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CiAKLQljdHgg PSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBmaWxlLT5kcml2ZXJfcHJpdik7CisJY3R4 ID0gbGl2ZV9jb250ZXh0KGk5MTUsIGZpbGUpOwogCWlmIChJU19FUlIoY3R4KSkgewogCQlyZXQg PSBQVFJfRVJSKGN0eCk7CiAJCWdvdG8gb3V0X3VubG9jazsKQEAgLTEwNzAsNyArMTA3MCw3IEBA IHN0YXRpYyBpbnQgaWd0X2N0eF9yZWFkb25seSh2b2lkICphcmcpCiAJaWYgKGVycikKIAkJZ290 byBvdXRfdW5sb2NrOwogCi0JY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmls ZS0+ZHJpdmVyX3ByaXYpOworCWN0eCA9IGxpdmVfY29udGV4dChpOTE1LCBmaWxlKTsKIAlpZiAo SVNfRVJSKGN0eCkpIHsKIAkJZXJyID0gUFRSX0VSUihjdHgpOwogCQlnb3RvIG91dF91bmxvY2s7 CkBAIC0xMzkwLDEzICsxMzkwLDEzIEBAIHN0YXRpYyBpbnQgaWd0X3ZtX2lzb2xhdGlvbih2b2lk ICphcmcpCiAJaWYgKGVycikKIAkJZ290byBvdXRfdW5sb2NrOwogCi0JY3R4X2EgPSBpOTE1X2dl bV9jcmVhdGVfY29udGV4dChpOTE1LCBmaWxlLT5kcml2ZXJfcHJpdik7CisJY3R4X2EgPSBsaXZl X2NvbnRleHQoaTkxNSwgZmlsZSk7CiAJaWYgKElTX0VSUihjdHhfYSkpIHsKIAkJZXJyID0gUFRS X0VSUihjdHhfYSk7CiAJCWdvdG8gb3V0X3VubG9jazsKIAl9CiAKLQljdHhfYiA9IGk5MTVfZ2Vt X2NyZWF0ZV9jb250ZXh0KGk5MTUsIGZpbGUtPmRyaXZlcl9wcml2KTsKKwljdHhfYiA9IGxpdmVf Y29udGV4dChpOTE1LCBmaWxlKTsKIAlpZiAoSVNfRVJSKGN0eF9iKSkgewogCQllcnIgPSBQVFJf RVJSKGN0eF9iKTsKIAkJZ290byBvdXRfdW5sb2NrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2k5MTVfZ2VtX2d0dC5jCmluZGV4IDgyNmZkNTFjMzMxZS4uMDEwODRmNmI0ZmI3 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZ3R0 LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2d0dC5jCkBA IC0xMDEwLDcgKzEwMTAsNyBAQCBzdGF0aWMgaW50IGV4ZXJjaXNlX3BwZ3R0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJcmV0dXJuIFBUUl9FUlIoZmlsZSk7CiAKIAltdXRl eF9sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Ci0JcHBndHQgPSBpOTE1X3BwZ3R0 X2NyZWF0ZShkZXZfcHJpdiwgZmlsZS0+ZHJpdmVyX3ByaXYpOworCXBwZ3R0ID0gaTkxNV9wcGd0 dF9jcmVhdGUoZGV2X3ByaXYpOwogCWlmIChJU19FUlIocHBndHQpKSB7CiAJCWVyciA9IFBUUl9F UlIocHBndHQpOwogCQlnb3RvIG91dF91bmxvY2s7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvbW9ja19jb250ZXh0LmMKaW5kZXggOGVmYTY4OTJjNmNkLi4xY2M4YmU3MzI0MzUg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMKQEAg LTg4LDkgKzg4LDI0IEBAIHZvaWQgbW9ja19pbml0X2NvbnRleHRzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQogc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKgogbGl2ZV9jb250ZXh0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCiB7CisJ c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKKwlpbnQgZXJyOworCiAJbG9ja2RlcF9hc3Nl cnRfaGVsZCgmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CiAKLQlyZXR1cm4gaTkxNV9nZW1fY3Jl YXRlX2NvbnRleHQoaTkxNSwgZmlsZS0+ZHJpdmVyX3ByaXYpOworCWN0eCA9IGk5MTVfZ2VtX2Ny ZWF0ZV9jb250ZXh0KGk5MTUpOworCWlmIChJU19FUlIoY3R4KSkKKwkJcmV0dXJuIGN0eDsKKwor CWVyciA9IGdlbV9jb250ZXh0X3JlZ2lzdGVyKGN0eCwgZmlsZS0+ZHJpdmVyX3ByaXYpOworCWlm IChlcnIpCisJCWdvdG8gZXJyX2N0eDsKKworCXJldHVybiBjdHg7CisKK2Vycl9jdHg6CisJaTkx NV9nZW1fY29udGV4dF9wdXQoY3R4KTsKKwlyZXR1cm4gRVJSX1BUUihlcnIpOwogfQogCiBzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqCi0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeA==