From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jackie Li Subject: [PATCH 1/2] drm/i915: Add code to accept valid locked WOPCM register values Date: Tue, 20 Mar 2018 16:18:46 -0700 Message-ID: <1521587927-7404-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 mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id B82D06E855 for ; Tue, 20 Mar 2018 23:20:40 +0000 (UTC) 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 U2lnbmVkLW9mZi1ieTogSmFja2llIExpIDx5YW9kb25nLmxpQGludGVsLmNvbT4KQ2M6IE1pY2hh bCBXYWpkZWN6a28gPG1pY2hhbC53YWpkZWN6a29AaW50ZWwuY29tPgpDYzogU2FnYXIgQXJ1biBL YW1ibGUgPHNhZ2FyLmEua2FtYmxlQGludGVsLmNvbT4KQ2M6IE1pY2hhxYIgV2luaWFyc2tpIDxt aWNoYWwud2luaWFyc2tpQGludGVsLmNvbT4KQ2M6IEpvaG4gU3BvdHN3b29kIDxqb2huLmEuc3Bv dHN3b29kQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93b3BjbS5j IHwgMTgzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KIDEgZmlsZSBjaGFu Z2VkLCAxNTcgaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd29wY20uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3dvcGNtLmMKaW5kZXggNDExNzg4Ni4uZmJkOGFiYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfd29wY20uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF93b3BjbS5jCkBAIC0xMzgsNiArMTM4LDUzIEBAIHN0YXRpYyBpbmxpbmUgaW50IGNoZWNrX2h3 X3Jlc3RyaWN0aW9uKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCXJldHVybiBlcnI7 CiB9CiAKK3N0YXRpYyBpbmxpbmUgdTMyIGNhbGN1bGF0ZV9taW5fZ3VjX3dvcGNtX2Jhc2UodTMy IGh1Y19md19zaXplKQoreworCXJldHVybiBBTElHTihodWNfZndfc2l6ZSArIFdPUENNX1JFU0VS VkVEX1NJWkUsCisJCSAgICAgR1VDX1dPUENNX09GRlNFVF9BTElHTk1FTlQpOworfQorCitzdGF0 aWMgaW5saW5lIHUzMiBjYWxjdWxhdGVfbWluX2d1Y193b3BjbV9zaXplKHUzMiBndWNfZndfc2l6 ZSkKK3sKKwlyZXR1cm4gZ3VjX2Z3X3NpemUgKyBHVUNfV09QQ01fUkVTRVJWRUQgKyBHVUNfV09Q Q01fU1RBQ0tfUkVTRVJWRUQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGNhbGN1bGF0ZV9tYXhf Z3VjX3dvcGNtX3NpemUoc3RydWN0IGludGVsX3dvcGNtICp3b3BjbSwKKwkJCQkJICAgICAgIHUz MiBndWNfd29wY21fYmFzZSwKKwkJCQkJICAgICAgIHUzMiAqZ3VjX3dvcGNtX3NpemUpCit7CisJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB3b3BjbV90b19pOTE1KHdvcGNtKTsKKwl1 MzIgY3R4X3JzdmQgPSBjb250ZXh0X3Jlc2VydmVkX3NpemUoaTkxNSk7CisKKwlpZiAoZ3VjX3dv cGNtX2Jhc2UgPj0gd29wY20tPnNpemUgfHwKKwkgICAgKGd1Y193b3BjbV9iYXNlICsgY3R4X3Jz dmQpID49IHdvcGNtLT5zaXplKSB7CisJCURSTV9FUlJPUigiR3VDIFdPUENNIGJhc2UgKCV1S2lC KSBpcyB0b28gYmlnLlxuIiwKKwkJCSAgZ3VjX3dvcGNtX2Jhc2UgLyAxMDI0KTsKKwkJcmV0dXJu IC1FMkJJRzsKKwl9CisKKwkqZ3VjX3dvcGNtX3NpemUgPQorCQkod29wY20tPnNpemUgLSBndWNf d29wY21fYmFzZSAtIGN0eF9yc3ZkKSAmIEdVQ19XT1BDTV9TSVpFX01BU0s7CisKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIGlubGluZSBpbnQgdmVyaWZ5X2NhbGN1bGF0ZWRfdmFsdWVzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LAorCQkJCQkgICB1MzIgZ3VjX2Z3X3NpemUsIHUzMiBo dWNfZndfc2l6ZSwKKwkJCQkJICAgdTMyIGd1Y193b3BjbV9iYXNlLAorCQkJCQkgICB1MzIgZ3Vj X3dvcGNtX3NpemUpCit7CisJaWYgKGd1Y193b3BjbV9zaXplIDwgY2FsY3VsYXRlX21pbl9ndWNf d29wY21fc2l6ZShndWNfZndfc2l6ZSkpIHsKKwkJRFJNX0VSUk9SKCJOZWVkICV1S2lCIFdPUENN IGZvciBHdUMgRlcsICV1S2lCIGF2YWlsYWJsZS5cbiIsCisJCQkgIGNhbGN1bGF0ZV9taW5fZ3Vj X3dvcGNtX3NpemUoZ3VjX2Z3X3NpemUpLAorCQkJICBndWNfd29wY21fc2l6ZSAvIDEwMjQpOwor CQlyZXR1cm4gLUUyQklHOworCX0KKworCXJldHVybiBjaGVja19od19yZXN0cmljdGlvbihpOTE1 LCBndWNfd29wY21fYmFzZSwgZ3VjX3dvcGNtX3NpemUsCisJCQkJICAgIGh1Y19md19zaXplKTsK K30KKwogLyoqCiAgKiBpbnRlbF93b3BjbV9pbml0KCkgLSBJbml0aWFsaXplIHRoZSBXT1BDTSBz dHJ1Y3R1cmUuCiAgKiBAd29wY206IHBvaW50ZXIgdG8gaW50ZWxfd29wY20uCkBAIC0xNTUsMTAg KzIwMiw4IEBAIGludCBpbnRlbF93b3BjbV9pbml0KHN0cnVjdCBpbnRlbF93b3BjbSAqd29wY20p CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB3b3BjbV90b19pOTE1KHdvcGNtKTsK IAl1MzIgZ3VjX2Z3X3NpemUgPSBpbnRlbF91Y19md19nZXRfdXBsb2FkX3NpemUoJmk5MTUtPmd1 Yy5mdyk7CiAJdTMyIGh1Y19md19zaXplID0gaW50ZWxfdWNfZndfZ2V0X3VwbG9hZF9zaXplKCZp OTE1LT5odWMuZncpOwotCXUzMiBjdHhfcnN2ZCA9IGNvbnRleHRfcmVzZXJ2ZWRfc2l6ZShpOTE1 KTsKIAl1MzIgZ3VjX3dvcGNtX2Jhc2U7CiAJdTMyIGd1Y193b3BjbV9zaXplOwotCXUzMiBndWNf d29wY21fcnN2ZDsKIAlpbnQgZXJyOwogCiAJR0VNX0JVR19PTighd29wY20tPnNpemUpOwpAQCAt MTc1LDMwICsyMjAsMTcgQEAgaW50IGludGVsX3dvcGNtX2luaXQoc3RydWN0IGludGVsX3dvcGNt ICp3b3BjbSkKIAkJcmV0dXJuIC1FMkJJRzsKIAl9CiAKLQlndWNfd29wY21fYmFzZSA9IEFMSUdO KGh1Y19md19zaXplICsgV09QQ01fUkVTRVJWRURfU0laRSwKLQkJCSAgICAgICBHVUNfV09QQ01f T0ZGU0VUX0FMSUdOTUVOVCk7Ci0JaWYgKChndWNfd29wY21fYmFzZSArIGN0eF9yc3ZkKSA+PSB3 b3BjbS0+c2l6ZSkgewotCQlEUk1fRVJST1IoIkd1QyBXT1BDTSBiYXNlICgldUtpQikgaXMgdG9v IGJpZy5cbiIsCi0JCQkgIGd1Y193b3BjbV9iYXNlIC8gMTAyNCk7Ci0JCXJldHVybiAtRTJCSUc7 Ci0JfQotCi0JZ3VjX3dvcGNtX3NpemUgPSB3b3BjbS0+c2l6ZSAtIGd1Y193b3BjbV9iYXNlIC0g Y3R4X3JzdmQ7Ci0JZ3VjX3dvcGNtX3NpemUgJj0gR1VDX1dPUENNX1NJWkVfTUFTSzsKKwlndWNf d29wY21fYmFzZSA9IGNhbGN1bGF0ZV9taW5fZ3VjX3dvcGNtX2Jhc2UoaHVjX2Z3X3NpemUpOwor CWVyciA9IGNhbGN1bGF0ZV9tYXhfZ3VjX3dvcGNtX3NpemUod29wY20sIGd1Y193b3BjbV9iYXNl LAorCQkJCQkgICAmZ3VjX3dvcGNtX3NpemUpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CiAK IAlEUk1fREVCVUdfRFJJVkVSKCJDYWxjdWxhdGVkIEd1QyBXT1BDTSBSZWdpb246IFsldUtpQiwg JXVLaUIpXG4iLAogCQkJIGd1Y193b3BjbV9iYXNlIC8gMTAyNCwgZ3VjX3dvcGNtX3NpemUgLyAx MDI0KTsKIAotCWd1Y193b3BjbV9yc3ZkID0gR1VDX1dPUENNX1JFU0VSVkVEICsgR1VDX1dPUENN X1NUQUNLX1JFU0VSVkVEOwotCWlmICgoZ3VjX2Z3X3NpemUgKyBndWNfd29wY21fcnN2ZCkgPiBn dWNfd29wY21fc2l6ZSkgewotCQlEUk1fRVJST1IoIk5lZWQgJXVLaUIgV09QQ00gZm9yIEd1Qywg JXVLaUIgYXZhaWxhYmxlLlxuIiwKLQkJCSAgKGd1Y19md19zaXplICsgZ3VjX3dvcGNtX3JzdmQp IC8gMTAyNCwKLQkJCSAgZ3VjX3dvcGNtX3NpemUgLyAxMDI0KTsKLQkJcmV0dXJuIC1FMkJJRzsK LQl9Ci0KLQllcnIgPSBjaGVja19od19yZXN0cmljdGlvbihpOTE1LCBndWNfd29wY21fYmFzZSwg Z3VjX3dvcGNtX3NpemUsCi0JCQkJICAgaHVjX2Z3X3NpemUpOworCWVyciA9IHZlcmlmeV9jYWxj dWxhdGVkX3ZhbHVlcyhpOTE1LCBndWNfZndfc2l6ZSwgaHVjX2Z3X3NpemUsCisJCQkJICAgICAg IGd1Y193b3BjbV9iYXNlLCBndWNfd29wY21fc2l6ZSk7CiAJaWYgKGVycikKIAkJcmV0dXJuIGVy cjsKIApAQCAtMjA4LDYgKzI0MCw5MiBAQCBpbnQgaW50ZWxfd29wY21faW5pdChzdHJ1Y3QgaW50 ZWxfd29wY20gKndvcGNtKQogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW5saW5lIGludCB2ZXJp ZnlfbG9ja2VkX3ZhbHVlcyhzdHJ1Y3QgaW50ZWxfd29wY20gKndvcGNtLAorCQkJCSAgICAgICB1 MzIgZ3VjX3dvcGNtX2Jhc2UsIHUzMiBndWNfd29wY21fc2l6ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSA9IHdvcGNtX3RvX2k5MTUod29wY20pOworCXUzMiBndWNfZndfc2l6 ZSA9IGludGVsX3VjX2Z3X2dldF91cGxvYWRfc2l6ZSgmaTkxNS0+Z3VjLmZ3KTsKKwl1MzIgaHVj X2Z3X3NpemUgPSBpbnRlbF91Y19md19nZXRfdXBsb2FkX3NpemUoJmk5MTUtPmh1Yy5mdyk7CisJ dTMyIGN0eF9yc3ZkID0gY29udGV4dF9yZXNlcnZlZF9zaXplKGk5MTUpOworCisJLyoKKwkgKiBM b2NrZWQgR3VDIFdPUENNIGJhc2UgYW5kIHNpemUgY291bGQgYmUgYW55IHZhbHVlcyBhcmUgbGFy Z2UgZW5vdWdoCisJICogdG8gbGVhZCB0byBhIHdyYXAgYXJvdW5kIGFmdGVyIHBlcmZvcm1pbmcg YWRkIG9wZXJhdGlvbnMuCisJICovCisJaWYgKGd1Y193b3BjbV9iYXNlID49IHdvcGNtLT5zaXpl KSB7CisJCURSTV9FUlJPUigiTG9ja2VkIGJhc2UgdmFsdWUgJXVLaUIgPj0gV09QQ00gc2l6ZSAl dUtpQi5cbiIsCisJCQkgIGd1Y193b3BjbV9iYXNlIC8gMTAyNCwKKwkJCSAgd29wY20tPnNpemUg LyAxMDI0KTsKKwkJcmV0dXJuIC1FMkJJRzsKKwl9CisKKwlpZiAoZ3VjX3dvcGNtX3NpemUgPj0g d29wY20tPnNpemUpIHsKKwkJRFJNX0VSUk9SKCJMb2NrZWQgc2l6ZSB2YWx1ZSAldUtpQiA+PSBX T1BDTSBzaXplICV1S2lCLlxuIiwKKwkJCSAgZ3VjX3dvcGNtX2Jhc2UgLyAxMDI0LAorCQkJICB3 b3BjbS0+c2l6ZSAvIDEwMjQpOworCQlyZXR1cm4gLUUyQklHOworCX0KKworCWlmIChndWNfd29w Y21fYmFzZSArIGd1Y193b3BjbV9zaXplICsgY3R4X3JzdmQgPiB3b3BjbS0+c2l6ZSkgeworCQlE Uk1fRVJST1IoIk5lZWQgJXVLaUIgV09QQ00gaW4gdG90YWwsICV1S2lCIGF2YWlsYWJsZS5cbiIs CisJCQkgIChndWNfd29wY21fYmFzZSArIGd1Y193b3BjbV9zaXplICsgY3R4X3JzdmQpIC8gMTAy NCwKKwkJCSAgKHdvcGNtLT5zaXplKSAvIDEwMjQpOworCQlyZXR1cm4gLUUyQklHOworCX0KKwor CWlmIChndWNfd29wY21fYmFzZSA8IGNhbGN1bGF0ZV9taW5fZ3VjX3dvcGNtX2Jhc2UoaHVjX2Z3 X3NpemUpKSB7CisJCURSTV9FUlJPUigiTmVlZCAldUtpQiBXT1BDTSBmb3IgSHVDIEZXLCAldUtp QiBhdmFpbGFibGUuXG4iLAorCQkJICBjYWxjdWxhdGVfbWluX2d1Y193b3BjbV9iYXNlKGh1Y19m d19zaXplKSAvIDEwMjQsCisJCQkgIGd1Y193b3BjbV9iYXNlIC8gMTAyNCk7CisJCXJldHVybiAt RTJCSUc7CisJfQorCisJcmV0dXJuIHZlcmlmeV9jYWxjdWxhdGVkX3ZhbHVlcyhpOTE1LCBndWNf Zndfc2l6ZSwgaHVjX2Z3X3NpemUsCisJCQkJCWd1Y193b3BjbV9iYXNlLCBndWNfd29wY21fc2l6 ZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IHZlcmlmeV9sb2NrZWRfdmFsdWVzX2FuZF91cGRh dGUoc3RydWN0IGludGVsX3dvcGNtICp3b3BjbSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB3b3BjbV90b19pOTE1KHdvcGNtKTsKKwl1MzIgaHVjX2Z3X3NpemUgPSBp bnRlbF91Y19md19nZXRfdXBsb2FkX3NpemUoJmRldl9wcml2LT5odWMuZncpOworCXUzMiBzaXpl X3ZhbCA9IEk5MTVfUkVBRChHVUNfV09QQ01fU0laRSk7CisJdTMyIG9mZnNldF92YWwgPSBJOTE1 X1JFQUQoRE1BX0dVQ19XT1BDTV9PRkZTRVQpOworCWJvb2wgb2Zmc2V0X3JlZ19sb2NrZWQgPSBv ZmZzZXRfdmFsICYgR1VDX1dPUENNX09GRlNFVF9WQUxJRDsKKwlib29sIHNpemVfcmVnX2xvY2tl ZCA9IHNpemVfdmFsICYgR1VDX1dPUENNX1NJWkVfTE9DS0VEOworCXUzMiBndWNfd29wY21fYmFz ZSA9IG9mZnNldF92YWwgJiBHVUNfV09QQ01fT0ZGU0VUX01BU0s7CisJdTMyIGd1Y193b3BjbV9z aXplID0gc2l6ZV92YWwgJiBHVUNfV09QQ01fU0laRV9NQVNLOworCWludCBlcnI7CisKKwlpZiAo IW9mZnNldF9yZWdfbG9ja2VkICYmICFzaXplX3JlZ19sb2NrZWQpCisJCXJldHVybiAwOworCisJ aWYgKGd1Y193b3BjbV9iYXNlID09IHdvcGNtLT5ndWMuYmFzZSAmJgorCSAgICBndWNfd29wY21f c2l6ZSA9PSB3b3BjbS0+Z3VjLnNpemUpCisJCXJldHVybiAwOworCisJaWYgKCFvZmZzZXRfcmVn X2xvY2tlZCkKKwkJZ3VjX3dvcGNtX2Jhc2UgPSBjYWxjdWxhdGVfbWluX2d1Y193b3BjbV9iYXNl KGh1Y19md19zaXplKTsKKworCWlmICghc2l6ZV9yZWdfbG9ja2VkKSB7CisJCWVyciA9IGNhbGN1 bGF0ZV9tYXhfZ3VjX3dvcGNtX3NpemUod29wY20sIGd1Y193b3BjbV9iYXNlLAorCQkJCQkJICAg Jmd1Y193b3BjbV9zaXplKTsKKwkJaWYgKGVycikKKwkJCXJldHVybiBlcnI7CisJfQorCisJRFJN X0RFQlVHX0RSSVZFUigiUmVjYWxjdWxhdGVkIEd1QyBXT1BDTSBSZWdpb246IFsldUtpQiwgJXVL aUIpXG4iLAorCQkJIGd1Y193b3BjbV9iYXNlIC8gMTAyNCwgZ3VjX3dvcGNtX3NpemUgLyAxMDI0 KTsKKworCWVyciA9IHZlcmlmeV9sb2NrZWRfdmFsdWVzKHdvcGNtLCBndWNfd29wY21fYmFzZSwg Z3VjX3dvcGNtX3NpemUpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwl3b3BjbS0+Z3Vj LnNpemUgPSBndWNfd29wY21fc2l6ZTsKKwl3b3BjbS0+Z3VjLmJhc2UgPSBndWNfd29wY21fYmFz ZTsKKworCXJldHVybiAwOworfQorCiBzdGF0aWMgaW5saW5lIGludCB3cml0ZV9hbmRfdmVyaWZ5 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkgICBpOTE1X3JlZ190IHJl ZywgdTMyIHZhbCwgdTMyIG1hc2ssCiAJCQkJICAgdTMyIGxvY2tlZF9iaXQpCkBAIC0yMzEsNyAr MzQ5LDggQEAgc3RhdGljIGlubGluZSBpbnQgd3JpdGVfYW5kX3ZlcmlmeShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAgKiB3aWxsIHZlcmlmeSB0aGUgcmVnaXN0ZXIgdmFsdWVz IHRvIG1ha2Ugc3VyZSB0aGUgcmVnaXN0ZXJzIGFyZSBsb2NrZWQgd2l0aAogICogY29ycmVjdCB2 YWx1ZXMuCiAgKgotICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MuIC1FSU8gaWYgcmVnaXN0ZXJzIHdl cmUgbG9ja2VkIHdpdGggaW5jb3JyZWN0IHZhbHVlcy4KKyAqIFJldHVybjogMCBvbiBzdWNjZXNz LiBNaW51cyBlcnJvciBjb2RlIGlmIHJlZ2lzdGVyZWQgd2VyZSBsb2NrZWQgd2l0aAorICogaW5j b3JyZWN0IHZhbHVlcy4tRUlPIGlmIHJlZ2lzdGVycyBmYWlsZWQgdG8gbG9jayB3aXRoIGNvcnJl Y3QgdmFsdWVzLgogICovCiBpbnQgaW50ZWxfd29wY21faW5pdF9odyhzdHJ1Y3QgaW50ZWxfd29w Y20gKndvcGNtKQogewpAQCAtMjQ3LDI3ICszNjYsMzkgQEAgaW50IGludGVsX3dvcGNtX2luaXRf aHcoc3RydWN0IGludGVsX3dvcGNtICp3b3BjbSkKIAlHRU1fQlVHX09OKCF3b3BjbS0+Z3VjLnNp emUpOwogCUdFTV9CVUdfT04oIXdvcGNtLT5ndWMuYmFzZSk7CiAKKwllcnIgPSB2ZXJpZnlfbG9j a2VkX3ZhbHVlc19hbmRfdXBkYXRlKHdvcGNtKTsKKwlpZiAoZXJyKSB7CisJCURSTV9FUlJPUigi V09QQ00gcmVnaXN0ZXJzIGFyZSBsb2NrZWQgd2l0aCBpbnZhbGlkIHZhbHVlcy5cbiIpOworCQln b3RvIGVycl9vdXQ7CisJfQorCiAJZXJyID0gd3JpdGVfYW5kX3ZlcmlmeShkZXZfcHJpdiwgR1VD X1dPUENNX1NJWkUsIHdvcGNtLT5ndWMuc2l6ZSwKIAkJCSAgICAgICBHVUNfV09QQ01fU0laRV9N QVNLIHwgR1VDX1dPUENNX1NJWkVfTE9DS0VELAogCQkJICAgICAgIEdVQ19XT1BDTV9TSVpFX0xP Q0tFRCk7Ci0JaWYgKGVycikKKwlpZiAoZXJyKSB7CisJCURSTV9FUlJPUigiRmFpbGVkIHRvIGxv Y2sgR1VDX1dPUENNX1NJWkUgd2l0aCAlI3guXG4iLAorCQkJICB3b3BjbS0+Z3VjLnNpemUpOwog CQlnb3RvIGVycl9vdXQ7CisJfQogCiAJaHVjX2FnZW50ID0gVVNFU19IVUMoZGV2X3ByaXYpID8g SFVDX0xPQURJTkdfQUdFTlRfR1VDIDogMDsKIAltYXNrID0gR1VDX1dPUENNX09GRlNFVF9NQVNL IHwgR1VDX1dPUENNX09GRlNFVF9WQUxJRCB8IGh1Y19hZ2VudDsKIAllcnIgPSB3cml0ZV9hbmRf dmVyaWZ5KGRldl9wcml2LCBETUFfR1VDX1dPUENNX09GRlNFVCwKIAkJCSAgICAgICB3b3BjbS0+ Z3VjLmJhc2UgfCBodWNfYWdlbnQsIG1hc2ssCiAJCQkgICAgICAgR1VDX1dPUENNX09GRlNFVF9W QUxJRCk7Ci0JaWYgKGVycikKKwlpZiAoZXJyKSB7CisJCURSTV9FUlJPUigiRmFpbGVkIHRvIGxv Y2sgRE1BX0dVQ19XT1BDTV9PRkZTRVQgd2l0aCAlI3guXG4iLAorCQkJICB3b3BjbS0+Z3VjLmJh c2UpOwogCQlnb3RvIGVycl9vdXQ7CisJfQogCiAJcmV0dXJuIDA7CiAKIGVycl9vdXQ6Ci0JRFJN X0VSUk9SKCJGYWlsZWQgdG8gaW5pdCBXT1BDTSByZWdpc3RlcnM6XG4iKTsKIAlEUk1fRVJST1Io IkRNQV9HVUNfV09QQ01fT0ZGU0VUPSUjeFxuIiwKIAkJICBJOTE1X1JFQUQoRE1BX0dVQ19XT1BD TV9PRkZTRVQpKTsKIAlEUk1fRVJST1IoIkdVQ19XT1BDTV9TSVpFPSUjeFxuIiwgSTkxNV9SRUFE KEdVQ19XT1BDTV9TSVpFKSk7CisJRFJNX0VSUk9SKCJBIHN5c3RlbSByZWJvb3QgaXMgcmVxdWly ZWQuXG4iKTsKIAogCXJldHVybiBlcnI7CiB9Ci0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==