From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v2 4/9] x86/pagewalk: Clean up guest_supports_* predicates Date: Thu, 16 Mar 2017 16:31:38 +0000 Message-ID: <1489681903-28119-5-git-send-email-andrew.cooper3@citrix.com> References: <1489681903-28119-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1489681903-28119-1-git-send-email-andrew.cooper3@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: George Dunlap , Andrew Cooper , Tim Deegan , Jan Beulich List-Id: xen-devel@lists.xenproject.org U3dpdGNoIHRoZW0gdG8gcmV0dXJuaW5nIGJvb2wsIGFuZCB0YWtpbmcgY29uc3QgcGFyYW1ldGVy cy4KClJlbmFtZSBndWVzdF9zdXBwb3J0c19zdXBlcnBhZ2VzKCkgdG8gZ3Vlc3Rfc3VwcG9ydHNf bDJfc3VwZXJwYWdlcygpIHRvCmluZGljYXRlIHdoaWNoIGxldmVsIG9mIHBhZ2V0YWJsZXMgaXQg aXMgYWN0dWFsbHkgcmVmZXJyaW5nIHRvLCBhbmQgcmVuYW1lCmd1ZXN0X3N1cHBvcnRzXzFHX3N1 cGVycGFnZXMoKSB0byBndWVzdF9zdXBwb3J0c19sM19zdXBlcnBhZ2VzKCkgZm9yCmNvbnNpc3Rl bmN5LgoKZ3Vlc3Rfc3VwcG9ydHNfbDNfc3VwZXJwYWdlcygpIGlzIGEgc3RhdGljIHByb3BlcnR5 IG9mIHRoZSBkb21haW4sIHJhdGhlciB0aGFuCmNvbnRyb2wgcmVnaXN0ZXIgc2V0dGluZ3MsIHNv IGlzIHN3aXRjaGVkIHRvIHRha2UgYSBkb21haW4gcG9pbnRlci4KaHZtX3BzZTFnYl9zdXBwb3J0 ZWQoKSBpcyBpbmxpbmVkIGludG8gaXRzIHNvbGUgdXNlciBiZWNhdXNlIGl0IGlzbid0IHN0cmlj dGx5Cmh2bS1zcGVjaWZpYyAoaXQgaXMgaGFwLXNwZWNpZmljKSBhbmQgcmVhbGx5IHNob3VsZCBi ZSBiZXNpZGUgYSBjb21tZW50CmV4cGxhaW5pbmcgd2h5IHRoZSBjcHVpZCBwb2xpY3kgaXMgaWdu b3JlZC4KCldoaWxlIGNsZWFuaW5nIHVwIHBhcnQgb2YgdGhlIGZpbGUsIGNsZWFuIHVwIGFsbCB0 cmFpbGluZyB3aGlsZXNwYWNlLCBhbmQgZml4Cm9uZSBjb21tZW50IHdoaWNoIGFjY2lkZW50bHkg cmVmZXJlZCB0byBQRyBsaXZpbmcgaW4gQ1I0IHJhdGhlciB0aGFuIENSMC4KClJlcXVlc3RlZC1i eTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcg Q29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgotLS0KQ0M6IEphbiBCZXVsaWNoIDxK QmV1bGljaEBzdXNlLmNvbT4KQ0M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgpDQzogR2Vvcmdl IER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBldS5jaXRyaXguY29tPgoKdjI6CiAqIE5ldwotLS0KIHhl bi9hcmNoL3g4Ni9tbS9ndWVzdF93YWxrLmMgICB8ICA0ICstLQogeGVuL2FyY2gveDg2L21tL3No YWRvdy9tdWx0aS5jIHwgMTAgKysrLS0tLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9ndWVzdF9wdC5o IHwgNjEgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiB4ZW4vaW5j bHVkZS9hc20teDg2L2h2bS9odm0uaCAgfCAgNCAtLS0KIDQgZmlsZXMgY2hhbmdlZCwgNDIgaW5z ZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21t L2d1ZXN0X3dhbGsuYyBiL3hlbi9hcmNoL3g4Ni9tbS9ndWVzdF93YWxrLmMKaW5kZXggODE4NzIy Ni4uMTFmNGM1ZCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL2d1ZXN0X3dhbGsuYworKysg Yi94ZW4vYXJjaC94ODYvbW0vZ3Vlc3Rfd2Fsay5jCkBAIC0yNzIsNyArMjcyLDcgQEAgZ3Vlc3Rf d2Fsa190YWJsZXMoc3RydWN0IHZjcHUgKnYsIHN0cnVjdCBwMm1fZG9tYWluICpwMm0sCiAgICAg ICAgICAgICAvKiBfUEFHRV9QU0VfUEFUIG5vdCBzZXQ6IHJlbW92ZSBfUEFHRV9QQVQgZnJvbSBm bGFncy4gKi8KICAgICAgICAgICAgIGZsYWdzICY9IH5fUEFHRV9QQVQ7CiAKLSAgICAgICAgaWYg KCAhZ3Vlc3Rfc3VwcG9ydHNfMUdfc3VwZXJwYWdlcyh2KSApCisgICAgICAgIGlmICggIWd1ZXN0 X3N1cHBvcnRzX2wzX3N1cGVycGFnZXMoZCkgKQogICAgICAgICAgICAgcmMgfD0gX1BBR0VfUFNF IHwgX1BBR0VfSU5WQUxJRF9CSVQ7CiAgICAgICAgIGlmICggZ2ZuX3goc3RhcnQpICYgR1VFU1Rf TDNfR0ZOX01BU0sgJiB+MHgxICkKICAgICAgICAgICAgIHJjIHw9IF9QQUdFX0lOVkFMSURfQklU UzsKQEAgLTMyNiw3ICszMjYsNyBAQCBndWVzdF93YWxrX3RhYmxlcyhzdHJ1Y3QgdmNwdSAqdiwg c3RydWN0IHAybV9kb21haW4gKnAybSwKICAgICB9CiAgICAgcmMgfD0gKChnZmxhZ3MgJiBtZmxh Z3MpIF4gbWZsYWdzKTsKIAotICAgIHBzZTJNID0gKGdmbGFncyAmIF9QQUdFX1BTRSkgJiYgZ3Vl c3Rfc3VwcG9ydHNfc3VwZXJwYWdlcyh2KTsgCisgICAgcHNlMk0gPSAoZ2ZsYWdzICYgX1BBR0Vf UFNFKSAmJiBndWVzdF9zdXBwb3J0c19sMl9zdXBlcnBhZ2VzKHYpOwogCiAgICAgaWYgKCBwc2Uy TSApCiAgICAgewpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jIGIv eGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jCmluZGV4IDYzYzdhYjUuLjUyY2VmNDYgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYworKysgYi94ZW4vYXJjaC94 ODYvbW0vc2hhZG93L211bHRpLmMKQEAgLTIzOCw3ICsyMzgsNyBAQCBzaGFkb3dfY2hlY2tfZ3dh bGsoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGxvbmcgdmEsIHdhbGtfdCAqZ3csIGludCB2ZXJz aW9uKQogICAgIGwycCA9IChndWVzdF9sMmVfdCAqKXYtPmFyY2gucGFnaW5nLnNoYWRvdy5ndWVz dF92dGFibGU7CiAgICAgbWlzbWF0Y2ggfD0gKGd3LT5sMmUubDIgIT0gbDJwW2d1ZXN0X2wyX3Rh YmxlX29mZnNldCh2YSldLmwyKTsKICNlbmRpZgotICAgIGlmICggIShndWVzdF9zdXBwb3J0c19z dXBlcnBhZ2VzKHYpICYmCisgICAgaWYgKCAhKGd1ZXN0X3N1cHBvcnRzX2wyX3N1cGVycGFnZXMo dikgJiYKICAgICAgICAgICAgKGd1ZXN0X2wyZV9nZXRfZmxhZ3MoZ3ctPmwyZSkgJiBfUEFHRV9Q U0UpKSApCiAgICAgewogICAgICAgICBsMXAgPSBtYXBfZG9tYWluX3BhZ2UoZ3ctPmwxbWZuKTsK QEAgLTMxMCw3ICszMTAsNyBAQCBnd19yZW1vdmVfd3JpdGVfYWNjZXNzZXMoc3RydWN0IHZjcHUg KnYsIHVuc2lnbmVkIGxvbmcgdmEsIHdhbGtfdCAqZ3cpCiAgICAgICAgIHJjIHw9IEdXX1JNV1Jf RkxVU0hUTEI7CiAjZW5kaWYgLyogR1VFU1RfUEFHSU5HX0xFVkVMUyA+PSAzICovCiAKLSAgICBp ZiAoICEoZ3Vlc3Rfc3VwcG9ydHNfc3VwZXJwYWdlcyh2KSAmJgorICAgIGlmICggIShndWVzdF9z dXBwb3J0c19sMl9zdXBlcnBhZ2VzKHYpICYmCiAgICAgICAgICAgIChndWVzdF9sMmVfZ2V0X2Zs YWdzKGd3LT5sMmUpICYgX1BBR0VfUFNFKSkKICNpZiAoU0hBRE9XX09QVElNSVpBVElPTlMgJiBT SE9QVF9PVVRfT0ZfU1lOQykKICAgICAgICAgICYmICFtZm5faXNfb3V0X29mX3N5bmMoZ3ctPmwx bWZuKQpAQCAtNjYwLDcgKzY2MCw3IEBAIF9zaF9wcm9wYWdhdGUoc3RydWN0IHZjcHUgKnYsCiAg ICAgaWYgKCB1bmxpa2VseSgoKGxldmVsID09IDEpIHx8CiAgICAgICAgICAgICAgICAgICAgKChs ZXZlbCA9PSAyKSAmJgogICAgICAgICAgICAgICAgICAgICAoZ2ZsYWdzICYgX1BBR0VfUFNFKSAm JgotICAgICAgICAgICAgICAgICAgICBndWVzdF9zdXBwb3J0c19zdXBlcnBhZ2VzKHYpKSkKKyAg ICAgICAgICAgICAgICAgICAgZ3Vlc3Rfc3VwcG9ydHNfbDJfc3VwZXJwYWdlcyh2KSkpCiAgICAg ICAgICAgICAgICAgICAmJiAhKGdmbGFncyAmIF9QQUdFX0RJUlRZKSkgKQogICAgICAgICBzZmxh Z3MgJj0gfl9QQUdFX1JXOwogCkBAIC0xODQ2LDcgKzE4NDYsNyBAQCBzdGF0aWMgc2hhZG93X2wx ZV90ICogc2hhZG93X2dldF9hbmRfY3JlYXRlX2wxZShzdHJ1Y3QgdmNwdSAqdiwKICAgICAgICAg LyogTm8gbDEgc2hhZG93IGluc3RhbGxlZDogZmluZCBhbmQgaW5zdGFsbCBpdC4gKi8KICAgICAg ICAgaWYgKCAhKGZsYWdzICYgX1BBR0VfUFJFU0VOVCkgKQogICAgICAgICAgICAgcmV0dXJuIE5V TEw7IC8qIE5vIGd1ZXN0IHBhZ2UuICovCi0gICAgICAgIGlmICggZ3Vlc3Rfc3VwcG9ydHNfc3Vw ZXJwYWdlcyh2KSAmJiAoZmxhZ3MgJiBfUEFHRV9QU0UpICkKKyAgICAgICAgaWYgKCBndWVzdF9z dXBwb3J0c19sMl9zdXBlcnBhZ2VzKHYpICYmIChmbGFncyAmIF9QQUdFX1BTRSkgKQogICAgICAg ICB7CiAgICAgICAgICAgICAvKiBTcGxpbnRlcmluZyBhIHN1cGVycGFnZSAqLwogICAgICAgICAg ICAgZ2ZuX3QgbDJnZm4gPSBndWVzdF9sMmVfZ2V0X2dmbihndy0+bDJlKTsKQEAgLTIyNTEsNyAr MjI1MSw3IEBAIHN0YXRpYyBpbnQgdmFsaWRhdGVfZ2wyZShzdHJ1Y3QgdmNwdSAqdiwgdm9pZCAq bmV3X2dlLCBtZm5fdCBzbDJtZm4sIHZvaWQgKnNlKQogICAgIGlmICggZ3Vlc3RfbDJlX2dldF9m bGFncyhuZXdfZ2wyZSkgJiBfUEFHRV9QUkVTRU5UICkKICAgICB7CiAgICAgICAgIGdmbl90IGds MWdmbiA9IGd1ZXN0X2wyZV9nZXRfZ2ZuKG5ld19nbDJlKTsKLSAgICAgICAgaWYgKCBndWVzdF9z dXBwb3J0c19zdXBlcnBhZ2VzKHYpICYmCisgICAgICAgIGlmICggZ3Vlc3Rfc3VwcG9ydHNfbDJf c3VwZXJwYWdlcyh2KSAmJgogICAgICAgICAgICAgIChndWVzdF9sMmVfZ2V0X2ZsYWdzKG5ld19n bDJlKSAmIF9QQUdFX1BTRSkgKQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBzdXBlcnBhZ2Ug LS0gbmVlZCB0byBsb29rIHVwIHRoZSBzaGFkb3cgTDEgd2hpY2ggaG9sZHMgdGhlCmRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2d1ZXN0X3B0LmggYi94ZW4vaW5jbHVkZS9hc20teDg2 L2d1ZXN0X3B0LmgKaW5kZXggYmVkYzc3MS4uNDMwNjFiNyAxMDA2NDQKLS0tIGEveGVuL2luY2x1 ZGUvYXNtLXg4Ni9ndWVzdF9wdC5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvZ3Vlc3RfcHQu aApAQCAtMiw3ICsyLDcgQEAKICAqIHhlbi9hc20teDg2L2d1ZXN0X3B0LmgKICAqCiAgKiBUeXBl cyBhbmQgYWNjZXNzb3JzIGZvciBndWVzdCBwYWdldGFibGUgZW50cmllcywgYXMgZGlzdGluY3Qg ZnJvbQotICogWGVuJ3MgcGFnZXRhYmxlIHR5cGVzLiAKKyAqIFhlbidzIHBhZ2V0YWJsZSB0eXBl cy4KICAqCiAgKiBVc2VycyBtdXN0ICNkZWZpbmUgR1VFU1RfUEFHSU5HX0xFVkVMUyB0byAyLCAz IG9yIDQgYmVmb3JlIGluY2x1ZGluZwogICogdGhpcyBmaWxlLgpAQCAtMTAsMTcgKzEwLDE3IEBA CiAgKiBQYXJ0cyBvZiB0aGlzIGNvZGUgYXJlIENvcHlyaWdodCAoYykgMjAwNiBieSBYZW5Tb3Vy Y2UgSW5jLgogICogUGFydHMgb2YgdGhpcyBjb2RlIGFyZSBDb3B5cmlnaHQgKGMpIDIwMDYgYnkg TWljaGFlbCBBIEZldHRlcm1hbgogICogUGFydHMgYmFzZWQgb24gZWFybGllciB3b3JrIGJ5IE1p Y2hhZWwgQSBGZXR0ZXJtYW4sIElhbiBQcmF0dCBldCBhbC4KLSAqIAorICoKICAqIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CiAgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKICAqIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCi0gKiAKKyAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICAqIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAgKiBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAg KiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICogCisgKgog ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKICAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAgKi8KQEAgLTE2OCwyNyArMTY4LDM0IEBAIHN0 YXRpYyBpbmxpbmUgZ3Vlc3RfbDRlX3QgZ3Vlc3RfbDRlX2Zyb21fZ2ZuKGdmbl90IGdmbiwgdTMy IGZsYWdzKQogCiAvKiBXaGljaCBwYWdldGFibGUgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZCBvbiB0 aGlzIHZjcHU/ICovCiAKLXN0YXRpYyBpbmxpbmUgaW50Ci1ndWVzdF9zdXBwb3J0c19zdXBlcnBh Z2VzKHN0cnVjdCB2Y3B1ICp2KQorc3RhdGljIGlubGluZSBib29sIGd1ZXN0X3N1cHBvcnRzX2wy X3N1cGVycGFnZXMoY29uc3Qgc3RydWN0IHZjcHUgKnYpCiB7Ci0gICAgLyogVGhlIF9QQUdFX1BT RSBiaXQgbXVzdCBiZSBob25vdXJlZCBpbiBIVk0gZ3Vlc3RzLCB3aGVuZXZlcgotICAgICAqIENS NC5QU0UgaXMgc2V0IG9yIHRoZSBndWVzdCBpcyBpbiBQQUUgb3IgbG9uZyBtb2RlLiAKLSAgICAg KiBJdCdzIGFsc28gdXNlZCBpbiB0aGUgZHVtbXkgUFQgZm9yIHZjcHVzIHdpdGggQ1I0LlBHIGNs ZWFyZWQuICovCisgICAgLyoKKyAgICAgKiBUaGUgX1BBR0VfUFNFIGJpdCBtdXN0IGJlIGhvbm91 cmVkIGluIEhWTSBndWVzdHMsIHdoZW5ldmVyCisgICAgICogQ1I0LlBTRSBpcyBzZXQgb3IgdGhl IGd1ZXN0IGlzIGluIFBBRSBvciBsb25nIG1vZGUuCisgICAgICogSXQncyBhbHNvIHVzZWQgaW4g dGhlIGR1bW15IFBUIGZvciB2Y3B1cyB3aXRoIENSMC5QRyBjbGVhcmVkLgorICAgICAqLwogICAg IHJldHVybiAoaXNfcHZfdmNwdSh2KQogICAgICAgICAgICAgPyBvcHRfYWxsb3dfc3VwZXJwYWdl Ci0gICAgICAgICAgICA6IChHVUVTVF9QQUdJTkdfTEVWRUxTICE9IDIgCisgICAgICAgICAgICA6 IChHVUVTVF9QQUdJTkdfTEVWRUxTICE9IDIKICAgICAgICAgICAgICAgIHx8ICFodm1fcGFnaW5n X2VuYWJsZWQodikKICAgICAgICAgICAgICAgIHx8ICh2LT5hcmNoLmh2bV92Y3B1Lmd1ZXN0X2Ny WzRdICYgWDg2X0NSNF9QU0UpKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50Ci1ndWVzdF9zdXBw b3J0c18xR19zdXBlcnBhZ2VzKHN0cnVjdCB2Y3B1ICp2KQorc3RhdGljIGlubGluZSBib29sIGd1 ZXN0X3N1cHBvcnRzX2wzX3N1cGVycGFnZXMoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCkKIHsKLSAg ICByZXR1cm4gKEdVRVNUX1BBR0lOR19MRVZFTFMgPj0gNCAmJiBodm1fcHNlMWdiX3N1cHBvcnRl ZCh2LT5kb21haW4pKTsKKyAgICAvKgorICAgICAqIFRoZXJlIGFyZSBubyBjb250cm9sIHJlZ2lz dGVyIHNldHRpbmdzIGZvciB0aGUgaGFyZHdhcmUgcGFnZXdhbGsgb24gdGhlCisgICAgICogc3Vi amVjdCBvZiAxRyBzdXBlcnBhZ2VzLgorICAgICAqCisgICAgICogSWYgdGhlIGd1ZXN0IGNvbnN0 cnVjdHMgYSAxR0Igc3VwZXJwYWdlIG9uIGNhcGFibGUgaGFyZHdhcmUsIGl0IHdpbGwKKyAgICAg KiBmdW5jdGlvbiBpcnJlc3BlY3RpdmUgb2Ygd2hldGhlciB0aGUgZmVhdHVyZSBpcyBhZHZlcnRp c2VkLiAgWGVuJ3MKKyAgICAgKiBtb2RlbCBvZiBwZXJmb3JtaW5nIGEgcGFnZXdhbGsgc2hvdWxk IG1hdGNoLgorICAgICAqLworICAgIHJldHVybiBHVUVTVF9QQUdJTkdfTEVWRUxTID49IDQgJiYg cGFnaW5nX21vZGVfaGFwKGQpICYmIGNwdV9oYXNfcGFnZTFnYjsKIH0KIAotc3RhdGljIGlubGlu ZSBpbnQKLWd1ZXN0X3N1cHBvcnRzX254KHN0cnVjdCB2Y3B1ICp2KQorc3RhdGljIGlubGluZSBi b29sIGd1ZXN0X3N1cHBvcnRzX254KGNvbnN0IHN0cnVjdCB2Y3B1ICp2KQogewogICAgIGlmICgg R1VFU1RfUEFHSU5HX0xFVkVMUyA9PSAyIHx8ICFjcHVfaGFzX254ICkKICAgICAgICAgcmV0dXJu IDA7CkBAIC0yNTgsMTEgKzI2NSwxMSBAQCBzdGF0aWMgaW5saW5lIHBhZGRyX3QgZ3Vlc3Rfd2Fs a190b19ncGEoY29uc3Qgd2Fsa190ICpndykKICAgICByZXR1cm4gKGdmbl94KGdmbikgPDwgUEFH RV9TSElGVCkgfCAoZ3ctPnZhICYgflBBR0VfTUFTSyk7CiB9CiAKLS8qIEdpdmVuIGEgd2Fsa190 IGZyb20gYSBzdWNjZXNzZnVsIHdhbGssIHJldHVybiB0aGUgcGFnZS1vcmRlciBvZiB0aGUgCisv KiBHaXZlbiBhIHdhbGtfdCBmcm9tIGEgc3VjY2Vzc2Z1bCB3YWxrLCByZXR1cm4gdGhlIHBhZ2Ut b3JkZXIgb2YgdGhlCiAgKiBwYWdlIG9yIHN1cGVycGFnZSB0aGF0IHRoZSB2aXJ0dWFsIGFkZHJl c3MgaXMgaW4uICovCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBndWVzdF93YWxrX3RvX3Bh Z2Vfb3JkZXIoY29uc3Qgd2Fsa190ICpndykKIHsKLSAgICAvKiBUaGlzIGlzIG9ubHkgdmFsaWQg Zm9yIHN1Y2Nlc3NmdWwgd2Fsa3MgLSBvdGhlcndpc2UgdGhlIAorICAgIC8qIFRoaXMgaXMgb25s eSB2YWxpZCBmb3Igc3VjY2Vzc2Z1bCB3YWxrcyAtIG90aGVyd2lzZSB0aGUKICAgICAgKiBQU0Ug Yml0cyBtaWdodCBiZSBpbnZhbGlkLiAqLwogICAgIEFTU0VSVChndWVzdF9sMWVfZ2V0X2ZsYWdz KGd3LT5sMWUpICYgX1BBR0VfUFJFU0VOVCk7CiAjaWYgR1VFU1RfUEFHSU5HX0xFVkVMUyA+PSAz CkBAIC0yNzUsMjggKzI4MiwzMCBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBndWVzdF93 YWxrX3RvX3BhZ2Vfb3JkZXIoY29uc3Qgd2Fsa190ICpndykKIH0KIAogCi0vKiBXYWxrIHRoZSBn dWVzdCBwYWdldGFibGVzLCBhZnRlciB0aGUgbWFubmVyIG9mIGEgaGFyZHdhcmUgd2Fsa2VyLiAK Ky8qCisgKiBXYWxrIHRoZSBndWVzdCBwYWdldGFibGVzLCBhZnRlciB0aGUgbWFubmVyIG9mIGEg aGFyZHdhcmUgd2Fsa2VyLgogICoKLSAqIElucHV0czogYSB2Y3B1LCBhIHZpcnR1YWwgYWRkcmVz cywgYSB3YWxrX3QgdG8gZmlsbCwgYSAKLSAqICAgICAgICAgcG9pbnRlciB0byBhIHBhZ2VmYXVs dCBjb2RlLCB0aGUgTUZOIG9mIHRoZSBndWVzdCdzIAotICogICAgICAgICB0b3AtbGV2ZWwgcGFn ZXRhYmxlLCBhbmQgYSBtYXBwaW5nIG9mIHRoZSAKKyAqIElucHV0czogYSB2Y3B1LCBhIHZpcnR1 YWwgYWRkcmVzcywgYSB3YWxrX3QgdG8gZmlsbCwgYQorICogICAgICAgICBwb2ludGVyIHRvIGEg cGFnZWZhdWx0IGNvZGUsIHRoZSBNRk4gb2YgdGhlIGd1ZXN0J3MKKyAqICAgICAgICAgdG9wLWxl dmVsIHBhZ2V0YWJsZSwgYW5kIGEgbWFwcGluZyBvZiB0aGUKICAqICAgICAgICAgZ3Vlc3QncyB0 b3AtbGV2ZWwgcGFnZXRhYmxlLgotICogCisgKgogICogV2Ugd2FsayB0aGUgdmNwdSdzIGd1ZXN0 IHBhZ2V0YWJsZXMsIGZpbGxpbmcgdGhlIHdhbGtfdCB3aXRoIHdoYXQgd2UKICAqIHNlZSBhbmQg YWRkaW5nIGFueSBBY2Nlc3NlZCBhbmQgRGlydHkgYml0cyB0aGF0IGFyZSBuZWVkZWQgaW4gdGhl CiAgKiBndWVzdCBlbnRyaWVzLiAgVXNpbmcgdGhlIHBhZ2VmYXVsdCBjb2RlLCB3ZSBjaGVjayB0 aGUgcGVybWlzc2lvbnMgYXMKICAqIHdlIGdvLiAgRm9yIHRoZSBwdXJwb3NlcyBvZiByZWFkaW5n IHBhZ2V0YWJsZXMgd2UgdHJlYXQgYWxsIG5vbi1SQU0KICAqIG1lbW9yeSBhcyBjb250aW5pbmcg emVyb2VzLgotICogCi0gKiBSZXR1cm5zIDAgZm9yIHN1Y2Nlc3MsIG9yIHRoZSBzZXQgb2YgcGVy bWlzc2lvbiBiaXRzIHRoYXQgd2UgZmFpbGVkIG9uIAotICogaWYgdGhlIHdhbGsgZGlkIG5vdCBj b21wbGV0ZS4gKi8KKyAqCisgKiBSZXR1cm5zIDAgZm9yIHN1Y2Nlc3MsIG9yIHRoZSBzZXQgb2Yg cGVybWlzc2lvbiBiaXRzIHRoYXQgd2UgZmFpbGVkIG9uCisgKiBpZiB0aGUgd2FsayBkaWQgbm90 IGNvbXBsZXRlLgorICovCiAKIC8qIE1hY3JvLWZ1IHNvIHlvdSBjYW4gY2FsbCBndWVzdF93YWxr X3RhYmxlcygpIGFuZCBnZXQgdGhlIHJpZ2h0IG9uZS4gKi8KICNkZWZpbmUgR1BUX1JFTkFNRTIo X24sIF9sKSBfbiAjIyBfICMjIF9sICMjIF9sZXZlbHMKICNkZWZpbmUgR1BUX1JFTkFNRShfbiwg X2wpIEdQVF9SRU5BTUUyKF9uLCBfbCkKICNkZWZpbmUgZ3Vlc3Rfd2Fsa190YWJsZXMgR1BUX1JF TkFNRShndWVzdF93YWxrX3RhYmxlcywgR1VFU1RfUEFHSU5HX0xFVkVMUykKIAotZXh0ZXJuIHVp bnQzMl90IAorZXh0ZXJuIHVpbnQzMl90CiBndWVzdF93YWxrX3RhYmxlcyhzdHJ1Y3QgdmNwdSAq diwgc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyB2YSwKICAgICAgICAgICAg ICAgICAgIHdhbGtfdCAqZ3csIHVpbnQzMl90IHBmZWMsIG1mbl90IHRvcF9tZm4sIHZvaWQgKnRv cF9tYXApOwogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9odm0uaCBiL3hl bi9pbmNsdWRlL2FzbS14ODYvaHZtL2h2bS5oCmluZGV4IDJiNGUzMjguLjNmODFhNWEgMTAwNjQ0 Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2h2bS5oCisrKyBiL3hlbi9pbmNsdWRlL2Fz bS14ODYvaHZtL2h2bS5oCkBAIC0zMDAsMTAgKzMwMCw2IEBAIGludCBodm1fZ2lycV9kZXN0XzJf dmNwdV9pZChzdHJ1Y3QgZG9tYWluICpkLCB1aW50OF90IGRlc3QsIHVpbnQ4X3QgZGVzdF9tb2Rl KTsKICNkZWZpbmUgaGFwX2hhc18xZ2IgKCEhKGh2bV9mdW5jcy5oYXBfY2FwYWJpbGl0aWVzICYg SFZNX0hBUF9TVVBFUlBBR0VfMUdCKSkKICNkZWZpbmUgaGFwX2hhc18ybWIgKCEhKGh2bV9mdW5j cy5oYXBfY2FwYWJpbGl0aWVzICYgSFZNX0hBUF9TVVBFUlBBR0VfMk1CKSkKIAotLyogQ2FuIHRo ZSBndWVzdCB1c2UgMUdCIHN1cGVycGFnZXMgaW4gaXRzIG93biBwYWdldGFibGVzPyAqLwotI2Rl ZmluZSBodm1fcHNlMWdiX3N1cHBvcnRlZChkKSBcCi0gICAgKGNwdV9oYXNfcGFnZTFnYiAmJiBw YWdpbmdfbW9kZV9oYXAoZCkpCi0KICNkZWZpbmUgaHZtX2xvbmdfbW9kZV9lbmFibGVkKHYpIFwK ICAgICAoKHYpLT5hcmNoLmh2bV92Y3B1Lmd1ZXN0X2VmZXIgJiBFRkVSX0xNQSkKIAotLSAKMi4x LjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMu eGVuLm9yZy94ZW4tZGV2ZWwK