From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sonika Jindal Subject: [PATCH 3/3] drm/i915/skl: Support for 90/270 rotation Date: Thu, 5 Mar 2015 14:51:28 +0530 Message-ID: <1425547288-16131-3-git-send-email-sonika.jindal@intel.com> References: <1425547288-16131-1-git-send-email-sonika.jindal@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id D76086E77E for ; Thu, 5 Mar 2015 01:29:23 -0800 (PST) In-Reply-To: <1425547288-16131-1-git-send-email-sonika.jindal@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 djI6IE1vdmluZyBjcmVhdGlvbiBvZiBwcm9wZXJ0eSBpbiBhIGZ1bmN0aW9uLCBjaGVja2luZyBm b3IgOTAvMjcwCnJvdGF0aW9uIHNpbXVsdGFuZW91c2x5IChDaHJpcykKTGV0dGluZyBwcmltYXJ5 IHBsYW5lIHRvIGJlIHBvc2l0aW9uZWQKdjM6IEFkZGluZyBpZi9lbHNlIGZvciA5MC8yNzAgYW5k IHJlc3QgcGFyYW1zIHByb2dyYW1taW5nLCBhZGRpbmcgY2hlY2sgZm9yCnBpeGVsX2Zvcm1hdCwg c29tZSBjbGVhbnVwIChyZXZpZXcgY29tbWVudHMpCnY0OiBBZGRpbmcgcmlnaHQgcGl4ZWxfZm9y bWF0cywgdXNpbmcgc3JjXyogcGFyYW1zIGluc3RlYWQgb2YgY3J0Y18qIGZvciBvZmZzZXQKYW5k IHNpemUgcHJvZ3JhbW1pbmcgKFZpbGxlKQp2NTogUmViYXNlZCBvbiAtbmlnaHRseSBhbmQgVHZy dGtvJ3Mgc2VyaWVzIGZvciBndHQgcmVtYXBwaW5nLgoKU2lnbmVkLW9mZi1ieTogU29uaWthIEpp bmRhbCA8c29uaWthLmppbmRhbEBpbnRlbC5jb20+Ci0tLQogUGxlYXNlIG5vdGUgdGhhdCB0aGlz IGlzIG9uIHRvcCBvZiBUdnJ0a28ncyBwYXRjaGVzIGZvciByb3RhdGVkIGd0dCByZW1hcHBpbmcK IHRpdGxlZDogW1BBVENIIHYyIDAvOF0gU2t5bGFrZSA5MC8yNzAgZGlzcGxheSByb3RhdGlvbgot LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICB8ICAgIDIgKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgIDEwNSArKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAg ICA1ICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgfCAgIDUyICsrKysr KysrKysrKy0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDEyOCBpbnNlcnRpb25zKCspLCAzNiBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAppbmRleCA1NmI5N2M0Li44NzBlMDc2IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKQEAgLTQ4MjUsNyArNDgyNSw5IEBAIGVudW0gc2tsX2Rp c3BfcG93ZXJfd2VsbHMgewogI2RlZmluZSAgIFBMQU5FX0NUTF9BTFBIQV9IV19QUkVNVUxUSVBM WQkoICAzIDw8IDQpCiAjZGVmaW5lICAgUExBTkVfQ1RMX1JPVEFURV9NQVNLCQkJMHgzCiAjZGVm aW5lICAgUExBTkVfQ1RMX1JPVEFURV8wCQkJMHgwCisjZGVmaW5lICAgUExBTkVfQ1RMX1JPVEFU RV85MAkJCTB4MQogI2RlZmluZSAgIFBMQU5FX0NUTF9ST1RBVEVfMTgwCQkJMHgyCisjZGVmaW5l ICAgUExBTkVfQ1RMX1JPVEFURV8yNzAJCQkweDMKICNkZWZpbmUgX1BMQU5FX1NUUklERV8xX0EJ CQkweDcwMTg4CiAjZGVmaW5lIF9QTEFORV9TVFJJREVfMl9BCQkJMHg3MDI4OAogI2RlZmluZSBf UExBTkVfU1RSSURFXzNfQQkJCTB4NzAzODgKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku YwppbmRleCBhZmRjMTAxLi45Mzg3YmEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCkBAIC0yMTg5LDExICsyMTg5LDExIEBAIHN0YXRpYyBib29sIG5lZWRfdnRkX3dhKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCiAJcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgaW50Cit1bnNp Z25lZCBpbnQKIGludGVsX3RpbGVfaGVpZ2h0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVpbnQz Ml90IGJpdHNfcGVyX3BpeGVsLAogCQkgIHVpbnQ2NF90IGZiX2Zvcm1hdF9tb2RpZmllcikKIHsK LQlpbnQgdGlsZV9oZWlnaHQ7CisJdW5zaWduZWQgaW50IHRpbGVfaGVpZ2h0OwogCiAJc3dpdGNo IChmYl9mb3JtYXRfbW9kaWZpZXIpIHsKIAljYXNlIERSTV9GT1JNQVRfTU9EX05PTkU6CkBAIC0y MjQwLDcgKzIyNDAsNyBAQCBpbnRlbF9mYl9hbGlnbl9oZWlnaHQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgaW50IGhlaWdodCwgdWludDMyX3QgcGl4ZWxfZm9ybWF0LAogewogCXVpbnQzMl90IGJp dHNfcGVyX3BpeGVsID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAocGl4ZWxfZm9ybWF0LCAwKSAqIDg7 CiAKLQlyZXR1cm4gQUxJR04oaGVpZ2h0LCBpbnRlbF9mYl90aWxlX2hlaWdodChkZXYsIGJpdHNf cGVyX3BpeGVsLAorCXJldHVybiBBTElHTihoZWlnaHQsIGludGVsX3RpbGVfaGVpZ2h0KGRldiwg Yml0c19wZXJfcGl4ZWwsCiAJCQkJCQkgIGZiX2Zvcm1hdF9tb2RpZmllcikpOwogfQogCkBAIC0y MzgwLDYgKzIzODAsMjggQEAgaW50IGludGVsX2ZiX2dndHRfdmlldyhzdHJ1Y3QgZHJtX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZSwKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCisJc3dpdGNoIChm Yi0+cGl4ZWxfZm9ybWF0KSB7CisJCWNhc2UgRFJNX0ZPUk1BVF9YUkdCODg4ODoKKwkJY2FzZSBE Uk1fRk9STUFUX0FSR0I4ODg4OgorCQljYXNlIERSTV9GT1JNQVRfWEJHUjg4ODg6CisJCWNhc2Ug RFJNX0ZPUk1BVF9BQkdSODg4ODoKKwkJY2FzZSBEUk1fRk9STUFUX1hSR0IyMTAxMDEwOgorCQlj YXNlIERSTV9GT1JNQVRfQVJHQjIxMDEwMTA6CisJCWNhc2UgRFJNX0ZPUk1BVF9YQkdSMjEwMTAx MDoKKwkJY2FzZSBEUk1fRk9STUFUX0FCR1IyMTAxMDEwOgorCQljYXNlIERSTV9GT1JNQVRfWVVZ VjoKKwkJY2FzZSBEUk1fRk9STUFUX1lWWVU6CisJCWNhc2UgRFJNX0ZPUk1BVF9VWVZZOgorCQlj YXNlIERSTV9GT1JNQVRfVllVWToKKwkJY2FzZSBEUk1fRk9STUFUX05WMTI6CisJCQlicmVhazsK KworCQlkZWZhdWx0OgorCQkJRFJNX0RFQlVHX0tNUygiVW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0 OiVkIGZvciA5MC8yNzAgcm90YXRpb24hXG4iLAorCQkJICAgICAgZmItPnBpeGVsX2Zvcm1hdCk7 CisJCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKIAlyZXR1cm4gMTsKIH0KIApAQCAtMjk5OSw3ICsz MDIxLDEwIEBAIHN0YXRpYyB2b2lkIHNreWxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0 IGRybV9jcnRjICpjcnRjLAogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50 ZWxfY3J0YyhjcnRjKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwogCWludCBw aXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKLQl1MzIgcGxhbmVfY3RsLCBzdHJpZGVfZGl2OworCXUz MiBwbGFuZV9jdGwsIHN0cmlkZV9kaXYsIHN0cmlkZTsKKwl1MzIgdGlsZV9oZWlnaHQsIHBsYW5l X29mZnNldCwgcGxhbmVfc2l6ZTsKKwl1bnNpZ25lZCBpbnQgcm90YXRpb247CisJaW50IHhfb2Zm c2V0LCB5X29mZnNldDsKIAl1bnNpZ25lZCBsb25nIHN1cmZfYWRkcjsKIAlzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZTsKIApAQCAtMzA2Myw4ICszMDg4LDIxIEBAIHN0YXRpYyB2b2lkIHNreWxha2Vf dXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCiAJcGxhbmUgPSBj cnRjLT5wcmltYXJ5OwogCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfUExBTkVfR0FNTUFfRElTQUJM RTsKLQlpZiAocGxhbmUtPnN0YXRlLT5yb3RhdGlvbiA9PSBCSVQoRFJNX1JPVEFURV8xODApKQor CisJcm90YXRpb24gPSBwbGFuZS0+c3RhdGUtPnJvdGF0aW9uOworCXN3aXRjaCAocm90YXRpb24p IHsKKwljYXNlIEJJVChEUk1fUk9UQVRFXzkwKToKKwkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9S T1RBVEVfOTA7CisJCWJyZWFrOworCisJY2FzZSBCSVQoRFJNX1JPVEFURV8xODApOgogCQlwbGFu ZV9jdGwgfD0gUExBTkVfQ1RMX1JPVEFURV8xODA7CisJCWJyZWFrOworCisJY2FzZSBCSVQoRFJN X1JPVEFURV8yNzApOgorCQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1JPVEFURV8yNzA7CisJCWJy ZWFrOworCX0KIAogCW9iaiA9IGludGVsX2ZiX29iaihmYik7CiAJc3RyaWRlX2RpdiA9IGludGVs X2ZiX3N0cmlkZV9hbGlnbm1lbnQoZGV2LCBmYi0+bW9kaWZpZXJbMF0sCkBAIC0zMDczLDE3ICsz MTExLDMzIEBAIHN0YXRpYyB2b2lkIHNreWxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0 IGRybV9jcnRjICpjcnRjLAogCiAJSTkxNV9XUklURShQTEFORV9DVEwocGlwZSwgMCksIHBsYW5l X2N0bCk7CiAKKwlpZiAocm90YXRpb24gJiAoQklUKERSTV9ST1RBVEVfOTApIHwgQklUKERSTV9S T1RBVEVfMjcwKSkpIHsKKwkJLyogc3RyaWRlID0gU3VyZmFjZSBoZWlnaHQgaW4gdGlsZXMgKi8K KwkJdGlsZV9oZWlnaHQgPSBpbnRlbF90aWxlX2hlaWdodChkZXYsIGZiLT5iaXRzX3Blcl9waXhl bCwKKwkJCQkJCWZiLT5tb2RpZmllclswXSk7CisJCXN0cmlkZSA9IERJVl9ST1VORF9VUChmYi0+ aGVpZ2h0LCB0aWxlX2hlaWdodCk7CisJCXhfb2Zmc2V0ID0gc3RyaWRlICogdGlsZV9oZWlnaHQg LSB5IC0gKHBsYW5lLT5zdGF0ZS0+c3JjX2ggPj4gMTYpOworCQl5X29mZnNldCA9IHg7CisJCXBs YW5lX3NpemUgPSAoKHBsYW5lLT5zdGF0ZS0+c3JjX3cgPj4gMTYpIC0gMSkgPDwgMTYgfAorCQkJ CQkoKHBsYW5lLT5zdGF0ZS0+c3JjX2ggPj4gMTYpIC0gMSk7CisJfSBlbHNlIHsKKwkJc3RyaWRl ID0gZmItPnBpdGNoZXNbMF0gLyBzdHJpZGVfZGl2OworCQl4X29mZnNldCA9IHg7CisJCXlfb2Zm c2V0ID0geTsKKwkJcGxhbmVfc2l6ZSA9ICgocGxhbmUtPnN0YXRlLT5zcmNfaCA+PiAxNikgLSAx KSA8PCAxNiB8CisJCQkoKHBsYW5lLT5zdGF0ZS0+c3JjX3cgPj4gMTYpIC0gMSk7CisJfQorCXBs YW5lX29mZnNldCA9IHlfb2Zmc2V0IDw8IDE2IHwgeF9vZmZzZXQ7CisKIAlEUk1fREVCVUdfS01T KCJXcml0aW5nIGJhc2UgJTA4bFggJWQsJWQsJWQsJWQgcGl0Y2g9JWRcbiIsCiAJCSAgICAgIHN1 cmZfYWRkciwKIAkJICAgICAgeCwgeSwgZmItPndpZHRoLCBmYi0+aGVpZ2h0LAogCQkgICAgICBm Yi0+cGl0Y2hlc1swXSk7CiAKIAlJOTE1X1dSSVRFKFBMQU5FX1BPUyhwaXBlLCAwKSwgMCk7Ci0J STkxNV9XUklURShQTEFORV9PRkZTRVQocGlwZSwgMCksICh5IDw8IDE2KSB8IHgpOwotCUk5MTVf V1JJVEUoUExBTkVfU0laRShwaXBlLCAwKSwKLQkJICAgKChwbGFuZS0+c3RhdGUtPnNyY19oID4+ IDE2KSAtIDEpIDw8IDE2IHwKLQkJICAgKChwbGFuZS0+c3RhdGUtPnNyY193ID4+IDE2KSAtIDEp KTsKLQlJOTE1X1dSSVRFKFBMQU5FX1NUUklERShwaXBlLCAwKSwgZmItPnBpdGNoZXNbMF0gLyBz dHJpZGVfZGl2KTsKKwlJOTE1X1dSSVRFKFBMQU5FX09GRlNFVChwaXBlLCAwKSwgcGxhbmVfb2Zm c2V0KTsKKwlJOTE1X1dSSVRFKFBMQU5FX1NJWkUocGlwZSwgMCksIHBsYW5lX3NpemUpOworCUk5 MTVfV1JJVEUoUExBTkVfU1RSSURFKHBpcGUsIDApLCBzdHJpZGUpOwogCUk5MTVfV1JJVEUoUExB TkVfU1VSRihwaXBlLCAwKSwgc3VyZl9hZGRyKTsKIAogCVBPU1RJTkdfUkVBRChQTEFORV9TVVJG KHBpcGUsIDApKTsKQEAgLTEyNDQ1LDIzICsxMjQ5OSwzMiBAQCBzdGF0aWMgc3RydWN0IGRybV9w bGFuZSAqaW50ZWxfcHJpbWFyeV9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK IAkJCQkgaW50ZWxfcHJpbWFyeV9mb3JtYXRzLCBudW1fZm9ybWF0cywKIAkJCQkgRFJNX1BMQU5F X1RZUEVfUFJJTUFSWSk7CiAKLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkgewotCQlp ZiAoIWRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHkpCi0JCQlkZXYtPm1vZGVfY29u ZmlnLnJvdGF0aW9uX3Byb3BlcnR5ID0KLQkJCQlkcm1fbW9kZV9jcmVhdGVfcm90YXRpb25fcHJv cGVydHkoZGV2LAotCQkJCQkJCUJJVChEUk1fUk9UQVRFXzApIHwKLQkJCQkJCQlCSVQoRFJNX1JP VEFURV8xODApKTsKLQkJaWYgKGRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHkpCi0J CQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmcHJpbWFyeS0+YmFzZS5iYXNlLAotCQkJCWRl di0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHksCi0JCQkJc3RhdGUtPmJhc2Uucm90YXRp b24pOwotCX0KKwlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkKKwkJaW50ZWxfY3JlYXRl X3JvdGF0aW9uX3Byb3BlcnR5KGRldiwgcHJpbWFyeSk7CiAKIAlkcm1fcGxhbmVfaGVscGVyX2Fk ZCgmcHJpbWFyeS0+YmFzZSwgJmludGVsX3BsYW5lX2hlbHBlcl9mdW5jcyk7CiAKIAlyZXR1cm4g JnByaW1hcnktPmJhc2U7CiB9CiAKK3ZvaWQgaW50ZWxfY3JlYXRlX3JvdGF0aW9uX3Byb3BlcnR5 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUpCit7CisJ aWYgKCFkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5KSB7CisJCXVuc2lnbmVkIGxv bmcgZmxhZ3MgPSBCSVQoRFJNX1JPVEFURV8wKSB8CisJCQlCSVQoRFJNX1JPVEFURV8xODApOwor CisJCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KQorCQkJZmxhZ3MgfD0gQklUKERSTV9S T1RBVEVfOTApIHwgQklUKERSTV9ST1RBVEVfMjcwKTsKKworCQlkZXYtPm1vZGVfY29uZmlnLnJv dGF0aW9uX3Byb3BlcnR5ID0KKwkJCWRybV9tb2RlX2NyZWF0ZV9yb3RhdGlvbl9wcm9wZXJ0eShk ZXYsIGZsYWdzKTsKKwl9CisJaWYgKGRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHkp CisJCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+YmFzZS5iYXNlLAorCQkJCWRl di0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHksCisJCQkJcGxhbmUtPmJhc2Uuc3RhdGUt PnJvdGF0aW9uKTsKK30KKwogc3RhdGljIGludAogaW50ZWxfY2hlY2tfY3Vyc29yX3BsYW5lKHN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQkJIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3Rh dGUpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IDcxNTUxMGEuLjRmNDI4ZjYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC05ODgsNiArOTg4LDExIEBAIGludGVsX3JvdGF0aW9u XzkwX29yXzI3MCh1bnNpZ25lZCBpbnQgcm90YXRpb24pCiB9CiBzdHJ1Y3Qgc2dfdGFibGUgKmlu dGVsX3JvdGF0ZV9mYl9vYmpfcGFnZXMoc3RydWN0IGk5MTVfZ2d0dF92aWV3ICpnZ3R0X3ZpZXcs CiAJCQkJCSAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwordW5zaWduZWQgaW50 CitpbnRlbF90aWxlX2hlaWdodChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1aW50MzJfdCBiaXRz X3Blcl9waXhlbCwKKwkJICB1aW50NjRfdCBmYl9tb2RpZmllcik7Cit2b2lkIGludGVsX2NyZWF0 ZV9yb3RhdGlvbl9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJCQlzdHJ1Y3Qg aW50ZWxfcGxhbmUgKnBsYW5lKTsKIAogYm9vbCBpbnRlbF93bV9uZWVkX3VwZGF0ZShzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSwKIAkJCSAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwppbmRleCBhZGRjOTBlLi45NjBmOTkzIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwpAQCAtMTg5LDkgKzE4OSwxMiBAQCBza2xfdXBk YXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwgc3RydWN0IGRybV9jcnRjICpj cnRjLAogCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShk cm1fcGxhbmUpOwogCWNvbnN0IGludCBwaXBlID0gaW50ZWxfcGxhbmUtPnBpcGU7CiAJY29uc3Qg aW50IHBsYW5lID0gaW50ZWxfcGxhbmUtPnBsYW5lICsgMTsKLQl1MzIgcGxhbmVfY3RsLCBzdHJp ZGVfZGl2OworCXUzMiBwbGFuZV9jdGwsIHN0cmlkZV9kaXYsIHN0cmlkZTsKIAlpbnQgcGl4ZWxf c2l6ZSA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIDApOwogCXVuc2ln bmVkIGxvbmcgc3VyZl9hZGRyOworCXUzMiB0aWxlX2hlaWdodCwgcGxhbmVfb2Zmc2V0LCBwbGFu ZV9zaXplOworCXVuc2lnbmVkIGludCByb3RhdGlvbjsKKwlpbnQgeF9vZmZzZXQsIHlfb2Zmc2V0 OwogCiAJcGxhbmVfY3RsID0gSTkxNV9SRUFEKFBMQU5FX0NUTChwaXBlLCBwbGFuZSkpOwogCkBA IC0yNjIsOCArMjY1LDIwIEBAIHNrbF91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHJt X3BsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCU1JU1NJTkdfQ0FTRShmYi0+bW9kaWZp ZXJbMF0pOwogCX0KIAotCWlmIChkcm1fcGxhbmUtPnN0YXRlLT5yb3RhdGlvbiA9PSBCSVQoRFJN X1JPVEFURV8xODApKQorCXJvdGF0aW9uID0gZHJtX3BsYW5lLT5zdGF0ZS0+cm90YXRpb247CisJ c3dpdGNoIChyb3RhdGlvbikgeworCWNhc2UgQklUKERSTV9ST1RBVEVfOTApOgorCQlwbGFuZV9j dGwgfD0gUExBTkVfQ1RMX1JPVEFURV85MDsKKwkJYnJlYWs7CisKKwljYXNlIEJJVChEUk1fUk9U QVRFXzE4MCk6CiAJCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfUk9UQVRFXzE4MDsKKwkJYnJlYWs7 CisKKwljYXNlIEJJVChEUk1fUk9UQVRFXzI3MCk6CisJCXBsYW5lX2N0bCB8PSBQTEFORV9DVExf Uk9UQVRFXzI3MDsKKwkJYnJlYWs7CisJfQogCiAJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9FTkFC TEU7CiAJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9QSVBFX0NTQ19FTkFCTEU7CkBAIC0yODMsMTAg KzI5OCwyNiBAQCBza2xfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwg c3RydWN0IGRybV9jcnRjICpjcnRjLAogCiAJc3VyZl9hZGRyID0gaW50ZWxfcGxhbmVfb2JqX29m ZnNldChpbnRlbF9wbGFuZSwgb2JqKTsKIAotCUk5MTVfV1JJVEUoUExBTkVfT0ZGU0VUKHBpcGUs IHBsYW5lKSwgKHkgPDwgMTYpIHwgeCk7Ci0JSTkxNV9XUklURShQTEFORV9TVFJJREUocGlwZSwg cGxhbmUpLCBmYi0+cGl0Y2hlc1swXSAvIHN0cmlkZV9kaXYpOworCWlmIChyb3RhdGlvbiAmIChC SVQoRFJNX1JPVEFURV85MCkgfCBCSVQoRFJNX1JPVEFURV8yNzApKSkgeworCQkvKiBzdHJpZGU6 IFN1cmZhY2UgaGVpZ2h0IGluIHRpbGVzICovCisJCXRpbGVfaGVpZ2h0ID0gaW50ZWxfdGlsZV9o ZWlnaHQoZGV2LCBmYi0+Yml0c19wZXJfcGl4ZWwsCisJCQkJCQkJZmItPm1vZGlmaWVyWzBdKTsK KwkJc3RyaWRlID0gRElWX1JPVU5EX1VQKGZiLT5oZWlnaHQsIHRpbGVfaGVpZ2h0KTsKKwkJcGxh bmVfc2l6ZSA9IChzcmNfdyA8PCAxNikgfCBzcmNfaDsKKwkJeF9vZmZzZXQgPSBzdHJpZGUgKiB0 aWxlX2hlaWdodCAtIHkgLSBzcmNfaDsKKwkJeV9vZmZzZXQgPSB4OworCX0gZWxzZSB7CisJCXN0 cmlkZSA9IGZiLT5waXRjaGVzWzBdIC8gc3RyaWRlX2RpdjsKKwkJcGxhbmVfc2l6ZSA9IChzcmNf aCA8PCAxNikgfCBzcmNfdzsKKwkJeF9vZmZzZXQgPSB4OworCQl5X29mZnNldCA9IHk7CisJfQor CXBsYW5lX29mZnNldCA9IHlfb2Zmc2V0IDw8IDE2IHwgeF9vZmZzZXQ7CisKKwlJOTE1X1dSSVRF KFBMQU5FX09GRlNFVChwaXBlLCBwbGFuZSksIHBsYW5lX29mZnNldCk7CisJSTkxNV9XUklURShQ TEFORV9TVFJJREUocGlwZSwgcGxhbmUpLCBzdHJpZGUpOwogCUk5MTVfV1JJVEUoUExBTkVfUE9T KHBpcGUsIHBsYW5lKSwgKGNydGNfeSA8PCAxNikgfCBjcnRjX3gpOwotCUk5MTVfV1JJVEUoUExB TkVfU0laRShwaXBlLCBwbGFuZSksIChjcnRjX2ggPDwgMTYpIHwgY3J0Y193KTsKKwlJOTE1X1dS SVRFKFBMQU5FX1NJWkUocGlwZSwgcGxhbmUpLCBwbGFuZV9zaXplKTsKIAlJOTE1X1dSSVRFKFBM QU5FX0NUTChwaXBlLCBwbGFuZSksIHBsYW5lX2N0bCk7CiAJSTkxNV9XUklURShQTEFORV9TVVJG KHBpcGUsIHBsYW5lKSwgc3VyZl9hZGRyKTsKIAlQT1NUSU5HX1JFQUQoUExBTkVfU1VSRihwaXBl LCBwbGFuZSkpOwpAQCAtMTUxOSwxNiArMTU1MCw3IEBAIGludGVsX3BsYW5lX2luaXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgZW51bSBwaXBlIHBpcGUsIGludCBwbGFuZSkKIAkJZ290byBvdXQ7 CiAJfQogCi0JaWYgKCFkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5KQotCQlkZXYt Pm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5ID0KLQkJCWRybV9tb2RlX2NyZWF0ZV9yb3Rh dGlvbl9wcm9wZXJ0eShkZXYsCi0JCQkJCQkJICBCSVQoRFJNX1JPVEFURV8wKSB8Ci0JCQkJCQkJ ICBCSVQoRFJNX1JPVEFURV8xODApKTsKLQotCWlmIChkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9u X3Byb3BlcnR5KQotCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmaW50ZWxfcGxhbmUtPmJh c2UuYmFzZSwKLQkJCQkJICAgZGV2LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSwKLQkJ CQkJICAgc3RhdGUtPmJhc2Uucm90YXRpb24pOworCWludGVsX2NyZWF0ZV9yb3RhdGlvbl9wcm9w ZXJ0eShkZXYsIGludGVsX3BsYW5lKTsKIAogCWRybV9wbGFuZV9oZWxwZXJfYWRkKCZpbnRlbF9w bGFuZS0+YmFzZSwgJmludGVsX3BsYW5lX2hlbHBlcl9mdW5jcyk7CiAKLS0gCjEuNy4xMC40Cgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=