From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville Syrjala Subject: [PATCH 7/8] drm/i915: Move linetime wms into the crtc state Date: Fri, 11 Oct 2019 23:09:48 +0300 Message-ID: <20191011200949.7839-8-ville.syrjala@linux.intel.com> References: <20191011200949.7839-1-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 04E5C6EC9D for ; Fri, 11 Oct 2019 20:10:15 +0000 (UTC) In-Reply-To: <20191011200949.7839-1-ville.syrjala@linux.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 RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KClRo ZSBsaW5ldGltZSB3YXRlcm1hcmtzIHJlYWxseSBoYXZlIHZlcnkgbGl0dGxlIGluIGNvbW1vbiB3 aXRoIHRoZQpwbGFuZSB3YXRlcm1hcmtzLiBJdCBsb29rcyB0byBiZSBjbGVhbmVyIHRvIHNpbXBs eSB0cmFjayB0aGVtIGluCnRoZSBjcnRjX3N0YXRlIGFuZCBwcm9ncmFtIHRoZW0gZnJvbSB0aGUg bm9ybWFsIG1vZGVzZXQvZmFzdHNldApwYXRocy4KClRoZSBvbmx5IGRhcmsgY2xvdWQgY29tZXMg ZnJvbSB0aGUgZmFjdCB0aGF0IHRoZSByZWdpc3RlciBpcwpzdGlsbCBzdXBwb3NlZGx5IHNpbmds ZSBidWZmZXJlZC4gU28gaW4gdGhlb3J5IGl0IG1pZ2h0IHN0aWxsCm5lZWQgc29tZSBmb3JtIG9m IHR3byBzdGFnZSBwcm9ncmFtbWluZy4gTm90ZSB0aGF0IGV2ZW4gdGhvdWdoCkhTVy9CRFdoYXZl IHR3byBzdGFnZSBwcm9ncmFtbWluZyB3ZSBuZXZlciBjb21wdXRlZCBhbnkgc3BlY2lhbAppbnRl cm1lZGlhdGUgdmFsdWVzIGZvciB0aGUgbGluZXRpbWUgd2F0ZXJtYXJrcywgYW5kIG9uIFNLTCsK d2UgZG9uJ3QgZXZlbiBoYXZlIHRoZSB0d28gc3RhZ2Ugc3R1ZmYgcGx1Z2dlZCBpbiBzaW5jZSBl dmVyeXRoaW5nCmVsc2UgaXMgZG91YmxlIGJ1ZmZlcmVkLiBTbyBsZXQncyBhc3N1bWUgaXQncyBh bGwgZmluZSBhbmQKY29udGludWUgZG9pbmcgd2hhdCB3ZSd2ZSBiZWVuIGRvaW5nLgoKQWN0dWFs bHkgb24gSFNXL0JEVyB0aGUgdmFsdWUgc2hvdWxkIG5vdCBldmVuIGNoYW5nZSB3aXRob3V0CmEg ZnVsbCBtb2Rlc2V0IHNpbmNlIGl0IGRvZXNuJ3QgYWNjb3VudCBmb3IgcGZpdCBkb3duc2NhbGlu Zy4KVGh1cyBvbmx5IGZhc3Rib290IG1pZ2h0IGJlIGFmZmVjdGVkLiBCdXQgb24gU0tMKyB0aGUg cGZpdApzY2FsaW5nIGZhY3RvciBpcyB0YWtlIGludG8gY29uc2lkZXJhdGlvbiBzbyB0aGUgdmFs dWUgbWF5CmNoYW5nZSBkdXJpbmcgYW55IGZhc3RzZXQuCgpBcyBhIGJvbnVzIHdlJ2xsIHBsdWcg dGhpcyB0aGluZyBpbnRvIHRoZSBzdGF0ZQpjaGVja2VyL2R1bXAgbm93LgoKU2lnbmVkLW9mZi1i eTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyAgfCAgOTQgKysrKysr KysrKysrKy0KIC4uLi9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaCAgICB8 ICAgNyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwg ICAxIC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICAgICAgICAgICB8IDEx NiArLS0tLS0tLS0tLS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgOTcgaW5zZXJ0aW9ucygrKSwg MTIxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5LmMKaW5kZXggOWVhYjY3YmJmNjFkLi4zZWI2ZjMzN2RmZjAgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCkBAIC02Mzk3LDYgKzYzOTcsMTYg QEAgc3RhdGljIHZvaWQgaWNsX3BpcGVfbWJ1c19lbmFibGUoc3RydWN0IGludGVsX2NydGMgKmNy dGMpCiAJSTkxNV9XUklURShQSVBFX01CVVNfREJPWF9DVEwocGlwZSksIHZhbCk7CiB9CiAKK3N0 YXRpYyB2b2lkIGhzd19zZXRfbGluZXRpbWVfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUpCit7CisJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9j cnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7CisKKwlJOTE1X1dSSVRFKFdNX0xJTkVU SU1FKGNydGMtPnBpcGUpLAorCQkgICBIU1dfTElORVRJTUUoY3J0Y19zdGF0ZS0+bGluZXRpbWUp IHwKKwkJICAgSFNXX0lQU19MSU5FVElNRShjcnRjX3N0YXRlLT5saW5ldGltZSkpOworfQorCiBz dGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpw aXBlX2NvbmZpZywKIAkJCQlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKIHsKQEAg LTY0NjUsNiArNjQ3NSw4IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19lbmFibGUoc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp IDwgOSkKIAkJaW50ZWxfZGlzYWJsZV9wcmltYXJ5X3BsYW5lKHBpcGVfY29uZmlnKTsKIAorCWhz d19zZXRfbGluZXRpbWVfd20ocGlwZV9jb25maWcpOworCiAJaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gMTEpCiAJCWljbF9zZXRfcGlwZV9jaGlja2VuKGludGVsX2NydGMpOwogCkBAIC0xMDQw MSw2ICsxMDQxMyw3IEBAIHN0YXRpYyBib29sIGhhc3dlbGxfZ2V0X3BpcGVfY29uZmlnKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLAogCWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gcG93 ZXJfZG9tYWluOwogCXU2NCBwb3dlcl9kb21haW5fbWFzazsKIAlib29sIGFjdGl2ZTsKKwl1MzIg dG1wOwogCiAJaW50ZWxfY3J0Y19pbml0X3NjYWxlcnMoY3J0YywgcGlwZV9jb25maWcpOwogCkBA IC0xMDQ2NCw3ICsxMDQ3Nyw3IEBAIHN0YXRpYyBib29sIGhhc3dlbGxfZ2V0X3BpcGVfY29uZmln KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCXBpcGVfY29uZmlnLT5jc2NfbW9kZSA9IEk5MTVf UkVBRChQSVBFX0NTQ19NT0RFKGNydGMtPnBpcGUpKTsKIAogCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID49IDkpIHsKLQkJdTMyIHRtcCA9IEk5MTVfUkVBRChTS0xfQk9UVE9NX0NPTE9SKGNydGMt PnBpcGUpKTsKKwkJdG1wID0gSTkxNV9SRUFEKFNLTF9CT1RUT01fQ09MT1IoY3J0Yy0+cGlwZSkp OwogCiAJCWlmICh0bXAgJiBTS0xfQk9UVE9NX0NPTE9SX0dBTU1BX0VOQUJMRSkKIAkJCXBpcGVf Y29uZmlnLT5nYW1tYV9lbmFibGUgPSB0cnVlOwpAQCAtMTA0NzcsNiArMTA0OTAsMTIgQEAgc3Rh dGljIGJvb2wgaGFzd2VsbF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMs CiAKIAlpbnRlbF9jb2xvcl9nZXRfY29uZmlnKHBpcGVfY29uZmlnKTsKIAorCXRtcCA9IEk5MTVf UkVBRChXTV9MSU5FVElNRShjcnRjLT5waXBlKSk7CisJcGlwZV9jb25maWctPmxpbmV0aW1lID0g UkVHX0ZJRUxEX0dFVChIU1dfTElORVRJTUVfTUFTSywgdG1wKTsKKwlpZiAoSVNfQlJPQURXRUxM KGRldl9wcml2KSB8fCBJU19IQVNXRUxMKGRldl9wcml2KSkKKwkJcGlwZV9jb25maWctPmlwc19s aW5ldGltZSA9CisJCQlSRUdfRklFTERfR0VUKEhTV19JUFNfTElORVRJTUVfTUFTSywgdG1wKTsK KwogCXBvd2VyX2RvbWFpbiA9IFBPV0VSX0RPTUFJTl9QSVBFX1BBTkVMX0ZJVFRFUihjcnRjLT5w aXBlKTsKIAlXQVJOX09OKHBvd2VyX2RvbWFpbl9tYXNrICYgQklUX1VMTChwb3dlcl9kb21haW4p KTsKIApAQCAtMTE3ODQsNiArMTE4MDMsNTMgQEAgc3RhdGljIGJvb2wgYzhfcGxhbmVzX2NoYW5n ZWQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlKQogCXJldHVy biAhb2xkX2NydGNfc3RhdGUtPmM4X3BsYW5lcyAhPSAhbmV3X2NydGNfc3RhdGUtPmM4X3BsYW5l czsKIH0KIAorc3RhdGljIHUxNiBoc3dfbGluZXRpbWVfd20oY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUpCit7CisJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUg KmFkanVzdGVkX21vZGUgPQorCQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOworCisJ aWYgKCFjcnRjX3N0YXRlLT5iYXNlLmVuYWJsZSkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gRElW X1JPVU5EX0NMT1NFU1QoYWRqdXN0ZWRfbW9kZS0+Y3J0Y19odG90YWwgKiAxMDAwICogOCwKKwkJ CQkgYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jayk7Cit9CisKK3N0YXRpYyB1MTYgaHN3X2lwc19s aW5ldGltZV93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKK3sK Kwljb25zdCBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSA9CisJCXRvX2ludGVsX2F0 b21pY19zdGF0ZShjcnRjX3N0YXRlLT5iYXNlLnN0YXRlKTsKKwljb25zdCBzdHJ1Y3QgZHJtX2Rp c3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9CisJCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVk X21vZGU7CisKKwlpZiAoIWNydGNfc3RhdGUtPmJhc2UuZW5hYmxlKQorCQlyZXR1cm4gMDsKKwor CXJldHVybiBESVZfUk9VTkRfQ0xPU0VTVChhZGp1c3RlZF9tb2RlLT5jcnRjX2h0b3RhbCAqIDEw MDAgKiA4LAorCQkJCSBzdGF0ZS0+Y2RjbGsubG9naWNhbC5jZGNsayk7Cit9CisKK3N0YXRpYyB1 MTYgc2tsX2xpbmV0aW1lX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlKQoreworCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0 YXRlLT5iYXNlLmNydGMpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoY3J0Yy0+YmFzZS5kZXYpOworCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICph ZGp1c3RlZF9tb2RlID0KKwkJJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwl1MTYg bGluZXRpbWVfd207CisKKwlpZiAoIWNydGNfc3RhdGUtPmJhc2UuZW5hYmxlKQorCQlyZXR1cm4g MDsKKworCWxpbmV0aW1lX3dtID0gRElWX1JPVU5EX1VQKGFkanVzdGVkX21vZGUtPmNydGNfaHRv dGFsICogMTAwMCAqIDgsCisJCQkJICAgY3J0Y19zdGF0ZS0+cGl4ZWxfcmF0ZSk7CisKKwkvKiBE aXNwbGF5IFdBICMxMTM1OiBCWFQ6QUxMIEdMSzpBTEwgKi8KKwlpZiAoSVNfR0VOOV9MUChkZXZf cHJpdikgJiYgZGV2X3ByaXYtPmlwY19lbmFibGVkKQorCQlsaW5ldGltZV93bSAvPSAyOworCisJ cmV0dXJuIGxpbmV0aW1lX3dtOworfQorCiBzdGF0aWMgaW50IGludGVsX2NydGNfYXRvbWljX2No ZWNrKHN0cnVjdCBkcm1fY3J0YyAqX2NydGMsCiAJCQkJICAgc3RydWN0IGRybV9jcnRjX3N0YXRl ICpfY3J0Y19zdGF0ZSkKIHsKQEAgLTExODYxLDYgKzExOTI3LDEzIEBAIHN0YXRpYyBpbnQgaW50 ZWxfY3J0Y19hdG9taWNfY2hlY2soc3RydWN0IGRybV9jcnRjICpfY3J0YywKIAlpZiAoSEFTX0lQ UyhkZXZfcHJpdikpCiAJCWNydGNfc3RhdGUtPmlwc19lbmFibGVkID0gaHN3X2NvbXB1dGVfaXBz X2NvbmZpZyhjcnRjX3N0YXRlKTsKIAorCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsK KwkJY3J0Y19zdGF0ZS0+bGluZXRpbWUgPSBza2xfbGluZXRpbWVfd20oY3J0Y19zdGF0ZSk7CisJ fSBlbHNlIGlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpIHx8IElTX0hBU1dFTEwoZGV2X3ByaXYp KSB7CisJCWNydGNfc3RhdGUtPmxpbmV0aW1lID0gaHN3X2xpbmV0aW1lX3dtKGNydGNfc3RhdGUp OworCQljcnRjX3N0YXRlLT5pcHNfbGluZXRpbWUgPSBoc3dfaXBzX2xpbmV0aW1lX3dtKGNydGNf c3RhdGUpOworCX0KKwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTEyMTU0LDYgKzEyMjI3LDkgQEAg c3RhdGljIHZvaWQgaW50ZWxfZHVtcF9waXBlX2NvbmZpZyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqcGlwZV9jb25maWcsCiAJCSAgICAgIHBpcGVfY29uZmlnLT5waXBlX3NyY193LCBw aXBlX2NvbmZpZy0+cGlwZV9zcmNfaCwKIAkJICAgICAgcGlwZV9jb25maWctPnBpeGVsX3JhdGUp OwogCisJRFJNX0RFQlVHX0tNUygibGluZXRpbWU6ICVkLCBpcHMgbGluZXRpbWU6ICVkXG4iLAor CQkgICAgICBwaXBlX2NvbmZpZy0+bGluZXRpbWUsIHBpcGVfY29uZmlnLT5pcHNfbGluZXRpbWUp OworCiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKIAkJRFJNX0RFQlVHX0tNUygibnVt X3NjYWxlcnM6ICVkLCBzY2FsZXJfdXNlcnM6IDB4JXgsIHNjYWxlcl9pZDogJWRcbiIsCiAJCQkg ICAgICBjcnRjLT5udW1fc2NhbGVycywKQEAgLTEyODM2LDEwICsxMjkxMiwxMiBAQCBpbnRlbF9w aXBlX2NvbmZpZ19jb21wYXJlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjdXJyZW50 X2NvbmZpZywKIAkJUElQRV9DT05GX0NIRUNLX0JPT0woZ2FtbWFfZW5hYmxlKTsKIAkJUElQRV9D T05GX0NIRUNLX0JPT0woY3NjX2VuYWJsZSk7CiAKKwkJUElQRV9DT05GX0NIRUNLX0kobGluZXRp bWUpOworCQlQSVBFX0NPTkZfQ0hFQ0tfSShpcHNfbGluZXRpbWUpOworCiAJCWJwX2dhbW1hID0g aW50ZWxfY29sb3JfZ2V0X2dhbW1hX2JpdF9wcmVjaXNpb24ocGlwZV9jb25maWcpOwogCQlpZiAo YnBfZ2FtbWEpCiAJCQlQSVBFX0NPTkZfQ0hFQ0tfQ09MT1JfTFVUKGdhbW1hX21vZGUsIGJhc2Uu Z2FtbWFfbHV0LCBicF9nYW1tYSk7Ci0KIAl9CiAKIAlQSVBFX0NPTkZfQ0hFQ0tfQk9PTChkb3Vi bGVfd2lkZSk7CkBAIC0xMzcxMSw2ICsxMzc4OSwxOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9waXBl X2Zhc3RzZXQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAog CQkJaXJvbmxha2VfcGZpdF9kaXNhYmxlKG9sZF9jcnRjX3N0YXRlKTsKIAl9CiAKKwkvKgorCSAq IFRoZSByZWdpc3RlciBpcyBzdXBwb3NlZGx5IHNpbmdsZSBidWZmZXJlZCBzbyBwZXJoYXBzCisJ ICogbm90IDEwMCUgY29ycmVjdCB0byBkbyB0aGlzIGhlcmUuIEJ1dCBTS0wrIGNhbGN1bGF0ZQor CSAqIHRoaXMgYmFzZWQgb24gdGhlIGFkanVzdCBwaXhlbCByYXRlIHNvIHBmaXQgY2hhbmdlcyBk bworCSAqIGFmZmVjdCBpdCBhbmQgc28gaXQgbXVzdCBiZSB1cGRhdGVkIGZvciBmYXN0c2V0cy4K KwkgKiBIU1cvQkRXIG9ubHkgcmVhbGx5IG5lZWQgdGhpcyBoZXJlIGZvciBmYXN0Ym9vdCwgYWZ0 ZXIKKwkgKiB0aGF0IHRoZSB2YWx1ZSBzaG91bGQgbm90IGNoYW5nZSB3aXRob3V0IGEgZnVsbCBt b2Rlc2V0LgorCSAqLworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkgfHwKKwkgICAgSVNf QlJPQURXRUxMKGRldl9wcml2KSB8fCBJU19IQVNXRUxMKGRldl9wcml2KSkKKwkJaHN3X3NldF9s aW5ldGltZV93bShuZXdfY3J0Y19zdGF0ZSk7CisKIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSAxMSkKIAkJaWNsX3NldF9waXBlX2NoaWNrZW4oY3J0Yyk7CiB9CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCmluZGV4IDg0MTk1MjMz MmM3ZS4uOWI2MDZlNTA3Nzc4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaApAQCAtNjMxLDggKzYzMSw2IEBAIHN0cnVjdCBpbnRl bF9jcnRjX3NjYWxlcl9zdGF0ZSB7CiAKIHN0cnVjdCBpbnRlbF9waXBlX3dtIHsKIAlzdHJ1Y3Qg aW50ZWxfd21fbGV2ZWwgd21bNV07Ci0JdTE2IGxpbmV0aW1lOwotCXUxNiBpcHNfbGluZXRpbWU7 CiAJYm9vbCBmYmNfd21fZW5hYmxlZDsKIAlib29sIHBpcGVfZW5hYmxlZDsKIAlib29sIHNwcml0 ZXNfZW5hYmxlZDsKQEAgLTY0OCw3ICs2NDYsNiBAQCBzdHJ1Y3Qgc2tsX3BsYW5lX3dtIHsKIAog c3RydWN0IHNrbF9waXBlX3dtIHsKIAlzdHJ1Y3Qgc2tsX3BsYW5lX3dtIHBsYW5lc1tJOTE1X01B WF9QTEFORVNdOwotCXUzMiBsaW5ldGltZTsKIH07CiAKIGVudW0gdmx2X3dtX2xldmVsIHsKQEAg LTk5MCw2ICs5ODcsMTAgQEAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgewogCX0gZHNjX3BhcmFt czsKIAlzdHJ1Y3QgZHJtX2RzY19jb25maWcgZHBfZHNjX2NmZzsKIAorCS8qIEhTVysgbGluZXRp bWUgd2F0ZXJtYXJrcyAqLworCXUxNiBsaW5ldGltZTsKKwl1MTYgaXBzX2xpbmV0aW1lOworCiAJ LyogRm9yd2FyZCBFcnJvciBjb3JyZWN0aW9uIFN0YXRlICovCiAJYm9vbCBmZWNfZW5hYmxlOwog fTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IGM0NmIzMzkwNjRjMC4uZWJhOTA1NWM0NDA1 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTg0Miw3ICs4NDIsNiBAQCBzdHJ1Y3QgaWxr X3dtX3ZhbHVlcyB7CiAJdTMyIHdtX3BpcGVbM107CiAJdTMyIHdtX2xwWzNdOwogCXUzMiB3bV9s cF9zcHJbM107Ci0JdTMyIHdtX2xpbmV0aW1lWzNdOwogCWJvb2wgZW5hYmxlX2ZiY193bTsKIAll bnVtIGludGVsX2RkYl9wYXJ0aXRpb25pbmcgcGFydGl0aW9uaW5nOwogfTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wbS5jCmluZGV4IGY2ODkzYjc3MTA3OC4uMzkwZDFmOGQ0NWJhIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BtLmMKQEAgLTI3NjMsMzQgKzI3NjMsNiBAQCBzdGF0aWMgdm9pZCBpbGtfY29tcHV0 ZV93bV9sZXZlbChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJcmVz dWx0LT5lbmFibGUgPSB0cnVlOwogfQogCi1zdGF0aWMgdTMyCi1oc3dfbGluZXRpbWVfd20oY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCi17Ci0JY29uc3Qgc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQotCQkmY3J0Y19zdGF0ZS0+YmFzZS5h ZGp1c3RlZF9tb2RlOwotCi0JaWYgKCFjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkKLQkJcmV0dXJu IDA7Ci0KLQlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1QoYWRqdXN0ZWRfbW9kZS0+Y3J0Y19odG90 YWwgKiAxMDAwICogOCwKLQkJCQkgYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jayk7Ci19Ci0KLXN0 YXRpYyB1MzIKLWhzd19pcHNfbGluZXRpbWVfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUpCi17Ci0JY29uc3Qgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3Rh dGUgPQotCQl0b19pbnRlbF9hdG9taWNfc3RhdGUoY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZSk7Ci0J Y29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQotCQkmY3J0Y19z dGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOwotCi0JaWYgKCFjcnRjX3N0YXRlLT5iYXNlLmFjdGl2 ZSkKLQkJcmV0dXJuIDA7Ci0KLQlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1QoYWRqdXN0ZWRfbW9k ZS0+Y3J0Y19odG90YWwgKiAxMDAwICogOCwKLQkJCQkgc3RhdGUtPmNkY2xrLmxvZ2ljYWwuY2Rj bGspOwotfQotCiBzdGF0aWMgdm9pZCBpbnRlbF9yZWFkX3dtX2xhdGVuY3koc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSAgdTE2IHdtWzhdKQogewpAQCAtMzEyOCwxMSAr MzEwMCw2IEBAIHN0YXRpYyBpbnQgaWxrX2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAlpbGtfY29tcHV0ZV93bV9sZXZlbChkZXZfcHJpdiwgaW50 ZWxfY3J0YywgMCwgY3J0Y19zdGF0ZSwKIAkJCSAgICAgcHJpc3RhdGUsIHNwcnN0YXRlLCBjdXJz dGF0ZSwgJnBpcGVfd20tPndtWzBdKTsKIAotCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJ U19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7Ci0JCXBpcGVfd20tPmxpbmV0aW1lID0gaHN3X2xpbmV0 aW1lX3dtKGNydGNfc3RhdGUpOwotCQlwaXBlX3dtLT5pcHNfbGluZXRpbWUgPSBoc3dfaXBzX2xp bmV0aW1lX3dtKGNydGNfc3RhdGUpOwotCX0KLQogCWlmICghaWxrX3ZhbGlkYXRlX3BpcGVfd20o ZGV2X3ByaXYsIHBpcGVfd20pKQogCQlyZXR1cm4gLUVJTlZBTDsKIApAQCAtMzM4NCwxMCArMzM1 MSw2IEBAIHN0YXRpYyB2b2lkIGlsa19jb21wdXRlX3dtX3Jlc3VsdHMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAogCQlpZiAoV0FSTl9PTighci0+ZW5hYmxlKSkKIAkJCWNvbnRp bnVlOwogCi0JCXJlc3VsdHMtPndtX2xpbmV0aW1lW3BpcGVdID0KLQkJCUhTV19MSU5FVElNRShw aXBlX3dtLT5saW5ldGltZSkgfAotCQkJSFNXX0lQU19MSU5FVElNRShwaXBlX3dtLT5pcHNfbGlu ZXRpbWUpOwotCiAJCXJlc3VsdHMtPndtX3BpcGVbcGlwZV0gPQogCQkJKHItPnByaV92YWwgPDwg V00wX1BJUEVfUExBTkVfU0hJRlQpIHwKIAkJCShyLT5zcHJfdmFsIDw8IFdNMF9QSVBFX1NQUklU RV9TSElGVCkgfApAQCAtMzQyNiw3ICszMzg5LDYgQEAgaWxrX2ZpbmRfYmVzdF9yZXN1bHQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCiAvKiBkaXJ0eSBiaXRzIHVzZWQgdG8g dHJhY2sgd2hpY2ggd2F0ZXJtYXJrcyBuZWVkIGNoYW5nZXMgKi8KICNkZWZpbmUgV01fRElSVFlf UElQRShwaXBlKSAoMSA8PCAocGlwZSkpCi0jZGVmaW5lIFdNX0RJUlRZX0xJTkVUSU1FKHBpcGUp ICgxIDw8ICg4ICsgKHBpcGUpKSkKICNkZWZpbmUgV01fRElSVFlfTFAod21fbHApICgxIDw8ICgx NSArICh3bV9scCkpKQogI2RlZmluZSBXTV9ESVJUWV9MUF9BTEwgKFdNX0RJUlRZX0xQKDEpIHwg V01fRElSVFlfTFAoMikgfCBXTV9ESVJUWV9MUCgzKSkKICNkZWZpbmUgV01fRElSVFlfRkJDICgx IDw8IDI0KQpAQCAtMzQ0MSwxMiArMzQwMyw2IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgaWxrX2Nv bXB1dGVfd21fZGlydHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCWludCB3 bV9scDsKIAogCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpIHsKLQkJaWYgKG9sZC0+d21f bGluZXRpbWVbcGlwZV0gIT0gbmV3LT53bV9saW5ldGltZVtwaXBlXSkgewotCQkJZGlydHkgfD0g V01fRElSVFlfTElORVRJTUUocGlwZSk7Ci0JCQkvKiBNdXN0IGRpc2FibGUgTFAxKyB3YXRlcm1h cmtzIHRvbyAqLwotCQkJZGlydHkgfD0gV01fRElSVFlfTFBfQUxMOwotCQl9Ci0KIAkJaWYgKG9s ZC0+d21fcGlwZVtwaXBlXSAhPSBuZXctPndtX3BpcGVbcGlwZV0pIHsKIAkJCWRpcnR5IHw9IFdN X0RJUlRZX1BJUEUocGlwZSk7CiAJCQkvKiBNdXN0IGRpc2FibGUgTFAxKyB3YXRlcm1hcmtzIHRv byAqLwpAQCAtMzUzOCwxMyArMzQ5NCw2IEBAIHN0YXRpYyB2b2lkIGlsa193cml0ZV93bV92YWx1 ZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCWlmIChkaXJ0eSAmIFdNX0RJ UlRZX1BJUEUoUElQRV9DKSkKIAkJSTkxNV9XUklURShXTTBfUElQRUNfSVZCLCByZXN1bHRzLT53 bV9waXBlWzJdKTsKIAotCWlmIChkaXJ0eSAmIFdNX0RJUlRZX0xJTkVUSU1FKFBJUEVfQSkpCi0J CUk5MTVfV1JJVEUoV01fTElORVRJTUUoUElQRV9BKSwgcmVzdWx0cy0+d21fbGluZXRpbWVbMF0p OwotCWlmIChkaXJ0eSAmIFdNX0RJUlRZX0xJTkVUSU1FKFBJUEVfQikpCi0JCUk5MTVfV1JJVEUo V01fTElORVRJTUUoUElQRV9CKSwgcmVzdWx0cy0+d21fbGluZXRpbWVbMV0pOwotCWlmIChkaXJ0 eSAmIFdNX0RJUlRZX0xJTkVUSU1FKFBJUEVfQykpCi0JCUk5MTVfV1JJVEUoV01fTElORVRJTUUo UElQRV9DKSwgcmVzdWx0cy0+d21fbGluZXRpbWVbMl0pOwotCiAJaWYgKGRpcnR5ICYgV01fRElS VFlfRERCKSB7CiAJCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2 X3ByaXYpKSB7CiAJCQl2YWwgPSBJOTE1X1JFQUQoV01fTUlTQyk7CkBAIC00ODg0LDI0ICs0ODMz LDYgQEAgc2tsX2NvbXB1dGVfd21fbGV2ZWxzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAogCX0KIH0KIAotc3RhdGljIHUzMgotc2tsX2NvbXB1dGVfbGluZXRpbWVf d20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCi17Ci0Jc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZTsKLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5kZXYpOwotCXVp bnRfZml4ZWRfMTZfMTZfdCBsaW5ldGltZV91czsKLQl1MzIgbGluZXRpbWVfd207Ci0KLQlsaW5l dGltZV91cyA9IGludGVsX2dldF9saW5ldGltZV91cyhjcnRjX3N0YXRlKTsKLQlsaW5ldGltZV93 bSA9IGZpeGVkMTZfdG9fdTMyX3JvdW5kX3VwKG11bF91MzJfZml4ZWQxNig4LCBsaW5ldGltZV91 cykpOwotCi0JLyogRGlzcGxheSBXQSAjMTEzNTogQlhUOkFMTCBHTEs6QUxMICovCi0JaWYgKElT X0dFTjlfTFAoZGV2X3ByaXYpICYmIGRldl9wcml2LT5pcGNfZW5hYmxlZCkKLQkJbGluZXRpbWVf d20gLz0gMjsKLQotCXJldHVybiBsaW5ldGltZV93bTsKLX0KLQogc3RhdGljIHZvaWQgc2tsX2Nv bXB1dGVfdHJhbnNpdGlvbl93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSwKIAkJCQkgICAgICBjb25zdCBzdHJ1Y3Qgc2tsX3dtX3BhcmFtcyAqd3AsCiAJCQkJICAg ICAgc3RydWN0IHNrbF9wbGFuZV93bSAqd20pCkBAIC01MDg5LDggKzUwMjAsNiBAQCBzdGF0aWMg aW50IHNrbF9idWlsZF9waXBlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl KQogCQkJcmV0dXJuIHJldDsKIAl9CiAKLQlwaXBlX3dtLT5saW5ldGltZSA9IHNrbF9jb21wdXRl X2xpbmV0aW1lX3dtKGNydGNfc3RhdGUpOwotCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTUyMTUsNyAr NTE0NCw3IEBAIHN0YXRpYyBib29sIHNrbF9waXBlX3dtX2VxdWFscyhzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKIAkJCXJldHVybiBmYWxzZTsKIAl9CiAKLQlyZXR1cm4gd20xLT5saW5ldGltZSA9 PSB3bTItPmxpbmV0aW1lOworCXJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wg c2tsX2RkYl9lbnRyaWVzX292ZXJsYXAoY29uc3Qgc3RydWN0IHNrbF9kZGJfZW50cnkgKmEsCkBA IC01NTkxLDM4ICs1NTIwLDYgQEAgc2tsX2NvbXB1dGVfd20oc3RydWN0IGludGVsX2F0b21pY19z dGF0ZSAqc3RhdGUpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIHNrbF9hdG9taWNfdXBk YXRlX2NydGNfd20oc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCi0JCQkJICAgICAg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCi17Ci0Jc3RydWN0IGludGVsX2Ny dGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Ci0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+YmFzZS5kZXYpOwot CXN0cnVjdCBza2xfcGlwZV93bSAqcGlwZV93bSA9ICZjcnRjX3N0YXRlLT53bS5za2wub3B0aW1h bDsKLQllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Ci0KLQlpZiAoKHN0YXRlLT53bV9yZXN1 bHRzLmRpcnR5X3BpcGVzICYgQklUKGNydGMtPnBpcGUpKSA9PSAwKQotCQlyZXR1cm47Ci0KLQlJ OTE1X1dSSVRFKFdNX0xJTkVUSU1FKHBpcGUpLCBIU1dfTElORVRJTUUocGlwZV93bS0+bGluZXRp bWUpKTsKLX0KLQotc3RhdGljIHZvaWQgc2tsX2luaXRpYWxfd20oc3RydWN0IGludGVsX2F0b21p Y19zdGF0ZSAqc3RhdGUsCi0JCQkgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSkKLXsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0 ZS0+YmFzZS5jcnRjKTsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGNydGMtPmJhc2UuZGV2KTsKLQlzdHJ1Y3Qgc2tsX2RkYl92YWx1ZXMgKnJlc3VsdHMgPSAm c3RhdGUtPndtX3Jlc3VsdHM7Ci0KLQlpZiAoKHJlc3VsdHMtPmRpcnR5X3BpcGVzICYgQklUKGNy dGMtPnBpcGUpKSA9PSAwKQotCQlyZXR1cm47Ci0KLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+d20u d21fbXV0ZXgpOwotCi0JaWYgKGNydGNfc3RhdGUtPmJhc2UuYWN0aXZlX2NoYW5nZWQpCi0JCXNr bF9hdG9taWNfdXBkYXRlX2NydGNfd20oc3RhdGUsIGNydGNfc3RhdGUpOwotCi0JbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+d20ud21fbXV0ZXgpOwotfQotCiBzdGF0aWMgdm9pZCBpbGtfY29tcHV0 ZV93bV9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSAgc3Ry dWN0IGludGVsX3dtX2NvbmZpZyAqY29uZmlnKQogewpAQCAtNTc0Myw5ICs1NjQwLDYgQEAgdm9p ZCBza2xfcGlwZV93bV9nZXRfaHdfc3RhdGUoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAKIAlp ZiAoIWNydGMtPmFjdGl2ZSkKIAkJcmV0dXJuOwotCi0JdmFsID0gSTkxNV9SRUFEKFdNX0xJTkVU SU1FKHBpcGUpKTsKLQlvdXQtPmxpbmV0aW1lID0gUkVHX0ZJRUxEX0dFVChIU1dfTElORVRJTUVf TUFTSywgdmFsKTsKIH0KIAogdm9pZCBza2xfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKQEAgLTU3ODYsOCArNTY4MCw2IEBAIHN0YXRpYyB2b2lkIGls a19waXBlX3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIAl9OwogCiAJ aHctPndtX3BpcGVbcGlwZV0gPSBJOTE1X1JFQUQod20wX3BpcGVfcmVnW3BpcGVdKTsKLQlpZiAo SVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkKLQkJaHctPndt X2xpbmV0aW1lW3BpcGVdID0gSTkxNV9SRUFEKFdNX0xJTkVUSU1FKHBpcGUpKTsKIAogCW1lbXNl dChhY3RpdmUsIDAsIHNpemVvZigqYWN0aXZlKSk7CiAKQEAgLTU4MDYsMTAgKzU2OTgsNiBAQCBz dGF0aWMgdm9pZCBpbGtfcGlwZV93bV9nZXRfaHdfc3RhdGUoc3RydWN0IGludGVsX2NydGMgKmNy dGMpCiAJCWFjdGl2ZS0+d21bMF0ucHJpX3ZhbCA9ICh0bXAgJiBXTTBfUElQRV9QTEFORV9NQVNL KSA+PiBXTTBfUElQRV9QTEFORV9TSElGVDsKIAkJYWN0aXZlLT53bVswXS5zcHJfdmFsID0gKHRt cCAmIFdNMF9QSVBFX1NQUklURV9NQVNLKSA+PiBXTTBfUElQRV9TUFJJVEVfU0hJRlQ7CiAJCWFj dGl2ZS0+d21bMF0uY3VyX3ZhbCA9IHRtcCAmIFdNMF9QSVBFX0NVUlNPUl9NQVNLOwotCQlhY3Rp dmUtPmxpbmV0aW1lID0gUkVHX0ZJRUxEX0dFVChIU1dfTElORVRJTUVfTUFTSywKLQkJCQkJCSBo dy0+d21fbGluZXRpbWVbcGlwZV0pOwotCQlhY3RpdmUtPmlwc19saW5ldGltZSA9IFJFR19GSUVM RF9HRVQoSFNXX0lQU19MSU5FVElNRV9NQVNLLAotCQkJCQkJICAgICBody0+d21fbGluZXRpbWVb cGlwZV0pOwogCX0gZWxzZSB7CiAJCWludCBsZXZlbCwgbWF4X2xldmVsID0gaWxrX3dtX21heF9s ZXZlbChkZXZfcHJpdik7CiAKQEAgLTg5OTMsOCArODg4MSw2IEBAIHZvaWQgaW50ZWxfaW5pdF9w bShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJLyogRm9yIEZJRk8gd2F0ZXJt YXJrIHVwZGF0ZXMgKi8KIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7CiAJCXNrbF9z ZXR1cF93bV9sYXRlbmN5KGRldl9wcml2KTsKLQkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdGlhbF93 YXRlcm1hcmtzID0gc2tsX2luaXRpYWxfd207Ci0JCWRldl9wcml2LT5kaXNwbGF5LmF0b21pY191 cGRhdGVfd2F0ZXJtYXJrcyA9IHNrbF9hdG9taWNfdXBkYXRlX2NydGNfd207CiAJCWRldl9wcml2 LT5kaXNwbGF5LmNvbXB1dGVfZ2xvYmFsX3dhdGVybWFya3MgPSBza2xfY29tcHV0ZV93bTsKIAl9 IGVsc2UgaWYgKEhBU19QQ0hfU1BMSVQoZGV2X3ByaXYpKSB7CiAJCWlsa19zZXR1cF93bV9sYXRl bmN5KGRldl9wcml2KTsKLS0gCjIuMjEuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4