From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jackie Li Subject: [PATCH v3 3/4] drm/i915: Add code to accept valid locked WOPCM register values Date: Mon, 9 Apr 2018 17:42:19 -0700 Message-ID: <1523320940-32742-3-git-send-email-yaodong.li@intel.com> References: <1523320940-32742-1-git-send-email-yaodong.li@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 A1BF56E287 for ; Tue, 10 Apr 2018 00:44:25 +0000 (UTC) In-Reply-To: <1523320940-32742-1-git-send-email-yaodong.li@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 SW4gY3VycmVudCBjb2RlLCB3ZSBvbmx5IGNvbXBhcmUgdGhlIGxvY2tlZCBXT1BDTSByZWdpc3Rl ciB2YWx1ZXMgd2l0aCB0aGUKY2FsY3VsYXRlZCB2YWx1ZXMuIEhvd2V2ZXIsIHdlIGNhbiBjb250 aW51ZSBsb2FkaW5nIEd1Qy9IdUMgZmlybXdhcmUgaWYgdGhlCmxvY2tlZCAob3IgcGFydGlhbGx5 IGxvY2tlZCkgdmFsdWVzIHdlcmUgdmFsaWQgZm9yIGN1cnJlbnQgR3VDL0h1QyBmaXJtd2FyZQpz aXplcy4KClRoaXMgcGF0Y2ggYWRkZWQgYSBuZXcgY29kZSBwYXRoIHRvIHZlcmlmeSB3aGV0aGVy IHRoZSBsb2NrZWQgcmVnaXN0ZXIKdmFsdWVzIGNhbiBiZSB1c2VkIGZvciBHdUMvSHVDIGZpcm13 YXJlIGxvYWRpbmcsIGl0IHdpbGwgcmVjYWxjdWxhdGUgdGhlCnZlcmlmeSB0aGUgbmV3IHZhbHVl cyBpZiB0aGVzZSByZWdpc3RlcnMgd2VyZSBwYXJ0aWFsbHkgbG9ja2VkLCBzbyB0aGF0IHdlCndv bid0IGZhaWwgdGhlIEd1Qy9IdUMgZmlybXdhcmUgbG9hZGluZyBldmVuIGlmIHRoZSBsb2NrZWQg cmVnaXN0ZXIgdmFsdWVzCmFyZSBkaWZmZXJlbnQgZnJvbSB0aGUgY2FsY3VsYXRlZCBvbmVzLgoK djI6CiAtIFVwZGF0ZSBXT1BDTSByZWdpc3RlciBvbmx5IGlmIGl0J3Mgbm90IGxvY2tlZAoKU2ln bmVkLW9mZi1ieTogSmFja2llIExpIDx5YW9kb25nLmxpQGludGVsLmNvbT4KQ2M6IE1pY2hhbCBX YWpkZWN6a28gPG1pY2hhbC53YWpkZWN6a29AaW50ZWwuY29tPgpDYzogU2FnYXIgQXJ1biBLYW1i bGUgPHNhZ2FyLmEua2FtYmxlQGludGVsLmNvbT4KQ2M6IE1pY2hhbCBXaW5pYXJza2kgPG1pY2hh bC53aW5pYXJza2lAaW50ZWwuY29tPgpDYzogSm9obiBTcG90c3dvb2QgPGpvaG4uYS5zcG90c3dv b2RAaW50ZWwuY29tPgpDYzogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXgu aW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcGNtLmMgfCAyMTcg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE4 NSBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF93b3BjbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd29w Y20uYwppbmRleCBiMWMwOGNhLi5mYThkMmJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF93b3BjbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcGNt LmMKQEAgLTE0MCw2ICsxNDAsNTMgQEAgc3RhdGljIGlubGluZSBpbnQgY2hlY2tfaHdfcmVzdHJp Y3Rpb24oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJcmV0dXJuIGVycjsKIH0KIAor c3RhdGljIGlubGluZSB1MzIgY2FsY3VsYXRlX21pbl9ndWNfd29wY21fYmFzZSh1MzIgaHVjX2Z3 X3NpemUpCit7CisJcmV0dXJuIEFMSUdOKGh1Y19md19zaXplICsgV09QQ01fUkVTRVJWRURfU0la RSwKKwkJICAgICBHVUNfV09QQ01fT0ZGU0VUX0FMSUdOTUVOVCk7Cit9CisKK3N0YXRpYyBpbmxp bmUgdTMyIGNhbGN1bGF0ZV9taW5fZ3VjX3dvcGNtX3NpemUodTMyIGd1Y19md19zaXplKQorewor CXJldHVybiBndWNfZndfc2l6ZSArIEdVQ19XT1BDTV9SRVNFUlZFRCArIEdVQ19XT1BDTV9TVEFD S19SRVNFUlZFRDsKK30KKworc3RhdGljIGlubGluZSBpbnQgY2FsY3VsYXRlX21heF9ndWNfd29w Y21fc2l6ZShzdHJ1Y3QgaW50ZWxfd29wY20gKndvcGNtLAorCQkJCQkgICAgICAgdTMyIGd1Y193 b3BjbV9iYXNlLAorCQkJCQkgICAgICAgdTMyICpndWNfd29wY21fc2l6ZSkKK3sKKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHdvcGNtX3RvX2k5MTUod29wY20pOworCXUzMiBjdHhf cnN2ZCA9IGNvbnRleHRfcmVzZXJ2ZWRfc2l6ZShpOTE1KTsKKworCWlmIChndWNfd29wY21fYmFz ZSA+PSB3b3BjbS0+c2l6ZSB8fAorCSAgICAoZ3VjX3dvcGNtX2Jhc2UgKyBjdHhfcnN2ZCkgPj0g d29wY20tPnNpemUpIHsKKwkJRFJNX0VSUk9SKCJHdUMgV09QQ00gYmFzZSAoJXVLaUIpIGlzIHRv byBiaWcuXG4iLAorCQkJICBndWNfd29wY21fYmFzZSAvIDEwMjQpOworCQlyZXR1cm4gLUUyQklH OworCX0KKworCSpndWNfd29wY21fc2l6ZSA9CisJCSh3b3BjbS0+c2l6ZSAtIGd1Y193b3BjbV9i YXNlIC0gY3R4X3JzdmQpICYgR1VDX1dPUENNX1NJWkVfTUFTSzsKKworCXJldHVybiAwOworfQor CitzdGF0aWMgaW5saW5lIGludCB2ZXJpZnlfY2FsY3VsYXRlZF92YWx1ZXMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUsCisJCQkJCSAgIHUzMiBndWNfZndfc2l6ZSwgdTMyIGh1Y19md19z aXplLAorCQkJCQkgICB1MzIgZ3VjX3dvcGNtX2Jhc2UsCisJCQkJCSAgIHUzMiBndWNfd29wY21f c2l6ZSkKK3sKKwlpZiAoZ3VjX3dvcGNtX3NpemUgPCBjYWxjdWxhdGVfbWluX2d1Y193b3BjbV9z aXplKGd1Y19md19zaXplKSkgeworCQlEUk1fRVJST1IoIk5lZWQgJXVLaUIgV09QQ00gZm9yIEd1 QyBGVywgJXVLaUIgYXZhaWxhYmxlLlxuIiwKKwkJCSAgY2FsY3VsYXRlX21pbl9ndWNfd29wY21f c2l6ZShndWNfZndfc2l6ZSksCisJCQkgIGd1Y193b3BjbV9zaXplIC8gMTAyNCk7CisJCXJldHVy biAtRTJCSUc7CisJfQorCisJcmV0dXJuIGNoZWNrX2h3X3Jlc3RyaWN0aW9uKGk5MTUsIGd1Y193 b3BjbV9iYXNlLCBndWNfd29wY21fc2l6ZSwKKwkJCQkgICAgaHVjX2Z3X3NpemUpOworfQorCiAv KioKICAqIGludGVsX3dvcGNtX2luaXQoKSAtIEluaXRpYWxpemUgdGhlIFdPUENNIHN0cnVjdHVy ZS4KICAqIEB3b3BjbTogcG9pbnRlciB0byBpbnRlbF93b3BjbS4KQEAgLTE1NywxMCArMjA0LDgg QEAgaW50IGludGVsX3dvcGNtX2luaXQoc3RydWN0IGludGVsX3dvcGNtICp3b3BjbSkKIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHdvcGNtX3RvX2k5MTUod29wY20pOwogCXUzMiBn dWNfZndfc2l6ZSA9IGludGVsX3VjX2Z3X2dldF91cGxvYWRfc2l6ZSgmaTkxNS0+Z3VjLmZ3KTsK IAl1MzIgaHVjX2Z3X3NpemUgPSBpbnRlbF91Y19md19nZXRfdXBsb2FkX3NpemUoJmk5MTUtPmh1 Yy5mdyk7Ci0JdTMyIGN0eF9yc3ZkID0gY29udGV4dF9yZXNlcnZlZF9zaXplKGk5MTUpOwogCXUz MiBndWNfd29wY21fYmFzZTsKIAl1MzIgZ3VjX3dvcGNtX3NpemU7Ci0JdTMyIGd1Y193b3BjbV9y c3ZkOwogCWludCBlcnI7CiAKIAlHRU1fQlVHX09OKCF3b3BjbS0+c2l6ZSk7CkBAIC0xNzcsMzUg KzIyMiwxMjEgQEAgaW50IGludGVsX3dvcGNtX2luaXQoc3RydWN0IGludGVsX3dvcGNtICp3b3Bj bSkKIAkJcmV0dXJuIC1FMkJJRzsKIAl9CiAKLQlndWNfd29wY21fYmFzZSA9IEFMSUdOKGh1Y19m d19zaXplICsgV09QQ01fUkVTRVJWRURfU0laRSwKLQkJCSAgICAgICBHVUNfV09QQ01fT0ZGU0VU X0FMSUdOTUVOVCk7Ci0JaWYgKChndWNfd29wY21fYmFzZSArIGN0eF9yc3ZkKSA+PSB3b3BjbS0+ c2l6ZSkgewotCQlEUk1fRVJST1IoIkd1QyBXT1BDTSBiYXNlICgldUtpQikgaXMgdG9vIGJpZy5c biIsCi0JCQkgIGd1Y193b3BjbV9iYXNlIC8gMTAyNCk7CisJZ3VjX3dvcGNtX2Jhc2UgPSBjYWxj dWxhdGVfbWluX2d1Y193b3BjbV9iYXNlKGh1Y19md19zaXplKTsKKwllcnIgPSBjYWxjdWxhdGVf bWF4X2d1Y193b3BjbV9zaXplKHdvcGNtLCBndWNfd29wY21fYmFzZSwKKwkJCQkJICAgJmd1Y193 b3BjbV9zaXplKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJRFJNX0RFQlVHX0RSSVZF UigiQ2FsY3VsYXRlZCBHdUMgV09QQ00gUmVnaW9uOiBbJXVLaUIsICV1S2lCKVxuIiwKKwkJCSBn dWNfd29wY21fYmFzZSAvIDEwMjQsCisJCQkgKGd1Y193b3BjbV9iYXNlICsgZ3VjX3dvcGNtX3Np emUpIC8gMTAyNCk7CisKKwllcnIgPSB2ZXJpZnlfY2FsY3VsYXRlZF92YWx1ZXMoaTkxNSwgZ3Vj X2Z3X3NpemUsIGh1Y19md19zaXplLAorCQkJCSAgICAgICBndWNfd29wY21fYmFzZSwgZ3VjX3dv cGNtX3NpemUpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwl3b3BjbS0+Z3VjLmJhc2Ug PSBndWNfd29wY21fYmFzZTsKKwl3b3BjbS0+Z3VjLnNpemUgPSBndWNfd29wY21fc2l6ZTsKKwor CXJldHVybiAwOworfQorCitzdGF0aWMgaW5saW5lIGludCB2ZXJpZnlfbG9ja2VkX3ZhbHVlcyhz dHJ1Y3QgaW50ZWxfd29wY20gKndvcGNtLAorCQkJCSAgICAgICB1MzIgZ3VjX3dvcGNtX2Jhc2Us IHUzMiBndWNfd29wY21fc2l6ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9 IHdvcGNtX3RvX2k5MTUod29wY20pOworCXUzMiBndWNfZndfc2l6ZSA9IGludGVsX3VjX2Z3X2dl dF91cGxvYWRfc2l6ZSgmaTkxNS0+Z3VjLmZ3KTsKKwl1MzIgaHVjX2Z3X3NpemUgPSBpbnRlbF91 Y19md19nZXRfdXBsb2FkX3NpemUoJmk5MTUtPmh1Yy5mdyk7CisJdTMyIGN0eF9yc3ZkID0gY29u dGV4dF9yZXNlcnZlZF9zaXplKGk5MTUpOworCisJLyoKKwkgKiBMb2NrZWQgR3VDIFdPUENNIGJh c2UgYW5kIHNpemUgY291bGQgYmUgYW55IHZhbHVlcyB3aGljaCBhcmUgbGFyZ2UKKwkgKiBlbm91 Z2ggdG8gbGVhZCB0byBhIHdyYXAgYXJvdW5kIGFmdGVyIHBlcmZvcm1pbmcgYWRkIG9wZXJhdGlv bnMuCisJICovCisJaWYgKGd1Y193b3BjbV9iYXNlID49IHdvcGNtLT5zaXplKSB7CisJCURSTV9F UlJPUigiTG9ja2VkIGJhc2UgdmFsdWUgJXVLaUIgPj0gV09QQ00gc2l6ZSAldUtpQi5cbiIsCisJ CQkgIGd1Y193b3BjbV9iYXNlIC8gMTAyNCwKKwkJCSAgd29wY20tPnNpemUgLyAxMDI0KTsKIAkJ cmV0dXJuIC1FMkJJRzsKIAl9CiAKLQlndWNfd29wY21fc2l6ZSA9IHdvcGNtLT5zaXplIC0gZ3Vj X3dvcGNtX2Jhc2UgLSBjdHhfcnN2ZDsKLQlndWNfd29wY21fc2l6ZSAmPSBHVUNfV09QQ01fU0la RV9NQVNLOworCWlmIChndWNfd29wY21fc2l6ZSA+PSB3b3BjbS0+c2l6ZSkgeworCQlEUk1fRVJS T1IoIkxvY2tlZCBzaXplIHZhbHVlICV1S2lCID49IFdPUENNIHNpemUgJXVLaUIuXG4iLAorCQkJ ICBndWNfd29wY21fYmFzZSAvIDEwMjQsCisJCQkgIHdvcGNtLT5zaXplIC8gMTAyNCk7CisJCXJl dHVybiAtRTJCSUc7CisJfQogCi0JRFJNX0RFQlVHX0RSSVZFUigiQ2FsY3VsYXRlZCBHdUMgV09Q Q00gUmVnaW9uOiBbJXVLaUIsICV1S2lCKVxuIiwKLQkJCSBndWNfd29wY21fYmFzZSAvIDEwMjQs IGd1Y193b3BjbV9zaXplIC8gMTAyNCk7CisJaWYgKGd1Y193b3BjbV9iYXNlICsgZ3VjX3dvcGNt X3NpemUgKyBjdHhfcnN2ZCA+IHdvcGNtLT5zaXplKSB7CisJCURSTV9FUlJPUigiTmVlZCAldUtp QiBXT1BDTSBpbiB0b3RhbCwgJXVLaUIgYXZhaWxhYmxlLlxuIiwKKwkJCSAgKGd1Y193b3BjbV9i YXNlICsgZ3VjX3dvcGNtX3NpemUgKyBjdHhfcnN2ZCkgLyAxMDI0LAorCQkJICAod29wY20tPnNp emUpIC8gMTAyNCk7CisJCXJldHVybiAtRTJCSUc7CisJfQogCi0JZ3VjX3dvcGNtX3JzdmQgPSBH VUNfV09QQ01fUkVTRVJWRUQgKyBHVUNfV09QQ01fU1RBQ0tfUkVTRVJWRUQ7Ci0JaWYgKChndWNf Zndfc2l6ZSArIGd1Y193b3BjbV9yc3ZkKSA+IGd1Y193b3BjbV9zaXplKSB7Ci0JCURSTV9FUlJP UigiTmVlZCAldUtpQiBXT1BDTSBmb3IgR3VDLCAldUtpQiBhdmFpbGFibGUuXG4iLAotCQkJICAo Z3VjX2Z3X3NpemUgKyBndWNfd29wY21fcnN2ZCkgLyAxMDI0LAotCQkJICBndWNfd29wY21fc2l6 ZSAvIDEwMjQpOworCWlmIChndWNfd29wY21fYmFzZSA8IGNhbGN1bGF0ZV9taW5fZ3VjX3dvcGNt X2Jhc2UoaHVjX2Z3X3NpemUpKSB7CisJCURSTV9FUlJPUigiTmVlZCAldUtpQiBXT1BDTSBmb3Ig SHVDIEZXLCAldUtpQiBhdmFpbGFibGUuXG4iLAorCQkJICBjYWxjdWxhdGVfbWluX2d1Y193b3Bj bV9iYXNlKGh1Y19md19zaXplKSAvIDEwMjQsCisJCQkgIGd1Y193b3BjbV9iYXNlIC8gMTAyNCk7 CiAJCXJldHVybiAtRTJCSUc7CiAJfQogCi0JZXJyID0gY2hlY2tfaHdfcmVzdHJpY3Rpb24oaTkx NSwgZ3VjX3dvcGNtX2Jhc2UsIGd1Y193b3BjbV9zaXplLAotCQkJCSAgIGh1Y19md19zaXplKTsK KwlyZXR1cm4gdmVyaWZ5X2NhbGN1bGF0ZWRfdmFsdWVzKGk5MTUsIGd1Y19md19zaXplLCBodWNf Zndfc2l6ZSwKKwkJCQkJZ3VjX3dvcGNtX2Jhc2UsIGd1Y193b3BjbV9zaXplKTsKK30KKworc3Rh dGljIGlubGluZSBpbnQgdmVyaWZ5X2xvY2tlZF92YWx1ZXNfYW5kX3VwZGF0ZShzdHJ1Y3QgaW50 ZWxfd29wY20gKndvcGNtLAorCQkJCQkJICBib29sICp1cGRhdGVfc2l6ZV9yZWcsCisJCQkJCQkg IGJvb2wgKnVwZGF0ZV9vZmZzZXRfcmVnKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHdvcGNtX3RvX2k5MTUod29wY20pOworCXUzMiBodWNfZndfc2l6ZSA9IGludGVs X3VjX2Z3X2dldF91cGxvYWRfc2l6ZSgmZGV2X3ByaXYtPmh1Yy5mdyk7CisJdTMyIHNpemVfdmFs ID0gSTkxNV9SRUFEKEdVQ19XT1BDTV9TSVpFKTsKKwl1MzIgb2Zmc2V0X3ZhbCA9IEk5MTVfUkVB RChETUFfR1VDX1dPUENNX09GRlNFVCk7CisJYm9vbCBvZmZzZXRfcmVnX2xvY2tlZCA9IG9mZnNl dF92YWwgJiBHVUNfV09QQ01fT0ZGU0VUX1ZBTElEOworCWJvb2wgc2l6ZV9yZWdfbG9ja2VkID0g c2l6ZV92YWwgJiBHVUNfV09QQ01fU0laRV9MT0NLRUQ7CisJdTMyIGd1Y193b3BjbV9iYXNlID0g b2Zmc2V0X3ZhbCAmIEdVQ19XT1BDTV9PRkZTRVRfTUFTSzsKKwl1MzIgZ3VjX3dvcGNtX3NpemUg PSBzaXplX3ZhbCAmIEdVQ19XT1BDTV9TSVpFX01BU0s7CisJaW50IGVycjsKKworCSp1cGRhdGVf c2l6ZV9yZWcgPSAhc2l6ZV9yZWdfbG9ja2VkOworCSp1cGRhdGVfb2Zmc2V0X3JlZyA9ICFvZmZz ZXRfcmVnX2xvY2tlZDsKKworCWlmICghb2Zmc2V0X3JlZ19sb2NrZWQgJiYgIXNpemVfcmVnX2xv Y2tlZCkKKwkJcmV0dXJuIDA7CisKKwlpZiAoZ3VjX3dvcGNtX2Jhc2UgPT0gd29wY20tPmd1Yy5i YXNlICYmCisJICAgIGd1Y193b3BjbV9zaXplID09IHdvcGNtLT5ndWMuc2l6ZSkKKwkJcmV0dXJu IDA7CisKKwlpZiAoVVNFU19IVUMoZGV2X3ByaXYpICYmIG9mZnNldF9yZWdfbG9ja2VkICYmCisJ ICAgICEob2Zmc2V0X3ZhbCAmIEhVQ19MT0FESU5HX0FHRU5UX0dVQykpIHsKKwkJRFJNX0VSUk9S KCJIVUNfTE9BRElOR19BR0VOVF9HVUMgaXNuJ3QgbG9ja2VkIGZvciBVU0VTX0hVQy5cbiIpOwor CQlyZXR1cm4gLUVJTzsKKwl9CisKKwlpZiAoIW9mZnNldF9yZWdfbG9ja2VkKQorCQlndWNfd29w Y21fYmFzZSA9IGNhbGN1bGF0ZV9taW5fZ3VjX3dvcGNtX2Jhc2UoaHVjX2Z3X3NpemUpOworCisJ aWYgKCFzaXplX3JlZ19sb2NrZWQpIHsKKwkJZXJyID0gY2FsY3VsYXRlX21heF9ndWNfd29wY21f c2l6ZSh3b3BjbSwgZ3VjX3dvcGNtX2Jhc2UsCisJCQkJCQkgICAmZ3VjX3dvcGNtX3NpemUpOwor CQlpZiAoZXJyKQorCQkJcmV0dXJuIGVycjsKKwl9CisKKwlEUk1fREVCVUdfRFJJVkVSKCJSZWNh bGN1bGF0ZWQgR3VDIFdPUENNIFJlZ2lvbjogWyV1S2lCLCAldUtpQilcbiIsCisJCQkgZ3VjX3dv cGNtX2Jhc2UgLyAxMDI0LAorCQkJIChndWNfd29wY21fYmFzZSArIGd1Y193b3BjbV9zaXplKSAv IDEwMjQpOworCisJZXJyID0gdmVyaWZ5X2xvY2tlZF92YWx1ZXMod29wY20sIGd1Y193b3BjbV9i YXNlLCBndWNfd29wY21fc2l6ZSk7CiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKIAotCXdvcGNt LT5ndWMuYmFzZSA9IGd1Y193b3BjbV9iYXNlOwogCXdvcGNtLT5ndWMuc2l6ZSA9IGd1Y193b3Bj bV9zaXplOworCXdvcGNtLT5ndWMuYmFzZSA9IGd1Y193b3BjbV9iYXNlOwogCiAJcmV0dXJuIDA7 CiB9CkBAIC0yMzMsMTEgKzM2NCwxNCBAQCBzdGF0aWMgaW5saW5lIGludCB3cml0ZV9hbmRfdmVy aWZ5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKICAqIHdpbGwgdmVyaWZ5IHRo ZSByZWdpc3RlciB2YWx1ZXMgdG8gbWFrZSBzdXJlIHRoZSByZWdpc3RlcnMgYXJlIGxvY2tlZCB3 aXRoCiAgKiBjb3JyZWN0IHZhbHVlcy4KICAqCi0gKiBSZXR1cm46IDAgb24gc3VjY2Vzcy4gLUVJ TyBpZiByZWdpc3RlcnMgd2VyZSBsb2NrZWQgd2l0aCBpbmNvcnJlY3QgdmFsdWVzLgorICogUmV0 dXJuOiAwIG9uIHN1Y2Nlc3MuIE1pbnVzIGVycm9yIGNvZGUgaWYgcmVnaXN0ZXJlZCB3ZXJlIGxv Y2tlZCB3aXRoCisgKiBpbmNvcnJlY3QgdmFsdWVzLi1FSU8gaWYgcmVnaXN0ZXJzIGZhaWxlZCB0 byBsb2NrIHdpdGggY29ycmVjdCB2YWx1ZXMuCiAgKi8KIGludCBpbnRlbF93b3BjbV9pbml0X2h3 KHN0cnVjdCBpbnRlbF93b3BjbSAqd29wY20pCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gd29wY21fdG9faTkxNSh3b3BjbSk7CisJYm9vbCB1cGRhdGVfc2l6ZV9yZWc7 CisJYm9vbCB1cGRhdGVfb2Zmc2V0X3JlZzsKIAlpbnQgZXJyOwogCiAJaWYgKCFVU0VTX0dVQyhk ZXZfcHJpdikpCkBAIC0yNDcsMjcgKzM4MSw0NiBAQCBpbnQgaW50ZWxfd29wY21faW5pdF9odyhz dHJ1Y3QgaW50ZWxfd29wY20gKndvcGNtKQogCUdFTV9CVUdfT04oIXdvcGNtLT5ndWMuc2l6ZSk7 CiAJR0VNX0JVR19PTighd29wY20tPmd1Yy5iYXNlKTsKIAotCWVyciA9IHdyaXRlX2FuZF92ZXJp ZnkoZGV2X3ByaXYsIEdVQ19XT1BDTV9TSVpFLCB3b3BjbS0+Z3VjLnNpemUsCi0JCQkgICAgICAg R1VDX1dPUENNX1NJWkVfTUFTSyB8IEdVQ19XT1BDTV9TSVpFX0xPQ0tFRCwKLQkJCSAgICAgICBH VUNfV09QQ01fU0laRV9MT0NLRUQpOwotCWlmIChlcnIpCisJZXJyID0gdmVyaWZ5X2xvY2tlZF92 YWx1ZXNfYW5kX3VwZGF0ZSh3b3BjbSwgJnVwZGF0ZV9zaXplX3JlZywKKwkJCQkJICAgICAgJnVw ZGF0ZV9vZmZzZXRfcmVnKTsKKwlpZiAoZXJyKSB7CisJCURSTV9FUlJPUigiV09QQ00gcmVnaXN0 ZXJzIGFyZSBsb2NrZWQgd2l0aCBpbnZhbGlkIHZhbHVlcy5cbiIpOwogCQlnb3RvIGVycl9vdXQ7 CisJfQogCi0JZXJyID0gd3JpdGVfYW5kX3ZlcmlmeShkZXZfcHJpdiwgRE1BX0dVQ19XT1BDTV9P RkZTRVQsCi0JCQkgICAgICAgd29wY20tPmd1Yy5iYXNlIHwgSFVDX0xPQURJTkdfQUdFTlRfR1VD LAotCQkJICAgICAgIEdVQ19XT1BDTV9PRkZTRVRfTUFTSyB8IEhVQ19MT0FESU5HX0FHRU5UX0dV QyB8Ci0JCQkgICAgICAgR1VDX1dPUENNX09GRlNFVF9WQUxJRCwKLQkJCSAgICAgICBHVUNfV09Q Q01fT0ZGU0VUX1ZBTElEKTsKLQlpZiAoZXJyKQotCQlnb3RvIGVycl9vdXQ7CisJaWYgKHVwZGF0 ZV9zaXplX3JlZykgeworCQllcnIgPSB3cml0ZV9hbmRfdmVyaWZ5KGRldl9wcml2LCBHVUNfV09Q Q01fU0laRSwKKwkJCQkgICAgICAgd29wY20tPmd1Yy5zaXplLAorCQkJCSAgICAgICBHVUNfV09Q Q01fU0laRV9NQVNLIHwKKwkJCQkgICAgICAgR1VDX1dPUENNX1NJWkVfTE9DS0VELAorCQkJCSAg ICAgICBHVUNfV09QQ01fU0laRV9MT0NLRUQpOworCQlpZiAoZXJyKSB7CisJCQlEUk1fRVJST1Io IkZhaWxlZCB0byBHdUMgV09QQ00gc2l6ZSB3aXRoICUjeC5cbiIsCisJCQkJICB3b3BjbS0+Z3Vj LnNpemUpOworCQkJZ290byBlcnJfb3V0OworCQl9CisJfQogCisJaWYgKHVwZGF0ZV9vZmZzZXRf cmVnKSB7CisJCWVyciA9IHdyaXRlX2FuZF92ZXJpZnkoZGV2X3ByaXYsIERNQV9HVUNfV09QQ01f T0ZGU0VULAorCQkJCSAgICAgICB3b3BjbS0+Z3VjLmJhc2UgfCBIVUNfTE9BRElOR19BR0VOVF9H VUMsCisJCQkJICAgICAgIEdVQ19XT1BDTV9PRkZTRVRfTUFTSyB8CisJCQkJICAgICAgIEhVQ19M T0FESU5HX0FHRU5UX0dVQyB8CisJCQkJICAgICAgIEdVQ19XT1BDTV9PRkZTRVRfVkFMSUQsCisJ CQkJICAgICAgIEdVQ19XT1BDTV9PRkZTRVRfVkFMSUQpOworCQlpZiAoZXJyKSB7CisJCQlEUk1f RVJST1IoIkZhaWxlZCB0byBHdUMgV09QQ00gb2Zmc2V0IHdpdGggJSN4LlxuIiwKKwkJCQkgIHdv cGNtLT5ndWMuYmFzZSk7CisJCQlnb3RvIGVycl9vdXQ7CisJCX0KKwl9CiAJcmV0dXJuIDA7CiAK IGVycl9vdXQ6Ci0JRFJNX0VSUk9SKCJGYWlsZWQgdG8gaW5pdCBXT1BDTSByZWdpc3RlcnM6XG4i KTsKIAlEUk1fRVJST1IoIkRNQV9HVUNfV09QQ01fT0ZGU0VUPSUjeFxuIiwKIAkJICBJOTE1X1JF QUQoRE1BX0dVQ19XT1BDTV9PRkZTRVQpKTsKIAlEUk1fRVJST1IoIkdVQ19XT1BDTV9TSVpFPSUj eFxuIiwgSTkxNV9SRUFEKEdVQ19XT1BDTV9TSVpFKSk7CisJRFJNX0VSUk9SKCJBIHN5c3RlbSBy ZWJvb3QgaXMgcmVxdWlyZWQuXG4iKTsKIAogCXJldHVybiBlcnI7CiB9Ci0tIAoyLjcuNAoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==