From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v5 02/21] xen/x86: Calculate maximum host and guest featuresets Date: Thu, 7 Apr 2016 12:57:07 +0100 Message-ID: <1460030246-30153-3-git-send-email-andrew.cooper3@citrix.com> References: <1460030246-30153-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: <1460030246-30153-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 , Jan Beulich List-Id: xen-devel@lists.xenproject.org QWxsIG9mIHRoaXMgaW5mb3JtYXRpb24gd2lsbCBiZSB1c2VkIGJ5IHRoZSB0b29sc3RhY2sgdG8g bWFrZSBpbmZvcm1lZApsZXZlbGxpbmcgZGVjaXNpb25zIGZvciBWTXMsIGFuZCBieSBYZW4gdG8g c2FuaXR5IGNoZWNrIHRvb2xzdGFjay1wcm92aWRlZAppbmZvcm1hdGlvbi4KClRoZSBzcGxpdCBi ZXR3ZWVuIHRoZSBzaGFkb3cgYW5kIGhhcCBIVk0gbWFza3MgaXMgbmVjZXNzYXJ5IGR1ZSB0byB0 aGUgbGFjayBvZgphICJnZXQgY3B1aWQgcG9saWN5IiBoeXBlcmNhbGwuICBNdWx0aS1ob3N0IHRv b2xzdGFja3MgKGkuZS4gbm90IGxpYnhsKQpkZWFsaW5nIHdpdGggaGFwIGFuZCBub24taGFwIGNh cGFibGUgaG9zdHMgbmVlZCB0byBiZSBhYmxlIHRvIGNhbGN1bGF0ZSB0aGF0Cm1pZ3JhdGluZyBh IHNoYWRvdyBndWVzdCBpcyBzYWZlLgoKRnV0dXJlIHBsYW5uZWQgZGV2ZWxvcG1lbnQgd29yayB3 aWxsIGltcGxlbWVudCBwcm9wZXIgY3B1aWQgcG9saWN5IGhhbmRpbmcgaW4KWGVuLCBpbmNsdWRp bmcgYSAiZ2V0IHBvbGljeSIgaHlwZXJjYWxsLCBidXQgdW50aWwgdGhlbiwgdGhlIGRpZmZlcmVu Y2UgaXMKbWFkZSBhdmFpbGFibGUgZm9yIHRvb2xzdGFjayB1c2UgdmlhIGEgbm9uLXN0YWJsZSBp bnRlcmZhY2UuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0Bj aXRyaXguY29tPgpSZXZpZXdlZC1ieTogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2ls a0BvcmFjbGUuY29tPgotLS0KQ0M6IEphbiBCZXVsaWNoIDxKQmV1bGljaEBzdXNlLmNvbT4KCnYz OgogKiBNb3ZlIGFzIG11Y2ggYXMgcG9zc2libGUgaW50byAuaW5pdC4KICogRml4IHRoZSBoYW5k aW5nIG9mIHRoZSBzaGFyZWQgYml0cyBmb3IgdGhlIGNyb3NzLXZlbmRvciBjYXNlLgogKiBGaXgg ZXh0ZW5kZWQgY2hlY2suCnY0OgogKiBGaXggY29weSZwYXN0ZSBlcnJvciBpbiBjYWxjdWxhdGVf aHZtX2ZlYXR1cmVzZXQoKQp2NToKICogRXhwYW5kIGNvbW1pdCBtZXNzYWdlLCBleHBsYWluaW5n IGFib3V0IHRoZSBzaGFkb3cgYW5kIGhhcCBtYXNrcy4KLS0tCiB4ZW4vYXJjaC94ODYvY3B1aWQu YyAgICAgICAgfCAxNjIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKIHhlbi9hcmNoL3g4Ni9zZXR1cC5jICAgICAgICB8ICAgMyArCiB4ZW4vaW5jbHVkZS9hc20t eDg2L2NwdWlkLmggfCAgMTcgKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMTgyIGluc2VydGlvbnMo KykKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvY3B1aWQuYyBiL3hlbi9hcmNoL3g4Ni9jcHVp ZC5jCmluZGV4IDc3ZTAwOGEuLjQxNDM5ZjggMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9jcHVp ZC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9jcHVpZC5jCkBAIC0xLDE0ICsxLDE3NiBAQAogI2luY2x1 ZGUgPHhlbi9pbml0Lmg+CiAjaW5jbHVkZSA8eGVuL2xpYi5oPgogI2luY2x1ZGUgPGFzbS9jcHVp ZC5oPgorI2luY2x1ZGUgPGFzbS9odm0vaHZtLmg+CisjaW5jbHVkZSA8YXNtL2h2bS92bXgvdm1j cy5oPgorI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KIAogY29uc3QgdWludDMyX3Qga25vd25f ZmVhdHVyZXNbXSA9IElOSVRfS05PV05fRkVBVFVSRVM7CiBjb25zdCB1aW50MzJfdCBzcGVjaWFs X2ZlYXR1cmVzW10gPSBJTklUX1NQRUNJQUxfRkVBVFVSRVM7CiAKK3N0YXRpYyBjb25zdCB1aW50 MzJfdCBfX2luaXRjb25zdCBwdl9mZWF0dXJlbWFza1tdID0gSU5JVF9QVl9GRUFUVVJFUzsKK3N0 YXRpYyBjb25zdCB1aW50MzJfdCBfX2luaXRjb25zdCBodm1fc2hhZG93X2ZlYXR1cmVtYXNrW10g PSBJTklUX0hWTV9TSEFET1dfRkVBVFVSRVM7CitzdGF0aWMgY29uc3QgdWludDMyX3QgX19pbml0 Y29uc3QgaHZtX2hhcF9mZWF0dXJlbWFza1tdID0gSU5JVF9IVk1fSEFQX0ZFQVRVUkVTOworCit1 aW50MzJfdCBfX3JlYWRfbW9zdGx5IHJhd19mZWF0dXJlc2V0W0ZTQ0FQSU5UU107Cit1aW50MzJf dCBfX3JlYWRfbW9zdGx5IHB2X2ZlYXR1cmVzZXRbRlNDQVBJTlRTXTsKK3VpbnQzMl90IF9fcmVh ZF9tb3N0bHkgaHZtX2ZlYXR1cmVzZXRbRlNDQVBJTlRTXTsKKworc3RhdGljIHZvaWQgX19pbml0 IHNhbml0aXNlX2ZlYXR1cmVzZXQodWludDMyX3QgKmZzKQoreworICAgIHVuc2lnbmVkIGludCBp OworCisgICAgZm9yICggaSA9IDA7IGkgPCBGU0NBUElOVFM7ICsraSApCisgICAgeworICAgICAg ICAvKiBDbGFtcCB0byBrbm93biBtYXNrLiAqLworICAgICAgICBmc1tpXSAmPSBrbm93bl9mZWF0 dXJlc1tpXTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFNvcnQgb3V0IHNoYXJlZCBiaXRzLiAg V2UgYXJlIGNvbnN0cnVjdGluZyBhIGZlYXR1cmVzZXQgd2hpY2ggbmVlZHMgdG8KKyAgICAgKiBi ZSBhcHBsaWNhYmxlIHRvIGEgY3Jvc3MtdmVuZG9yIGNhc2UuICBJbnRlbCBzdHJpY3RseSBjbGVh cnMgdGhlIGNvbW1vbgorICAgICAqIGJpdHMgaW4gZTFkLCB3aGlsZSBBTUQgc3RyaWN0bHkgZHVw bGljYXRlcyB0aGVtLgorICAgICAqCisgICAgICogV2UgZHVwbGljYXRlIHRoZW0gaGVyZSB0byBi ZSBjb21wYXRpYmxlIHdpdGggQU1EIHdoaWxlIG9uIEludGVsLCBhbmQKKyAgICAgKiByZWx5IG9u IGxvZ2ljIGNsb3NlciB0byB0aGUgZ3Vlc3QgdG8gbWFrZSB0aGUgZmVhdHVyZXNldCBzdHJpY3Rl ciBpZgorICAgICAqIGVtdWxhdGluZyBJbnRlbC4KKyAgICAgKi8KKyAgICBmc1tGRUFUVVJFU0VU X2UxZF0gPSAoKGZzW0ZFQVRVUkVTRVRfMWRdICAmICBDUFVJRF9DT01NT05fMURfRkVBVFVSRVMp IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGZzW0ZFQVRVUkVTRVRfZTFkXSAmIH5DUFVJ RF9DT01NT05fMURfRkVBVFVSRVMpKTsKK30KKworc3RhdGljIHZvaWQgX19pbml0IGNhbGN1bGF0 ZV9yYXdfZmVhdHVyZXNldCh2b2lkKQoreworICAgIHVuc2lnbmVkIGludCBtYXgsIHRtcDsKKwor ICAgIG1heCA9IGNwdWlkX2VheCgwKTsKKworICAgIGlmICggbWF4ID49IDEgKQorICAgICAgICBj cHVpZCgweDEsICZ0bXAsICZ0bXAsCisgICAgICAgICAgICAgICZyYXdfZmVhdHVyZXNldFtGRUFU VVJFU0VUXzFjXSwKKyAgICAgICAgICAgICAgJnJhd19mZWF0dXJlc2V0W0ZFQVRVUkVTRVRfMWRd KTsKKyAgICBpZiAoIG1heCA+PSA3ICkKKyAgICAgICAgY3B1aWRfY291bnQoMHg3LCAwLCAmdG1w LAorICAgICAgICAgICAgICAgICAgICAmcmF3X2ZlYXR1cmVzZXRbRkVBVFVSRVNFVF83YjBdLAor ICAgICAgICAgICAgICAgICAgICAmcmF3X2ZlYXR1cmVzZXRbRkVBVFVSRVNFVF83YzBdLAorICAg ICAgICAgICAgICAgICAgICAmdG1wKTsKKyAgICBpZiAoIG1heCA+PSAweGQgKQorICAgICAgICBj cHVpZF9jb3VudCgweGQsIDEsCisgICAgICAgICAgICAgICAgICAgICZyYXdfZmVhdHVyZXNldFtG RUFUVVJFU0VUX0RhMV0sCisgICAgICAgICAgICAgICAgICAgICZ0bXAsICZ0bXAsICZ0bXApOwor CisgICAgbWF4ID0gY3B1aWRfZWF4KDB4ODAwMDAwMDApOworICAgIGlmICggKG1heCA+PiAxNikg IT0gMHg4MDAwICkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCBtYXggPj0gMHg4MDAwMDAw MSApCisgICAgICAgIGNwdWlkKDB4ODAwMDAwMDEsICZ0bXAsICZ0bXAsCisgICAgICAgICAgICAg ICZyYXdfZmVhdHVyZXNldFtGRUFUVVJFU0VUX2UxY10sCisgICAgICAgICAgICAgICZyYXdfZmVh dHVyZXNldFtGRUFUVVJFU0VUX2UxZF0pOworICAgIGlmICggbWF4ID49IDB4ODAwMDAwMDcgKQor ICAgICAgICBjcHVpZCgweDgwMDAwMDA3LCAmdG1wLCAmdG1wLCAmdG1wLAorICAgICAgICAgICAg ICAmcmF3X2ZlYXR1cmVzZXRbRkVBVFVSRVNFVF9lN2RdKTsKKyAgICBpZiAoIG1heCA+PSAweDgw MDAwMDA4ICkKKyAgICAgICAgY3B1aWQoMHg4MDAwMDAwOCwgJnRtcCwKKyAgICAgICAgICAgICAg JnJhd19mZWF0dXJlc2V0W0ZFQVRVUkVTRVRfZThiXSwKKyAgICAgICAgICAgICAgJnRtcCwgJnRt cCk7Cit9CisKK3N0YXRpYyB2b2lkIF9faW5pdCBjYWxjdWxhdGVfcHZfZmVhdHVyZXNldCh2b2lk KQoreworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZm9yICggaSA9IDA7IGkgPCBGU0NBUElO VFM7ICsraSApCisgICAgICAgIHB2X2ZlYXR1cmVzZXRbaV0gPSBob3N0X2ZlYXR1cmVzZXRbaV0g JiBwdl9mZWF0dXJlbWFza1tpXTsKKworICAgIC8qIFVuY29uZGl0aW9uYWxseSBjbGFpbSB0byBi ZSBhYmxlIHRvIHNldCB0aGUgaHlwZXJ2aXNvciBiaXQuICovCisgICAgX19zZXRfYml0KFg4Nl9G RUFUVVJFX0hZUEVSVklTT1IsIHB2X2ZlYXR1cmVzZXQpOworCisgICAgLyoKKyAgICAgKiBBbGxv dyB0aGUgdG9vbHN0YWNrIHRvIHNldCBIVFQsIFgyQVBJQyBhbmQgQ01QX0xFR0FDWS4gIFRoZXNl IGJpdHMKKyAgICAgKiBhZmZlY3QgaG93IHRvIGludGVycHJldCB0b3BvbG9neSBpbmZvcm1hdGlv biBpbiBvdGhlciBjcHVpZCBsZWF2ZXMuCisgICAgICovCisgICAgX19zZXRfYml0KFg4Nl9GRUFU VVJFX0hUVCwgcHZfZmVhdHVyZXNldCk7CisgICAgX19zZXRfYml0KFg4Nl9GRUFUVVJFX1gyQVBJ QywgcHZfZmVhdHVyZXNldCk7CisgICAgX19zZXRfYml0KFg4Nl9GRUFUVVJFX0NNUF9MRUdBQ1ks IHB2X2ZlYXR1cmVzZXQpOworCisgICAgc2FuaXRpc2VfZmVhdHVyZXNldChwdl9mZWF0dXJlc2V0 KTsKK30KKworc3RhdGljIHZvaWQgX19pbml0IGNhbGN1bGF0ZV9odm1fZmVhdHVyZXNldCh2b2lk KQoreworICAgIHVuc2lnbmVkIGludCBpOworICAgIGNvbnN0IHVpbnQzMl90ICpodm1fZmVhdHVy ZW1hc2s7CisKKyAgICBpZiAoICFodm1fZW5hYmxlZCApCisgICAgICAgIHJldHVybjsKKworICAg IGh2bV9mZWF0dXJlbWFzayA9IGh2bV9mdW5jcy5oYXBfc3VwcG9ydGVkID8KKyAgICAgICAgaHZt X2hhcF9mZWF0dXJlbWFzayA6IGh2bV9zaGFkb3dfZmVhdHVyZW1hc2s7CisKKyAgICBmb3IgKCBp ID0gMDsgaSA8IEZTQ0FQSU5UUzsgKytpICkKKyAgICAgICAgaHZtX2ZlYXR1cmVzZXRbaV0gPSBo b3N0X2ZlYXR1cmVzZXRbaV0gJiBodm1fZmVhdHVyZW1hc2tbaV07CisKKyAgICAvKiBVbmNvbmRp dGlvbmFsbHkgY2xhaW0gdG8gYmUgYWJsZSB0byBzZXQgdGhlIGh5cGVydmlzb3IgYml0LiAqLwor ICAgIF9fc2V0X2JpdChYODZfRkVBVFVSRV9IWVBFUlZJU09SLCBodm1fZmVhdHVyZXNldCk7CisK KyAgICAvKgorICAgICAqIEFsbG93IHRoZSB0b29sc3RhY2sgdG8gc2V0IEhUVCwgWDJBUElDIGFu ZCBDTVBfTEVHQUNZLiAgVGhlc2UgYml0cworICAgICAqIGFmZmVjdCBob3cgdG8gaW50ZXJwcmV0 IHRvcG9sb2d5IGluZm9ybWF0aW9uIGluIG90aGVyIGNwdWlkIGxlYXZlcy4KKyAgICAgKi8KKyAg ICBfX3NldF9iaXQoWDg2X0ZFQVRVUkVfSFRULCBodm1fZmVhdHVyZXNldCk7CisgICAgX19zZXRf Yml0KFg4Nl9GRUFUVVJFX1gyQVBJQywgaHZtX2ZlYXR1cmVzZXQpOworICAgIF9fc2V0X2JpdChY ODZfRkVBVFVSRV9DTVBfTEVHQUNZLCBodm1fZmVhdHVyZXNldCk7CisKKyAgICAvKgorICAgICAq IFhlbiBjYW4gcHJvdmlkZSBhbiBBUElDIGVtdWxhdGlvbiB0byBIVk0gZ3Vlc3RzIGV2ZW4gaWYg dGhlIGhvc3QncyBBUElDCisgICAgICogaXNuJ3QgZW5hYmxlZC4KKyAgICAgKi8KKyAgICBfX3Nl dF9iaXQoWDg2X0ZFQVRVUkVfQVBJQywgaHZtX2ZlYXR1cmVzZXQpOworCisgICAgLyoKKyAgICAg KiBPbiBBTUQsIFBWIGd1ZXN0cyBhcmUgZW50aXJlbHkgdW5hYmxlIHRvIHVzZSBTWVNFTlRFUiBh cyBYZW4gcnVucyBpbgorICAgICAqIGxvbmcgbW9kZSAoYW5kIGluaXRfYW1kKCkgaGFzIGNsZWFy ZWQgaXQgb3V0IG9mIGhvc3QgY2FwYWJpbGl0aWVzKSwgYnV0CisgICAgICogSFZNIGd1ZXN0cyBh cmUgYWJsZSBpZiBydW5uaW5nIGluIHByb3RlY3RlZCBtb2RlLgorICAgICAqLworICAgIGlmICgg KGJvb3RfY3B1X2RhdGEueDg2X3ZlbmRvciA9PSBYODZfVkVORE9SX0FNRCkgJiYKKyAgICAgICAg IHRlc3RfYml0KFg4Nl9GRUFUVVJFX1NFUCwgcmF3X2ZlYXR1cmVzZXQpICkKKyAgICAgICAgX19z ZXRfYml0KFg4Nl9GRUFUVVJFX1NFUCwgaHZtX2ZlYXR1cmVzZXQpOworCisgICAgLyoKKyAgICAg KiBXaXRoIFZULXgsIHNvbWUgZmVhdHVyZXMgYXJlIG9ubHkgc3VwcG9ydGVkIGJ5IFhlbiBpZiBk ZWRpY2F0ZWQKKyAgICAgKiBoYXJkd2FyZSBzdXBwb3J0IGlzIGFsc28gYXZhaWxhYmxlLgorICAg ICAqLworICAgIGlmICggY3B1X2hhc192bXggKQorICAgIHsKKyAgICAgICAgaWYgKCAhKHZteF92 bWV4aXRfY29udHJvbCAmIFZNX0VYSVRfQ0xFQVJfQk5EQ0ZHUykgfHwKKyAgICAgICAgICAgICAh KHZteF92bWVudHJ5X2NvbnRyb2wgJiBWTV9FTlRSWV9MT0FEX0JORENGR1MpICkKKyAgICAgICAg ICAgIF9fY2xlYXJfYml0KFg4Nl9GRUFUVVJFX01QWCwgaHZtX2ZlYXR1cmVzZXQpOworCisgICAg ICAgIGlmICggIWNwdV9oYXNfdm14X3hzYXZlcyApCisgICAgICAgICAgICBfX2NsZWFyX2JpdChY ODZfRkVBVFVSRV9YU0FWRVMsIGh2bV9mZWF0dXJlc2V0KTsKKworICAgICAgICBpZiAoICFjcHVf aGFzX3ZteF9wY29tbWl0ICkKKyAgICAgICAgICAgIF9fY2xlYXJfYml0KFg4Nl9GRUFUVVJFX1BD T01NSVQsIGh2bV9mZWF0dXJlc2V0KTsKKyAgICB9CisKKyAgICBzYW5pdGlzZV9mZWF0dXJlc2V0 KGh2bV9mZWF0dXJlc2V0KTsKK30KKwordm9pZCBfX2luaXQgY2FsY3VsYXRlX2ZlYXR1cmVzZXRz KHZvaWQpCit7CisgICAgY2FsY3VsYXRlX3Jhd19mZWF0dXJlc2V0KCk7CisgICAgY2FsY3VsYXRl X3B2X2ZlYXR1cmVzZXQoKTsKKyAgICBjYWxjdWxhdGVfaHZtX2ZlYXR1cmVzZXQoKTsKK30KKwog c3RhdGljIHZvaWQgX19pbml0IF9fbWF5YmVfdW51c2VkIGJ1aWxkX2Fzc2VydGlvbnModm9pZCkK IHsKICAgICBCVUlMRF9CVUdfT04oQVJSQVlfU0laRShrbm93bl9mZWF0dXJlcykgIT0gRlNDQVBJ TlRTKTsKICAgICBCVUlMRF9CVUdfT04oQVJSQVlfU0laRShzcGVjaWFsX2ZlYXR1cmVzKSAhPSBG U0NBUElOVFMpOworICAgIEJVSUxEX0JVR19PTihBUlJBWV9TSVpFKHB2X2ZlYXR1cmVtYXNrKSAh PSBGU0NBUElOVFMpOworICAgIEJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGh2bV9zaGFkb3dfZmVh dHVyZW1hc2spICE9IEZTQ0FQSU5UUyk7CisgICAgQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoaHZt X2hhcF9mZWF0dXJlbWFzaykgIT0gRlNDQVBJTlRTKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9zZXR1cC5jIGIveGVuL2FyY2gveDg2L3NldHVwLmMKaW5kZXggZWU2NWY1NS4u MzY5NmMzMSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3NldHVwLmMKKysrIGIveGVuL2FyY2gv eDg2L3NldHVwLmMKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlIDxhc20vbm1pLmg+CiAjaW5j bHVkZSA8YXNtL2FsdGVybmF0aXZlLmg+CiAjaW5jbHVkZSA8YXNtL21jMTQ2ODE4cnRjLmg+Cisj aW5jbHVkZSA8YXNtL2NwdWlkLmg+CiAKIC8qIG9wdF9ub3NtcDogSWYgdHJ1ZSwgc2Vjb25kYXJ5 IHByb2Nlc3NvcnMgYXJlIGlnbm9yZWQuICovCiBzdGF0aWMgYm9vbF90IF9faW5pdGRhdGEgb3B0 X25vc21wOwpAQCAtMTUyNSw2ICsxNTI2LDggQEAgdm9pZCBfX2luaXQgbm9yZXR1cm4gX19zdGFy dF94ZW4odW5zaWduZWQgbG9uZyBtYmlfcCkKICAgICAgICAgICAgICAgICJNdWx0aXBsZSBpbml0 cmQgY2FuZGlkYXRlcywgcGlja2luZyBtb2R1bGUgIyV1XG4iLAogICAgICAgICAgICAgICAgaW5p dHJkaWR4KTsKIAorICAgIGNhbGN1bGF0ZV9mZWF0dXJlc2V0cygpOworCiAgICAgLyoKICAgICAg KiBUZW1wb3JhcmlseSBjbGVhciBTTUFQIGluIENSNCB0byBhbGxvdyB1c2VyLWFjY2Vzc2VzIGlu IGNvbnN0cnVjdF9kb20wKCkuCiAgICAgICogVGhpcyBzYXZlcyBhIGxhcmdlIG51bWJlciBvZiBj b3JuZXIgY2FzZXMgaW50ZXJhY3Rpb25zIHdpdGgKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2Fz bS14ODYvY3B1aWQuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvY3B1aWQuaAppbmRleCAwZWNmMzU3 Li41MDQxYmNkIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2NwdWlkLmgKKysrIGIv eGVuL2luY2x1ZGUvYXNtLXg4Ni9jcHVpZC5oCkBAIC02LDEyICs2LDI5IEBACiAKICNkZWZpbmUg RlNDQVBJTlRTIEZFQVRVUkVTRVRfTlJfRU5UUklFUwogCisjZGVmaW5lIEZFQVRVUkVTRVRfMWQg ICAgIDAgLyogMHgwMDAwMDAwMS5lZHggICAgICAqLworI2RlZmluZSBGRUFUVVJFU0VUXzFjICAg ICAxIC8qIDB4MDAwMDAwMDEuZWN4ICAgICAgKi8KKyNkZWZpbmUgRkVBVFVSRVNFVF9lMWQgICAg MiAvKiAweDgwMDAwMDAxLmVkeCAgICAgICovCisjZGVmaW5lIEZFQVRVUkVTRVRfZTFjICAgIDMg LyogMHg4MDAwMDAwMS5lY3ggICAgICAqLworI2RlZmluZSBGRUFUVVJFU0VUX0RhMSAgICA0IC8q IDB4MDAwMDAwMGQ6MS5lYXggICAgKi8KKyNkZWZpbmUgRkVBVFVSRVNFVF83YjAgICAgNSAvKiAw eDAwMDAwMDA3OjAuZWJ4ICAgICovCisjZGVmaW5lIEZFQVRVUkVTRVRfN2MwICAgIDYgLyogMHgw MDAwMDAwNzowLmVjeCAgICAqLworI2RlZmluZSBGRUFUVVJFU0VUX2U3ZCAgICA3IC8qIDB4ODAw MDAwMDcuZWR4ICAgICAgKi8KKyNkZWZpbmUgRkVBVFVSRVNFVF9lOGIgICAgOCAvKiAweDgwMDAw MDA4LmVieCAgICAgICovCisKICNpZm5kZWYgX19BU1NFTUJMWV9fCiAjaW5jbHVkZSA8eGVuL3R5 cGVzLmg+CiAKIGV4dGVybiBjb25zdCB1aW50MzJfdCBrbm93bl9mZWF0dXJlc1tGU0NBUElOVFNd OwogZXh0ZXJuIGNvbnN0IHVpbnQzMl90IHNwZWNpYWxfZmVhdHVyZXNbRlNDQVBJTlRTXTsKIAor ZXh0ZXJuIHVpbnQzMl90IHJhd19mZWF0dXJlc2V0W0ZTQ0FQSU5UU107CisjZGVmaW5lIGhvc3Rf ZmVhdHVyZXNldCBib290X2NwdV9kYXRhLng4Nl9jYXBhYmlsaXR5CitleHRlcm4gdWludDMyX3Qg cHZfZmVhdHVyZXNldFtGU0NBUElOVFNdOworZXh0ZXJuIHVpbnQzMl90IGh2bV9mZWF0dXJlc2V0 W0ZTQ0FQSU5UU107CisKK3ZvaWQgY2FsY3VsYXRlX2ZlYXR1cmVzZXRzKHZvaWQpOworCiAjZW5k aWYgLyogX19BU1NFTUJMWV9fICovCiAjZW5kaWYgLyogIV9fWDg2X0NQVUlEX0hfXyAqLwogCi0t IAoyLjEuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Clhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xp c3RzLnhlbi5vcmcveGVuLWRldmVsCg==