From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mario Kleiner Subject: [PATCH 3/4] drm/amd/display: In VRR mode, do DRM core vblank handling at end of vblank. Date: Mon, 18 Mar 2019 18:19:51 +0100 Message-ID: <20190318171952.24302-4-mario.kleiner.de@gmail.com> References: <20190318171952.24302-1-mario.kleiner.de@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190318171952.24302-1-mario.kleiner.de@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: amd-gfx@lists.freedesktop.org Cc: nicholas.kazlauskas@amd.com, dri-devel@lists.freedesktop.org List-Id: amd-gfx.lists.freedesktop.org SW4gVlJSIG1vZGUsIHByb3BlciB2YmxhbmsvcGFnZWZsaXAgdGltZXN0YW1wcyBjYW4gb25seSBi ZSBjb21wdXRlZAphZnRlciB0aGUgZGlzcGxheSBzY2Fub3V0IHBvc2l0aW9uIGhhcyBsZWZ0IGZy b250LXBvcmNoLiBUaGVyZWZvcmUKZGVsYXkgY2FsbHMgdG8gZHJtX2NydGNfaGFuZGxlX3ZibGFu aygpLCBhbmQgdGhlcmVieSBjYWxscyB0bwpkcm1fdXBkYXRlX3ZibGFua19jb3VudCgpIGFuZCBw YWdlZmxpcCBldmVudCBkZWxpdmVyeSwgdG8gYWZ0ZXIgdGhlCmVuZCBvZiBmcm9udC1wb3JjaCB3 aGVuIGluIFZSUiBtb2RlLgoKV2UgYWRkIGEgbmV3IHZ1cGRhdGUgaXJxLCB3aGljaCB0cmlnZ2Vy cyBhdCB0aGUgZW5kIG9mIHRoZSB2dXBkYXRlCmludGVydmFsLCBpZS4gYXQgdGhlIGVuZCBvZiB2 YmxhbmssIGFuZCBjYWxscyB0aGUgY29yZSB2YmxhbmsgaGFuZGxlcgpmdW5jdGlvbi4gVGhlIG5l dyBpcnEgaGFuZGxlciBpcyBub3QgZXhlY3V0ZWQgaW4gc3RhbmRhcmQgbm9uLVZSUgptb2RlLCBz byB2YmxhbmsgaGFuZGxpbmcgZm9yIGZpeGVkIHJlZnJlc2ggcmF0ZSBtb2RlIGlzIGlkZW50aWNh bAp0byB0aGUgcGFzdCBpbXBsZW1lbnRhdGlvbi4KClNpZ25lZC1vZmYtYnk6IE1hcmlvIEtsZWlu ZXIgPG1hcmlvLmtsZWluZXIuZGVAZ21haWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdS5oICAgICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9h bWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMgIHwgMTI5ICsrKysrKysrKysrKysrKysr KysrLQogZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uaCAg fCAgIDkgKysKIC4uLi9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1faXJx LmMgIHwgIDIyICsrKysKIC4uLi9hbWQvZGlzcGxheS9kYy9pcnEvZGNlMTEwL2lycV9zZXJ2aWNl X2RjZTExMC5jIHwgICA3ICstCiAuLi4vYW1kL2Rpc3BsYXkvZGMvaXJxL2RjZTEyMC9pcnFfc2Vy dmljZV9kY2UxMjAuYyB8ICAgNyArLQogLi4uL2FtZC9kaXNwbGF5L2RjL2lycS9kY2U4MC9pcnFf c2VydmljZV9kY2U4MC5jICAgfCAgIDYgKy0KIC4uLi9hbWQvZGlzcGxheS9kYy9pcnEvZGNuMTAv aXJxX3NlcnZpY2VfZGNuMTAuYyAgIHwgIDQwICsrKysrLS0KIDggZmlsZXMgY2hhbmdlZCwgMjA1 IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1LmgKaW5kZXggZjg4NzYxYS4uNjQxNjdkZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1LmgKQEAgLTgyNyw2ICs4MjcsNyBAQCBzdHJ1Y3QgYW1kZ3B1X2RldmljZSB7CiAJLyogRm9y IHByZS1EQ0UxMS4gRENFMTEgYW5kIGxhdGVyIGFyZSBpbiAic3RydWN0IGFtZGdwdV9kZXZpY2Ut PmRtIiAqLwogCXN0cnVjdCB3b3JrX3N0cnVjdAkJaG90cGx1Z193b3JrOwogCXN0cnVjdCBhbWRn cHVfaXJxX3NyYwkJY3J0Y19pcnE7CisJc3RydWN0IGFtZGdwdV9pcnFfc3JjCQl2dXBkYXRlX2ly cTsKIAlzdHJ1Y3QgYW1kZ3B1X2lycV9zcmMJCXBhZ2VmbGlwX2lycTsKIAlzdHJ1Y3QgYW1kZ3B1 X2lycV9zcmMJCWhwZF9pcnE7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlz cGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkv YW1kZ3B1X2RtL2FtZGdwdV9kbS5jCmluZGV4IDg1ZTRmODcuLjU1NWQ5ZTlmIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMKQEAgLTMx NSw2ICszMTUsMzIgQEAgc3RhdGljIHZvaWQgZG1fcGZsaXBfaGlnaF9pcnEodm9pZCAqaW50ZXJy dXB0X3BhcmFtcykKIAlkcm1fY3J0Y192YmxhbmtfcHV0KCZhbWRncHVfY3J0Yy0+YmFzZSk7CiB9 CiAKK3N0YXRpYyB2b2lkIGRtX3Z1cGRhdGVfaGlnaF9pcnEodm9pZCAqaW50ZXJydXB0X3BhcmFt cykKK3sKKwlzdHJ1Y3QgY29tbW9uX2lycV9wYXJhbXMgKmlycV9wYXJhbXMgPSBpbnRlcnJ1cHRf cGFyYW1zOworCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gaXJxX3BhcmFtcy0+YWRldjsK KwlzdHJ1Y3QgYW1kZ3B1X2NydGMgKmFjcnRjOworCXN0cnVjdCBkbV9jcnRjX3N0YXRlICphY3J0 Y19zdGF0ZTsKKworCWFjcnRjID0gZ2V0X2NydGNfYnlfb3RnX2luc3QoYWRldiwgaXJxX3BhcmFt cy0+aXJxX3NyYyAtIElSUV9UWVBFX1ZVUERBVEUpOworCisJaWYgKGFjcnRjKSB7CisJCWFjcnRj X3N0YXRlID0gdG9fZG1fY3J0Y19zdGF0ZShhY3J0Yy0+YmFzZS5zdGF0ZSk7CisKKwkJRFJNX0RF QlVHX0RSSVZFUigiY3J0YzolZCwgdnVwZGF0ZS12cnI6JWRcbiIsIGFjcnRjLT5jcnRjX2lkLAor CQkJCSBhbWRncHVfZG1fdnJyX2FjdGl2ZShhY3J0Y19zdGF0ZSkpOworCisJCS8qIENvcmUgdmJs YW5rIGhhbmRsaW5nIGlzIGRvbmUgaGVyZSBhZnRlciBlbmQgb2YgZnJvbnQtcG9yY2ggaW4KKwkJ ICogdnJyIG1vZGUsIGFzIHZibGFuayB0aW1lc3RhbXBpbmcgd2lsbCBnaXZlIHZhbGlkIHJlc3Vs dHMKKwkJICogd2hpbGUgbm93IGRvbmUgYWZ0ZXIgZnJvbnQtcG9yY2guIFRoaXMgd2lsbCBhbHNv IGRlbGl2ZXIKKwkJICogcGFnZS1mbGlwIGNvbXBsZXRpb24gZXZlbnRzIHRoYXQgaGF2ZSBiZWVu IHF1ZXVlZCB0byB1cworCQkgKiBpZiBhIHBhZ2VmbGlwIGhhcHBlbmVkIGluc2lkZSBmcm9udC1w b3JjaC4KKwkJICovCisJCWlmIChhbWRncHVfZG1fdnJyX2FjdGl2ZShhY3J0Y19zdGF0ZSkpCisJ CQlkcm1fY3J0Y19oYW5kbGVfdmJsYW5rKCZhY3J0Yy0+YmFzZSk7CisJfQorfQorCiBzdGF0aWMg dm9pZCBkbV9jcnRjX2hpZ2hfaXJxKHZvaWQgKmludGVycnVwdF9wYXJhbXMpCiB7CiAJc3RydWN0 IGNvbW1vbl9pcnFfcGFyYW1zICppcnFfcGFyYW1zID0gaW50ZXJydXB0X3BhcmFtczsKQEAgLTMy NSwxMSArMzUxLDI0IEBAIHN0YXRpYyB2b2lkIGRtX2NydGNfaGlnaF9pcnEodm9pZCAqaW50ZXJy dXB0X3BhcmFtcykKIAlhY3J0YyA9IGdldF9jcnRjX2J5X290Z19pbnN0KGFkZXYsIGlycV9wYXJh bXMtPmlycV9zcmMgLSBJUlFfVFlQRV9WQkxBTkspOwogCiAJaWYgKGFjcnRjKSB7Ci0JCWRybV9j cnRjX2hhbmRsZV92YmxhbmsoJmFjcnRjLT5iYXNlKTsKLQkJYW1kZ3B1X2RtX2NydGNfaGFuZGxl X2NyY19pcnEoJmFjcnRjLT5iYXNlKTsKLQogCQlhY3J0Y19zdGF0ZSA9IHRvX2RtX2NydGNfc3Rh dGUoYWNydGMtPmJhc2Uuc3RhdGUpOwogCisJCURSTV9ERUJVR19EUklWRVIoImNydGM6JWQsIHZ1 cGRhdGUtdnJyOiVkXG4iLCBhY3J0Yy0+Y3J0Y19pZCwKKwkJCQkgYW1kZ3B1X2RtX3Zycl9hY3Rp dmUoYWNydGNfc3RhdGUpKTsKKworCQkvKiBDb3JlIHZibGFuayBoYW5kbGluZyBhdCBzdGFydCBv ZiBmcm9udC1wb3JjaCBpcyBvbmx5IHBvc3NpYmxlCisJCSAqIGluIG5vbi12cnIgbW9kZSwgYXMg b25seSB0aGVyZSB2YmxhbmsgdGltZXN0YW1waW5nIHdpbGwgZ2l2ZQorCQkgKiB2YWxpZCByZXN1 bHRzIHdoaWxlIGRvbmUgaW4gZnJvbnQtcG9yY2guIE90aGVyd2lzZSBkZWZlciBpdAorCQkgKiB0 byBkbV92dXBkYXRlX2hpZ2hfaXJxIGFmdGVyIGVuZCBvZiBmcm9udC1wb3JjaC4KKwkJICovCisJ CWlmICghYW1kZ3B1X2RtX3Zycl9hY3RpdmUoYWNydGNfc3RhdGUpKQorCQkJZHJtX2NydGNfaGFu ZGxlX3ZibGFuaygmYWNydGMtPmJhc2UpOworCisJCS8qIEZvbGxvd2luZyBzdHVmZiBtdXN0IGhh cHBlbiBhdCBzdGFydCBvZiB2YmxhbmssIGZvciBjcmMKKwkJICogY29tcHV0YXRpb24gYW5kIGJl bG93LXRoZS1yYW5nZSBidHIgc3VwcG9ydCBpbiB2cnIgbW9kZS4KKwkJICovCisJCWFtZGdwdV9k bV9jcnRjX2hhbmRsZV9jcmNfaXJxKCZhY3J0Yy0+YmFzZSk7CisKIAkJaWYgKGFjcnRjX3N0YXRl LT5zdHJlYW0gJiYKIAkJICAgIGFjcnRjX3N0YXRlLT52cnJfcGFyYW1zLnN1cHBvcnRlZCAmJgog CQkgICAgYWNydGNfc3RhdGUtPmZyZWVzeW5jX2NvbmZpZy5zdGF0ZSA9PSBWUlJfU1RBVEVfQUNU SVZFX1ZBUklBQkxFKSB7CkBAIC0xNDQ3LDYgKzE0ODYsMjcgQEAgc3RhdGljIGludCBkY2UxMTBf cmVnaXN0ZXJfaXJxX2hhbmRsZXJzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCQkJCWRt X2NydGNfaGlnaF9pcnEsIGNfaXJxX3BhcmFtcyk7CiAJfQogCisJLyogVXNlIFZVUERBVEUgaW50 ZXJydXB0ICovCisJZm9yIChpID0gVklTTEFORFMzMF9JVl9TUkNJRF9EMV9WX1VQREFURV9JTlQ7 IGkgPD0gVklTTEFORFMzMF9JVl9TUkNJRF9ENl9WX1VQREFURV9JTlQ7IGkrPTIpIHsKKwkJciA9 IGFtZGdwdV9pcnFfYWRkX2lkKGFkZXYsIGNsaWVudF9pZCwgaSwgJmFkZXYtPnZ1cGRhdGVfaXJx KTsKKwkJaWYgKHIpIHsKKwkJCURSTV9FUlJPUigiRmFpbGVkIHRvIGFkZCB2dXBkYXRlIGlycSBp ZCFcbiIpOworCQkJcmV0dXJuIHI7CisJCX0KKworCQlpbnRfcGFyYW1zLmludF9jb250ZXh0ID0g SU5URVJSVVBUX0hJR0hfSVJRX0NPTlRFWFQ7CisJCWludF9wYXJhbXMuaXJxX3NvdXJjZSA9CisJ CQlkY19pbnRlcnJ1cHRfdG9faXJxX3NvdXJjZShkYywgaSwgMCk7CisKKwkJY19pcnFfcGFyYW1z ID0gJmFkZXYtPmRtLnZ1cGRhdGVfcGFyYW1zW2ludF9wYXJhbXMuaXJxX3NvdXJjZSAtIERDX0lS UV9TT1VSQ0VfVlVQREFURTFdOworCisJCWNfaXJxX3BhcmFtcy0+YWRldiA9IGFkZXY7CisJCWNf aXJxX3BhcmFtcy0+aXJxX3NyYyA9IGludF9wYXJhbXMuaXJxX3NvdXJjZTsKKworCQlhbWRncHVf ZG1faXJxX3JlZ2lzdGVyX2ludGVycnVwdChhZGV2LCAmaW50X3BhcmFtcywKKwkJCQlkbV92dXBk YXRlX2hpZ2hfaXJxLCBjX2lycV9wYXJhbXMpOworCX0KKwogCS8qIFVzZSBHUlBIX1BGTElQIGlu dGVycnVwdCAqLwogCWZvciAoaSA9IFZJU0xBTkRTMzBfSVZfU1JDSURfRDFfR1JQSF9QRkxJUDsK IAkJCWkgPD0gVklTTEFORFMzMF9JVl9TUkNJRF9ENl9HUlBIX1BGTElQOyBpICs9IDIpIHsKQEAg LTE1MzIsNiArMTU5MiwzNCBAQCBzdGF0aWMgaW50IGRjbjEwX3JlZ2lzdGVyX2lycV9oYW5kbGVy cyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAkJCQlkbV9jcnRjX2hpZ2hfaXJxLCBjX2ly cV9wYXJhbXMpOwogCX0KIAorCS8qIFVzZSBWVVBEQVRFX05PX0xPQ0sgaW50ZXJydXB0IG9uIERD Tiwgd2hpY2ggc2VlbXMgdG8gY29ycmVzcG9uZCB0bworCSAqIHRoZSByZWd1bGFyIFZVUERBVEUg aW50ZXJydXB0IG9uIERDRS4gV2Ugd2FudCBEQ19JUlFfU09VUkNFX1ZVUERBVEV4CisJICogdG8g dHJpZ2dlciBhdCBlbmQgb2YgZWFjaCB2YmxhbmssIHJlZ2FyZGxlc3Mgb2Ygc3RhdGUgb2YgdGhl IGxvY2ssCisJICogbWF0Y2hpbmcgRENFIGJlaGF2aW91ci4KKwkgKi8KKwlmb3IgKGkgPSBEQ05f MV8wX19TUkNJRF9fT1RHMF9JSENfVl9VUERBVEVfTk9fTE9DS19JTlRFUlJVUFQ7CisJICAgICBp IDw9IERDTl8xXzBfX1NSQ0lEX19PVEcwX0lIQ19WX1VQREFURV9OT19MT0NLX0lOVEVSUlVQVCAr IGFkZXYtPm1vZGVfaW5mby5udW1fY3J0YyAtIDE7CisJICAgICBpKyspIHsKKwkJciA9IGFtZGdw dV9pcnFfYWRkX2lkKGFkZXYsIFNPQzE1X0lIX0NMSUVOVElEX0RDRSwgaSwgJmFkZXYtPnZ1cGRh dGVfaXJxKTsKKworCQlpZiAocikgeworCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gYWRkIHZ1cGRh dGUgaXJxIGlkIVxuIik7CisJCQlyZXR1cm4gcjsKKwkJfQorCisJCWludF9wYXJhbXMuaW50X2Nv bnRleHQgPSBJTlRFUlJVUFRfSElHSF9JUlFfQ09OVEVYVDsKKwkJaW50X3BhcmFtcy5pcnFfc291 cmNlID0KKwkJCWRjX2ludGVycnVwdF90b19pcnFfc291cmNlKGRjLCBpLCAwKTsKKworCQljX2ly cV9wYXJhbXMgPSAmYWRldi0+ZG0udnVwZGF0ZV9wYXJhbXNbaW50X3BhcmFtcy5pcnFfc291cmNl IC0gRENfSVJRX1NPVVJDRV9WVVBEQVRFMV07CisKKwkJY19pcnFfcGFyYW1zLT5hZGV2ID0gYWRl djsKKwkJY19pcnFfcGFyYW1zLT5pcnFfc3JjID0gaW50X3BhcmFtcy5pcnFfc291cmNlOworCisJ CWFtZGdwdV9kbV9pcnFfcmVnaXN0ZXJfaW50ZXJydXB0KGFkZXYsICZpbnRfcGFyYW1zLAorCQkJ CWRtX3Z1cGRhdGVfaGlnaF9pcnEsIGNfaXJxX3BhcmFtcyk7CisJfQorCiAJLyogVXNlIEdSUEhf UEZMSVAgaW50ZXJydXB0ICovCiAJZm9yIChpID0gRENOXzFfMF9fU1JDSURfX0hVQlAwX0ZMSVBf SU5URVJSVVBUOwogCQkJaSA8PSBEQ05fMV8wX19TUkNJRF9fSFVCUDBfRkxJUF9JTlRFUlJVUFQg KyBhZGV2LT5tb2RlX2luZm8ubnVtX2NydGMgLSAxOwpAQCAtMzIyNiwxMiArMzMxNCw0MiBAQCBk bV9jcnRjX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJcmV0dXJuICZz dGF0ZS0+YmFzZTsKIH0KIAorc3RhdGljIGlubGluZSBpbnQgZG1fc2V0X3Z1cGRhdGVfaXJxKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywgYm9vbCBlbmFibGUpCit7CisJZW51bSBkY19pcnFfc291cmNl IGlycV9zb3VyY2U7CisJc3RydWN0IGFtZGdwdV9jcnRjICphY3J0YyA9IHRvX2FtZGdwdV9jcnRj KGNydGMpOworCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gY3J0Yy0+ZGV2LT5kZXZfcHJp dmF0ZTsKKwlpbnQgcmM7CisKKwlpcnFfc291cmNlID0gSVJRX1RZUEVfVlVQREFURSArIGFjcnRj LT5vdGdfaW5zdDsKKworCXJjID0gZGNfaW50ZXJydXB0X3NldChhZGV2LT5kbS5kYywgaXJxX3Nv dXJjZSwgZW5hYmxlKSA/IDAgOiAtRUJVU1k7CisKKwlEUk1fREVCVUdfRFJJVkVSKCIlczogY3J0 YyAlZCAtIHZ1cGRhdGUgaXJxICVzYWJsaW5nOiByPSVkXG4iLAorCQkJIF9fZnVuY19fLCBhY3J0 Yy0+Y3J0Y19pZCwgZW5hYmxlID8gImVuIiA6ICJkaXMiLCByYyk7CisJcmV0dXJuIHJjOworfQog CiBzdGF0aWMgaW5saW5lIGludCBkbV9zZXRfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywg Ym9vbCBlbmFibGUpCiB7CiAJZW51bSBkY19pcnFfc291cmNlIGlycV9zb3VyY2U7CiAJc3RydWN0 IGFtZGdwdV9jcnRjICphY3J0YyA9IHRvX2FtZGdwdV9jcnRjKGNydGMpOwogCXN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2ID0gY3J0Yy0+ZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgZG1fY3J0 Y19zdGF0ZSAqYWNydGNfc3RhdGUgPSB0b19kbV9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKKwlp bnQgcmMgPSAwOworCisJaWYgKGVuYWJsZSkgeworCQkvKiB2YmxhbmsgaXJxIG9uIC0+IE9ubHkg bmVlZCB2dXBkYXRlIGlycSBpbiB2cnIgbW9kZSAqLworCQlpZiAoYW1kZ3B1X2RtX3Zycl9hY3Rp dmUoYWNydGNfc3RhdGUpKQorCQkJcmMgPSBkbV9zZXRfdnVwZGF0ZV9pcnEoY3J0YywgdHJ1ZSk7 CisJfQorCWVsc2UgeworCQkvKiB2YmxhbmsgaXJxIG9mZiAtPiB2dXBkYXRlIGlycSBvZmYgKi8K KwkJcmMgPSBkbV9zZXRfdnVwZGF0ZV9pcnEoY3J0YywgZmFsc2UpOworCX0KKworCWlmIChyYykK KwkJcmV0dXJuIHJjOwogCiAJaXJxX3NvdXJjZSA9IElSUV9UWVBFX1ZCTEFOSyArIGFjcnRjLT5v dGdfaW5zdDsKIAlyZXR1cm4gZGNfaW50ZXJydXB0X3NldChhZGV2LT5kbS5kYywgaXJxX3NvdXJj ZSwgZW5hYmxlKSA/IDAgOiAtRUJVU1k7CkBAIC00NzQxLDcgKzQ4NTksMTEgQEAgc3RhdGljIHZv aWQgYW1kZ3B1X2RtX2hhbmRsZV92cnJfdHJhbnNpdGlvbihzdHJ1Y3QgZG1fY3J0Y19zdGF0ZSAq b2xkX3N0YXRlLAogCQkgKiBXaGlsZSBWUlIgaXMgYWN0aXZlLCB3ZSBtdXN0IG5vdCBkaXNhYmxl IHZibGFuayBpcnEsIGFzIGEKIAkJICogcmVlbmFibGUgYWZ0ZXIgZGlzYWJsZSB3b3VsZCBjb21w dXRlIGJvZ3VzIHZibGFuay9wZmxpcAogCQkgKiB0aW1lc3RhbXBzIGlmIGl0IGxpa2VseSBoYXBw ZW5lZCBpbnNpZGUgZGlzcGxheSBmcm9udC1wb3JjaC4KKwkJICoKKwkJICogV2UgYWxzbyBuZWVk IHZ1cGRhdGUgaXJxIGZvciB0aGUgYWN0dWFsIGNvcmUgdmJsYW5rIGhhbmRsaW5nCisJCSAqIGF0 IGVuZCBvZiB2YmxhbmsuCiAJCSAqLworCQlkbV9zZXRfdnVwZGF0ZV9pcnEobmV3X3N0YXRlLT5i YXNlLmNydGMsIHRydWUpOwogCQlkcm1fY3J0Y192YmxhbmtfZ2V0KG5ld19zdGF0ZS0+YmFzZS5j cnRjKTsKIAkJRFJNX0RFQlVHX0RSSVZFUigiJXM6IGNydGM9JXUgVlJSIG9mZi0+b246IEdldCB2 YmxhbmsgcmVmXG4iLAogCQkJCSBfX2Z1bmNfXywgbmV3X3N0YXRlLT5iYXNlLmNydGMtPmJhc2Uu aWQpOwpAQCAtNDc1MCw2ICs0ODcyLDcgQEAgc3RhdGljIHZvaWQgYW1kZ3B1X2RtX2hhbmRsZV92 cnJfdHJhbnNpdGlvbihzdHJ1Y3QgZG1fY3J0Y19zdGF0ZSAqb2xkX3N0YXRlLAogCQkvKiBUcmFu c2l0aW9uIFZSUiBhY3RpdmUgLT4gaW5hY3RpdmU6CiAJCSAqIEFsbG93IHZibGFuayBpcnEgZGlz YWJsZSBhZ2FpbiBmb3IgZml4ZWQgcmVmcmVzaCByYXRlLgogCQkgKi8KKwkJZG1fc2V0X3Z1cGRh dGVfaXJxKG5ld19zdGF0ZS0+YmFzZS5jcnRjLCBmYWxzZSk7CiAJCWRybV9jcnRjX3ZibGFua19w dXQobmV3X3N0YXRlLT5iYXNlLmNydGMpOwogCQlEUk1fREVCVUdfRFJJVkVSKCIlczogY3J0Yz0l dSBWUlIgb24tPm9mZjogRHJvcCB2YmxhbmsgcmVmXG4iLAogCQkJCSBfX2Z1bmNfXywgbmV3X3N0 YXRlLT5iYXNlLmNydGMtPmJhc2UuaWQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlz cGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmgKaW5kZXggZjc0MWVhMy4uMGIzNWY4NCAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5oCkBA IC0xODIsNiArMTgyLDE1IEBAIHN0cnVjdCBhbWRncHVfZGlzcGxheV9tYW5hZ2VyIHsKIAlzdHJ1 Y3QgY29tbW9uX2lycV9wYXJhbXMKIAl2YmxhbmtfcGFyYW1zW0RDX0lSUV9TT1VSQ0VfVkJMQU5L NiAtIERDX0lSUV9TT1VSQ0VfVkJMQU5LMSArIDFdOwogCisJLyoqCisJICogQHZ1cGRhdGVfcGFy YW1zOgorCSAqCisJICogVmVydGljYWwgdXBkYXRlIElSUSBwYXJhbWV0ZXJzLCBwYXNzZWQgdG8g cmVnaXN0ZXJlZCBoYW5kbGVycyB3aGVuCisJICogdHJpZ2dlcmVkLgorCSAqLworCXN0cnVjdCBj b21tb25faXJxX3BhcmFtcworCXZ1cGRhdGVfcGFyYW1zW0RDX0lSUV9TT1VSQ0VfVlVQREFURTYg LSBEQ19JUlFfU09VUkNFX1ZVUERBVEUxICsgMV07CisKIAlzcGlubG9ja190IGlycV9oYW5kbGVy X2xpc3RfdGFibGVfbG9jazsKIAogCXN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpiYWNrbGlnaHRf ZGV2OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9h bWRncHVfZG1faXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2Ft ZGdwdV9kbV9pcnEuYwppbmRleCBjZDEwZjc3Li5mZWU3ODM3IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYwpAQCAtNjc0 LDExICs2NzQsMzAgQEAgc3RhdGljIGludCBhbWRncHVfZG1fc2V0X2NydGNfaXJxX3N0YXRlKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQlfX2Z1bmNfXyk7CiB9CiAKK3N0YXRpYyBpbnQg YW1kZ3B1X2RtX3NldF92dXBkYXRlX2lycV9zdGF0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwKKwkJCQkJICAgc3RydWN0IGFtZGdwdV9pcnFfc3JjICpzb3VyY2UsCisJCQkJCSAgIHVuc2ln bmVkIGNydGNfaWQsCisJCQkJCSAgIGVudW0gYW1kZ3B1X2ludGVycnVwdF9zdGF0ZSBzdGF0ZSkK K3sKKwlyZXR1cm4gZG1faXJxX3N0YXRlKAorCQlhZGV2LAorCQlzb3VyY2UsCisJCWNydGNfaWQs CisJCXN0YXRlLAorCQlJUlFfVFlQRV9WVVBEQVRFLAorCQlfX2Z1bmNfXyk7Cit9CisKIHN0YXRp YyBjb25zdCBzdHJ1Y3QgYW1kZ3B1X2lycV9zcmNfZnVuY3MgZG1fY3J0Y19pcnFfZnVuY3MgPSB7 CiAJLnNldCA9IGFtZGdwdV9kbV9zZXRfY3J0Y19pcnFfc3RhdGUsCiAJLnByb2Nlc3MgPSBhbWRn cHVfZG1faXJxX2hhbmRsZXIsCiB9OwogCitzdGF0aWMgY29uc3Qgc3RydWN0IGFtZGdwdV9pcnFf c3JjX2Z1bmNzIGRtX3Z1cGRhdGVfaXJxX2Z1bmNzID0geworCS5zZXQgPSBhbWRncHVfZG1fc2V0 X3Z1cGRhdGVfaXJxX3N0YXRlLAorCS5wcm9jZXNzID0gYW1kZ3B1X2RtX2lycV9oYW5kbGVyLAor fTsKKwogc3RhdGljIGNvbnN0IHN0cnVjdCBhbWRncHVfaXJxX3NyY19mdW5jcyBkbV9wYWdlZmxp cF9pcnFfZnVuY3MgPSB7CiAJLnNldCA9IGFtZGdwdV9kbV9zZXRfcGZsaXBfaXJxX3N0YXRlLAog CS5wcm9jZXNzID0gYW1kZ3B1X2RtX2lycV9oYW5kbGVyLApAQCAtNjk1LDYgKzcxNCw5IEBAIHZv aWQgYW1kZ3B1X2RtX3NldF9pcnFfZnVuY3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJ YWRldi0+Y3J0Y19pcnEubnVtX3R5cGVzID0gYWRldi0+bW9kZV9pbmZvLm51bV9jcnRjOwogCWFk ZXYtPmNydGNfaXJxLmZ1bmNzID0gJmRtX2NydGNfaXJxX2Z1bmNzOwogCisJYWRldi0+dnVwZGF0 ZV9pcnEubnVtX3R5cGVzID0gYWRldi0+bW9kZV9pbmZvLm51bV9jcnRjOworCWFkZXYtPnZ1cGRh dGVfaXJxLmZ1bmNzID0gJmRtX3Z1cGRhdGVfaXJxX2Z1bmNzOworCiAJYWRldi0+cGFnZWZsaXBf aXJxLm51bV90eXBlcyA9IGFkZXYtPm1vZGVfaW5mby5udW1fY3J0YzsKIAlhZGV2LT5wYWdlZmxp cF9pcnEuZnVuY3MgPSAmZG1fcGFnZWZsaXBfaXJxX2Z1bmNzOwogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaXJxL2RjZTExMC9pcnFfc2VydmljZV9kY2UxMTAu YyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pcnEvZGNlMTEwL2lycV9zZXJ2aWNl X2RjZTExMC5jCmluZGV4IGFmZTA4NzYuLjg2OTg3ZjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvZGlzcGxheS9kYy9pcnEvZGNlMTEwL2lycV9zZXJ2aWNlX2RjZTExMC5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pcnEvZGNlMTEwL2lycV9zZXJ2aWNlX2Rj ZTExMC5jCkBAIC04MSw2ICs4MSwxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9zb3VyY2Vf aW5mb19mdW5jcyB2YmxhbmtfaXJxX2luZm9fZnVuY3MgPSB7CiAJLmFjayA9IE5VTEwKIH07CiAK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX3NvdXJjZV9pbmZvX2Z1bmNzIHZ1cGRhdGVfaXJxX2lu Zm9fZnVuY3MgPSB7CisJLnNldCA9IE5VTEwsCisJLmFjayA9IE5VTEwKK307CisKICNkZWZpbmUg aHBkX2ludF9lbnRyeShyZWdfbnVtKVwKIAlbRENfSVJRX1NPVVJDRV9IUEQxICsgcmVnX251bV0g PSB7XAogCQkuZW5hYmxlX3JlZyA9IG1tSFBEICMjIHJlZ19udW0gIyMgX0RDX0hQRF9JTlRfQ09O VFJPTCxcCkBAIC0xMzcsNyArMTQyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfc291cmNl X2luZm9fZnVuY3MgdmJsYW5rX2lycV9pbmZvX2Z1bmNzID0gewogCQlDUlRDX1ZfVVBEQVRFX0lO VF9TVEFUVVNfX0NSVENfVl9VUERBVEVfSU5UX0NMRUFSX01BU0ssXAogCQkuYWNrX3ZhbHVlID1c CiAJCUNSVENfVl9VUERBVEVfSU5UX1NUQVRVU19fQ1JUQ19WX1VQREFURV9JTlRfQ0xFQVJfTUFT SyxcCi0JCS5mdW5jcyA9ICZ2YmxhbmtfaXJxX2luZm9fZnVuY3NcCisJCS5mdW5jcyA9ICZ2dXBk YXRlX2lycV9pbmZvX2Z1bmNzXAogCX0KIAogI2RlZmluZSB2YmxhbmtfaW50X2VudHJ5KHJlZ19u dW0pXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2lycS9kY2Ux MjAvaXJxX3NlcnZpY2VfZGNlMTIwLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMv aXJxL2RjZTEyMC9pcnFfc2VydmljZV9kY2UxMjAuYwppbmRleCAxZWE3MjU2Li43NTBiYTBhIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaXJxL2RjZTEyMC9pcnFf c2VydmljZV9kY2UxMjAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaXJx L2RjZTEyMC9pcnFfc2VydmljZV9kY2UxMjAuYwpAQCAtODQsNiArODQsMTEgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBpcnFfc291cmNlX2luZm9fZnVuY3MgdmJsYW5rX2lycV9pbmZvX2Z1bmNzID0g ewogCS5hY2sgPSBOVUxMCiB9OwogCitzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9zb3VyY2VfaW5m b19mdW5jcyB2dXBkYXRlX2lycV9pbmZvX2Z1bmNzID0geworCS5zZXQgPSBOVUxMLAorCS5hY2sg PSBOVUxMCit9OworCiAjZGVmaW5lIEJBU0VfSU5ORVIoc2VnKSBcCiAJRENFX0JBU0VfX0lOU1Qw X1NFRyAjIyBzZWcKIApAQCAtMTQwLDcgKzE0NSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJx X3NvdXJjZV9pbmZvX2Z1bmNzIHZibGFua19pcnFfaW5mb19mdW5jcyA9IHsKIAkJSVJRX1JFR19F TlRSWShDUlRDLCByZWdfbnVtLFwKIAkJCUNSVENfSU5URVJSVVBUX0NPTlRST0wsIENSVENfVl9V UERBVEVfSU5UX01TSyxcCiAJCQlDUlRDX1ZfVVBEQVRFX0lOVF9TVEFUVVMsIENSVENfVl9VUERB VEVfSU5UX0NMRUFSKSxcCi0JCS5mdW5jcyA9ICZ2YmxhbmtfaXJxX2luZm9fZnVuY3NcCisJCS5m dW5jcyA9ICZ2dXBkYXRlX2lycV9pbmZvX2Z1bmNzXAogCX0KIAogI2RlZmluZSB2YmxhbmtfaW50 X2VudHJ5KHJlZ19udW0pXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5 L2RjL2lycS9kY2U4MC9pcnFfc2VydmljZV9kY2U4MC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9k aXNwbGF5L2RjL2lycS9kY2U4MC9pcnFfc2VydmljZV9kY2U4MC5jCmluZGV4IDhhMjA2NmMuLmRl MjE4ZmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pcnEvZGNl ODAvaXJxX3NlcnZpY2VfZGNlODAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkv ZGMvaXJxL2RjZTgwL2lycV9zZXJ2aWNlX2RjZTgwLmMKQEAgLTg0LDYgKzg0LDEwIEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgaXJxX3NvdXJjZV9pbmZvX2Z1bmNzIHZibGFua19pcnFfaW5mb19mdW5j cyA9IHsKIAkuYWNrID0gTlVMTAogfTsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfc291cmNl X2luZm9fZnVuY3MgdnVwZGF0ZV9pcnFfaW5mb19mdW5jcyA9IHsKKwkuc2V0ID0gTlVMTCwKKwku YWNrID0gTlVMTAorfTsKIAogI2RlZmluZSBocGRfaW50X2VudHJ5KHJlZ19udW0pXAogCVtEQ19J UlFfU09VUkNFX0lOVkFMSUQgKyByZWdfbnVtXSA9IHtcCkBAIC0xNDIsNyArMTQ2LDcgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBpcnFfc291cmNlX2luZm9fZnVuY3MgdmJsYW5rX2lycV9pbmZvX2Z1 bmNzID0gewogCQlDUlRDX1ZfVVBEQVRFX0lOVF9TVEFUVVNfX0NSVENfVl9VUERBVEVfSU5UX0NM RUFSX01BU0ssXAogCQkuYWNrX3ZhbHVlID1cCiAJCUNSVENfVl9VUERBVEVfSU5UX1NUQVRVU19f Q1JUQ19WX1VQREFURV9JTlRfQ0xFQVJfTUFTSyxcCi0JCS5mdW5jcyA9ICZ2YmxhbmtfaXJxX2lu Zm9fZnVuY3NcCisJCS5mdW5jcyA9ICZ2dXBkYXRlX2lycV9pbmZvX2Z1bmNzXAogCX0KIAogI2Rl ZmluZSB2YmxhbmtfaW50X2VudHJ5KHJlZ19udW0pXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9kaXNwbGF5L2RjL2lycS9kY24xMC9pcnFfc2VydmljZV9kY24xMC5jIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2lycS9kY24xMC9pcnFfc2VydmljZV9kY24xMC5jCmlu ZGV4IGUwNGFlNDkuLjEwYWM2ZGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlz cGxheS9kYy9pcnEvZGNuMTAvaXJxX3NlcnZpY2VfZGNuMTAuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2Rpc3BsYXkvZGMvaXJxL2RjbjEwL2lycV9zZXJ2aWNlX2RjbjEwLmMKQEAgLTU2LDYg KzU2LDE4IEBAIGVudW0gZGNfaXJxX3NvdXJjZSB0b19kYWxfaXJxX3NvdXJjZV9kY24xMCgKIAkJ cmV0dXJuIERDX0lSUV9TT1VSQ0VfVkJMQU5LNTsKIAljYXNlIERDTl8xXzBfX1NSQ0lEX19EQ19E Nl9PVEdfVlNUQVJUVVA6CiAJCXJldHVybiBEQ19JUlFfU09VUkNFX1ZCTEFOSzY7CisJY2FzZSBE Q05fMV8wX19TUkNJRF9fT1RHMF9JSENfVl9VUERBVEVfTk9fTE9DS19JTlRFUlJVUFQ6CisJCXJl dHVybiBEQ19JUlFfU09VUkNFX1ZVUERBVEUxOworCWNhc2UgRENOXzFfMF9fU1JDSURfX09URzFf SUhDX1ZfVVBEQVRFX05PX0xPQ0tfSU5URVJSVVBUOgorCQlyZXR1cm4gRENfSVJRX1NPVVJDRV9W VVBEQVRFMjsKKwljYXNlIERDTl8xXzBfX1NSQ0lEX19PVEcyX0lIQ19WX1VQREFURV9OT19MT0NL X0lOVEVSUlVQVDoKKwkJcmV0dXJuIERDX0lSUV9TT1VSQ0VfVlVQREFURTM7CisJY2FzZSBEQ05f MV8wX19TUkNJRF9fT1RHM19JSENfVl9VUERBVEVfTk9fTE9DS19JTlRFUlJVUFQ6CisJCXJldHVy biBEQ19JUlFfU09VUkNFX1ZVUERBVEU0OworCWNhc2UgRENOXzFfMF9fU1JDSURfX09URzRfSUhD X1ZfVVBEQVRFX05PX0xPQ0tfSU5URVJSVVBUOgorCQlyZXR1cm4gRENfSVJRX1NPVVJDRV9WVVBE QVRFNTsKKwljYXNlIERDTl8xXzBfX1NSQ0lEX19PVEc1X0lIQ19WX1VQREFURV9OT19MT0NLX0lO VEVSUlVQVDoKKwkJcmV0dXJuIERDX0lSUV9TT1VSQ0VfVlVQREFURTY7CiAJY2FzZSBEQ05fMV8w X19TUkNJRF9fSFVCUDBfRkxJUF9JTlRFUlJVUFQ6CiAJCXJldHVybiBEQ19JUlFfU09VUkNFX1BG TElQMTsKIAljYXNlIERDTl8xXzBfX1NSQ0lEX19IVUJQMV9GTElQX0lOVEVSUlVQVDoKQEAgLTE1 Myw2ICsxNjUsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfc291cmNlX2luZm9fZnVuY3Mg dmJsYW5rX2lycV9pbmZvX2Z1bmNzID0gewogCS5hY2sgPSBOVUxMCiB9OwogCitzdGF0aWMgY29u c3Qgc3RydWN0IGlycV9zb3VyY2VfaW5mb19mdW5jcyB2dXBkYXRlX25vX2xvY2tfaXJxX2luZm9f ZnVuY3MgPSB7CisJLnNldCA9IE5VTEwsCisJLmFjayA9IE5VTEwKK307CisKICNkZWZpbmUgQkFT RV9JTk5FUihzZWcpIFwKIAlEQ0VfQkFTRV9fSU5TVDBfU0VHICMjIHNlZwogCkBAIC0yMDMsMTIg KzIyMCwxNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9zb3VyY2VfaW5mb19mdW5jcyB2Ymxh bmtfaXJxX2luZm9fZnVuY3MgPSB7CiAJCS5mdW5jcyA9ICZwZmxpcF9pcnFfaW5mb19mdW5jc1wK IAl9CiAKLSNkZWZpbmUgdnVwZGF0ZV9pbnRfZW50cnkocmVnX251bSlcCisvKiB2dXBkYXRlX25v X2xvY2tfaW50X2VudHJ5IG1hcHMgdG8gRENfSVJRX1NPVVJDRV9WVVBEQVRFeCwgdG8gbWF0Y2gg c2VtYW50aWMKKyAqIG9mIERDRSdzIERDX0lSUV9TT1VSQ0VfVlVQREFURXguCisgKi8KKyNkZWZp bmUgdnVwZGF0ZV9ub19sb2NrX2ludF9lbnRyeShyZWdfbnVtKVwKIAlbRENfSVJRX1NPVVJDRV9W VVBEQVRFMSArIHJlZ19udW1dID0ge1wKIAkJSVJRX1JFR19FTlRSWShPVEcsIHJlZ19udW0sXAot CQkJT1RHX0dMT0JBTF9TWU5DX1NUQVRVUywgVlVQREFURV9JTlRfRU4sXAotCQkJT1RHX0dMT0JB TF9TWU5DX1NUQVRVUywgVlVQREFURV9FVkVOVF9DTEVBUiksXAotCQkuZnVuY3MgPSAmdmJsYW5r X2lycV9pbmZvX2Z1bmNzXAorCQkJT1RHX0dMT0JBTF9TWU5DX1NUQVRVUywgVlVQREFURV9OT19M T0NLX0lOVF9FTixcCisJCQlPVEdfR0xPQkFMX1NZTkNfU1RBVFVTLCBWVVBEQVRFX05PX0xPQ0tf RVZFTlRfQ0xFQVIpLFwKKwkJLmZ1bmNzID0gJnZ1cGRhdGVfbm9fbG9ja19pcnFfaW5mb19mdW5j c1wKIAl9CiAKICNkZWZpbmUgdmJsYW5rX2ludF9lbnRyeShyZWdfbnVtKVwKQEAgLTMxNSwxMiAr MzM1LDEyIEBAIGlycV9zb3VyY2VfaW5mb19kY24xMFtEQUxfSVJRX1NPVVJDRVNfTlVNQkVSXSA9 IHsKIAlkY191bmRlcmZsb3dfaW50X2VudHJ5KDYpLAogCVtEQ19JUlFfU09VUkNFX0RNQ1VfU0NQ XSA9IGR1bW15X2lycV9lbnRyeSgpLAogCVtEQ19JUlFfU09VUkNFX1ZCSU9TX1NXXSA9IGR1bW15 X2lycV9lbnRyeSgpLAotCXZ1cGRhdGVfaW50X2VudHJ5KDApLAotCXZ1cGRhdGVfaW50X2VudHJ5 KDEpLAotCXZ1cGRhdGVfaW50X2VudHJ5KDIpLAotCXZ1cGRhdGVfaW50X2VudHJ5KDMpLAotCXZ1 cGRhdGVfaW50X2VudHJ5KDQpLAotCXZ1cGRhdGVfaW50X2VudHJ5KDUpLAorCXZ1cGRhdGVfbm9f bG9ja19pbnRfZW50cnkoMCksCisJdnVwZGF0ZV9ub19sb2NrX2ludF9lbnRyeSgxKSwKKwl2dXBk YXRlX25vX2xvY2tfaW50X2VudHJ5KDIpLAorCXZ1cGRhdGVfbm9fbG9ja19pbnRfZW50cnkoMyks CisJdnVwZGF0ZV9ub19sb2NrX2ludF9lbnRyeSg0KSwKKwl2dXBkYXRlX25vX2xvY2tfaW50X2Vu dHJ5KDUpLAogCXZibGFua19pbnRfZW50cnkoMCksCiAJdmJsYW5rX2ludF9lbnRyeSgxKSwKIAl2 YmxhbmtfaW50X2VudHJ5KDIpLAotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2RyaS1kZXZlbA==