From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oscar Mateo Subject: [PATCH 2/4 v2] drm/i915/guc: Add onion teardown to the GuC setup Date: Fri, 24 Feb 2017 06:01:35 -0800 Message-ID: <1487944897-31558-3-git-send-email-oscar.mateo@intel.com> References: <1487944897-31558-1-git-send-email-oscar.mateo@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 588B66E19D for ; Fri, 24 Feb 2017 22:01:50 +0000 (UTC) In-Reply-To: <1487944897-31558-1-git-send-email-oscar.mateo@intel.com> 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 U3RhcnRpbmcgd2l0aCBpbnRlbF9ndWNfbG9hZGVyLCBkb3duIHRvIGludGVsX2d1Y19zdWJtaXNz aW9uCmFuZCBmaW5hbGx5IHRvIGludGVsX2d1Y19sb2cuCgp2MjoKICAtIE51bGwgZXhlY2J1ZiBj bGllbnQgb3V0c2lkZSBndWNfY2xpZW50X2ZyZWUgKERhbmllbGUpCiAgLSBBc3NlcnQgaWYgdGhp bmdzIHRyeSB0byBnZXQgYWxsb2NhdGVkIHR3aWNlIChEYW5pZWxlL0pvb25hcykKICAtIE51bGwg Z3VjLT5sb2cuYnVmX2FkZHIgd2hlbiBkZXN0cm95ZWQgKERhbmllbGUpCiAgLSBOZXdsaW5lIGJl dHdlZW4gcmV0dXJuaW5nIHN1Y2Nlc3MgYW5kIGVycm9yIGxhYmVscyAoSm9vbmFzKQogIC0gUmVt b3ZlIHNvbWUgdW5uZWNlc3NhcnkgY29tbWVudHMgKEpvb25hcykKICAtIEtlZXAgZ3VjX2xvZ19j cmVhdGVfZXh0cmFzIG5hbWluZyBjb252ZW50aW9uIChKb29uYXMpCiAgLSBIZWxwZXIgZnVuY3Rp b24gZ3VjX2xvZ19oYXNfZXh0cmFzIChKb29uYXMpCiAgLSBObyBuZWVkIGZvciBzZXBhcmF0ZSBy ZWxheV9jaGFubmVsIGNyZWF0ZS9kZXN0cm95LiBJdCdzIGp1c3QgYW5vdGhlciBleHRyYS4KICAt IE5vIG5lZWQgdG8gbnVsbGlmeSBndWMtPmxvZy5mbHVzaF93cSB3aGVuIGRlc3Ryb3llZCAoSm9v bmFzKQogIC0gSG9pc3QgdGhlIGNoZWNrIGZvciBoYXNfZXh0cmFzIG91dCBvZiBndWNfbG9nX2Ny ZWF0ZV9leHRyYXMgKEpvb25hcykKICAtIFRyeSB0byBkbyBpOTE1X2d1Y19sb2dfcmVnaXN0ZXIv dW5yZWdpc3RlciBjYWxscyAoa2luZCBvZikgc3ltbWV0cmljIChEYW5pZWxlKQogIC0gTWFrZSBz dXJlIGluaXRlbF9ndWNfZmluaSBpcyBub3QgY2FsbGVkIGJlZm9yZSBpbml0IGlzIGV2ZXIgY2Fs bGVkIChEYW5pZWxlKQoKQ2M6IERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9s b3NwdXJpb0BpbnRlbC5jb20+CkNjOiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBs aW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IE9zY2FyIE1hdGVvIDxvc2Nhci5tYXRlb0Bp bnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgICAg IHwgICA3ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgfCAg OTYgKysrKy0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyAgICB8 ICAzMiArLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2cuYyAgICAgICB8IDM2 MCArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfdWMuaCAgICAgICAgICAgIHwgICA4ICstCiA1IGZpbGVzIGNoYW5nZWQsIDI2MiBpbnNlcnRp b25zKCspLCAyNDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXggYjc2 ZThmNy4uMGMyZWU1ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCkBAIC01NTEsNiArNTUxLDgg QEAgc3RhdGljIGJvb2wgaTkxNV9zd2l0Y2hlcm9vX2Nhbl9zd2l0Y2goc3RydWN0IHBjaV9kZXYg KnBkZXYpCiBzdGF0aWMgdm9pZCBpOTE1X2dlbV9maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKIHsKIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7 CisJaWYgKGk5MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9uKQorCQlpbnRlbF9ndWNfY2xlYW51cChk ZXZfcHJpdik7CiAJaTkxNV9nZW1fY2xlYW51cF9lbmdpbmVzKGRldl9wcml2KTsKIAlpOTE1X2dl bV9jb250ZXh0X2ZpbmkoZGV2X3ByaXYpOwogCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5z dHJ1Y3RfbXV0ZXgpOwpAQCAtNjE0LDcgKzYxNiw3IEBAIHN0YXRpYyBpbnQgaTkxNV9sb2FkX21v ZGVzZXRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCiAJcmV0ID0gaTkxNV9nZW1faW5p dChkZXZfcHJpdik7CiAJaWYgKHJldCkKLQkJZ290byBjbGVhbnVwX2lycTsKKwkJZ290byBjbGVh bnVwX3VjOwogCiAJaW50ZWxfbW9kZXNldF9nZW1faW5pdChkZXYpOwogCkBAIC02MzYsOSArNjM4 LDEwIEBAIHN0YXRpYyBpbnQgaTkxNV9sb2FkX21vZGVzZXRfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQogCWlmIChpOTE1X2dlbV9zdXNwZW5kKGRldl9wcml2KSkKIAkJRFJNX0VSUk9SKCJm YWlsZWQgdG8gaWRsZSBoYXJkd2FyZTsgY29udGludWluZyB0byB1bmxvYWQhXG4iKTsKIAlpOTE1 X2dlbV9maW5pKGRldl9wcml2KTsKLWNsZWFudXBfaXJxOgorY2xlYW51cF91YzoKIAlpbnRlbF9n dWNfZmluaShkZXZfcHJpdik7CiAJaW50ZWxfaHVjX2ZpbmkoZGV2X3ByaXYpOworY2xlYW51cF9p cnE6CiAJZHJtX2lycV91bmluc3RhbGwoZGV2KTsKIAlpbnRlbF90ZWFyZG93bl9nbWJ1cyhkZXZf cHJpdik7CiBjbGVhbnVwX2NzcjoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1p c3Npb24uYwppbmRleCBkNTg0N2U4Li43NTYyMzQzYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwpAQCAtNjk5LDYgKzY5OSw3IEBAIHN0YXRpYyBpbnQgZ3Vj X2luaXRfZG9vcmJlbGxfaHcoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogCQlnb3RvIGVycl91cGRh dGU7CiAKIAlyZXR1cm4gMDsKKwogZXJyX3Jlc2VydmU6CiAJX191bnJlc2VydmVfZG9vcmJlbGwo Y2xpZW50KTsKIGVycl91cGRhdGU6CkBAIC03ODksMTMgKzc5MCwxMyBAQCBzdGF0aWMgaW50IGd1 Y19pbml0X2Rvb3JiZWxsX2h3KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIAkJCSBjbGllbnQtPmRv b3JiZWxsX2lkLCBjbGllbnQtPmRvb3JiZWxsX29mZnNldCk7CiAKIAlyZXR1cm4gY2xpZW50Owor CiBlcnJfdm1hOgogCWk5MTVfdm1hX3VucGluX2FuZF9yZWxlYXNlKCZjbGllbnQtPnZtYSk7CiBl cnJfaWQ6CiAJaWRhX3NpbXBsZV9yZW1vdmUoJmd1Yy0+Y3R4X2lkcywgY2xpZW50LT5jdHhfaW5k ZXgpOwogZXJyX2NsaWVudDoKIAlrZnJlZShjbGllbnQpOwotCiAJcmV0dXJuIEVSUl9QVFIocmV0 KTsKIH0KIApAQCAtODIxLDcgKzgyMiw3IEBAIHN0YXRpYyB2b2lkIGd1Y19wb2xpY2llc19pbml0 KHN0cnVjdCBndWNfcG9saWNpZXMgKnBvbGljaWVzKQogCXBvbGljaWVzLT5pc192YWxpZCA9IDE7 CiB9CiAKLXN0YXRpYyB2b2lkIGd1Y19hZGRvbl9jcmVhdGUoc3RydWN0IGludGVsX2d1YyAqZ3Vj KQorc3RhdGljIGludCBndWNfYWRkb25fY3JlYXRlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIHsK IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBndWNfdG9faTkxNShndWMpOwog CXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwpAQCAtODMzLDE5ICs4MzQsMTggQEAgc3RhdGljIHZvaWQg Z3VjX2FkZG9uX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiAJc3RydWN0IHBhZ2UgKnBh Z2U7CiAJdTMyIHNpemU7CiAKKwlHRU1fQlVHX09OKGd1Yy0+YWRzX3ZtYSk7CisKIAkvKiBUaGUg YWRzIG9iaiBpbmNsdWRlcyB0aGUgc3RydWN0IGl0c2VsZiBhbmQgYnVmZmVycyBwYXNzZWQgdG8g R3VDICovCiAJc2l6ZSA9IHNpemVvZihzdHJ1Y3QgZ3VjX2FkcykgKyBzaXplb2Yoc3RydWN0IGd1 Y19wb2xpY2llcykgKwogCQkJc2l6ZW9mKHN0cnVjdCBndWNfbW1pb19yZWdfc3RhdGUpICsKIAkJ CUdVQ19TM19TQVZFX1NQQUNFX1BBR0VTICogUEFHRV9TSVpFOwogCi0Jdm1hID0gZ3VjLT5hZHNf dm1hOwotCWlmICghdm1hKSB7Ci0JCXZtYSA9IGludGVsX2d1Y19hbGxvY2F0ZV92bWEoZ3VjLCBQ QUdFX0FMSUdOKHNpemUpKTsKLQkJaWYgKElTX0VSUih2bWEpKQotCQkJcmV0dXJuOworCXZtYSA9 IGludGVsX2d1Y19hbGxvY2F0ZV92bWEoZ3VjLCBQQUdFX0FMSUdOKHNpemUpKTsKKwlpZiAoSVNf RVJSKHZtYSkpCisJCXJldHVybiBQVFJfRVJSKHZtYSk7CiAKLQkJZ3VjLT5hZHNfdm1hID0gdm1h OwotCX0KKwlndWMtPmFkc192bWEgPSB2bWE7CiAKIAlwYWdlID0gaTkxNV92bWFfZmlyc3RfcGFn ZSh2bWEpOwogCWFkcyA9IGttYXAocGFnZSk7CkBAIC04ODgsNiArODg4LDEzIEBAIHN0YXRpYyB2 b2lkIGd1Y19hZGRvbl9jcmVhdGUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogCQkJc2l6ZW9mKHN0 cnVjdCBndWNfbW1pb19yZWdfc3RhdGUpOwogCiAJa3VubWFwKHBhZ2UpOworCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyB2b2lkIGd1Y19hZGRvbl9kZXN0cm95KHN0cnVjdCBpbnRlbF9ndWMgKmd1 YykKK3sKKwlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFzZSgmZ3VjLT5hZHNfdm1hKTsKIH0KIAog LyoKQEAgLTkwMiw2ICs5MDksNyBAQCBpbnQgaTkxNV9ndWNfc3VibWlzc2lvbl9pbml0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAm ZGV2X3ByaXYtPmd1YzsKIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKIAl2b2lkICp2YWRkcjsKKwlp bnQgcmV0OwogCiAJaWYgKCFIQVNfR1VDX1NDSEVEKGRldl9wcml2KSkKIAkJcmV0dXJuIDA7CkBA IC05MTEsMTAgKzkxOSwxMCBAQCBpbnQgaTkxNV9ndWNfc3VibWlzc2lvbl9pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlpOTE1X2d1Y19zdWJtaXNzaW9uX2Rpc2FibGUo ZGV2X3ByaXYpOwogCiAJaWYgKCFpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbikKLQkJcmV0dXJu IDA7IC8qIG5vdCBlbmFibGVkICAqLworCQlyZXR1cm4gMDsKIAogCWlmIChndWMtPmN0eF9wb29s KQotCQlyZXR1cm4gMDsgLyogYWxyZWFkeSBhbGxvY2F0ZWQgKi8KKwkJcmV0dXJuIDA7CiAKIAl2 bWEgPSBpbnRlbF9ndWNfYWxsb2NhdGVfdm1hKGd1YywgZ2Vtc2l6ZSk7CiAJaWYgKElTX0VSUih2 bWEpKQpAQCAtOTIyLDE1ICs5MzAsMjMgQEAgaW50IGk5MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAlndWMtPmN0eF9wb29sID0gdm1h OwogCi0JdmFkZHIgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcCh2bWEtPm9iaiwgSTkxNV9NQVBf V0IpOwotCWlmIChJU19FUlIodmFkZHIpKQotCQlnb3RvIGVycjsKKwl2YWRkciA9IGk5MTVfZ2Vt X29iamVjdF9waW5fbWFwKGd1Yy0+Y3R4X3Bvb2wtPm9iaiwgSTkxNV9NQVBfV0IpOworCWlmIChJ U19FUlIodmFkZHIpKSB7CisJCXJldCA9IFBUUl9FUlIodmFkZHIpOworCQlnb3RvIGVycl92bWE7 CisJfQogCiAJZ3VjLT5jdHhfcG9vbF92YWRkciA9IHZhZGRyOwogCisJcmV0ID0gaW50ZWxfZ3Vj X2xvZ19jcmVhdGUoZ3VjKTsKKwlpZiAocmV0IDwgMCkKKwkJZ290byBlcnJfdmFkZHI7CisKKwly ZXQgPSBndWNfYWRkb25fY3JlYXRlKGd1Yyk7CisJaWYgKHJldCA8IDApCisJCWdvdG8gZXJyX2xv ZzsKKwogCWlkYV9pbml0KCZndWMtPmN0eF9pZHMpOwotCWludGVsX2d1Y19sb2dfY3JlYXRlKGd1 Yyk7Ci0JZ3VjX2FkZG9uX2NyZWF0ZShndWMpOwogCiAJZ3VjLT5leGVjYnVmX2NsaWVudCA9IGd1 Y19jbGllbnRfYWxsb2MoZGV2X3ByaXYsCiAJCQkJCSAgICAgICBJTlRFTF9JTkZPKGRldl9wcml2 KS0+cmluZ19tYXNrLApAQCAtOTM4LDE0ICs5NTQsMzQgQEAgaW50IGk5MTVfZ3VjX3N1Ym1pc3Np b25faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCQkJCSAgICAgICBk ZXZfcHJpdi0+a2VybmVsX2NvbnRleHQpOwogCWlmIChJU19FUlIoZ3VjLT5leGVjYnVmX2NsaWVu dCkpIHsKIAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIEd1QyBjbGllbnQgZm9yIGV4ZWNi dWYhXG4iKTsKLQkJZ290byBlcnI7CisJCXJldCA9IFBUUl9FUlIoZ3VjLT5leGVjYnVmX2NsaWVu dCk7CisJCWdvdG8gZXJyX2FkczsKIAl9CiAKIAlyZXR1cm4gMDsKIAotZXJyOgotCWk5MTVfZ3Vj X3N1Ym1pc3Npb25fZmluaShkZXZfcHJpdik7Ci0JcmV0dXJuIC1FTk9NRU07CitlcnJfYWRzOgor CWd1Y19hZGRvbl9kZXN0cm95KGd1Yyk7CitlcnJfbG9nOgorCWludGVsX2d1Y19sb2dfZGVzdHJv eShndWMpOworZXJyX3ZhZGRyOgorCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoZ3VjLT5jdHhf cG9vbC0+b2JqKTsKK2Vycl92bWE6CisJaTkxNV92bWFfdW5waW5fYW5kX3JlbGVhc2UoJmd1Yy0+ Y3R4X3Bvb2wpOworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgaTkxNV9ndWNfc3VibWlzc2lvbl9m aW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlzdHJ1Y3QgaW50ZWxf Z3VjICpndWMgPSAmZGV2X3ByaXYtPmd1YzsKKworCWd1Y19jbGllbnRfZnJlZShndWMtPmV4ZWNi dWZfY2xpZW50KTsKKwlndWMtPmV4ZWNidWZfY2xpZW50ID0gTlVMTDsKKwlpZGFfZGVzdHJveSgm Z3VjLT5jdHhfaWRzKTsKKwlndWNfYWRkb25fZGVzdHJveShndWMpOworCWludGVsX2d1Y19sb2df ZGVzdHJveShndWMpOworCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoZ3VjLT5jdHhfcG9vbC0+ b2JqKTsKKwlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFzZSgmZ3VjLT5jdHhfcG9vbCk7CiB9CiAK IHN0YXRpYyB2b2lkIGd1Y19yZXNldF93cShzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGllbnQp CkBAIC0xMDA3LDI2ICsxMDQzLDYgQEAgdm9pZCBpOTE1X2d1Y19zdWJtaXNzaW9uX2Rpc2FibGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWludGVsX2V4ZWNsaXN0c19lbmFi bGVfc3VibWlzc2lvbihkZXZfcHJpdik7CiB9CiAKLXZvaWQgaTkxNV9ndWNfc3VibWlzc2lvbl9m aW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKLXsKLQlzdHJ1Y3QgaW50ZWxf Z3VjICpndWMgPSAmZGV2X3ByaXYtPmd1YzsKLQlzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGll bnQ7Ci0KLQljbGllbnQgPSBmZXRjaF9hbmRfemVybygmZ3VjLT5leGVjYnVmX2NsaWVudCk7Ci0J aWYgKGNsaWVudCAmJiAhSVNfRVJSKGNsaWVudCkpCi0JCWd1Y19jbGllbnRfZnJlZShjbGllbnQp OwotCi0JaTkxNV92bWFfdW5waW5fYW5kX3JlbGVhc2UoJmd1Yy0+YWRzX3ZtYSk7Ci0JaTkxNV92 bWFfdW5waW5fYW5kX3JlbGVhc2UoJmd1Yy0+bG9nLnZtYSk7Ci0KLQlpZiAoZ3VjLT5jdHhfcG9v bF92YWRkcikgewotCQlpZGFfZGVzdHJveSgmZ3VjLT5jdHhfaWRzKTsKLQkJaTkxNV9nZW1fb2Jq ZWN0X3VucGluX21hcChndWMtPmN0eF9wb29sLT5vYmopOwotCX0KLQotCWk5MTVfdm1hX3VucGlu X2FuZF9yZWxlYXNlKCZndWMtPmN0eF9wb29sKTsKLX0KLQogLyoqCiAgKiBpbnRlbF9ndWNfc3Vz cGVuZCgpIC0gbm90aWZ5IEd1QyBlbnRlcmluZyBzdXNwZW5kIHN0YXRlCiAgKiBAZGV2X3ByaXY6 CWk5MTUgZGV2aWNlIHByaXZhdGUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2d1Y19sb2FkZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIu YwppbmRleCAyMmY4ODJkLi4xZjllYzU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ndWNfbG9hZGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Vj X2xvYWRlci5jCkBAIC00ODksNyArNDg5LDcgQEAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAllcnIgPSBpOTE1X2d1Y19zdWJtaXNzaW9u X2luaXQoZGV2X3ByaXYpOwogCWlmIChlcnIpCi0JCWdvdG8gZmFpbDsKKwkJZ290byBlcnJfZ3Vj OwogCiAJLyoKIAkgKiBXYUVuYWJsZXVLZXJuZWxIZWFkZXJWYWxpZEZpeDpza2wsYnh0CkBAIC01 MDQsNyArNTA0LDcgQEAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCiAJCSAqLwogCQllcnIgPSBndWNfaHdfcmVzZXQoZGV2X3ByaXYpOwogCQlp ZiAoZXJyKQotCQkJZ290byBmYWlsOworCQkJZ290byBlcnJfc3VibWlzc2lvbjsKIAogCQlpbnRl bF9odWNfbG9hZChkZXZfcHJpdik7CiAJCWVyciA9IGd1Y191Y29kZV94ZmVyKGRldl9wcml2KTsK QEAgLTUxMiw3ICs1MTIsNyBAQCBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKIAkJCWJyZWFrOwogCiAJCWlmICgtLXJldHJpZXMgPT0gMCkKLQkJ CWdvdG8gZmFpbDsKKwkJCWdvdG8gZXJyX3N1Ym1pc3Npb247CiAKIAkJRFJNX0lORk8oIkd1QyBm dyBsb2FkIGZhaWxlZDogJWQ7IHdpbGwgcmVzZXQgYW5kICIKIAkJCSAicmV0cnkgJWQgbW9yZSB0 aW1lKHMpXG4iLCBlcnIsIHJldHJpZXMpOwpAQCAtNTI4LDcgKzUyOCw3IEBAIGludCBpbnRlbF9n dWNfc2V0dXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiAJCWVyciA9IGk5 MTVfZ3VjX3N1Ym1pc3Npb25fZW5hYmxlKGRldl9wcml2KTsKIAkJaWYgKGVycikKLQkJCWdvdG8g ZmFpbDsKKwkJCWdvdG8gZXJyX2ludGVycnVwdHM7CiAJCWd1Y19pbnRlcnJ1cHRzX2NhcHR1cmUo ZGV2X3ByaXYpOwogCX0KIApAQCAtNTM5LDE1ICs1MzksMTYgQEAgaW50IGludGVsX2d1Y19zZXR1 cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAlyZXR1cm4gMDsKIAorZXJy X2ludGVycnVwdHM6CisJZ2VuOV9kaXNhYmxlX2d1Y19pbnRlcnJ1cHRzKGRldl9wcml2KTsKK2Vy cl9zdWJtaXNzaW9uOgorCWk5MTVfZ3VjX3N1Ym1pc3Npb25fZmluaShkZXZfcHJpdik7CitlcnJf Z3VjOgorCWk5MTVfZ2d0dF9kaXNhYmxlX2d1YyhkZXZfcHJpdik7CiBmYWlsOgogCWlmIChndWNf ZnctPmxvYWRfc3RhdHVzID09IElOVEVMX1VDX0ZJUk1XQVJFX1BFTkRJTkcpCiAJCWd1Y19mdy0+ bG9hZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9GQUlMOwogCi0JZ3VjX2ludGVycnVwdHNf cmVsZWFzZShkZXZfcHJpdik7Ci0JaTkxNV9ndWNfc3VibWlzc2lvbl9kaXNhYmxlKGRldl9wcml2 KTsKLQlpOTE1X2d1Y19zdWJtaXNzaW9uX2ZpbmkoZGV2X3ByaXYpOwotCWk5MTVfZ2d0dF9kaXNh YmxlX2d1YyhkZXZfcHJpdik7Ci0KIAkvKgogCSAqIFdlJ3ZlIGZhaWxlZCB0byBsb2FkIHRoZSBm aXJtd2FyZSA6KAogCSAqCkBAIC01ODcsNiArNTg4LDEzIEBAIGludCBpbnRlbF9ndWNfc2V0dXAo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXJldHVybiByZXQ7CiB9CiAKK3Zv aWQgaW50ZWxfZ3VjX2NsZWFudXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQor eworCWdlbjlfZGlzYWJsZV9ndWNfaW50ZXJydXB0cyhkZXZfcHJpdik7CisJaTkxNV9ndWNfc3Vi bWlzc2lvbl9maW5pKGRldl9wcml2KTsKKwlpOTE1X2dndHRfZGlzYWJsZV9ndWMoZGV2X3ByaXYp OworfQorCiB2b2lkIGludGVsX3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKIAkJCSBzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KQogewpAQCAtNzkyLDEyICs4 MDAsNiBAQCB2b2lkIGludGVsX2d1Y19maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIAlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmZ3Owog CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CiAKLQltdXRleF9sb2NrKCZkZXZfcHJp di0+ZHJtLnN0cnVjdF9tdXRleCk7Ci0JZ3VjX2ludGVycnVwdHNfcmVsZWFzZShkZXZfcHJpdik7 Ci0JaTkxNV9ndWNfc3VibWlzc2lvbl9kaXNhYmxlKGRldl9wcml2KTsKLQlpOTE1X2d1Y19zdWJt aXNzaW9uX2ZpbmkoZGV2X3ByaXYpOwotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1 Y3RfbXV0ZXgpOwotCiAJb2JqID0gZmV0Y2hfYW5kX3plcm8oJmd1Y19mdy0+b2JqKTsKIAlpZiAo b2JqKQogCQlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9nLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9n dWNfbG9nLmMKaW5kZXggNWMwZjlhNC4uZDA2MzJmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZ3VjX2xvZy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2d1Y19sb2cuYwpAQCAtNjYsNyArNjYsNiBAQCBzdGF0aWMgaW50IGd1Y19sb2dfY29udHJvbChz dHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHUzMiBjb250cm9sX3ZhbCkKIAlyZXR1cm4gaW50ZWxfZ3Vj X3NlbmQoZ3VjLCBhY3Rpb24sIEFSUkFZX1NJWkUoYWN0aW9uKSk7CiB9CiAKLQogLyoKICAqIFN1 YiBidWZmZXIgc3dpdGNoIGNhbGxiYWNrLiBDYWxsZWQgd2hlbmV2ZXIgcmVsYXkgaGFzIHRvIHN3 aXRjaCB0byBhIG5ldwogICogc3ViIGJ1ZmZlciwgcmVsYXkgc3RheXMgb24gdGhlIHNhbWUgc3Vi IGJ1ZmZlciBpZiAwIGlzIHJldHVybmVkLgpAQCAtMTM5LDQ1ICsxMzgsMTUgQEAgc3RhdGljIGlu dCByZW1vdmVfYnVmX2ZpbGVfY2FsbGJhY2soc3RydWN0IGRlbnRyeSAqZGVudHJ5KQogCS5yZW1v dmVfYnVmX2ZpbGUgPSByZW1vdmVfYnVmX2ZpbGVfY2FsbGJhY2ssCiB9OwogCi1zdGF0aWMgdm9p ZCBndWNfbG9nX3JlbW92ZV9yZWxheV9maWxlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKLXsKLQly ZWxheV9jbG9zZShndWMtPmxvZy5yZWxheV9jaGFuKTsKLX0KLQotc3RhdGljIGludCBndWNfbG9n X2NyZWF0ZV9yZWxheV9jaGFubmVsKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKLXsKLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBndWNfdG9faTkxNShndWMpOwotCXN0cnVjdCBy Y2hhbiAqZ3VjX2xvZ19yZWxheV9jaGFuOwotCXNpemVfdCBuX3N1YmJ1ZnMsIHN1YmJ1Zl9zaXpl OwotCi0JLyogS2VlcCB0aGUgc2l6ZSBvZiBzdWIgYnVmZmVycyBzYW1lIGFzIHNoYXJlZCBsb2cg YnVmZmVyICovCi0Jc3ViYnVmX3NpemUgPSBndWMtPmxvZy52bWEtPm9iai0+YmFzZS5zaXplOwot Ci0JLyogU3RvcmUgdXAgdG8gOCBzbmFwc2hvdHMsIHdoaWNoIGlzIGxhcmdlIGVub3VnaCB0byBi dWZmZXIgc3VmZmljaWVudAotCSAqIGJvb3QgdGltZSBsb2dzIGFuZCBwcm92aWRlcyBlbm91Z2gg bGVld2F5IHRvIFVzZXIsIGluIHRlcm1zIG9mCi0JICogbGF0ZW5jeSwgZm9yIGNvbnN1bWluZyB0 aGUgbG9ncyBmcm9tIHJlbGF5LiBBbHNvIGRvZXNuJ3QgdGFrZQotCSAqIHVwIHRvbyBtdWNoIG1l bW9yeS4KLQkgKi8KLQluX3N1YmJ1ZnMgPSA4OwotCi0JZ3VjX2xvZ19yZWxheV9jaGFuID0gcmVs YXlfb3BlbihOVUxMLCBOVUxMLCBzdWJidWZfc2l6ZSwKLQkJCQkJbl9zdWJidWZzLCAmcmVsYXlf Y2FsbGJhY2tzLCBkZXZfcHJpdik7Ci0JaWYgKCFndWNfbG9nX3JlbGF5X2NoYW4pIHsKLQkJRFJN X0VSUk9SKCJDb3VsZG4ndCBjcmVhdGUgcmVsYXkgY2hhbiBmb3IgR3VDIGxvZ2dpbmdcbiIpOwot CQlyZXR1cm4gLUVOT01FTTsKLQl9Ci0KLQlHRU1fQlVHX09OKGd1Y19sb2dfcmVsYXlfY2hhbi0+ c3ViYnVmX3NpemUgPCBzdWJidWZfc2l6ZSk7Ci0JZ3VjLT5sb2cucmVsYXlfY2hhbiA9IGd1Y19s b2dfcmVsYXlfY2hhbjsKLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCBndWNfbG9nX2NyZWF0 ZV9yZWxheV9maWxlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKK3N0YXRpYyBpbnQgZ3VjX2xvZ19y ZWxheV9maWxlX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiB7CiAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZ3VjX3RvX2k5MTUoZ3VjKTsKIAlzdHJ1Y3QgZGVudHJ5 ICpsb2dfZGlyOwogCWludCByZXQ7CiAKKwlpZiAoaTkxNS5ndWNfbG9nX2xldmVsIDwgMCkKKwkJ cmV0dXJuIDA7CisKIAkvKiBGb3Igbm93IGNyZWF0ZSB0aGUgbG9nIGZpbGUgaW4gL3N5cy9rZXJu ZWwvZGVidWcvZHJpLzAgZGlyICovCiAJbG9nX2RpciA9IGRldl9wcml2LT5kcm0ucHJpbWFyeS0+ ZGVidWdmc19yb290OwogCkBAIC0xOTgsNyArMTY3LDcgQEAgc3RhdGljIGludCBndWNfbG9nX2Ny ZWF0ZV9yZWxheV9maWxlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIAl9CiAKIAlyZXQgPSByZWxh eV9sYXRlX3NldHVwX2ZpbGVzKGd1Yy0+bG9nLnJlbGF5X2NoYW4sICJndWNfbG9nIiwgbG9nX2Rp cik7Ci0JaWYgKHJldCkgeworCWlmIChyZXQgPCAwICYmIHJldCAhPSAtRUVYSVNUKSB7CiAJCURS TV9FUlJPUigiQ291bGRuJ3QgYXNzb2NpYXRlIHJlbGF5IGNoYW4gd2l0aCBmaWxlICVkXG4iLCBy ZXQpOwogCQlyZXR1cm4gcmV0OwogCX0KQEAgLTM3MSwzMSArMzQwLDYgQEAgc3RhdGljIHZvaWQg Z3VjX3JlYWRfdXBkYXRlX2xvZ19idWZmZXIoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogCX0KIH0K IAotc3RhdGljIHZvaWQgZ3VjX2xvZ19jbGVhbnVwKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKLXsK LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBndWNfdG9faTkxNShndWMpOwot Ci0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwotCi0J LyogRmlyc3QgZGlzYWJsZSB0aGUgZmx1c2ggaW50ZXJydXB0ICovCi0JZ2VuOV9kaXNhYmxlX2d1 Y19pbnRlcnJ1cHRzKGRldl9wcml2KTsKLQotCWlmIChndWMtPmxvZy5mbHVzaF93cSkKLQkJZGVz dHJveV93b3JrcXVldWUoZ3VjLT5sb2cuZmx1c2hfd3EpOwotCi0JZ3VjLT5sb2cuZmx1c2hfd3Eg PSBOVUxMOwotCi0JaWYgKGd1Yy0+bG9nLnJlbGF5X2NoYW4pCi0JCWd1Y19sb2dfcmVtb3ZlX3Jl bGF5X2ZpbGUoZ3VjKTsKLQotCWd1Yy0+bG9nLnJlbGF5X2NoYW4gPSBOVUxMOwotCi0JaWYgKGd1 Yy0+bG9nLmJ1Zl9hZGRyKQotCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKGd1Yy0+bG9nLnZt YS0+b2JqKTsKLQotCWd1Yy0+bG9nLmJ1Zl9hZGRyID0gTlVMTDsKLX0KLQogc3RhdGljIHZvaWQg Y2FwdHVyZV9sb2dzX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogewogCXN0cnVjdCBp bnRlbF9ndWMgKmd1YyA9CkBAIC00MDQsMTIwICszNDgsMTA1IEBAIHN0YXRpYyB2b2lkIGNhcHR1 cmVfbG9nc193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAlndWNfbG9nX2NhcHR1cmVf bG9ncyhndWMpOwogfQogCitzdGF0aWMgYm9vbCBndWNfbG9nX2hhc19leHRyYXMoc3RydWN0IGlu dGVsX2d1YyAqZ3VjKQoreworCXJldHVybiAoZ3VjLT5sb2cuYnVmX2FkZHIgIT0gTlVMTCk7Cit9 CisKIHN0YXRpYyBpbnQgZ3VjX2xvZ19jcmVhdGVfZXh0cmFzKHN0cnVjdCBpbnRlbF9ndWMgKmd1 YykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBndWNfdG9faTkxNShn dWMpOwogCXZvaWQgKnZhZGRyOwotCWludCByZXQ7CisJc3RydWN0IHJjaGFuICpndWNfbG9nX3Jl bGF5X2NoYW47CisJc2l6ZV90IG5fc3ViYnVmcywgc3ViYnVmX3NpemU7CisJaW50IHJldCA9IDA7 CiAKIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7CiAK LQkvKiBOb3RoaW5nIHRvIGRvICovCi0JaWYgKGk5MTUuZ3VjX2xvZ19sZXZlbCA8IDApCi0JCXJl dHVybiAwOwotCi0JaWYgKCFndWMtPmxvZy5idWZfYWRkcikgewotCQkvKiBDcmVhdGUgYSBXQyAo VW5jYWNoZWQgZm9yIHJlYWQpIHZtYWxsb2MgbWFwcGluZyBvZiBsb2cKLQkJICogYnVmZmVyIHBh Z2VzLCBzbyB0aGF0IHdlIGNhbiBkaXJlY3RseSBnZXQgdGhlIGRhdGEKLQkJICogKHVwLXRvLWRh dGUpIGZyb20gbWVtb3J5LgotCQkgKi8KLQkJdmFkZHIgPSBpOTE1X2dlbV9vYmplY3RfcGluX21h cChndWMtPmxvZy52bWEtPm9iaiwgSTkxNV9NQVBfV0MpOwotCQlpZiAoSVNfRVJSKHZhZGRyKSkg ewotCQkJcmV0ID0gUFRSX0VSUih2YWRkcik7Ci0JCQlEUk1fRVJST1IoIkNvdWxkbid0IG1hcCBs b2cgYnVmZmVyIHBhZ2VzICVkXG4iLCByZXQpOwotCQkJcmV0dXJuIHJldDsKLQkJfQotCi0JCWd1 Yy0+bG9nLmJ1Zl9hZGRyID0gdmFkZHI7Ci0JfQorCUdFTV9CVUdfT04oZ3VjX2xvZ19oYXNfZXh0 cmFzKGd1YykpOwogCi0JaWYgKCFndWMtPmxvZy5yZWxheV9jaGFuKSB7Ci0JCS8qIENyZWF0ZSBh IHJlbGF5IGNoYW5uZWwsIHNvIHRoYXQgd2UgaGF2ZSBidWZmZXJzIGZvciBzdG9yaW5nCi0JCSAq IHRoZSBHdUMgZmlybXdhcmUgbG9ncywgdGhlIGNoYW5uZWwgd2lsbCBiZSBsaW5rZWQgd2l0aCBh IGZpbGUKLQkJICogbGF0ZXIgb24gd2hlbiBkZWJ1Z2ZzIGlzIHJlZ2lzdGVyZWQuCi0JCSAqLwot CQlyZXQgPSBndWNfbG9nX2NyZWF0ZV9yZWxheV9jaGFubmVsKGd1Yyk7Ci0JCWlmIChyZXQpCi0J CQlyZXR1cm4gcmV0OworCS8qIENyZWF0ZSBhIFdDIChVbmNhY2hlZCBmb3IgcmVhZCkgdm1hbGxv YyBtYXBwaW5nIG9mIGxvZworCSAqIGJ1ZmZlciBwYWdlcywgc28gdGhhdCB3ZSBjYW4gZGlyZWN0 bHkgZ2V0IHRoZSBkYXRhCisJICogKHVwLXRvLWRhdGUpIGZyb20gbWVtb3J5LgorCSAqLworCXZh ZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAoZ3VjLT5sb2cudm1hLT5vYmosIEk5MTVfTUFQ X1dDKTsKKwlpZiAoSVNfRVJSKHZhZGRyKSkgeworCQlEUk1fRVJST1IoIkNvdWxkbid0IG1hcCBs b2cgYnVmZmVyIHBhZ2VzICVkXG4iLCByZXQpOworCQlyZXR1cm4gUFRSX0VSUih2YWRkcik7CiAJ fQogCi0JaWYgKCFndWMtPmxvZy5mbHVzaF93cSkgewotCQlJTklUX1dPUksoJmd1Yy0+bG9nLmZs dXNoX3dvcmssIGNhcHR1cmVfbG9nc193b3JrKTsKLQotCQkgLyoKLQkJICogR3VDIGxvZyBidWZm ZXIgZmx1c2ggd29yayBpdGVtIGhhcyB0byBkbyByZWdpc3RlciBhY2Nlc3MgdG8KLQkJICogc2Vu ZCB0aGUgYWNrIHRvIEd1QyBhbmQgdGhpcyB3b3JrIGl0ZW0sIGlmIG5vdCBzeW5jZWQgYmVmb3Jl Ci0JCSAqIHN1c3BlbmQsIGNhbiBwb3RlbnRpYWxseSBnZXQgZXhlY3V0ZWQgYWZ0ZXIgdGhlIEdG WCBkZXZpY2UgaXMKLQkJICogc3VzcGVuZGVkLgotCQkgKiBCeSBtYXJraW5nIHRoZSBXUSBhcyBm cmVlemFibGUsIHdlIGRvbid0IGhhdmUgdG8gYm90aGVyIGFib3V0Ci0JCSAqIGZsdXNoaW5nIG9m IHRoaXMgd29yayBpdGVtIGZyb20gdGhlIHN1c3BlbmQgaG9va3MsIHRoZSBwZW5kaW5nCi0JCSAq IHdvcmsgaXRlbSBpZiBhbnkgd2lsbCBiZSBlaXRoZXIgZXhlY3V0ZWQgYmVmb3JlIHRoZSBzdXNw ZW5kCi0JCSAqIG9yIHNjaGVkdWxlZCBsYXRlciBvbiByZXN1bWUuIFRoaXMgd2F5IHRoZSBoYW5k bGluZyBvZiB3b3JrCi0JCSAqIGl0ZW0gY2FuIGJlIGtlcHQgc2FtZSBiZXR3ZWVuIHN5c3RlbSBz dXNwZW5kICYgcnBtIHN1c3BlbmQuCi0JCSAqLwotCQlndWMtPmxvZy5mbHVzaF93cSA9IGFsbG9j X29yZGVyZWRfd29ya3F1ZXVlKCJpOTE1LWd1Y19sb2ciLAotCQkJCQkJCSAgICBXUV9ISUdIUFJJ IHwgV1FfRlJFRVpBQkxFKTsKLQkJaWYgKGd1Yy0+bG9nLmZsdXNoX3dxID09IE5VTEwpIHsKLQkJ CURSTV9FUlJPUigiQ291bGRuJ3QgYWxsb2NhdGUgdGhlIHdxIGZvciBHdUMgbG9nZ2luZ1xuIik7 Ci0JCQlyZXR1cm4gLUVOT01FTTsKLQkJfQotCX0KKwlndWMtPmxvZy5idWZfYWRkciA9IHZhZGRy OwogCi0JcmV0dXJuIDA7Ci19CisJIC8qIEtlZXAgdGhlIHNpemUgb2Ygc3ViIGJ1ZmZlcnMgc2Ft ZSBhcyBzaGFyZWQgbG9nIGJ1ZmZlciAqLworCXN1YmJ1Zl9zaXplID0gZ3VjLT5sb2cudm1hLT5v YmotPmJhc2Uuc2l6ZTsKIAotdm9pZCBpbnRlbF9ndWNfbG9nX2NyZWF0ZShzdHJ1Y3QgaW50ZWxf Z3VjICpndWMpCi17Ci0Jc3RydWN0IGk5MTVfdm1hICp2bWE7Ci0JdW5zaWduZWQgbG9uZyBvZmZz ZXQ7Ci0JdWludDMyX3Qgc2l6ZSwgZmxhZ3M7CisJLyogU3RvcmUgdXAgdG8gOCBzbmFwc2hvdHMs IHdoaWNoIGlzIGxhcmdlIGVub3VnaCB0byBidWZmZXIgc3VmZmljaWVudAorCSAqIGJvb3QgdGlt ZSBsb2dzIGFuZCBwcm92aWRlcyBlbm91Z2ggbGVld2F5IHRvIFVzZXIsIGluIHRlcm1zIG9mCisJ ICogbGF0ZW5jeSwgZm9yIGNvbnN1bWluZyB0aGUgbG9ncyBmcm9tIHJlbGF5LiBBbHNvIGRvZXNu J3QgdGFrZQorCSAqIHVwIHRvbyBtdWNoIG1lbW9yeS4KKwkgKi8KKwluX3N1YmJ1ZnMgPSA4Owog Ci0JaWYgKGk5MTUuZ3VjX2xvZ19sZXZlbCA+IEdVQ19MT0dfVkVSQk9TSVRZX01BWCkKLQkJaTkx NS5ndWNfbG9nX2xldmVsID0gR1VDX0xPR19WRVJCT1NJVFlfTUFYOworCS8qIENyZWF0ZSBhIHJl bGF5IGNoYW5uZWwsIHNvIHRoYXQgd2UgaGF2ZSBidWZmZXJzIGZvciBzdG9yaW5nCisJICogdGhl IEd1QyBmaXJtd2FyZSBsb2dzLCB0aGUgY2hhbm5lbCB3aWxsIGJlIGxpbmtlZCB3aXRoIGEgZmls ZQorCSAqIGxhdGVyIG9uIHdoZW4gZGVidWdmcyBpcyByZWdpc3RlcmVkLgorCSAqLworCWd1Y19s b2dfcmVsYXlfY2hhbiA9IHJlbGF5X29wZW4oTlVMTCwgTlVMTCwgc3ViYnVmX3NpemUsCisJCQkJ CW5fc3ViYnVmcywgJnJlbGF5X2NhbGxiYWNrcywgZGV2X3ByaXYpOworCWlmICghZ3VjX2xvZ19y ZWxheV9jaGFuKSB7CisJCURSTV9FUlJPUigiQ291bGRuJ3QgY3JlYXRlIHJlbGF5IGNoYW4gZm9y IEd1QyBsb2dnaW5nXG4iKTsKIAotCS8qIFRoZSBmaXJzdCBwYWdlIGlzIHRvIHNhdmUgbG9nIGJ1 ZmZlciBzdGF0ZS4gQWxsb2NhdGUgb25lCi0JICogZXh0cmEgcGFnZSBmb3Igb3RoZXJzIGluIGNh c2UgZm9yIG92ZXJsYXAgKi8KLQlzaXplID0gKDEgKyBHVUNfTE9HX0RQQ19QQUdFUyArIDEgKwot CQlHVUNfTE9HX0lTUl9QQUdFUyArIDEgKwotCQlHVUNfTE9HX0NSQVNIX1BBR0VTICsgMSkgPDwg UEFHRV9TSElGVDsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBlcnJfdmFkZHI7CisJfQogCi0J dm1hID0gZ3VjLT5sb2cudm1hOwotCWlmICghdm1hKSB7Ci0JCS8qIFdlIHJlcXVpcmUgU1NFIDQu MSBmb3IgZmFzdCByZWFkcyBmcm9tIHRoZSBHdUMgbG9nIGJ1ZmZlciBhbmQKLQkJICogaXQgc2hv dWxkIGJlIHByZXNlbnQgb24gdGhlIGNoaXBzZXRzIHN1cHBvcnRpbmcgR3VDIGJhc2VkCi0JCSAq IHN1Ym1pc3NzaW9ucy4KLQkJICovCi0JCWlmIChXQVJOX09OKCFpOTE1X2hhc19tZW1jcHlfZnJv bV93YygpKSkgewotCQkJLyogbG9nZ2luZyB3aWxsIG5vdCBiZSBlbmFibGVkICovCi0JCQlpOTE1 Lmd1Y19sb2dfbGV2ZWwgPSAtMTsKLQkJCXJldHVybjsKLQkJfQorCUdFTV9CVUdfT04oZ3VjX2xv Z19yZWxheV9jaGFuLT5zdWJidWZfc2l6ZSA8IHN1YmJ1Zl9zaXplKTsKKwlndWMtPmxvZy5yZWxh eV9jaGFuID0gZ3VjX2xvZ19yZWxheV9jaGFuOwogCi0JCXZtYSA9IGludGVsX2d1Y19hbGxvY2F0 ZV92bWEoZ3VjLCBzaXplKTsKLQkJaWYgKElTX0VSUih2bWEpKSB7Ci0JCQkvKiBsb2dnaW5nIHdp bGwgYmUgb2ZmICovCi0JCQlpOTE1Lmd1Y19sb2dfbGV2ZWwgPSAtMTsKLQkJCXJldHVybjsKLQkJ fQorCUlOSVRfV09SSygmZ3VjLT5sb2cuZmx1c2hfd29yaywgY2FwdHVyZV9sb2dzX3dvcmspOwor CisJLyoKKwkgKiBHdUMgbG9nIGJ1ZmZlciBmbHVzaCB3b3JrIGl0ZW0gaGFzIHRvIGRvIHJlZ2lz dGVyIGFjY2VzcyB0bworCSAqIHNlbmQgdGhlIGFjayB0byBHdUMgYW5kIHRoaXMgd29yayBpdGVt LCBpZiBub3Qgc3luY2VkIGJlZm9yZQorCSAqIHN1c3BlbmQsIGNhbiBwb3RlbnRpYWxseSBnZXQg ZXhlY3V0ZWQgYWZ0ZXIgdGhlIEdGWCBkZXZpY2UgaXMKKwkgKiBzdXNwZW5kZWQuCisJICogQnkg bWFya2luZyB0aGUgV1EgYXMgZnJlZXphYmxlLCB3ZSBkb24ndCBoYXZlIHRvIGJvdGhlciBhYm91 dAorCSAqIGZsdXNoaW5nIG9mIHRoaXMgd29yayBpdGVtIGZyb20gdGhlIHN1c3BlbmQgaG9va3Ms IHRoZSBwZW5kaW5nCisJICogd29yayBpdGVtIGlmIGFueSB3aWxsIGJlIGVpdGhlciBleGVjdXRl ZCBiZWZvcmUgdGhlIHN1c3BlbmQKKwkgKiBvciBzY2hlZHVsZWQgbGF0ZXIgb24gcmVzdW1lLiBU aGlzIHdheSB0aGUgaGFuZGxpbmcgb2Ygd29yaworCSAqIGl0ZW0gY2FuIGJlIGtlcHQgc2FtZSBi ZXR3ZWVuIHN5c3RlbSBzdXNwZW5kICYgcnBtIHN1c3BlbmQuCisJICovCisJZ3VjLT5sb2cuZmx1 c2hfd3EgPSBhbGxvY19vcmRlcmVkX3dvcmtxdWV1ZSgiaTkxNS1ndWNfbG9nIiwKKwkJCQkJCSAg ICBXUV9ISUdIUFJJIHwgV1FfRlJFRVpBQkxFKTsKKwlpZiAoIWd1Yy0+bG9nLmZsdXNoX3dxKSB7 CisJCURSTV9FUlJPUigiQ291bGRuJ3QgYWxsb2NhdGUgdGhlIHdxIGZvciBHdUMgbG9nZ2luZ1xu Iik7CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8gZXJyX3JlbGF5Y2hhbjsKKwl9CiAKLQkJZ3Vj LT5sb2cudm1hID0gdm1hOworCXJldHVybiAwOwogCi0JCWlmIChndWNfbG9nX2NyZWF0ZV9leHRy YXMoZ3VjKSkgewotCQkJZ3VjX2xvZ19jbGVhbnVwKGd1Yyk7Ci0JCQlpOTE1X3ZtYV91bnBpbl9h bmRfcmVsZWFzZSgmZ3VjLT5sb2cudm1hKTsKLQkJCWk5MTUuZ3VjX2xvZ19sZXZlbCA9IC0xOwot CQkJcmV0dXJuOwotCQl9Ci0JfQorZXJyX3JlbGF5Y2hhbjoKKwlyZWxheV9jbG9zZShndWMtPmxv Zy5yZWxheV9jaGFuKTsKK2Vycl92YWRkcjoKKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKGd1 Yy0+bG9nLnZtYS0+b2JqKTsKKwlndWMtPmxvZy5idWZfYWRkciA9IE5VTEw7CisJcmV0dXJuIHJl dDsKK30KIAotCS8qIGVhY2ggYWxsb2NhdGVkIHVuaXQgaXMgYSBwYWdlICovCi0JZmxhZ3MgPSBH VUNfTE9HX1ZBTElEIHwgR1VDX0xPR19OT1RJRllfT05fSEFMRl9GVUxMIHwKLQkJKEdVQ19MT0df RFBDX1BBR0VTIDw8IEdVQ19MT0dfRFBDX1NISUZUKSB8Ci0JCShHVUNfTE9HX0lTUl9QQUdFUyA8 PCBHVUNfTE9HX0lTUl9TSElGVCkgfAotCQkoR1VDX0xPR19DUkFTSF9QQUdFUyA8PCBHVUNfTE9H X0NSQVNIX1NISUZUKTsKK3N0YXRpYyB2b2lkIGd1Y19sb2dfZGVzdHJveV9leHRyYXMoc3RydWN0 IGludGVsX2d1YyAqZ3VjKQoreworCS8qCisJICogSXQncyBwb3NzaWJsZSB0aGF0IGV4dHJhcyB3 ZXJlIG5ldmVyIGFsbG9jYXRlZCBiZWNhdXNlIGd1Y19sb2dfbGV2ZWwKKwkgKiB3YXMgPCAwIGF0 IHRoZSB0aW1lCisJICoqLworCWlmICghZ3VjX2xvZ19oYXNfZXh0cmFzKGd1YykpCisJCXJldHVy bjsKIAotCW9mZnNldCA9IGd1Y19nZ3R0X29mZnNldCh2bWEpID4+IFBBR0VfU0hJRlQ7IC8qIGlu IHBhZ2VzICovCi0JZ3VjLT5sb2cuZmxhZ3MgPSAob2Zmc2V0IDw8IEdVQ19MT0dfQlVGX0FERFJf U0hJRlQpIHwgZmxhZ3M7CisJZGVzdHJveV93b3JrcXVldWUoZ3VjLT5sb2cuZmx1c2hfd3EpOwor CXJlbGF5X2Nsb3NlKGd1Yy0+bG9nLnJlbGF5X2NoYW4pOworCWk5MTVfZ2VtX29iamVjdF91bnBp bl9tYXAoZ3VjLT5sb2cudm1hLT5vYmopOworCWd1Yy0+bG9nLmJ1Zl9hZGRyID0gTlVMTDsKIH0K IAogc3RhdGljIGludCBndWNfbG9nX2xhdGVfc2V0dXAoc3RydWN0IGludGVsX2d1YyAqZ3VjKQpA QCAtNTI3LDI0ICs0NTYsMjUgQEAgc3RhdGljIGludCBndWNfbG9nX2xhdGVfc2V0dXAoc3RydWN0 IGludGVsX2d1YyAqZ3VjKQogCiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYtPmRybS5z dHJ1Y3RfbXV0ZXgpOwogCi0JaWYgKGk5MTUuZ3VjX2xvZ19sZXZlbCA8IDApCi0JCXJldHVybiAt RUlOVkFMOwotCi0JLyogSWYgbG9nX2xldmVsIHdhcyBzZXQgYXMgLTEgYXQgYm9vdCB0aW1lLCB0 aGVuIHNldHVwIG5lZWRlZCB0bwotCSAqIGhhbmRsZSBsb2cgYnVmZmVyIGZsdXNoIGludGVycnVw dHMgd291bGQgbm90IGhhdmUgYmVlbiBkb25lIHlldCwKLQkgKiBzbyBkbyB0aGF0IG5vdy4KLQkg Ki8KLQlyZXQgPSBndWNfbG9nX2NyZWF0ZV9leHRyYXMoZ3VjKTsKLQlpZiAocmV0KQotCQlnb3Rv IGVycjsKKwlpZiAoIWd1Y19sb2dfaGFzX2V4dHJhcyhndWMpKSB7CisJCS8qIElmIGxvZ19sZXZl bCB3YXMgc2V0IGFzIC0xIGF0IGJvb3QgdGltZSwgdGhlbiBzZXR1cCBuZWVkZWQgdG8KKwkJICog aGFuZGxlIGxvZyBidWZmZXIgZmx1c2ggaW50ZXJydXB0cyB3b3VsZCBub3QgaGF2ZSBiZWVuIGRv bmUgeWV0LAorCQkgKiBzbyBkbyB0aGF0IG5vdy4KKwkJICovCisJCXJldCA9IGd1Y19sb2dfY3Jl YXRlX2V4dHJhcyhndWMpOworCQlpZiAocmV0KQorCQkJZ290byBlcnI7CisJfQogCi0JcmV0ID0g Z3VjX2xvZ19jcmVhdGVfcmVsYXlfZmlsZShndWMpOworCXJldCA9IGd1Y19sb2dfcmVsYXlfZmls ZV9jcmVhdGUoZ3VjKTsKIAlpZiAocmV0KQotCQlnb3RvIGVycjsKKwkJZ290byBlcnJfZXh0cmFz OwogCiAJcmV0dXJuIDA7CisKK2Vycl9leHRyYXM6CisJZ3VjX2xvZ19kZXN0cm95X2V4dHJhcyhn dWMpOwogZXJyOgotCWd1Y19sb2dfY2xlYW51cChndWMpOwogCS8qIGxvZ2dpbmcgd2lsbCByZW1h aW4gb2ZmICovCiAJaTkxNS5ndWNfbG9nX2xldmVsID0gLTE7CiAJcmV0dXJuIHJldDsKQEAgLTU4 Niw2ICs1MTYsNzIgQEAgc3RhdGljIHZvaWQgZ3VjX2ZsdXNoX2xvZ3Moc3RydWN0IGludGVsX2d1 YyAqZ3VjKQogCWd1Y19sb2dfY2FwdHVyZV9sb2dzKGd1Yyk7CiB9CiAKK2ludCBpbnRlbF9ndWNf bG9nX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCit7CisJc3RydWN0IGk5MTVfdm1hICp2 bWE7CisJdW5zaWduZWQgbG9uZyBvZmZzZXQ7CisJdWludDMyX3Qgc2l6ZSwgZmxhZ3M7CisJaW50 IHJldDsKKworCUdFTV9CVUdfT04oZ3VjLT5sb2cudm1hKTsKKworCWlmIChpOTE1Lmd1Y19sb2df bGV2ZWwgPiBHVUNfTE9HX1ZFUkJPU0lUWV9NQVgpCisJCWk5MTUuZ3VjX2xvZ19sZXZlbCA9IEdV Q19MT0dfVkVSQk9TSVRZX01BWDsKKworCS8qIFRoZSBmaXJzdCBwYWdlIGlzIHRvIHNhdmUgbG9n IGJ1ZmZlciBzdGF0ZS4gQWxsb2NhdGUgb25lCisJICogZXh0cmEgcGFnZSBmb3Igb3RoZXJzIGlu IGNhc2UgZm9yIG92ZXJsYXAgKi8KKwlzaXplID0gKDEgKyBHVUNfTE9HX0RQQ19QQUdFUyArIDEg KworCQlHVUNfTE9HX0lTUl9QQUdFUyArIDEgKworCQlHVUNfTE9HX0NSQVNIX1BBR0VTICsgMSkg PDwgUEFHRV9TSElGVDsKKworCS8qIFdlIHJlcXVpcmUgU1NFIDQuMSBmb3IgZmFzdCByZWFkcyBm cm9tIHRoZSBHdUMgbG9nIGJ1ZmZlciBhbmQKKwkgKiBpdCBzaG91bGQgYmUgcHJlc2VudCBvbiB0 aGUgY2hpcHNldHMgc3VwcG9ydGluZyBHdUMgYmFzZWQKKwkgKiBzdWJtaXNzc2lvbnMuCisJICov CisJaWYgKFdBUk5fT04oIWk5MTVfaGFzX21lbWNweV9mcm9tX3djKCkpKSB7CisJCXJldCA9IC1F SU5WQUw7CisJCWdvdG8gZXJyOworCX0KKworCXZtYSA9IGludGVsX2d1Y19hbGxvY2F0ZV92bWEo Z3VjLCBzaXplKTsKKwlpZiAoSVNfRVJSKHZtYSkpIHsKKwkJcmV0ID0gUFRSX0VSUih2bWEpOwor CQlnb3RvIGVycjsKKwl9CisKKwlndWMtPmxvZy52bWEgPSB2bWE7CisKKwlpZiAoaTkxNS5ndWNf bG9nX2xldmVsID49IDApIHsKKwkJcmV0ID0gZ3VjX2xvZ19jcmVhdGVfZXh0cmFzKGd1Yyk7CisJ CWlmIChyZXQgPCAwKQorCQkJZ290byBlcnJfdm1hOworCX0KKworCS8qIGVhY2ggYWxsb2NhdGVk IHVuaXQgaXMgYSBwYWdlICovCisJZmxhZ3MgPSBHVUNfTE9HX1ZBTElEIHwgR1VDX0xPR19OT1RJ RllfT05fSEFMRl9GVUxMIHwKKwkJKEdVQ19MT0dfRFBDX1BBR0VTIDw8IEdVQ19MT0dfRFBDX1NI SUZUKSB8CisJCShHVUNfTE9HX0lTUl9QQUdFUyA8PCBHVUNfTE9HX0lTUl9TSElGVCkgfAorCQko R1VDX0xPR19DUkFTSF9QQUdFUyA8PCBHVUNfTE9HX0NSQVNIX1NISUZUKTsKKworCW9mZnNldCA9 IGd1Y19nZ3R0X29mZnNldCh2bWEpID4+IFBBR0VfU0hJRlQ7IC8qIGluIHBhZ2VzICovCisJZ3Vj LT5sb2cuZmxhZ3MgPSAob2Zmc2V0IDw8IEdVQ19MT0dfQlVGX0FERFJfU0hJRlQpIHwgZmxhZ3M7 CisKKwlyZXR1cm4gMDsKKworZXJyX3ZtYToKKwlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFzZSgm Z3VjLT5sb2cudm1hKTsKK2VycjoKKwkvKiBsb2dnaW5nIHdpbGwgYmUgb2ZmICovCisJaTkxNS5n dWNfbG9nX2xldmVsID0gLTE7CisJcmV0dXJuIHJldDsKK30KKwordm9pZCBpbnRlbF9ndWNfbG9n X2Rlc3Ryb3koc3RydWN0IGludGVsX2d1YyAqZ3VjKQoreworCWd1Y19sb2dfZGVzdHJveV9leHRy YXMoZ3VjKTsKKwlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFzZSgmZ3VjLT5sb2cudm1hKTsKK30K KwogaW50IGk5MTVfZ3VjX2xvZ19jb250cm9sKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgdTY0IGNvbnRyb2xfdmFsKQogewogCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZkZXZf cHJpdi0+Z3VjOwpAQCAtNjA5LDE3ICs2MDUsMjEgQEAgaW50IGk5MTVfZ3VjX2xvZ19jb250cm9s KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTY0IGNvbnRyb2xfdmFsKQogCQly ZXR1cm4gcmV0OwogCX0KIAotCWk5MTUuZ3VjX2xvZ19sZXZlbCA9IGxvZ19wYXJhbS52ZXJib3Np dHk7CisJaWYgKGxvZ19wYXJhbS5sb2dnaW5nX2VuYWJsZWQpIHsKKwkJaTkxNS5ndWNfbG9nX2xl dmVsID0gbG9nX3BhcmFtLnZlcmJvc2l0eTsKIAotCS8qIElmIGxvZ19sZXZlbCB3YXMgc2V0IGFz IC0xIGF0IGJvb3QgdGltZSwgdGhlbiB0aGUgcmVsYXkgY2hhbm5lbCBmaWxlCi0JICogd291bGRu J3QgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgbm93IGFuZCBpbnRlcnJ1cHRzIGFsc28gd291bGQgbm90 IGhhdmUKLQkgKiBiZWVuIGVuYWJsZWQuCi0JICovCi0JaWYgKCFkZXZfcHJpdi0+Z3VjLmxvZy5y ZWxheV9jaGFuKSB7CisJCS8qIElmIGxvZ19sZXZlbCB3YXMgc2V0IGFzIC0xIGF0IGJvb3QgdGlt ZSwgdGhlbiB0aGUgcmVsYXkgY2hhbm5lbCBmaWxlCisJCSAqIHdvdWxkbid0IGhhdmUgYmVlbiBj cmVhdGVkIGJ5IG5vdyBhbmQgaW50ZXJydXB0cyBhbHNvIHdvdWxkIG5vdCBoYXZlCisJCSAqIGJl ZW4gZW5hYmxlZC4gVHJ5IGFnYWluIG5vdywganVzdCBpbiBjYXNlLgorCQkgKi8KIAkJcmV0ID0g Z3VjX2xvZ19sYXRlX3NldHVwKGd1Yyk7Ci0JCWlmICghcmV0KQotCQkJZ2VuOV9lbmFibGVfZ3Vj X2ludGVycnVwdHMoZGV2X3ByaXYpOwotCX0gZWxzZSBpZiAoIWxvZ19wYXJhbS5sb2dnaW5nX2Vu YWJsZWQpIHsKKwkJaWYgKHJldCA8IDApIHsKKwkJCURSTV9ERUJVR19EUklWRVIoIkd1QyBsb2cg bGF0ZSBzZXR1cCBmYWlsZWQgJWRcbiIsIHJldCk7CisJCQlyZXR1cm4gcmV0OworCQl9CisKKwkJ Z2VuOV9lbmFibGVfZ3VjX2ludGVycnVwdHMoZGV2X3ByaXYpOworCX0gZWxzZSB7CiAJCS8qIE9u Y2UgbG9nZ2luZyBpcyBkaXNhYmxlZCwgR3VDIHdvbid0IGdlbmVyYXRlIGxvZ3MgJiBzZW5kIGFu CiAJCSAqIGludGVycnVwdC4gQnV0IHRoZXJlIGNvdWxkIGJlIHNvbWUgZGF0YSBpbiB0aGUgbG9n IGJ1ZmZlcgogCQkgKiB3aGljaCBpcyB5ZXQgdG8gYmUgY2FwdHVyZWQuIFNvIHJlcXVlc3QgR3VD IHRvIHVwZGF0ZSB0aGUgbG9nCkBAIC02MjksOSArNjI5LDYgQEAgaW50IGk5MTVfZ3VjX2xvZ19j b250cm9sKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTY0IGNvbnRyb2xfdmFs KQogCiAJCS8qIEFzIGxvZ2dpbmcgaXMgZGlzYWJsZWQsIHVwZGF0ZSBsb2cgbGV2ZWwgdG8gcmVm bGVjdCB0aGF0ICovCiAJCWk5MTUuZ3VjX2xvZ19sZXZlbCA9IC0xOwotCX0gZWxzZSB7Ci0JCS8q IEluIGNhc2UgaW50ZXJydXB0cyB3ZXJlIGRpc2FibGVkLCBlbmFibGUgdGhlbSBub3cgKi8KLQkJ Z2VuOV9lbmFibGVfZ3VjX2ludGVycnVwdHMoZGV2X3ByaXYpOwogCX0KIAogCXJldHVybiByZXQ7 CkBAIC02NTMsNiArNjUwLDcgQEAgdm9pZCBpOTE1X2d1Y19sb2dfdW5yZWdpc3RlcihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCXJldHVybjsKIAogCW11dGV4X2xvY2soJmRl dl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKLQlndWNfbG9nX2NsZWFudXAoJmRldl9wcml2LT5n dWMpOworCWdlbjlfZGlzYWJsZV9ndWNfaW50ZXJydXB0cyhkZXZfcHJpdik7CisJZ3VjX2xvZ19k ZXN0cm95X2V4dHJhcygmZGV2X3ByaXYtPmd1Yyk7CiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ ZHJtLnN0cnVjdF9tdXRleCk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF91Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuaAppbmRleCA1MTFiOTZi Li4zMzBkMDhmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5oCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmgKQEAgLTE5OCw4ICsxOTgsOSBAQCBz dGF0aWMgaW5saW5lIGludCBpbnRlbF9ndWNfc2VuZChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIGNv bnN0IHUzMiAqYWN0aW9uLCB1MzIgbAogCiAvKiBpbnRlbF9ndWNfbG9hZGVyLmMgKi8KIGV4dGVy biB2b2lkIGludGVsX2d1Y19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7 Ci1leHRlcm4gaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpOwogZXh0ZXJuIHZvaWQgaW50ZWxfZ3VjX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KTsKK2V4dGVybiBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdik7CitleHRlcm4gdm9pZCBpbnRlbF9ndWNfY2xlYW51cChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogZXh0ZXJuIGNvbnN0IGNoYXIgKmludGVs X3VjX2Z3X3N0YXR1c19yZXByKGVudW0gaW50ZWxfdWNfZndfc3RhdHVzIHN0YXR1cyk7CiBleHRl cm4gaW50IGludGVsX2d1Y19zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dik7CiBleHRlcm4gaW50IGludGVsX2d1Y19yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KTsKQEAgLTIxNywxMCArMjE4LDExIEBAIHZvaWQgaW50ZWxfdWNfZndfZmV0Y2go c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogc3RydWN0IGk5MTVfdm1hICppbnRl bF9ndWNfYWxsb2NhdGVfdm1hKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgdTMyIHNpemUpOwogCiAv KiBpbnRlbF9ndWNfbG9nLmMgKi8KLXZvaWQgaW50ZWxfZ3VjX2xvZ19jcmVhdGUoc3RydWN0IGlu dGVsX2d1YyAqZ3VjKTsKK2ludCBpbnRlbF9ndWNfbG9nX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMpOwordm9pZCBpbnRlbF9ndWNfbG9nX2Rlc3Ryb3koc3RydWN0IGludGVsX2d1YyAqZ3Vj KTsKK2ludCBpOTE1X2d1Y19sb2dfY29udHJvbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsIHU2NCBjb250cm9sX3ZhbCk7CiB2b2lkIGk5MTVfZ3VjX2xvZ19yZWdpc3RlcihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBpOTE1X2d1Y19sb2dfdW5yZWdp c3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwotaW50IGk5MTVfZ3VjX2xv Z19jb250cm9sKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTY0IGNvbnRyb2xf dmFsKTsKIAogc3RhdGljIGlubGluZSB1MzIgZ3VjX2dndHRfb2Zmc2V0KHN0cnVjdCBpOTE1X3Zt YSAqdm1hKQogewotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=