From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin Subject: [PATCH 1/6] drm/i915: Extract out gamma table and CSC to their own file Date: Mon, 1 Feb 2016 15:18:32 +0000 Message-ID: <1454339917-31569-2-git-send-email-lionel.g.landwerlin@intel.com> References: <1454339917-31569-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: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id B768A6E48C for ; Mon, 1 Feb 2016 07:18:50 -0800 (PST) In-Reply-To: <1454339917-31569-1-git-send-email-lionel.g.landwerlin@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 U2lnbmVkLW9mZi1ieTogTGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50 ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICB8ICAgMSAr CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jICAgfCAxNzQgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYyB8IDE2MyArKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgIDEwICsrCiA0IGZpbGVzIGNoYW5nZWQsIDE5NyBp bnNlcnRpb25zKCspLCAxNTEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggMDg1 MWRlMDcuLjA1MTYzMDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxl CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCkBAIC01NSw2ICs1NSw3IEBAIGk5 MTUteSArPSBpbnRlbF9hdWRpby5vIFwKIAkgIGludGVsX2F0b21pYy5vIFwKIAkgIGludGVsX2F0 b21pY19wbGFuZS5vIFwKIAkgIGludGVsX2Jpb3MubyBcCisJICBpbnRlbF9jb2xvci5vIFwKIAkg IGludGVsX2Rpc3BsYXkubyBcCiAJICBpbnRlbF9mYmMubyBcCiAJICBpbnRlbF9maWZvX3VuZGVy cnVuLm8gXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uMzljYTIxNQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2NvbG9yLmMKQEAgLTAsMCArMSwxNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQg wqkgMjAxNSBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5 IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl ICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmlj dGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2Us IGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisg KiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv bnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj dCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdo dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAor ICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50 aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElT IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Mg T1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9S UyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBP UiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg VE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNU SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElO IFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImludGVsX2Rydi5oIgorCisvKgor ICogU2V0IHVwIHRoZSBwaXBlIENTQyB1bml0LgorICoKKyAqIEN1cnJlbnRseSBvbmx5IGZ1bGwg cmFuZ2UgUkdCIHRvIGxpbWl0ZWQgcmFuZ2UgUkdCIGNvbnZlcnNpb24KKyAqIGlzIHN1cHBvcnRl ZCwgYnV0IGV2ZW50dWFsbHkgdGhpcyBzaG91bGQgaGFuZGxlIHZhcmlvdXMKKyAqIFJHQjwtPllD YkNyIHNjZW5hcmlvcyBhcyB3ZWxsLgorICovCitzdGF0aWMgdm9pZCBpOXh4X2xvYWRfY3NjX21h dHJpeChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGNydGMtPmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOworCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0 YyhjcnRjKTsKKwlpbnQgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7CisJdWludDE2X3QgY29lZmYg PSAweDc4MDA7IC8qIDEuMCAqLworCisJLyoKKwkgKiBUT0RPOiBDaGVjayB3aGF0IGtpbmQgb2Yg dmFsdWVzIGFjdHVhbGx5IGNvbWUgb3V0IG9mIHRoZSBwaXBlCisJICogd2l0aCB0aGVzZSBjb2Vm Zi9wb3N0b2ZmIHZhbHVlcyBhbmQgYWRqdXN0IHRvIGdldCB0aGUgYmVzdAorCSAqIGFjY3VyYWN5 LiBQZXJoYXBzIHdlIGV2ZW4gbmVlZCB0byB0YWtlIHRoZSBicGMgdmFsdWUgaW50bworCSAqIGNv bnNpZGVyYXRpb24uCisJICovCisKKwlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5saW1pdGVkX2Nv bG9yX3JhbmdlKQorCQljb2VmZiA9ICgoMjM1IC0gMTYpICogKDEgPDwgMTIpIC8gMjU1KSAmIDB4 ZmY4OyAvKiAwLnh4eC4uLiAqLworCisJLyoKKwkgKiBHWS9HVSBhbmQgUlkvUlUgc2hvdWxkIGJl IHRoZSBvdGhlciB3YXkgYXJvdW5kIGFjY29yZGluZworCSAqIHRvIEJTcGVjLCBidXQgcmVhbGl0 eSBkb2Vzbid0IGFncmVlLiBKdXN0IHNldCB0aGVtIHVwIGluCisJICogYSB3YXkgdGhhdCByZXN1 bHRzIGluIHRoZSBjb3JyZWN0IHBpY3R1cmUuCisJICovCisJSTkxNV9XUklURShQSVBFX0NTQ19D T0VGRl9SWV9HWShwaXBlKSwgY29lZmYgPDwgMTYpOworCUk5MTVfV1JJVEUoUElQRV9DU0NfQ09F RkZfQlkocGlwZSksIDApOworCisJSTkxNV9XUklURShQSVBFX0NTQ19DT0VGRl9SVV9HVShwaXBl KSwgY29lZmYpOworCUk5MTVfV1JJVEUoUElQRV9DU0NfQ09FRkZfQlUocGlwZSksIDApOworCisJ STkxNV9XUklURShQSVBFX0NTQ19DT0VGRl9SVl9HVihwaXBlKSwgMCk7CisJSTkxNV9XUklURShQ SVBFX0NTQ19DT0VGRl9CVihwaXBlKSwgY29lZmYgPDwgMTYpOworCisJSTkxNV9XUklURShQSVBF X0NTQ19QUkVPRkZfSEkocGlwZSksIDApOworCUk5MTVfV1JJVEUoUElQRV9DU0NfUFJFT0ZGX01F KHBpcGUpLCAwKTsKKwlJOTE1X1dSSVRFKFBJUEVfQ1NDX1BSRU9GRl9MTyhwaXBlKSwgMCk7CisK KwlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPiA2KSB7CisJCXVpbnQxNl90IHBvc3RvZmYgPSAw OworCisJCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UpCisJCQlw b3N0b2ZmID0gKDE2ICogKDEgPDwgMTIpIC8gMjU1KSAmIDB4MWZmZjsKKworCQlJOTE1X1dSSVRF KFBJUEVfQ1NDX1BPU1RPRkZfSEkocGlwZSksIHBvc3RvZmYpOworCQlJOTE1X1dSSVRFKFBJUEVf Q1NDX1BPU1RPRkZfTUUocGlwZSksIHBvc3RvZmYpOworCQlJOTE1X1dSSVRFKFBJUEVfQ1NDX1BP U1RPRkZfTE8ocGlwZSksIHBvc3RvZmYpOworCisJCUk5MTVfV1JJVEUoUElQRV9DU0NfTU9ERShw aXBlKSwgMCk7CisJfSBlbHNlIHsKKwkJdWludDMyX3QgbW9kZSA9IENTQ19NT0RFX1lVVl9UT19S R0I7CisKKwkJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+bGltaXRlZF9jb2xvcl9yYW5nZSkKKwkJ CW1vZGUgfD0gQ1NDX0JMQUNLX1NDUkVFTl9PRkZTRVQ7CisKKwkJSTkxNV9XUklURShQSVBFX0NT Q19NT0RFKHBpcGUpLCBtb2RlKTsKKwl9Cit9CisKK3ZvaWQgaW50ZWxfY29sb3Jfc2V0X2NzYyhz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCit7CisJaTl4eF9sb2FkX2NzY19tYXRyaXgoY3J0Yyk7Cit9 CisKKy8qKiBMb2FkcyB0aGUgcGFsZXR0ZS9nYW1tYSB1bml0IGZvciB0aGUgQ1JUQyB3aXRoIHRo ZSBwcmVwYXJlZCB2YWx1ZXMgb24gICovCitzdGF0aWMgdm9pZCBpOXh4X2xvYWRfbGVnYWN5X2dh bW1hX2x1dChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGNydGMtPmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOworCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxf Y3J0YyhjcnRjKTsKKwllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7CisJaW50IGk7 CisJYm9vbCByZWVuYWJsZV9pcHMgPSBmYWxzZTsKKworCWlmIChIQVNfR01DSF9ESVNQTEFZKGRl dikpIHsKKwkJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+aGFzX2RzaV9lbmNvZGVyKQorCQkJYXNz ZXJ0X2RzaV9wbGxfZW5hYmxlZChkZXZfcHJpdik7CisJCWVsc2UKKwkJCWFzc2VydF9wbGxfZW5h YmxlZChkZXZfcHJpdiwgcGlwZSk7CisJfQorCisJLyogV29ya2Fyb3VuZCA6IERvIG5vdCByZWFk IG9yIHdyaXRlIHRoZSBwaXBlIHBhbGV0dGUvZ2FtbWEgZGF0YSB3aGlsZQorCSAqIEdBTU1BX01P REUgaXMgY29uZmlndXJlZCBmb3Igc3BsaXQgZ2FtbWEgYW5kIElQU19DVEwgaGFzIElQUyBlbmFi bGVkLgorCSAqLworCWlmIChJU19IQVNXRUxMKGRldikgJiYgaW50ZWxfY3J0Yy0+Y29uZmlnLT5p cHNfZW5hYmxlZCAmJgorCSAgICAoKEk5MTVfUkVBRChHQU1NQV9NT0RFKHBpcGUpKSAmIEdBTU1B X01PREVfTU9ERV9NQVNLKSA9PQorCSAgICAgR0FNTUFfTU9ERV9NT0RFX1NQTElUKSkgeworCQlo c3dfZGlzYWJsZV9pcHMoaW50ZWxfY3J0Yyk7CisJCXJlZW5hYmxlX2lwcyA9IHRydWU7CisJfQor CisJZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKSB7CisJCXVpbnQzMl90IHdvcmQgPSAoaW50ZWxf Y3J0Yy0+bHV0X3JbaV0gPDwgMTYpIHwKKwkJCShpbnRlbF9jcnRjLT5sdXRfZ1tpXSA8PCA4KSB8 CisJCQlpbnRlbF9jcnRjLT5sdXRfYltpXTsKKwkJaWYgKEhBU19HTUNIX0RJU1BMQVkoZGV2KSkK KwkJCUk5MTVfV1JJVEUoUEFMRVRURShwaXBlLCBpKSwgd29yZCk7CisJCWVsc2UKKwkJCUk5MTVf V1JJVEUoTEdDX1BBTEVUVEUocGlwZSwgaSksIHdvcmQpOworCX0KKworCUk5MTVfV1JJVEUoR0FN TUFfTU9ERShpbnRlbF9jcnRjLT5waXBlKSwgR0FNTUFfTU9ERV9NT0RFXzhCSVQpOworCisJaWYg KHJlZW5hYmxlX2lwcykKKwkJaHN3X2VuYWJsZV9pcHMoaW50ZWxfY3J0Yyk7Cit9CisKK3ZvaWQg aW50ZWxfY29sb3JfbG9hZF9nYW1tYV9sdXQoc3RydWN0IGRybV9jcnRjICpjcnRjKQoreworCS8q IFRoZSBjbG9ja3MgaGF2ZSB0byBiZSBvbiB0byBsb2FkIHRoZSBwYWxldHRlLiAqLworCWlmICgh Y3J0Yy0+c3RhdGUtPmFjdGl2ZSkKKwkJcmV0dXJuOworCisJaTl4eF9sb2FkX2xlZ2FjeV9nYW1t YV9sdXQoY3J0Yyk7Cit9CisKK3ZvaWQgaW50ZWxfY29sb3JfbGVnYWN5X2dhbW1hX3NldChzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsIHUxNiAqcmVkLCB1MTYgKmdyZWVuLAorCQkJCSAgdTE2ICpibHVl LCB1aW50MzJfdCBzdGFydCwgdWludDMyX3Qgc2l6ZSkKK3sKKwlpbnQgZW5kID0gKHN0YXJ0ICsg c2l6ZSA+IDI1NikgPyAyNTYgOiBzdGFydCArIHNpemUsIGk7CisJc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOworCisJZm9yIChpID0gc3RhcnQ7IGkg PCBlbmQ7IGkrKykgeworCQlpbnRlbF9jcnRjLT5sdXRfcltpXSA9IHJlZFtpXSA+PiA4OworCQlp bnRlbF9jcnRjLT5sdXRfZ1tpXSA9IGdyZWVuW2ldID4+IDg7CisJCWludGVsX2NydGMtPmx1dF9i W2ldID0gYmx1ZVtpXSA+PiA4OworCX0KKworCWludGVsX2NvbG9yX2xvYWRfZ2FtbWFfbHV0KGNy dGMpOworfQorCit2b2lkIGludGVsX2NvbG9yX2luaXQoc3RydWN0IGRybV9jcnRjICpjcnRjKQor eworCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsK KwlpbnQgaTsKKworCWRybV9tb2RlX2NydGNfc2V0X2dhbW1hX3NpemUoY3J0YywgMjU2KTsKKwlm b3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKKwkJaW50ZWxfY3J0Yy0+bHV0X3JbaV0gPSBpOwor CQlpbnRlbF9jcnRjLT5sdXRfZ1tpXSA9IGk7CisJCWludGVsX2NydGMtPmx1dF9iW2ldID0gaTsK Kwl9Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggYTY2MjIwYS4uMWZl ODlmMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTAxLDcgKzEwMSw2 IEBAIHN0YXRpYyB2b2lkIGludGVsX2NwdV90cmFuc2NvZGVyX3NldF9tX24oc3RydWN0IGludGVs X2NydGMgKmNydGMsCiAJCQkJCSBzdHJ1Y3QgaW50ZWxfbGlua19tX24gKm0yX24yKTsKIHN0YXRp YyB2b2lkIGlyb25sYWtlX3NldF9waXBlY29uZihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwogc3Rh dGljIHZvaWQgaGFzd2VsbF9zZXRfcGlwZWNvbmYoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKLXN0 YXRpYyB2b2lkIGludGVsX3NldF9waXBlX2NzYyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwogc3Rh dGljIHZvaWQgdmx2X3ByZXBhcmVfcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCQkJICAg IGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyk7CiBzdGF0aWMgdm9p ZCBjaHZfcHJlcGFyZV9wbGwoc3RydWN0IGludGVsX2NydGMgKmNydGMsCkBAIC0xMTY1LDcgKzEx NjQsNyBAQCB2b2lkIGFzc2VydF9wbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAogfQogCiAvKiBYWFg6IHRoZSBkc2kgcGxsIGlzIHNoYXJlZCBiZXR3ZWVuIE1JUEkgRFNJIHBv cnRzICovCi1zdGF0aWMgdm9pZCBhc3NlcnRfZHNpX3BsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsIGJvb2wgc3RhdGUpCit2b2lkIGFzc2VydF9kc2lfcGxsKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgYm9vbCBzdGF0ZSkKIHsKIAl1MzIgdmFsOwogCWJvb2wg Y3VyX3N0YXRlOwpAQCAtMTE3OSw4ICsxMTc4LDYgQEAgc3RhdGljIHZvaWQgYXNzZXJ0X2RzaV9w bGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBib29sIHN0YXRlKQogCSAgICAg IkRTSSBQTEwgc3RhdGUgYXNzZXJ0aW9uIGZhaWx1cmUgKGV4cGVjdGVkICVzLCBjdXJyZW50ICVz KVxuIiwKIAkJCW9ub2ZmKHN0YXRlKSwgb25vZmYoY3VyX3N0YXRlKSk7CiB9Ci0jZGVmaW5lIGFz c2VydF9kc2lfcGxsX2VuYWJsZWQoZCkgYXNzZXJ0X2RzaV9wbGwoZCwgdHJ1ZSkKLSNkZWZpbmUg YXNzZXJ0X2RzaV9wbGxfZGlzYWJsZWQoZCkgYXNzZXJ0X2RzaV9wbGwoZCwgZmFsc2UpCiAKIHN0 cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqCiBpbnRlbF9jcnRjX3RvX3NoYXJlZF9kcGxsKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjKQpAQCAtMzMxMSw3ICszMzA4LDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfdXBkYXRlX3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCQkgICAgICBw aXBlX2NvbmZpZy0+cGlwZV9zcmNfdywgcGlwZV9jb25maWctPnBpcGVfc3JjX2gpOwogCiAJaWYg KEhBU19EREkoZGV2KSkKLQkJaW50ZWxfc2V0X3BpcGVfY3NjKCZjcnRjLT5iYXNlKTsKKwkJaW50 ZWxfY29sb3Jfc2V0X2NzYygmY3J0Yy0+YmFzZSk7CiAKIAkvKgogCSAqIFVwZGF0ZSBwaXBlIHNp emUgYW5kIGFkanVzdCBmaXR0ZXIgaWYgbmVlZGVkOiB0aGUgcmVhc29uIGZvciB0aGlzIGlzCkBA IC00NjIyLDU1ICs0NjE5LDYgQEAgdm9pZCBoc3dfZGlzYWJsZV9pcHMoc3RydWN0IGludGVsX2Ny dGMgKmNydGMpCiAJaW50ZWxfd2FpdF9mb3JfdmJsYW5rKGRldiwgY3J0Yy0+cGlwZSk7CiB9CiAK LS8qKiBMb2FkcyB0aGUgcGFsZXR0ZS9nYW1tYSB1bml0IGZvciB0aGUgQ1JUQyB3aXRoIHRoZSBw cmVwYXJlZCB2YWx1ZXMgKi8KLXN0YXRpYyB2b2lkIGludGVsX2NydGNfbG9hZF9sdXQoc3RydWN0 IGRybV9jcnRjICpjcnRjKQotewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7 Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK LQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Ci0J ZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwotCWludCBpOwotCWJvb2wgcmVlbmFi bGVfaXBzID0gZmFsc2U7Ci0KLQkvKiBUaGUgY2xvY2tzIGhhdmUgdG8gYmUgb24gdG8gbG9hZCB0 aGUgcGFsZXR0ZS4gKi8KLQlpZiAoIWNydGMtPnN0YXRlLT5hY3RpdmUpCi0JCXJldHVybjsKLQot CWlmIChIQVNfR01DSF9ESVNQTEFZKGRldl9wcml2LT5kZXYpKSB7Ci0JCWlmIChpbnRlbF9jcnRj LT5jb25maWctPmhhc19kc2lfZW5jb2RlcikKLQkJCWFzc2VydF9kc2lfcGxsX2VuYWJsZWQoZGV2 X3ByaXYpOwotCQllbHNlCi0JCQlhc3NlcnRfcGxsX2VuYWJsZWQoZGV2X3ByaXYsIHBpcGUpOwot CX0KLQotCS8qIFdvcmthcm91bmQgOiBEbyBub3QgcmVhZCBvciB3cml0ZSB0aGUgcGlwZSBwYWxl dHRlL2dhbW1hIGRhdGEgd2hpbGUKLQkgKiBHQU1NQV9NT0RFIGlzIGNvbmZpZ3VyZWQgZm9yIHNw bGl0IGdhbW1hIGFuZCBJUFNfQ1RMIGhhcyBJUFMgZW5hYmxlZC4KLQkgKi8KLQlpZiAoSVNfSEFT V0VMTChkZXYpICYmIGludGVsX2NydGMtPmNvbmZpZy0+aXBzX2VuYWJsZWQgJiYKLQkgICAgKChJ OTE1X1JFQUQoR0FNTUFfTU9ERShwaXBlKSkgJiBHQU1NQV9NT0RFX01PREVfTUFTSykgPT0KLQkg ICAgIEdBTU1BX01PREVfTU9ERV9TUExJVCkpIHsKLQkJaHN3X2Rpc2FibGVfaXBzKGludGVsX2Ny dGMpOwotCQlyZWVuYWJsZV9pcHMgPSB0cnVlOwotCX0KLQotCWZvciAoaSA9IDA7IGkgPCAyNTY7 IGkrKykgewotCQlpOTE1X3JlZ190IHBhbHJlZzsKLQotCQlpZiAoSEFTX0dNQ0hfRElTUExBWShk ZXYpKQotCQkJcGFscmVnID0gUEFMRVRURShwaXBlLCBpKTsKLQkJZWxzZQotCQkJcGFscmVnID0g TEdDX1BBTEVUVEUocGlwZSwgaSk7Ci0KLQkJSTkxNV9XUklURShwYWxyZWcsCi0JCQkgICAoaW50 ZWxfY3J0Yy0+bHV0X3JbaV0gPDwgMTYpIHwKLQkJCSAgIChpbnRlbF9jcnRjLT5sdXRfZ1tpXSA8 PCA4KSB8Ci0JCQkgICBpbnRlbF9jcnRjLT5sdXRfYltpXSk7Ci0JfQotCi0JaWYgKHJlZW5hYmxl X2lwcykKLQkJaHN3X2VuYWJsZV9pcHMoaW50ZWxfY3J0Yyk7Ci19Ci0KIHN0YXRpYyB2b2lkIGlu dGVsX2NydGNfZHBtc19vdmVybGF5X2Rpc2FibGUoc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMpCiB7CiAJaWYgKGludGVsX2NydGMtPm92ZXJsYXkpIHsKQEAgLTQ5MDYsNyArNDg1NCw3IEBA IHN0YXRpYyB2b2lkIGlyb25sYWtlX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykK IAkgKiBPbiBJTEsrIExVVCBtdXN0IGJlIGxvYWRlZCBiZWZvcmUgdGhlIHBpcGUgaXMgcnVubmlu ZyBidXQgd2l0aAogCSAqIGNsb2NrcyBlbmFibGVkCiAJICovCi0JaW50ZWxfY3J0Y19sb2FkX2x1 dChjcnRjKTsKKwlpbnRlbF9jb2xvcl9sb2FkX2dhbW1hX2x1dChjcnRjKTsKIAogCWludGVsX3Vw ZGF0ZV93YXRlcm1hcmtzKGNydGMpOwogCWludGVsX2VuYWJsZV9waXBlKGludGVsX2NydGMpOwpA QCAtNDk3Miw3ICs0OTIwLDcgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpCiAKIAloYXN3ZWxsX3NldF9waXBlY29uZihjcnRjKTsKIAotCWlu dGVsX3NldF9waXBlX2NzYyhjcnRjKTsKKwlpbnRlbF9jb2xvcl9zZXRfY3NjKGNydGMpOwogCiAJ aW50ZWxfY3J0Yy0+YWN0aXZlID0gdHJ1ZTsKIApAQCAtNTAwMSw3ICs0OTQ5LDcgQEAgc3RhdGlj IHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJICogT24g SUxLKyBMVVQgbXVzdCBiZSBsb2FkZWQgYmVmb3JlIHRoZSBwaXBlIGlzIHJ1bm5pbmcgYnV0IHdp dGgKIAkgKiBjbG9ja3MgZW5hYmxlZAogCSAqLwotCWludGVsX2NydGNfbG9hZF9sdXQoY3J0Yyk7 CisJaW50ZWxfY29sb3JfbG9hZF9nYW1tYV9sdXQoY3J0Yyk7CiAKIAlpbnRlbF9kZGlfc2V0X3Bp cGVfc2V0dGluZ3MoY3J0Yyk7CiAJaWYgKCFpbnRlbF9jcnRjLT5jb25maWctPmhhc19kc2lfZW5j b2RlcikKQEAgLTYyMTYsNyArNjE2NCw3IEBAIHN0YXRpYyB2b2lkIHZhbGxleXZpZXdfY3J0Y19l bmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCiAJaTl4eF9wZml0X2VuYWJsZShpbnRlbF9j cnRjKTsKIAotCWludGVsX2NydGNfbG9hZF9sdXQoY3J0Yyk7CisJaW50ZWxfY29sb3JfbG9hZF9n YW1tYV9sdXQoY3J0Yyk7CiAKIAlpbnRlbF9lbmFibGVfcGlwZShpbnRlbF9jcnRjKTsKIApAQCAt NjI2OSw3ICs2MjE3LDcgQEAgc3RhdGljIHZvaWQgaTl4eF9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJt X2NydGMgKmNydGMpCiAKIAlpOXh4X3BmaXRfZW5hYmxlKGludGVsX2NydGMpOwogCi0JaW50ZWxf Y3J0Y19sb2FkX2x1dChjcnRjKTsKKwlpbnRlbF9jb2xvcl9sb2FkX2dhbW1hX2x1dChjcnRjKTsK IAogCWludGVsX3VwZGF0ZV93YXRlcm1hcmtzKGNydGMpOwogCWludGVsX2VuYWJsZV9waXBlKGlu dGVsX2NydGMpOwpAQCAtODc1NCw3MCArODcwMiw2IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3Nl dF9waXBlY29uZihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJUE9TVElOR19SRUFEKFBJUEVDT05G KHBpcGUpKTsKIH0KIAotLyoKLSAqIFNldCB1cCB0aGUgcGlwZSBDU0MgdW5pdC4KLSAqCi0gKiBD dXJyZW50bHkgb25seSBmdWxsIHJhbmdlIFJHQiB0byBsaW1pdGVkIHJhbmdlIFJHQiBjb252ZXJz aW9uCi0gKiBpcyBzdXBwb3J0ZWQsIGJ1dCBldmVudHVhbGx5IHRoaXMgc2hvdWxkIGhhbmRsZSB2 YXJpb3VzCi0gKiBSR0I8LT5ZQ2JDciBzY2VuYXJpb3MgYXMgd2VsbC4KLSAqLwotc3RhdGljIHZv aWQgaW50ZWxfc2V0X3BpcGVfY3NjKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKLXsKLQlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwotCWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsK LQl1aW50MTZfdCBjb2VmZiA9IDB4NzgwMDsgLyogMS4wICovCi0KLQkvKgotCSAqIFRPRE86IENo ZWNrIHdoYXQga2luZCBvZiB2YWx1ZXMgYWN0dWFsbHkgY29tZSBvdXQgb2YgdGhlIHBpcGUKLQkg KiB3aXRoIHRoZXNlIGNvZWZmL3Bvc3RvZmYgdmFsdWVzIGFuZCBhZGp1c3QgdG8gZ2V0IHRoZSBi ZXN0Ci0JICogYWNjdXJhY3kuIFBlcmhhcHMgd2UgZXZlbiBuZWVkIHRvIHRha2UgdGhlIGJwYyB2 YWx1ZSBpbnRvCi0JICogY29uc2lkZXJhdGlvbi4KLQkgKi8KLQotCWlmIChpbnRlbF9jcnRjLT5j b25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UpCi0JCWNvZWZmID0gKCgyMzUgLSAxNikgKiAoMSA8 PCAxMikgLyAyNTUpICYgMHhmZjg7IC8qIDAueHh4Li4uICovCi0KLQkvKgotCSAqIEdZL0dVIGFu ZCBSWS9SVSBzaG91bGQgYmUgdGhlIG90aGVyIHdheSBhcm91bmQgYWNjb3JkaW5nCi0JICogdG8g QlNwZWMsIGJ1dCByZWFsaXR5IGRvZXNuJ3QgYWdyZWUuIEp1c3Qgc2V0IHRoZW0gdXAgaW4KLQkg KiBhIHdheSB0aGF0IHJlc3VsdHMgaW4gdGhlIGNvcnJlY3QgcGljdHVyZS4KLQkgKi8KLQlJOTE1 X1dSSVRFKFBJUEVfQ1NDX0NPRUZGX1JZX0dZKHBpcGUpLCBjb2VmZiA8PCAxNik7Ci0JSTkxNV9X UklURShQSVBFX0NTQ19DT0VGRl9CWShwaXBlKSwgMCk7Ci0KLQlJOTE1X1dSSVRFKFBJUEVfQ1ND X0NPRUZGX1JVX0dVKHBpcGUpLCBjb2VmZik7Ci0JSTkxNV9XUklURShQSVBFX0NTQ19DT0VGRl9C VShwaXBlKSwgMCk7Ci0KLQlJOTE1X1dSSVRFKFBJUEVfQ1NDX0NPRUZGX1JWX0dWKHBpcGUpLCAw KTsKLQlJOTE1X1dSSVRFKFBJUEVfQ1NDX0NPRUZGX0JWKHBpcGUpLCBjb2VmZiA8PCAxNik7Ci0K LQlJOTE1X1dSSVRFKFBJUEVfQ1NDX1BSRU9GRl9ISShwaXBlKSwgMCk7Ci0JSTkxNV9XUklURShQ SVBFX0NTQ19QUkVPRkZfTUUocGlwZSksIDApOwotCUk5MTVfV1JJVEUoUElQRV9DU0NfUFJFT0ZG X0xPKHBpcGUpLCAwKTsKLQotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+IDYpIHsKLQkJdWlu dDE2X3QgcG9zdG9mZiA9IDA7Ci0KLQkJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+bGltaXRlZF9j b2xvcl9yYW5nZSkKLQkJCXBvc3RvZmYgPSAoMTYgKiAoMSA8PCAxMikgLyAyNTUpICYgMHgxZmZm OwotCi0JCUk5MTVfV1JJVEUoUElQRV9DU0NfUE9TVE9GRl9ISShwaXBlKSwgcG9zdG9mZik7Ci0J CUk5MTVfV1JJVEUoUElQRV9DU0NfUE9TVE9GRl9NRShwaXBlKSwgcG9zdG9mZik7Ci0JCUk5MTVf V1JJVEUoUElQRV9DU0NfUE9TVE9GRl9MTyhwaXBlKSwgcG9zdG9mZik7Ci0KLQkJSTkxNV9XUklU RShQSVBFX0NTQ19NT0RFKHBpcGUpLCAwKTsKLQl9IGVsc2UgewotCQl1aW50MzJfdCBtb2RlID0g Q1NDX01PREVfWVVWX1RPX1JHQjsKLQotCQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5saW1pdGVk X2NvbG9yX3JhbmdlKQotCQkJbW9kZSB8PSBDU0NfQkxBQ0tfU0NSRUVOX09GRlNFVDsKLQotCQlJ OTE1X1dSSVRFKFBJUEVfQ1NDX01PREUocGlwZSksIG1vZGUpOwotCX0KLX0KLQogc3RhdGljIHZv aWQgaGFzd2VsbF9zZXRfcGlwZWNvbmYoc3RydWN0IGRybV9jcnRjICpjcnRjKQogewogCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CkBAIC04ODQwLDkgKzg3MjQsNiBAQCBzdGF0 aWMgdm9pZCBoYXN3ZWxsX3NldF9waXBlY29uZihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJSTkx NV9XUklURShQSVBFQ09ORihjcHVfdHJhbnNjb2RlciksIHZhbCk7CiAJUE9TVElOR19SRUFEKFBJ UEVDT05GKGNwdV90cmFuc2NvZGVyKSk7CiAKLQlJOTE1X1dSSVRFKEdBTU1BX01PREUoaW50ZWxf Y3J0Yy0+cGlwZSksIEdBTU1BX01PREVfTU9ERV84QklUKTsKLQlQT1NUSU5HX1JFQUQoR0FNTUFf TU9ERShpbnRlbF9jcnRjLT5waXBlKSk7Ci0KIAlpZiAoSVNfQlJPQURXRUxMKGRldikgfHwgSU5U RUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgewogCQl2YWwgPSAwOwogCkBAIC0xMDIzMywyMSArMTAx MTQsNiBAQCBzdGF0aWMgYm9vbCBjdXJzb3Jfc2l6ZV9vayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAogCXJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2dhbW1hX3NldChz dHJ1Y3QgZHJtX2NydGMgKmNydGMsIHUxNiAqcmVkLCB1MTYgKmdyZWVuLAotCQkJCSB1MTYgKmJs dWUsIHVpbnQzMl90IHN0YXJ0LCB1aW50MzJfdCBzaXplKQotewotCWludCBlbmQgPSAoc3RhcnQg KyBzaXplID4gMjU2KSA/IDI1NiA6IHN0YXJ0ICsgc2l6ZSwgaTsKLQlzdHJ1Y3QgaW50ZWxfY3J0 YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Ci0KLQlmb3IgKGkgPSBzdGFydDsg aSA8IGVuZDsgaSsrKSB7Ci0JCWludGVsX2NydGMtPmx1dF9yW2ldID0gcmVkW2ldID4+IDg7Ci0J CWludGVsX2NydGMtPmx1dF9nW2ldID0gZ3JlZW5baV0gPj4gODsKLQkJaW50ZWxfY3J0Yy0+bHV0 X2JbaV0gPSBibHVlW2ldID4+IDg7Ci0JfQotCi0JaW50ZWxfY3J0Y19sb2FkX2x1dChjcnRjKTsK LX0KLQogLyogVkVTQSA2NDB4NDgweDcySHogbW9kZSB0byBzZXQgb24gdGhlIHBpcGUgKi8KIHN0 YXRpYyBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSBsb2FkX2RldGVjdF9tb2RlID0gewogCURSTV9N T0RFKCI2NDB4NDgwIiwgRFJNX01PREVfVFlQRV9ERUZBVUxULCAzMTUwMCwgNjQwLCA2NjQsCkBA IC0xMjAzNyw3ICsxMTkwMyw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19hdG9taWNfY2hlY2so c3RydWN0IGRybV9jcnRjICpjcnRjLAogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2hl bHBlcl9mdW5jcyBpbnRlbF9oZWxwZXJfZnVuY3MgPSB7CiAJLm1vZGVfc2V0X2Jhc2VfYXRvbWlj ID0gaW50ZWxfcGlwZV9zZXRfYmFzZV9hdG9taWMsCi0JLmxvYWRfbHV0ID0gaW50ZWxfY3J0Y19s b2FkX2x1dCwKKwkubG9hZF9sdXQgPSBpbnRlbF9jb2xvcl9sb2FkX2dhbW1hX2x1dCwKIAkuYXRv bWljX2JlZ2luID0gaW50ZWxfYmVnaW5fY3J0Y19jb21taXQsCiAJLmF0b21pY19mbHVzaCA9IGlu dGVsX2ZpbmlzaF9jcnRjX2NvbW1pdCwKIAkuYXRvbWljX2NoZWNrID0gaW50ZWxfY3J0Y19hdG9t aWNfY2hlY2ssCkBAIC0xMzY1Niw3ICsxMzUyMiw3IEBAIG91dDoKICN1bmRlZiBmb3JfZWFjaF9p bnRlbF9jcnRjX21hc2tlZAogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2Z1bmNzIGlu dGVsX2NydGNfZnVuY3MgPSB7Ci0JLmdhbW1hX3NldCA9IGludGVsX2NydGNfZ2FtbWFfc2V0LAor CS5nYW1tYV9zZXQgPSBpbnRlbF9jb2xvcl9sZWdhY3lfZ2FtbWFfc2V0LAogCS5zZXRfY29uZmln ID0gZHJtX2F0b21pY19oZWxwZXJfc2V0X2NvbmZpZywKIAkuZGVzdHJveSA9IGludGVsX2NydGNf ZGVzdHJveSwKIAkucGFnZV9mbGlwID0gaW50ZWxfY3J0Y19wYWdlX2ZsaXAsCkBAIC0xNDI2MSw3 ICsxNDEyNyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2NydGNfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCBpbnQgcGlwZSkKIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9 IE5VTEw7CiAJc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSA9IE5VTEw7CiAJc3RydWN0IGRybV9w bGFuZSAqY3Vyc29yID0gTlVMTDsKLQlpbnQgaSwgcmV0OworCWludCByZXQ7CiAKIAlpbnRlbF9j cnRjID0ga3phbGxvYyhzaXplb2YoKmludGVsX2NydGMpLCBHRlBfS0VSTkVMKTsKIAlpZiAoaW50 ZWxfY3J0YyA9PSBOVUxMKQpAQCAtMTQyOTcsMTMgKzE0MTYzLDYgQEAgc3RhdGljIHZvaWQgaW50 ZWxfY3J0Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBwaXBlKQogCWlmIChyZXQp CiAJCWdvdG8gZmFpbDsKIAotCWRybV9tb2RlX2NydGNfc2V0X2dhbW1hX3NpemUoJmludGVsX2Ny dGMtPmJhc2UsIDI1Nik7Ci0JZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKSB7Ci0JCWludGVsX2Ny dGMtPmx1dF9yW2ldID0gaTsKLQkJaW50ZWxfY3J0Yy0+bHV0X2dbaV0gPSBpOwotCQlpbnRlbF9j cnRjLT5sdXRfYltpXSA9IGk7Ci0JfQotCiAJLyoKIAkgKiBPbiBnZW4yLzMgb25seSBwbGFuZSBB IGNhbiBkbyBmYmMsIGJ1dCB0aGUgcGFuZWwgZml0dGVyIGFuZCBsdmRzIHBvcnQKIAkgKiBpcyBo b29rZWQgdG8gcGlwZSBCLiBIZW5jZSB3ZSB3YW50IHBsYW5lIEEgZmVlZGluZyBwaXBlIEIuCkBA IC0xNDMyOCw2ICsxNDE4Nyw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2NydGNfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCBpbnQgcGlwZSkKIAogCWRybV9jcnRjX2hlbHBlcl9hZGQoJmludGVs X2NydGMtPmJhc2UsICZpbnRlbF9oZWxwZXJfZnVuY3MpOwogCisJaW50ZWxfY29sb3JfaW5pdCgm aW50ZWxfY3J0Yy0+YmFzZSk7CisKIAlXQVJOX09OKGRybV9jcnRjX2luZGV4KCZpbnRlbF9jcnRj LT5iYXNlKSAhPSBpbnRlbF9jcnRjLT5waXBlKTsKIAlyZXR1cm47CiAKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKaW5kZXggOTNiYTE0YS4uMTE1YzUzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKQEAgLTExNjgsNiArMTE2OCw5IEBAIHZvaWQgYXNzZXJ0X3BsbChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCiAJCWVudW0gcGlwZSBwaXBlLCBib29sIHN0YXRlKTsKICNkZWZp bmUgYXNzZXJ0X3BsbF9lbmFibGVkKGQsIHApIGFzc2VydF9wbGwoZCwgcCwgdHJ1ZSkKICNkZWZp bmUgYXNzZXJ0X3BsbF9kaXNhYmxlZChkLCBwKSBhc3NlcnRfcGxsKGQsIHAsIGZhbHNlKQordm9p ZCBhc3NlcnRfZHNpX3BsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wg c3RhdGUpOworI2RlZmluZSBhc3NlcnRfZHNpX3BsbF9lbmFibGVkKGQpIGFzc2VydF9kc2lfcGxs KGQsIHRydWUpCisjZGVmaW5lIGFzc2VydF9kc2lfcGxsX2Rpc2FibGVkKGQpIGFzc2VydF9kc2lf cGxsKGQsIGZhbHNlKQogdm9pZCBhc3NlcnRfZmRpX3J4X3BsbChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCiAJCSAgICAgICBlbnVtIHBpcGUgcGlwZSwgYm9vbCBzdGF0ZSk7CiAj ZGVmaW5lIGFzc2VydF9mZGlfcnhfcGxsX2VuYWJsZWQoZCwgcCkgYXNzZXJ0X2ZkaV9yeF9wbGwo ZCwgcCwgdHJ1ZSkKQEAgLTE2MTcsNCArMTYyMCwxMSBAQCB2b2lkIGludGVsX3BsYW5lX2Rlc3Ry b3lfc3RhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCQkgICAgICAgc3RydWN0IGRybV9w bGFuZV9zdGF0ZSAqc3RhdGUpOwogZXh0ZXJuIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVy X2Z1bmNzIGludGVsX3BsYW5lX2hlbHBlcl9mdW5jczsKIAorLyogaW50ZWxfY29sb3IuYyAqLwor dm9pZCBpbnRlbF9jb2xvcl9pbml0KHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Cit2b2lkIGludGVs X2NvbG9yX3NldF9jc2Moc3RydWN0IGRybV9jcnRjICpjcnRjKTsKK3ZvaWQgaW50ZWxfY29sb3Jf bG9hZF9nYW1tYV9sdXQoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKK3ZvaWQgaW50ZWxfY29sb3Jf bGVnYWN5X2dhbW1hX3NldChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHUxNiAqcmVkLCB1MTYgKmdy ZWVuLAorCQkJCSAgdTE2ICpibHVlLCB1aW50MzJfdCBzdGFydCwgdWludDMyX3Qgc2l6ZSk7CisK ICNlbmRpZiAvKiBfX0lOVEVMX0RSVl9IX18gKi8KLS0gCjIuNy4wCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=