From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v2 05/18] x86/pv: clean up emulate_ops.c Date: Thu, 11 May 2017 12:22:29 +0100 Message-ID: <1494501749-12418-1-git-send-email-andrew.cooper3@citrix.com> References: <20170505144836.8612-6-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170505144836.8612-6-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper List-Id: xen-devel@lists.xenproject.org UGxlYXNlIGNhbiB5b3UgZm9sZCB0aGlzIGZvbGxvd2luZyBkZWx0YT8KLS0tCiB4ZW4vYXJjaC94 ODYvcHYvZW11bGF0ZV9vcHMuYyB8IDEwMSArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA1MSBpbnNlcnRpb25zKCspLCA1MCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHYvZW11bGF0ZV9vcHMuYyBiL3hlbi9h cmNoL3g4Ni9wdi9lbXVsYXRlX29wcy5jCmluZGV4IDk3YzhkMTQuLjkzNDFkZWMgMTAwNjQ0Ci0t LSBhL3hlbi9hcmNoL3g4Ni9wdi9lbXVsYXRlX29wcy5jCisrKyBiL3hlbi9hcmNoL3g4Ni9wdi9l bXVsYXRlX29wcy5jCkBAIC0zOSw3ICszOSw3IEBACiAKICNpbmNsdWRlIDx4c20veHNtLmg+CiAK LS8qIEkvTyBlbXVsYXRpb24gc3VwcG9ydC4gSGVscGVyIHJvdXRpbmVzIGZvciwgYW5kIHR5cGUg b2YsIHRoZSBzdGFjayBzdHViLiovCisvKiBJL08gZW11bGF0aW9uIHN1cHBvcnQuIEhlbHBlciBy b3V0aW5lcyBmb3IsIGFuZCB0eXBlIG9mLCB0aGUgc3RhY2sgc3R1Yi4gKi8KIHZvaWQgaG9zdF90 b19ndWVzdF9ncHJfc3dpdGNoKHN0cnVjdCBjcHVfdXNlcl9yZWdzICopOwogdW5zaWduZWQgbG9u ZyBndWVzdF90b19ob3N0X2dwcl9zd2l0Y2godW5zaWduZWQgbG9uZyk7CiAKQEAgLTMxOCwxNSAr MzE4LDE0IEBAIHN0YXRpYyBpb19lbXVsX3N0dWJfdCAqaW9fZW11bF9zdHViX3NldHVwKHN0cnVj dCBwcml2X29wX2N0eHQgKmN0eHQsIHU4IG9wY29kZSwKIH0KIAogLyogSGFzIHRoZSBndWVzdCBy ZXF1ZXN0ZWQgc3VmZmljaWVudCBwZXJtaXNzaW9uIGZvciB0aGlzIEkvTyBhY2Nlc3M/ICovCi1z dGF0aWMgaW50IGd1ZXN0X2lvX29rYXkodW5zaWduZWQgaW50IHBvcnQsIHVuc2lnbmVkIGludCBi eXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0IGNw dV91c2VyX3JlZ3MgKnJlZ3MpCitzdGF0aWMgYm9vbCBndWVzdF9pb19va2F5KHVuc2lnbmVkIGlu dCBwb3J0LCB1bnNpZ25lZCBpbnQgYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCB2Y3B1ICp2LCBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKIHsKICAgICAvKiBJZiBp biB1c2VyIG1vZGUsIHN3aXRjaCB0byBrZXJuZWwgbW9kZSBqdXN0IHRvIHJlYWQgSS9PIGJpdG1h cC4gKi8KLSAgICBpbnQgdXNlcl9tb2RlID0gISh2LT5hcmNoLmZsYWdzICYgVEZfa2VybmVsX21v ZGUpOwotI2RlZmluZSBUT0dHTEVfTU9ERSgpIGlmICggdXNlcl9tb2RlICkgdG9nZ2xlX2d1ZXN0 X21vZGUodikKKyAgICBjb25zdCBib29sIHVzZXJfbW9kZSA9ICEodi0+YXJjaC5mbGFncyAmIFRG X2tlcm5lbF9tb2RlKTsKIAogICAgIGlmICggaW9wbF9vayh2LCByZWdzKSApCi0gICAgICAgIHJl dHVybiAxOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmICggdi0+YXJjaC5wdl92Y3B1 LmlvYm1wX2xpbWl0ID4gKHBvcnQgKyBieXRlcykgKQogICAgIHsKQEAgLTMzNiw5ICszMzUsMTEg QEAgc3RhdGljIGludCBndWVzdF9pb19va2F5KHVuc2lnbmVkIGludCBwb3J0LCB1bnNpZ25lZCBp bnQgYnl0ZXMsCiAgICAgICAgICAqIEdyYWIgcGVybWlzc2lvbiBieXRlcyBmcm9tIGd1ZXN0IHNw YWNlLiBJbmFjY2Vzc2libGUgYnl0ZXMgYXJlCiAgICAgICAgICAqIHJlYWQgYXMgMHhmZiAobm8g YWNjZXNzIGFsbG93ZWQpLgogICAgICAgICAgKi8KLSAgICAgICAgVE9HR0xFX01PREUoKTsKKyAg ICAgICAgaWYgKCB1c2VyX21vZGUgKQorICAgICAgICAgICAgdG9nZ2xlX2d1ZXN0X21vZGUodik7 CisKICAgICAgICAgc3dpdGNoICggX19jb3B5X2Zyb21fZ3Vlc3Rfb2Zmc2V0KHguYnl0ZXMsIHYt PmFyY2gucHZfdmNwdS5pb2JtcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBvcnQ+PjMsIDIpICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBvcnQgPj4gMywgMikgKQogICAgICAgICB7CiAgICAgICAgIGRlZmF1bHQ6IHguYnl0 ZXNbMF0gPSB+MDsKICAgICAgICAgICAgIC8qIGZhbGx0aHJvdWdoICovCkBAIC0zNDYsMTQgKzM0 NywxNSBAQCBzdGF0aWMgaW50IGd1ZXN0X2lvX29rYXkodW5zaWduZWQgaW50IHBvcnQsIHVuc2ln bmVkIGludCBieXRlcywKICAgICAgICAgICAgIC8qIGZhbGx0aHJvdWdoICovCiAgICAgICAgIGNh c2UgMDogIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIFRPR0dMRV9NT0RFKCk7CiAKLSAgICAg ICAgaWYgKCAoeC5tYXNrICYgKCgoMTw8Ynl0ZXMpLTEpIDw8IChwb3J0JjcpKSkgPT0gMCApCi0g ICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgaWYgKCB1c2VyX21vZGUgKQorICAgICAgICAg ICAgdG9nZ2xlX2d1ZXN0X21vZGUodik7CisKKyAgICAgICAgaWYgKCAoeC5tYXNrICYgKCgoMXUg PDwgYnl0ZXMpIC0gMSkgPDwgKHBvcnQgJiA3KSkpID09IDAgKQorICAgICAgICAgICAgcmV0dXJu IHRydWU7CiAgICAgfQogCi0jdW5kZWYgVE9HR0xFX01PREUKLSAgICByZXR1cm4gMDsKKyAgICBy ZXR1cm4gZmFsc2U7CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgY2hlY2tfZ3Vlc3RfaW9fYnJl YWtwb2ludChzdHJ1Y3QgdmNwdSAqdiwKQEAgLTM4Niw3ICszODgsNyBAQCBzdGF0aWMgdW5zaWdu ZWQgaW50IGNoZWNrX2d1ZXN0X2lvX2JyZWFrcG9pbnQoc3RydWN0IHZjcHUgKnYsCiAgICAgICAg IH0KIAogICAgICAgICBpZiAoIChzdGFydCA8IChwb3J0ICsgbGVuKSkgJiYgKChzdGFydCArIHdp ZHRoKSA+IHBvcnQpICkKLSAgICAgICAgICAgIG1hdGNoIHw9IDEgPDwgaTsKKyAgICAgICAgICAg IG1hdGNoIHw9IDF1IDw8IGk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1hdGNoOwpAQCAtNDAxLDEx ICs0MDMsMTEgQEAgc3RhdGljIGJvb2wgYWRtaW5faW9fb2theSh1bnNpZ25lZCBpbnQgcG9ydCwg dW5zaWduZWQgaW50IGJ5dGVzLAogICAgICAqIFdlIG5ldmVyIHBlcm1pdCBkaXJlY3QgYWNjZXNz IHRvIHRoYXQgcmVnaXN0ZXIuCiAgICAgICovCiAgICAgaWYgKCAocG9ydCA9PSAweGNmOCkgJiYg KGJ5dGVzID09IDQpICkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBmYWxzZTsK IAogICAgIC8qIFdlIGFsc28gbmV2ZXIgcGVybWl0IGRpcmVjdCBhY2Nlc3MgdG8gdGhlIFJUQy9D TU9TIHJlZ2lzdGVycy4gKi8KICAgICBpZiAoICgocG9ydCAmIH4xKSA9PSBSVENfUE9SVCgwKSkg KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJu IGlvcG9ydHNfYWNjZXNzX3Blcm1pdHRlZChkLCBwb3J0LCBwb3J0ICsgYnl0ZXMgLSAxKTsKIH0K QEAgLTQxNiwxMCArNDE4LDEwIEBAIHN0YXRpYyBib29sIHBjaV9jZmdfb2soc3RydWN0IGRvbWFp biAqY3VycmQsIHVuc2lnbmVkIGludCBzdGFydCwKICAgICB1aW50MzJfdCBtYWNoaW5lX2JkZjsK IAogICAgIGlmICggIWlzX2hhcmR3YXJlX2RvbWFpbihjdXJyZCkgKQotICAgICAgICByZXR1cm4g MDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCAhQ0Y4X0VOQUJMRUQoY3VycmQt PmFyY2gucGNpX2NmOCkgKQotICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgcmV0dXJuIHRydWU7 CiAKICAgICBtYWNoaW5lX2JkZiA9IENGOF9CREYoY3VycmQtPmFyY2gucGNpX2NmOCk7CiAgICAg aWYgKCB3cml0ZSApCkBAIC00MjcsNyArNDI5LDcgQEAgc3RhdGljIGJvb2wgcGNpX2NmZ19vayhz dHJ1Y3QgZG9tYWluICpjdXJyZCwgdW5zaWduZWQgaW50IHN0YXJ0LAogICAgICAgICBjb25zdCB1 bnNpZ25lZCBsb25nICpyb19tYXAgPSBwY2lfZ2V0X3JvX21hcCgwKTsKIAogICAgICAgICBpZiAo IHJvX21hcCAmJiB0ZXN0X2JpdChtYWNoaW5lX2JkZiwgcm9fbWFwKSApCi0gICAgICAgICAgICBy ZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgc3RhcnQgfD0g Q0Y4X0FERFJfTE8oY3VycmQtPmFyY2gucGNpX2NmOCk7CiAgICAgLyogQU1EIGV4dGVuZGVkIGNv bmZpZ3VyYXRpb24gc3BhY2UgYWNjZXNzPyAqLwpAQCAtNDM4LDcgKzQ0MCw3IEBAIHN0YXRpYyBi b29sIHBjaV9jZmdfb2soc3RydWN0IGRvbWFpbiAqY3VycmQsIHVuc2lnbmVkIGludCBzdGFydCwK ICAgICAgICAgdWludDY0X3QgbXNyX3ZhbDsKIAogICAgICAgICBpZiAoIHJkbXNyX3NhZmUoTVNS X0FNRDY0X05CX0NGRywgbXNyX3ZhbCkgKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICggbXNyX3ZhbCAmICgxVUxMIDw8IEFNRDY0 X05CX0NGR19DRjhfRVhUX0VOQUJMRV9CSVQpICkKICAgICAgICAgICAgIHN0YXJ0IHw9IENGOF9B RERSX0hJKGN1cnJkLT5hcmNoLnBjaV9jZjgpOwogICAgIH0KQEAgLTgzNSw3ICs4MzcsNyBAQCBz dGF0aWMgaW50IHByaXZfb3Bfd3JpdGVfY3IodW5zaWduZWQgaW50IHJlZywgdW5zaWduZWQgbG9u ZyB2YWwsCiAgICAgICAgIGlmICggKHZhbCBeIHJlYWRfY3IwKCkpICYgflg4Nl9DUjBfVFMgKQog ICAgICAgICB7CiAgICAgICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywKLSAgICAgICAg ICAgICAgICAgICAgIkF0dGVtcHQgdG8gY2hhbmdlIHVubW9kaWZpYWJsZSBDUjAgZmxhZ3NcbiIp OworICAgICAgICAgICAgICAgICAgICAgIkF0dGVtcHQgdG8gY2hhbmdlIHVubW9kaWZpYWJsZSBD UjAgZmxhZ3NcbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZG9f ZnB1X3Rhc2tzd2l0Y2goISEodmFsICYgWDg2X0NSMF9UUykpOwpAQCAtOTQ4LDExICs5NTAsMTEg QEAgc3RhdGljIGludCBwcml2X29wX3JlYWRfbXNyKHVuc2lnbmVkIGludCByZWcsIHVpbnQ2NF90 ICp2YWwsCiAgICAgICAgICp2YWwgPSBjdXJyLT5hcmNoLnB2X3ZjcHUuZ3NfYmFzZV91c2VyOwog ICAgICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwogCi0gICAgLyoKLSAgICAgKiBJbiBvcmRlciB0 byBmdWxseSByZXRhaW4gb3JpZ2luYWwgYmVoYXZpb3IsIGRlZmVyIGNhbGxpbmcKLSAgICAgKiBw dl9zb2Z0X3JkdHNjKCkgdW50aWwgYWZ0ZXIgZW11bGF0aW9uLiBUaGlzIG1heSB3YW50L25lZWQg dG8gYmUKLSAgICAgKiByZWNvbnNpZGVyZWQuCi0gICAgICovCisgICAgICAgIC8qCisgICAgICAg ICAqIEluIG9yZGVyIHRvIGZ1bGx5IHJldGFpbiBvcmlnaW5hbCBiZWhhdmlvciwgZGVmZXIgY2Fs bGluZworICAgICAgICAgKiBwdl9zb2Z0X3JkdHNjKCkgdW50aWwgYWZ0ZXIgZW11bGF0aW9uLiBU aGlzIG1heSB3YW50L25lZWQgdG8gYmUKKyAgICAgICAgICogcmVjb25zaWRlcmVkLgorICAgICAg ICAgKi8KICAgICBjYXNlIE1TUl9JQTMyX1RTQzoKICAgICAgICAgcG9jLT50c2MgfD0gVFNDX0JB U0U7CiAgICAgICAgIGdvdG8gbm9ybWFsOwpAQCAtMTA0MiwxNiArMTA0NCwxNiBAQCBzdGF0aWMg aW50IHByaXZfb3BfcmVhZF9tc3IodW5zaWduZWQgaW50IHJlZywgdWludDY0X3QgKnZhbCwKICAg ICAgICAgICAgICp2YWwgfD0gTVNSX01JU0NfRkVBVFVSRVNfQ1BVSURfRkFVTFRJTkc7CiAgICAg ICAgIHJldHVybiBYODZFTVVMX09LQVk7CiAKLSAgICBjYXNlIE1TUl9QNl9QRVJGQ1RSKDApLi4u TVNSX1A2X1BFUkZDVFIoNyk6Ci0gICAgY2FzZSBNU1JfUDZfRVZOVFNFTCgwKS4uLk1TUl9QNl9F Vk5UU0VMKDMpOgotICAgIGNhc2UgTVNSX0NPUkVfUEVSRl9GSVhFRF9DVFIwLi4uTVNSX0NPUkVf UEVSRl9GSVhFRF9DVFIyOgotICAgIGNhc2UgTVNSX0NPUkVfUEVSRl9GSVhFRF9DVFJfQ1RSTC4u Lk1TUl9DT1JFX1BFUkZfR0xPQkFMX09WRl9DVFJMOgorICAgIGNhc2UgTVNSX1A2X1BFUkZDVFIo MCkgLi4uIE1TUl9QNl9QRVJGQ1RSKDcpOgorICAgIGNhc2UgTVNSX1A2X0VWTlRTRUwoMCkgLi4u IE1TUl9QNl9FVk5UU0VMKDMpOgorICAgIGNhc2UgTVNSX0NPUkVfUEVSRl9GSVhFRF9DVFIwIC4u LiBNU1JfQ09SRV9QRVJGX0ZJWEVEX0NUUjI6CisgICAgY2FzZSBNU1JfQ09SRV9QRVJGX0ZJWEVE X0NUUl9DVFJMIC4uLiBNU1JfQ09SRV9QRVJGX0dMT0JBTF9PVkZfQ1RSTDoKICAgICAgICAgaWYg KCBib290X2NwdV9kYXRhLng4Nl92ZW5kb3IgPT0gWDg2X1ZFTkRPUl9JTlRFTCApCiAgICAgICAg IHsKICAgICAgICAgICAgIHZwbXVfbXNyID0gdHJ1ZTsKICAgICAgICAgICAgIC8qIGZhbGwgdGhy b3VnaCAqLwotICAgIGNhc2UgTVNSX0FNRF9GQU0xNUhfRVZOVFNFTDAuLi5NU1JfQU1EX0ZBTTE1 SF9QRVJGQ1RSNToKLSAgICBjYXNlIE1TUl9LN19FVk5UU0VMMC4uLk1TUl9LN19QRVJGQ1RSMzoK KyAgICBjYXNlIE1TUl9BTURfRkFNMTVIX0VWTlRTRUwwIC4uLiBNU1JfQU1EX0ZBTTE1SF9QRVJG Q1RSNToKKyAgICBjYXNlIE1TUl9LN19FVk5UU0VMMCAuLi4gTVNSX0s3X1BFUkZDVFIzOgogICAg ICAgICAgICAgaWYgKCB2cG11X21zciB8fCAoYm9vdF9jcHVfZGF0YS54ODZfdmVuZG9yID09IFg4 Nl9WRU5ET1JfQU1EKSApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYgKCB2cG11 X2RvX3JkbXNyKHJlZywgdmFsKSApCkBAIC0xMjQ5LDE1ICsxMjUxLDE1IEBAIHN0YXRpYyBpbnQg cHJpdl9vcF93cml0ZV9tc3IodW5zaWduZWQgaW50IHJlZywgdWludDY0X3QgdmFsLAogICAgICAg ICBjdXJyLT5hcmNoLmNwdWlkX2ZhdWx0aW5nID0gISEodmFsICYgTVNSX01JU0NfRkVBVFVSRVNf Q1BVSURfRkFVTFRJTkcpOwogICAgICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwogCi0gICAgY2Fz ZSBNU1JfUDZfUEVSRkNUUigwKS4uLk1TUl9QNl9QRVJGQ1RSKDcpOgotICAgIGNhc2UgTVNSX1A2 X0VWTlRTRUwoMCkuLi5NU1JfUDZfRVZOVFNFTCgzKToKLSAgICBjYXNlIE1TUl9DT1JFX1BFUkZf RklYRURfQ1RSMC4uLk1TUl9DT1JFX1BFUkZfRklYRURfQ1RSMjoKLSAgICBjYXNlIE1TUl9DT1JF X1BFUkZfRklYRURfQ1RSX0NUUkwuLi5NU1JfQ09SRV9QRVJGX0dMT0JBTF9PVkZfQ1RSTDoKKyAg ICBjYXNlIE1TUl9QNl9QRVJGQ1RSKDApIC4uLiBNU1JfUDZfUEVSRkNUUig3KToKKyAgICBjYXNl IE1TUl9QNl9FVk5UU0VMKDApIC4uLiBNU1JfUDZfRVZOVFNFTCgzKToKKyAgICBjYXNlIE1TUl9D T1JFX1BFUkZfRklYRURfQ1RSMCAuLi4gTVNSX0NPUkVfUEVSRl9GSVhFRF9DVFIyOgorICAgIGNh c2UgTVNSX0NPUkVfUEVSRl9GSVhFRF9DVFJfQ1RSTCAuLi4gTVNSX0NPUkVfUEVSRl9HTE9CQUxf T1ZGX0NUUkw6CiAgICAgICAgIGlmICggYm9vdF9jcHVfZGF0YS54ODZfdmVuZG9yID09IFg4Nl9W RU5ET1JfSU5URUwgKQogICAgICAgICB7CiAgICAgICAgICAgICB2cG11X21zciA9IHRydWU7Ci0g ICAgY2FzZSBNU1JfQU1EX0ZBTTE1SF9FVk5UU0VMMC4uLk1TUl9BTURfRkFNMTVIX1BFUkZDVFI1 OgotICAgIGNhc2UgTVNSX0s3X0VWTlRTRUwwLi4uTVNSX0s3X1BFUkZDVFIzOgorICAgIGNhc2Ug TVNSX0FNRF9GQU0xNUhfRVZOVFNFTDAgLi4uIE1TUl9BTURfRkFNMTVIX1BFUkZDVFI1OgorICAg IGNhc2UgTVNSX0s3X0VWTlRTRUwwIC4uLiBNU1JfSzdfUEVSRkNUUjM6CiAgICAgICAgICAgICBp ZiAoIHZwbXVfbXNyIHx8IChib290X2NwdV9kYXRhLng4Nl92ZW5kb3IgPT0gWDg2X1ZFTkRPUl9B TUQpICkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAoICh2cG11X21vZGUgJiBY RU5QTVVfTU9ERV9BTEwpICYmCkBAIC0xNTQyLDcgKzE1NDQsNiBAQCBzdGF0aWMgaW50IHJlYWRf Z2F0ZV9kZXNjcmlwdG9yKHVuc2lnbmVkIGludCBnYXRlX3NlbCwKICAgICBzdHJ1Y3QgZGVzY19z dHJ1Y3QgZGVzYzsKICAgICBjb25zdCBzdHJ1Y3QgZGVzY19zdHJ1Y3QgKnBkZXNjOwogCi0KICAg ICBwZGVzYyA9IChjb25zdCBzdHJ1Y3QgZGVzY19zdHJ1Y3QgKikKICAgICAgICAgKCEoZ2F0ZV9z ZWwgJiA0KSA/IEdEVF9WSVJUX1NUQVJUKHYpIDogTERUX1ZJUlRfU1RBUlQodikpCiAgICAgICAg ICsgKGdhdGVfc2VsID4+IDMpOwpAQCAtMTcyNCwxNyArMTcyNSwxNyBAQCB2b2lkIGVtdWxhdGVf Z2F0ZV9vcChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICB7CiAgICAgICAgIHVuc2ln bmVkIGludCBzcywgZXNwLCAqc3RrcDsKICAgICAgICAgaW50IHJjOwotI2RlZmluZSBwdXNoKGl0 ZW0pIGRvIFwKLSAgICAgICAgeyBcCi0gICAgICAgICAgICAtLXN0a3A7IFwKLSAgICAgICAgICAg IGVzcCAtPSA0OyBcCi0gICAgICAgICAgICByYyA9IF9fcHV0X3VzZXIoaXRlbSwgc3RrcCk7IFwK LSAgICAgICAgICAgIGlmICggcmMgKSBcCi0gICAgICAgICAgICB7IFwKLSAgICAgICAgICAgICAg ICBwdl9pbmplY3RfcGFnZV9mYXVsdChQRkVDX3dyaXRlX2FjY2VzcywgXAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKShzdGtwICsgMSkgLSByYyk7 IFwKLSAgICAgICAgICAgICAgICByZXR1cm47IFwKLSAgICAgICAgICAgIH0gXAorI2RlZmluZSBw dXNoKGl0ZW0pIGRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgLS1zdGtwOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg ZXNwIC09IDQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorICAgICAgICAgICAgcmMgPSBfX3B1dF91c2VyKGl0ZW0sIHN0a3ApOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaWYgKCByYyApICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgeyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorICAgICAgICAgICAgICAgIHB2X2luamVjdF9wYWdlX2ZhdWx0KFBGRUNfd3JpdGVfYWNjZXNz LCAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICh1bnNpZ25lZCBsb25nKShzdGtwICsgMSkgLSByYyk7ICAgXAorICAgICAgICAgICAgICAgIHJl dHVybjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor ICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAogICAgICAgICB9IHdoaWxlICggMCApCiAKICAgICAgICAgaWYgKCAo KGFyID4+IDEzKSAmIDMpIDwgKHJlZ3MtPmNzICYgMykgKQotLSAKMi4xLjQKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBs aXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2 ZWwK