From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hellstrom Subject: [PATCH 1/2] drm/vmwgfx: Fix up the implicit display unit handling Date: Thu, 4 Oct 2018 22:38:17 +0000 Message-ID: <20181004223753.22846-1-thellstrom@vmware.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from NAM04-CO1-obe.outbound.protection.outlook.com (mail-eopbgr690068.outbound.protection.outlook.com [40.107.69.68]) by gabe.freedesktop.org (Postfix) with ESMTPS id EF3C96E676 for ; Thu, 4 Oct 2018 22:38:20 +0000 (UTC) Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "dri-devel@lists.freedesktop.org" Cc: "daniel.vetter@ffwll.ch" , Thomas Hellstrom , linux-graphics-maintainer List-Id: dri-devel@lists.freedesktop.org TWFrZSB0aGUgY29ubmVjdG9yIGlzX2ltcGxpY2l0IHByb3BlcnR5IGltbXV0YWJsZS4KQXMgZmFy IGFzIHdlIGtub3csIG5vIHVzZXItc3BhY2UgYXBwbGljYXRpb24gaXMgd3JpdGluZyB0byBpdC4K CkFsc28gbW92ZSB0aGUgdmVyaWZpY2F0aW9uIHRoYXQgYWxsIGltcGxpY2l0IGRpc3BsYXkgdW5p dHMgc2NhbiBvdXQKZnJvbSB0aGUgc2FtZSBmcmFtZWJ1ZmZlciB0byBhdG9taWNfY2hlY2soKS4K ClNpZ25lZC1vZmYtYnk6IFRob21hcyBIZWxsc3Ryb20gPHRoZWxsc3Ryb21Adm13YXJlLmNvbT4K UmV2aWV3ZWQtYnk6IFNpbmNsYWlyIFllaCA8c3llaEB2bXdhcmUuY29tPgpSZXZpZXdlZC1ieTog RGVlcGFrIFJhd2F0IDxkcmF3YXRAdm13YXJlLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vdm13 Z2Z4L3Ztd2dmeF9kcnYuaCAgfCAgIDIgLQogZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhf a21zLmMgIHwgMjMwICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJz L2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9rbXMuaCAgfCAgMTYgKy0tCiBkcml2ZXJzL2dwdS9kcm0v dm13Z2Z4L3Ztd2dmeF9sZHUuYyAgfCAgIDYgKy0KIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13 Z2Z4X3Njcm4uYyB8ICAzOCArLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3N0 ZHUuYyB8ICA0MyArLS0tLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDEwMiBpbnNlcnRpb25zKCspLCAy MzMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdn ZnhfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaAppbmRleCA1OWY2 MTQyMjViY2QuLmVhMmMyMmQ5MjM1NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dm eC92bXdnZnhfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmgK QEAgLTQ4Niw4ICs0ODYsNiBAQCBzdHJ1Y3Qgdm13X3ByaXZhdGUgewogCXN0cnVjdCB2bXdfb3Zl cmxheSAqb3ZlcmxheV9wcml2OwogCXN0cnVjdCBkcm1fcHJvcGVydHkgKmhvdHBsdWdfbW9kZV91 cGRhdGVfcHJvcGVydHk7CiAJc3RydWN0IGRybV9wcm9wZXJ0eSAqaW1wbGljaXRfcGxhY2VtZW50 X3Byb3BlcnR5OwotCXVuc2lnbmVkIG51bV9pbXBsaWNpdDsKLQlzdHJ1Y3Qgdm13X2ZyYW1lYnVm ZmVyICppbXBsaWNpdF9mYjsKIAlzdHJ1Y3QgbXV0ZXggZ2xvYmFsX2ttc19zdGF0ZV9tdXRleDsK IAlzcGlubG9ja190IGN1cnNvcl9sb2NrOwogCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdXNw ZW5kX3N0YXRlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfa21z LmMgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9rbXMuYwppbmRleCAwNWZiMTY3MzNj NWMuLmNjYWVjMmNiYWJkMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdn Znhfa21zLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfa21zLmMKQEAgLTQ1 NiwyMSArNDU2LDggQEAgaW50IHZtd19kdV9wcmltYXJ5X3BsYW5lX2F0b21pY19jaGVjayhzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJc3RydWN0IGRybV9jcnRjICpjcnRjID0gc3RhdGUtPmNy dGM7CiAJCXN0cnVjdCB2bXdfY29ubmVjdG9yX3N0YXRlICp2Y3M7CiAJCXN0cnVjdCB2bXdfZGlz cGxheV91bml0ICpkdSA9IHZtd19jcnRjX3RvX2R1KGNydGMpOwotCQlzdHJ1Y3Qgdm13X3ByaXZh dGUgKmRldl9wcml2ID0gdm13X3ByaXYoY3J0Yy0+ZGV2KTsKLQkJc3RydWN0IHZtd19mcmFtZWJ1 ZmZlciAqdmZiID0gdm13X2ZyYW1lYnVmZmVyX3RvX3ZmYihuZXdfZmIpOwogCiAJCXZjcyA9IHZt d19jb25uZWN0b3Jfc3RhdGVfdG9fdmNzKGR1LT5jb25uZWN0b3Iuc3RhdGUpOwotCi0JCS8qIE9u bHkgb25lIGFjdGl2ZSBpbXBsaWNpdCBmcmFtZWJ1ZmZlciBhdCBhIHRpbWUuICovCi0JCW11dGV4 X2xvY2soJmRldl9wcml2LT5nbG9iYWxfa21zX3N0YXRlX211dGV4KTsKLQkJaWYgKHZjcy0+aXNf aW1wbGljaXQgJiYgZGV2X3ByaXYtPmltcGxpY2l0X2ZiICYmCi0JCSAgICAhKGRldl9wcml2LT5u dW1faW1wbGljaXQgPT0gMSAmJiBkdS0+YWN0aXZlX2ltcGxpY2l0KQotCQkgICAgJiYgZGV2X3By aXYtPmltcGxpY2l0X2ZiICE9IHZmYikgewotCQkJRFJNX0VSUk9SKCJNdWx0aXBsZSBpbXBsaWNp dCBmcmFtZWJ1ZmZlcnMgIgotCQkJCSAgIm5vdCBzdXBwb3J0ZWQuXG4iKTsKLQkJCXJldCA9IC1F SU5WQUw7Ci0JCX0KLQkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+Z2xvYmFsX2ttc19zdGF0ZV9t dXRleCk7CiAJfQogCiAKQEAgLTE1NjYsNiArMTU1Myw4OCBAQCBzdGF0aWMgaW50IHZtd19rbXNf Y2hlY2tfZGlzcGxheV9tZW1vcnkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlyZXR1cm4gMDsK IH0KIAorLyoqCisgKiB2bXdfY3J0Y19zdGF0ZV9hbmRfbG9jayAtIFJldHVybiBuZXcgb3IgY3Vy cmVudCBjcnRjIHN0YXRlIHdpdGggbG9ja2VkCisgKiBjcnRjIG11dGV4CisgKiBAc3RhdGU6IFRo ZSBhdG9taWMgc3RhdGUgcG9pbnRlciBjb250YWluaW5nIHRoZSBuZXcgYXRvbWljIHN0YXRlCisg KiBAY3J0YzogVGhlIGNydGMKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIG5ldyBj cnRjIHN0YXRlIGlmIGl0J3MgcGFydCBvZiB0aGUgc3RhdGUgdXBkYXRlLgorICogT3RoZXJ3aXNl IHJldHVybnMgdGhlIGN1cnJlbnQgY3J0YyBzdGF0ZS4gSXQgYWxzbyBtYWtlcyBzdXJlIHRoYXQg dGhlCisgKiBjcnRjIG11dGV4IGlzIGxvY2tlZC4KKyAqCisgKiBSZXR1cm5zOiBBIHZhbGlkIGNy dGMgc3RhdGUgcG9pbnRlciBvciBOVUxMLiBJdCBtYXkgYWxzbyByZXR1cm4gYQorICogcG9pbnRl ciBlcnJvciwgaW4gcGFydGljdWxhciAtRURFQURMSyBpZiBsb2NraW5nIG5lZWRzIHRvIGJlIHJl cnVuLgorICovCitzdGF0aWMgc3RydWN0IGRybV9jcnRjX3N0YXRlICoKK3Ztd19jcnRjX3N0YXRl X2FuZF9sb2NrKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwgc3RydWN0IGRybV9jcnRj ICpjcnRjKQoreworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKKworCWNydGNf c3RhdGUgPSBkcm1fYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7CisJaWYg KGNydGNfc3RhdGUpIHsKKwkJbG9ja2RlcF9hc3NlcnRfaGVsZCgmY3J0Yy0+bXV0ZXgubXV0ZXgu YmFzZSk7CisJfSBlbHNlIHsKKwkJaW50IHJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmNydGMtPm11 dGV4LCBzdGF0ZS0+YWNxdWlyZV9jdHgpOworCisJCWlmIChyZXQgIT0gMCAmJiByZXQgIT0gLUVB TFJFQURZKQorCQkJcmV0dXJuIEVSUl9QVFIocmV0KTsKKworCQljcnRjX3N0YXRlID0gY3J0Yy0+ c3RhdGU7CisJfQorCisJcmV0dXJuIGNydGNfc3RhdGU7Cit9CisKKy8qKgorICogdm13X2ttc19j aGVja19pbXBsaWNpdCAtIFZlcmlmeSB0aGF0IGFsbCBpbXBsaWNpdCBkaXNwbGF5IHVuaXRzIHNj YW4gb3V0CisgKiBmcm9tIHRoZSBzYW1lIGZiIGFmdGVyIHRoZSBuZXcgc3RhdGUgaXMgY29tbWl0 dGVkLgorICogQGRldjogVGhlIGRybV9kZXZpY2UuCisgKiBAc3RhdGU6IFRoZSBuZXcgc3RhdGUg dG8gYmUgY2hlY2tlZC4KKyAqCisgKiBSZXR1cm5zOgorICogICBaZXJvIG9uIHN1Y2Nlc3MsCisg KiAgIC1FSU5WQUwgb24gaW52YWxpZCBzdGF0ZSwKKyAqICAgLUVERUFETEsgaWYgbW9kZXNldCBs b2NraW5nIG5lZWRzIHRvIGJlIHJlcnVuLgorICovCitzdGF0aWMgaW50IHZtd19rbXNfY2hlY2tf aW1wbGljaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCQkgIHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICppbXBsaWNpdF9mYiA9 IE5VTEw7CisJc3RydWN0IGRybV9jcnRjICpjcnRjOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZTsKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKKworCWRy bV9mb3JfZWFjaF9jcnRjKGNydGMsIGRldikgeworCQlzdHJ1Y3Qgdm13X2Rpc3BsYXlfdW5pdCAq ZHUgPSB2bXdfY3J0Y190b19kdShjcnRjKTsKKworCQlpZiAoIWR1LT5pc19pbXBsaWNpdCkKKwkJ CWNvbnRpbnVlOworCisJCWNydGNfc3RhdGUgPSB2bXdfY3J0Y19zdGF0ZV9hbmRfbG9jayhzdGF0 ZSwgY3J0Yyk7CisJCWlmIChJU19FUlIoY3J0Y19zdGF0ZSkpCisJCQlyZXR1cm4gUFRSX0VSUihj cnRjX3N0YXRlKTsKKworCQlpZiAoIWNydGNfc3RhdGUgfHwgIWNydGNfc3RhdGUtPmVuYWJsZSkK KwkJCWNvbnRpbnVlOworCisJCS8qCisJCSAqIENhbid0IG1vdmUgcHJpbWFyeSBwbGFuZXMgYWNy b3NzIGNydGNzLCBzbyB0aGlzIGlzIE9LLgorCQkgKiBJdCBhbHNvIG1lYW5zIHdlIGRvbid0IG5l ZWQgdG8gdGFrZSB0aGUgcGxhbmUgbXV0ZXguCisJCSAqLworCQlwbGFuZV9zdGF0ZSA9IGR1LT5w cmltYXJ5LnN0YXRlOworCQlpZiAocGxhbmVfc3RhdGUtPmNydGMgIT0gY3J0YykKKwkJCWNvbnRp bnVlOworCisJCWlmICghaW1wbGljaXRfZmIpCisJCQlpbXBsaWNpdF9mYiA9IHBsYW5lX3N0YXRl LT5mYjsKKwkJZWxzZSBpZiAoaW1wbGljaXRfZmIgIT0gcGxhbmVfc3RhdGUtPmZiKQorCQkJcmV0 dXJuIC1FSU5WQUw7CisJfQorCisJcmV0dXJuIDA7Cit9CisKIC8qKgogICogdm13X2ttc19jaGVj a190b3BvbG9neSAtIFZhbGlkYXRlcyB0b3BvbG9neSBpbiBkcm1fYXRvbWljX3N0YXRlCiAgKiBA ZGV2OiBEUk0gZGV2aWNlCkBAIC0xNjgzLDYgKzE3NTIsMTAgQEAgdm13X2ttc19hdG9taWNfY2hl Y2tfbW9kZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWlmIChyZXQpCiAJCXJldHVybiBy ZXQ7CiAKKwlyZXQgPSB2bXdfa21zX2NoZWNrX2ltcGxpY2l0KGRldiwgc3RhdGUpOworCWlmIChy ZXQpCisJCXJldHVybiByZXQ7CisKIAlpZiAoIXN0YXRlLT5hbGxvd19tb2Rlc2V0KQogCQlyZXR1 cm4gcmV0OwogCkBAIC0yMjc3LDEzICsyMzUwLDcgQEAgaW50IHZtd19kdV9jb25uZWN0b3Jfc2V0 X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAJCQkJICBzdHJ1Y3Qg ZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKIAkJCQkgIHVpbnQ2NF90IHZhbCkKIHsKLQlzdHJ1Y3Qg dm13X2Rpc3BsYXlfdW5pdCAqZHUgPSB2bXdfY29ubmVjdG9yX3RvX2R1KGNvbm5lY3Rvcik7Ci0J c3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiA9IHZtd19wcml2KGNvbm5lY3Rvci0+ZGV2KTsK LQotCWlmIChwcm9wZXJ0eSA9PSBkZXZfcHJpdi0+aW1wbGljaXRfcGxhY2VtZW50X3Byb3BlcnR5 KQotCQlkdS0+aXNfaW1wbGljaXQgPSB2YWw7Ci0KLQlyZXR1cm4gMDsKKwlyZXR1cm4gLUVJTlZB TDsKIH0KIAogCkBAIC0yMzAyLDI1ICsyMzY5LDcgQEAgdm13X2R1X2Nvbm5lY3Rvcl9hdG9taWNf c2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAJCQkJICAgICBz dHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwKIAkJCQkgICAgIHVpbnQ2NF90IHZhbCkKIHsK LQlzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2ID0gdm13X3ByaXYoY29ubmVjdG9yLT5kZXYp OwotCXN0cnVjdCB2bXdfY29ubmVjdG9yX3N0YXRlICp2Y3MgPSB2bXdfY29ubmVjdG9yX3N0YXRl X3RvX3ZjcyhzdGF0ZSk7Ci0Jc3RydWN0IHZtd19kaXNwbGF5X3VuaXQgKmR1ID0gdm13X2Nvbm5l Y3Rvcl90b19kdShjb25uZWN0b3IpOwotCi0KLQlpZiAocHJvcGVydHkgPT0gZGV2X3ByaXYtPmlt cGxpY2l0X3BsYWNlbWVudF9wcm9wZXJ0eSkgewotCQl2Y3MtPmlzX2ltcGxpY2l0ID0gdmFsOwot Ci0JCS8qCi0JCSAqIFdlIHNob3VsZCByZWFsbHkgYmUgZG9pbmcgYSBkcm1fYXRvbWljX2NvbW1p dCgpIHRvCi0JCSAqIGNvbW1pdCB0aGUgbmV3IHN0YXRlLCBidXQgc2luY2UgdGhpcyBkb2Vzbid0 IGNhdXNlCi0JCSAqIGFuIGltbWVkYXRlIHN0YXRlIGNoYW5nZSwgdGhpcyBpcyBwcm9iYWJseSBv awotCQkgKi8KLQkJZHUtPmlzX2ltcGxpY2l0ID0gdmNzLT5pc19pbXBsaWNpdDsKLQl9IGVsc2Ug ewotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KLQlyZXR1cm4gMDsKKwlyZXR1cm4gLUVJTlZBTDsK IH0KIAogCkBAIC0yMzM5LDEwICsyMzg4LDkgQEAgdm13X2R1X2Nvbm5lY3Rvcl9hdG9taWNfZ2V0 X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAJCQkJICAgICB1aW50 NjRfdCAqdmFsKQogewogCXN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYgPSB2bXdfcHJpdihj b25uZWN0b3ItPmRldik7Ci0Jc3RydWN0IHZtd19jb25uZWN0b3Jfc3RhdGUgKnZjcyA9IHZtd19j b25uZWN0b3Jfc3RhdGVfdG9fdmNzKHN0YXRlKTsKIAogCWlmIChwcm9wZXJ0eSA9PSBkZXZfcHJp di0+aW1wbGljaXRfcGxhY2VtZW50X3Byb3BlcnR5KQotCQkqdmFsID0gdmNzLT5pc19pbXBsaWNp dDsKKwkJKnZhbCA9IHZtd19jb25uZWN0b3JfdG9fZHUoY29ubmVjdG9yKS0+aXNfaW1wbGljaXQ7 CiAJZWxzZSB7CiAJCURSTV9FUlJPUigiSW52YWxpZCBQcm9wZXJ0eSAlc1xuIiwgcHJvcGVydHkt Pm5hbWUpOwogCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTI3MjMsMTIwICsyNzcxLDI0IEBAIGludCB2 bXdfa21zX2ZiZGV2X2luaXRfZGF0YShzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAogCXJl dHVybiByZXQ7CiB9CiAKLS8qKgotICogdm13X2ttc19kZWxfYWN0aXZlIC0gdW5yZWdpc3RlciBh IGNydGMgYmluZGluZyB0byB0aGUgaW1wbGljaXQgZnJhbWVidWZmZXIKLSAqCi0gKiBAZGV2X3By aXY6IFBvaW50ZXIgdG8gYSBkZXZpY2UgcHJpdmF0ZSBzdHJ1Y3QuCi0gKiBAZHU6IFRoZSBkaXNw bGF5IHVuaXQgb2YgdGhlIGNydGMuCi0gKi8KLXZvaWQgdm13X2ttc19kZWxfYWN0aXZlKHN0cnVj dCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQlzdHJ1Y3Qgdm13X2Rpc3BsYXlfdW5pdCAqZHUp Ci17Ci0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmdsb2JhbF9rbXNfc3RhdGVfbXV0ZXgpOwotCWlm IChkdS0+YWN0aXZlX2ltcGxpY2l0KSB7Ci0JCWlmICgtLShkZXZfcHJpdi0+bnVtX2ltcGxpY2l0 KSA9PSAwKQotCQkJZGV2X3ByaXYtPmltcGxpY2l0X2ZiID0gTlVMTDsKLQkJZHUtPmFjdGl2ZV9p bXBsaWNpdCA9IGZhbHNlOwotCX0KLQltdXRleF91bmxvY2soJmRldl9wcml2LT5nbG9iYWxfa21z X3N0YXRlX211dGV4KTsKLX0KLQotLyoqCi0gKiB2bXdfa21zX2FkZF9hY3RpdmUgLSByZWdpc3Rl ciBhIGNydGMgYmluZGluZyB0byBhbiBpbXBsaWNpdCBmcmFtZWJ1ZmZlcgotICoKLSAqIEB2bXdf cHJpdjogUG9pbnRlciB0byBhIGRldmljZSBwcml2YXRlIHN0cnVjdC4KLSAqIEBkdTogVGhlIGRp c3BsYXkgdW5pdCBvZiB0aGUgY3J0Yy4KLSAqIEB2ZmI6IFRoZSBpbXBsaWNpdCBmcmFtZWJ1ZmZl cgotICoKLSAqIFJlZ2lzdGVycyBhIGJpbmRpbmcgdG8gYW4gaW1wbGljaXQgZnJhbWVidWZmZXIu Ci0gKi8KLXZvaWQgdm13X2ttc19hZGRfYWN0aXZlKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3By aXYsCi0JCQlzdHJ1Y3Qgdm13X2Rpc3BsYXlfdW5pdCAqZHUsCi0JCQlzdHJ1Y3Qgdm13X2ZyYW1l YnVmZmVyICp2ZmIpCi17Ci0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmdsb2JhbF9rbXNfc3RhdGVf bXV0ZXgpOwotCVdBUk5fT05fT05DRSghZGV2X3ByaXYtPm51bV9pbXBsaWNpdCAmJiBkZXZfcHJp di0+aW1wbGljaXRfZmIpOwotCi0JaWYgKCFkdS0+YWN0aXZlX2ltcGxpY2l0ICYmIGR1LT5pc19p bXBsaWNpdCkgewotCQlkZXZfcHJpdi0+aW1wbGljaXRfZmIgPSB2ZmI7Ci0JCWR1LT5hY3RpdmVf aW1wbGljaXQgPSB0cnVlOwotCQlkZXZfcHJpdi0+bnVtX2ltcGxpY2l0Kys7Ci0JfQotCW11dGV4 X3VubG9jaygmZGV2X3ByaXYtPmdsb2JhbF9rbXNfc3RhdGVfbXV0ZXgpOwotfQotCi0vKioKLSAq IHZtd19rbXNfc2NyZWVuX29iamVjdF9mbGlwcGFibGUgLSBDaGVjayB3aGV0aGVyIHdlIGNhbiBw YWdlLWZsaXAgYSBjcnRjLgotICoKLSAqIEBkZXZfcHJpdjogUG9pbnRlciB0byBkZXZpY2UtcHJp dmF0ZSBzdHJ1Y3QuCi0gKiBAY3J0YzogVGhlIGNydGMgd2Ugd2FudCB0byBmbGlwLgotICoKLSAq IFJldHVybnMgdHJ1ZSBvciBmYWxzZSBkZXBlbmRpbmcgd2hldGhlciBpdCdzIE9LIHRvIGZsaXAg dGhpcyBjcnRjCi0gKiBiYXNlZCBvbiB0aGUgY3JpdGVyaW9uIHRoYXQgd2UgbXVzdCBub3QgaGF2 ZSBtb3JlIHRoYW4gb25lIGltcGxpY2l0Ci0gKiBmcmFtZS1idWZmZXIgYXQgYW55IG9uZSB0aW1l LgotICovCi1ib29sIHZtd19rbXNfY3J0Y19mbGlwcGFibGUoc3RydWN0IHZtd19wcml2YXRlICpk ZXZfcHJpdiwKLQkJCSAgICBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCi17Ci0Jc3RydWN0IHZtd19k aXNwbGF5X3VuaXQgKmR1ID0gdm13X2NydGNfdG9fZHUoY3J0Yyk7Ci0JYm9vbCByZXQ7Ci0KLQlt dXRleF9sb2NrKCZkZXZfcHJpdi0+Z2xvYmFsX2ttc19zdGF0ZV9tdXRleCk7Ci0JcmV0ID0gIWR1 LT5pc19pbXBsaWNpdCB8fCBkZXZfcHJpdi0+bnVtX2ltcGxpY2l0ID09IDE7Ci0JbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+Z2xvYmFsX2ttc19zdGF0ZV9tdXRleCk7Ci0KLQlyZXR1cm4gcmV0Owot fQotCi0vKioKLSAqIHZtd19rbXNfdXBkYXRlX2ltcGxpY2l0X2ZiIC0gVXBkYXRlIHRoZSBpbXBs aWNpdCBmYi4KLSAqCi0gKiBAZGV2X3ByaXY6IFBvaW50ZXIgdG8gZGV2aWNlLXByaXZhdGUgc3Ry dWN0LgotICogQGNydGM6IFRoZSBjcnRjIHRoZSBuZXcgaW1wbGljaXQgZnJhbWUtYnVmZmVyIGlz IGJvdW5kIHRvLgotICovCi12b2lkIHZtd19rbXNfdXBkYXRlX2ltcGxpY2l0X2ZiKHN0cnVjdCB2 bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkJc3RydWN0IGRybV9jcnRjICpjcnRjKQotewotCXN0 cnVjdCB2bXdfZGlzcGxheV91bml0ICpkdSA9IHZtd19jcnRjX3RvX2R1KGNydGMpOwotCXN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lID0gY3J0Yy0+cHJpbWFyeTsKLQlzdHJ1Y3Qgdm13X2ZyYW1lYnVm ZmVyICp2ZmI7Ci0KLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+Z2xvYmFsX2ttc19zdGF0ZV9tdXRl eCk7Ci0KLQlpZiAoIWR1LT5pc19pbXBsaWNpdCkKLQkJZ290byBvdXRfdW5sb2NrOwotCi0JdmZi ID0gdm13X2ZyYW1lYnVmZmVyX3RvX3ZmYihwbGFuZS0+c3RhdGUtPmZiKTsKLQlXQVJOX09OX09O Q0UoZGV2X3ByaXYtPm51bV9pbXBsaWNpdCAhPSAxICYmCi0JCSAgICAgZGV2X3ByaXYtPmltcGxp Y2l0X2ZiICE9IHZmYik7Ci0KLQlkZXZfcHJpdi0+aW1wbGljaXRfZmIgPSB2ZmI7Ci1vdXRfdW5s b2NrOgotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmdsb2JhbF9rbXNfc3RhdGVfbXV0ZXgpOwot fQotCiAvKioKICAqIHZtd19rbXNfY3JlYXRlX2ltcGxpY2l0X3BsYWNlbWVudF9wcm9wYXJ0eSAt IFNldCB1cCB0aGUgaW1wbGljaXQgcGxhY2VtZW50CiAgKiBwcm9wZXJ0eS4KICAqCiAgKiBAZGV2 X3ByaXY6IFBvaW50ZXIgdG8gYSBkZXZpY2UgcHJpdmF0ZSBzdHJ1Y3QuCi0gKiBAaW1tdXRhYmxl OiBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBpcyBpbW11dGFibGUuCiAgKgogICogU2V0cyB1cCB0aGUg aW1wbGljaXQgcGxhY2VtZW50IHByb3BlcnR5IHVubGVzcyBpdCdzIGFscmVhZHkgc2V0IHVwLgog ICovCiB2b2lkCi12bXdfa21zX2NyZWF0ZV9pbXBsaWNpdF9wbGFjZW1lbnRfcHJvcGVydHkoc3Ry dWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKLQkJCQkJICAgYm9vbCBpbW11dGFibGUpCit2bXdf a21zX2NyZWF0ZV9pbXBsaWNpdF9wbGFjZW1lbnRfcHJvcGVydHkoc3RydWN0IHZtd19wcml2YXRl ICpkZXZfcHJpdikKIHsKIAlpZiAoZGV2X3ByaXYtPmltcGxpY2l0X3BsYWNlbWVudF9wcm9wZXJ0 eSkKIAkJcmV0dXJuOwogCiAJZGV2X3ByaXYtPmltcGxpY2l0X3BsYWNlbWVudF9wcm9wZXJ0eSA9 CiAJCWRybV9wcm9wZXJ0eV9jcmVhdGVfcmFuZ2UoZGV2X3ByaXYtPmRldiwKLQkJCQkJICBpbW11 dGFibGUgPwotCQkJCQkgIERSTV9NT0RFX1BST1BfSU1NVVRBQkxFIDogMCwKKwkJCQkJICBEUk1f TU9ERV9QUk9QX0lNTVVUQUJMRSwKIAkJCQkJICAiaW1wbGljaXRfcGxhY2VtZW50IiwgMCwgMSk7 Ci0KIH0KIAogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9rbXMu aCBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ttcy5oCmluZGV4IDc2ZWM1NzBjMDY4 NC4uOTc5MDU2MzMwMjY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dm eF9rbXMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9rbXMuaApAQCAtMTkx LDggKzE5MSw2IEBAIHN0cnVjdCB2bXdfcGxhbmVfc3RhdGUgewogc3RydWN0IHZtd19jb25uZWN0 b3Jfc3RhdGUgewogCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlIGJhc2U7CiAKLQlib29sIGlz X2ltcGxpY2l0OwotCiAJLyoqCiAJICogQGd1aV94OgogCSAqCkBAIC0yNTQsNyArMjUyLDYgQEAg c3RydWN0IHZtd19kaXNwbGF5X3VuaXQgewogCWludCBndWlfeDsKIAlpbnQgZ3VpX3k7CiAJYm9v bCBpc19pbXBsaWNpdDsKLQlib29sIGFjdGl2ZV9pbXBsaWNpdDsKIAlpbnQgc2V0X2d1aV94Owog CWludCBzZXRfZ3VpX3k7CiB9OwpAQCAtMzM0LDE3ICszMzEsOCBAQCBpbnQgdm13X2ttc19mYmRl dl9pbml0X2RhdGEoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKIAkJCSAgICBzdHJ1Y3Qg ZHJtX2NydGMgKipwX2NydGMsCiAJCQkgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKipwX21v ZGUpOwogdm9pZCB2bXdfZ3Vlc3NfbW9kZV90aW1pbmcoc3RydWN0IGRybV9kaXNwbGF5X21vZGUg Km1vZGUpOwotdm9pZCB2bXdfa21zX2RlbF9hY3RpdmUoc3RydWN0IHZtd19wcml2YXRlICpkZXZf cHJpdiwKLQkJCXN0cnVjdCB2bXdfZGlzcGxheV91bml0ICpkdSk7Ci12b2lkIHZtd19rbXNfYWRk X2FjdGl2ZShzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAotCQkJc3RydWN0IHZtd19kaXNw bGF5X3VuaXQgKmR1LAotCQkJc3RydWN0IHZtd19mcmFtZWJ1ZmZlciAqdmZiKTsKLWJvb2wgdm13 X2ttc19jcnRjX2ZsaXBwYWJsZShzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAotCQkJICAg IHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Ci12b2lkIHZtd19rbXNfdXBkYXRlX2ltcGxpY2l0X2Zi KHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkJc3RydWN0IGRybV9jcnRjICpjcnRj KTsKLXZvaWQgdm13X2ttc19jcmVhdGVfaW1wbGljaXRfcGxhY2VtZW50X3Byb3BlcnR5KHN0cnVj dCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkJCQlib29sIGltbXV0YWJsZSk7Cit2b2lkIHZt d19rbXNfdXBkYXRlX2ltcGxpY2l0X2ZiKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYpOwor dm9pZCB2bXdfa21zX2NyZWF0ZV9pbXBsaWNpdF9wbGFjZW1lbnRfcHJvcGVydHkoc3RydWN0IHZt d19wcml2YXRlICpkZXZfcHJpdik7CiAKIC8qIFVuaXZlcnNhbCBQbGFuZSBIZWxwZXJzICovCiB2 b2lkIHZtd19kdV9wcmltYXJ5X3BsYW5lX2Rlc3Ryb3koc3RydWN0IGRybV9wbGFuZSAqcGxhbmUp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfbGR1LmMgYi9kcml2 ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9sZHUuYwppbmRleCA3MjM1NzgxMTcxOTEuLjU1OGJj OGNmMTUxMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfbGR1LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfbGR1LmMKQEAgLTQxNyw3ICs0MTcs NiBAQCBzdGF0aWMgaW50IHZtd19sZHVfaW5pdChzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2 LCB1bnNpZ25lZCB1bml0KQogCiAJZHJtX3BsYW5lX2hlbHBlcl9hZGQoY3Vyc29yLCAmdm13X2xk dV9jdXJzb3JfcGxhbmVfaGVscGVyX2Z1bmNzKTsKIAotCiAJdm13X2R1X2Nvbm5lY3Rvcl9yZXNl dChjb25uZWN0b3IpOwogCXJldCA9IGRybV9jb25uZWN0b3JfaW5pdChkZXYsIGNvbm5lY3Rvciwg JnZtd19sZWdhY3lfY29ubmVjdG9yX2Z1bmNzLAogCQkJCSBEUk1fTU9ERV9DT05ORUNUT1JfVklS VFVBTCk7CkBAIC00MjgsOCArNDI3LDYgQEAgc3RhdGljIGludCB2bXdfbGR1X2luaXQoc3RydWN0 IHZtd19wcml2YXRlICpkZXZfcHJpdiwgdW5zaWduZWQgdW5pdCkKIAogCWRybV9jb25uZWN0b3Jf aGVscGVyX2FkZChjb25uZWN0b3IsICZ2bXdfbGR1X2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MpOwog CWNvbm5lY3Rvci0+c3RhdHVzID0gdm13X2R1X2Nvbm5lY3Rvcl9kZXRlY3QoY29ubmVjdG9yLCB0 cnVlKTsKLQl2bXdfY29ubmVjdG9yX3N0YXRlX3RvX3Zjcyhjb25uZWN0b3ItPnN0YXRlKS0+aXNf aW1wbGljaXQgPSB0cnVlOwotCiAKIAlyZXQgPSBkcm1fZW5jb2Rlcl9pbml0KGRldiwgZW5jb2Rl ciwgJnZtd19sZWdhY3lfZW5jb2Rlcl9mdW5jcywKIAkJCSAgICAgICBEUk1fTU9ERV9FTkNPREVS X1ZJUlRVQUwsIE5VTEwpOwpAQCAtNDQ4LDcgKzQ0NSw2IEBAIHN0YXRpYyBpbnQgdm13X2xkdV9p bml0KHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsIHVuc2lnbmVkIHVuaXQpCiAJCWdvdG8g ZXJyX2ZyZWVfZW5jb2RlcjsKIAl9CiAKLQogCXZtd19kdV9jcnRjX3Jlc2V0KGNydGMpOwogCXJl dCA9IGRybV9jcnRjX2luaXRfd2l0aF9wbGFuZXMoZGV2LCBjcnRjLCAmbGR1LT5iYXNlLnByaW1h cnksCiAJCQkJCSZsZHUtPmJhc2UuY3Vyc29yLApAQCAtNTE0LDcgKzUxMCw3IEBAIGludCB2bXdf a21zX2xkdV9pbml0X2Rpc3BsYXkoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdikKIAlpZiAo cmV0ICE9IDApCiAJCWdvdG8gZXJyX2ZyZWU7CiAKLQl2bXdfa21zX2NyZWF0ZV9pbXBsaWNpdF9w bGFjZW1lbnRfcHJvcGVydHkoZGV2X3ByaXYsIHRydWUpOworCXZtd19rbXNfY3JlYXRlX2ltcGxp Y2l0X3BsYWNlbWVudF9wcm9wZXJ0eShkZXZfcHJpdik7CiAKIAlpZiAoZGV2X3ByaXYtPmNhcGFi aWxpdGllcyAmIFNWR0FfQ0FQX01VTFRJTU9OKQogCQlmb3IgKGkgPSAwOyBpIDwgVk1XR0ZYX05V TV9ESVNQTEFZX1VOSVRTOyArK2kpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4 L3Ztd2dmeF9zY3JuLmMgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9zY3JuLmMKaW5k ZXggNTMzMTZiMWJkYTNkLi5kY2FiMmVjYWVlY2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS92bXdnZngvdm13Z2Z4X3Njcm4uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dm eF9zY3JuLmMKQEAgLTI0MSwyOCArMjQxLDIwIEBAIHN0YXRpYyB2b2lkIHZtd19zb3VfY3J0Y19t b2RlX3NldF9ub2ZiKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAkJc291LT5idWZmZXIgPSB2cHMt PmJvOwogCQlzb3UtPmJ1ZmZlcl9zaXplID0gdnBzLT5ib19zaXplOwogCi0JCWlmIChzb3UtPmJh c2UuaXNfaW1wbGljaXQpIHsKLQkJCXggPSBjcnRjLT54OwotCQkJeSA9IGNydGMtPnk7Ci0JCX0g ZWxzZSB7Ci0JCQljb25uX3N0YXRlID0gc291LT5iYXNlLmNvbm5lY3Rvci5zdGF0ZTsKLQkJCXZt d19jb25uX3N0YXRlID0gdm13X2Nvbm5lY3Rvcl9zdGF0ZV90b192Y3MoY29ubl9zdGF0ZSk7Ci0K LQkJCXggPSB2bXdfY29ubl9zdGF0ZS0+Z3VpX3g7Ci0JCQl5ID0gdm13X2Nvbm5fc3RhdGUtPmd1 aV95OwotCQl9CisJCWNvbm5fc3RhdGUgPSBzb3UtPmJhc2UuY29ubmVjdG9yLnN0YXRlOworCQl2 bXdfY29ubl9zdGF0ZSA9IHZtd19jb25uZWN0b3Jfc3RhdGVfdG9fdmNzKGNvbm5fc3RhdGUpOwor CisJCXggPSB2bXdfY29ubl9zdGF0ZS0+Z3VpX3g7CisJCXkgPSB2bXdfY29ubl9zdGF0ZS0+Z3Vp X3k7CiAKIAkJcmV0ID0gdm13X3NvdV9maWZvX2NyZWF0ZShkZXZfcHJpdiwgc291LCB4LCB5LCAm Y3J0Yy0+bW9kZSk7CiAJCWlmIChyZXQpCiAJCQlEUk1fRVJST1IoIkZhaWxlZCB0byBkZWZpbmUg U2NyZWVuIE9iamVjdCAlZHglZFxuIiwKIAkJCQkgIGNydGMtPngsIGNydGMtPnkpOwogCi0JCXZt d19rbXNfYWRkX2FjdGl2ZShkZXZfcHJpdiwgJnNvdS0+YmFzZSwgdmZiKTsKIAl9IGVsc2Ugewog CQlzb3UtPmJ1ZmZlciA9IE5VTEw7CiAJCXNvdS0+YnVmZmVyX3NpemUgPSAwOwotCi0JCXZtd19r bXNfZGVsX2FjdGl2ZShkZXZfcHJpdiwgJnNvdS0+YmFzZSk7CiAJfQogfQogCkBAIC0zMjMsMjEg KzMxNSwxNCBAQCBzdGF0aWMgaW50IHZtd19zb3VfY3J0Y19wYWdlX2ZsaXAoc3RydWN0IGRybV9j cnRjICpjcnRjLAogCQkJCSAgdWludDMyX3QgZmxhZ3MsCiAJCQkJICBzdHJ1Y3QgZHJtX21vZGVz ZXRfYWNxdWlyZV9jdHggKmN0eCkKIHsKLQlzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2ID0g dm13X3ByaXYoY3J0Yy0+ZGV2KTsKIAlpbnQgcmV0OwogCi0JaWYgKCF2bXdfa21zX2NydGNfZmxp cHBhYmxlKGRldl9wcml2LCBjcnRjKSkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KIAlyZXQgPSBkcm1f YXRvbWljX2hlbHBlcl9wYWdlX2ZsaXAoY3J0YywgbmV3X2ZiLCBldmVudCwgZmxhZ3MsIGN0eCk7 CiAJaWYgKHJldCkgewogCQlEUk1fRVJST1IoIlBhZ2UgZmxpcCBlcnJvciAlZC5cbiIsIHJldCk7 CiAJCXJldHVybiByZXQ7CiAJfQogCi0JaWYgKHZtd19jcnRjX3RvX2R1KGNydGMpLT5pc19pbXBs aWNpdCkKLQkJdm13X2ttc191cGRhdGVfaW1wbGljaXRfZmIoZGV2X3ByaXYsIGNydGMpOwotCiAJ cmV0dXJuIHJldDsKIH0KIApAQCAtNjQwLDcgKzYyNSw2IEBAIHN0YXRpYyBpbnQgdm13X3NvdV9p bml0KHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsIHVuc2lnbmVkIHVuaXQpCiAJcHJpbWFy eSA9ICZzb3UtPmJhc2UucHJpbWFyeTsKIAljdXJzb3IgPSAmc291LT5iYXNlLmN1cnNvcjsKIAot CXNvdS0+YmFzZS5hY3RpdmVfaW1wbGljaXQgPSBmYWxzZTsKIAlzb3UtPmJhc2UucHJlZl9hY3Rp dmUgPSAodW5pdCA9PSAwKTsKIAlzb3UtPmJhc2UucHJlZl93aWR0aCA9IGRldl9wcml2LT5pbml0 aWFsX3dpZHRoOwogCXNvdS0+YmFzZS5wcmVmX2hlaWdodCA9IGRldl9wcml2LT5pbml0aWFsX2hl aWdodDsKQEAgLTY5Myw4ICs2NzcsNiBAQCBzdGF0aWMgaW50IHZtd19zb3VfaW5pdChzdHJ1Y3Qg dm13X3ByaXZhdGUgKmRldl9wcml2LCB1bnNpZ25lZCB1bml0KQogCiAJZHJtX2Nvbm5lY3Rvcl9o ZWxwZXJfYWRkKGNvbm5lY3RvciwgJnZtd19zb3VfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyk7CiAJ Y29ubmVjdG9yLT5zdGF0dXMgPSB2bXdfZHVfY29ubmVjdG9yX2RldGVjdChjb25uZWN0b3IsIHRy dWUpOwotCXZtd19jb25uZWN0b3Jfc3RhdGVfdG9fdmNzKGNvbm5lY3Rvci0+c3RhdGUpLT5pc19p bXBsaWNpdCA9IGZhbHNlOwotCiAKIAlyZXQgPSBkcm1fZW5jb2Rlcl9pbml0KGRldiwgZW5jb2Rl ciwgJnZtd19zY3JlZW5fb2JqZWN0X2VuY29kZXJfZnVuY3MsCiAJCQkgICAgICAgRFJNX01PREVf RU5DT0RFUl9WSVJUVUFMLCBOVUxMKTsKQEAgLTczMywxMiArNzE1LDYgQEAgc3RhdGljIGludCB2 bXdfc291X2luaXQoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwgdW5zaWduZWQgdW5pdCkK IAkJCQkgICBkZXYtPm1vZGVfY29uZmlnLnN1Z2dlc3RlZF94X3Byb3BlcnR5LCAwKTsKIAlkcm1f b2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY29ubmVjdG9yLT5iYXNlLAogCQkJCSAgIGRldi0+bW9k ZV9jb25maWcuc3VnZ2VzdGVkX3lfcHJvcGVydHksIDApOwotCWlmIChkZXZfcHJpdi0+aW1wbGlj aXRfcGxhY2VtZW50X3Byb3BlcnR5KQotCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eQotCQkJ KCZjb25uZWN0b3ItPmJhc2UsCi0JCQkgZGV2X3ByaXYtPmltcGxpY2l0X3BsYWNlbWVudF9wcm9w ZXJ0eSwKLQkJCSBzb3UtPmJhc2UuaXNfaW1wbGljaXQpOwotCiAJcmV0dXJuIDA7CiAKIGVycl9m cmVlX3VucmVnaXN0ZXI6CkBAIC03NjQsMTUgKzc0MCwxMSBAQCBpbnQgdm13X2ttc19zb3VfaW5p dF9kaXNwbGF5KHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJfQogCiAJcmV0ID0gLUVO T01FTTsKLQlkZXZfcHJpdi0+bnVtX2ltcGxpY2l0ID0gMDsKLQlkZXZfcHJpdi0+aW1wbGljaXRf ZmIgPSBOVUxMOwogCiAJcmV0ID0gZHJtX3ZibGFua19pbml0KGRldiwgVk1XR0ZYX05VTV9ESVNQ TEFZX1VOSVRTKTsKIAlpZiAodW5saWtlbHkocmV0ICE9IDApKQogCQlyZXR1cm4gcmV0OwogCi0J dm13X2ttc19jcmVhdGVfaW1wbGljaXRfcGxhY2VtZW50X3Byb3BlcnR5KGRldl9wcml2LCBmYWxz ZSk7Ci0KIAlmb3IgKGkgPSAwOyBpIDwgVk1XR0ZYX05VTV9ESVNQTEFZX1VOSVRTOyArK2kpCiAJ CXZtd19zb3VfaW5pdChkZXZfcHJpdiwgaSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS92bXdnZngvdm13Z2Z4X3N0ZHUuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3N0 ZHUuYwppbmRleCBkM2E5ZWJhMTJiMGUuLmUwYTcyNzUyNTRlNSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfc3RkdS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdn Zngvdm13Z2Z4X3N0ZHUuYwpAQCAtMzk2LDEzICszOTYsOCBAQCBzdGF0aWMgdm9pZCB2bXdfc3Rk dV9jcnRjX21vZGVfc2V0X25vZmIoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCWlmICghY3J0Yy0+ c3RhdGUtPmVuYWJsZSkKIAkJcmV0dXJuOwogCi0JaWYgKHN0ZHUtPmJhc2UuaXNfaW1wbGljaXQp IHsKLQkJeCA9IGNydGMtPng7Ci0JCXkgPSBjcnRjLT55OwotCX0gZWxzZSB7Ci0JCXggPSB2bXdf Y29ubl9zdGF0ZS0+Z3VpX3g7Ci0JCXkgPSB2bXdfY29ubl9zdGF0ZS0+Z3VpX3k7Ci0JfQorCXgg PSB2bXdfY29ubl9zdGF0ZS0+Z3VpX3g7CisJeSA9IHZtd19jb25uX3N0YXRlLT5ndWlfeTsKIAog CXZtd19zdmdhX2VuYWJsZShkZXZfcHJpdik7CiAJcmV0ID0gdm13X3N0ZHVfZGVmaW5lX3N0KGRl dl9wcml2LCBzdGR1LCAmY3J0Yy0+bW9kZSwgeCwgeSk7CkBAIC00MTcsMjcgKzQxMiw5IEBAIHN0 YXRpYyB2b2lkIHZtd19zdGR1X2NydGNfaGVscGVyX3ByZXBhcmUoc3RydWN0IGRybV9jcnRjICpj cnRjKQogewogfQogCi0KIHN0YXRpYyB2b2lkIHZtd19zdGR1X2NydGNfYXRvbWljX2VuYWJsZShz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQkJCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX3N0 YXRlKQogewotCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlID0gY3J0Yy0+cHJp bWFyeS0+c3RhdGU7Ci0Jc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdjsKLQlzdHJ1Y3Qgdm13 X3NjcmVlbl90YXJnZXRfZGlzcGxheV91bml0ICpzdGR1OwotCXN0cnVjdCB2bXdfZnJhbWVidWZm ZXIgKnZmYjsKLQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsKLQotCi0Jc3RkdSAgICAgPSB2 bXdfY3J0Y190b19zdGR1KGNydGMpOwotCWRldl9wcml2ID0gdm13X3ByaXYoY3J0Yy0+ZGV2KTsK LQlmYiAgICAgICA9IHBsYW5lX3N0YXRlLT5mYjsKLQotCXZmYiA9IChmYikgPyB2bXdfZnJhbWVi dWZmZXJfdG9fdmZiKGZiKSA6IE5VTEw7Ci0KLQlpZiAodmZiKQotCQl2bXdfa21zX2FkZF9hY3Rp dmUoZGV2X3ByaXYsICZzdGR1LT5iYXNlLCB2ZmIpOwotCWVsc2UKLQkJdm13X2ttc19kZWxfYWN0 aXZlKGRldl9wcml2LCAmc3RkdS0+YmFzZSk7CiB9CiAKIHN0YXRpYyB2b2lkIHZtd19zdGR1X2Ny dGNfYXRvbWljX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLApAQCAtNDk3LDExICs0NzQs MTAgQEAgc3RhdGljIGludCB2bXdfc3RkdV9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCiAJCQkJICAgc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4ICpjdHgpCiAKIHsK LQlzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2ID0gdm13X3ByaXYoY3J0Yy0+ZGV2KTsKIAlz dHJ1Y3Qgdm13X3NjcmVlbl90YXJnZXRfZGlzcGxheV91bml0ICpzdGR1ID0gdm13X2NydGNfdG9f c3RkdShjcnRjKTsKIAlpbnQgcmV0OwogCi0JaWYgKCFzdGR1LT5kZWZpbmVkIHx8ICF2bXdfa21z X2NydGNfZmxpcHBhYmxlKGRldl9wcml2LCBjcnRjKSkKKwlpZiAoIXN0ZHUtPmRlZmluZWQpCiAJ CXJldHVybiAtRUlOVkFMOwogCiAJcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfcGFnZV9mbGlwKGNy dGMsIG5ld19mYiwgZXZlbnQsIGZsYWdzLCBjdHgpOwpAQCAtMTQ1NywxMSArMTQzMyw2IEBAIHN0 YXRpYyBpbnQgdm13X3N0ZHVfaW5pdChzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LCB1bnNp Z25lZCB1bml0KQogCXN0ZHUtPmJhc2UucHJlZl9hY3RpdmUgPSAodW5pdCA9PSAwKTsKIAlzdGR1 LT5iYXNlLnByZWZfd2lkdGggID0gZGV2X3ByaXYtPmluaXRpYWxfd2lkdGg7CiAJc3RkdS0+YmFz ZS5wcmVmX2hlaWdodCA9IGRldl9wcml2LT5pbml0aWFsX2hlaWdodDsKLQotCS8qCi0JICogUmVt b3ZlIHRoaXMgYWZ0ZXIgZW5hYmxpbmcgYXRvbWljIGJlY2F1c2UgcHJvcGVydHkgdmFsdWVzIGNh bgotCSAqIG9ubHkgZXhpc3QgaW4gYSBzdGF0ZSBvYmplY3QKLQkgKi8KIAlzdGR1LT5iYXNlLmlz X2ltcGxpY2l0ID0gZmFsc2U7CiAKIAkvKiBJbml0aWFsaXplIHByaW1hcnkgcGxhbmUgKi8KQEAg LTE1MDYsNyArMTQ3Nyw2IEBAIHN0YXRpYyBpbnQgdm13X3N0ZHVfaW5pdChzdHJ1Y3Qgdm13X3By aXZhdGUgKmRldl9wcml2LCB1bnNpZ25lZCB1bml0KQogCiAJZHJtX2Nvbm5lY3Rvcl9oZWxwZXJf YWRkKGNvbm5lY3RvciwgJnZtd19zdGR1X2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MpOwogCWNvbm5l Y3Rvci0+c3RhdHVzID0gdm13X2R1X2Nvbm5lY3Rvcl9kZXRlY3QoY29ubmVjdG9yLCBmYWxzZSk7 Ci0Jdm13X2Nvbm5lY3Rvcl9zdGF0ZV90b192Y3MoY29ubmVjdG9yLT5zdGF0ZSktPmlzX2ltcGxp Y2l0ID0gZmFsc2U7CiAKIAlyZXQgPSBkcm1fZW5jb2Rlcl9pbml0KGRldiwgZW5jb2RlciwgJnZt d19zdGR1X2VuY29kZXJfZnVuY3MsCiAJCQkgICAgICAgRFJNX01PREVfRU5DT0RFUl9WSVJUVUFM LCBOVUxMKTsKQEAgLTE1NDQsMTEgKzE1MTQsNiBAQCBzdGF0aWMgaW50IHZtd19zdGR1X2luaXQo c3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwgdW5zaWduZWQgdW5pdCkKIAkJCQkgICBkZXYt Pm1vZGVfY29uZmlnLnN1Z2dlc3RlZF94X3Byb3BlcnR5LCAwKTsKIAlkcm1fb2JqZWN0X2F0dGFj aF9wcm9wZXJ0eSgmY29ubmVjdG9yLT5iYXNlLAogCQkJCSAgIGRldi0+bW9kZV9jb25maWcuc3Vn Z2VzdGVkX3lfcHJvcGVydHksIDApOwotCWlmIChkZXZfcHJpdi0+aW1wbGljaXRfcGxhY2VtZW50 X3Byb3BlcnR5KQotCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eQotCQkJKCZjb25uZWN0b3It PmJhc2UsCi0JCQkgZGV2X3ByaXYtPmltcGxpY2l0X3BsYWNlbWVudF9wcm9wZXJ0eSwKLQkJCSBz dGR1LT5iYXNlLmlzX2ltcGxpY2l0KTsKIAlyZXR1cm4gMDsKIAogZXJyX2ZyZWVfdW5yZWdpc3Rl cjoKQEAgLTE2NDIsOCArMTYwNyw2IEBAIGludCB2bXdfa21zX3N0ZHVfaW5pdF9kaXNwbGF5KHN0 cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWRldi0+bW9kZV9jb25maWcubWF4X2hlaWdo dCA9IDgxOTI7CiAJfQogCi0Jdm13X2ttc19jcmVhdGVfaW1wbGljaXRfcGxhY2VtZW50X3Byb3Bl cnR5KGRldl9wcml2LCBmYWxzZSk7Ci0KIAlmb3IgKGkgPSAwOyBpIDwgVk1XR0ZYX05VTV9ESVNQ TEFZX1VOSVRTOyArK2kpIHsKIAkJcmV0ID0gdm13X3N0ZHVfaW5pdChkZXZfcHJpdiwgaSk7CiAK LS0gCjIuMTQuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs Cg==