From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 25/33] drm/i915: Move object close under its own lock Date: Mon, 20 May 2019 09:01:19 +0100 Message-ID: <20190520080127.18255-25-chris@chris-wilson.co.uk> References: <20190520080127.18255-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 EFDFE891F2 for ; Mon, 20 May 2019 08:02:04 +0000 (UTC) In-Reply-To: <20190520080127.18255-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 VXNlIGk5MTVfZ2VtX29iamVjdF9sb2NrKCkgdG8gZ3VhcmQgdGhlIExVVCBhbmQgYWN0aXZlIHJl ZmVyZW5jZSB0bwphbGxvdyB1cyB0byBicmVhayBmcmVlIG9mIHN0cnVjdF9tdXRleCBmb3IgaGFu ZGxpbmcgR0VNX0NMT1NFLgoKVGVzdGNhc2U6IGlndC9nZW1fY2xvc2VfcmFjZQpUZXN0Y2FzZTog aWd0L2dlbV9leGVjX3BhcmFsbGVsClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNA Y2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dl bV9jb250ZXh0LmMgICB8IDc2ICsrKysrKysrKystLS0tLS0tLS0KIC4uLi9ncHUvZHJtL2k5MTUv Z2VtL2k5MTVfZ2VtX2NvbnRleHRfdHlwZXMuaCB8IDEyICstLQogLi4uL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jICAgIHwgMjMgKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmMgICAgfCAzOCArKysrKystLS0tCiAuLi4vZ3B1L2Ry bS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3RfdHlwZXMuaCAgfCAgMSAtCiAuLi4vZ3B1L2RybS9p OTE1L2dlbS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMgfCAgMSAtCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgICAgfCAgNCArLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYyAgICAgICAgICAgICAgIHwgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZ3R0LmMgICAgICAgICAgIHwgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV90aW1lbGluZS5jICAgICAgICAgIHwgMTMgKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV92bWEuYyAgICAgICAgICAgICAgIHwgNDIgKysrKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV92bWEuaCAgICAgICAgICAgICAgIHwgMTcgKystLS0KIC4uLi9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jICB8ICAxICsKIDEzIGZpbGVzIGNoYW5nZWQsIDEz MiBpbnNlcnRpb25zKCspLCA5OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z2VtL2k5MTVfZ2VtX2NvbnRleHQuYwppbmRleCA1MDE2YTNlMWY4NjMuLmE5NjA4ZDljZWQ2YSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jCkBAIC05NSwy NCArOTUsNDIgQEAgdm9pZCBpOTE1X2x1dF9oYW5kbGVfZnJlZShzdHJ1Y3QgaTkxNV9sdXRfaGFu ZGxlICpsdXQpCiAKIHN0YXRpYyB2b2lkIGx1dF9jbG9zZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4 dCAqY3R4KQogewotCXN0cnVjdCBpOTE1X2x1dF9oYW5kbGUgKmx1dCwgKmxuOwogCXN0cnVjdCBy YWRpeF90cmVlX2l0ZXIgaXRlcjsKIAl2b2lkIF9fcmN1ICoqc2xvdDsKIAotCWxpc3RfZm9yX2Vh Y2hfZW50cnlfc2FmZShsdXQsIGxuLCAmY3R4LT5oYW5kbGVzX2xpc3QsIGN0eF9saW5rKSB7Ci0J CWxpc3RfZGVsKCZsdXQtPm9ial9saW5rKTsKLQkJaTkxNV9sdXRfaGFuZGxlX2ZyZWUobHV0KTsK LQl9Ci0JSU5JVF9MSVNUX0hFQUQoJmN0eC0+aGFuZGxlc19saXN0KTsKKwlsb2NrZGVwX2Fzc2Vy dF9oZWxkKCZjdHgtPm11dGV4KTsKIAogCXJjdV9yZWFkX2xvY2soKTsKIAlyYWRpeF90cmVlX2Zv cl9lYWNoX3Nsb3Qoc2xvdCwgJmN0eC0+aGFuZGxlc192bWEsICZpdGVyLCAwKSB7CiAJCXN0cnVj dCBpOTE1X3ZtYSAqdm1hID0gcmN1X2RlcmVmZXJlbmNlX3Jhdygqc2xvdCk7Ci0KLQkJcmFkaXhf dHJlZV9pdGVyX2RlbGV0ZSgmY3R4LT5oYW5kbGVzX3ZtYSwgJml0ZXIsIHNsb3QpOwotCi0JCXZt YS0+b3Blbl9jb3VudC0tOwotCQlpOTE1X3ZtYV9wdXQodm1hKTsKKwkJc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiA9IHZtYS0+b2JqOworCQlzdHJ1Y3QgaTkxNV9sdXRfaGFuZGxlICps dXQ7CisJCWJvb2wgZm91bmQgPSBmYWxzZTsKKworCQlyY3VfcmVhZF91bmxvY2soKTsKKwkJaTkx NV9nZW1fb2JqZWN0X2xvY2sob2JqKTsKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShsdXQsICZvYmot Pmx1dF9saXN0LCBvYmpfbGluaykgeworCQkJaWYgKGx1dC0+Y3R4ICE9IGN0eCkKKwkJCQljb250 aW51ZTsKKworCQkJaWYgKGx1dC0+aGFuZGxlICE9IGl0ZXIuaW5kZXgpCisJCQkJY29udGludWU7 CisKKwkJCWxpc3RfZGVsKCZsdXQtPm9ial9saW5rKTsKKwkJCWk5MTVfbHV0X2hhbmRsZV9mcmVl KGx1dCk7CisJCQlmb3VuZCA9IHRydWU7CisJCQlicmVhazsKKwkJfQorCQlpOTE1X2dlbV9vYmpl Y3RfdW5sb2NrKG9iaik7CisJCXJjdV9yZWFkX2xvY2soKTsKKworCQlpZiAoZm91bmQpIHsKKwkJ CXJhZGl4X3RyZWVfaXRlcl9kZWxldGUoJmN0eC0+aGFuZGxlc192bWEsICZpdGVyLCBzbG90KTsK KwkJCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZ2bWEtPm9wZW5fY291bnQpICYmCisJCQkgICAg IWk5MTVfdm1hX2lzX2dndHQodm1hKSkKKwkJCQlpOTE1X3ZtYV9jbG9zZSh2bWEpOworCQkJaTkx NV9nZW1fb2JqZWN0X3B1dChvYmopOworCQl9CiAJfQogCXJjdV9yZWFkX3VubG9jaygpOwogfQpA QCAtMjUwLDE1ICsyNjgsOSBAQCBzdGF0aWMgdm9pZCBmcmVlX2VuZ2luZXMoc3RydWN0IGk5MTVf Z2VtX2VuZ2luZXMgKmUpCiAJX19mcmVlX2VuZ2luZXMoZSwgZS0+bnVtX2VuZ2luZXMpOwogfQog Ci1zdGF0aWMgdm9pZCBmcmVlX2VuZ2luZXNfcmN1KHN0cnVjdCB3b3JrX3N0cnVjdCAqd3JrKQor c3RhdGljIHZvaWQgZnJlZV9lbmdpbmVzX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJjdSkKIHsKLQlz dHJ1Y3QgaTkxNV9nZW1fZW5naW5lcyAqZSA9Ci0JCWNvbnRhaW5lcl9vZih3cmssIHN0cnVjdCBp OTE1X2dlbV9lbmdpbmVzLCByY3Uud29yayk7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUgPSBlLT5pOTE1OwotCi0JbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Ci0J ZnJlZV9lbmdpbmVzKGUpOwotCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7 CisJZnJlZV9lbmdpbmVzKGNvbnRhaW5lcl9vZihyY3UsIHN0cnVjdCBpOTE1X2dlbV9lbmdpbmVz LCByY3UpKTsKIH0KIAogc3RhdGljIHN0cnVjdCBpOTE1X2dlbV9lbmdpbmVzICpkZWZhdWx0X2Vu Z2luZXMoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKQEAgLTI3MSw3ICsyODMsNyBAQCBz dGF0aWMgc3RydWN0IGk5MTVfZ2VtX2VuZ2luZXMgKmRlZmF1bHRfZW5naW5lcyhzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCAqY3R4KQogCWlmICghZSkKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7 CiAKLQllLT5pOTE1ID0gY3R4LT5pOTE1OworCWluaXRfcmN1X2hlYWQoJmUtPnJjdSk7CiAJZm9y X2VhY2hfZW5naW5lKGVuZ2luZSwgY3R4LT5pOTE1LCBpZCkgewogCQlzdHJ1Y3QgaW50ZWxfY29u dGV4dCAqY2U7CiAKQEAgLTM1OSw3ICszNzEsMTAgQEAgdm9pZCBpOTE1X2dlbV9jb250ZXh0X3Jl bGVhc2Uoc3RydWN0IGtyZWYgKnJlZikKIAogc3RhdGljIHZvaWQgY29udGV4dF9jbG9zZShzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQogeworCW11dGV4X2xvY2soJmN0eC0+bXV0ZXgpOwor CiAJaTkxNV9nZW1fY29udGV4dF9zZXRfY2xvc2VkKGN0eCk7CisJY3R4LT5maWxlX3ByaXYgPSBF UlJfUFRSKC1FQkFERik7CiAKIAkvKgogCSAqIFRoaXMgY29udGV4dCB3aWxsIG5ldmVyIGFnYWlu IGJlIGFzc2luZ2VkIHRvIEhXLCBzbyB3ZSBjYW4KQEAgLTM3NCw3ICszODksNyBAQCBzdGF0aWMg dm9pZCBjb250ZXh0X2Nsb3NlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCiAJICovCiAJ bHV0X2Nsb3NlKGN0eCk7CiAKLQljdHgtPmZpbGVfcHJpdiA9IEVSUl9QVFIoLUVCQURGKTsKKwlt dXRleF91bmxvY2soJmN0eC0+bXV0ZXgpOwogCWk5MTVfZ2VtX2NvbnRleHRfcHV0KGN0eCk7CiB9 CiAKQEAgLTQyOSw3ICs0NDQsNiBAQCBfX2NyZWF0ZV9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKIAlSQ1VfSU5JVF9QT0lOVEVSKGN0eC0+ZW5naW5lcywgZSk7CiAK IAlJTklUX1JBRElYX1RSRUUoJmN0eC0+aGFuZGxlc192bWEsIEdGUF9LRVJORUwpOwotCUlOSVRf TElTVF9IRUFEKCZjdHgtPmhhbmRsZXNfbGlzdCk7CiAJSU5JVF9MSVNUX0hFQUQoJmN0eC0+aHdf aWRfbGluayk7CiAKIAkvKiBOQjogTWFyayBhbGwgc2xpY2VzIGFzIG5lZWRpbmcgYSByZW1hcCBz byB0aGF0IHdoZW4gdGhlIGNvbnRleHQgZmlyc3QKQEAgLTc3Miw5ICs3ODYsNyBAQCBpbnQgaTkx NV9nZW1fY29udGV4dF9vcGVuKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCXJldHVy biAwOwogCiBlcnJfY3R4OgotCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwog CWNvbnRleHRfY2xvc2UoY3R4KTsKLQltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0 ZXgpOwogZXJyOgogCWlkcl9kZXN0cm95KCZmaWxlX3ByaXYtPnZtX2lkcik7CiAJaWRyX2Rlc3Ry b3koJmZpbGVfcHJpdi0+Y29udGV4dF9pZHIpOwpAQCAtNzg3LDggKzc5OSw2IEBAIHZvaWQgaTkx NV9nZW1fY29udGV4dF9jbG9zZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCiB7CiAJc3RydWN0IGRy bV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2ID0gZmlsZS0+ZHJpdmVyX3ByaXY7CiAKLQls b2NrZGVwX2Fzc2VydF9oZWxkKCZmaWxlX3ByaXYtPmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4 KTsKLQogCWlkcl9mb3JfZWFjaCgmZmlsZV9wcml2LT5jb250ZXh0X2lkciwgY29udGV4dF9pZHJf Y2xlYW51cCwgTlVMTCk7CiAJaWRyX2Rlc3Ryb3koJmZpbGVfcHJpdi0+Y29udGV4dF9pZHIpOwog CW11dGV4X2Rlc3Ryb3koJmZpbGVfcHJpdi0+Y29udGV4dF9pZHJfbG9jayk7CkBAIC0xMDkzLDcg KzExMDMsOSBAQCBzdGF0aWMgaW50IHNldF9wcGd0dChzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2 YXRlICpmaWxlX3ByaXYsCiAJCWdvdG8gdW5sb2NrOwogCiAJLyogVGVhcmRvd24gdGhlIGV4aXN0 aW5nIG9iajp2bWEgY2FjaGUsIGl0IHdpbGwgaGF2ZSB0byBiZSByZWJ1aWx0LiAqLworCW11dGV4 X2xvY2soJmN0eC0+bXV0ZXgpOwogCWx1dF9jbG9zZShjdHgpOworCW11dGV4X3VubG9jaygmY3R4 LT5tdXRleCk7CiAKIAlvbGQgPSBfX3NldF9wcGd0dChjdHgsIHBwZ3R0KTsKIApAQCAtMTYxMiw3 ICsxNjI0LDcgQEAgc2V0X2VuZ2luZXMoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKIAlp ZiAoIXNldC5lbmdpbmVzKQogCQlyZXR1cm4gLUVOT01FTTsKIAotCXNldC5lbmdpbmVzLT5pOTE1 ID0gY3R4LT5pOTE1OworCWluaXRfcmN1X2hlYWQoJnNldC5lbmdpbmVzLT5yY3UpOwogCWZvciAo biA9IDA7IG4gPCBudW1fZW5naW5lczsgbisrKSB7CiAJCXN0cnVjdCBpOTE1X2VuZ2luZV9jbGFz c19pbnN0YW5jZSBjaTsKIAkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwpAQCAtMTY2 Niw4ICsxNjc4LDcgQEAgc2V0X2VuZ2luZXMoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwK IAlyY3Vfc3dhcF9wcm90ZWN0ZWQoY3R4LT5lbmdpbmVzLCBzZXQuZW5naW5lcywgMSk7CiAJbXV0 ZXhfdW5sb2NrKCZjdHgtPmVuZ2luZXNfbXV0ZXgpOwogCi0JSU5JVF9SQ1VfV09SSygmc2V0LmVu Z2luZXMtPnJjdSwgZnJlZV9lbmdpbmVzX3JjdSk7Ci0JcXVldWVfcmN1X3dvcmsoc3lzdGVtX3dx LCAmc2V0LmVuZ2luZXMtPnJjdSk7CisJY2FsbF9yY3UoJnNldC5lbmdpbmVzLT5yY3UsIGZyZWVf ZW5naW5lc19yY3UpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xODY1LDcgKzE4NzYsNyBAQCBzdGF0 aWMgaW50IGNsb25lX2VuZ2luZXMoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmRzdCwKIAlpZiAo IWNsb25lKQogCQlnb3RvIGVycl91bmxvY2s7CiAKLQljbG9uZS0+aTkxNSA9IGRzdC0+aTkxNTsK Kwlpbml0X3JjdV9oZWFkKCZjbG9uZS0+cmN1KTsKIAlmb3IgKG4gPSAwOyBuIDwgZS0+bnVtX2Vu Z2luZXM7IG4rKykgewogCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CiAKQEAgLTIx MzcsOSArMjE0OCw3IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9pb2N0bChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCXJldHVybiAwOwogCiBlcnJfY3R4OgotCW11 dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKIAljb250ZXh0X2Nsb3NlKGV4dF9kYXRhLmN0 eCk7Ci0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CiAJcmV0dXJuIHJldDsKIH0K IApAQCAtMjE2NCwxMCArMjE3Myw3IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X2Rlc3Ryb3lfaW9j dGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlpZiAoIWN0eCkKIAkJcmV0 dXJuIC1FTk9FTlQ7CiAKLQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CiAJY29udGV4 dF9jbG9zZShjdHgpOwotCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCiAJcmV0 dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dl bV9jb250ZXh0X3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29u dGV4dF90eXBlcy5oCmluZGV4IGZiOTY1ZGVkMjUwOC4uM2RiNzQ0OGI5NzMyIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dF90eXBlcy5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0X3R5cGVzLmgKQEAgLTMw LDggKzMwLDcgQEAgc3RydWN0IGk5MTVfdGltZWxpbmU7CiBzdHJ1Y3QgaW50ZWxfcmluZzsKIAog c3RydWN0IGk5MTVfZ2VtX2VuZ2luZXMgewotCXN0cnVjdCByY3Vfd29yayByY3U7Ci0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTU7CisJc3RydWN0IHJjdV9oZWFkIHJjdTsKIAl1bnNpZ25l ZCBpbnQgbnVtX2VuZ2luZXM7CiAJc3RydWN0IGludGVsX2NvbnRleHQgKmVuZ2luZXNbXTsKIH07 CkBAIC0xOTIsMTcgKzE5MSwxMiBAQCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCB7CiAJLyoqIHJl bWFwX3NsaWNlOiBCaXRtYXNrIG9mIGNhY2hlIGxpbmVzIHRoYXQgbmVlZCByZW1hcHBpbmcgKi8K IAl1OCByZW1hcF9zbGljZTsKIAotCS8qKiBoYW5kbGVzX3ZtYTogcmJ0cmVlIHRvIGxvb2sgdXAg b3VyIGNvbnRleHQgc3BlY2lmaWMgb2JqL3ZtYSBmb3IKKwkvKioKKwkgKiBoYW5kbGVzX3ZtYTog cmJ0cmVlIHRvIGxvb2sgdXAgb3VyIGNvbnRleHQgc3BlY2lmaWMgb2JqL3ZtYSBmb3IKIAkgKiB0 aGUgdXNlciBoYW5kbGUuICh1c2VyIGhhbmRsZXMgYXJlIHBlciBmZCwgYnV0IHRoZSBiaW5kaW5n IGlzCiAJICogcGVyIHZtLCB3aGljaCBtYXkgYmUgb25lIHBlciBjb250ZXh0IG9yIHNoYXJlZCB3 aXRoIHRoZSBnbG9iYWwgR1RUKQogCSAqLwogCXN0cnVjdCByYWRpeF90cmVlX3Jvb3QgaGFuZGxl c192bWE7Ci0KLQkvKiogaGFuZGxlc19saXN0OiByZXZlcnNlIGxpc3Qgb2YgYWxsIHRoZSByYnRy ZWUgZW50cmllcyBpbiB1c2UgZm9yCi0JICogdGhpcyBjb250ZXh0LCB3aGljaCBhbGxvd3MgdXMg dG8gZnJlZSBhbGwgdGhlIGFsbG9jYXRpb25zIG9uCi0JICogY29udGV4dCBjbG9zZS4KLQkgKi8K LQlzdHJ1Y3QgbGlzdF9oZWFkIGhhbmRsZXNfbGlzdDsKIH07CiAKICNlbmRpZiAvKiBfX0k5MTVf R0VNX0NPTlRFWFRfVFlQRVNfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5 MTVfZ2VtX2V4ZWNidWZmZXIuYwppbmRleCAxM2FiMmEyZTAwOTkuLmZhMGE4ODBjYTRkZSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jCkBAIC04 MDEsOSArODAxLDYgQEAgc3RhdGljIGludCBlYl9sb29rdXBfdm1hcyhzdHJ1Y3QgaTkxNV9leGVj YnVmZmVyICplYikKIAl1bnNpZ25lZCBpbnQgaSwgYmF0Y2g7CiAJaW50IGVycjsKIAotCWlmICh1 bmxpa2VseShpOTE1X2dlbV9jb250ZXh0X2lzX2Nsb3NlZChlYi0+Z2VtX2NvbnRleHQpKSkKLQkJ cmV0dXJuIC1FTk9FTlQ7Ci0KIAlpZiAodW5saWtlbHkoaTkxNV9nZW1fY29udGV4dF9pc19iYW5u ZWQoZWItPmdlbV9jb250ZXh0KSkpCiAJCXJldHVybiAtRUlPOwogCkBAIC04MTIsNiArODA5LDEy IEBAIHN0YXRpYyBpbnQgZWJfbG9va3VwX3ZtYXMoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIp CiAKIAliYXRjaCA9IGViX2JhdGNoX2luZGV4KGViKTsKIAorCW11dGV4X2xvY2soJmViLT5nZW1f Y29udGV4dC0+bXV0ZXgpOworCWlmICh1bmxpa2VseShpOTE1X2dlbV9jb250ZXh0X2lzX2Nsb3Nl ZChlYi0+Z2VtX2NvbnRleHQpKSkgeworCQllcnIgPSAtRU5PRU5UOworCQlnb3RvIGVycl9jdHg7 CisJfQorCiAJZm9yIChpID0gMDsgaSA8IGViLT5idWZmZXJfY291bnQ7IGkrKykgewogCQl1MzIg aGFuZGxlID0gZWItPmV4ZWNbaV0uaGFuZGxlOwogCQlzdHJ1Y3QgaTkxNV9sdXRfaGFuZGxlICps dXQ7CkBAIC04NDYsMTIgKzg0OSwxNCBAQCBzdGF0aWMgaW50IGViX2xvb2t1cF92bWFzKHN0cnVj dCBpOTE1X2V4ZWNidWZmZXIgKmViKQogCQl9CiAKIAkJLyogdHJhbnNmZXIgcmVmIHRvIGN0eCAq LwotCQlpZiAoIXZtYS0+b3Blbl9jb3VudCsrKQorCQlpZiAoIWF0b21pY19mZXRjaF9pbmMoJnZt YS0+b3Blbl9jb3VudCkpCiAJCQlpOTE1X3ZtYV9yZW9wZW4odm1hKTsKLQkJbGlzdF9hZGQoJmx1 dC0+b2JqX2xpbmssICZvYmotPmx1dF9saXN0KTsKLQkJbGlzdF9hZGQoJmx1dC0+Y3R4X2xpbmss ICZlYi0+Z2VtX2NvbnRleHQtPmhhbmRsZXNfbGlzdCk7Ci0JCWx1dC0+Y3R4ID0gZWItPmdlbV9j b250ZXh0OwogCQlsdXQtPmhhbmRsZSA9IGhhbmRsZTsKKwkJbHV0LT5jdHggPSBlYi0+Z2VtX2Nv bnRleHQ7CisKKwkJaTkxNV9nZW1fb2JqZWN0X2xvY2sob2JqKTsKKwkJbGlzdF9hZGQoJmx1dC0+ b2JqX2xpbmssICZvYmotPmx1dF9saXN0KTsKKwkJaTkxNV9nZW1fb2JqZWN0X3VubG9jayhvYmop OwogCiBhZGRfdm1hOgogCQllcnIgPSBlYl9hZGRfdm1hKGViLCBpLCBiYXRjaCwgdm1hKTsKQEAg LTg2NCw2ICs4NjksOCBAQCBzdGF0aWMgaW50IGViX2xvb2t1cF92bWFzKHN0cnVjdCBpOTE1X2V4 ZWNidWZmZXIgKmViKQogCQkJICAgZWJfdm1hX21pc3BsYWNlZCgmZWItPmV4ZWNbaV0sIHZtYSwg ZWItPmZsYWdzW2ldKSk7CiAJfQogCisJbXV0ZXhfdW5sb2NrKCZlYi0+Z2VtX2NvbnRleHQtPm11 dGV4KTsKKwogCWViLT5hcmdzLT5mbGFncyB8PSBfX0VYRUNfVkFMSURBVEVEOwogCXJldHVybiBl Yl9yZXNlcnZlKGViKTsKIApAQCAtODcxLDYgKzg3OCw4IEBAIHN0YXRpYyBpbnQgZWJfbG9va3Vw X3ZtYXMoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpCiAJaTkxNV9nZW1fb2JqZWN0X3B1dChv YmopOwogZXJyX3ZtYToKIAllYi0+dm1hW2ldID0gTlVMTDsKK2Vycl9jdHg6CisJbXV0ZXhfdW5s b2NrKCZlYi0+Z2VtX2NvbnRleHQtPm11dGV4KTsKIAlyZXR1cm4gZXJyOwogfQogCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmMKaW5kZXggOWIzYmQ5Mzg3YjcwLi45 OGRjZTAyMTAxNTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dl bV9vYmplY3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0 LmMKQEAgLTEyNiwzOSArMTI2LDQ3IEBAIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3NldF9jYWNoZV9j b2hlcmVuY3koc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAogdm9pZCBpOTE1X2dl bV9jbG9zZV9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW0sIHN0cnVjdCBkcm1fZmls ZSAqZmlsZSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUoZ2Vt LT5kZXYpOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB0b19pbnRlbF9ibyhn ZW0pOwogCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZwcml2ID0gZmlsZS0+ZHJpdmVy X3ByaXY7CiAJc3RydWN0IGk5MTVfbHV0X2hhbmRsZSAqbHV0LCAqbG47CisJTElTVF9IRUFEKGNs b3NlKTsKIAotCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwotCisJaTkxNV9n ZW1fb2JqZWN0X2xvY2sob2JqKTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobHV0LCBsbiwg Jm9iai0+bHV0X2xpc3QsIG9ial9saW5rKSB7CiAJCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHggPSBsdXQtPmN0eDsKLQkJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAKLQkJR0VNX0JVR19PTihj dHgtPmZpbGVfcHJpdiA9PSBFUlJfUFRSKC1FQkFERikpOwogCQlpZiAoY3R4LT5maWxlX3ByaXYg IT0gZnByaXYpCiAJCQljb250aW51ZTsKIAotCQl2bWEgPSByYWRpeF90cmVlX2RlbGV0ZSgmY3R4 LT5oYW5kbGVzX3ZtYSwgbHV0LT5oYW5kbGUpOwotCQlHRU1fQlVHX09OKHZtYS0+b2JqICE9IG9i aik7CisJCWk5MTVfZ2VtX2NvbnRleHRfZ2V0KGN0eCk7CisJCWxpc3RfbW92ZSgmbHV0LT5vYmpf bGluaywgJmNsb3NlKTsKKwl9CisJaTkxNV9nZW1fb2JqZWN0X3VubG9jayhvYmopOworCisJbGlz dF9mb3JfZWFjaF9lbnRyeV9zYWZlKGx1dCwgbG4sICZjbG9zZSwgb2JqX2xpbmspIHsKKwkJc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCA9IGx1dC0+Y3R4OworCQlzdHJ1Y3QgaTkxNV92bWEg KnZtYTsKIAotCQkvKiBXZSBhbGxvdyB0aGUgcHJvY2VzcyB0byBoYXZlIG11bHRpcGxlIGhhbmRs ZXMgdG8gdGhlIHNhbWUKKwkJLyoKKwkJICogV2UgYWxsb3cgdGhlIHByb2Nlc3MgdG8gaGF2ZSBt dWx0aXBsZSBoYW5kbGVzIHRvIHRoZSBzYW1lCiAJCSAqIHZtYSwgaW4gdGhlIHNhbWUgZmQgbmFt ZXNwYWNlLCBieSB2aXJ0dWUgb2YgZmxpbmsvb3Blbi4KIAkJICovCi0JCUdFTV9CVUdfT04oIXZt YS0+b3Blbl9jb3VudCk7Ci0JCWlmICghLS12bWEtPm9wZW5fY291bnQgJiYgIWk5MTVfdm1hX2lz X2dndHQodm1hKSkKLQkJCWk5MTVfdm1hX2Nsb3NlKHZtYSk7CiAKLQkJbGlzdF9kZWwoJmx1dC0+ b2JqX2xpbmspOwotCQlsaXN0X2RlbCgmbHV0LT5jdHhfbGluayk7CisJCW11dGV4X2xvY2soJmN0 eC0+bXV0ZXgpOworCQl2bWEgPSByYWRpeF90cmVlX2RlbGV0ZSgmY3R4LT5oYW5kbGVzX3ZtYSwg bHV0LT5oYW5kbGUpOworCQlpZiAodm1hKSB7CisJCQlHRU1fQlVHX09OKHZtYS0+b2JqICE9IG9i aik7CisJCQlHRU1fQlVHX09OKCFhdG9taWNfcmVhZCgmdm1hLT5vcGVuX2NvdW50KSk7CisJCQlp ZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmdm1hLT5vcGVuX2NvdW50KSAmJgorCQkJICAgICFpOTE1 X3ZtYV9pc19nZ3R0KHZtYSkpCisJCQkJaTkxNV92bWFfY2xvc2Uodm1hKTsKKwkJfQorCQltdXRl eF91bmxvY2soJmN0eC0+bXV0ZXgpOwogCisJCWk5MTVfZ2VtX2NvbnRleHRfcHV0KGx1dC0+Y3R4 KTsKIAkJaTkxNV9sdXRfaGFuZGxlX2ZyZWUobHV0KTsKIAkJaTkxNV9nZW1fb2JqZWN0X3B1dChv YmopOwogCX0KLQotCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CiB9CiAK IHN0YXRpYyBib29sIGRpc2NhcmRfYmFja2luZ19zdG9yYWdlKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmopCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9n ZW1fb2JqZWN0X3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2Jq ZWN0X3R5cGVzLmgKaW5kZXggNjdhOTkyZDZlZTBjLi45YzE2MWJhNzM1NTggMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3RfdHlwZXMuaAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgKQEAgLTI0LDcg KzI0LDYgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Q7CiAgKi8KIHN0cnVjdCBpOTE1X2x1 dF9oYW5kbGUgewogCXN0cnVjdCBsaXN0X2hlYWQgb2JqX2xpbms7Ci0Jc3RydWN0IGxpc3RfaGVh ZCBjdHhfbGluazsKIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OwogCXUzMiBoYW5kbGU7 CiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9tb2Nr X2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvbW9ja19jb250 ZXh0LmMKaW5kZXggNjhkNTBkYTAzNWU2Li42NTc4ZjJmNmMzZjggMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYwpAQCAtMzAsNyArMzAs NiBAQCBtb2NrX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJUkNVX0lO SVRfUE9JTlRFUihjdHgtPmVuZ2luZXMsIGUpOwogCiAJSU5JVF9SQURJWF9UUkVFKCZjdHgtPmhh bmRsZXNfdm1hLCBHRlBfS0VSTkVMKTsKLQlJTklUX0xJU1RfSEVBRCgmY3R4LT5oYW5kbGVzX2xp c3QpOwogCUlOSVRfTElTVF9IRUFEKCZjdHgtPmh3X2lkX2xpbmspOwogCW11dGV4X2luaXQoJmN0 eC0+bXV0ZXgpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCAyNWUyOWVlMDM5MzUuLjg0 NDNlNThkYzE2MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0xOTkxLDEwICsxOTkxLDEy IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKIAkJfSB0aW1lbGluZXM7CiAKIAkJc3RydWN0 IGxpc3RfaGVhZCBhY3RpdmVfcmluZ3M7Ci0JCXN0cnVjdCBsaXN0X2hlYWQgY2xvc2VkX3ZtYTsK IAogCQlzdHJ1Y3QgaW50ZWxfd2FrZXJlZiB3YWtlcmVmOwogCisJCXN0cnVjdCBsaXN0X2hlYWQg Y2xvc2VkX3ZtYTsKKwkJc3BpbmxvY2tfdCBjbG9zZWRfbG9jazsgLyogZ3VhcmRzIHRoZSBsaXN0 IG9mIGNsb3NlZF92bWEgKi8KKwogCQkvKioKIAkJICogSXMgdGhlIEdQVSBjdXJyZW50bHkgY29u c2lkZXJlZCBpZGxlLCBvciBidXN5IGV4ZWN1dGluZwogCQkgKiB1c2Vyc3BhY2UgcmVxdWVzdHM/ IFdoaWxzdCBpZGxlLCB3ZSBhbGxvdyBydW50aW1lIHBvd2VyCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u YwppbmRleCAyYTllOGVjZjI5MjYuLjkwOTIzZmE2NjAzZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bS5jCkBAIC0xNzMyLDYgKzE3MzIsNyBAQCBpbnQgaTkxNV9nZW1faW5pdF9lYXJseShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYt Pmd0LmFjdGl2ZV9yaW5ncyk7CiAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5ndC5jbG9zZWRf dm1hKTsKKwlzcGluX2xvY2tfaW5pdCgmZGV2X3ByaXYtPmd0LmNsb3NlZF9sb2NrKTsKIAogCWk5 MTVfZ2VtX2luaXRfX21tKGRldl9wcml2KTsKIAlpOTE1X2dlbV9pbml0X19wbShkZXZfcHJpdik7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCmluZGV4IDU2YmU0YjA5MWJjNy4uZjI2ZWFh ODFlN2ZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwpAQCAtMTkyOSw2ICsxOTI5 LDcgQEAgc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqcGRfdm1hX2NyZWF0ZShzdHJ1Y3QgZ2VuNl9o d19wcGd0dCAqcHBndHQsIGludCBzaXplKQogCXZtYS0+Z2d0dF92aWV3LnR5cGUgPSBJOTE1X0dH VFRfVklFV19ST1RBVEVEOyAvKiBwcmV2ZW50IGZlbmNpbmcgKi8KIAogCUlOSVRfTElTVF9IRUFE KCZ2bWEtPm9ial9saW5rKTsKKwlJTklUX0xJU1RfSEVBRCgmdm1hLT5jbG9zZWRfbGluayk7CiAK IAltdXRleF9sb2NrKCZ2bWEtPnZtLT5tdXRleCk7CiAJbGlzdF9hZGQoJnZtYS0+dm1fbGluaywg JnZtYS0+dm0tPnVuYm91bmRfbGlzdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3RpbWVsaW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5lLmMK aW5kZXggNWZiZWEwODkyZjMzLi4wMDBlMWE5YjY3NTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfdGltZWxpbmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3RpbWVsaW5lLmMKQEAgLTYxLDcgKzYxLDcgQEAgaHdzcF9hbGxvYyhzdHJ1Y3QgaTkxNV90aW1l bGluZSAqdGltZWxpbmUsIHVuc2lnbmVkIGludCAqY2FjaGVsaW5lKQogCiAJQlVJTERfQlVHX09O KEJJVFNfUEVSX1RZUEUodTY0KSAqIENBQ0hFTElORV9CWVRFUyA+IFBBR0VfU0laRSk7CiAKLQlz cGluX2xvY2soJmd0LT5od3NwX2xvY2spOworCXNwaW5fbG9ja19pcnEoJmd0LT5od3NwX2xvY2sp OwogCiAJLyogaHdzcF9mcmVlX2xpc3Qgb25seSBjb250YWlucyBIV1NQIHRoYXQgaGF2ZSBhdmFp bGFibGUgY2FjaGVsaW5lcyAqLwogCWh3c3AgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJmd0 LT5od3NwX2ZyZWVfbGlzdCwKQEAgLTY5LDcgKzY5LDcgQEAgaHdzcF9hbGxvYyhzdHJ1Y3QgaTkx NV90aW1lbGluZSAqdGltZWxpbmUsIHVuc2lnbmVkIGludCAqY2FjaGVsaW5lKQogCWlmICghaHdz cCkgewogCQlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKIAotCQlzcGluX3VubG9jaygmZ3QtPmh3c3Bf bG9jayk7CisJCXNwaW5fdW5sb2NrX2lycSgmZ3QtPmh3c3BfbG9jayk7CiAKIAkJaHdzcCA9IGtt YWxsb2Moc2l6ZW9mKCpod3NwKSwgR0ZQX0tFUk5FTCk7CiAJCWlmICghaHdzcCkKQEAgLTg2LDcg Kzg2LDcgQEAgaHdzcF9hbGxvYyhzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmUsIHVuc2ln bmVkIGludCAqY2FjaGVsaW5lKQogCQlod3NwLT5mcmVlX2JpdG1hcCA9IH4wdWxsOwogCQlod3Nw LT5ndCA9IGd0OwogCi0JCXNwaW5fbG9jaygmZ3QtPmh3c3BfbG9jayk7CisJCXNwaW5fbG9ja19p cnEoJmd0LT5od3NwX2xvY2spOwogCQlsaXN0X2FkZCgmaHdzcC0+ZnJlZV9saW5rLCAmZ3QtPmh3 c3BfZnJlZV9saXN0KTsKIAl9CiAKQEAgLTk2LDcgKzk2LDcgQEAgaHdzcF9hbGxvYyhzdHJ1Y3Qg aTkxNV90aW1lbGluZSAqdGltZWxpbmUsIHVuc2lnbmVkIGludCAqY2FjaGVsaW5lKQogCWlmICgh aHdzcC0+ZnJlZV9iaXRtYXApCiAJCWxpc3RfZGVsKCZod3NwLT5mcmVlX2xpbmspOwogCi0Jc3Bp bl91bmxvY2soJmd0LT5od3NwX2xvY2spOworCXNwaW5fdW5sb2NrX2lycSgmZ3QtPmh3c3BfbG9j ayk7CiAKIAlHRU1fQlVHX09OKGh3c3AtPnZtYS0+cHJpdmF0ZSAhPSBod3NwKTsKIAlyZXR1cm4g aHdzcC0+dm1hOwpAQCAtMTA1LDggKzEwNSw5IEBAIGh3c3BfYWxsb2Moc3RydWN0IGk5MTVfdGlt ZWxpbmUgKnRpbWVsaW5lLCB1bnNpZ25lZCBpbnQgKmNhY2hlbGluZSkKIHN0YXRpYyB2b2lkIF9f aWRsZV9od3NwX2ZyZWUoc3RydWN0IGk5MTVfdGltZWxpbmVfaHdzcCAqaHdzcCwgaW50IGNhY2hl bGluZSkKIHsKIAlzdHJ1Y3QgaTkxNV9ndF90aW1lbGluZXMgKmd0ID0gaHdzcC0+Z3Q7CisJdW5z aWduZWQgbG9uZyBmbGFnczsKIAotCXNwaW5fbG9jaygmZ3QtPmh3c3BfbG9jayk7CisJc3Bpbl9s b2NrX2lycXNhdmUoJmd0LT5od3NwX2xvY2ssIGZsYWdzKTsKIAogCS8qIEFzIGEgY2FjaGVsaW5l IGJlY29tZXMgYXZhaWxhYmxlLCBwdWJsaXNoIHRoZSBIV1NQIG9uIHRoZSBmcmVlbGlzdCAqLwog CWlmICghaHdzcC0+ZnJlZV9iaXRtYXApCkBAIC0xMjIsNyArMTIzLDcgQEAgc3RhdGljIHZvaWQg X19pZGxlX2h3c3BfZnJlZShzdHJ1Y3QgaTkxNV90aW1lbGluZV9od3NwICpod3NwLCBpbnQgY2Fj aGVsaW5lKQogCQlrZnJlZShod3NwKTsKIAl9CiAKLQlzcGluX3VubG9jaygmZ3QtPmh3c3BfbG9j ayk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZ3QtPmh3c3BfbG9jaywgZmxhZ3MpOwogfQog CiBzdGF0aWMgdm9pZCBfX2lkbGVfY2FjaGVsaW5lX2ZyZWUoc3RydWN0IGk5MTVfdGltZWxpbmVf Y2FjaGVsaW5lICpjbCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1h LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5jCmluZGV4IDE2ZDQ3ZjFmNjQ1YS4u MzkyYzI3NTdjMjE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMKQEAgLTE0Myw2ICsxNDMsOCBA QCB2bWFfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJdm1hLT5zaXpl ID0gb2JqLT5iYXNlLnNpemU7CiAJdm1hLT5kaXNwbGF5X2FsaWdubWVudCA9IEk5MTVfR1RUX01J Tl9BTElHTk1FTlQ7CiAKKwlJTklUX0xJU1RfSEVBRCgmdm1hLT5jbG9zZWRfbGluayk7CisKIAlp ZiAodmlldyAmJiB2aWV3LT50eXBlICE9IEk5MTVfR0dUVF9WSUVXX05PUk1BTCkgewogCQl2bWEt PmdndHRfdmlldyA9ICp2aWV3OwogCQlpZiAodmlldy0+dHlwZSA9PSBJOTE1X0dHVFRfVklFV19Q QVJUSUFMKSB7CkBAIC03ODUsMTAgKzc4NywxMCBAQCBpbnQgX19pOTE1X3ZtYV9kb19waW4oc3Ry dWN0IGk5MTVfdm1hICp2bWEsCiAKIHZvaWQgaTkxNV92bWFfY2xvc2Uoc3RydWN0IGk5MTVfdm1h ICp2bWEpCiB7Ci0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmdm1hLT52bS0+aTkxNS0+ZHJtLnN0cnVj dF9tdXRleCk7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB2bWEtPnZtLT5pOTE1 OworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKIAlHRU1fQlVHX09OKGk5MTVfdm1hX2lzX2Nsb3Nl ZCh2bWEpKTsKLQl2bWEtPmZsYWdzIHw9IEk5MTVfVk1BX0NMT1NFRDsKIAogCS8qCiAJICogV2Ug ZGVmZXIgYWN0dWFsbHkgY2xvc2luZywgdW5iaW5kaW5nIGFuZCBkZXN0cm95aW5nIHRoZSBWTUEg dW50aWwKQEAgLTgwMiwxNyArODA0LDI2IEBAIHZvaWQgaTkxNV92bWFfY2xvc2Uoc3RydWN0IGk5 MTVfdm1hICp2bWEpCiAJICogY2F1c2luZyB1cyB0byByZWJpbmQgdGhlIFZNQSBvbmNlIG1vcmUu IFRoaXMgZW5kcyB1cCBiZWluZyBhIGxvdAogCSAqIG9mIHdhc3RlZCB3b3JrIGZvciB0aGUgc3Rl YWR5IHN0YXRlLgogCSAqLwotCWxpc3RfYWRkX3RhaWwoJnZtYS0+Y2xvc2VkX2xpbmssICZ2bWEt PnZtLT5pOTE1LT5ndC5jbG9zZWRfdm1hKTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmaTkxNS0+Z3Qu Y2xvc2VkX2xvY2ssIGZsYWdzKTsKKwlsaXN0X2FkZCgmdm1hLT5jbG9zZWRfbGluaywgJmk5MTUt Pmd0LmNsb3NlZF92bWEpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmk5MTUtPmd0LmNsb3Nl ZF9sb2NrLCBmbGFncyk7CiB9CiAKLXZvaWQgaTkxNV92bWFfcmVvcGVuKHN0cnVjdCBpOTE1X3Zt YSAqdm1hKQorc3RhdGljIHZvaWQgX19pOTE1X3ZtYV9yZW1vdmVfY2xvc2VkKHN0cnVjdCBpOTE1 X3ZtYSAqdm1hKQogewotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnZtYS0+dm0tPmk5MTUtPmRybS5z dHJ1Y3RfbXV0ZXgpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdm1hLT52bS0+ aTkxNTsKIAotCWlmICh2bWEtPmZsYWdzICYgSTkxNV9WTUFfQ0xPU0VEKSB7Ci0JCXZtYS0+Zmxh Z3MgJj0gfkk5MTVfVk1BX0NMT1NFRDsKLQkJbGlzdF9kZWwoJnZtYS0+Y2xvc2VkX2xpbmspOwot CX0KKwlpZiAoIWk5MTVfdm1hX2lzX2Nsb3NlZCh2bWEpKQorCQlyZXR1cm47CisKKwlzcGluX2xv Y2tfaXJxKCZpOTE1LT5ndC5jbG9zZWRfbG9jayk7CisJbGlzdF9kZWxfaW5pdCgmdm1hLT5jbG9z ZWRfbGluayk7CisJc3Bpbl91bmxvY2tfaXJxKCZpOTE1LT5ndC5jbG9zZWRfbG9jayk7Cit9CisK K3ZvaWQgaTkxNV92bWFfcmVvcGVuKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQoreworCV9faTkxNV92 bWFfcmVtb3ZlX2Nsb3NlZCh2bWEpOwogfQogCiBzdGF0aWMgdm9pZCBfX2k5MTVfdm1hX2Rlc3Ry b3koc3RydWN0IGk5MTVfdm1hICp2bWEpCkBAIC04NDYsOCArODU3LDcgQEAgdm9pZCBpOTE1X3Zt YV9kZXN0cm95KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogCiAJR0VNX0JVR19PTihpOTE1X3ZtYV9p c19waW5uZWQodm1hKSk7CiAKLQlpZiAoaTkxNV92bWFfaXNfY2xvc2VkKHZtYSkpCi0JCWxpc3Rf ZGVsKCZ2bWEtPmNsb3NlZF9saW5rKTsKKwlfX2k5MTVfdm1hX3JlbW92ZV9jbG9zZWQodm1hKTsK IAogCVdBUk5fT04oaTkxNV92bWFfdW5iaW5kKHZtYSkpOwogCUdFTV9CVUdfT04oaTkxNV92bWFf aXNfYWN0aXZlKHZtYSkpOwpAQCAtODU5LDEyICs4NjksMTYgQEAgdm9pZCBpOTE1X3ZtYV9wYXJr ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiB7CiAJc3RydWN0IGk5MTVfdm1hICp2 bWEsICpuZXh0OwogCisJc3Bpbl9sb2NrX2lycSgmaTkxNS0+Z3QuY2xvc2VkX2xvY2spOwogCWxp c3RfZm9yX2VhY2hfZW50cnlfc2FmZSh2bWEsIG5leHQsICZpOTE1LT5ndC5jbG9zZWRfdm1hLCBj bG9zZWRfbGluaykgewotCQlHRU1fQlVHX09OKCFpOTE1X3ZtYV9pc19jbG9zZWQodm1hKSk7CisJ CWxpc3RfZGVsX2luaXQoJnZtYS0+Y2xvc2VkX2xpbmspOworCQlzcGluX3VubG9ja19pcnEoJmk5 MTUtPmd0LmNsb3NlZF9sb2NrKTsKKwogCQlpOTE1X3ZtYV9kZXN0cm95KHZtYSk7Ci0JfQogCi0J R0VNX0JVR19PTighbGlzdF9lbXB0eSgmaTkxNS0+Z3QuY2xvc2VkX3ZtYSkpOworCQlzcGluX2xv Y2tfaXJxKCZpOTE1LT5ndC5jbG9zZWRfbG9jayk7CisJfQorCXNwaW5fdW5sb2NrX2lycSgmaTkx NS0+Z3QuY2xvc2VkX2xvY2spOwogfQogCiBzdGF0aWMgdm9pZCBfX2k5MTVfdm1hX2lvdW5tYXAo c3RydWN0IGk5MTVfdm1hICp2bWEpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3ZtYS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaAppbmRleCA3MWFjN2Vl ODYyMGEuLmYwODg0Y2M4YjJkMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV92bWEuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5oCkBAIC02OSw3ICs2 OSw3IEBAIHN0cnVjdCBpOTE1X3ZtYSB7CiAJICogaGFuZGxlcyAoYnV0IHNhbWUgZmlsZSkgZm9y IGV4ZWNidWYsIGkuZS4gdGhlIG51bWJlciBvZiBhbGlhc2VzCiAJICogdGhhdCBleGlzdCBpbiB0 aGUgY3R4LT5oYW5kbGVfdm1hcyBMVVQgZm9yIHRoaXMgdm1hLgogCSAqLwotCXVuc2lnbmVkIGlu dCBvcGVuX2NvdW50OworCWF0b21pY190IG9wZW5fY291bnQ7CiAJdW5zaWduZWQgbG9uZyBmbGFn czsKIAkvKioKIAkgKiBIb3cgbWFueSB1c2VycyBoYXZlIHBpbm5lZCB0aGlzIG9iamVjdCBpbiBH VFQgc3BhY2UuCkBAIC0xMDQsMTAgKzEwNCw5IEBAIHN0cnVjdCBpOTE1X3ZtYSB7CiAKICNkZWZp bmUgSTkxNV9WTUFfR0dUVAkJQklUKDExKQogI2RlZmluZSBJOTE1X1ZNQV9DQU5fRkVOQ0UJQklU KDEyKQotI2RlZmluZSBJOTE1X1ZNQV9DTE9TRUQJCUJJVCgxMykKLSNkZWZpbmUgSTkxNV9WTUFf VVNFUkZBVUxUX0JJVAkxNAorI2RlZmluZSBJOTE1X1ZNQV9VU0VSRkFVTFRfQklUCTEzCiAjZGVm aW5lIEk5MTVfVk1BX1VTRVJGQVVMVAlCSVQoSTkxNV9WTUFfVVNFUkZBVUxUX0JJVCkKLSNkZWZp bmUgSTkxNV9WTUFfR0dUVF9XUklURQlCSVQoMTUpCisjZGVmaW5lIEk5MTVfVk1BX0dHVFRfV1JJ VEUJQklUKDE0KQogCiAJc3RydWN0IGk5MTVfYWN0aXZlIGFjdGl2ZTsKIAlzdHJ1Y3QgaTkxNV9h Y3RpdmVfcmVxdWVzdCBsYXN0X2ZlbmNlOwpAQCAtMTkwLDExICsxODksNiBAQCBzdGF0aWMgaW5s aW5lIGJvb2wgaTkxNV92bWFfaXNfbWFwX2FuZF9mZW5jZWFibGUoY29uc3Qgc3RydWN0IGk5MTVf dm1hICp2bWEpCiAJcmV0dXJuIHZtYS0+ZmxhZ3MgJiBJOTE1X1ZNQV9DQU5fRkVOQ0U7CiB9CiAK LXN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X3ZtYV9pc19jbG9zZWQoY29uc3Qgc3RydWN0IGk5MTVf dm1hICp2bWEpCi17Ci0JcmV0dXJuIHZtYS0+ZmxhZ3MgJiBJOTE1X1ZNQV9DTE9TRUQ7Ci19Ci0K IHN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X3ZtYV9zZXRfdXNlcmZhdWx0KHN0cnVjdCBpOTE1X3Zt YSAqdm1hKQogewogCUdFTV9CVUdfT04oIWk5MTVfdm1hX2lzX21hcF9hbmRfZmVuY2VhYmxlKHZt YSkpOwpAQCAtMjExLDYgKzIwNSwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV92bWFfaGFz X3VzZXJmYXVsdChjb25zdCBzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKIAlyZXR1cm4gdGVzdF9iaXQo STkxNV9WTUFfVVNFUkZBVUxUX0JJVCwgJnZtYS0+ZmxhZ3MpOwogfQogCitzdGF0aWMgaW5saW5l IGJvb2wgaTkxNV92bWFfaXNfY2xvc2VkKGNvbnN0IHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQorewor CXJldHVybiAhbGlzdF9lbXB0eSgmdm1hLT5jbG9zZWRfbGluayk7Cit9CisKIHN0YXRpYyBpbmxp bmUgdTMyIGk5MTVfZ2d0dF9vZmZzZXQoY29uc3Qgc3RydWN0IGk5MTVfdm1hICp2bWEpCiB7CiAJ R0VNX0JVR19PTighaTkxNV92bWFfaXNfZ2d0dCh2bWEpKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2UuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2UuYwppbmRleCBlMjViNzRhMjdmODMuLmI3 ZjNmYmI0YWU4OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21v Y2tfZ2VtX2RldmljZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2Nr X2dlbV9kZXZpY2UuYwpAQCAtMjAzLDYgKzIwMyw3IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICptb2NrX2dlbV9kZXZpY2Uodm9pZCkKIAogCUlOSVRfTElTVF9IRUFEKCZpOTE1LT5ndC5hY3Rp dmVfcmluZ3MpOwogCUlOSVRfTElTVF9IRUFEKCZpOTE1LT5ndC5jbG9zZWRfdm1hKTsKKwlzcGlu X2xvY2tfaW5pdCgmaTkxNS0+Z3QuY2xvc2VkX2xvY2spOwogCiAJbXV0ZXhfbG9jaygmaTkxNS0+ ZHJtLnN0cnVjdF9tdXRleCk7CiAKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4