From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v6 02/21] xen/x86: Calculate maximum host and guest featuresets Date: Fri, 8 Apr 2016 21:31:38 +0100 Message-ID: <1460147517-11706-3-git-send-email-andrew.cooper3@citrix.com> References: <1460147517-11706-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: <1460147517-11706-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: Andrew Cooper List-Id: xen-devel@lists.xenproject.org QWxsIG9mIHRoaXMgaW5mb3JtYXRpb24gd2lsbCBiZSB1c2VkIGJ5IHRoZSB0b29sc3RhY2sgdG8g bWFrZSBpbmZvcm1lZApsZXZlbGxpbmcgZGVjaXNpb25zIGZvciBWTXMsIGFuZCBieSBYZW4gdG8g c2FuaXR5IGNoZWNrIHRvb2xzdGFjay1wcm92aWRlZAppbmZvcm1hdGlvbi4KClRoZSBzcGxpdCBi ZXR3ZWVuIHRoZSBzaGFkb3cgYW5kIGhhcCBIVk0gbWFza3MgaXMgbmVjZXNzYXJ5IGR1ZSB0byB0 aGUgbGFjayBvZgphICJnZXQgY3B1aWQgcG9saWN5IiBoeXBlcmNhbGwuICBNdWx0aS1ob3N0IHRv b2xzdGFja3MgKGkuZS4gbm90IGxpYnhsKQpkZWFsaW5nIHdpdGggaGFwIGFuZCBub24taGFwIGNh cGFibGUgaG9zdHMgbmVlZCB0byBiZSBhYmxlIHRvIGNhbGN1bGF0ZSB0aGF0Cm1pZ3JhdGluZyBh IHNoYWRvdyBndWVzdCBpcyBzYWZlLgoKRnV0dXJlIHBsYW5uZWQgZGV2ZWxvcG1lbnQgd29yayB3 aWxsIGltcGxlbWVudCBwcm9wZXIgY3B1aWQgcG9saWN5IGhhbmRpbmcgaW4KWGVuLCBpbmNsdWRp bmcgYSAiZ2V0IHBvbGljeSIgaHlwZXJjYWxsLCBidXQgdW50aWwgdGhlbiwgdGhlIGRpZmZlcmVu Y2UgaXMKbWFkZSBhdmFpbGFibGUgZm9yIHRvb2xzdGFjayB1c2UgdmlhIGEgbm9uLXN0YWJsZSBp bnRlcmZhY2UuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0Bj aXRyaXguY29tPgpSZXZpZXdlZC1ieTogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2ls a0BvcmFjbGUuY29tPgpSZXZpZXdlZC1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29t PgotLS0KdjM6CiAqIE1vdmUgYXMgbXVjaCBhcyBwb3NzaWJsZSBpbnRvIC5pbml0LgogKiBGaXgg dGhlIGhhbmRpbmcgb2YgdGhlIHNoYXJlZCBiaXRzIGZvciB0aGUgY3Jvc3MtdmVuZG9yIGNhc2Uu CiAqIEZpeCBleHRlbmRlZCBjaGVjay4KdjQ6CiAqIEZpeCBjb3B5JnBhc3RlIGVycm9yIGluIGNh bGN1bGF0ZV9odm1fZmVhdHVyZXNldCgpCnY1OgogKiBFeHBhbmQgY29tbWl0IG1lc3NhZ2UsIGV4 cGxhaW5pbmcgYWJvdXQgdGhlIHNoYWRvdyBhbmQgaGFwIG1hc2tzLgotLS0KIHhlbi9hcmNoL3g4 Ni9jcHVpZC5jICAgICAgICB8IDE2MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwogeGVuL2FyY2gveDg2L3NldHVwLmMgICAgICAgIHwgICAzICsKIHhlbi9pbmNs dWRlL2FzbS14ODYvY3B1aWQuaCB8ICAxNyArKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxODIgaW5z ZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHVpZC5jIGIveGVuL2FyY2gv eDg2L2NwdWlkLmMKaW5kZXggNzdlMDA4YS4uNDE0MzlmOCAxMDA2NDQKLS0tIGEveGVuL2FyY2gv eDg2L2NwdWlkLmMKKysrIGIveGVuL2FyY2gveDg2L2NwdWlkLmMKQEAgLTEsMTQgKzEsMTc2IEBA CiAjaW5jbHVkZSA8eGVuL2luaXQuaD4KICNpbmNsdWRlIDx4ZW4vbGliLmg+CiAjaW5jbHVkZSA8 YXNtL2NwdWlkLmg+CisjaW5jbHVkZSA8YXNtL2h2bS9odm0uaD4KKyNpbmNsdWRlIDxhc20vaHZt L3ZteC92bWNzLmg+CisjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgogCiBjb25zdCB1aW50MzJf dCBrbm93bl9mZWF0dXJlc1tdID0gSU5JVF9LTk9XTl9GRUFUVVJFUzsKIGNvbnN0IHVpbnQzMl90 IHNwZWNpYWxfZmVhdHVyZXNbXSA9IElOSVRfU1BFQ0lBTF9GRUFUVVJFUzsKIAorc3RhdGljIGNv bnN0IHVpbnQzMl90IF9faW5pdGNvbnN0IHB2X2ZlYXR1cmVtYXNrW10gPSBJTklUX1BWX0ZFQVRV UkVTOworc3RhdGljIGNvbnN0IHVpbnQzMl90IF9faW5pdGNvbnN0IGh2bV9zaGFkb3dfZmVhdHVy ZW1hc2tbXSA9IElOSVRfSFZNX1NIQURPV19GRUFUVVJFUzsKK3N0YXRpYyBjb25zdCB1aW50MzJf dCBfX2luaXRjb25zdCBodm1faGFwX2ZlYXR1cmVtYXNrW10gPSBJTklUX0hWTV9IQVBfRkVBVFVS RVM7CisKK3VpbnQzMl90IF9fcmVhZF9tb3N0bHkgcmF3X2ZlYXR1cmVzZXRbRlNDQVBJTlRTXTsK K3VpbnQzMl90IF9fcmVhZF9tb3N0bHkgcHZfZmVhdHVyZXNldFtGU0NBUElOVFNdOwordWludDMy X3QgX19yZWFkX21vc3RseSBodm1fZmVhdHVyZXNldFtGU0NBUElOVFNdOworCitzdGF0aWMgdm9p ZCBfX2luaXQgc2FuaXRpc2VfZmVhdHVyZXNldCh1aW50MzJfdCAqZnMpCit7CisgICAgdW5zaWdu ZWQgaW50IGk7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IEZTQ0FQSU5UUzsgKytpICkKKyAgICB7 CisgICAgICAgIC8qIENsYW1wIHRvIGtub3duIG1hc2suICovCisgICAgICAgIGZzW2ldICY9IGtu b3duX2ZlYXR1cmVzW2ldOworICAgIH0KKworICAgIC8qCisgICAgICogU29ydCBvdXQgc2hhcmVk IGJpdHMuICBXZSBhcmUgY29uc3RydWN0aW5nIGEgZmVhdHVyZXNldCB3aGljaCBuZWVkcyB0bwor ICAgICAqIGJlIGFwcGxpY2FibGUgdG8gYSBjcm9zcy12ZW5kb3IgY2FzZS4gIEludGVsIHN0cmlj dGx5IGNsZWFycyB0aGUgY29tbW9uCisgICAgICogYml0cyBpbiBlMWQsIHdoaWxlIEFNRCBzdHJp Y3RseSBkdXBsaWNhdGVzIHRoZW0uCisgICAgICoKKyAgICAgKiBXZSBkdXBsaWNhdGUgdGhlbSBo ZXJlIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBBTUQgd2hpbGUgb24gSW50ZWwsIGFuZAorICAgICAq IHJlbHkgb24gbG9naWMgY2xvc2VyIHRvIHRoZSBndWVzdCB0byBtYWtlIHRoZSBmZWF0dXJlc2V0 IHN0cmljdGVyIGlmCisgICAgICogZW11bGF0aW5nIEludGVsLgorICAgICAqLworICAgIGZzW0ZF QVRVUkVTRVRfZTFkXSA9ICgoZnNbRkVBVFVSRVNFVF8xZF0gICYgIENQVUlEX0NPTU1PTl8xRF9G RUFUVVJFUykgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAoZnNbRkVBVFVSRVNFVF9lMWRd ICYgfkNQVUlEX0NPTU1PTl8xRF9GRUFUVVJFUykpOworfQorCitzdGF0aWMgdm9pZCBfX2luaXQg Y2FsY3VsYXRlX3Jhd19mZWF0dXJlc2V0KHZvaWQpCit7CisgICAgdW5zaWduZWQgaW50IG1heCwg dG1wOworCisgICAgbWF4ID0gY3B1aWRfZWF4KDApOworCisgICAgaWYgKCBtYXggPj0gMSApCisg ICAgICAgIGNwdWlkKDB4MSwgJnRtcCwgJnRtcCwKKyAgICAgICAgICAgICAgJnJhd19mZWF0dXJl c2V0W0ZFQVRVUkVTRVRfMWNdLAorICAgICAgICAgICAgICAmcmF3X2ZlYXR1cmVzZXRbRkVBVFVS RVNFVF8xZF0pOworICAgIGlmICggbWF4ID49IDcgKQorICAgICAgICBjcHVpZF9jb3VudCgweDcs IDAsICZ0bXAsCisgICAgICAgICAgICAgICAgICAgICZyYXdfZmVhdHVyZXNldFtGRUFUVVJFU0VU XzdiMF0sCisgICAgICAgICAgICAgICAgICAgICZyYXdfZmVhdHVyZXNldFtGRUFUVVJFU0VUXzdj MF0sCisgICAgICAgICAgICAgICAgICAgICZ0bXApOworICAgIGlmICggbWF4ID49IDB4ZCApCisg ICAgICAgIGNwdWlkX2NvdW50KDB4ZCwgMSwKKyAgICAgICAgICAgICAgICAgICAgJnJhd19mZWF0 dXJlc2V0W0ZFQVRVUkVTRVRfRGExXSwKKyAgICAgICAgICAgICAgICAgICAgJnRtcCwgJnRtcCwg JnRtcCk7CisKKyAgICBtYXggPSBjcHVpZF9lYXgoMHg4MDAwMDAwMCk7CisgICAgaWYgKCAobWF4 ID4+IDE2KSAhPSAweDgwMDAgKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIG1heCA+PSAw eDgwMDAwMDAxICkKKyAgICAgICAgY3B1aWQoMHg4MDAwMDAwMSwgJnRtcCwgJnRtcCwKKyAgICAg ICAgICAgICAgJnJhd19mZWF0dXJlc2V0W0ZFQVRVUkVTRVRfZTFjXSwKKyAgICAgICAgICAgICAg JnJhd19mZWF0dXJlc2V0W0ZFQVRVUkVTRVRfZTFkXSk7CisgICAgaWYgKCBtYXggPj0gMHg4MDAw MDAwNyApCisgICAgICAgIGNwdWlkKDB4ODAwMDAwMDcsICZ0bXAsICZ0bXAsICZ0bXAsCisgICAg ICAgICAgICAgICZyYXdfZmVhdHVyZXNldFtGRUFUVVJFU0VUX2U3ZF0pOworICAgIGlmICggbWF4 ID49IDB4ODAwMDAwMDggKQorICAgICAgICBjcHVpZCgweDgwMDAwMDA4LCAmdG1wLAorICAgICAg ICAgICAgICAmcmF3X2ZlYXR1cmVzZXRbRkVBVFVSRVNFVF9lOGJdLAorICAgICAgICAgICAgICAm dG1wLCAmdG1wKTsKK30KKworc3RhdGljIHZvaWQgX19pbml0IGNhbGN1bGF0ZV9wdl9mZWF0dXJl c2V0KHZvaWQpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8 IEZTQ0FQSU5UUzsgKytpICkKKyAgICAgICAgcHZfZmVhdHVyZXNldFtpXSA9IGhvc3RfZmVhdHVy ZXNldFtpXSAmIHB2X2ZlYXR1cmVtYXNrW2ldOworCisgICAgLyogVW5jb25kaXRpb25hbGx5IGNs YWltIHRvIGJlIGFibGUgdG8gc2V0IHRoZSBoeXBlcnZpc29yIGJpdC4gKi8KKyAgICBfX3NldF9i aXQoWDg2X0ZFQVRVUkVfSFlQRVJWSVNPUiwgcHZfZmVhdHVyZXNldCk7CisKKyAgICAvKgorICAg ICAqIEFsbG93IHRoZSB0b29sc3RhY2sgdG8gc2V0IEhUVCwgWDJBUElDIGFuZCBDTVBfTEVHQUNZ LiAgVGhlc2UgYml0cworICAgICAqIGFmZmVjdCBob3cgdG8gaW50ZXJwcmV0IHRvcG9sb2d5IGlu Zm9ybWF0aW9uIGluIG90aGVyIGNwdWlkIGxlYXZlcy4KKyAgICAgKi8KKyAgICBfX3NldF9iaXQo WDg2X0ZFQVRVUkVfSFRULCBwdl9mZWF0dXJlc2V0KTsKKyAgICBfX3NldF9iaXQoWDg2X0ZFQVRV UkVfWDJBUElDLCBwdl9mZWF0dXJlc2V0KTsKKyAgICBfX3NldF9iaXQoWDg2X0ZFQVRVUkVfQ01Q X0xFR0FDWSwgcHZfZmVhdHVyZXNldCk7CisKKyAgICBzYW5pdGlzZV9mZWF0dXJlc2V0KHB2X2Zl YXR1cmVzZXQpOworfQorCitzdGF0aWMgdm9pZCBfX2luaXQgY2FsY3VsYXRlX2h2bV9mZWF0dXJl c2V0KHZvaWQpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisgICAgY29uc3QgdWludDMyX3QgKmh2 bV9mZWF0dXJlbWFzazsKKworICAgIGlmICggIWh2bV9lbmFibGVkICkKKyAgICAgICAgcmV0dXJu OworCisgICAgaHZtX2ZlYXR1cmVtYXNrID0gaHZtX2Z1bmNzLmhhcF9zdXBwb3J0ZWQgPworICAg ICAgICBodm1faGFwX2ZlYXR1cmVtYXNrIDogaHZtX3NoYWRvd19mZWF0dXJlbWFzazsKKworICAg IGZvciAoIGkgPSAwOyBpIDwgRlNDQVBJTlRTOyArK2kgKQorICAgICAgICBodm1fZmVhdHVyZXNl dFtpXSA9IGhvc3RfZmVhdHVyZXNldFtpXSAmIGh2bV9mZWF0dXJlbWFza1tpXTsKKworICAgIC8q IFVuY29uZGl0aW9uYWxseSBjbGFpbSB0byBiZSBhYmxlIHRvIHNldCB0aGUgaHlwZXJ2aXNvciBi aXQuICovCisgICAgX19zZXRfYml0KFg4Nl9GRUFUVVJFX0hZUEVSVklTT1IsIGh2bV9mZWF0dXJl c2V0KTsKKworICAgIC8qCisgICAgICogQWxsb3cgdGhlIHRvb2xzdGFjayB0byBzZXQgSFRULCBY MkFQSUMgYW5kIENNUF9MRUdBQ1kuICBUaGVzZSBiaXRzCisgICAgICogYWZmZWN0IGhvdyB0byBp bnRlcnByZXQgdG9wb2xvZ3kgaW5mb3JtYXRpb24gaW4gb3RoZXIgY3B1aWQgbGVhdmVzLgorICAg ICAqLworICAgIF9fc2V0X2JpdChYODZfRkVBVFVSRV9IVFQsIGh2bV9mZWF0dXJlc2V0KTsKKyAg ICBfX3NldF9iaXQoWDg2X0ZFQVRVUkVfWDJBUElDLCBodm1fZmVhdHVyZXNldCk7CisgICAgX19z ZXRfYml0KFg4Nl9GRUFUVVJFX0NNUF9MRUdBQ1ksIGh2bV9mZWF0dXJlc2V0KTsKKworICAgIC8q CisgICAgICogWGVuIGNhbiBwcm92aWRlIGFuIEFQSUMgZW11bGF0aW9uIHRvIEhWTSBndWVzdHMg ZXZlbiBpZiB0aGUgaG9zdCdzIEFQSUMKKyAgICAgKiBpc24ndCBlbmFibGVkLgorICAgICAqLwor ICAgIF9fc2V0X2JpdChYODZfRkVBVFVSRV9BUElDLCBodm1fZmVhdHVyZXNldCk7CisKKyAgICAv KgorICAgICAqIE9uIEFNRCwgUFYgZ3Vlc3RzIGFyZSBlbnRpcmVseSB1bmFibGUgdG8gdXNlIFNZ U0VOVEVSIGFzIFhlbiBydW5zIGluCisgICAgICogbG9uZyBtb2RlIChhbmQgaW5pdF9hbWQoKSBo YXMgY2xlYXJlZCBpdCBvdXQgb2YgaG9zdCBjYXBhYmlsaXRpZXMpLCBidXQKKyAgICAgKiBIVk0g Z3Vlc3RzIGFyZSBhYmxlIGlmIHJ1bm5pbmcgaW4gcHJvdGVjdGVkIG1vZGUuCisgICAgICovCisg ICAgaWYgKCAoYm9vdF9jcHVfZGF0YS54ODZfdmVuZG9yID09IFg4Nl9WRU5ET1JfQU1EKSAmJgor ICAgICAgICAgdGVzdF9iaXQoWDg2X0ZFQVRVUkVfU0VQLCByYXdfZmVhdHVyZXNldCkgKQorICAg ICAgICBfX3NldF9iaXQoWDg2X0ZFQVRVUkVfU0VQLCBodm1fZmVhdHVyZXNldCk7CisKKyAgICAv KgorICAgICAqIFdpdGggVlQteCwgc29tZSBmZWF0dXJlcyBhcmUgb25seSBzdXBwb3J0ZWQgYnkg WGVuIGlmIGRlZGljYXRlZAorICAgICAqIGhhcmR3YXJlIHN1cHBvcnQgaXMgYWxzbyBhdmFpbGFi bGUuCisgICAgICovCisgICAgaWYgKCBjcHVfaGFzX3ZteCApCisgICAgeworICAgICAgICBpZiAo ICEodm14X3ZtZXhpdF9jb250cm9sICYgVk1fRVhJVF9DTEVBUl9CTkRDRkdTKSB8fAorICAgICAg ICAgICAgICEodm14X3ZtZW50cnlfY29udHJvbCAmIFZNX0VOVFJZX0xPQURfQk5EQ0ZHUykgKQor ICAgICAgICAgICAgX19jbGVhcl9iaXQoWDg2X0ZFQVRVUkVfTVBYLCBodm1fZmVhdHVyZXNldCk7 CisKKyAgICAgICAgaWYgKCAhY3B1X2hhc192bXhfeHNhdmVzICkKKyAgICAgICAgICAgIF9fY2xl YXJfYml0KFg4Nl9GRUFUVVJFX1hTQVZFUywgaHZtX2ZlYXR1cmVzZXQpOworCisgICAgICAgIGlm ICggIWNwdV9oYXNfdm14X3Bjb21taXQgKQorICAgICAgICAgICAgX19jbGVhcl9iaXQoWDg2X0ZF QVRVUkVfUENPTU1JVCwgaHZtX2ZlYXR1cmVzZXQpOworICAgIH0KKworICAgIHNhbml0aXNlX2Zl YXR1cmVzZXQoaHZtX2ZlYXR1cmVzZXQpOworfQorCit2b2lkIF9faW5pdCBjYWxjdWxhdGVfZmVh dHVyZXNldHModm9pZCkKK3sKKyAgICBjYWxjdWxhdGVfcmF3X2ZlYXR1cmVzZXQoKTsKKyAgICBj YWxjdWxhdGVfcHZfZmVhdHVyZXNldCgpOworICAgIGNhbGN1bGF0ZV9odm1fZmVhdHVyZXNldCgp OworfQorCiBzdGF0aWMgdm9pZCBfX2luaXQgX19tYXliZV91bnVzZWQgYnVpbGRfYXNzZXJ0aW9u cyh2b2lkKQogewogICAgIEJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGtub3duX2ZlYXR1cmVzKSAh PSBGU0NBUElOVFMpOwogICAgIEJVSUxEX0JVR19PTihBUlJBWV9TSVpFKHNwZWNpYWxfZmVhdHVy ZXMpICE9IEZTQ0FQSU5UUyk7CisgICAgQlVJTERfQlVHX09OKEFSUkFZX1NJWkUocHZfZmVhdHVy ZW1hc2spICE9IEZTQ0FQSU5UUyk7CisgICAgQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoaHZtX3No YWRvd19mZWF0dXJlbWFzaykgIT0gRlNDQVBJTlRTKTsKKyAgICBCVUlMRF9CVUdfT04oQVJSQVlf U0laRShodm1faGFwX2ZlYXR1cmVtYXNrKSAhPSBGU0NBUElOVFMpOwogfQogCiAvKgpkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L3NldHVwLmMgYi94ZW4vYXJjaC94ODYvc2V0dXAuYwppbmRleCBl ZTY1ZjU1Li4zNjk2YzMxIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvc2V0dXAuYworKysgYi94 ZW4vYXJjaC94ODYvc2V0dXAuYwpAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgPGFzbS9ubWku aD4KICNpbmNsdWRlIDxhc20vYWx0ZXJuYXRpdmUuaD4KICNpbmNsdWRlIDxhc20vbWMxNDY4MThy dGMuaD4KKyNpbmNsdWRlIDxhc20vY3B1aWQuaD4KIAogLyogb3B0X25vc21wOiBJZiB0cnVlLCBz ZWNvbmRhcnkgcHJvY2Vzc29ycyBhcmUgaWdub3JlZC4gKi8KIHN0YXRpYyBib29sX3QgX19pbml0 ZGF0YSBvcHRfbm9zbXA7CkBAIC0xNTI1LDYgKzE1MjYsOCBAQCB2b2lkIF9faW5pdCBub3JldHVy biBfX3N0YXJ0X3hlbih1bnNpZ25lZCBsb25nIG1iaV9wKQogICAgICAgICAgICAgICAgIk11bHRp cGxlIGluaXRyZCBjYW5kaWRhdGVzLCBwaWNraW5nIG1vZHVsZSAjJXVcbiIsCiAgICAgICAgICAg ICAgICBpbml0cmRpZHgpOwogCisgICAgY2FsY3VsYXRlX2ZlYXR1cmVzZXRzKCk7CisKICAgICAv KgogICAgICAqIFRlbXBvcmFyaWx5IGNsZWFyIFNNQVAgaW4gQ1I0IHRvIGFsbG93IHVzZXItYWNj ZXNzZXMgaW4gY29uc3RydWN0X2RvbTAoKS4KICAgICAgKiBUaGlzIHNhdmVzIGEgbGFyZ2UgbnVt YmVyIG9mIGNvcm5lciBjYXNlcyBpbnRlcmFjdGlvbnMgd2l0aApkaWZmIC0tZ2l0IGEveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9jcHVpZC5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9jcHVpZC5oCmluZGV4 IDBlY2YzNTcuLjUwNDFiY2QgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvY3B1aWQu aAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2NwdWlkLmgKQEAgLTYsMTIgKzYsMjkgQEAKIAog I2RlZmluZSBGU0NBUElOVFMgRkVBVFVSRVNFVF9OUl9FTlRSSUVTCiAKKyNkZWZpbmUgRkVBVFVS RVNFVF8xZCAgICAgMCAvKiAweDAwMDAwMDAxLmVkeCAgICAgICovCisjZGVmaW5lIEZFQVRVUkVT RVRfMWMgICAgIDEgLyogMHgwMDAwMDAwMS5lY3ggICAgICAqLworI2RlZmluZSBGRUFUVVJFU0VU X2UxZCAgICAyIC8qIDB4ODAwMDAwMDEuZWR4ICAgICAgKi8KKyNkZWZpbmUgRkVBVFVSRVNFVF9l MWMgICAgMyAvKiAweDgwMDAwMDAxLmVjeCAgICAgICovCisjZGVmaW5lIEZFQVRVUkVTRVRfRGEx ICAgIDQgLyogMHgwMDAwMDAwZDoxLmVheCAgICAqLworI2RlZmluZSBGRUFUVVJFU0VUXzdiMCAg ICA1IC8qIDB4MDAwMDAwMDc6MC5lYnggICAgKi8KKyNkZWZpbmUgRkVBVFVSRVNFVF83YzAgICAg NiAvKiAweDAwMDAwMDA3OjAuZWN4ICAgICovCisjZGVmaW5lIEZFQVRVUkVTRVRfZTdkICAgIDcg LyogMHg4MDAwMDAwNy5lZHggICAgICAqLworI2RlZmluZSBGRUFUVVJFU0VUX2U4YiAgICA4IC8q IDB4ODAwMDAwMDguZWJ4ICAgICAgKi8KKwogI2lmbmRlZiBfX0FTU0VNQkxZX18KICNpbmNsdWRl IDx4ZW4vdHlwZXMuaD4KIAogZXh0ZXJuIGNvbnN0IHVpbnQzMl90IGtub3duX2ZlYXR1cmVzW0ZT Q0FQSU5UU107CiBleHRlcm4gY29uc3QgdWludDMyX3Qgc3BlY2lhbF9mZWF0dXJlc1tGU0NBUElO VFNdOwogCitleHRlcm4gdWludDMyX3QgcmF3X2ZlYXR1cmVzZXRbRlNDQVBJTlRTXTsKKyNkZWZp bmUgaG9zdF9mZWF0dXJlc2V0IGJvb3RfY3B1X2RhdGEueDg2X2NhcGFiaWxpdHkKK2V4dGVybiB1 aW50MzJfdCBwdl9mZWF0dXJlc2V0W0ZTQ0FQSU5UU107CitleHRlcm4gdWludDMyX3QgaHZtX2Zl YXR1cmVzZXRbRlNDQVBJTlRTXTsKKwordm9pZCBjYWxjdWxhdGVfZmVhdHVyZXNldHModm9pZCk7 CisKICNlbmRpZiAvKiBfX0FTU0VNQkxZX18gKi8KICNlbmRpZiAvKiAhX19YODZfQ1BVSURfSF9f ICovCiAKLS0gCjIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpo dHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK