From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: [PATCH 05/25] drm/i915/fbc: replace frequent dev_priv->fbc.x with fbc->x Date: Tue, 19 Jan 2016 11:35:38 -0200 Message-ID: <1453210558-7875-6-git-send-email-paulo.r.zanoni@intel.com> References: <1453210558-7875-1-git-send-email-paulo.r.zanoni@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id 28A606E73F for ; Tue, 19 Jan 2016 05:36:26 -0800 (PST) In-Reply-To: <1453210558-7875-1-git-send-email-paulo.r.zanoni@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 V2Ugc2F5ICJkZXZfcHJpdi0+ZmJjLnNvbWV0aGluZyIgd2F5IHRvbyBtYW55IHRpbWVzIGluIG91 ciBjb2RlIHdoaWxlCndlIGNvdWxkIGJlIHNheWluZyBqdXN0ICJmYmMtPnNvbWV0aGluZyIgd2l0 aCBhIHByZXZpb3VzIGRlY2xhcmF0aW9uCm9mIGZiYy4gVGhpcyBoYXMgYmVlbiBib3RoZXJpbmcg bWUgZm9yIGEgd2hpbGUgYnV0IEkgZGlkbid0IHdhbnQgdG8KcGF0Y2ggaXQgc2luY2UgSSB3YW50 ZWQgdG8gZml4IHRoZSByZWFsIHByb2JsZW1zIGZpcnN0LiBCdXQgYXMgSSBhZGQKbW9yZSBjb2Rl IEkga2VlcCB0aGlua2luZyBhYm91dCBpdCwgZXNwZWNpYWxseSBzaW5jZSBpdCBtYWtlcyB0aGUg Y29kZQplYXNpZXIgdG8gcmVhZCBhbmQgaXQgY2FuIG1ha2UgdXMgZml0IDgwIGNvbHVtbnMgZWFz aWVyLCBzbyBsZXQncyBqdXN0CmRvIHRoZSBjaGFuZ2Ugbm93LgoKV2hpbGUgYXQgaXQsIGFsc28g cmVuYW1lIGZyb20gaTkxNV9mYmMgdG8gaW50ZWxfZmJjIGJlY2F1c2UgdGhlIHdob2xlCkZCQyBj b2RlIHVzZXMgaW50ZWxfZmJjLgoKU2lnbmVkLW9mZi1ieTogUGF1bG8gWmFub25pIDxwYXVsby5y Lnphbm9uaUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAg fCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jIHwgMjM3ICsrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxMzIgaW5z ZXJ0aW9ucygrKSwgMTA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4 IGFhOWMzNWUuLjZkMTE1NzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtOTA0LDcgKzkw NCw3IEBAIGVudW0gZmJfb3Bfb3JpZ2luIHsKIAlPUklHSU5fRElSVFlGQiwKIH07CiAKLXN0cnVj dCBpOTE1X2ZiYyB7CitzdHJ1Y3QgaW50ZWxfZmJjIHsKIAkvKiBUaGlzIGlzIGFsd2F5cyB0aGUg aW5uZXIgbG9jayB3aGVuIG92ZXJsYXBwaW5nIHdpdGggc3RydWN0X211dGV4IGFuZAogCSAqIGl0 J3MgdGhlIG91dGVyIGxvY2sgd2hlbiBvdmVybGFwcGluZyB3aXRoIHN0b2xlbl9sb2NrLiAqLwog CXN0cnVjdCBtdXRleCBsb2NrOwpAQCAtMTc3OCw3ICsxNzc4LDcgQEAgc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgewogCXUzMiBwaXBlc3RhdF9pcnFfbWFza1tJOTE1X01BWF9QSVBFU107CiAKIAlz dHJ1Y3QgaTkxNV9ob3RwbHVnIGhvdHBsdWc7Ci0Jc3RydWN0IGk5MTVfZmJjIGZiYzsKKwlzdHJ1 Y3QgaW50ZWxfZmJjIGZiYzsKIAlzdHJ1Y3QgaTkxNV9kcnJzIGRycnM7CiAJc3RydWN0IGludGVs X29wcmVnaW9uIG9wcmVnaW9uOwogCXN0cnVjdCBpbnRlbF92YnRfZGF0YSB2YnQ7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2ZiYy5jCmluZGV4IGY0ZWQyYjMuLmI0YTQxOTEgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2ZiYy5jCkBAIC0zNTgsMTcgKzM1OCwxOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9mYmNfd29y a19mbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKl9fd29yaykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPQogCQljb250YWluZXJfb2YoX193b3JrLCBzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSwgZmJjLndvcmsud29yayk7Ci0Jc3RydWN0IGludGVsX2ZiY193b3JrICp3b3JrID0g JmRldl9wcml2LT5mYmMud29yazsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IGRldl9wcml2 LT5mYmMuY3J0YzsKKwlzdHJ1Y3QgaW50ZWxfZmJjICpmYmMgPSAmZGV2X3ByaXYtPmZiYzsKKwlz dHJ1Y3QgaW50ZWxfZmJjX3dvcmsgKndvcmsgPSAmZmJjLT53b3JrOworCXN0cnVjdCBpbnRlbF9j cnRjICpjcnRjID0gZmJjLT5jcnRjOwogCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9 ICZkZXZfcHJpdi0+ZGV2LT52YmxhbmtbY3J0Yy0+cGlwZV07CiAKLQltdXRleF9sb2NrKCZkZXZf cHJpdi0+ZmJjLmxvY2spOworCW11dGV4X2xvY2soJmZiYy0+bG9jayk7CiAJaWYgKGRybV9jcnRj X3ZibGFua19nZXQoJmNydGMtPmJhc2UpKSB7CiAJCURSTV9FUlJPUigidmJsYW5rIG5vdCBhdmFp bGFibGUgZm9yIEZCQyBvbiBwaXBlICVjXG4iLAogCQkJICBwaXBlX25hbWUoY3J0Yy0+cGlwZSkp OwogCQlnb3RvIG91dDsKIAl9Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZmJjLmxvY2spOwor CW11dGV4X3VubG9jaygmZmJjLT5sb2NrKTsKIAogcmV0cnk6CiAJLyogRGVsYXkgdGhlIGFjdHVh bCBlbmFibGluZyB0byBsZXQgcGFnZWZsaXBwaW5nIGNlYXNlIGFuZCB0aGUKQEAgLTM4OCw3ICsz ODksNyBAQCByZXRyeToKIAkJZHJtX2NydGNfdmJsYW5rX2NvdW50KCZjcnRjLT5iYXNlKSAhPSB3 b3JrLT5zY2hlZHVsZWRfdmJsYW5rLAogCQltc2Vjc190b19qaWZmaWVzKDUwKSk7CiAKLQltdXRl eF9sb2NrKCZkZXZfcHJpdi0+ZmJjLmxvY2spOworCW11dGV4X2xvY2soJmZiYy0+bG9jayk7CiAK IAkvKiBXZXJlIHdlIGNhbmNlbGxlZD8gKi8KIAlpZiAoIXdvcmstPnNjaGVkdWxlZCkKQEAgLTM5 NiwzMiArMzk3LDM1IEBAIHJldHJ5OgogCiAJLyogV2VyZSB3ZSBkZWxheWVkIGFnYWluIHdoaWxl IHRoaXMgZnVuY3Rpb24gd2FzIHNsZWVwaW5nPyAqLwogCWlmIChkcm1fY3J0Y192YmxhbmtfY291 bnQoJmNydGMtPmJhc2UpID09IHdvcmstPnNjaGVkdWxlZF92YmxhbmspIHsKLQkJbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+ZmJjLmxvY2spOworCQltdXRleF91bmxvY2soJmZiYy0+bG9jayk7CiAJ CWdvdG8gcmV0cnk7CiAJfQogCiAJaWYgKGNydGMtPmJhc2UucHJpbWFyeS0+ZmIgPT0gd29yay0+ ZmIpCi0JCWRldl9wcml2LT5mYmMuYWN0aXZhdGUoZGV2X3ByaXYpOworCQlmYmMtPmFjdGl2YXRl KGRldl9wcml2KTsKIAogb3V0X3B1dDoKIAlkcm1fY3J0Y192YmxhbmtfcHV0KCZjcnRjLT5iYXNl KTsKIG91dDoKIAl3b3JrLT5zY2hlZHVsZWQgPSBmYWxzZTsKLQltdXRleF91bmxvY2soJmRldl9w cml2LT5mYmMubG9jayk7CisJbXV0ZXhfdW5sb2NrKCZmYmMtPmxvY2spOwogfQogCiBzdGF0aWMg dm9pZCBpbnRlbF9mYmNfY2FuY2VsX3dvcmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogewotCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2X3ByaXYtPmZiYy5sb2NrKSk7 Ci0JZGV2X3ByaXYtPmZiYy53b3JrLnNjaGVkdWxlZCA9IGZhbHNlOworCXN0cnVjdCBpbnRlbF9m YmMgKmZiYyA9ICZkZXZfcHJpdi0+ZmJjOworCisJV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZm YmMtPmxvY2spKTsKKwlmYmMtPndvcmsuc2NoZWR1bGVkID0gZmFsc2U7CiB9CiAKIHN0YXRpYyB2 b2lkIGludGVsX2ZiY19zY2hlZHVsZV9hY3RpdmF0aW9uKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRj KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGNydGMtPmJhc2UuZGV2 LT5kZXZfcHJpdmF0ZTsKLQlzdHJ1Y3QgaW50ZWxfZmJjX3dvcmsgKndvcmsgPSAmZGV2X3ByaXYt PmZiYy53b3JrOworCXN0cnVjdCBpbnRlbF9mYmMgKmZiYyA9ICZkZXZfcHJpdi0+ZmJjOworCXN0 cnVjdCBpbnRlbF9mYmNfd29yayAqd29yayA9ICZmYmMtPndvcms7CiAKLQlXQVJOX09OKCFtdXRl eF9pc19sb2NrZWQoJmRldl9wcml2LT5mYmMubG9jaykpOworCVdBUk5fT04oIW11dGV4X2lzX2xv Y2tlZCgmZmJjLT5sb2NrKSk7CiAKIAlpZiAoZHJtX2NydGNfdmJsYW5rX2dldCgmY3J0Yy0+YmFz ZSkpIHsKIAkJRFJNX0VSUk9SKCJ2Ymxhbmsgbm90IGF2YWlsYWJsZSBmb3IgRkJDIG9uIHBpcGUg JWNcbiIsCkBAIC00NDMsMTIgKzQ0NywxNCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9mYmNfc2NoZWR1 bGVfYWN0aXZhdGlvbihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIAogc3RhdGljIHZvaWQgX19p bnRlbF9mYmNfZGVhY3RpdmF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7 Ci0JV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZkZXZfcHJpdi0+ZmJjLmxvY2spKTsKKwlzdHJ1 Y3QgaW50ZWxfZmJjICpmYmMgPSAmZGV2X3ByaXYtPmZiYzsKKworCVdBUk5fT04oIW11dGV4X2lz X2xvY2tlZCgmZmJjLT5sb2NrKSk7CiAKIAlpbnRlbF9mYmNfY2FuY2VsX3dvcmsoZGV2X3ByaXYp OwogCi0JaWYgKGRldl9wcml2LT5mYmMuYWN0aXZlKQotCQlkZXZfcHJpdi0+ZmJjLmRlYWN0aXZh dGUoZGV2X3ByaXYpOworCWlmIChmYmMtPmFjdGl2ZSkKKwkJZmJjLT5kZWFjdGl2YXRlKGRldl9w cml2KTsKIH0KIAogLyoKQEAgLTQ2MCwyMyArNDY2LDI2IEBAIHN0YXRpYyB2b2lkIF9faW50ZWxf ZmJjX2RlYWN0aXZhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogdm9pZCBp bnRlbF9mYmNfZGVhY3RpdmF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIHsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBjcnRjLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7 CisJc3RydWN0IGludGVsX2ZiYyAqZmJjID0gJmRldl9wcml2LT5mYmM7CiAKIAlpZiAoIWZiY19z dXBwb3J0ZWQoZGV2X3ByaXYpKQogCQlyZXR1cm47CiAKLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+ ZmJjLmxvY2spOwotCWlmIChkZXZfcHJpdi0+ZmJjLmNydGMgPT0gY3J0YykKKwltdXRleF9sb2Nr KCZmYmMtPmxvY2spOworCWlmIChmYmMtPmNydGMgPT0gY3J0YykKIAkJX19pbnRlbF9mYmNfZGVh Y3RpdmF0ZShkZXZfcHJpdik7Ci0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZmJjLmxvY2spOwor CW11dGV4X3VubG9jaygmZmJjLT5sb2NrKTsKIH0KIAogc3RhdGljIHZvaWQgc2V0X25vX2ZiY19y ZWFzb24oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJICAgICAgY29uc3Qg Y2hhciAqcmVhc29uKQogewotCWlmIChkZXZfcHJpdi0+ZmJjLm5vX2ZiY19yZWFzb24gPT0gcmVh c29uKQorCXN0cnVjdCBpbnRlbF9mYmMgKmZiYyA9ICZkZXZfcHJpdi0+ZmJjOworCisJaWYgKGZi Yy0+bm9fZmJjX3JlYXNvbiA9PSByZWFzb24pCiAJCXJldHVybjsKIAotCWRldl9wcml2LT5mYmMu bm9fZmJjX3JlYXNvbiA9IHJlYXNvbjsKKwlmYmMtPm5vX2ZiY19yZWFzb24gPSByZWFzb247CiAJ RFJNX0RFQlVHX0tNUygiRGlzYWJsaW5nIEZCQzogJXNcbiIsIHJlYXNvbik7CiB9CiAKQEAgLTU2 NiwxNiArNTc1LDE3IEBAIGFnYWluOgogc3RhdGljIGludCBpbnRlbF9mYmNfYWxsb2NfY2ZiKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGNydGMtPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgaW50ZWxfZmJjICpm YmMgPSAmZGV2X3ByaXYtPmZiYzsKIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IGNydGMt PmJhc2UucHJpbWFyeS0+c3RhdGUtPmZiOwogCXN0cnVjdCBkcm1fbW1fbm9kZSAqdW5pbml0aWFs aXplZF92YXIoY29tcHJlc3NlZF9sbGIpOwogCWludCBzaXplLCBmYl9jcHAsIHJldDsKIAotCVdB Uk5fT04oZHJtX21tX25vZGVfYWxsb2NhdGVkKCZkZXZfcHJpdi0+ZmJjLmNvbXByZXNzZWRfZmIp KTsKKwlXQVJOX09OKGRybV9tbV9ub2RlX2FsbG9jYXRlZCgmZmJjLT5jb21wcmVzc2VkX2ZiKSk7 CiAKIAlzaXplID0gaW50ZWxfZmJjX2NhbGN1bGF0ZV9jZmJfc2l6ZShjcnRjLCBmYik7CiAJZmJf Y3BwID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwgMCk7CiAKLQlyZXQg PSBmaW5kX2NvbXByZXNzaW9uX3RocmVzaG9sZChkZXZfcHJpdiwgJmRldl9wcml2LT5mYmMuY29t cHJlc3NlZF9mYiwKKwlyZXQgPSBmaW5kX2NvbXByZXNzaW9uX3RocmVzaG9sZChkZXZfcHJpdiwg JmZiYy0+Y29tcHJlc3NlZF9mYiwKIAkJCQkJIHNpemUsIGZiX2NwcCk7CiAJaWYgKCFyZXQpCiAJ CWdvdG8gZXJyX2xsYjsKQEAgLTU4NCwxMiArNTk0LDEyIEBAIHN0YXRpYyBpbnQgaW50ZWxfZmJj X2FsbG9jX2NmYihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIAogCX0KIAotCWRldl9wcml2LT5m YmMudGhyZXNob2xkID0gcmV0OworCWZiYy0+dGhyZXNob2xkID0gcmV0OwogCiAJaWYgKElOVEVM X0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNSkKLQkJSTkxNV9XUklURShJTEtfRFBGQ19DQl9CQVNF LCBkZXZfcHJpdi0+ZmJjLmNvbXByZXNzZWRfZmIuc3RhcnQpOworCQlJOTE1X1dSSVRFKElMS19E UEZDX0NCX0JBU0UsIGZiYy0+Y29tcHJlc3NlZF9mYi5zdGFydCk7CiAJZWxzZSBpZiAoSVNfR000 NShkZXZfcHJpdikpIHsKLQkJSTkxNV9XUklURShEUEZDX0NCX0JBU0UsIGRldl9wcml2LT5mYmMu Y29tcHJlc3NlZF9mYi5zdGFydCk7CisJCUk5MTVfV1JJVEUoRFBGQ19DQl9CQVNFLCBmYmMtPmNv bXByZXNzZWRfZmIuc3RhcnQpOwogCX0gZWxzZSB7CiAJCWNvbXByZXNzZWRfbGxiID0ga3phbGxv YyhzaXplb2YoKmNvbXByZXNzZWRfbGxiKSwgR0ZQX0tFUk5FTCk7CiAJCWlmICghY29tcHJlc3Nl ZF9sbGIpCkBAIC02MDAsMjMgKzYxMCwyMiBAQCBzdGF0aWMgaW50IGludGVsX2ZiY19hbGxvY19j ZmIoc3RydWN0IGludGVsX2NydGMgKmNydGMpCiAJCWlmIChyZXQpCiAJCQlnb3RvIGVycl9mYjsK IAotCQlkZXZfcHJpdi0+ZmJjLmNvbXByZXNzZWRfbGxiID0gY29tcHJlc3NlZF9sbGI7CisJCWZi Yy0+Y29tcHJlc3NlZF9sbGIgPSBjb21wcmVzc2VkX2xsYjsKIAogCQlJOTE1X1dSSVRFKEZCQ19D RkJfQkFTRSwKLQkJCSAgIGRldl9wcml2LT5tbS5zdG9sZW5fYmFzZSArIGRldl9wcml2LT5mYmMu Y29tcHJlc3NlZF9mYi5zdGFydCk7CisJCQkgICBkZXZfcHJpdi0+bW0uc3RvbGVuX2Jhc2UgKyBm YmMtPmNvbXByZXNzZWRfZmIuc3RhcnQpOwogCQlJOTE1X1dSSVRFKEZCQ19MTF9CQVNFLAogCQkJ ICAgZGV2X3ByaXYtPm1tLnN0b2xlbl9iYXNlICsgY29tcHJlc3NlZF9sbGItPnN0YXJ0KTsKIAl9 CiAKIAlEUk1fREVCVUdfS01TKCJyZXNlcnZlZCAlbGx1IGJ5dGVzIG9mIGNvbnRpZ3VvdXMgc3Rv bGVuIHNwYWNlIGZvciBGQkMsIHRocmVzaG9sZDogJWRcbiIsCi0JCSAgICAgIGRldl9wcml2LT5m YmMuY29tcHJlc3NlZF9mYi5zaXplLAotCQkgICAgICBkZXZfcHJpdi0+ZmJjLnRocmVzaG9sZCk7 CisJCSAgICAgIGZiYy0+Y29tcHJlc3NlZF9mYi5zaXplLCBmYmMtPnRocmVzaG9sZCk7CiAKIAly ZXR1cm4gMDsKIAogZXJyX2ZiOgogCWtmcmVlKGNvbXByZXNzZWRfbGxiKTsKLQlpOTE1X2dlbV9z dG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsICZkZXZfcHJpdi0+ZmJjLmNvbXByZXNzZWRfZmIp OworCWk5MTVfZ2VtX3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwgJmZiYy0+Y29tcHJlc3Nl ZF9mYik7CiBlcnJfbGxiOgogCXByX2luZm9fb25jZSgiZHJtOiBub3QgZW5vdWdoIHN0b2xlbiBz cGFjZSBmb3IgY29tcHJlc3NlZCBidWZmZXIgKG5lZWQgJWQgbW9yZSBieXRlcyksIGRpc2FibGlu Zy4gSGludDogeW91IG1heSBiZSBhYmxlIHRvIGluY3JlYXNlIHN0b2xlbiBtZW1vcnkgc2l6ZSBp biB0aGUgQklPUyB0byBhdm9pZCB0aGlzLlxuIiwgc2l6ZSk7CiAJcmV0dXJuIC1FTk9TUEM7CkBA IC02MjQsMjUgKzYzMywyNyBAQCBlcnJfbGxiOgogCiBzdGF0aWMgdm9pZCBfX2ludGVsX2ZiY19j bGVhbnVwX2NmYihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0JaWYgKGRy bV9tbV9ub2RlX2FsbG9jYXRlZCgmZGV2X3ByaXYtPmZiYy5jb21wcmVzc2VkX2ZiKSkKLQkJaTkx NV9nZW1fc3RvbGVuX3JlbW92ZV9ub2RlKGRldl9wcml2LAotCQkJCQkgICAgJmRldl9wcml2LT5m YmMuY29tcHJlc3NlZF9mYik7Ci0KLQlpZiAoZGV2X3ByaXYtPmZiYy5jb21wcmVzc2VkX2xsYikg ewotCQlpOTE1X2dlbV9zdG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsCi0JCQkJCSAgICBkZXZf cHJpdi0+ZmJjLmNvbXByZXNzZWRfbGxiKTsKLQkJa2ZyZWUoZGV2X3ByaXYtPmZiYy5jb21wcmVz c2VkX2xsYik7CisJc3RydWN0IGludGVsX2ZiYyAqZmJjID0gJmRldl9wcml2LT5mYmM7CisKKwlp ZiAoZHJtX21tX25vZGVfYWxsb2NhdGVkKCZmYmMtPmNvbXByZXNzZWRfZmIpKQorCQlpOTE1X2dl bV9zdG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsICZmYmMtPmNvbXByZXNzZWRfZmIpOworCisJ aWYgKGZiYy0+Y29tcHJlc3NlZF9sbGIpIHsKKwkJaTkxNV9nZW1fc3RvbGVuX3JlbW92ZV9ub2Rl KGRldl9wcml2LCBmYmMtPmNvbXByZXNzZWRfbGxiKTsKKwkJa2ZyZWUoZmJjLT5jb21wcmVzc2Vk X2xsYik7CiAJfQogfQogCiB2b2lkIGludGVsX2ZiY19jbGVhbnVwX2NmYihzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CisJc3RydWN0IGludGVsX2ZiYyAqZmJjID0gJmRldl9w cml2LT5mYmM7CisKIAlpZiAoIWZiY19zdXBwb3J0ZWQoZGV2X3ByaXYpKQogCQlyZXR1cm47CiAK LQltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZmJjLmxvY2spOworCW11dGV4X2xvY2soJmZiYy0+bG9j ayk7CiAJX19pbnRlbF9mYmNfY2xlYW51cF9jZmIoZGV2X3ByaXYpOwotCW11dGV4X3VubG9jaygm ZGV2X3ByaXYtPmZiYy5sb2NrKTsKKwltdXRleF91bmxvY2soJmZiYy0+bG9jayk7CiB9CiAKIHN0 YXRpYyBib29sIHN0cmlkZV9pc192YWxpZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCkBAIC03MjEsNiArNzMyLDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfZmJjX2h3X3RyYWNraW5n X2NvdmVyc19zY3JlZW4oc3RydWN0IGludGVsX2NydGMgKmNydGMpCiBzdGF0aWMgYm9vbCBpbnRl bF9mYmNfY2FuX2FjdGl2YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQogewogCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGNydGMtPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsK KwlzdHJ1Y3QgaW50ZWxfZmJjICpmYmMgPSAmZGV2X3ByaXYtPmZiYzsKIAlzdHJ1Y3QgZHJtX3Bs YW5lICpwcmltYXJ5OwogCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiOwogCXN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7CkBAIC03OTcsNyArODA5LDcgQEAgc3RhdGljIGJv b2wgaW50ZWxfZmJjX2Nhbl9hY3RpdmF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIAkgKiBh IGxvdCBvZiB0cmFja2luZyBqdXN0IGZvciBhIHNwZWNpZmljIGNhc2UuIElmIHdlIGNvbmNsdWRl IGl0J3MgYW4KIAkgKiBpbXBvcnRhbnQgY2FzZSwgd2UgY2FuIGltcGxlbWVudCBpdCBsYXRlci4g Ki8KIAlpZiAoaW50ZWxfZmJjX2NhbGN1bGF0ZV9jZmJfc2l6ZShjcnRjLCBmYikgPgotCSAgICBk ZXZfcHJpdi0+ZmJjLmNvbXByZXNzZWRfZmIuc2l6ZSAqIGRldl9wcml2LT5mYmMudGhyZXNob2xk KSB7CisJICAgIGZiYy0+Y29tcHJlc3NlZF9mYi5zaXplICogZmJjLT50aHJlc2hvbGQpIHsKIAkJ c2V0X25vX2ZiY19yZWFzb24oZGV2X3ByaXYsICJDRkIgcmVxdWlyZW1lbnRzIGNoYW5nZWQiKTsK IAkJcmV0dXJuIGZhbHNlOwogCX0KQEAgLTg3OCwzMSArODkwLDMyIEBAIHN0YXRpYyBib29sIGlu dGVsX2ZiY19yZWdfcGFyYW1zX2VxdWFsKHN0cnVjdCBpbnRlbF9mYmNfcmVnX3BhcmFtcyAqcGFy YW1zMSwKIHN0YXRpYyB2b2lkIF9faW50ZWxfZmJjX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBjcnRjLT5iYXNl LmRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGludGVsX2ZiYyAqZmJjID0gJmRldl9wcml2LT5m YmM7CiAJc3RydWN0IGludGVsX2ZiY19yZWdfcGFyYW1zIG9sZF9wYXJhbXM7CiAKLQlXQVJOX09O KCFtdXRleF9pc19sb2NrZWQoJmRldl9wcml2LT5mYmMubG9jaykpOworCVdBUk5fT04oIW11dGV4 X2lzX2xvY2tlZCgmZmJjLT5sb2NrKSk7CiAKIAlpZiAoIW11bHRpcGxlX3BpcGVzX29rKGRldl9w cml2KSkgewogCQlzZXRfbm9fZmJjX3JlYXNvbihkZXZfcHJpdiwgIm1vcmUgdGhhbiBvbmUgcGlw ZSBhY3RpdmUiKTsKIAkJZ290byBvdXRfZGlzYWJsZTsKIAl9CiAKLQlpZiAoIWRldl9wcml2LT5m YmMuZW5hYmxlZCB8fCBkZXZfcHJpdi0+ZmJjLmNydGMgIT0gY3J0YykKKwlpZiAoIWZiYy0+ZW5h YmxlZCB8fCBmYmMtPmNydGMgIT0gY3J0YykKIAkJcmV0dXJuOwogCiAJaWYgKCFpbnRlbF9mYmNf Y2FuX2FjdGl2YXRlKGNydGMpKQogCQlnb3RvIG91dF9kaXNhYmxlOwogCi0Jb2xkX3BhcmFtcyA9 IGRldl9wcml2LT5mYmMucGFyYW1zOwotCWludGVsX2ZiY19nZXRfcmVnX3BhcmFtcyhjcnRjLCAm ZGV2X3ByaXYtPmZiYy5wYXJhbXMpOworCW9sZF9wYXJhbXMgPSBmYmMtPnBhcmFtczsKKwlpbnRl bF9mYmNfZ2V0X3JlZ19wYXJhbXMoY3J0YywgJmZiYy0+cGFyYW1zKTsKIAogCS8qIElmIHRoZSBz Y2Fub3V0IGhhcyBub3QgY2hhbmdlZCwgZG9uJ3QgbW9kaWZ5IHRoZSBGQkMgc2V0dGluZ3MuCiAJ ICogTm90ZSB0aGF0IHdlIG1ha2UgdGhlIGZ1bmRhbWVudGFsIGFzc3VtcHRpb24gdGhhdCB0aGUg ZmItPm9iagogCSAqIGNhbm5vdCBiZSB1bnBpbm5lZCAoYW5kIGhhdmUgaXRzIEdUVCBvZmZzZXQg YW5kIGZlbmNlIHJldm9rZWQpCiAJICogd2l0aG91dCBmaXJzdCBiZWluZyBkZWNvdXBsZWQgZnJv bSB0aGUgc2Nhbm91dCBhbmQgRkJDIGRpc2FibGVkLgogCSAqLwotCWlmIChkZXZfcHJpdi0+ZmJj LmFjdGl2ZSAmJgotCSAgICBpbnRlbF9mYmNfcmVnX3BhcmFtc19lcXVhbCgmb2xkX3BhcmFtcywg JmRldl9wcml2LT5mYmMucGFyYW1zKSkKKwlpZiAoZmJjLT5hY3RpdmUgJiYKKwkgICAgaW50ZWxf ZmJjX3JlZ19wYXJhbXNfZXF1YWwoJm9sZF9wYXJhbXMsICZmYmMtPnBhcmFtcykpCiAJCXJldHVy bjsKIAogCWlmIChpbnRlbF9mYmNfaXNfYWN0aXZlKGRldl9wcml2KSkgewpAQCAtOTM0LDcgKzk0 Nyw3IEBAIHN0YXRpYyB2b2lkIF9faW50ZWxfZmJjX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YykKIAl9CiAKIAlpbnRlbF9mYmNfc2NoZWR1bGVfYWN0aXZhdGlvbihjcnRjKTsKLQlkZXZf cHJpdi0+ZmJjLm5vX2ZiY19yZWFzb24gPSAiRkJDIGVuYWJsZWQgKG5vdCBuZWNlc3NhcmlseSBh Y3RpdmUpIjsKKwlmYmMtPm5vX2ZiY19yZWFzb24gPSAiRkJDIGVuYWJsZWQgKG5vdCBuZWNlc3Nh cmlseSBhY3RpdmUpIjsKIAlyZXR1cm47CiAKIG91dF9kaXNhYmxlOgpAQCAtOTU0LDE5ICs5Njcs MjEgQEAgb3V0X2Rpc2FibGU6CiB2b2lkIGludGVsX2ZiY191cGRhdGUoc3RydWN0IGludGVsX2Ny dGMgKmNydGMpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gY3J0Yy0+ YmFzZS5kZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBpbnRlbF9mYmMgKmZiYyA9ICZkZXZfcHJp di0+ZmJjOwogCiAJaWYgKCFmYmNfc3VwcG9ydGVkKGRldl9wcml2KSkKIAkJcmV0dXJuOwogCi0J bXV0ZXhfbG9jaygmZGV2X3ByaXYtPmZiYy5sb2NrKTsKKwltdXRleF9sb2NrKCZmYmMtPmxvY2sp OwogCV9faW50ZWxfZmJjX3VwZGF0ZShjcnRjKTsKLQltdXRleF91bmxvY2soJmRldl9wcml2LT5m YmMubG9jayk7CisJbXV0ZXhfdW5sb2NrKCZmYmMtPmxvY2spOwogfQogCiB2b2lkIGludGVsX2Zi Y19pbnZhbGlkYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCSAgdW5z aWduZWQgaW50IGZyb250YnVmZmVyX2JpdHMsCiAJCQkgIGVudW0gZmJfb3Bfb3JpZ2luIG9yaWdp bikKIHsKKwlzdHJ1Y3QgaW50ZWxfZmJjICpmYmMgPSAmZGV2X3ByaXYtPmZiYzsKIAl1bnNpZ25l ZCBpbnQgZmJjX2JpdHM7CiAKIAlpZiAoIWZiY19zdXBwb3J0ZWQoZGV2X3ByaXYpKQpAQCAtOTc1 LDQ0ICs5OTAsNDYgQEAgdm9pZCBpbnRlbF9mYmNfaW52YWxpZGF0ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCiAJaWYgKG9yaWdpbiA9PSBPUklHSU5fR1RUKQogCQlyZXR1cm47 CiAKLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZmJjLmxvY2spOworCW11dGV4X2xvY2soJmZiYy0+ bG9jayk7CiAKLQlpZiAoZGV2X3ByaXYtPmZiYy5lbmFibGVkKQotCQlmYmNfYml0cyA9IElOVEVM X0ZST05UQlVGRkVSX1BSSU1BUlkoZGV2X3ByaXYtPmZiYy5jcnRjLT5waXBlKTsKKwlpZiAoZmJj LT5lbmFibGVkKQorCQlmYmNfYml0cyA9IElOVEVMX0ZST05UQlVGRkVSX1BSSU1BUlkoZmJjLT5j cnRjLT5waXBlKTsKIAllbHNlCi0JCWZiY19iaXRzID0gZGV2X3ByaXYtPmZiYy5wb3NzaWJsZV9m cmFtZWJ1ZmZlcl9iaXRzOworCQlmYmNfYml0cyA9IGZiYy0+cG9zc2libGVfZnJhbWVidWZmZXJf Yml0czsKIAotCWRldl9wcml2LT5mYmMuYnVzeV9iaXRzIHw9IChmYmNfYml0cyAmIGZyb250YnVm ZmVyX2JpdHMpOworCWZiYy0+YnVzeV9iaXRzIHw9IChmYmNfYml0cyAmIGZyb250YnVmZmVyX2Jp dHMpOwogCi0JaWYgKGRldl9wcml2LT5mYmMuYnVzeV9iaXRzKQorCWlmIChmYmMtPmJ1c3lfYml0 cykKIAkJX19pbnRlbF9mYmNfZGVhY3RpdmF0ZShkZXZfcHJpdik7CiAKLQltdXRleF91bmxvY2so JmRldl9wcml2LT5mYmMubG9jayk7CisJbXV0ZXhfdW5sb2NrKCZmYmMtPmxvY2spOwogfQogCiB2 b2lkIGludGVsX2ZiY19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJ CSAgICAgdW5zaWduZWQgaW50IGZyb250YnVmZmVyX2JpdHMsIGVudW0gZmJfb3Bfb3JpZ2luIG9y aWdpbikKIHsKKwlzdHJ1Y3QgaW50ZWxfZmJjICpmYmMgPSAmZGV2X3ByaXYtPmZiYzsKKwogCWlm ICghZmJjX3N1cHBvcnRlZChkZXZfcHJpdikpCiAJCXJldHVybjsKIAogCWlmIChvcmlnaW4gPT0g T1JJR0lOX0dUVCkKIAkJcmV0dXJuOwogCi0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmZiYy5sb2Nr KTsKKwltdXRleF9sb2NrKCZmYmMtPmxvY2spOwogCi0JZGV2X3ByaXYtPmZiYy5idXN5X2JpdHMg Jj0gfmZyb250YnVmZmVyX2JpdHM7CisJZmJjLT5idXN5X2JpdHMgJj0gfmZyb250YnVmZmVyX2Jp dHM7CiAKLQlpZiAoIWRldl9wcml2LT5mYmMuYnVzeV9iaXRzICYmIGRldl9wcml2LT5mYmMuZW5h YmxlZCkgewotCQlpZiAob3JpZ2luICE9IE9SSUdJTl9GTElQICYmIGRldl9wcml2LT5mYmMuYWN0 aXZlKSB7CisJaWYgKCFmYmMtPmJ1c3lfYml0cyAmJiBmYmMtPmVuYWJsZWQpIHsKKwkJaWYgKG9y aWdpbiAhPSBPUklHSU5fRkxJUCAmJiBmYmMtPmFjdGl2ZSkgewogCQkJaW50ZWxfZmJjX3JlY29t cHJlc3MoZGV2X3ByaXYpOwogCQl9IGVsc2UgewogCQkJX19pbnRlbF9mYmNfZGVhY3RpdmF0ZShk ZXZfcHJpdik7Ci0JCQlfX2ludGVsX2ZiY191cGRhdGUoZGV2X3ByaXYtPmZiYy5jcnRjKTsKKwkJ CV9faW50ZWxfZmJjX3VwZGF0ZShmYmMtPmNydGMpOwogCQl9CiAJfQogCi0JbXV0ZXhfdW5sb2Nr KCZkZXZfcHJpdi0+ZmJjLmxvY2spOworCW11dGV4X3VubG9jaygmZmJjLT5sb2NrKTsKIH0KIAog LyoqCkBAIC0xMDI1LDE5ICsxMDQyLDIwIEBAIHZvaWQgaW50ZWxfZmJjX2ZsdXNoKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIHZvaWQgaW50ZWxfZmJjX2VuYWJsZShzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBjcnRjLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGludGVsX2ZiYyAqZmJjID0g JmRldl9wcml2LT5mYmM7CiAKIAlpZiAoIWZiY19zdXBwb3J0ZWQoZGV2X3ByaXYpKQogCQlyZXR1 cm47CiAKLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZmJjLmxvY2spOworCW11dGV4X2xvY2soJmZi Yy0+bG9jayk7CiAKLQlpZiAoZGV2X3ByaXYtPmZiYy5lbmFibGVkKSB7Ci0JCVdBUk5fT04oZGV2 X3ByaXYtPmZiYy5jcnRjID09IGNydGMpOworCWlmIChmYmMtPmVuYWJsZWQpIHsKKwkJV0FSTl9P TihmYmMtPmNydGMgPT0gY3J0Yyk7CiAJCWdvdG8gb3V0OwogCX0KIAotCVdBUk5fT04oZGV2X3By aXYtPmZiYy5hY3RpdmUpOwotCVdBUk5fT04oZGV2X3ByaXYtPmZiYy5jcnRjICE9IE5VTEwpOwor CVdBUk5fT04oZmJjLT5hY3RpdmUpOworCVdBUk5fT04oZmJjLT5jcnRjICE9IE5VTEwpOwogCiAJ aWYgKCFpbnRlbF9mYmNfY2FuX2VuYWJsZShjcnRjKSkKIAkJZ290byBvdXQ7CkBAIC0xMDQ4LDEy ICsxMDY2LDEyIEBAIHZvaWQgaW50ZWxfZmJjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YykKIAl9CiAKIAlEUk1fREVCVUdfS01TKCJFbmFibGluZyBGQkMgb24gcGlwZSAlY1xuIiwgcGlw ZV9uYW1lKGNydGMtPnBpcGUpKTsKLQlkZXZfcHJpdi0+ZmJjLm5vX2ZiY19yZWFzb24gPSAiRkJD IGVuYWJsZWQgYnV0IG5vdCBhY3RpdmUgeWV0XG4iOworCWZiYy0+bm9fZmJjX3JlYXNvbiA9ICJG QkMgZW5hYmxlZCBidXQgbm90IGFjdGl2ZSB5ZXRcbiI7CiAKLQlkZXZfcHJpdi0+ZmJjLmVuYWJs ZWQgPSB0cnVlOwotCWRldl9wcml2LT5mYmMuY3J0YyA9IGNydGM7CisJZmJjLT5lbmFibGVkID0g dHJ1ZTsKKwlmYmMtPmNydGMgPSBjcnRjOwogb3V0OgotCW11dGV4X3VubG9jaygmZGV2X3ByaXYt PmZiYy5sb2NrKTsKKwltdXRleF91bmxvY2soJmZiYy0+bG9jayk7CiB9CiAKIC8qKgpAQCAtMTA2 NSwxOSArMTA4MywyMCBAQCBvdXQ6CiAgKi8KIHN0YXRpYyB2b2lkIF9faW50ZWxfZmJjX2Rpc2Fi bGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCXN0cnVjdCBpbnRlbF9j cnRjICpjcnRjID0gZGV2X3ByaXYtPmZiYy5jcnRjOworCXN0cnVjdCBpbnRlbF9mYmMgKmZiYyA9 ICZkZXZfcHJpdi0+ZmJjOworCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gZmJjLT5jcnRjOwog Ci0JV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZkZXZfcHJpdi0+ZmJjLmxvY2spKTsKLQlXQVJO X09OKCFkZXZfcHJpdi0+ZmJjLmVuYWJsZWQpOwotCVdBUk5fT04oZGV2X3ByaXYtPmZiYy5hY3Rp dmUpOworCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZmJjLT5sb2NrKSk7CisJV0FSTl9PTigh ZmJjLT5lbmFibGVkKTsKKwlXQVJOX09OKGZiYy0+YWN0aXZlKTsKIAlhc3NlcnRfcGlwZV9kaXNh YmxlZChkZXZfcHJpdiwgY3J0Yy0+cGlwZSk7CiAKIAlEUk1fREVCVUdfS01TKCJEaXNhYmxpbmcg RkJDIG9uIHBpcGUgJWNcbiIsIHBpcGVfbmFtZShjcnRjLT5waXBlKSk7CiAKIAlfX2ludGVsX2Zi Y19jbGVhbnVwX2NmYihkZXZfcHJpdik7CiAKLQlkZXZfcHJpdi0+ZmJjLmVuYWJsZWQgPSBmYWxz ZTsKLQlkZXZfcHJpdi0+ZmJjLmNydGMgPSBOVUxMOworCWZiYy0+ZW5hYmxlZCA9IGZhbHNlOwor CWZiYy0+Y3J0YyA9IE5VTEw7CiB9CiAKIC8qKgpAQCAtMTA4OSwxNyArMTEwOCwxOCBAQCBzdGF0 aWMgdm9pZCBfX2ludGVsX2ZiY19kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIHZvaWQgaW50ZWxfZmJjX2Rpc2FibGVfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBjcnRjLT5iYXNlLmRl di0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGludGVsX2ZiYyAqZmJjID0gJmRldl9wcml2LT5mYmM7 CiAKIAlpZiAoIWZiY19zdXBwb3J0ZWQoZGV2X3ByaXYpKQogCQlyZXR1cm47CiAKLQltdXRleF9s b2NrKCZkZXZfcHJpdi0+ZmJjLmxvY2spOwotCWlmIChkZXZfcHJpdi0+ZmJjLmNydGMgPT0gY3J0 YykgewotCQlXQVJOX09OKCFkZXZfcHJpdi0+ZmJjLmVuYWJsZWQpOwotCQlXQVJOX09OKGRldl9w cml2LT5mYmMuYWN0aXZlKTsKKwltdXRleF9sb2NrKCZmYmMtPmxvY2spOworCWlmIChmYmMtPmNy dGMgPT0gY3J0YykgeworCQlXQVJOX09OKCFmYmMtPmVuYWJsZWQpOworCQlXQVJOX09OKGZiYy0+ YWN0aXZlKTsKIAkJX19pbnRlbF9mYmNfZGlzYWJsZShkZXZfcHJpdik7CiAJfQotCW11dGV4X3Vu bG9jaygmZGV2X3ByaXYtPmZiYy5sb2NrKTsKKwltdXRleF91bmxvY2soJmZiYy0+bG9jayk7CiB9 CiAKIC8qKgpAQCAtMTExMCwxMyArMTEzMCwxNSBAQCB2b2lkIGludGVsX2ZiY19kaXNhYmxlX2Ny dGMoc3RydWN0IGludGVsX2NydGMgKmNydGMpCiAgKi8KIHZvaWQgaW50ZWxfZmJjX2Rpc2FibGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogeworCXN0cnVjdCBpbnRlbF9mYmMg KmZiYyA9ICZkZXZfcHJpdi0+ZmJjOworCiAJaWYgKCFmYmNfc3VwcG9ydGVkKGRldl9wcml2KSkK IAkJcmV0dXJuOwogCi0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmZiYy5sb2NrKTsKLQlpZiAoZGV2 X3ByaXYtPmZiYy5lbmFibGVkKQorCW11dGV4X2xvY2soJmZiYy0+bG9jayk7CisJaWYgKGZiYy0+ ZW5hYmxlZCkKIAkJX19pbnRlbF9mYmNfZGlzYWJsZShkZXZfcHJpdik7Ci0JbXV0ZXhfdW5sb2Nr KCZkZXZfcHJpdi0+ZmJjLmxvY2spOworCW11dGV4X3VubG9jaygmZmJjLT5sb2NrKTsKIH0KIAog LyoqCkBAIC0xMTI3LDIxICsxMTQ5LDIyIEBAIHZvaWQgaW50ZWxfZmJjX2Rpc2FibGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogICovCiB2b2lkIGludGVsX2ZiY19pbml0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKKwlzdHJ1Y3QgaW50ZWxfZmJjICpm YmMgPSAmZGV2X3ByaXYtPmZiYzsKIAllbnVtIHBpcGUgcGlwZTsKIAotCUlOSVRfV09SSygmZGV2 X3ByaXYtPmZiYy53b3JrLndvcmssIGludGVsX2ZiY193b3JrX2ZuKTsKLQltdXRleF9pbml0KCZk ZXZfcHJpdi0+ZmJjLmxvY2spOwotCWRldl9wcml2LT5mYmMuZW5hYmxlZCA9IGZhbHNlOwotCWRl dl9wcml2LT5mYmMuYWN0aXZlID0gZmFsc2U7Ci0JZGV2X3ByaXYtPmZiYy53b3JrLnNjaGVkdWxl ZCA9IGZhbHNlOworCUlOSVRfV09SSygmZmJjLT53b3JrLndvcmssIGludGVsX2ZiY193b3JrX2Zu KTsKKwltdXRleF9pbml0KCZmYmMtPmxvY2spOworCWZiYy0+ZW5hYmxlZCA9IGZhbHNlOworCWZi Yy0+YWN0aXZlID0gZmFsc2U7CisJZmJjLT53b3JrLnNjaGVkdWxlZCA9IGZhbHNlOwogCiAJaWYg KCFIQVNfRkJDKGRldl9wcml2KSkgewotCQlkZXZfcHJpdi0+ZmJjLm5vX2ZiY19yZWFzb24gPSAi dW5zdXBwb3J0ZWQgYnkgdGhpcyBjaGlwc2V0IjsKKwkJZmJjLT5ub19mYmNfcmVhc29uID0gInVu c3VwcG9ydGVkIGJ5IHRoaXMgY2hpcHNldCI7CiAJCXJldHVybjsKIAl9CiAKIAlmb3JfZWFjaF9w aXBlKGRldl9wcml2LCBwaXBlKSB7Ci0JCWRldl9wcml2LT5mYmMucG9zc2libGVfZnJhbWVidWZm ZXJfYml0cyB8PQorCQlmYmMtPnBvc3NpYmxlX2ZyYW1lYnVmZmVyX2JpdHMgfD0KIAkJCQlJTlRF TF9GUk9OVEJVRkZFUl9QUklNQVJZKHBpcGUpOwogCiAJCWlmIChmYmNfb25fcGlwZV9hX29ubHko ZGV2X3ByaXYpKQpAQCAtMTE0OSwyMSArMTE3MiwyMSBAQCB2b2lkIGludGVsX2ZiY19pbml0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAl9CiAKIAlpZiAoSU5URUxfSU5GTyhk ZXZfcHJpdiktPmdlbiA+PSA3KSB7Ci0JCWRldl9wcml2LT5mYmMuaXNfYWN0aXZlID0gaWxrX2Zi Y19pc19hY3RpdmU7Ci0JCWRldl9wcml2LT5mYmMuYWN0aXZhdGUgPSBnZW43X2ZiY19hY3RpdmF0 ZTsKLQkJZGV2X3ByaXYtPmZiYy5kZWFjdGl2YXRlID0gaWxrX2ZiY19kZWFjdGl2YXRlOworCQlm YmMtPmlzX2FjdGl2ZSA9IGlsa19mYmNfaXNfYWN0aXZlOworCQlmYmMtPmFjdGl2YXRlID0gZ2Vu N19mYmNfYWN0aXZhdGU7CisJCWZiYy0+ZGVhY3RpdmF0ZSA9IGlsa19mYmNfZGVhY3RpdmF0ZTsK IAl9IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNSkgewotCQlkZXZfcHJp di0+ZmJjLmlzX2FjdGl2ZSA9IGlsa19mYmNfaXNfYWN0aXZlOwotCQlkZXZfcHJpdi0+ZmJjLmFj dGl2YXRlID0gaWxrX2ZiY19hY3RpdmF0ZTsKLQkJZGV2X3ByaXYtPmZiYy5kZWFjdGl2YXRlID0g aWxrX2ZiY19kZWFjdGl2YXRlOworCQlmYmMtPmlzX2FjdGl2ZSA9IGlsa19mYmNfaXNfYWN0aXZl OworCQlmYmMtPmFjdGl2YXRlID0gaWxrX2ZiY19hY3RpdmF0ZTsKKwkJZmJjLT5kZWFjdGl2YXRl ID0gaWxrX2ZiY19kZWFjdGl2YXRlOwogCX0gZWxzZSBpZiAoSVNfR000NShkZXZfcHJpdikpIHsK LQkJZGV2X3ByaXYtPmZiYy5pc19hY3RpdmUgPSBnNHhfZmJjX2lzX2FjdGl2ZTsKLQkJZGV2X3By aXYtPmZiYy5hY3RpdmF0ZSA9IGc0eF9mYmNfYWN0aXZhdGU7Ci0JCWRldl9wcml2LT5mYmMuZGVh Y3RpdmF0ZSA9IGc0eF9mYmNfZGVhY3RpdmF0ZTsKKwkJZmJjLT5pc19hY3RpdmUgPSBnNHhfZmJj X2lzX2FjdGl2ZTsKKwkJZmJjLT5hY3RpdmF0ZSA9IGc0eF9mYmNfYWN0aXZhdGU7CisJCWZiYy0+ ZGVhY3RpdmF0ZSA9IGc0eF9mYmNfZGVhY3RpdmF0ZTsKIAl9IGVsc2UgewotCQlkZXZfcHJpdi0+ ZmJjLmlzX2FjdGl2ZSA9IGk4eHhfZmJjX2lzX2FjdGl2ZTsKLQkJZGV2X3ByaXYtPmZiYy5hY3Rp dmF0ZSA9IGk4eHhfZmJjX2FjdGl2YXRlOwotCQlkZXZfcHJpdi0+ZmJjLmRlYWN0aXZhdGUgPSBp OHh4X2ZiY19kZWFjdGl2YXRlOworCQlmYmMtPmlzX2FjdGl2ZSA9IGk4eHhfZmJjX2lzX2FjdGl2 ZTsKKwkJZmJjLT5hY3RpdmF0ZSA9IGk4eHhfZmJjX2FjdGl2YXRlOworCQlmYmMtPmRlYWN0aXZh dGUgPSBpOHh4X2ZiY19kZWFjdGl2YXRlOwogCiAJCS8qIFRoaXMgdmFsdWUgd2FzIHB1bGxlZCBv dXQgb2Ygc29tZW9uZSdzIGhhdCAqLwogCQlJOTE1X1dSSVRFKEZCQ19DT05UUk9MLCA1MDAgPDwg RkJDX0NUTF9JTlRFUlZBTF9TSElGVCk7CkBAIC0xMTcyLDYgKzExOTUsNiBAQCB2b2lkIGludGVs X2ZiY19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkvKiBXZSBzdGls bCBkb24ndCBoYXZlIGFueSBzb3J0IG9mIGhhcmR3YXJlIHN0YXRlIHJlYWRvdXQgZm9yIEZCQywg c28KIAkgKiBkZWFjdGl2YXRlIGl0IGluIGNhc2UgdGhlIEJJT1MgYWN0aXZhdGVkIGl0IHRvIG1h a2Ugc3VyZSBzb2Z0d2FyZQogCSAqIG1hdGNoZXMgdGhlIGhhcmR3YXJlIHN0YXRlLiAqLwotCWlm IChkZXZfcHJpdi0+ZmJjLmlzX2FjdGl2ZShkZXZfcHJpdikpCi0JCWRldl9wcml2LT5mYmMuZGVh Y3RpdmF0ZShkZXZfcHJpdik7CisJaWYgKGZiYy0+aXNfYWN0aXZlKGRldl9wcml2KSkKKwkJZmJj LT5kZWFjdGl2YXRlKGRldl9wcml2KTsKIH0KLS0gCjIuNi40CgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=