From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin Subject: [PATCH 1/5] drm/i915: Extract out gamma table and CSC to their own file Date: Thu, 25 Feb 2016 15:33:39 +0000 Message-ID: <1456414423-7079-2-git-send-email-lionel.g.landwerlin@intel.com> References: <1456414423-7079-1-git-send-email-lionel.g.landwerlin@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1456414423-7079-1-git-send-email-lionel.g.landwerlin@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Cc: kausalmalladi@gmail.com, kiran.s.kumar@intel.com List-Id: intel-gfx@lists.freedesktop.org VGhlIG1vdmVzIGEgY291cGxlIG9mIGZ1bmN0aW9ucyBwcm9ncmFtbWluZyB0aGUgZ2FtbWEgTFVU IGFuZCBDU0MKdW5pdHMgaW50byB0aGVpciBvd24gZmlsZS4KCk9uIGdlbmVyYXRpb25zIHByaW9y IHRvIEhhc3dlbGwgdGhlcmUgaXMgb25seSBhIGdhbW1hIExVVC4gRnJvbQpoYXN3ZWxsIG9uIHRo ZXJlIGlzIGFsc28gYSBuZXcgZW5oYW5jZWQgY29sb3IgY29ycmVjdGlvbiB1bml0IHRoYXQKaXNu J3QgdXNlZCB5ZXQuIFRoaXMgaXMgd2h5IHdlIG5lZWQgdG8gc2V0IHRoZSBHQU1NQV9NT0RFIHJl Z2lzdGVyLAplaXRoZXIgd2UncmUgdXNpbmcgdGhlIGxlZ2FjeSA4Yml0cyBMVVQgb3IgZW5oYW5j ZWQgTFVUcyAob2YgMTAgb3IKMTJiaXRzKS4KClRoZSBDU0MgdW5pdCBpcyBvbmx5IGF2YWlsYWJs ZSBmcm9tIEhhc3dlbGwgb24uCgpXZSBhbHNvIG5lZWQgdG8gbWFrZSBhIHNwZWNpYWwgY2FzZSBm b3IgQ2hlcnJ5VmlldyB3aGljaCBpcyByZWNvZ25pemVkCmFzIGEgZ2VuIDggYnV0IGRvZXNuJ3Qg aGF2ZSB0aGUgc2FtZSBlbmhhbmNlZCBjb2xvciBjb3JyZWN0aW9uIHVuaXQKZnJvbSBIYXN3ZWxs IG9uLgoKdjI6IEZpeCBhY2Nlc3MgdG8gR0FNTUFfTU9ERSByZWdpc3RlciBvbiBvbGRlciBnZW5l cmF0aW9ucyB0aGFuCiAgICBIYXN3ZWxsIChmcm9tIE1hdHQgUm9wZXIncyBjb21tZW50cykKClNp Z25lZC1vZmYtYnk6IExpb25lbCBMYW5kd2VybGluIDxsaW9uZWwuZy5sYW5kd2VybGluQGludGVs LmNvbT4KUmV2aWV3ZWQtYnk6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5jb20+ Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgIHwgICAxICsKIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9jb2xvci5jICAgfCAxOTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDE2MyArKystLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o ICAgICB8ICAxMCArKwogNSBmaWxlcyBjaGFuZ2VkLCAyMTUgaW5zZXJ0aW9ucygrKSwgMTUxIGRl bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2NvbG9yLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IDA4NTFkZTA3Li4wNTE2MzAwIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZQpAQCAtNTUsNiArNTUsNyBAQCBpOTE1LXkgKz0gaW50ZWxfYXVkaW8u byBcCiAJICBpbnRlbF9hdG9taWMubyBcCiAJICBpbnRlbF9hdG9taWNfcGxhbmUubyBcCiAJICBp bnRlbF9iaW9zLm8gXAorCSAgaW50ZWxfY29sb3IubyBcCiAJICBpbnRlbF9kaXNwbGF5Lm8gXAog CSAgaW50ZWxfZmJjLm8gXAogCSAgaW50ZWxfZmlmb191bmRlcnJ1bi5vIFwKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCmluZGV4IDllNzZiZmMuLjhjYjQ0MTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aApAQCAtNjYyLDYgKzY2Miw4IEBAIHN0cnVjdCBkcm1faTkxNV9kaXNwbGF5X2Z1bmNzIHsKIAkv KiByZW5kZXIgY2xvY2sgaW5jcmVhc2UvZGVjcmVhc2UgKi8KIAkvKiBkaXNwbGF5IGNsb2NrIGlu Y3JlYXNlL2RlY3JlYXNlICovCiAJLyogcGxsIGNsb2NrIGluY3JlYXNlL2RlY3JlYXNlICovCisK Kwl2b2lkICgqbG9hZF9sdXRzKShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwogfTsKIAogZW51bSBm b3JjZXdha2VfZG9tYWluX2lkIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2NvbG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlMGI5OTcKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCkBAIC0wLDAgKzEsMTkwIEBACisvKgor ICogQ29weXJpZ2h0IMKpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9u IGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5p bmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRp b24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdp dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSBy aWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBz dWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRv IHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8g ZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBh Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRp bmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGll cyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRI RSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL SU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP IFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAor ICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xB SU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0Yg T1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisg KiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisKKyNpbmNsdWRlICJpbnRlbF9k cnYuaCIKKworLyoKKyAqIFNldCB1cCB0aGUgcGlwZSBDU0MgdW5pdC4KKyAqCisgKiBDdXJyZW50 bHkgb25seSBmdWxsIHJhbmdlIFJHQiB0byBsaW1pdGVkIHJhbmdlIFJHQiBjb252ZXJzaW9uCisg KiBpcyBzdXBwb3J0ZWQsIGJ1dCBldmVudHVhbGx5IHRoaXMgc2hvdWxkIGhhbmRsZSB2YXJpb3Vz CisgKiBSR0I8LT5ZQ2JDciBzY2VuYXJpb3MgYXMgd2VsbC4KKyAqLworc3RhdGljIHZvaWQgaTl4 eF9sb2FkX2NzY19tYXRyaXgoc3RydWN0IGRybV9jcnRjICpjcnRjKQoreworCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9 IHRvX2ludGVsX2NydGMoY3J0Yyk7CisJaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOworCXVp bnQxNl90IGNvZWZmID0gMHg3ODAwOyAvKiAxLjAgKi8KKworCS8qCisJICogVE9ETzogQ2hlY2sg d2hhdCBraW5kIG9mIHZhbHVlcyBhY3R1YWxseSBjb21lIG91dCBvZiB0aGUgcGlwZQorCSAqIHdp dGggdGhlc2UgY29lZmYvcG9zdG9mZiB2YWx1ZXMgYW5kIGFkanVzdCB0byBnZXQgdGhlIGJlc3QK KwkgKiBhY2N1cmFjeS4gUGVyaGFwcyB3ZSBldmVuIG5lZWQgdG8gdGFrZSB0aGUgYnBjIHZhbHVl IGludG8KKwkgKiBjb25zaWRlcmF0aW9uLgorCSAqLworCisJaWYgKGludGVsX2NydGMtPmNvbmZp Zy0+bGltaXRlZF9jb2xvcl9yYW5nZSkKKwkJY29lZmYgPSAoKDIzNSAtIDE2KSAqICgxIDw8IDEy KSAvIDI1NSkgJiAweGZmODsgLyogMC54eHguLi4gKi8KKworCUk5MTVfV1JJVEUoUElQRV9DU0Nf Q09FRkZfUllfR1kocGlwZSksIGNvZWZmIDw8IDE2KTsKKwlJOTE1X1dSSVRFKFBJUEVfQ1NDX0NP RUZGX0JZKHBpcGUpLCAwKTsKKworCUk5MTVfV1JJVEUoUElQRV9DU0NfQ09FRkZfUlVfR1UocGlw ZSksIGNvZWZmKTsKKwlJOTE1X1dSSVRFKFBJUEVfQ1NDX0NPRUZGX0JVKHBpcGUpLCAwKTsKKwor CUk5MTVfV1JJVEUoUElQRV9DU0NfQ09FRkZfUlZfR1YocGlwZSksIDApOworCUk5MTVfV1JJVEUo UElQRV9DU0NfQ09FRkZfQlYocGlwZSksIGNvZWZmIDw8IDE2KTsKKworCUk5MTVfV1JJVEUoUElQ RV9DU0NfUFJFT0ZGX0hJKHBpcGUpLCAwKTsKKwlJOTE1X1dSSVRFKFBJUEVfQ1NDX1BSRU9GRl9N RShwaXBlKSwgMCk7CisJSTkxNV9XUklURShQSVBFX0NTQ19QUkVPRkZfTE8ocGlwZSksIDApOwor CisJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID4gNikgeworCQl1aW50MTZfdCBwb3N0b2ZmID0g MDsKKworCQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlKQorCQkJ cG9zdG9mZiA9ICgxNiAqICgxIDw8IDEyKSAvIDI1NSkgJiAweDFmZmY7CisKKwkJSTkxNV9XUklU RShQSVBFX0NTQ19QT1NUT0ZGX0hJKHBpcGUpLCBwb3N0b2ZmKTsKKwkJSTkxNV9XUklURShQSVBF X0NTQ19QT1NUT0ZGX01FKHBpcGUpLCBwb3N0b2ZmKTsKKwkJSTkxNV9XUklURShQSVBFX0NTQ19Q T1NUT0ZGX0xPKHBpcGUpLCBwb3N0b2ZmKTsKKworCQlJOTE1X1dSSVRFKFBJUEVfQ1NDX01PREUo cGlwZSksIDApOworCX0gZWxzZSB7CisJCXVpbnQzMl90IG1vZGUgPSBDU0NfTU9ERV9ZVVZfVE9f UkdCOworCisJCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UpCisJ CQltb2RlIHw9IENTQ19CTEFDS19TQ1JFRU5fT0ZGU0VUOworCisJCUk5MTVfV1JJVEUoUElQRV9D U0NfTU9ERShwaXBlKSwgbW9kZSk7CisJfQorfQorCit2b2lkIGludGVsX2NvbG9yX3NldF9jc2Mo c3RydWN0IGRybV9jcnRjICpjcnRjKQoreworCWk5eHhfbG9hZF9jc2NfbWF0cml4KGNydGMpOwor fQorCisvKiBMb2FkcyB0aGUgcGFsZXR0ZS9nYW1tYSB1bml0IGZvciB0aGUgQ1JUQyB3aXRoIHRo ZSBwcmVwYXJlZCB2YWx1ZXMuICovCitzdGF0aWMgdm9pZCBpOXh4X2xvYWRfbHV0cyhzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsK KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwor CXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKKwll bnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7CisJaW50IGk7CisKKwlpZiAoSEFTX0dN Q0hfRElTUExBWShkZXYpKSB7CisJCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmhhc19kc2lfZW5j b2RlcikKKwkJCWFzc2VydF9kc2lfcGxsX2VuYWJsZWQoZGV2X3ByaXYpOworCQllbHNlCisJCQlh c3NlcnRfcGxsX2VuYWJsZWQoZGV2X3ByaXYsIHBpcGUpOworCX0KKworCWZvciAoaSA9IDA7IGkg PCAyNTY7IGkrKykgeworCQl1aW50MzJfdCB3b3JkID0gKGludGVsX2NydGMtPmx1dF9yW2ldIDw8 IDE2KSB8CisJCQkoaW50ZWxfY3J0Yy0+bHV0X2dbaV0gPDwgOCkgfAorCQkJaW50ZWxfY3J0Yy0+ bHV0X2JbaV07CisJCWlmIChIQVNfR01DSF9ESVNQTEFZKGRldikpCisJCQlJOTE1X1dSSVRFKFBB TEVUVEUocGlwZSwgaSksIHdvcmQpOworCQllbHNlCisJCQlJOTE1X1dSSVRFKExHQ19QQUxFVFRF KHBpcGUsIGkpLCB3b3JkKTsKKwl9Cit9CisKKy8qIExvYWRzIHRoZSBsZWdhY3kgcGFsZXR0ZS9n YW1tYSB1bml0IGZvciB0aGUgQ1JUQyBvbiBIYXN3ZWxsKy4gKi8KK3N0YXRpYyB2b2lkIGhhc3dl bGxfbG9hZF9sdXRzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3sKKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gY3J0Yy0+ZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19p bnRlbF9jcnRjKGNydGMpOworCWJvb2wgcmVlbmFibGVfaXBzID0gZmFsc2U7CisKKwkvKgorCSAq IFdvcmthcm91bmQgOiBEbyBub3QgcmVhZCBvciB3cml0ZSB0aGUgcGlwZSBwYWxldHRlL2dhbW1h IGRhdGEgd2hpbGUKKwkgKiBHQU1NQV9NT0RFIGlzIGNvbmZpZ3VyZWQgZm9yIHNwbGl0IGdhbW1h IGFuZCBJUFNfQ1RMIGhhcyBJUFMgZW5hYmxlZC4KKwkgKi8KKwlpZiAoSVNfSEFTV0VMTChkZXYp ICYmIGludGVsX2NydGMtPmNvbmZpZy0+aXBzX2VuYWJsZWQgJiYKKwkgICAgKChJOTE1X1JFQUQo R0FNTUFfTU9ERShpbnRlbF9jcnRjLT5waXBlKSkgJiBHQU1NQV9NT0RFX01PREVfTUFTSykgPT0K KwkgICAgIEdBTU1BX01PREVfTU9ERV9TUExJVCkpIHsKKwkJaHN3X2Rpc2FibGVfaXBzKGludGVs X2NydGMpOworCQlyZWVuYWJsZV9pcHMgPSB0cnVlOworCX0KKwlJOTE1X1dSSVRFKEdBTU1BX01P REUoaW50ZWxfY3J0Yy0+cGlwZSksIEdBTU1BX01PREVfTU9ERV84QklUKTsKKworCWk5eHhfbG9h ZF9sdXRzKGNydGMpOworCisJaWYgKHJlZW5hYmxlX2lwcykKKwkJaHN3X2VuYWJsZV9pcHMoaW50 ZWxfY3J0Yyk7Cit9CisKK3ZvaWQgaW50ZWxfY29sb3JfbG9hZF9sdXRzKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YykKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OworCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisKKwkvKiBU aGUgY2xvY2tzIGhhdmUgdG8gYmUgb24gdG8gbG9hZCB0aGUgcGFsZXR0ZS4gKi8KKwlpZiAoIWNy dGMtPnN0YXRlLT5hY3RpdmUpCisJCXJldHVybjsKKworCWRldl9wcml2LT5kaXNwbGF5LmxvYWRf bHV0cyhjcnRjKTsKK30KKwordm9pZCBpbnRlbF9jb2xvcl9sZWdhY3lfZ2FtbWFfc2V0KHN0cnVj dCBkcm1fY3J0YyAqY3J0YywgdTE2ICpyZWQsIHUxNiAqZ3JlZW4sCisJCQkJICB1MTYgKmJsdWUs IHVpbnQzMl90IHN0YXJ0LCB1aW50MzJfdCBzaXplKQoreworCWludCBlbmQgPSAoc3RhcnQgKyBz aXplID4gMjU2KSA/IDI1NiA6IHN0YXJ0ICsgc2l6ZSwgaTsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAq aW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CisKKwlmb3IgKGkgPSBzdGFydDsgaSA8 IGVuZDsgaSsrKSB7CisJCWludGVsX2NydGMtPmx1dF9yW2ldID0gcmVkW2ldID4+IDg7CisJCWlu dGVsX2NydGMtPmx1dF9nW2ldID0gZ3JlZW5baV0gPj4gODsKKwkJaW50ZWxfY3J0Yy0+bHV0X2Jb aV0gPSBibHVlW2ldID4+IDg7CisJfQorCisJaW50ZWxfY29sb3JfbG9hZF9sdXRzKGNydGMpOwor fQorCit2b2lkIGludGVsX2NvbG9yX2luaXQoc3RydWN0IGRybV9jcnRjICpjcnRjKQoreworCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50 ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CisJaW50IGk7CisKKwlkcm1fbW9kZV9jcnRj X3NldF9nYW1tYV9zaXplKGNydGMsIDI1Nik7CisJZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKSB7 CisJCWludGVsX2NydGMtPmx1dF9yW2ldID0gaTsKKwkJaW50ZWxfY3J0Yy0+bHV0X2dbaV0gPSBp OworCQlpbnRlbF9jcnRjLT5sdXRfYltpXSA9IGk7CisJfQorCisJaWYgKElTX0hBU1dFTEwoZGV2 KSB8fAorCSAgICAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCAmJiAhSVNfQ0hFUlJZVklFVyhk ZXYpKSkKKwkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0gaGFzd2VsbF9sb2FkX2x1dHM7 CisJZWxzZQorCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2x1dHMgPSBpOXh4X2xvYWRfbHV0czsK K30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCA5YTE4NjEzLi5jZDQ3ZjVi IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC0xMDEsNyArMTAxLDYgQEAg c3RhdGljIHZvaWQgaW50ZWxfY3B1X3RyYW5zY29kZXJfc2V0X21fbihzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKIAkJCQkJIHN0cnVjdCBpbnRlbF9saW5rX21fbiAqbTJfbjIpOwogc3RhdGljIHZv aWQgaXJvbmxha2Vfc2V0X3BpcGVjb25mKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7CiBzdGF0aWMg dm9pZCBoYXN3ZWxsX3NldF9waXBlY29uZihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwotc3RhdGlj IHZvaWQgaW50ZWxfc2V0X3BpcGVfY3NjKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7CiBzdGF0aWMg dm9pZCB2bHZfcHJlcGFyZV9wbGwoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJCQkgICAgY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKIHN0YXRpYyB2b2lkIGNo dl9wcmVwYXJlX3BsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKQEAgLTExNjUsNyArMTE2NCw3 IEBAIHZvaWQgYXNzZXJ0X3BsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiB9 CiAKIC8qIFhYWDogdGhlIGRzaSBwbGwgaXMgc2hhcmVkIGJldHdlZW4gTUlQSSBEU0kgcG9ydHMg Ki8KLXN0YXRpYyB2b2lkIGFzc2VydF9kc2lfcGxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgYm9vbCBzdGF0ZSkKK3ZvaWQgYXNzZXJ0X2RzaV9wbGwoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCBib29sIHN0YXRlKQogewogCXUzMiB2YWw7CiAJYm9vbCBjdXJf c3RhdGU7CkBAIC0xMTc5LDggKzExNzgsNiBAQCBzdGF0aWMgdm9pZCBhc3NlcnRfZHNpX3BsbChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wgc3RhdGUpCiAJICAgICAiRFNJ IFBMTCBzdGF0ZSBhc3NlcnRpb24gZmFpbHVyZSAoZXhwZWN0ZWQgJXMsIGN1cnJlbnQgJXMpXG4i LAogCQkJb25vZmYoc3RhdGUpLCBvbm9mZihjdXJfc3RhdGUpKTsKIH0KLSNkZWZpbmUgYXNzZXJ0 X2RzaV9wbGxfZW5hYmxlZChkKSBhc3NlcnRfZHNpX3BsbChkLCB0cnVlKQotI2RlZmluZSBhc3Nl cnRfZHNpX3BsbF9kaXNhYmxlZChkKSBhc3NlcnRfZHNpX3BsbChkLCBmYWxzZSkKIAogc3RydWN0 IGludGVsX3NoYXJlZF9kcGxsICoKIGludGVsX2NydGNfdG9fc2hhcmVkX2RwbGwoc3RydWN0IGlu dGVsX2NydGMgKmNydGMpCkBAIC0zMzE1LDcgKzMzMTIsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF91 cGRhdGVfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJCSAgICAgIHBpcGVf Y29uZmlnLT5waXBlX3NyY193LCBwaXBlX2NvbmZpZy0+cGlwZV9zcmNfaCk7CiAKIAlpZiAoSEFT X0RESShkZXYpKQotCQlpbnRlbF9zZXRfcGlwZV9jc2MoJmNydGMtPmJhc2UpOworCQlpbnRlbF9j b2xvcl9zZXRfY3NjKCZjcnRjLT5iYXNlKTsKIAogCS8qCiAJICogVXBkYXRlIHBpcGUgc2l6ZSBh bmQgYWRqdXN0IGZpdHRlciBpZiBuZWVkZWQ6IHRoZSByZWFzb24gZm9yIHRoaXMgaXMKQEAgLTQ2 MjYsNTUgKzQ2MjMsNiBAQCB2b2lkIGhzd19kaXNhYmxlX2lwcyhzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YykKIAlpbnRlbF93YWl0X2Zvcl92YmxhbmsoZGV2LCBjcnRjLT5waXBlKTsKIH0KIAotLyoq IExvYWRzIHRoZSBwYWxldHRlL2dhbW1hIHVuaXQgZm9yIHRoZSBDUlRDIHdpdGggdGhlIHByZXBh cmVkIHZhbHVlcyAqLwotc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19sb2FkX2x1dChzdHJ1Y3QgZHJt X2NydGMgKmNydGMpCi17Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCXN0 cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKLQllbnVt IHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Ci0JaW50IGk7Ci0JYm9vbCByZWVuYWJsZV9p cHMgPSBmYWxzZTsKLQotCS8qIFRoZSBjbG9ja3MgaGF2ZSB0byBiZSBvbiB0byBsb2FkIHRoZSBw YWxldHRlLiAqLwotCWlmICghY3J0Yy0+c3RhdGUtPmFjdGl2ZSkKLQkJcmV0dXJuOwotCi0JaWYg KEhBU19HTUNIX0RJU1BMQVkoZGV2X3ByaXYtPmRldikpIHsKLQkJaWYgKGludGVsX2NydGMtPmNv bmZpZy0+aGFzX2RzaV9lbmNvZGVyKQotCQkJYXNzZXJ0X2RzaV9wbGxfZW5hYmxlZChkZXZfcHJp dik7Ci0JCWVsc2UKLQkJCWFzc2VydF9wbGxfZW5hYmxlZChkZXZfcHJpdiwgcGlwZSk7Ci0JfQot Ci0JLyogV29ya2Fyb3VuZCA6IERvIG5vdCByZWFkIG9yIHdyaXRlIHRoZSBwaXBlIHBhbGV0dGUv Z2FtbWEgZGF0YSB3aGlsZQotCSAqIEdBTU1BX01PREUgaXMgY29uZmlndXJlZCBmb3Igc3BsaXQg Z2FtbWEgYW5kIElQU19DVEwgaGFzIElQUyBlbmFibGVkLgotCSAqLwotCWlmIChJU19IQVNXRUxM KGRldikgJiYgaW50ZWxfY3J0Yy0+Y29uZmlnLT5pcHNfZW5hYmxlZCAmJgotCSAgICAoKEk5MTVf UkVBRChHQU1NQV9NT0RFKHBpcGUpKSAmIEdBTU1BX01PREVfTU9ERV9NQVNLKSA9PQotCSAgICAg R0FNTUFfTU9ERV9NT0RFX1NQTElUKSkgewotCQloc3dfZGlzYWJsZV9pcHMoaW50ZWxfY3J0Yyk7 Ci0JCXJlZW5hYmxlX2lwcyA9IHRydWU7Ci0JfQotCi0JZm9yIChpID0gMDsgaSA8IDI1NjsgaSsr KSB7Ci0JCWk5MTVfcmVnX3QgcGFscmVnOwotCi0JCWlmIChIQVNfR01DSF9ESVNQTEFZKGRldikp Ci0JCQlwYWxyZWcgPSBQQUxFVFRFKHBpcGUsIGkpOwotCQllbHNlCi0JCQlwYWxyZWcgPSBMR0Nf UEFMRVRURShwaXBlLCBpKTsKLQotCQlJOTE1X1dSSVRFKHBhbHJlZywKLQkJCSAgIChpbnRlbF9j cnRjLT5sdXRfcltpXSA8PCAxNikgfAotCQkJICAgKGludGVsX2NydGMtPmx1dF9nW2ldIDw8IDgp IHwKLQkJCSAgIGludGVsX2NydGMtPmx1dF9iW2ldKTsKLQl9Ci0KLQlpZiAocmVlbmFibGVfaXBz KQotCQloc3dfZW5hYmxlX2lwcyhpbnRlbF9jcnRjKTsKLX0KLQogc3RhdGljIHZvaWQgaW50ZWxf Y3J0Y19kcG1zX292ZXJsYXlfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykK IHsKIAlpZiAoaW50ZWxfY3J0Yy0+b3ZlcmxheSkgewpAQCAtNDkyMyw3ICs0ODcxLDcgQEAgc3Rh dGljIHZvaWQgaXJvbmxha2VfY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCSAq IE9uIElMSysgTFVUIG11c3QgYmUgbG9hZGVkIGJlZm9yZSB0aGUgcGlwZSBpcyBydW5uaW5nIGJ1 dCB3aXRoCiAJICogY2xvY2tzIGVuYWJsZWQKIAkgKi8KLQlpbnRlbF9jcnRjX2xvYWRfbHV0KGNy dGMpOworCWludGVsX2NvbG9yX2xvYWRfbHV0cyhjcnRjKTsKIAogCWludGVsX3VwZGF0ZV93YXRl cm1hcmtzKGNydGMpOwogCWludGVsX2VuYWJsZV9waXBlKGludGVsX2NydGMpOwpAQCAtNDk4OSw3 ICs0OTM3LDcgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMpCiAKIAloYXN3ZWxsX3NldF9waXBlY29uZihjcnRjKTsKIAotCWludGVsX3NldF9w aXBlX2NzYyhjcnRjKTsKKwlpbnRlbF9jb2xvcl9zZXRfY3NjKGNydGMpOwogCiAJaW50ZWxfY3J0 Yy0+YWN0aXZlID0gdHJ1ZTsKIApAQCAtNTAxOCw3ICs0OTY2LDcgQEAgc3RhdGljIHZvaWQgaGFz d2VsbF9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJICogT24gSUxLKyBMVVQg bXVzdCBiZSBsb2FkZWQgYmVmb3JlIHRoZSBwaXBlIGlzIHJ1bm5pbmcgYnV0IHdpdGgKIAkgKiBj bG9ja3MgZW5hYmxlZAogCSAqLwotCWludGVsX2NydGNfbG9hZF9sdXQoY3J0Yyk7CisJaW50ZWxf Y29sb3JfbG9hZF9sdXRzKGNydGMpOwogCiAJaW50ZWxfZGRpX3NldF9waXBlX3NldHRpbmdzKGNy dGMpOwogCWlmICghaW50ZWxfY3J0Yy0+Y29uZmlnLT5oYXNfZHNpX2VuY29kZXIpCkBAIC02MjEx LDcgKzYxNTksNyBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X2NydGNfZW5hYmxlKHN0cnVjdCBk cm1fY3J0YyAqY3J0YykKIAogCWk5eHhfcGZpdF9lbmFibGUoaW50ZWxfY3J0Yyk7CiAKLQlpbnRl bF9jcnRjX2xvYWRfbHV0KGNydGMpOworCWludGVsX2NvbG9yX2xvYWRfbHV0cyhjcnRjKTsKIAog CWludGVsX2VuYWJsZV9waXBlKGludGVsX2NydGMpOwogCkBAIC02MjY0LDcgKzYyMTIsNyBAQCBz dGF0aWMgdm9pZCBpOXh4X2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAogCWk5 eHhfcGZpdF9lbmFibGUoaW50ZWxfY3J0Yyk7CiAKLQlpbnRlbF9jcnRjX2xvYWRfbHV0KGNydGMp OworCWludGVsX2NvbG9yX2xvYWRfbHV0cyhjcnRjKTsKIAogCWludGVsX3VwZGF0ZV93YXRlcm1h cmtzKGNydGMpOwogCWludGVsX2VuYWJsZV9waXBlKGludGVsX2NydGMpOwpAQCAtODcxOSw3MCAr ODY2Nyw2IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3NldF9waXBlY29uZihzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMpCiAJUE9TVElOR19SRUFEKFBJUEVDT05GKHBpcGUpKTsKIH0KIAotLyoKLSAqIFNl dCB1cCB0aGUgcGlwZSBDU0MgdW5pdC4KLSAqCi0gKiBDdXJyZW50bHkgb25seSBmdWxsIHJhbmdl IFJHQiB0byBsaW1pdGVkIHJhbmdlIFJHQiBjb252ZXJzaW9uCi0gKiBpcyBzdXBwb3J0ZWQsIGJ1 dCBldmVudHVhbGx5IHRoaXMgc2hvdWxkIGhhbmRsZSB2YXJpb3VzCi0gKiBSR0I8LT5ZQ2JDciBz Y2VuYXJpb3MgYXMgd2VsbC4KLSAqLwotc3RhdGljIHZvaWQgaW50ZWxfc2V0X3BpcGVfY3NjKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YykKLXsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ ZGV2OwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7Ci0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMp OwotCWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKLQl1aW50MTZfdCBjb2VmZiA9IDB4Nzgw MDsgLyogMS4wICovCi0KLQkvKgotCSAqIFRPRE86IENoZWNrIHdoYXQga2luZCBvZiB2YWx1ZXMg YWN0dWFsbHkgY29tZSBvdXQgb2YgdGhlIHBpcGUKLQkgKiB3aXRoIHRoZXNlIGNvZWZmL3Bvc3Rv ZmYgdmFsdWVzIGFuZCBhZGp1c3QgdG8gZ2V0IHRoZSBiZXN0Ci0JICogYWNjdXJhY3kuIFBlcmhh cHMgd2UgZXZlbiBuZWVkIHRvIHRha2UgdGhlIGJwYyB2YWx1ZSBpbnRvCi0JICogY29uc2lkZXJh dGlvbi4KLQkgKi8KLQotCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmxpbWl0ZWRfY29sb3JfcmFu Z2UpCi0JCWNvZWZmID0gKCgyMzUgLSAxNikgKiAoMSA8PCAxMikgLyAyNTUpICYgMHhmZjg7IC8q IDAueHh4Li4uICovCi0KLQkvKgotCSAqIEdZL0dVIGFuZCBSWS9SVSBzaG91bGQgYmUgdGhlIG90 aGVyIHdheSBhcm91bmQgYWNjb3JkaW5nCi0JICogdG8gQlNwZWMsIGJ1dCByZWFsaXR5IGRvZXNu J3QgYWdyZWUuIEp1c3Qgc2V0IHRoZW0gdXAgaW4KLQkgKiBhIHdheSB0aGF0IHJlc3VsdHMgaW4g dGhlIGNvcnJlY3QgcGljdHVyZS4KLQkgKi8KLQlJOTE1X1dSSVRFKFBJUEVfQ1NDX0NPRUZGX1JZ X0dZKHBpcGUpLCBjb2VmZiA8PCAxNik7Ci0JSTkxNV9XUklURShQSVBFX0NTQ19DT0VGRl9CWShw aXBlKSwgMCk7Ci0KLQlJOTE1X1dSSVRFKFBJUEVfQ1NDX0NPRUZGX1JVX0dVKHBpcGUpLCBjb2Vm Zik7Ci0JSTkxNV9XUklURShQSVBFX0NTQ19DT0VGRl9CVShwaXBlKSwgMCk7Ci0KLQlJOTE1X1dS SVRFKFBJUEVfQ1NDX0NPRUZGX1JWX0dWKHBpcGUpLCAwKTsKLQlJOTE1X1dSSVRFKFBJUEVfQ1ND X0NPRUZGX0JWKHBpcGUpLCBjb2VmZiA8PCAxNik7Ci0KLQlJOTE1X1dSSVRFKFBJUEVfQ1NDX1BS RU9GRl9ISShwaXBlKSwgMCk7Ci0JSTkxNV9XUklURShQSVBFX0NTQ19QUkVPRkZfTUUocGlwZSks IDApOwotCUk5MTVfV1JJVEUoUElQRV9DU0NfUFJFT0ZGX0xPKHBpcGUpLCAwKTsKLQotCWlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA+IDYpIHsKLQkJdWludDE2X3QgcG9zdG9mZiA9IDA7Ci0KLQkJ aWYgKGludGVsX2NydGMtPmNvbmZpZy0+bGltaXRlZF9jb2xvcl9yYW5nZSkKLQkJCXBvc3RvZmYg PSAoMTYgKiAoMSA8PCAxMikgLyAyNTUpICYgMHgxZmZmOwotCi0JCUk5MTVfV1JJVEUoUElQRV9D U0NfUE9TVE9GRl9ISShwaXBlKSwgcG9zdG9mZik7Ci0JCUk5MTVfV1JJVEUoUElQRV9DU0NfUE9T VE9GRl9NRShwaXBlKSwgcG9zdG9mZik7Ci0JCUk5MTVfV1JJVEUoUElQRV9DU0NfUE9TVE9GRl9M TyhwaXBlKSwgcG9zdG9mZik7Ci0KLQkJSTkxNV9XUklURShQSVBFX0NTQ19NT0RFKHBpcGUpLCAw KTsKLQl9IGVsc2UgewotCQl1aW50MzJfdCBtb2RlID0gQ1NDX01PREVfWVVWX1RPX1JHQjsKLQot CQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlKQotCQkJbW9kZSB8 PSBDU0NfQkxBQ0tfU0NSRUVOX09GRlNFVDsKLQotCQlJOTE1X1dSSVRFKFBJUEVfQ1NDX01PREUo cGlwZSksIG1vZGUpOwotCX0KLX0KLQogc3RhdGljIHZvaWQgaGFzd2VsbF9zZXRfcGlwZWNvbmYo c3RydWN0IGRybV9jcnRjICpjcnRjKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRj LT5kZXY7CkBAIC04ODA1LDkgKzg2ODksNiBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX3NldF9waXBl Y29uZihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJSTkxNV9XUklURShQSVBFQ09ORihjcHVfdHJh bnNjb2RlciksIHZhbCk7CiAJUE9TVElOR19SRUFEKFBJUEVDT05GKGNwdV90cmFuc2NvZGVyKSk7 CiAKLQlJOTE1X1dSSVRFKEdBTU1BX01PREUoaW50ZWxfY3J0Yy0+cGlwZSksIEdBTU1BX01PREVf TU9ERV84QklUKTsKLQlQT1NUSU5HX1JFQUQoR0FNTUFfTU9ERShpbnRlbF9jcnRjLT5waXBlKSk7 Ci0KIAlpZiAoSVNfQlJPQURXRUxMKGRldikgfHwgSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkg ewogCQl2YWwgPSAwOwogCkBAIC0xMDIyMCwyMSArMTAxMDEsNiBAQCBzdGF0aWMgYm9vbCBjdXJz b3Jfc2l6ZV9vayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCXJldHVybiB0cnVlOwogfQogCi1z dGF0aWMgdm9pZCBpbnRlbF9jcnRjX2dhbW1hX3NldChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHUx NiAqcmVkLCB1MTYgKmdyZWVuLAotCQkJCSB1MTYgKmJsdWUsIHVpbnQzMl90IHN0YXJ0LCB1aW50 MzJfdCBzaXplKQotewotCWludCBlbmQgPSAoc3RhcnQgKyBzaXplID4gMjU2KSA/IDI1NiA6IHN0 YXJ0ICsgc2l6ZSwgaTsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVs X2NydGMoY3J0Yyk7Ci0KLQlmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgaSsrKSB7Ci0JCWludGVs X2NydGMtPmx1dF9yW2ldID0gcmVkW2ldID4+IDg7Ci0JCWludGVsX2NydGMtPmx1dF9nW2ldID0g Z3JlZW5baV0gPj4gODsKLQkJaW50ZWxfY3J0Yy0+bHV0X2JbaV0gPSBibHVlW2ldID4+IDg7Ci0J fQotCi0JaW50ZWxfY3J0Y19sb2FkX2x1dChjcnRjKTsKLX0KLQogLyogVkVTQSA2NDB4NDgweDcy SHogbW9kZSB0byBzZXQgb24gdGhlIHBpcGUgKi8KIHN0YXRpYyBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSBsb2FkX2RldGVjdF9tb2RlID0gewogCURSTV9NT0RFKCI2NDB4NDgwIiwgRFJNX01PREVf VFlQRV9ERUZBVUxULCAzMTUwMCwgNjQwLCA2NjQsCkBAIC0xMTk4Myw3ICsxMTg0OSw3IEBAIHN0 YXRpYyBpbnQgaW50ZWxfY3J0Y19hdG9taWNfY2hlY2soc3RydWN0IGRybV9jcnRjICpjcnRjLAog CiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyBpbnRlbF9oZWxwZXJf ZnVuY3MgPSB7CiAJLm1vZGVfc2V0X2Jhc2VfYXRvbWljID0gaW50ZWxfcGlwZV9zZXRfYmFzZV9h dG9taWMsCi0JLmxvYWRfbHV0ID0gaW50ZWxfY3J0Y19sb2FkX2x1dCwKKwkubG9hZF9sdXQgPSBp bnRlbF9jb2xvcl9sb2FkX2x1dHMsCiAJLmF0b21pY19iZWdpbiA9IGludGVsX2JlZ2luX2NydGNf Y29tbWl0LAogCS5hdG9taWNfZmx1c2ggPSBpbnRlbF9maW5pc2hfY3J0Y19jb21taXQsCiAJLmF0 b21pY19jaGVjayA9IGludGVsX2NydGNfYXRvbWljX2NoZWNrLApAQCAtMTM2MDksNyArMTM0NzUs NyBAQCBvdXQ6CiAjdW5kZWYgZm9yX2VhY2hfaW50ZWxfY3J0Y19tYXNrZWQKIAogc3RhdGljIGNv bnN0IHN0cnVjdCBkcm1fY3J0Y19mdW5jcyBpbnRlbF9jcnRjX2Z1bmNzID0gewotCS5nYW1tYV9z ZXQgPSBpbnRlbF9jcnRjX2dhbW1hX3NldCwKKwkuZ2FtbWFfc2V0ID0gaW50ZWxfY29sb3JfbGVn YWN5X2dhbW1hX3NldCwKIAkuc2V0X2NvbmZpZyA9IGRybV9hdG9taWNfaGVscGVyX3NldF9jb25m aWcsCiAJLmRlc3Ryb3kgPSBpbnRlbF9jcnRjX2Rlc3Ryb3ksCiAJLnBhZ2VfZmxpcCA9IGludGVs X2NydGNfcGFnZV9mbGlwLApAQCAtMTQyMTYsNyArMTQwODIsNyBAQCBzdGF0aWMgdm9pZCBpbnRl bF9jcnRjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IHBpcGUpCiAJc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPSBOVUxMOwogCXN0cnVjdCBkcm1fcGxhbmUgKnBy aW1hcnkgPSBOVUxMOwogCXN0cnVjdCBkcm1fcGxhbmUgKmN1cnNvciA9IE5VTEw7Ci0JaW50IGks IHJldDsKKwlpbnQgcmV0OwogCiAJaW50ZWxfY3J0YyA9IGt6YWxsb2Moc2l6ZW9mKCppbnRlbF9j cnRjKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKGludGVsX2NydGMgPT0gTlVMTCkKQEAgLTE0MjUyLDEz ICsxNDExOCw2IEBAIHN0YXRpYyB2b2lkIGludGVsX2NydGNfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCBpbnQgcGlwZSkKIAlpZiAocmV0KQogCQlnb3RvIGZhaWw7CiAKLQlkcm1fbW9kZV9j cnRjX3NldF9nYW1tYV9zaXplKCZpbnRlbF9jcnRjLT5iYXNlLCAyNTYpOwotCWZvciAoaSA9IDA7 IGkgPCAyNTY7IGkrKykgewotCQlpbnRlbF9jcnRjLT5sdXRfcltpXSA9IGk7Ci0JCWludGVsX2Ny dGMtPmx1dF9nW2ldID0gaTsKLQkJaW50ZWxfY3J0Yy0+bHV0X2JbaV0gPSBpOwotCX0KLQogCS8q CiAJICogT24gZ2VuMi8zIG9ubHkgcGxhbmUgQSBjYW4gZG8gZmJjLCBidXQgdGhlIHBhbmVsIGZp dHRlciBhbmQgbHZkcyBwb3J0CiAJICogaXMgaG9va2VkIHRvIHBpcGUgQi4gSGVuY2Ugd2Ugd2Fu dCBwbGFuZSBBIGZlZWRpbmcgcGlwZSBCLgpAQCAtMTQyODMsNiArMTQxNDIsOCBAQCBzdGF0aWMg dm9pZCBpbnRlbF9jcnRjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IHBpcGUpCiAK IAlkcm1fY3J0Y19oZWxwZXJfYWRkKCZpbnRlbF9jcnRjLT5iYXNlLCAmaW50ZWxfaGVscGVyX2Z1 bmNzKTsKIAorCWludGVsX2NvbG9yX2luaXQoJmludGVsX2NydGMtPmJhc2UpOworCiAJV0FSTl9P Tihkcm1fY3J0Y19pbmRleCgmaW50ZWxfY3J0Yy0+YmFzZSkgIT0gaW50ZWxfY3J0Yy0+cGlwZSk7 CiAJcmV0dXJuOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IDQ4NTIwNDkuLjc1MzJm NjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC0xMTY2LDYgKzExNjYsOSBAQCB2b2lk IGFzc2VydF9wbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQllbnVtIHBp cGUgcGlwZSwgYm9vbCBzdGF0ZSk7CiAjZGVmaW5lIGFzc2VydF9wbGxfZW5hYmxlZChkLCBwKSBh c3NlcnRfcGxsKGQsIHAsIHRydWUpCiAjZGVmaW5lIGFzc2VydF9wbGxfZGlzYWJsZWQoZCwgcCkg YXNzZXJ0X3BsbChkLCBwLCBmYWxzZSkKK3ZvaWQgYXNzZXJ0X2RzaV9wbGwoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LCBib29sIHN0YXRlKTsKKyNkZWZpbmUgYXNzZXJ0X2RzaV9w bGxfZW5hYmxlZChkKSBhc3NlcnRfZHNpX3BsbChkLCB0cnVlKQorI2RlZmluZSBhc3NlcnRfZHNp X3BsbF9kaXNhYmxlZChkKSBhc3NlcnRfZHNpX3BsbChkLCBmYWxzZSkKIHZvaWQgYXNzZXJ0X2Zk aV9yeF9wbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkgICAgICAgZW51 bSBwaXBlIHBpcGUsIGJvb2wgc3RhdGUpOwogI2RlZmluZSBhc3NlcnRfZmRpX3J4X3BsbF9lbmFi bGVkKGQsIHApIGFzc2VydF9mZGlfcnhfcGxsKGQsIHAsIHRydWUpCkBAIC0xNjE4LDQgKzE2MjEs MTEgQEAgdm9pZCBpbnRlbF9wbGFuZV9kZXN0cm95X3N0YXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLAogCQkJICAgICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlKTsKIGV4dGVybiBj b25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyBpbnRlbF9wbGFuZV9oZWxwZXJfZnVu Y3M7CiAKKy8qIGludGVsX2NvbG9yLmMgKi8KK3ZvaWQgaW50ZWxfY29sb3JfaW5pdChzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpOwordm9pZCBpbnRlbF9jb2xvcl9zZXRfY3NjKHN0cnVjdCBkcm1fY3J0 YyAqY3J0Yyk7Cit2b2lkIGludGVsX2NvbG9yX2xvYWRfbHV0cyhzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpOwordm9pZCBpbnRlbF9jb2xvcl9sZWdhY3lfZ2FtbWFfc2V0KHN0cnVjdCBkcm1fY3J0YyAq Y3J0YywgdTE2ICpyZWQsIHUxNiAqZ3JlZW4sCisJCQkJICB1MTYgKmJsdWUsIHVpbnQzMl90IHN0 YXJ0LCB1aW50MzJfdCBzaXplKTsKKwogI2VuZGlmIC8qIF9fSU5URUxfRFJWX0hfXyAqLwotLSAK Mi43LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=