From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH v5 8/9] drm/i915: Record the default hw state after reset upon load Date: Wed, 8 Nov 2017 19:15:01 +0000 Message-ID: <20171108191502.7629-9-chris@chris-wilson.co.uk> References: <20171108191502.7629-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 483FC6E77D for ; Wed, 8 Nov 2017 19:15:30 +0000 (UTC) In-Reply-To: <20171108191502.7629-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 VGFrZSBhIGNvcHkgb2YgdGhlIEhXIHN0YXRlIGFmdGVyIGEgcmVzZXQgdXBvbiBtb2R1bGUgbG9h ZGluZyBieQpleGVjdXRpbmcgYSBjb250ZXh0IHN3aXRjaCBmcm9tIGEgYmxhbmsgY29udGV4dCB0 byB0aGUga2VybmVsIGNvbnRleHQsCnRodXMgc2F2aW5nIHRoZSBkZWZhdWx0IGh3IHN0YXRlIG92 ZXIgdGhlIGJsYW5rIGNvbnRleHQgaW1hZ2UuCldlIGNhbiB0aGVuIHVzZSB0aGUgZGVmYXVsdCBo dyBzdGF0ZSB0byBpbml0aWFsaXNlIGFueSBmdXR1cmUgY29udGV4dCwKZW5zdXJpbmcgdGhhdCBl YWNoIHN0YXJ0cyB3aXRoIHRoZSBkZWZhdWx0IHZpZXcgb2YgaHcgc3RhdGUuCgp2MjogVW5tYXAg b3VyIGRlZmF1bHQgc3RhdGUgZnJvbSB0aGUgR1RUIGFmdGVyIHN0ZWFsaW5nIGl0IGZyb20gdGhl CmNvbnRleHQuIFRoaXMgc2hvdWxkIHN0b3AgdXMgZnJvbSBhY2NpZGVudGFsbHkgb3ZlcndyaXRp bmcgaXQgdmlhIHRoZQpHVFQgKGFuZCBmcmVlcyB1cCBzb21lIHByZWNpb3VzIEdUVCBzcGFjZSku CgpUZXN0Y2FzZTogaWd0L2dlbV9jdHhfaXNvbGF0aW9uClNpZ25lZC1vZmYtYnk6IENocmlzIFdp bHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxs ZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KQ2M6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxh aHRpbmVuQGxpbnV4LmludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IEpvb25hcyBMYWh0aW5lbiA8am9v bmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9n dnQvc2NoZWR1bGVyLmMgICAgfCAgIDIgLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMgICAgIHwgICAxIC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAg ICB8ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgfCAxMTUg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2NvbnRleHQuYyB8ICA1NSArKysrLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuaCB8ICAgNCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZW5naW5lX2NzLmMgIHwgIDE3ICsrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuYyAgICAgICAgfCAgMzkgKysrKysrKy0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuYyB8ICA0NSArKysrKysrKystLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmggfCAgIDIgKwogaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oICAg ICAgICAgICAgIHwgIDE1ICsrKysrCiAxMSBmaWxlcyBjaGFuZ2VkLCAyMjUgaW5zZXJ0aW9ucygr KSwgNzMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L3NjaGVkdWxlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jCmluZGV4 IGY2ZGVkNDc1YmIyYy4uNDJjYzYxMjMwY2E3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndnQvc2NoZWR1bGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVk dWxlci5jCkBAIC03MjMsOCArNzIzLDYgQEAgaW50IGludGVsX3ZncHVfaW5pdF9ndnRfY29udGV4 dChzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSkKIAlpZiAoSVNfRVJSKHZncHUtPnNoYWRvd19jdHgp KQogCQlyZXR1cm4gUFRSX0VSUih2Z3B1LT5zaGFkb3dfY3R4KTsKIAotCXZncHUtPnNoYWRvd19j dHgtPmVuZ2luZVtSQ1NdLmluaXRpYWxpc2VkID0gdHJ1ZTsKLQogCWJpdG1hcF96ZXJvKHZncHUt PnNoYWRvd19jdHhfZGVzY191cGRhdGVkLCBJOTE1X05VTV9FTkdJTkVTKTsKIAogCXJldHVybiAw OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwppbmRleCAzOTg4M2NkOTE1ZGIuLmNmY2Vm MTg5OWRhOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTE5NzQsNyArMTk3 NCw2IEBAIHN0YXRpYyBpbnQgaTkxNV9jb250ZXh0X3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0s IHZvaWQgKnVudXNlZCkKIAkJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9ICZjdHgtPmVuZ2lu ZVtlbmdpbmUtPmlkXTsKIAogCQkJc2VxX3ByaW50ZihtLCAiJXM6ICIsIGVuZ2luZS0+bmFtZSk7 Ci0JCQlzZXFfcHV0YyhtLCBjZS0+aW5pdGlhbGlzZWQgPyAnSScgOiAnaScpOwogCQkJaWYgKGNl LT5zdGF0ZSkKIAkJCQlkZXNjcmliZV9vYmoobSwgY2UtPnN0YXRlLT5vYmopOwogCQkJaWYgKGNl LT5yaW5nKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXggMWI0NDBmMmI5MGE1Li5kOTdmZTlj OTQzOWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAtNDA2LDYgKzQwNiw5IEBAIHN0YXRp YyBpbnQgaTkxNV9nZXRwYXJhbShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAog CQkgKi8KIAkJdmFsdWUgPSAxOwogCQlicmVhazsKKwljYXNlIEk5MTVfUEFSQU1fSEFTX0NPTlRF WFRfSVNPTEFUSU9OOgorCQl2YWx1ZSA9IGludGVsX2VuZ2luZXNfaGFzX2NvbnRleHRfaXNvbGF0 aW9uKGRldl9wcml2KTsKKwkJYnJlYWs7CiAJY2FzZSBJOTE1X1BBUkFNX1NMSUNFX01BU0s6CiAJ CXZhbHVlID0gSU5URUxfSU5GTyhkZXZfcHJpdiktPnNzZXUuc2xpY2VfbWFzazsKIAkJaWYgKCF2 YWx1ZSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IDVjMGZjNzhkZTg1My4uMWZkMmU4ODA5 NjgzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTQ5NzIsNiArNDk3MiwxMjAgQEAgYm9v bCBpbnRlbF9zYW5pdGl6ZV9zZW1hcGhvcmVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgaW50IHZhbHVlKQogCXJldHVybiB0cnVlOwogfQogCitzdGF0aWMgaW50IF9faW50ZWxf ZW5naW5lc19yZWNvcmRfZGVmYXVsdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCit7 CisJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmU7CisJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CisJaW50IGVycjsKKworCS8qCisJ ICogQXMgd2UgcmVzZXQgdGhlIGdwdSBkdXJpbmcgdmVyeSBlYXJseSBzYW5pdGlzYXRpb24sIHRo ZSBjdXJyZW50CisJICogcmVnaXN0ZXIgc3RhdGUgb24gdGhlIEdQVSBzaG91bGQgcmVmbGVjdCBp dHMgZGVmYXVsdHMgdmFsdWVzLgorCSAqIFdlIGxvYWQgYSBjb250ZXh0IG9udG8gdGhlIGh3ICh3 aXRoIHJlc3RvcmUtaW5oaWJpdCksIHRoZW4gc3dpdGNoCisJICogb3ZlciB0byBhIHNlY29uZCBj b250ZXh0IHRvIHNhdmUgdGhhdCBkZWZhdWx0IHJlZ2lzdGVyIHN0YXRlLiBXZQorCSAqIGNhbiB0 aGVuIHByaW1lIGV2ZXJ5IG5ldyBjb250ZXh0IHdpdGggdGhhdCBzdGF0ZSBzbyB0aGV5IGFsbCBz dGFydAorCSAqIGZyb20gdGhlIHNhbWUgZGVmYXVsdCBIVyB2YWx1ZXMuCisJICovCisKKwljdHgg PSBpOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9rZXJuZWwoaTkxNSwgMCk7CisJaWYgKElTX0VSUihj dHgpKQorCQlyZXR1cm4gUFRSX0VSUihjdHgpOworCisJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwg aTkxNSwgaWQpIHsKKwkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycTsKKworCQlycSA9 IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2MoZW5naW5lLCBjdHgpOworCQlpZiAoSVNfRVJSKHJxKSkg eworCQkJZXJyID0gUFRSX0VSUihycSk7CisJCQlnb3RvIG91dF9jdHg7CisJCX0KKworCQllcnIg PSBpOTE1X3N3aXRjaF9jb250ZXh0KHJxKTsKKwkJaWYgKGVuZ2luZS0+aW5pdF9jb250ZXh0KQor CQkJZXJyID0gZW5naW5lLT5pbml0X2NvbnRleHQocnEpOworCisJCV9faTkxNV9hZGRfcmVxdWVz dChycSwgdHJ1ZSk7CisJCWlmIChlcnIpCisJCQlnb3RvIGVycl9hY3RpdmU7CisJfQorCisJZXJy ID0gaTkxNV9nZW1fc3dpdGNoX3RvX2tlcm5lbF9jb250ZXh0KGk5MTUpOworCWlmIChlcnIpCisJ CWdvdG8gZXJyX2FjdGl2ZTsKKworCWVyciA9IGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoaTkxNSwg STkxNV9XQUlUX0xPQ0tFRCk7CisJaWYgKGVycikKKwkJZ290byBlcnJfYWN0aXZlOworCisJYXNz ZXJ0X2tlcm5lbF9jb250ZXh0X2lzX2N1cnJlbnQoaTkxNSk7CisKKwlmb3JfZWFjaF9lbmdpbmUo ZW5naW5lLCBpOTE1LCBpZCkgeworCQlzdHJ1Y3QgaTkxNV92bWEgKnN0YXRlOworCisJCXN0YXRl ID0gY3R4LT5lbmdpbmVbaWRdLnN0YXRlOworCQlpZiAoIXN0YXRlKQorCQkJY29udGludWU7CisK KwkJLyoKKwkJICogQXMgd2Ugd2lsbCBob2xkIGEgcmVmZXJlbmNlIHRvIHRoZSBsb2dpY2FsIHN0 YXRlLCBpdCB3aWxsCisJCSAqIG5vdCBiZSB0b3JuIGRvd24gd2l0aCB0aGUgY29udGV4dCwgYW5k IGltcG9ydGFudGx5IHRoZQorCQkgKiBvYmplY3Qgd2lsbCBob2xkIG9udG8gaXRzIHZtYSAobWFr aW5nIGl0IHBvc3NpYmxlIGZvciBhCisJCSAqIHN0cmF5IEdUVCB3cml0ZSB0byBjb3JydXB0IG91 ciBkZWZhdWx0cykuIFVubWFwIHRoZSB2bWEKKwkJICogZnJvbSB0aGUgR1RUIHRvIHByZXZlbnQg c3VjaCBhY2NpZGVudHMgYW5kIHJlY2xhaW0gdGhlCisJCSAqIHNwYWNlLgorCQkgKi8KKwkJZXJy ID0gaTkxNV92bWFfdW5iaW5kKHN0YXRlKTsKKwkJaWYgKGVycikKKwkJCWdvdG8gZXJyX2FjdGl2 ZTsKKworCQllcnIgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2NwdV9kb21haW4oc3RhdGUtPm9i aiwgZmFsc2UpOworCQlpZiAoZXJyKQorCQkJZ290byBlcnJfYWN0aXZlOworCisJCWVuZ2luZS0+ ZGVmYXVsdF9zdGF0ZSA9IGk5MTVfZ2VtX29iamVjdF9nZXQoc3RhdGUtPm9iaik7CisJfQorCisJ aWYgKElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX0dFTSkpIHsKKwkJdW5zaWduZWQg aW50IGZvdW5kID0gaW50ZWxfZW5naW5lc19oYXNfY29udGV4dF9pc29sYXRpb24oaTkxNSk7CisK KwkJLyoKKwkJICogTWFrZSBzdXJlIHRoYXQgY2xhc3NlcyB3aXRoIG11bHRpcGxlIGVuZ2luZSBp bnN0YW5jZXMgYWxsCisJCSAqIHNoYXJlIHRoZSBzYW1lIGJhc2ljIGNvbmZpZ3VyYXRpb24uCisJ CSAqLworCQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgeworCQkJdW5zaWduZWQg aW50IGJpdCA9IEJJVChlbmdpbmUtPnVhYmlfY2xhc3MpOworCQkJdW5zaWduZWQgaW50IGV4cGVj dGVkID0gZW5naW5lLT5kZWZhdWx0X3N0YXRlID8gYml0IDogMDsKKworCQkJaWYgKChmb3VuZCAm IGJpdCkgIT0gZXhwZWN0ZWQpIHsKKwkJCQlEUk1fRVJST1IoIm1pc21hdGNoaW5nIGRlZmF1bHQg Y29udGV4dCBzdGF0ZSBmb3IgY2xhc3MgJWQgb24gZW5naW5lICVzXG4iLAorCQkJCQkgIGVuZ2lu ZS0+dWFiaV9jbGFzcywgZW5naW5lLT5uYW1lKTsKKwkJCX0KKwkJfQorCX0KKworb3V0X2N0eDoK KwlpOTE1X2dlbV9jb250ZXh0X3NldF9jbG9zZWQoY3R4KTsKKwlpOTE1X2dlbV9jb250ZXh0X3B1 dChjdHgpOworCXJldHVybiBlcnI7CisKK2Vycl9hY3RpdmU6CisJLyoKKwkgKiBJZiB3ZSBoYXZl IHRvIGFiYW5kb24gbm93LCB3ZSBleHBlY3QgdGhlIGVuZ2luZXMgdG8gYmUgaWRsZQorCSAqIGFu ZCByZWFkeSB0byBiZSB0b3JuLWRvd24uIEZpcnN0IHRyeSB0byBmbHVzaCBhbnkgcmVtYWluaW5n CisJICogcmVxdWVzdCwgZW5zdXJlIHdlIGFyZSBwb2ludGluZyBhdCB0aGUga2VybmVsIGNvbnRl eHQgYW5kCisJICogdGhlbiByZW1vdmUgaXQuCisJICovCisJaWYgKFdBUk5fT04oaTkxNV9nZW1f c3dpdGNoX3RvX2tlcm5lbF9jb250ZXh0KGk5MTUpKSkKKwkJZ290byBvdXRfY3R4OworCisJaWYg KFdBUk5fT04oaTkxNV9nZW1fd2FpdF9mb3JfaWRsZShpOTE1LCBJOTE1X1dBSVRfTE9DS0VEKSkp CisJCWdvdG8gb3V0X2N0eDsKKworCWk5MTVfZ2VtX2NvbnRleHRzX2xvc3QoaTkxNSk7CisJZ290 byBvdXRfY3R4OworfQorCiBpbnQgaTkxNV9nZW1faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCiB7CiAJaW50IHJldDsKQEAgLTUwMzcsNiArNTE1MSw3IEBAIGludCBpOTE1 X2dlbV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkgKi8KIAlpbnRl bF9pbml0X2Nsb2NrX2dhdGluZyhkZXZfcHJpdik7CiAKKwlyZXQgPSBfX2ludGVsX2VuZ2luZXNf cmVjb3JkX2RlZmF1bHRzKGRldl9wcml2KTsKIG91dF91bmxvY2s6CiAJaWYgKHJldCA9PSAtRUlP KSB7CiAJCS8qIEFsbG93IGVuZ2luZSBpbml0aWFsaXNhdGlvbiB0byBmYWlsIGJ5IG1hcmtpbmcg dGhlIEdQVSBhcwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29u dGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCmluZGV4IDEw YWZmYjM1YWM1Ni4uMzFlZTVlYzRhMGE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Y29udGV4dC5jCkBAIC00MTgsOCArNDE4LDggQEAgaTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZ3Z0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJcmV0dXJuIGN0eDsKIH0KIAotc3RhdGljIHN0cnVj dCBpOTE1X2dlbV9jb250ZXh0ICoKLWNyZWF0ZV9rZXJuZWxfY29udGV4dChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwgaW50IHByaW8pCitzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqCitp OTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9rZXJuZWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsIGludCBwcmlvKQogewogCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7CiAKQEAgLTQ3 Myw3ICs0NzMsNyBAQCBpbnQgaTkxNV9nZW1fY29udGV4dHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiAJaWRhX2luaXQoJmRldl9wcml2LT5jb250ZXh0cy5od19pZGEp OwogCiAJLyogbG93ZXN0IHByaW9yaXR5OyBpZGxlIHRhc2sgKi8KLQljdHggPSBjcmVhdGVfa2Vy bmVsX2NvbnRleHQoZGV2X3ByaXYsIEk5MTVfUFJJT1JJVFlfTUlOKTsKKwljdHggPSBpOTE1X2dl bV9jb250ZXh0X2NyZWF0ZV9rZXJuZWwoZGV2X3ByaXYsIEk5MTVfUFJJT1JJVFlfTUlOKTsKIAlp ZiAoSVNfRVJSKGN0eCkpIHsKIAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRlZmF1bHQg Z2xvYmFsIGNvbnRleHRcbiIpOwogCQllcnIgPSBQVFJfRVJSKGN0eCk7CkBAIC00ODcsNyArNDg3 LDcgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQogCWRldl9wcml2LT5rZXJuZWxfY29udGV4dCA9IGN0eDsKIAogCS8qIGhpZ2hl c3QgcHJpb3JpdHk7IHByZWVtcHRpbmcgdGFzayAqLwotCWN0eCA9IGNyZWF0ZV9rZXJuZWxfY29u dGV4dChkZXZfcHJpdiwgSU5UX01BWCk7CisJY3R4ID0gaTkxNV9nZW1fY29udGV4dF9jcmVhdGVf a2VybmVsKGRldl9wcml2LCBJTlRfTUFYKTsKIAlpZiAoSVNfRVJSKGN0eCkpIHsKIAkJRFJNX0VS Uk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRlZmF1bHQgcHJlZW1wdCBjb250ZXh0XG4iKTsKIAkJZXJy ID0gUFRSX0VSUihjdHgpOwpAQCAtNTIyLDI4ICs1MjIsNiBAQCB2b2lkIGk5MTVfZ2VtX2NvbnRl eHRzX2xvc3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQllbmdpbmUtPmNv bnRleHRfdW5waW4oZW5naW5lLCBlbmdpbmUtPmxhc3RfcmV0aXJlZF9jb250ZXh0KTsKIAkJZW5n aW5lLT5sYXN0X3JldGlyZWRfY29udGV4dCA9IE5VTEw7CiAJfQotCi0JLyogRm9yY2UgdGhlIEdQ VSBzdGF0ZSB0byBiZSByZXN0b3JlZCBvbiBlbmFibGluZyAqLwotCWlmICghaTkxNV9tb2RwYXJh bXMuZW5hYmxlX2V4ZWNsaXN0cykgewotCQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owot Ci0JCWxpc3RfZm9yX2VhY2hfZW50cnkoY3R4LCAmZGV2X3ByaXYtPmNvbnRleHRzLmxpc3QsIGxp bmspIHsKLQkJCWlmICghaTkxNV9nZW1fY29udGV4dF9pc19kZWZhdWx0KGN0eCkpCi0JCQkJY29u dGludWU7Ci0KLQkJCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCBpZCkKLQkJCQlj dHgtPmVuZ2luZVtlbmdpbmUtPmlkXS5pbml0aWFsaXNlZCA9IGZhbHNlOwotCi0JCQljdHgtPnJl bWFwX3NsaWNlID0gQUxMX0wzX1NMSUNFUyhkZXZfcHJpdik7Ci0JCX0KLQotCQlmb3JfZWFjaF9l bmdpbmUoZW5naW5lLCBkZXZfcHJpdiwgaWQpIHsKLQkJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpr Y2UgPQotCQkJCSZkZXZfcHJpdi0+a2VybmVsX2NvbnRleHQtPmVuZ2luZVtlbmdpbmUtPmlkXTsK LQotCQkJa2NlLT5pbml0aWFsaXNlZCA9IHRydWU7Ci0JCX0KLQl9CiB9CiAKIHZvaWQgaTkxNV9n ZW1fY29udGV4dHNfZmluaShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKQEAgLTcxOCw5 ICs2OTYsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2tpcF9yY3Nfc3dpdGNoKHN0cnVjdCBpOTE1 X2h3X3BwZ3R0ICpwcGd0dCwKIAlpZiAodG8tPnJlbWFwX3NsaWNlKQogCQlyZXR1cm4gZmFsc2U7 CiAKLQlpZiAoIXRvLT5lbmdpbmVbUkNTXS5pbml0aWFsaXNlZCkKLQkJcmV0dXJuIGZhbHNlOwot CiAJaWYgKHBwZ3R0ICYmIChpbnRlbF9lbmdpbmVfZmxhZyhlbmdpbmUpICYgcHBndHQtPnBkX2Rp cnR5X3JpbmdzKSkKIAkJcmV0dXJuIGZhbHNlOwogCkBAIC03OTUsMTEgKzc3MCwxNCBAQCBzdGF0 aWMgaW50IGRvX3Jjc19zd2l0Y2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiAJ CQlyZXR1cm4gcmV0OwogCX0KIAotCWlmICghdG8tPmVuZ2luZVtSQ1NdLmluaXRpYWxpc2VkIHx8 IGk5MTVfZ2VtX2NvbnRleHRfaXNfZGVmYXVsdCh0bykpCi0JCS8qIE5COiBJZiB3ZSBpbmhpYml0 IHRoZSByZXN0b3JlLCB0aGUgY29udGV4dCBpcyBub3QgYWxsb3dlZCB0bwotCQkgKiBkaWUgYmVj YXVzZSBmdXR1cmUgd29yayBtYXkgZW5kIHVwIGRlcGVuZGluZyBvbiB2YWxpZCBhZGRyZXNzCi0J CSAqIHNwYWNlLiBUaGlzIG1lYW5zIHdlIG11c3QgZW5mb3JjZSB0aGF0IGEgcGFnZSB0YWJsZSBs b2FkCi0JCSAqIG9jY3VyIHdoZW4gdGhpcyBvY2N1cnMuICovCisJaWYgKGk5MTVfZ2VtX2NvbnRl eHRfaXNfa2VybmVsKHRvKSkKKwkJLyoKKwkJICogVGhlIGtlcm5lbCBjb250ZXh0KHMpIGlzIHRy ZWF0ZWQgYXMgcHVyZSBzY3JhdGNoIGFuZCBpcyBub3QKKwkJICogZXhwZWN0ZWQgdG8gcmV0YWlu IGFueSBzdGF0ZSAoYXMgd2Ugc2FjcmlmaWNlIGl0IGR1cmluZworCQkgKiBzdXNwZW5kIGFuZCBv biByZXN1bWUgaXQgbWF5IGJlIGNvcnJ1cHRlZCkuIFRoaXMgaXMgb2ssCisJCSAqIGFzIG5vdGhp bmcgYWN0dWFsbHkgZXhlY3V0ZXMgdXNpbmcgdGhlIGtlcm5lbCBjb250ZXh0OyBpdAorCQkgKiBp cyBwdXJlbHkgdXNlZCBmb3IgZmx1c2hpbmcgdXNlciBjb250ZXh0cy4KKwkJICovCiAJCWh3X2Zs YWdzID0gTUlfUkVTVE9SRV9JTkhJQklUOwogCWVsc2UgaWYgKHBwZ3R0ICYmIGludGVsX2VuZ2lu ZV9mbGFnKGVuZ2luZSkgJiBwcGd0dC0+cGRfZGlydHlfcmluZ3MpCiAJCWh3X2ZsYWdzID0gTUlf Rk9SQ0VfUkVTVE9SRTsKQEAgLTg0MywxNSArODIxLDYgQEAgc3RhdGljIGludCBkb19yY3Nfc3dp dGNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogCQl0by0+cmVtYXBfc2xpY2Ug Jj0gfigxPDxpKTsKIAl9CiAKLQlpZiAoIXRvLT5lbmdpbmVbUkNTXS5pbml0aWFsaXNlZCkgewot CQlpZiAoZW5naW5lLT5pbml0X2NvbnRleHQpIHsKLQkJCXJldCA9IGVuZ2luZS0+aW5pdF9jb250 ZXh0KHJlcSk7Ci0JCQlpZiAocmV0KQotCQkJCXJldHVybiByZXQ7Ci0JCX0KLQkJdG8tPmVuZ2lu ZVtSQ1NdLmluaXRpYWxpc2VkID0gdHJ1ZTsKLQl9Ci0KIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCmluZGV4IDQ0Njg4ZTIyYTVjMi4uNGJmYjcy ZjhlMWNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0 LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCkBAIC0xNTcs NyArMTU3LDYgQEAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgewogCQl1MzIgKmxyY19yZWdfc3Rh dGU7CiAJCXU2NCBscmNfZGVzYzsKIAkJaW50IHBpbl9jb3VudDsKLQkJYm9vbCBpbml0aWFsaXNl ZDsKIAl9IGVuZ2luZVtJOTE1X05VTV9FTkdJTkVTXTsKIAogCS8qKiByaW5nX3NpemU6IHNpemUg Zm9yIGFsbG9jYXRpbmcgdGhlIHBlci1lbmdpbmUgcmluZyBidWZmZXIgKi8KQEAgLTI5Miw2ICsy OTEsOSBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9zZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLAogaW50IGk5MTVfZ2VtX2NvbnRleHRfcmVzZXRfc3RhdHNf aW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCQkgICAgICAgc3Ry dWN0IGRybV9maWxlICpmaWxlKTsKIAorc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKgoraTkxNV9n ZW1fY29udGV4dF9jcmVhdGVfa2VybmVsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBp bnQgcHJpbyk7CisKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKgogaTkx NV9nZW1fY29udGV4dF9nZXQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKIHsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKaW5kZXggMDQ3ZmNhNjU2YjRkLi40OTJjZDlm MjUwNTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCkBAIC02ODcsNiAr Njg3LDkgQEAgdm9pZCBpbnRlbF9lbmdpbmVfY2xlYW51cF9jb21tb24oc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQogCWludGVsX2VuZ2luZV9jbGVhbnVwX2NtZF9wYXJzZXIoZW5naW5l KTsKIAlpOTE1X2dlbV9iYXRjaF9wb29sX2ZpbmkoJmVuZ2luZS0+YmF0Y2hfcG9vbCk7CiAKKwlp ZiAoZW5naW5lLT5kZWZhdWx0X3N0YXRlKQorCQlpOTE1X2dlbV9vYmplY3RfcHV0KGVuZ2luZS0+ ZGVmYXVsdF9zdGF0ZSk7CisKIAlpZiAoSEFTX0xPR0lDQUxfUklOR19QUkVFTVBUSU9OKGVuZ2lu ZS0+aTkxNSkpCiAJCWVuZ2luZS0+Y29udGV4dF91bnBpbihlbmdpbmUsIGVuZ2luZS0+aTkxNS0+ cHJlZW1wdF9jb250ZXh0KTsKIAllbmdpbmUtPmNvbnRleHRfdW5waW4oZW5naW5lLCBlbmdpbmUt Pmk5MTUtPmtlcm5lbF9jb250ZXh0KTsKQEAgLTE3MDEsNiArMTcwNCwyMCBAQCBib29sIGludGVs X2VuZ2luZV9jYW5fc3RvcmVfZHdvcmQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQog CX0KIH0KIAordW5zaWduZWQgaW50IGludGVsX2VuZ2luZXNfaGFzX2NvbnRleHRfaXNvbGF0aW9u KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZTsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKKwl1bnNpZ25lZCBpbnQgd2hp Y2g7CisKKwl3aGljaCA9IDA7CisJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpCisJ CWlmIChlbmdpbmUtPmRlZmF1bHRfc3RhdGUpCisJCQl3aGljaCB8PSBCSVQoZW5naW5lLT51YWJp X2NsYXNzKTsKKworCXJldHVybiB3aGljaDsKK30KKwogc3RhdGljIHZvaWQgcHJpbnRfcmVxdWVz dChzdHJ1Y3QgZHJtX3ByaW50ZXIgKm0sCiAJCQkgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcnEsCiAJCQkgIGNvbnN0IGNoYXIgKnByZWZpeCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMK aW5kZXggOWI0ZTc0MTUxYWNlLi45MTExNTQ0OGI5NmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xy Yy5jCkBAIC0xMTYzLDcgKzExNjMsNiBAQCBzdGF0aWMgaW50IGV4ZWNsaXN0c19yZXF1ZXN0X2Fs bG9jKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIAlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUgPSByZXF1ZXN0LT5lbmdpbmU7CiAJc3RydWN0IGludGVsX2NvbnRl eHQgKmNlID0gJnJlcXVlc3QtPmN0eC0+ZW5naW5lW2VuZ2luZS0+aWRdOwogCXUzMiAqY3M7Ci0J aW50IHJldDsKIAogCUdFTV9CVUdfT04oIWNlLT5waW5fY291bnQpOwogCkBAIC0xMTc3LDE0ICsx MTc2LDYgQEAgc3RhdGljIGludCBleGVjbGlzdHNfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiAJaWYgKElTX0VSUihjcykpCiAJCXJldHVybiBQVFJf RVJSKGNzKTsKIAotCWlmICghY2UtPmluaXRpYWxpc2VkKSB7Ci0JCXJldCA9IGVuZ2luZS0+aW5p dF9jb250ZXh0KHJlcXVlc3QpOwotCQlpZiAocmV0KQotCQkJcmV0dXJuIHJldDsKLQotCQljZS0+ aW5pdGlhbGlzZWQgPSB0cnVlOwotCX0KLQogCS8qIE5vdGUgdGhhdCBhZnRlciB0aGlzIHBvaW50 LCB3ZSBoYXZlIGNvbW1pdHRlZCB0byB1c2luZwogCSAqIHRoaXMgcmVxdWVzdCBhcyBpdCBpcyBi ZWluZyB1c2VkIHRvIGJvdGggdHJhY2sgdGhlCiAJICogc3RhdGUgb2YgZW5naW5lIGluaXRpYWxp c2F0aW9uIGFuZCBsaXZlbmVzcyBvZiB0aGUKQEAgLTIxMTYsNyArMjEwNyw2IEBAIHN0YXRpYyB2 b2lkIGV4ZWNsaXN0c19pbml0X3JlZ19zdGF0ZSh1MzIgKnJlZ3MsCiAKIAlDVFhfUkVHKHJlZ3Ms IENUWF9DT05URVhUX0NPTlRST0wsIFJJTkdfQ09OVEVYVF9DT05UUk9MKGVuZ2luZSksCiAJCV9N QVNLRURfQklUX0VOQUJMRShDVFhfQ1RSTF9JTkhJQklUX1NZTl9DVFhfU1dJVENIIHwKLQkJCQkg ICBDVFhfQ1RSTF9FTkdJTkVfQ1RYX1JFU1RPUkVfSU5ISUJJVCB8CiAJCQkJICAgKEhBU19SRVNP VVJDRV9TVFJFQU1FUihkZXZfcHJpdikgPwogCQkJCSAgIENUWF9DVFJMX1JTX0NUWF9FTkFCTEUg OiAwKSkpOwogCUNUWF9SRUcocmVncywgQ1RYX1JJTkdfSEVBRCwgUklOR19IRUFEKGJhc2UpLCAw KTsKQEAgLTIxOTMsNiArMjE4Myw3IEBAIHBvcHVsYXRlX2xyX2NvbnRleHQoc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKmN0eCwKIAkJICAgIHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nKQogewogCXZv aWQgKnZhZGRyOworCXUzMiAqcmVnczsKIAlpbnQgcmV0OwogCiAJcmV0ID0gaTkxNV9nZW1fb2Jq ZWN0X3NldF90b19jcHVfZG9tYWluKGN0eF9vYmosIHRydWUpOwpAQCAtMjIwOSwxMSArMjIwMCwz MiBAQCBwb3B1bGF0ZV9scl9jb250ZXh0KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCiAJ fQogCWN0eF9vYmotPm1tLmRpcnR5ID0gdHJ1ZTsKIAorCWlmIChlbmdpbmUtPmRlZmF1bHRfc3Rh dGUpIHsKKwkJLyoKKwkJICogV2Ugb25seSB3YW50IHRvIGNvcHkgb3ZlciB0aGUgdGVtcGxhdGUg Y29udGV4dCBzdGF0ZTsKKwkJICogc2tpcHBpbmcgb3ZlciB0aGUgaGVhZGVycyByZXNlcnZlZCBm b3IgR3VDIGNvbXVuaWNhdGlvbiwKKwkJICogbGVhdmluZyB0aG9zZSBhcyB6ZXJvLgorCQkgKi8K KwkJY29uc3QgdW5zaWduZWQgbG9uZyBzdGFydCA9IExSQ19IRUFERVJfUEFHRVMgKiBQQUdFX1NJ WkU7CisJCXZvaWQgKmRlZmF1bHRzOworCisJCWRlZmF1bHRzID0gaTkxNV9nZW1fb2JqZWN0X3Bp bl9tYXAoZW5naW5lLT5kZWZhdWx0X3N0YXRlLAorCQkJCQkJICAgSTkxNV9NQVBfV0IpOworCQlp ZiAoSVNfRVJSKGRlZmF1bHRzKSkKKwkJCXJldHVybiBQVFJfRVJSKGRlZmF1bHRzKTsKKworCQlt ZW1jcHkodmFkZHIgKyBzdGFydCwgZGVmYXVsdHMgKyBzdGFydCwgZW5naW5lLT5jb250ZXh0X3Np emUpOworCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKGVuZ2luZS0+ZGVmYXVsdF9zdGF0ZSk7 CisJfQorCiAJLyogVGhlIHNlY29uZCBwYWdlIG9mIHRoZSBjb250ZXh0IG9iamVjdCBjb250YWlu cyBzb21lIGZpZWxkcyB3aGljaCBtdXN0CiAJICogYmUgc2V0IHVwIHByaW9yIHRvIHRoZSBmaXJz dCBleGVjdXRpb24uICovCi0KLQlleGVjbGlzdHNfaW5pdF9yZWdfc3RhdGUodmFkZHIgKyBMUkNf U1RBVEVfUE4gKiBQQUdFX1NJWkUsCi0JCQkJIGN0eCwgZW5naW5lLCByaW5nKTsKKwlyZWdzID0g dmFkZHIgKyBMUkNfU1RBVEVfUE4gKiBQQUdFX1NJWkU7CisJZXhlY2xpc3RzX2luaXRfcmVnX3N0 YXRlKHJlZ3MsIGN0eCwgZW5naW5lLCByaW5nKTsKKwlpZiAoIWVuZ2luZS0+ZGVmYXVsdF9zdGF0 ZSkgeworCQlyZWdzW0NUWF9DT05URVhUX0NPTlRST0wrMV0gfD0KKwkJCV9NQVNLRURfQklUX0VO QUJMRShDVFhfQ1RSTF9FTkdJTkVfQ1RYX1JFU1RPUkVfSU5ISUJJVCk7CisJfQogCiAJaTkxNV9n ZW1fb2JqZWN0X3VucGluX21hcChjdHhfb2JqKTsKIApAQCAtMjI2Niw3ICsyMjc4LDYgQEAgc3Rh dGljIGludCBleGVjbGlzdHNfY29udGV4dF9kZWZlcnJlZF9hbGxvYyhzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCAqY3R4LAogCiAJY2UtPnJpbmcgPSByaW5nOwogCWNlLT5zdGF0ZSA9IHZtYTsKLQlj ZS0+aW5pdGlhbGlzZWQgfD0gZW5naW5lLT5pbml0X2NvbnRleHQgPT0gTlVMTDsKIAogCXJldHVy biAwOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKaW5kZXggN2UyYTY3 MTg4MmZiLi40NjRkYzU4YWYyN2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmMKQEAgLTEzODQsMTEgKzEzODQsMzQgQEAgYWxsb2NfY29udGV4dF92bWEoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0g ZW5naW5lLT5pOTE1OwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CiAJc3RydWN0 IGk5MTVfdm1hICp2bWE7CisJaW50IGVycjsKIAogCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVh dGUoaTkxNSwgZW5naW5lLT5jb250ZXh0X3NpemUpOwogCWlmIChJU19FUlIob2JqKSkKIAkJcmV0 dXJuIEVSUl9DQVNUKG9iaik7CiAKKwlpZiAoZW5naW5lLT5kZWZhdWx0X3N0YXRlKSB7CisJCXZv aWQgKmRlZmF1bHRzLCAqdmFkZHI7CisKKwkJdmFkZHIgPSBpOTE1X2dlbV9vYmplY3RfcGluX21h cChvYmosIEk5MTVfTUFQX1dCKTsKKwkJaWYgKElTX0VSUih2YWRkcikpIHsKKwkJCWVyciA9IFBU Ul9FUlIodmFkZHIpOworCQkJZ290byBlcnJfb2JqOworCQl9CisKKwkJZGVmYXVsdHMgPSBpOTE1 X2dlbV9vYmplY3RfcGluX21hcChlbmdpbmUtPmRlZmF1bHRfc3RhdGUsCisJCQkJCQkgICBJOTE1 X01BUF9XQik7CisJCWlmIChJU19FUlIoZGVmYXVsdHMpKSB7CisJCQllcnIgPSBQVFJfRVJSKGRl ZmF1bHRzKTsKKwkJCWdvdG8gZXJyX21hcDsKKwkJfQorCisJCW1lbWNweSh2YWRkciwgZGVmYXVs dHMsIGVuZ2luZS0+Y29udGV4dF9zaXplKTsKKworCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFw KGVuZ2luZS0+ZGVmYXVsdF9zdGF0ZSk7CisJCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAob2Jq KTsKKwl9CisKIAkvKgogCSAqIFRyeSB0byBtYWtlIHRoZSBjb250ZXh0IHV0aWxpemUgTDMgYXMg d2VsbCBhcyBMTEMuCiAJICoKQEAgLTE0MTAsMTAgKzE0MzMsMTggQEAgYWxsb2NfY29udGV4dF92 bWEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCX0KIAogCXZtYSA9IGk5MTVfdm1h X2luc3RhbmNlKG9iaiwgJmk5MTUtPmdndHQuYmFzZSwgTlVMTCk7Ci0JaWYgKElTX0VSUih2bWEp KQotCQlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7CisJaWYgKElTX0VSUih2bWEpKSB7CisJCWVy ciA9IFBUUl9FUlIodm1hKTsKKwkJZ290byBlcnJfb2JqOworCX0KIAogCXJldHVybiB2bWE7CisK K2Vycl9tYXA6CisJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChvYmopOworZXJyX29iajoKKwlp OTE1X2dlbV9vYmplY3RfcHV0KG9iaik7CisJcmV0dXJuIEVSUl9QVFIoZXJyKTsKIH0KIAogc3Rh dGljIHN0cnVjdCBpbnRlbF9yaW5nICoKQEAgLTE0NDksMTYgKzE0ODAsNiBAQCBpbnRlbF9yaW5n X2NvbnRleHRfcGluKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJY2UtPnN0YXRl LT5vYmotPnBpbl9nbG9iYWwrKzsKIAl9CiAKLQkvKiBUaGUga2VybmVsIGNvbnRleHQgaXMgb25s eSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIGZsdXNoaW5nIHRoZQotCSAqIGFjdGl2ZSBjb250 ZXh0LiBJdCBpcyBuZXZlciB1c2VkIGZvciBzdWJtaXR0aW5nIHVzZXIgcmVuZGVyaW5nIGFuZAot CSAqIGFzIHN1Y2ggbmV2ZXIgcmVxdWlyZXMgdGhlIGdvbGRlbiByZW5kZXIgY29udGV4dCwgYW5k IHNvIHdlIGNhbiBza2lwCi0JICogZW1pdHRpbmcgaXQgd2hlbiB3ZSBzd2l0Y2ggdG8gdGhlIGtl cm5lbCBjb250ZXh0LiBUaGlzIGlzIHJlcXVpcmVkCi0JICogYXMgZHVyaW5nIGV2aWN0aW9uIHdl IGNhbm5vdCBhbGxvY2F0ZSBhbmQgcGluIHRoZSByZW5kZXJzdGF0ZSBpbgotCSAqIG9yZGVyIHRv IGluaXRpYWxpc2UgdGhlIGNvbnRleHQuCi0JICovCi0JaWYgKGk5MTVfZ2VtX2NvbnRleHRfaXNf a2VybmVsKGN0eCkpCi0JCWNlLT5pbml0aWFsaXNlZCA9IHRydWU7Ci0KIAlpOTE1X2dlbV9jb250 ZXh0X2dldChjdHgpOwogCiBvdXQ6CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmgKaW5kZXggN2QzOTAzYjlmYjFkLi5iZWYxNmQ4ZWQwM2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmgKQEAgLTMwNyw2ICszMDcsNyBAQCBzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzIHsKIAlzdHJ1Y3QgaW50ZWxfcmluZyAqYnVmZmVyOwogCXN0cnVjdCBpbnRlbF90aW1l bGluZSAqdGltZWxpbmU7CiAKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqZGVmYXVsdF9z dGF0ZTsKIAlzdHJ1Y3QgaW50ZWxfcmVuZGVyX3N0YXRlICpyZW5kZXJfc3RhdGU7CiAKIAlhdG9t aWNfdCBpcnFfY291bnQ7CkBAIC05MzMsNiArOTM0LDcgQEAgdm9pZCBpbnRlbF9lbmdpbmVzX3Bh cmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwogdm9pZCBpbnRlbF9lbmdpbmVzX3Vu cGFyayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7CiAKIHZvaWQgaW50ZWxfZW5naW5l c19yZXNldF9kZWZhdWx0X3N1Ym1pc3Npb24oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUp OwordW5zaWduZWQgaW50IGludGVsX2VuZ2luZXNfaGFzX2NvbnRleHRfaXNvbGF0aW9uKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKIAogYm9vbCBpbnRlbF9lbmdpbmVfY2FuX3N0b3Jl X2R3b3JkKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiAKZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaApp bmRleCA2NWQwNmRhNjI1OTkuLjg0OTJlYmQ3OTU2MiAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBp L2RybS9pOTE1X2RybS5oCisrKyBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaApAQCAtNDY1 LDYgKzQ2NSwyMSBAQCB0eXBlZGVmIHN0cnVjdCBkcm1faTkxNV9pcnFfd2FpdCB7CiAgKi8KICNk ZWZpbmUgSTkxNV9QQVJBTV9IQVNfRVhFQ19GRU5DRV9BUlJBWSAgNDkKIAorLyoKKyAqIFF1ZXJ5 IHdoZXRoZXIgZXZlcnkgY29udGV4dCAoYm90aCBwZXItZmlsZSBkZWZhdWx0IGFuZCB1c2VyIGNy ZWF0ZWQpIGlzCisgKiBpc29sYXRlZCAoaW5zb2ZhciBhcyBIVyBzdXBwb3J0cykuIElmIHRoaXMg cGFyYW1ldGVyIGlzIG5vdCB0cnVlLCB0aGVuCisgKiBmcmVzaGx5IGNyZWF0ZWQgY29udGV4dHMg bWF5IGluaGVyaXQgdmFsdWVzIGZyb20gYW4gZXhpc3RpbmcgY29udGV4dCwKKyAqIHJhdGhlciB0 aGFuIGRlZmF1bHQgSFcgdmFsdWVzLiBJZiB0cnVlLCBpdCBhbHNvIGVuc3VyZXMgKGluc29mYXIg YXMgSFcKKyAqIHN1cHBvcnRzKSB0aGF0IGFsbCBzdGF0ZSBzZXQgYnkgdGhpcyBjb250ZXh0IHdp bGwgbm90IGxlYWsgdG8gYW55IG90aGVyCisgKiBjb250ZXh0LgorICoKKyAqIEFzIG5vdCBldmVy eSBlbmdpbmUgYWNyb3NzIGV2ZXJ5IGdlbiBzdXBwb3J0IGNvbnRleHRzLCB0aGUgcmV0dXJuZWQK KyAqIHZhbHVlIHJlcG9ydHMgdGhlIHN1cHBvcnQgb2YgY29udGV4dCBpc29sYXRpb24gZm9yIGlu ZGl2aWR1YWwgZW5naW5lcyBieQorICogcmV0dXJuaW5nIGEgYml0bWFzayBvZiBlYWNoIGVuZ2lu ZSBjbGFzcyBzZXQgdG8gdHJ1ZSBpZiB0aGF0IGNsYXNzIHN1cHBvcnRzCisgKiBpc29sYXRpb24u CisgKi8KKyNkZWZpbmUgSTkxNV9QQVJBTV9IQVNfQ09OVEVYVF9JU09MQVRJT04gNTAKKwogdHlw ZWRlZiBzdHJ1Y3QgZHJtX2k5MTVfZ2V0cGFyYW0gewogCV9fczMyIHBhcmFtOwogCS8qCi0tIAoy LjE1LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=