From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 18/33] drm/i915: Use VMA as the primary object for context state Date: Sun, 7 Aug 2016 15:45:26 +0100 Message-ID: <1470581141-14432-19-git-send-email-chris@chris-wilson.co.uk> References: <1470581141-14432-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5EF4D6E2FC for ; Sun, 7 Aug 2016 14:46:10 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id i5so11073128wmg.2 for ; Sun, 07 Aug 2016 07:46:10 -0700 (PDT) In-Reply-To: <1470581141-14432-1-git-send-email-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 V2hlbiB3b3JraW5nIHdpdGggY29udGV4dHMsIHdlIG1vc3QgZnJlcXVlbnRseSB3YW50IHRoZSBH R1RUIFZNQSBmb3IgdGhlCmNvbnRleHQgc3RhdGUsIGZpcnN0IGFuZCBmb3JlbW9zdC4gU2luY2Ug dGhlIG9iamVjdCBpcyBhdmFpbGFibGUgdmlhIHRoZQpWTUEsIHdlIG5lZWQgb25seSB0aGVuIHN0 b3JlIHRoZSBWTUEuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdp bHNvbi5jby51az4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAg ICAgfCAzMyArKysrKysrLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg ICAgICAgICAgICB8ICAzICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0 LmMgICAgfCA2MCArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dwdV9lcnJvci5jICAgICAgfCAgNyArKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgfCAgNiArLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2xyYy5jICAgICAgICAgICB8IDY0ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jICAgIHwgIDYgKy0tCiA3IGZp bGVzIGNoYW5nZWQsIDg4IGluc2VydGlvbnMoKyksIDkxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5kZXggZTJhOWZjMzUzZWYzLi42YTAzZmE3YjYyNjQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC0zNTQsNyArMzU0LDcgQEAgc3RhdGlj IGludCBwZXJfZmlsZV9jdHhfc3RhdHMoaW50IGlkLCB2b2lkICpwdHIsIHZvaWQgKmRhdGEpCiAK IAlmb3IgKG4gPSAwOyBuIDwgQVJSQVlfU0laRShjdHgtPmVuZ2luZSk7IG4rKykgewogCQlpZiAo Y3R4LT5lbmdpbmVbbl0uc3RhdGUpCi0JCQlwZXJfZmlsZV9zdGF0cygwLCBjdHgtPmVuZ2luZVtu XS5zdGF0ZSwgZGF0YSk7CisJCQlwZXJfZmlsZV9zdGF0cygwLCBjdHgtPmVuZ2luZVtuXS5zdGF0 ZS0+b2JqLCBkYXRhKTsKIAkJaWYgKGN0eC0+ZW5naW5lW25dLnJpbmcpCiAJCQlwZXJfZmlsZV9z dGF0cygwLCBjdHgtPmVuZ2luZVtuXS5yaW5nLT5vYmosIGRhdGEpOwogCX0KQEAgLTE5NzYsNyAr MTk3Niw3IEBAIHN0YXRpYyBpbnQgaTkxNV9jb250ZXh0X3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUg Km0sIHZvaWQgKnVudXNlZCkKIAkJCXNlcV9wcmludGYobSwgIiVzOiAiLCBlbmdpbmUtPm5hbWUp OwogCQkJc2VxX3B1dGMobSwgY2UtPmluaXRpYWxpc2VkID8gJ0knIDogJ2knKTsKIAkJCWlmIChj ZS0+c3RhdGUpCi0JCQkJZGVzY3JpYmVfb2JqKG0sIGNlLT5zdGF0ZSk7CisJCQkJZGVzY3JpYmVf b2JqKG0sIGNlLT5zdGF0ZS0+b2JqKTsKIAkJCWlmIChjZS0+cmluZykKIAkJCQlkZXNjcmliZV9j dHhfcmluZyhtLCBjZS0+cmluZyk7CiAJCQlzZXFfcHV0YyhtLCAnXG4nKTsKQEAgLTE5OTQsMzYg KzE5OTQsMzMgQEAgc3RhdGljIHZvaWQgaTkxNV9kdW1wX2xyY19vYmooc3RydWN0IHNlcV9maWxl ICptLAogCQkJICAgICAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKIAkJCSAgICAgIHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqY3R4X29iaiA9IGN0eC0+ZW5naW5lW2VuZ2luZS0+aWRdLnN0YXRlOworCXN0cnVjdCBp OTE1X3ZtYSAqdm1hID0gY3R4LT5lbmdpbmVbZW5naW5lLT5pZF0uc3RhdGU7CiAJc3RydWN0IHBh Z2UgKnBhZ2U7Ci0JdWludDMyX3QgKnJlZ19zdGF0ZTsKIAlpbnQgajsKLQl1bnNpZ25lZCBsb25n IGdndHRfb2Zmc2V0ID0gMDsKIAogCXNlcV9wcmludGYobSwgIkNPTlRFWFQ6ICVzICV1XG4iLCBl bmdpbmUtPm5hbWUsIGN0eC0+aHdfaWQpOwogCi0JaWYgKGN0eF9vYmogPT0gTlVMTCkgewotCQlz ZXFfcHV0cyhtLCAiXHROb3QgYWxsb2NhdGVkXG4iKTsKKwlpZiAoIXZtYSkgeworCQlzZXFfcHV0 cyhtLCAiXHRGYWtlIGNvbnRleHRcbiIpOwogCQlyZXR1cm47CiAJfQogCi0JaWYgKCFpOTE1X2dl bV9vYmpfZ2d0dF9ib3VuZChjdHhfb2JqKSkKLQkJc2VxX3B1dHMobSwgIlx0Tm90IGJvdW5kIGlu IEdHVFRcbiIpOwotCWVsc2UKLQkJZ2d0dF9vZmZzZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZz ZXQoY3R4X29iaik7CisJaWYgKHZtYS0+ZmxhZ3MgJiBJOTE1X1ZNQV9HTE9CQUxfQklORCkKKwkJ c2VxX3ByaW50ZihtLCAiXHRCb3VuZCBpbiBHR1RUIGF0IDB4JXhcbiIsCisJCQkgICBsb3dlcl8z Ml9iaXRzKHZtYS0+bm9kZS5zdGFydCkpOwogCi0JaWYgKGk5MTVfZ2VtX29iamVjdF9nZXRfcGFn ZXMoY3R4X29iaikpIHsKLQkJc2VxX3B1dHMobSwgIlx0RmFpbGVkIHRvIGdldCBwYWdlcyBmb3Ig Y29udGV4dCBvYmplY3RcbiIpOworCWlmIChpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKHZtYS0+ b2JqKSkgeworCQlzZXFfcHV0cyhtLCAiXHRGYWlsZWQgdG8gZ2V0IHBhZ2VzIGZvciBjb250ZXh0 IG9iamVjdFxuXG4iKTsKIAkJcmV0dXJuOwogCX0KIAotCXBhZ2UgPSBpOTE1X2dlbV9vYmplY3Rf Z2V0X3BhZ2UoY3R4X29iaiwgTFJDX1NUQVRFX1BOKTsKLQlpZiAoIVdBUk5fT04ocGFnZSA9PSBO VUxMKSkgewotCQlyZWdfc3RhdGUgPSBrbWFwX2F0b21pYyhwYWdlKTsKKwlwYWdlID0gaTkxNV9n ZW1fb2JqZWN0X2dldF9wYWdlKHZtYS0+b2JqLCBMUkNfU1RBVEVfUE4pOworCWlmIChwYWdlKSB7 CisJCXUzMiAqcmVnX3N0YXRlID0ga21hcF9hdG9taWMocGFnZSk7CiAKIAkJZm9yIChqID0gMDsg aiA8IDB4NjAwIC8gc2l6ZW9mKHUzMikgLyA0OyBqICs9IDQpIHsKLQkJCXNlcV9wcmludGYobSwg Ilx0WzB4JTA4bHhdIDB4JTA4eCAweCUwOHggMHglMDh4IDB4JTA4eFxuIiwKLQkJCQkgICBnZ3R0 X29mZnNldCArIDQwOTYgKyAoaiAqIDQpLAorCQkJc2VxX3ByaW50ZihtLCAiXHRbMHglMDhsbHhd IDB4JTA4eCAweCUwOHggMHglMDh4IDB4JTA4eFxuIiwKKwkJCQkgICB2bWEtPm5vZGUuc3RhcnQg KyA0MDk2ICsgKGogKiA0KSwKIAkJCQkgICByZWdfc3RhdGVbal0sIHJlZ19zdGF0ZVtqICsgMV0s CiAJCQkJICAgcmVnX3N0YXRlW2ogKyAyXSwgcmVnX3N0YXRlW2ogKyAzXSk7CiAJCX0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCmluZGV4IDJkOGYzMmNkNzI2ZC4uMTQzYjQyYjY1NDVlIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTg5Miw5ICs4OTIsOCBAQCBzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCB7CiAJdTMyIGdndHRfYWxpZ25tZW50OwogCiAJc3RydWN0IGludGVsX2NvbnRleHQgewot CQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqc3RhdGU7CisJCXN0cnVjdCBpOTE1X3ZtYSAq c3RhdGU7CiAJCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nOwotCQlzdHJ1Y3QgaTkxNV92bWEgKmxy Y192bWE7CiAJCXVpbnQzMl90ICpscmNfcmVnX3N0YXRlOwogCQl1NjQgbHJjX2Rlc2M7CiAJCWlu dCBwaW5fY291bnQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXgg YmI3MmFmNTMyMGIwLi5hYTA0MTlmYWViMzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9jb250ZXh0LmMKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIGk5MTVfZ2VtX2NvbnRleHRfZnJl ZShzdHJ1Y3Qga3JlZiAqY3R4X3JlZikKIAkJaWYgKGNlLT5yaW5nKQogCQkJaW50ZWxfcmluZ19m cmVlKGNlLT5yaW5nKTsKIAotCQlpOTE1X2dlbV9vYmplY3RfcHV0KGNlLT5zdGF0ZSk7CisJCWk5 MTVfZ2VtX29iamVjdF9wdXQoY2UtPnN0YXRlLT5vYmopOwogCX0KIAogCWxpc3RfZGVsKCZjdHgt PmxpbmspOwpAQCAtMjgxLDEzICsyODEsMjQgQEAgX19jcmVhdGVfaHdfY29udGV4dChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAogCWN0eC0+Z2d0dF9hbGlnbm1lbnQgPSBnZXRfY29udGV4dF9hbGln bm1lbnQoZGV2X3ByaXYpOwogCiAJaWYgKGRldl9wcml2LT5od19jb250ZXh0X3NpemUpIHsKLQkJ c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9Ci0JCQkJaTkxNV9nZW1fYWxsb2NfY29u dGV4dF9vYmooZGV2LCBkZXZfcHJpdi0+aHdfY29udGV4dF9zaXplKTsKKwkJc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iajsKKwkJc3RydWN0IGk5MTVfdm1hICp2bWE7CisKKwkJb2JqID0g aTkxNV9nZW1fYWxsb2NfY29udGV4dF9vYmooZGV2LAorCQkJCQkJIGRldl9wcml2LT5od19jb250 ZXh0X3NpemUpOwogCQlpZiAoSVNfRVJSKG9iaikpIHsKIAkJCXJldCA9IFBUUl9FUlIob2JqKTsK IAkJCWdvdG8gZXJyX291dDsKIAkJfQotCQljdHgtPmVuZ2luZVtSQ1NdLnN0YXRlID0gb2JqOwor CisJCXZtYSA9IGk5MTVfdm1hX2NyZWF0ZShvYmosICZkZXZfcHJpdi0+Z2d0dC5iYXNlLCBOVUxM KTsKKwkJaWYgKElTX0VSUih2bWEpKSB7CisJCQlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7CisJ CQlyZXQgPSBQVFJfRVJSKHZtYSk7CisJCQlnb3RvIGVycl9vdXQ7CisJCX0KKworCQljdHgtPmVu Z2luZVtSQ1NdLnN0YXRlID0gdm1hOwogCX0KIAogCS8qIERlZmF1bHQgY29udGV4dCB3aWxsIG5l dmVyIGhhdmUgYSBmaWxlX3ByaXYgKi8KQEAgLTM5OSw3ICs0MTAsNyBAQCBzdGF0aWMgdm9pZCBp OTE1X2dlbV9jb250ZXh0X3VucGluKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCiAJCXN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9ICZjdHgtPmVuZ2luZVtlbmdpbmUtPmlkXTsKIAogCQlp ZiAoY2UtPnN0YXRlKQotCQkJaTkxNV9nZW1fb2JqZWN0X2dndHRfdW5waW4oY2UtPnN0YXRlKTsK KwkJCWk5MTVfdm1hX3VucGluKGNlLT5zdGF0ZSk7CiAKIAkJaTkxNV9nZW1fY29udGV4dF9wdXQo Y3R4KTsKIAl9CkBAIC02MjAsOSArNjMxLDcgQEAgbWlfc2V0X2NvbnRleHQoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBod19mbGFncykKIAogCWludGVsX3JpbmdfZW1pdChy aW5nLCBNSV9OT09QKTsKIAlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfU0VUX0NPTlRFWFQpOwot CWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KHJlcS0+ Y3R4LT5lbmdpbmVbUkNTXS5zdGF0ZSkgfAotCQkJZmxhZ3MpOworCWludGVsX3JpbmdfZW1pdChy aW5nLCByZXEtPmN0eC0+ZW5naW5lW1JDU10uc3RhdGUtPm5vZGUuc3RhcnQgfCBmbGFncyk7CiAJ LyoKIAkgKiB3L2E6IE1JX1NFVF9DT05URVhUIG11c3QgYWx3YXlzIGJlIGZvbGxvd2VkIGJ5IE1J X05PT1AKIAkgKiBXYU1pU2V0Q29udGV4dF9IYW5nOnNuYixpdmIsdmx2CkBAIC03NjMsOCArNzcy LDkgQEAgc3RhdGljIGludCBkb19yY3Nfc3dpdGNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxKQogCQlyZXR1cm4gMDsKIAogCS8qIFRyeWluZyB0byBwaW4gZmlyc3QgbWFrZXMgZXJy b3IgaGFuZGxpbmcgZWFzaWVyLiAqLwotCXJldCA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3Bpbih0 by0+ZW5naW5lW1JDU10uc3RhdGUsIE5VTEwsIDAsCi0JCQkJICAgICAgIHRvLT5nZ3R0X2FsaWdu bWVudCwgMCk7CisJcmV0ID0gaTkxNV92bWFfcGluKHRvLT5lbmdpbmVbUkNTXS5zdGF0ZSwKKwkJ CSAgIDAsIHRvLT5nZ3R0X2FsaWdubWVudCwKKwkJCSAgIFBJTl9HTE9CQUwpOwogCWlmIChyZXQp CiAJCXJldHVybiByZXQ7CiAKQEAgLTc3OCwxNiArNzg4LDEyIEBAIHN0YXRpYyBpbnQgZG9fcmNz X3N3aXRjaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIAlmcm9tID0gZW5naW5l LT5sYXN0X2NvbnRleHQ7CiAKIAkvKgotCSAqIENsZWFyIHRoaXMgcGFnZSBvdXQgb2YgYW55IENQ VSBjYWNoZXMgZm9yIGNvaGVyZW50IHN3YXAtaW4vb3V0LiBOb3RlCi0JICogdGhhdCB0aGFua3Mg dG8gd3JpdGUgPSBmYWxzZSBpbiB0aGlzIGNhbGwgYW5kIHVzIG5vdCBzZXR0aW5nIGFueSBncHUK LQkgKiB3cml0ZSBkb21haW5zIHdoZW4gcHV0dGluZyBhIGNvbnRleHQgb2JqZWN0IG9udG8gdGhl IGFjdGl2ZSBsaXN0Ci0JICogKHdoZW4gc3dpdGNoaW5nIGF3YXkgZnJvbSBpdCksIHRoaXMgd29u J3QgYmxvY2suCi0JICoKLQkgKiBYWFg6IFdlIG5lZWQgYSByZWFsIGludGVyZmFjZSB0byBkbyB0 aGlzIGluc3RlYWQgb2YgdHJpY2tlcnkuCisJICogQ2xlYXIgdGhpcyBwYWdlIG91dCBvZiBhbnkg Q1BVIGNhY2hlcyBmb3IgY29oZXJlbnQgc3dhcC1pbi9vdXQuCiAJICovCi0JcmV0ID0gaTkxNV9n ZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKHRvLT5lbmdpbmVbUkNTXS5zdGF0ZSwgZmFsc2Up OworCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbih0by0+ZW5naW5lW1JD U10uc3RhdGUtPm9iaiwKKwkJCQkJCWZhbHNlKTsKIAlpZiAocmV0KQotCQlnb3RvIHVucGluX291 dDsKKwkJZ290byB1bnBpbl92bWE7CiAKIAlpZiAobmVlZHNfcGRfbG9hZF9wcmUocHBndHQsIGVu Z2luZSwgdG8pKSB7CiAJCS8qIE9sZGVyIEdFTnMgYW5kIG5vbiByZW5kZXIgcmluZ3Mgc3RpbGwg d2FudCB0aGUgbG9hZCBmaXJzdCwKQEAgLTc5Nyw3ICs4MDMsNyBAQCBzdGF0aWMgaW50IGRvX3Jj c19zd2l0Y2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiAJCXRyYWNlX3N3aXRj aF9tbShlbmdpbmUsIHRvKTsKIAkJcmV0ID0gcHBndHQtPnN3aXRjaF9tbShwcGd0dCwgcmVxKTsK IAkJaWYgKHJldCkKLQkJCWdvdG8gdW5waW5fb3V0OworCQkJZ290byB1bnBpbl92bWE7CiAJfQog CiAJaWYgKCF0by0+ZW5naW5lW1JDU10uaW5pdGlhbGlzZWQgfHwgaTkxNV9nZW1fY29udGV4dF9p c19kZWZhdWx0KHRvKSkKQEAgLTgxNCw3ICs4MjAsNyBAQCBzdGF0aWMgaW50IGRvX3Jjc19zd2l0 Y2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiAJaWYgKHRvICE9IGZyb20gfHwg KGh3X2ZsYWdzICYgTUlfRk9SQ0VfUkVTVE9SRSkpIHsKIAkJcmV0ID0gbWlfc2V0X2NvbnRleHQo cmVxLCBod19mbGFncyk7CiAJCWlmIChyZXQpCi0JCQlnb3RvIHVucGluX291dDsKKwkJCWdvdG8g dW5waW5fdm1hOwogCX0KIAogCS8qIFRoZSBiYWNraW5nIG9iamVjdCBmb3IgdGhlIGNvbnRleHQg aXMgZG9uZSBhZnRlciBzd2l0Y2hpbmcgdG8gdGhlCkBAIC04MjQsOCArODMwLDYgQEAgc3RhdGlj IGludCBkb19yY3Nfc3dpdGNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogCSAq IE1JX1NFVF9DT05URVhUIGluc3RlYWQgb2Ygd2hlbiB0aGUgbmV4dCBzZXFubyBoYXMgY29tcGxl dGVkLgogCSAqLwogCWlmIChmcm9tICE9IE5VTEwpIHsKLQkJc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiA9IGZyb20tPmVuZ2luZVtSQ1NdLnN0YXRlOwotCiAJCS8qIEFzIGxvbmcgYXMg TUlfU0VUX0NPTlRFWFQgaXMgc2VyaWFsaXppbmcsIGllLiBpdCBmbHVzaGVzIHRoZQogCQkgKiB3 aG9sZSBkYW1uIHBpcGVsaW5lLCB3ZSBkb24ndCBuZWVkIHRvIGV4cGxpY2l0bHkgbWFyayB0aGUK IAkJICogb2JqZWN0IGRpcnR5LiBUaGUgb25seSBleGNlcHRpb24gaXMgdGhhdCB0aGUgY29udGV4 dCBtdXN0IGJlCkBAIC04MzMsMTEgKzgzNyw5IEBAIHN0YXRpYyBpbnQgZG9fcmNzX3N3aXRjaChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIAkJICogYWJsZSB0byBkZWZlciBkb2lu ZyB0aGlzIHVudGlsIHdlIGtub3cgdGhlIG9iamVjdCB3b3VsZCBiZQogCQkgKiBzd2FwcGVkLCBi dXQgdGhlcmUgaXMgbm8gd2F5IHRvIGRvIHRoYXQgeWV0LgogCQkgKi8KLQkJb2JqLT5iYXNlLnJl YWRfZG9tYWlucyA9IEk5MTVfR0VNX0RPTUFJTl9JTlNUUlVDVElPTjsKLQkJaTkxNV92bWFfbW92 ZV90b19hY3RpdmUoaTkxNV9nZW1fb2JqX3RvX2dndHQob2JqKSwgcmVxLCAwKTsKLQotCQkvKiBv YmogaXMga2VwdCBhbGl2ZSB1bnRpbCB0aGUgbmV4dCByZXF1ZXN0IGJ5IGl0cyBhY3RpdmUgcmVm ICovCi0JCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKG9iaik7CisJCWk5MTVfdm1hX21vdmVf dG9fYWN0aXZlKGZyb20tPmVuZ2luZVtSQ1NdLnN0YXRlLCByZXEsIDApOworCQkvKiBzdGF0ZSBp cyBrZXB0IGFsaXZlIHVudGlsIHRoZSBuZXh0IHJlcXVlc3QgKi8KKwkJaTkxNV92bWFfdW5waW4o ZnJvbS0+ZW5naW5lW1JDU10uc3RhdGUpOwogCQlpOTE1X2dlbV9jb250ZXh0X3B1dChmcm9tKTsK IAl9CiAJZW5naW5lLT5sYXN0X2NvbnRleHQgPSBpOTE1X2dlbV9jb250ZXh0X2dldCh0byk7CkBA IC04ODIsOCArODg0LDggQEAgc3RhdGljIGludCBkb19yY3Nfc3dpdGNoKHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxKQogCiAJcmV0dXJuIDA7CiAKLXVucGluX291dDoKLQlpOTE1X2dl bV9vYmplY3RfZ2d0dF91bnBpbih0by0+ZW5naW5lW1JDU10uc3RhdGUpOwordW5waW5fdm1hOgor CWk5MTVfdm1hX3VucGluKHRvLT5lbmdpbmVbUkNTXS5zdGF0ZSk7CiAJcmV0dXJuIHJldDsKIH0K IApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKaW5kZXggYzYyMWZhMjNjZDI4Li4y MWE0ZDAyMjBjMTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vy cm9yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwpAQCAtMTA3 Nyw5ICsxMDc3LDEwIEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX3JlY29yZF9yaW5ncyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJCWk5MTVfZXJyb3JfZ2d0dF9vYmplY3Rf Y3JlYXRlKGRldl9wcml2LAogCQkJCQkJCQkgICAgICBlbmdpbmUtPnNjcmF0Y2gub2JqKTsKIAot CQkJZWUtPmN0eCA9Ci0JCQkJaTkxNV9lcnJvcl9nZ3R0X29iamVjdF9jcmVhdGUoZGV2X3ByaXYs Ci0JCQkJCQkJICAgICAgcmVxdWVzdC0+Y3R4LT5lbmdpbmVbaV0uc3RhdGUpOworCQkJaWYgKHJl cXVlc3QtPmN0eC0+ZW5naW5lW2ldLnN0YXRlKSB7CisJCQkJZWUtPmN0eCA9IGk5MTVfZXJyb3Jf Z2d0dF9vYmplY3RfY3JlYXRlKGRldl9wcml2LAorCQkJCQkJCQkJcmVxdWVzdC0+Y3R4LT5lbmdp bmVbaV0uc3RhdGUtPm9iaik7CisJCQl9CiAKIAkJCWlmIChyZXF1ZXN0LT5waWQpIHsKIAkJCQlz dHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2s7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19z dWJtaXNzaW9uLmMKaW5kZXggZjU2ZDY4MTczYWU2Li4wM2E0ZDJhZTcxZGIgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKQEAgLTM1OCw3ICszNTgsNyBAQCBz dGF0aWMgdm9pZCBndWNfaW5pdF9jdHhfZGVzYyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCiAJCWxy Yy0+Y29udGV4dF9kZXNjID0gbG93ZXJfMzJfYml0cyhjZS0+bHJjX2Rlc2MpOwogCiAJCS8qIFRo ZSBzdGF0ZSBwYWdlIGlzIGFmdGVyIFBQSFdTUCAqLwotCQlnZnhfYWRkciA9IGk5MTVfZ2VtX29i al9nZ3R0X29mZnNldChjZS0+c3RhdGUpOworCQlnZnhfYWRkciA9IGNlLT5zdGF0ZS0+bm9kZS5z dGFydDsKIAkJbHJjLT5yaW5nX2xjcmEgPSBnZnhfYWRkciArIExSQ19TVEFURV9QTiAqIFBBR0Vf U0laRTsKIAkJbHJjLT5jb250ZXh0X2lkID0gKGNsaWVudC0+Y3R4X2luZGV4IDw8IEdVQ19FTENf Q1RYSURfT0ZGU0VUKSB8CiAJCQkJKGVuZ2luZS0+Z3VjX2lkIDw8IEdVQ19FTENfRU5HSU5FX09G RlNFVCk7CkBAIC0xMDYxLDcgKzEwNjEsNyBAQCBpbnQgaW50ZWxfZ3VjX3N1c3BlbmQoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKIAkvKiBhbnkgdmFsdWUgZ3JlYXRlciB0aGFuIEdVQ19QT1dFUl9E MCAqLwogCWRhdGFbMV0gPSBHVUNfUE9XRVJfRDE7CiAJLyogZmlyc3QgcGFnZSBpcyBzaGFyZWQg ZGF0YSB3aXRoIEd1QyAqLwotCWRhdGFbMl0gPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoY3R4 LT5lbmdpbmVbUkNTXS5zdGF0ZSk7CisJZGF0YVsyXSA9IGN0eC0+ZW5naW5lW1JDU10uc3RhdGUt Pm5vZGUuc3RhcnQ7CiAKIAlyZXR1cm4gaG9zdDJndWNfYWN0aW9uKGd1YywgZGF0YSwgQVJSQVlf U0laRShkYXRhKSk7CiB9CkBAIC0xMDg2LDcgKzEwODYsNyBAQCBpbnQgaW50ZWxfZ3VjX3Jlc3Vt ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCWRhdGFbMF0gPSBIT1NUMkdVQ19BQ1RJT05fRVhJ VF9TX1NUQVRFOwogCWRhdGFbMV0gPSBHVUNfUE9XRVJfRDA7CiAJLyogZmlyc3QgcGFnZSBpcyBz aGFyZWQgZGF0YSB3aXRoIEd1QyAqLwotCWRhdGFbMl0gPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZz ZXQoY3R4LT5lbmdpbmVbUkNTXS5zdGF0ZSk7CisJZGF0YVsyXSA9IGN0eC0+ZW5naW5lW1JDU10u c3RhdGUtPm5vZGUuc3RhcnQ7CiAKIAlyZXR1cm4gaG9zdDJndWNfYWN0aW9uKGd1YywgZGF0YSwg QVJSQVlfU0laRShkYXRhKSk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IGM3ZjRi NjRiMTZmNi4uNzRjMDhiZjVkMTM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtMzE1 LDcgKzMxNSw3IEBAIGludGVsX2xyX2NvbnRleHRfZGVzY3JpcHRvcl91cGRhdGUoc3RydWN0IGk5 MTVfZ2VtX2NvbnRleHQgKmN0eCwKIAogCWRlc2MgPSBjdHgtPmRlc2NfdGVtcGxhdGU7CQkJCS8q IGJpdHMgIDMtNCAgKi8KIAlkZXNjIHw9IGVuZ2luZS0+Y3R4X2Rlc2NfdGVtcGxhdGU7CQkJLyog Yml0cyAgMC0xMSAqLwotCWRlc2MgfD0gY2UtPmxyY192bWEtPm5vZGUuc3RhcnQgKyBMUkNfUFBI V1NQX1BOICogUEFHRV9TSVpFOworCWRlc2MgfD0gY2UtPnN0YXRlLT5ub2RlLnN0YXJ0ICsgTFJD X1BQSFdTUF9QTiAqIFBBR0VfU0laRTsKIAkJCQkJCQkJLyogYml0cyAxMi0zMSAqLwogCWRlc2Mg fD0gKHU2NCljdHgtPmh3X2lkIDw8IEdFTjhfQ1RYX0lEX1NISUZUOwkJLyogYml0cyAzMi01MiAq LwogCkBAIC03NjMsNyArNzYzLDYgQEAgdm9pZCBpbnRlbF9leGVjbGlzdHNfY2FuY2VsX3JlcXVl c3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHN0YXRpYyBpbnQgaW50ZWxfbHJf Y29udGV4dF9waW4oc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKIAkJCQlzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gY3R4LT5pOTE1OwogCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9ICZjdHgtPmVuZ2lu ZVtlbmdpbmUtPmlkXTsKIAl2b2lkICp2YWRkcjsKIAl1MzIgKmxyY19yZWdfc3RhdGU7CkBAIC03 NzQsMTYgKzc3MywxNSBAQCBzdGF0aWMgaW50IGludGVsX2xyX2NvbnRleHRfcGluKHN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpjdHgsCiAJaWYgKGNlLT5waW5fY291bnQrKykKIAkJcmV0dXJuIDA7 CiAKLQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4oY2UtPnN0YXRlLCBOVUxMLAotCQkJ CSAgICAgICAwLCBHRU44X0xSX0NPTlRFWFRfQUxJR04sCi0JCQkJICAgICAgIFBJTl9PRkZTRVRf QklBUyB8IEdVQ19XT1BDTV9UT1ApOworCXJldCA9IGk5MTVfdm1hX3BpbihjZS0+c3RhdGUsIDAs IEdFTjhfTFJfQ09OVEVYVF9BTElHTiwKKwkJCSAgIFBJTl9PRkZTRVRfQklBUyB8IEdVQ19XT1BD TV9UT1AgfCBQSU5fR0xPQkFMKTsKIAlpZiAocmV0KQogCQlnb3RvIGVycjsKIAotCXZhZGRyID0g aTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAoY2UtPnN0YXRlKTsKKwl2YWRkciA9IGk5MTVfZ2VtX29i amVjdF9waW5fbWFwKGNlLT5zdGF0ZS0+b2JqKTsKIAlpZiAoSVNfRVJSKHZhZGRyKSkgewogCQly ZXQgPSBQVFJfRVJSKHZhZGRyKTsKLQkJZ290byB1bnBpbl9jdHhfb2JqOworCQlnb3RvIHVucGlu X3ZtYTsKIAl9CiAKIAlscmNfcmVnX3N0YXRlID0gdmFkZHIgKyBMUkNfU1RBVEVfUE4gKiBQQUdF X1NJWkU7CkBAIC03OTIsMjQgKzc5MCwyNSBAQCBzdGF0aWMgaW50IGludGVsX2xyX2NvbnRleHRf cGluKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCiAJaWYgKHJldCkKIAkJZ290byB1bnBp bl9tYXA7CiAKLQljZS0+bHJjX3ZtYSA9IGk5MTVfZ2VtX29ial90b19nZ3R0KGNlLT5zdGF0ZSk7 CiAJaW50ZWxfbHJfY29udGV4dF9kZXNjcmlwdG9yX3VwZGF0ZShjdHgsIGVuZ2luZSk7CiAKIAls cmNfcmVnX3N0YXRlW0NUWF9SSU5HX0JVRkZFUl9TVEFSVCsxXSA9IGNlLT5yaW5nLT52bWEtPm5v ZGUuc3RhcnQ7CiAJY2UtPmxyY19yZWdfc3RhdGUgPSBscmNfcmVnX3N0YXRlOwotCWNlLT5zdGF0 ZS0+ZGlydHkgPSB0cnVlOworCWNlLT5zdGF0ZS0+b2JqLT5kaXJ0eSA9IHRydWU7CiAKIAkvKiBJ bnZhbGlkYXRlIEd1QyBUTEIuICovCi0JaWYgKGk5MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9uKQor CWlmIChpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbikgeworCQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBjdHgtPmk5MTU7CiAJCUk5MTVfV1JJVEUoR0VOOF9HVENSLCBHRU44 X0dUQ1JfSU5WQUxJREFURSk7CisJfQogCiAJaTkxNV9nZW1fY29udGV4dF9nZXQoY3R4KTsKIAly ZXR1cm4gMDsKIAogdW5waW5fbWFwOgotCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoY2UtPnN0 YXRlKTsKLXVucGluX2N0eF9vYmo6Ci0JaTkxNV9nZW1fb2JqZWN0X2dndHRfdW5waW4oY2UtPnN0 YXRlKTsKKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKGNlLT5zdGF0ZS0+b2JqKTsKK3VucGlu X3ZtYToKKwlfX2k5MTVfdm1hX3VucGluKGNlLT5zdGF0ZSk7CiBlcnI6CiAJY2UtPnBpbl9jb3Vu dCA9IDA7CiAJcmV0dXJuIHJldDsKQEAgLTgyOCwxMiArODI3LDggQEAgdm9pZCBpbnRlbF9scl9j b250ZXh0X3VucGluKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCiAKIAlpbnRlbF9yaW5n X3VucGluKGNlLT5yaW5nKTsKIAotCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoY2UtPnN0YXRl KTsKLQlpOTE1X2dlbV9vYmplY3RfZ2d0dF91bnBpbihjZS0+c3RhdGUpOwotCi0JY2UtPmxyY192 bWEgPSBOVUxMOwotCWNlLT5scmNfZGVzYyA9IDA7Ci0JY2UtPmxyY19yZWdfc3RhdGUgPSBOVUxM OworCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoY2UtPnN0YXRlLT5vYmopOworCWk5MTVfdm1h X3VucGluKGNlLT5zdGF0ZSk7CiAKIAlpOTE1X2dlbV9jb250ZXh0X3B1dChjdHgpOwogfQpAQCAt MTc0NywxOSArMTc0MiwxOCBAQCBsb2dpY2FsX3JpbmdfZGVmYXVsdF9pcnFzKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKIH0KIAogc3RhdGljIGludAotbHJjX3NldHVwX2h3cyhzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCi0JICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKmRjdHhfb2JqKQorbHJjX3NldHVwX2h3cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsIHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogewogCXZvaWQgKmh3czsKIAogCS8qIFRoZSBI V1NQIGlzIHBhcnQgb2YgdGhlIGRlZmF1bHQgY29udGV4dCBvYmplY3QgaW4gTFJDIG1vZGUuICov Ci0JZW5naW5lLT5zdGF0dXNfcGFnZS5nZnhfYWRkciA9IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNl dChkY3R4X29iaikgKwotCQkJCSAgICAgICBMUkNfUFBIV1NQX1BOICogUEFHRV9TSVpFOwotCWh3 cyA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKGRjdHhfb2JqKTsKKwllbmdpbmUtPnN0YXR1c19w YWdlLmdmeF9hZGRyID0KKwkJdm1hLT5ub2RlLnN0YXJ0ICsgTFJDX1BQSFdTUF9QTiAqIFBBR0Vf U0laRTsKKwlod3MgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcCh2bWEtPm9iaik7CiAJaWYgKElT X0VSUihod3MpKQogCQlyZXR1cm4gUFRSX0VSUihod3MpOwogCWVuZ2luZS0+c3RhdHVzX3BhZ2Uu cGFnZV9hZGRyID0gaHdzICsgTFJDX1BQSFdTUF9QTiAqIFBBR0VfU0laRTsKLQllbmdpbmUtPnN0 YXR1c19wYWdlLm9iaiA9IGRjdHhfb2JqOworCWVuZ2luZS0+c3RhdHVzX3BhZ2Uub2JqID0gdm1h LT5vYmo7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTIxMzEsNiArMjEyNSw3IEBAIHN0YXRpYyBpbnQg ZXhlY2xpc3RzX2NvbnRleHRfZGVmZXJyZWRfYWxsb2Moc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg KmN0eCwKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iajsKIAlzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqY2UgPSAmY3R4LT5lbmdpbmVbZW5naW5lLT5pZF07CisJc3RydWN0IGk5 MTVfdm1hICp2bWE7CiAJdWludDMyX3QgY29udGV4dF9zaXplOwogCXN0cnVjdCBpbnRlbF9yaW5n ICpyaW5nOwogCWludCByZXQ7CkBAIC0yMTQ4LDYgKzIxNDMsMTIgQEAgc3RhdGljIGludCBleGVj bGlzdHNfY29udGV4dF9kZWZlcnJlZF9hbGxvYyhzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4 LAogCQlyZXR1cm4gUFRSX0VSUihjdHhfb2JqKTsKIAl9CiAKKwl2bWEgPSBpOTE1X3ZtYV9jcmVh dGUoY3R4X29iaiwgJmN0eC0+aTkxNS0+Z2d0dC5iYXNlLCBOVUxMKTsKKwlpZiAoSVNfRVJSKHZt YSkpIHsKKwkJcmV0ID0gUFRSX0VSUih2bWEpOworCQlnb3RvIGVycm9yX2RlcmVmX29iajsKKwl9 CisKIAlyaW5nID0gaW50ZWxfZW5naW5lX2NyZWF0ZV9yaW5nKGVuZ2luZSwgY3R4LT5yaW5nX3Np emUpOwogCWlmIChJU19FUlIocmluZykpIHsKIAkJcmV0ID0gUFRSX0VSUihyaW5nKTsKQEAgLTIx NjEsNyArMjE2Miw3IEBAIHN0YXRpYyBpbnQgZXhlY2xpc3RzX2NvbnRleHRfZGVmZXJyZWRfYWxs b2Moc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKIAl9CiAKIAljZS0+cmluZyA9IHJpbmc7 Ci0JY2UtPnN0YXRlID0gY3R4X29iajsKKwljZS0+c3RhdGUgPSB2bWE7CiAJY2UtPmluaXRpYWxp c2VkID0gZW5naW5lLT5pbml0X2NvbnRleHQgPT0gTlVMTDsKIAogCXJldHVybiAwOwpAQCAtMjE3 MCw4ICsyMTcxLDYgQEAgZXJyb3JfcmluZ19mcmVlOgogCWludGVsX3JpbmdfZnJlZShyaW5nKTsK IGVycm9yX2RlcmVmX29iajoKIAlpOTE1X2dlbV9vYmplY3RfcHV0KGN0eF9vYmopOwotCWNlLT5y aW5nID0gTlVMTDsKLQljZS0+c3RhdGUgPSBOVUxMOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTIx ODIsMjQgKzIxODEsMjMgQEAgdm9pZCBpbnRlbF9scl9jb250ZXh0X3Jlc2V0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9w cml2KSB7CiAJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9ICZjdHgtPmVuZ2luZVtlbmdpbmUt PmlkXTsKLQkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9vYmogPSBjZS0+c3RhdGU7 CiAJCXZvaWQgKnZhZGRyOwogCQl1aW50MzJfdCAqcmVnX3N0YXRlOwogCi0JCWlmICghY3R4X29i aikKKwkJaWYgKCFjZS0+c3RhdGUpCiAJCQljb250aW51ZTsKIAotCQl2YWRkciA9IGk5MTVfZ2Vt X29iamVjdF9waW5fbWFwKGN0eF9vYmopOworCQl2YWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5f bWFwKGNlLT5zdGF0ZS0+b2JqKTsKIAkJaWYgKFdBUk5fT04oSVNfRVJSKHZhZGRyKSkpCiAJCQlj b250aW51ZTsKIAogCQlyZWdfc3RhdGUgPSB2YWRkciArIExSQ19TVEFURV9QTiAqIFBBR0VfU0la RTsKLQkJY3R4X29iai0+ZGlydHkgPSB0cnVlOwogCiAJCXJlZ19zdGF0ZVtDVFhfUklOR19IRUFE KzFdID0gMDsKIAkJcmVnX3N0YXRlW0NUWF9SSU5HX1RBSUwrMV0gPSAwOwogCi0JCWk5MTVfZ2Vt X29iamVjdF91bnBpbl9tYXAoY3R4X29iaik7CisJCWNlLT5zdGF0ZS0+b2JqLT5kaXJ0eSA9IHRy dWU7CisJCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoY2UtPnN0YXRlLT5vYmopOwogCiAJCWNl LT5yaW5nLT5oZWFkID0gMDsKIAkJY2UtPnJpbmctPnRhaWwgPSAwOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5jCmluZGV4IDA5ZjAxYzY0MWMxNC4uNWEzODM0MzBlOTFkIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCkBAIC0yMDkyLDggKzIwOTIs OCBAQCBzdGF0aWMgaW50IGludGVsX3JpbmdfY29udGV4dF9waW4oc3RydWN0IGk5MTVfZ2VtX2Nv bnRleHQgKmN0eCwKIAkJcmV0dXJuIDA7CiAKIAlpZiAoY2UtPnN0YXRlKSB7Ci0JCXJldCA9IGk5 MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihjZS0+c3RhdGUsIE5VTEwsIDAsCi0JCQkJCSAgICAgICBj dHgtPmdndHRfYWxpZ25tZW50LCBQSU5fSElHSCk7CisJCXJldCA9IGk5MTVfdm1hX3BpbihjZS0+ c3RhdGUsIDAsIGN0eC0+Z2d0dF9hbGlnbm1lbnQsCisJCQkJICAgUElOX0dMT0JBTCB8IFBJTl9I SUdIKTsKIAkJaWYgKHJldCkKIAkJCWdvdG8gZXJyb3I7CiAJfQpAQCAtMjEyNyw3ICsyMTI3LDcg QEAgc3RhdGljIHZvaWQgaW50ZWxfcmluZ19jb250ZXh0X3VucGluKHN0cnVjdCBpOTE1X2dlbV9j b250ZXh0ICpjdHgsCiAJCXJldHVybjsKIAogCWlmIChjZS0+c3RhdGUpCi0JCWk5MTVfZ2VtX29i amVjdF9nZ3R0X3VucGluKGNlLT5zdGF0ZSk7CisJCWk5MTVfdm1hX3VucGluKGNlLT5zdGF0ZSk7 CiAKIAlpOTE1X2dlbV9jb250ZXh0X3B1dChjdHgpOwogfQotLSAKMi44LjEKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=