From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniele Ceraolo Spurio Subject: [PATCH v2 3/8] drm/i915/uc: Unify uc_fw status tracking Date: Tue, 23 Jul 2019 19:21:48 -0700 Message-ID: <20190724022153.8927-4-daniele.ceraolospurio@intel.com> References: <20190724022153.8927-1-daniele.ceraolospurio@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 174956E423 for ; Wed, 24 Jul 2019 02:22:19 +0000 (UTC) In-Reply-To: <20190724022153.8927-1-daniele.ceraolospurio@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 V2UgY3VycmVudGx5IHRyYWNrIGZldGNoIGFuZCBsb2FkIHN0YXR1cyBzZXBhcmF0ZWx5LCBidXQg dGhlIDIgYXJlCmFjdHVhbGx5IHNlcXVlbnRpYWwgaW4gdGhlIHVjIGxpZmV0aW1lIChmZXRjaCBt dXN0IGNvbXBsZXRlIGJlZm9yZSB3ZQpjYW4gYXR0ZW1wdCB0aGUgbG9hZCEpLiBVbmlmeWluZyB0 aGUgMiB2YXJpYWJsZXMgd2UgY2FuIGJldHRlciBmb2xsb3cKdGhlIHNlcXVlbnRpYWwgc3RhdGVz IGFuZCBpbXByb3ZlIG91ciB0cmFja25nIG9mIHRoZSB1QyBzdGF0ZS4KCkFsc28sIHNwcmlua2xl IHNvbWUgR0VNX0JVR19PTiB0byBtYWtlIHN1cmUgd2UgdHJhbnNpdGlvbiBjb3JyZWN0bHkKYmV0 d2VlbiBzdGF0ZXMuCgp2MjogcmVuYW1lIHN0YXRlcywgYWRkIHRoZSBydW5uaW5nIHN0YXRlIChN aWNoYWwpLCBkcm9wIHNvbWUgbG9ncyBpbgogICAgdGhlIGZldGNoIHBhdGggKE1pY2hhbCwgQ2hy aXMpCgpTdWdnZXN0ZWQtYnk6IE1pY2hhbCBXYWpkZWN6a28gPG1pY2hhbC53YWpkZWN6a29AaW50 ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIDxkYW5pZWxlLmNl cmFvbG9zcHVyaW9AaW50ZWwuY29tPgpDYzogTWljaGFsIFdhamRlY3prbyA8bWljaGFsLndhamRl Y3prb0BpbnRlbC5jb20+CkNjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51 az4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaCAgICAgICAgfCAg NCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3LmMgICAgIHwgIDYg Ky0KIC4uLi9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYyB8ICAyICst CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9odWMuYyAgICAgICAgfCAgOCArLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfaHVjLmggICAgICAgIHwgIDUgKysKIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmMgICAgICAgICB8IDEwICstLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZncuYyAgICAgIHwgODYgKysrKysrKy0t LS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZncuaCAgICAg IHwgNTggKysrKysrKystLS0tLQogOCBmaWxlcyBjaGFuZ2VkLCA4OSBpbnNlcnRpb25zKCspLCA5 MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF9ndWMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5oCmluZGV4 IDY4NTIzNTIzODFjZS4uZjUxYzRjM2MxZDBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC91Yy9pbnRlbF9ndWMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF9ndWMuaApAQCAtMTY5LDkgKzE2OSw5IEBAIGludCBpbnRlbF9ndWNfc3VzcGVuZChzdHJ1 Y3QgaW50ZWxfZ3VjICpndWMpOwogaW50IGludGVsX2d1Y19yZXN1bWUoc3RydWN0IGludGVsX2d1 YyAqZ3VjKTsKIHN0cnVjdCBpOTE1X3ZtYSAqaW50ZWxfZ3VjX2FsbG9jYXRlX3ZtYShzdHJ1Y3Qg aW50ZWxfZ3VjICpndWMsIHUzMiBzaXplKTsKIAotc3RhdGljIGlubGluZSBib29sIGludGVsX2d1 Y19pc19sb2FkZWQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQorc3RhdGljIGlubGluZSBib29sIGlu dGVsX2d1Y19pc19ydW5uaW5nKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIHsKLQlyZXR1cm4gaW50 ZWxfdWNfZndfaXNfbG9hZGVkKCZndWMtPmZ3KTsKKwlyZXR1cm4gaW50ZWxfdWNfZndfaXNfcnVu bmluZygmZ3VjLT5mdyk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgaW50IGludGVsX2d1Y19zYW5pdGl6 ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC91Yy9pbnRlbF9ndWNfZncuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVs X2d1Y19mdy5jCmluZGV4IGEwMjdkZWI4MDMzMC4uMDg1ZTc4NDJlZjhhIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZncuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZncuYwpAQCAtMjMyLDUgKzIzMiw5IEBAIHN0YXRp YyBpbnQgZ3VjX2Z3X3hmZXIoc3RydWN0IGludGVsX3VjX2Z3ICpndWNfZncpCiAgKi8KIGludCBp bnRlbF9ndWNfZndfdXBsb2FkKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIHsKLQlyZXR1cm4gaW50 ZWxfdWNfZndfdXBsb2FkKCZndWMtPmZ3LCBndWNfZndfeGZlcik7CisJaW50IHJldCA9IGludGVs X3VjX2Z3X3VwbG9hZCgmZ3VjLT5mdywgZ3VjX2Z3X3hmZXIpOworCWlmICghcmV0KQorCQlndWMt PmZ3LnN0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX1JVTk5JTkc7CisKKwlyZXR1cm4gcmV0Owog fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1p c3Npb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9u LmMKaW5kZXggYTBmMmEwMTM2NWJjLi5iNDIzOGZlMTZhMDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwpAQCAtOTQxLDcgKzk0MSw3 IEBAIHN0YXRpYyB2b2lkIF9fZ3VjX2NsaWVudF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9ndWNfY2xp ZW50ICpjbGllbnQpCiAJICogdGhlIGNhc2UsIGluc3RlYWQgb2YgdHJ5aW5nIChpbiB2YWluKSB0 byBjb21tdW5pY2F0ZSB3aXRoIGl0LCBsZXQncwogCSAqIGp1c3QgY2xlYW51cCB0aGUgZG9vcmJl bGwgSFcgYW5kIG91ciBpbnRlcm5hbCBzdGF0ZS4KIAkgKi8KLQlpZiAoaW50ZWxfZ3VjX2lzX2xv YWRlZChjbGllbnQtPmd1YykpCisJaWYgKGludGVsX2d1Y19pc19ydW5uaW5nKGNsaWVudC0+Z3Vj KSkKIAkJZGVzdHJveV9kb29yYmVsbChjbGllbnQpOwogCWVsc2UKIAkJX19maW5pX2Rvb3JiZWxs KGNsaWVudCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9o dWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2h1Yy5jCmluZGV4IGFiNmMx NTY0YjZhNy4uNzgwNGVhNWY2OTljIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC91Yy9pbnRlbF9odWMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9o dWMuYwpAQCAtMTE3LDggKzExNyw4IEBAIGludCBpbnRlbF9odWNfYXV0aChzdHJ1Y3QgaW50ZWxf aHVjICpodWMpCiAJc3RydWN0IGludGVsX2d1YyAqZ3VjID0gJmd0LT51Yy5ndWM7CiAJaW50IHJl dDsKIAotCWlmIChodWMtPmZ3LmxvYWRfc3RhdHVzICE9IElOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NF U1MpCi0JCXJldHVybiAtRU5PRVhFQzsKKwlHRU1fQlVHX09OKCFpbnRlbF91Y19md19pc19sb2Fk ZWQoJmh1Yy0+ZncpKTsKKwlHRU1fQlVHX09OKGludGVsX2h1Y19pc19hdXRoZW50aWNhdGVkKGh1 YykpOwogCiAJcmV0ID0gaW50ZWxfZ3VjX2F1dGhfaHVjKGd1YywKIAkJCQkgaW50ZWxfZ3VjX2dn dHRfb2Zmc2V0KGd1YywgaHVjLT5yc2FfZGF0YSkpOwpAQCAtMTM4LDEwICsxMzgsMTIgQEAgaW50 IGludGVsX2h1Y19hdXRoKHN0cnVjdCBpbnRlbF9odWMgKmh1YykKIAkJZ290byBmYWlsOwogCX0K IAorCWh1Yy0+Zncuc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfUlVOTklORzsKKwogCXJldHVy biAwOwogCiBmYWlsOgotCWh1Yy0+ZncubG9hZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9G QUlMOworCWh1Yy0+Zncuc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfTE9BRF9GQUlMOwogCiAJ RFJNX0VSUk9SKCJIdUM6IEF1dGhlbnRpY2F0aW9uIGZhaWxlZCAlZFxuIiwgcmV0KTsKIAlyZXR1 cm4gcmV0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfaHVj LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9odWMuaAppbmRleCA5ZmEzZDQ2 MjlmMmUuLmVhMzQwZjg1YmM0NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv dWMvaW50ZWxfaHVjLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfaHVj LmgKQEAgLTU2LDQgKzU2LDkgQEAgc3RhdGljIGlubGluZSBpbnQgaW50ZWxfaHVjX3Nhbml0aXpl KHN0cnVjdCBpbnRlbF9odWMgKmh1YykKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGlubGluZSBi b29sIGludGVsX2h1Y19pc19hdXRoZW50aWNhdGVkKHN0cnVjdCBpbnRlbF9odWMgKmh1YykKK3sK KwlyZXR1cm4gaW50ZWxfdWNfZndfaXNfcnVubmluZygmaHVjLT5mdyk7Cit9CisKICNlbmRpZgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmMKaW5kZXggZDYwYzU2ZmQ3MmU1Li5iNzYx ODA5OTQ2YjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3Vj LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuYwpAQCAtNTU5LDcg KzU1OSw3IEBAIHZvaWQgaW50ZWxfdWNfZmluaV9odyhzdHJ1Y3QgaW50ZWxfdWMgKnVjKQogewog CXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZ1Yy0+Z3VjOwogCi0JaWYgKCFpbnRlbF9ndWNfaXNf bG9hZGVkKGd1YykpCisJaWYgKCFpbnRlbF9ndWNfaXNfcnVubmluZyhndWMpKQogCQlyZXR1cm47 CiAKIAlHRU1fQlVHX09OKCFpbnRlbF91Y19md19zdXBwb3J0ZWQoJmd1Yy0+ZncpKTsKQEAgLTU4 MSw3ICs1ODEsNyBAQCB2b2lkIGludGVsX3VjX3Jlc2V0X3ByZXBhcmUoc3RydWN0IGludGVsX3Vj ICp1YykKIHsKIAlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmdWMtPmd1YzsKIAotCWlmICghaW50 ZWxfZ3VjX2lzX2xvYWRlZChndWMpKQorCWlmICghaW50ZWxfZ3VjX2lzX3J1bm5pbmcoZ3VjKSkK IAkJcmV0dXJuOwogCiAJZ3VjX3N0b3BfY29tbXVuaWNhdGlvbihndWMpOwpAQCAtNTkzLDcgKzU5 Myw3IEBAIHZvaWQgaW50ZWxfdWNfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBpbnRlbF91YyAqdWMp CiAJc3RydWN0IGludGVsX2d1YyAqZ3VjID0gJnVjLT5ndWM7CiAJaW50IGVycjsKIAotCWlmICgh aW50ZWxfZ3VjX2lzX2xvYWRlZChndWMpKQorCWlmICghaW50ZWxfZ3VjX2lzX3J1bm5pbmcoZ3Vj KSkKIAkJcmV0dXJuOwogCiAJZXJyID0gaW50ZWxfZ3VjX3N1c3BlbmQoZ3VjKTsKQEAgLTYwOCw3 ICs2MDgsNyBAQCB2b2lkIGludGVsX3VjX3N1c3BlbmQoc3RydWN0IGludGVsX3VjICp1YykKIAlz dHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmdWMtPmd1YzsKIAlpbnRlbF93YWtlcmVmX3Qgd2FrZXJl ZjsKIAotCWlmICghaW50ZWxfZ3VjX2lzX2xvYWRlZChndWMpKQorCWlmICghaW50ZWxfZ3VjX2lz X3J1bm5pbmcoZ3VjKSkKIAkJcmV0dXJuOwogCiAJd2l0aF9pbnRlbF9ydW50aW1lX3BtKCZ1Y190 b19ndCh1YyktPmk5MTUtPnJ1bnRpbWVfcG0sIHdha2VyZWYpCkBAIC02MjAsNyArNjIwLDcgQEAg aW50IGludGVsX3VjX3Jlc3VtZShzdHJ1Y3QgaW50ZWxfdWMgKnVjKQogCXN0cnVjdCBpbnRlbF9n dWMgKmd1YyA9ICZ1Yy0+Z3VjOwogCWludCBlcnI7CiAKLQlpZiAoIWludGVsX2d1Y19pc19sb2Fk ZWQoZ3VjKSkKKwlpZiAoIWludGVsX2d1Y19pc19ydW5uaW5nKGd1YykpCiAJCXJldHVybiAwOwog CiAJZ3VjX2VuYWJsZV9jb21tdW5pY2F0aW9uKGd1Yyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Y19mdy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv dWMvaW50ZWxfdWNfZncuYwppbmRleCA0ODEwMGRmZjQ2NmQuLjlmYzcyYzJlNTBkMSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZncuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Y19mdy5jCkBAIC0xMzAsNyArMTMwLDcgQEAg X191Y19md19zZWxlY3Qoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdywgZW51bSBpbnRlbF9wbGF0 Zm9ybSBwLCB1OCByZXYpCiAJCQkgICAgICAgZndfYmxvYnNbaV0uZmlyc3RfcmV2KTsKIAogCQkJ dWNfZnctPnBhdGggPSBOVUxMOwotCQkJdWNfZnctPmZldGNoX3N0YXR1cyA9IElOVEVMX1VDX0ZJ Uk1XQVJFX05PVF9TVVBQT1JURUQ7CisJCQl1Y19mdy0+c3RhdHVzID0gSU5URUxfVUNfRklSTVdB UkVfTk9UX1NVUFBPUlRFRDsKIAkJCXJldHVybjsKIAkJfQogCX0KQEAgLTEzOSwxNSArMTM5LDEz IEBAIF9fdWNfZndfc2VsZWN0KHN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncsIGVudW0gaW50ZWxf cGxhdGZvcm0gcCwgdTggcmV2KQogc3RhdGljIHZvaWQKIHVjX2Z3X3NlbGVjdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSwgc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdykKIHsKLQlHRU1f QlVHX09OKHVjX2Z3LT5mZXRjaF9zdGF0dXMgIT0gSU5URUxfVUNfRklSTVdBUkVfVU5JTklUSUFM SVpFRCk7CisJR0VNX0JVR19PTih1Y19mdy0+c3RhdHVzICE9IElOVEVMX1VDX0ZJUk1XQVJFX1VO SU5JVElBTElaRUQpOwogCiAJaWYgKCFIQVNfR1RfVUMoaTkxNSkpIHsKLQkJdWNfZnctPmZldGNo X3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX05PVF9TVVBQT1JURUQ7CisJCXVjX2Z3LT5zdGF0 dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9OT1RfU1VQUE9SVEVEOwogCQlyZXR1cm47CiAJfQogCi0J dWNfZnctPmZldGNoX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX05PVF9TVEFSVEVEOwotCiAJ aWYgKHVubGlrZWx5KGk5MTVfbW9kcGFyYW1zLmd1Y19maXJtd2FyZV9wYXRoICYmCiAJCSAgICAg dWNfZnctPnR5cGUgPT0gSU5URUxfVUNfRldfVFlQRV9HVUMpKQogCQl1Y19mdy0+cGF0aCA9IGk5 MTVfbW9kcGFyYW1zLmd1Y19maXJtd2FyZV9wYXRoOwpAQCAtMTU2LDYgKzE1NCw4IEBAIHVjX2Z3 X3NlbGVjdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgc3RydWN0IGludGVsX3VjX2Z3 ICp1Y19mdykKIAkJdWNfZnctPnBhdGggPSBpOTE1X21vZHBhcmFtcy5odWNfZmlybXdhcmVfcGF0 aDsKIAllbHNlCiAJCV9fdWNfZndfc2VsZWN0KHVjX2Z3LCBJTlRFTF9JTkZPKGk5MTUpLT5wbGF0 Zm9ybSwgSU5URUxfUkVWSUQoaTkxNSkpOworCisJdWNfZnctPnN0YXR1cyA9IElOVEVMX1VDX0ZJ Uk1XQVJFX1NFTEVDVElPTl9ET05FOwogfQogCiAvKioKQEAgLTE3MiwxNCArMTcyLDEzIEBAIHZv aWQgaW50ZWxfdWNfZndfaW5pdF9lYXJseShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwK IAkJCSAgICBlbnVtIGludGVsX3VjX2Z3X3R5cGUgdHlwZSkKIHsKIAkvKgotCSAqIHdlIHVzZSBG SVJNV0FSRV9VTklOSVRJQUxJWkVEIHRvIGRldGVjdCBjaGVja3MgYWdhaW5zdCBmZXRjaF9zdGF0 dXMKKwkgKiB3ZSB1c2UgRklSTVdBUkVfVU5JTklUSUFMSVpFRCB0byBkZXRlY3QgY2hlY2tzIGFn YWluc3QgdWNfZnctPnN0YXR1cwogCSAqIGJlZm9yZSB3ZSdyZSBsb29rZWQgYXQgdGhlIEhXIGNh cHMgdG8gc2VlIGlmIHdlIGhhdmUgdWMgc3VwcG9ydAogCSAqLwogCUJVSUxEX0JVR19PTihJTlRF TF9VQ19GSVJNV0FSRV9VTklOSVRJQUxJWkVEKTsKIAogCXVjX2Z3LT5wYXRoID0gTlVMTDsKLQl1 Y19mdy0+ZmV0Y2hfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfVU5JTklUSUFMSVpFRDsKLQl1 Y19mdy0+bG9hZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9OT1RfU1RBUlRFRDsKKwl1Y19m dy0+c3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfVU5JTklUSUFMSVpFRDsKIAl1Y19mdy0+dHlw ZSA9IHR5cGU7CiAKIAl1Y19md19zZWxlY3QoaTkxNSwgdWNfZncpOwpAQCAtMjA0LDI5ICsyMDMs MTEgQEAgdm9pZCBpbnRlbF91Y19md19mZXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCiAJaW50IGVycjsKIAogCUdFTV9CVUdfT04oIWludGVsX3VjX2Z3X3N1cHBvcnRlZCh1 Y19mdykpOwotCi0JaWYgKCF1Y19mdy0+cGF0aCkgewotCQlkZXZfaW5mbyhkZXZfcHJpdi0+ZHJt LmRldiwKLQkJCSAiJXM6IE5vIGZpcm13YXJlIHdhcyBkZWZpbmVkIGZvciAlcyFcbiIsCi0JCQkg aW50ZWxfdWNfZndfdHlwZV9yZXByKHVjX2Z3LT50eXBlKSwKLQkJCSBpbnRlbF9wbGF0Zm9ybV9u YW1lKElOVEVMX0lORk8oZGV2X3ByaXYpLT5wbGF0Zm9ybSkpOwotCQlyZXR1cm47Ci0JfQotCi0J RFJNX0RFQlVHX0RSSVZFUigiJXMgZncgZmV0Y2ggJXNcbiIsCi0JCQkgaW50ZWxfdWNfZndfdHlw ZV9yZXByKHVjX2Z3LT50eXBlKSwgdWNfZnctPnBhdGgpOwotCi0JdWNfZnctPmZldGNoX3N0YXR1 cyA9IElOVEVMX1VDX0ZJUk1XQVJFX1BFTkRJTkc7Ci0JRFJNX0RFQlVHX0RSSVZFUigiJXMgZncg ZmV0Y2ggJXNcbiIsCi0JCQkgaW50ZWxfdWNfZndfdHlwZV9yZXByKHVjX2Z3LT50eXBlKSwKLQkJ CSBpbnRlbF91Y19md19zdGF0dXNfcmVwcih1Y19mdy0+ZmV0Y2hfc3RhdHVzKSk7CisJR0VNX0JV R19PTighaW50ZWxfdWNfZndfaXNfc2VsZWN0ZWQodWNfZncpKTsKIAogCWVyciA9IHJlcXVlc3Rf ZmlybXdhcmUoJmZ3LCB1Y19mdy0+cGF0aCwgJnBkZXYtPmRldik7Ci0JaWYgKGVycikgewotCQlE Uk1fREVCVUdfRFJJVkVSKCIlcyBmdyByZXF1ZXN0X2Zpcm13YXJlIGVycj0lZFxuIiwKLQkJCQkg aW50ZWxfdWNfZndfdHlwZV9yZXByKHVjX2Z3LT50eXBlKSwgZXJyKTsKKwlpZiAoZXJyKQogCQln b3RvIGZhaWw7Ci0JfQogCiAJRFJNX0RFQlVHX0RSSVZFUigiJXMgZncgc2l6ZSAlenUgcHRyICVw XG4iLAogCQkJIGludGVsX3VjX2Z3X3R5cGVfcmVwcih1Y19mdy0+dHlwZSksIGZ3LT5zaXplLCBm dyk7CkBAIC0zMjgsMTkgKzMwOSwxMyBAQCB2b2lkIGludGVsX3VjX2Z3X2ZldGNoKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogCXVjX2Z3LT5vYmogPSBvYmo7CiAJdWNfZnct PnNpemUgPSBmdy0+c2l6ZTsKLQl1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gSU5URUxfVUNfRklSTVdB UkVfU1VDQ0VTUzsKLQlEUk1fREVCVUdfRFJJVkVSKCIlcyBmdyBmZXRjaCAlc1xuIiwKLQkJCSBp bnRlbF91Y19md190eXBlX3JlcHIodWNfZnctPnR5cGUpLAotCQkJIGludGVsX3VjX2Z3X3N0YXR1 c19yZXByKHVjX2Z3LT5mZXRjaF9zdGF0dXMpKTsKKwl1Y19mdy0+c3RhdHVzID0gSU5URUxfVUNf RklSTVdBUkVfQVZBSUxBQkxFOwogCiAJcmVsZWFzZV9maXJtd2FyZShmdyk7CiAJcmV0dXJuOwog CiBmYWlsOgotCXVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9GQUlMOwot CURSTV9ERUJVR19EUklWRVIoIiVzIGZ3IGZldGNoICVzXG4iLAotCQkJIGludGVsX3VjX2Z3X3R5 cGVfcmVwcih1Y19mdy0+dHlwZSksCi0JCQkgaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIodWNfZnct PmZldGNoX3N0YXR1cykpOworCXVjX2Z3LT5zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9GRVRD SF9GQUlMOwogCiAJRFJNX1dBUk4oIiVzOiBGYWlsZWQgdG8gZmV0Y2ggZmlybXdhcmUgJXMgKGVy cm9yICVkKVxuIiwKIAkJIGludGVsX3VjX2Z3X3R5cGVfcmVwcih1Y19mdy0+dHlwZSksIHVjX2Z3 LT5wYXRoLCBlcnIpOwpAQCAtMzk2LDE0ICszNzEsMTEgQEAgaW50IGludGVsX3VjX2Z3X3VwbG9h ZChzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3LAogCURSTV9ERUJVR19EUklWRVIoIiVzIGZ3IGxv YWQgJXNcbiIsCiAJCQkgaW50ZWxfdWNfZndfdHlwZV9yZXByKHVjX2Z3LT50eXBlKSwgdWNfZnct PnBhdGgpOwogCi0JaWYgKHVjX2Z3LT5mZXRjaF9zdGF0dXMgIT0gSU5URUxfVUNfRklSTVdBUkVf U1VDQ0VTUykKLQkJcmV0dXJuIC1FTk9FWEVDOwotCi0JdWNfZnctPmxvYWRfc3RhdHVzID0gSU5U RUxfVUNfRklSTVdBUkVfUEVORElORzsKLQlEUk1fREVCVUdfRFJJVkVSKCIlcyBmdyBsb2FkICVz XG4iLAotCQkJIGludGVsX3VjX2Z3X3R5cGVfcmVwcih1Y19mdy0+dHlwZSksCi0JCQkgaW50ZWxf dWNfZndfc3RhdHVzX3JlcHIodWNfZnctPmxvYWRfc3RhdHVzKSk7CisJLyogbWFrZSBzdXJlIHRo ZSBzdGF0dXMgd2FzIGNsZWFyZWQgdGhlIGxhc3QgdGltZSB3ZSByZXNldCB0aGUgdWMgKi8KKwlH RU1fQlVHX09OKGludGVsX3VjX2Z3X2lzX2xvYWRlZCh1Y19mdykpOwogCisJaWYgKCFpbnRlbF91 Y19md19pc19hdmFpbGFibGUodWNfZncpKQorCQlyZXR1cm4gLUVOT0VYRUM7CiAJLyogQ2FsbCBj dXN0b20gbG9hZGVyICovCiAJaW50ZWxfdWNfZndfZ2d0dF9iaW5kKHVjX2Z3KTsKIAllcnIgPSB4 ZmVyKHVjX2Z3KTsKQEAgLTQxMSwxMCArMzgzLDkgQEAgaW50IGludGVsX3VjX2Z3X3VwbG9hZChz dHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3LAogCWlmIChlcnIpCiAJCWdvdG8gZmFpbDsKIAotCXVj X2Z3LT5sb2FkX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NFU1M7Ci0JRFJNX0RFQlVH X0RSSVZFUigiJXMgZncgbG9hZCAlc1xuIiwKLQkJCSBpbnRlbF91Y19md190eXBlX3JlcHIodWNf ZnctPnR5cGUpLAotCQkJIGludGVsX3VjX2Z3X3N0YXR1c19yZXByKHVjX2Z3LT5sb2FkX3N0YXR1 cykpOworCXVjX2Z3LT5zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9MT0FERUQ7CisJRFJNX0RF QlVHX0RSSVZFUigiJXMgZncgbG9hZCBjb21wbGV0ZWRcbiIsCisJCQkgaW50ZWxfdWNfZndfdHlw ZV9yZXByKHVjX2Z3LT50eXBlKSk7CiAKIAlEUk1fSU5GTygiJXM6IExvYWRlZCBmaXJtd2FyZSAl cyAodmVyc2lvbiAldS4ldSlcbiIsCiAJCSBpbnRlbF91Y19md190eXBlX3JlcHIodWNfZnctPnR5 cGUpLApAQCAtNDI0LDEwICszOTUsOSBAQCBpbnQgaW50ZWxfdWNfZndfdXBsb2FkKHN0cnVjdCBp bnRlbF91Y19mdyAqdWNfZncsCiAJcmV0dXJuIDA7CiAKIGZhaWw6Ci0JdWNfZnctPmxvYWRfc3Rh dHVzID0gSU5URUxfVUNfRklSTVdBUkVfRkFJTDsKLQlEUk1fREVCVUdfRFJJVkVSKCIlcyBmdyBs b2FkICVzXG4iLAotCQkJIGludGVsX3VjX2Z3X3R5cGVfcmVwcih1Y19mdy0+dHlwZSksCi0JCQkg aW50ZWxfdWNfZndfc3RhdHVzX3JlcHIodWNfZnctPmxvYWRfc3RhdHVzKSk7CisJdWNfZnctPnN0 YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX0xPQURfRkFJTDsKKwlEUk1fREVCVUdfRFJJVkVSKCIl cyBmdyBsb2FkIGZhaWxlZFxuIiwKKwkJCSBpbnRlbF91Y19md190eXBlX3JlcHIodWNfZnctPnR5 cGUpKTsKIAogCURSTV9XQVJOKCIlczogRmFpbGVkIHRvIGxvYWQgZmlybXdhcmUgJXMgKGVycm9y ICVkKVxuIiwKIAkJIGludGVsX3VjX2Z3X3R5cGVfcmVwcih1Y19mdy0+dHlwZSksIHVjX2Z3LT5w YXRoLCBlcnIpOwpAQCAtNDM5LDcgKzQwOSwxMCBAQCBpbnQgaW50ZWxfdWNfZndfaW5pdChzdHJ1 Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KQogewogCWludCBlcnI7CiAKLQlpZiAodWNfZnctPmZldGNo X3N0YXR1cyAhPSBJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTKQorCS8qIHRoaXMgc2hvdWxkIGhh cHBlbiBiZWZvcmUgdGhlIGxvYWQhICovCisJR0VNX0JVR19PTihpbnRlbF91Y19md19pc19sb2Fk ZWQodWNfZncpKTsKKworCWlmICghaW50ZWxfdWNfZndfaXNfYXZhaWxhYmxlKHVjX2Z3KSkKIAkJ cmV0dXJuIC1FTk9FWEVDOwogCiAJZXJyID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyh1Y19m dy0+b2JqKTsKQEAgLTQ1Miw3ICs0MjUsNyBAQCBpbnQgaW50ZWxfdWNfZndfaW5pdChzdHJ1Y3Qg aW50ZWxfdWNfZncgKnVjX2Z3KQogCiB2b2lkIGludGVsX3VjX2Z3X2Zpbmkoc3RydWN0IGludGVs X3VjX2Z3ICp1Y19mdykKIHsKLQlpZiAodWNfZnctPmZldGNoX3N0YXR1cyAhPSBJTlRFTF9VQ19G SVJNV0FSRV9TVUNDRVNTKQorCWlmICghaW50ZWxfdWNfZndfaXNfYXZhaWxhYmxlKHVjX2Z3KSkK IAkJcmV0dXJuOwogCiAJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKHVjX2Z3LT5vYmopOwpA QCAtNDg2LDcgKzQ1OSw3IEBAIHZvaWQgaW50ZWxfdWNfZndfY2xlYW51cF9mZXRjaChzdHJ1Y3Qg aW50ZWxfdWNfZncgKnVjX2Z3KQogCWlmIChvYmopCiAJCWk5MTVfZ2VtX29iamVjdF9wdXQob2Jq KTsKIAotCXVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9OT1RfU1RBUlRF RDsKKwl1Y19mdy0+c3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfU0VMRUNUSU9OX0RPTkU7CiB9 CiAKIC8qKgpAQCAtNTAwLDkgKzQ3Myw4IEBAIHZvaWQgaW50ZWxfdWNfZndfZHVtcChjb25zdCBz dHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3LCBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApCiB7CiAJZHJt X3ByaW50ZihwLCAiJXMgZmlybXdhcmU6ICVzXG4iLAogCQkgICBpbnRlbF91Y19md190eXBlX3Jl cHIodWNfZnctPnR5cGUpLCB1Y19mdy0+cGF0aCk7Ci0JZHJtX3ByaW50ZihwLCAiXHRzdGF0dXM6 IGZldGNoICVzLCBsb2FkICVzXG4iLAotCQkgICBpbnRlbF91Y19md19zdGF0dXNfcmVwcih1Y19m dy0+ZmV0Y2hfc3RhdHVzKSwKLQkJICAgaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIodWNfZnctPmxv YWRfc3RhdHVzKSk7CisJZHJtX3ByaW50ZihwLCAiXHRzdGF0dXM6ICVzXG4iLAorCQkgICBpbnRl bF91Y19md19zdGF0dXNfcmVwcih1Y19mdy0+c3RhdHVzKSk7CiAJZHJtX3ByaW50ZihwLCAiXHR2 ZXJzaW9uOiB3YW50ZWQgJXUuJXUsIGZvdW5kICV1LiV1XG4iLAogCQkgICB1Y19mdy0+bWFqb3Jf dmVyX3dhbnRlZCwgdWNfZnctPm1pbm9yX3Zlcl93YW50ZWQsCiAJCSAgIHVjX2Z3LT5tYWpvcl92 ZXJfZm91bmQsIHVjX2Z3LT5taW5vcl92ZXJfZm91bmQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZncuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3VjL2ludGVsX3VjX2Z3LmgKaW5kZXggYzI4NjhlZjE1ZWRhLi5lY2RlYzQzMjAyNjAgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjX2Z3LmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZncuaApAQCAtMzUsMTIgKzM1LDE0IEBA IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlOwogI2RlZmluZSBJTlRFTF9VQ19GSVJNV0FSRV9VUkwg Imh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2Zpcm13YXJl L2xpbnV4LWZpcm13YXJlLmdpdC90cmVlL2k5MTUiCiAKIGVudW0gaW50ZWxfdWNfZndfc3RhdHVz IHsKLQlJTlRFTF9VQ19GSVJNV0FSRV9OT1RfU1VQUE9SVEVEID0gLTIsIC8qIG5vIHVjIEhXICov Ci0JSU5URUxfVUNfRklSTVdBUkVfRkFJTCA9IC0xLAorCUlOVEVMX1VDX0ZJUk1XQVJFX0xPQURf RkFJTCA9IC0zLAorCUlOVEVMX1VDX0ZJUk1XQVJFX0ZFVENIX0ZBSUwgPSAtMiwKKwlJTlRFTF9V Q19GSVJNV0FSRV9OT1RfU1VQUE9SVEVEID0gLTEsIC8qIG5vIHVjIEhXICovCiAJSU5URUxfVUNf RklSTVdBUkVfVU5JTklUSUFMSVpFRCA9IDAsIC8qIHVzZWQgdG8gY2F0Y2ggY2hlY2tzIGRvbmUg dG9vIGVhcmx5ICovCi0JSU5URUxfVUNfRklSTVdBUkVfTk9UX1NUQVJURUQgPSAxLAotCUlOVEVM X1VDX0ZJUk1XQVJFX1BFTkRJTkcsCi0JSU5URUxfVUNfRklSTVdBUkVfU1VDQ0VTUworCUlOVEVM X1VDX0ZJUk1XQVJFX1NFTEVDVElPTl9ET05FLCAvKiBzZWxlY3Rpb24gaW5jbHVkZSB0aGUgIm5v IEZXIiBjYXNlICovCisJSU5URUxfVUNfRklSTVdBUkVfQVZBSUxBQkxFLCAvKiBmZXRjaCBkb25l ICovCisJSU5URUxfVUNfRklSTVdBUkVfTE9BREVELCAvKiBkbWEgeGZlciBkb25lICovCisJSU5U RUxfVUNfRklSTVdBUkVfUlVOTklORyAvKiBmdyBpbml0L2F1dGggZG9uZSAqLwogfTsKIAogZW51 bSBpbnRlbF91Y19md190eXBlIHsKQEAgLTU3LDggKzU5LDcgQEAgc3RydWN0IGludGVsX3VjX2Z3 IHsKIAljb25zdCBjaGFyICpwYXRoOwogCXNpemVfdCBzaXplOwogCXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmo7Ci0JZW51bSBpbnRlbF91Y19md19zdGF0dXMgZmV0Y2hfc3RhdHVzOwot CWVudW0gaW50ZWxfdWNfZndfc3RhdHVzIGxvYWRfc3RhdHVzOworCWVudW0gaW50ZWxfdWNfZndf c3RhdHVzIHN0YXR1czsKIAogCS8qCiAJICogVGhlIGZpcm13YXJlIGJ1aWxkIHByb2Nlc3Mgd2ls bCBnZW5lcmF0ZSBhIHZlcnNpb24gaGVhZGVyIGZpbGUgd2l0aCBtYWpvciBhbmQKQEAgLTgzLDE4 ICs4NCwyMiBAQCBzdGF0aWMgaW5saW5lCiBjb25zdCBjaGFyICppbnRlbF91Y19md19zdGF0dXNf cmVwcihlbnVtIGludGVsX3VjX2Z3X3N0YXR1cyBzdGF0dXMpCiB7CiAJc3dpdGNoIChzdGF0dXMp IHsKKwljYXNlIElOVEVMX1VDX0ZJUk1XQVJFX0xPQURfRkFJTDoKKwkJcmV0dXJuICJMT0FEIEZB SUwiOworCWNhc2UgSU5URUxfVUNfRklSTVdBUkVfRkVUQ0hfRkFJTDoKKwkJcmV0dXJuICJGRVRD SCBGQUlMIjsKIAljYXNlIElOVEVMX1VDX0ZJUk1XQVJFX05PVF9TVVBQT1JURUQ6Ci0JCXJldHVy biAiTi9BIC0gdWMgSFcgbm90IGF2YWlsYWJsZSI7Ci0JY2FzZSBJTlRFTF9VQ19GSVJNV0FSRV9G QUlMOgotCQlyZXR1cm4gIkZBSUwiOworCQlyZXR1cm4gIk4vQSI7CiAJY2FzZSBJTlRFTF9VQ19G SVJNV0FSRV9VTklOSVRJQUxJWkVEOgogCQlyZXR1cm4gIlVOSU5JVElBTElaRUQiOwotCWNhc2Ug SU5URUxfVUNfRklSTVdBUkVfTk9UX1NUQVJURUQ6Ci0JCXJldHVybiAiTk9UX1NUQVJURUQiOwot CWNhc2UgSU5URUxfVUNfRklSTVdBUkVfUEVORElORzoKLQkJcmV0dXJuICJQRU5ESU5HIjsKLQlj YXNlIElOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NFU1M6Ci0JCXJldHVybiAiU1VDQ0VTUyI7CisJY2Fz ZSBJTlRFTF9VQ19GSVJNV0FSRV9TRUxFQ1RJT05fRE9ORToKKwkJcmV0dXJuICJTRUxFQ1RJT04g RE9ORSI7CisJY2FzZSBJTlRFTF9VQ19GSVJNV0FSRV9BVkFJTEFCTEU6CisJCXJldHVybiAiQVZB SUxBQkxFIjsKKwljYXNlIElOVEVMX1VDX0ZJUk1XQVJFX0xPQURFRDoKKwkJcmV0dXJuICJMT0FE RUQiOworCWNhc2UgSU5URUxfVUNfRklSTVdBUkVfUlVOTklORzoKKwkJcmV0dXJuICJSVU5OSU5H IjsKIAl9CiAJcmV0dXJuICI8aW52YWxpZD4iOwogfQpAQCAtMTEzLDI1ICsxMTgsMzYgQEAgc3Rh dGljIGlubGluZSBjb25zdCBjaGFyICppbnRlbF91Y19md190eXBlX3JlcHIoZW51bSBpbnRlbF91 Y19md190eXBlIHR5cGUpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF91Y19md19pc19zZWxl Y3RlZChzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KQogeworCUdFTV9CVUdfT04odWNfZnctPnBh dGggJiYgdWNfZnctPnN0YXR1cyA8IElOVEVMX1VDX0ZJUk1XQVJFX1NFTEVDVElPTl9ET05FKTsK IAlyZXR1cm4gdWNfZnctPnBhdGggIT0gTlVMTDsKIH0KIAorc3RhdGljIGlubGluZSBib29sIGlu dGVsX3VjX2Z3X2lzX2F2YWlsYWJsZShzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KQoreworCXJl dHVybiB1Y19mdy0+c3RhdHVzID49IElOVEVMX1VDX0ZJUk1XQVJFX0FWQUlMQUJMRTsKK30KKwog c3RhdGljIGlubGluZSBib29sIGludGVsX3VjX2Z3X2lzX2xvYWRlZChzdHJ1Y3QgaW50ZWxfdWNf ZncgKnVjX2Z3KQogewotCXJldHVybiB1Y19mdy0+bG9hZF9zdGF0dXMgPT0gSU5URUxfVUNfRklS TVdBUkVfU1VDQ0VTUzsKKwlyZXR1cm4gdWNfZnctPnN0YXR1cyA+PSBJTlRFTF9VQ19GSVJNV0FS RV9MT0FERUQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF91Y19md19pc19ydW5uaW5n KHN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncpCit7CisJcmV0dXJuIHVjX2Z3LT5zdGF0dXMgPT0g SU5URUxfVUNfRklSTVdBUkVfUlVOTklORzsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGludGVs X3VjX2Z3X3N1cHBvcnRlZChzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KQogewogCS8qIHNob3Vs ZG4ndCBjYWxsIHRoaXMgYmVmb3JlIGNoZWNraW5nIGh3L2Jsb2IgYXZhaWxhYmlsaXR5ICovCi0J R0VNX0JVR19PTih1Y19mdy0+ZmV0Y2hfc3RhdHVzID09IElOVEVMX1VDX0ZJUk1XQVJFX1VOSU5J VElBTElaRUQpOwotCXJldHVybiB1Y19mdy0+ZmV0Y2hfc3RhdHVzICE9IElOVEVMX1VDX0ZJUk1X QVJFX05PVF9TVVBQT1JURUQ7CisJR0VNX0JVR19PTih1Y19mdy0+c3RhdHVzID09IElOVEVMX1VD X0ZJUk1XQVJFX1VOSU5JVElBTElaRUQpOworCXJldHVybiB1Y19mdy0+c3RhdHVzICE9IElOVEVM X1VDX0ZJUk1XQVJFX05PVF9TVVBQT1JURUQ7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBpbnRl bF91Y19md19zYW5pdGl6ZShzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KQogewogCWlmIChpbnRl bF91Y19md19pc19sb2FkZWQodWNfZncpKQotCQl1Y19mdy0+bG9hZF9zdGF0dXMgPSBJTlRFTF9V Q19GSVJNV0FSRV9QRU5ESU5HOworCQl1Y19mdy0+c3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVf QVZBSUxBQkxFOwogfQogCiAvKioKQEAgLTE0NCw3ICsxNjAsNyBAQCBzdGF0aWMgaW5saW5lIHZv aWQgaW50ZWxfdWNfZndfc2FuaXRpemUoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdykKICAqLwog c3RhdGljIGlubGluZSB1MzIgaW50ZWxfdWNfZndfZ2V0X3VwbG9hZF9zaXplKHN0cnVjdCBpbnRl bF91Y19mdyAqdWNfZncpCiB7Ci0JaWYgKHVjX2Z3LT5mZXRjaF9zdGF0dXMgIT0gSU5URUxfVUNf RklSTVdBUkVfU1VDQ0VTUykKKwlpZiAoIWludGVsX3VjX2Z3X2lzX2F2YWlsYWJsZSh1Y19mdykp CiAJCXJldHVybiAwOwogCiAJcmV0dXJuIHVjX2Z3LT5oZWFkZXJfc2l6ZSArIHVjX2Z3LT51Y29k ZV9zaXplOwotLSAKMi4yMi4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZng=