From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v4 07/26] xen/x86: Calculate maximum host and guest featuresets Date: Wed, 23 Mar 2016 16:36:10 +0000 Message-ID: <1458750989-28967-8-git-send-email-andrew.cooper3@citrix.com> References: <1458750989-28967-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: <1458750989-28967-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 c2FuaXR5IGNoZWNrIHRvb2xzdGFjay1wcm92aWRlZAppbmZvcm1hdGlvbi4KClNpZ25lZC1vZmYt Ynk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+ClJldmlld2VkLWJ5 OiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+Ci0tLQpDQzog SmFuIEJldWxpY2ggPEpCZXVsaWNoQHN1c2UuY29tPgoKdjM6CiAqIE1vdmUgYXMgbXVjaCBhcyBw b3NzaWJsZSBpbnRvIC5pbml0LgogKiBGaXggdGhlIGhhbmRpbmcgb2YgdGhlIHNoYXJlZCBiaXRz IGZvciB0aGUgY3Jvc3MtdmVuZG9yIGNhc2UuCiAqIEZpeCBleHRlbmRlZCBjaGVjay4KdjQ6CiAq IEZpeCBjb3B5JnBhc3RlIGVycm9yIGluIGNhbGN1bGF0ZV9odm1fZmVhdHVyZXNldCgpCi0tLQog eGVuL2FyY2gveDg2L2NwdWlkLmMgICAgICAgIHwgMTYyICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiB4ZW4vYXJjaC94ODYvc2V0dXAuYyAgICAgICAgfCAgIDMg KwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9jcHVpZC5oIHwgIDE3ICsrKysrCiAzIGZpbGVzIGNoYW5n ZWQsIDE4MiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2NwdWlkLmMg Yi94ZW4vYXJjaC94ODYvY3B1aWQuYwppbmRleCA3N2UwMDhhLi40MTQzOWY4IDEwMDY0NAotLS0g YS94ZW4vYXJjaC94ODYvY3B1aWQuYworKysgYi94ZW4vYXJjaC94ODYvY3B1aWQuYwpAQCAtMSwx NCArMSwxNzYgQEAKICNpbmNsdWRlIDx4ZW4vaW5pdC5oPgogI2luY2x1ZGUgPHhlbi9saWIuaD4K ICNpbmNsdWRlIDxhc20vY3B1aWQuaD4KKyNpbmNsdWRlIDxhc20vaHZtL2h2bS5oPgorI2luY2x1 ZGUgPGFzbS9odm0vdm14L3ZtY3MuaD4KKyNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CiAKIGNv bnN0IHVpbnQzMl90IGtub3duX2ZlYXR1cmVzW10gPSBJTklUX0tOT1dOX0ZFQVRVUkVTOwogY29u c3QgdWludDMyX3Qgc3BlY2lhbF9mZWF0dXJlc1tdID0gSU5JVF9TUEVDSUFMX0ZFQVRVUkVTOwog CitzdGF0aWMgY29uc3QgdWludDMyX3QgX19pbml0Y29uc3QgcHZfZmVhdHVyZW1hc2tbXSA9IElO SVRfUFZfRkVBVFVSRVM7CitzdGF0aWMgY29uc3QgdWludDMyX3QgX19pbml0Y29uc3QgaHZtX3No YWRvd19mZWF0dXJlbWFza1tdID0gSU5JVF9IVk1fU0hBRE9XX0ZFQVRVUkVTOworc3RhdGljIGNv bnN0IHVpbnQzMl90IF9faW5pdGNvbnN0IGh2bV9oYXBfZmVhdHVyZW1hc2tbXSA9IElOSVRfSFZN X0hBUF9GRUFUVVJFUzsKKwordWludDMyX3QgX19yZWFkX21vc3RseSByYXdfZmVhdHVyZXNldFtG U0NBUElOVFNdOwordWludDMyX3QgX19yZWFkX21vc3RseSBwdl9mZWF0dXJlc2V0W0ZTQ0FQSU5U U107Cit1aW50MzJfdCBfX3JlYWRfbW9zdGx5IGh2bV9mZWF0dXJlc2V0W0ZTQ0FQSU5UU107CisK K3N0YXRpYyB2b2lkIF9faW5pdCBzYW5pdGlzZV9mZWF0dXJlc2V0KHVpbnQzMl90ICpmcykKK3sK KyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgRlNDQVBJTlRTOyAr K2kgKQorICAgIHsKKyAgICAgICAgLyogQ2xhbXAgdG8ga25vd24gbWFzay4gKi8KKyAgICAgICAg ZnNbaV0gJj0ga25vd25fZmVhdHVyZXNbaV07CisgICAgfQorCisgICAgLyoKKyAgICAgKiBTb3J0 IG91dCBzaGFyZWQgYml0cy4gIFdlIGFyZSBjb25zdHJ1Y3RpbmcgYSBmZWF0dXJlc2V0IHdoaWNo IG5lZWRzIHRvCisgICAgICogYmUgYXBwbGljYWJsZSB0byBhIGNyb3NzLXZlbmRvciBjYXNlLiAg SW50ZWwgc3RyaWN0bHkgY2xlYXJzIHRoZSBjb21tb24KKyAgICAgKiBiaXRzIGluIGUxZCwgd2hp bGUgQU1EIHN0cmljdGx5IGR1cGxpY2F0ZXMgdGhlbS4KKyAgICAgKgorICAgICAqIFdlIGR1cGxp Y2F0ZSB0aGVtIGhlcmUgdG8gYmUgY29tcGF0aWJsZSB3aXRoIEFNRCB3aGlsZSBvbiBJbnRlbCwg YW5kCisgICAgICogcmVseSBvbiBsb2dpYyBjbG9zZXIgdG8gdGhlIGd1ZXN0IHRvIG1ha2UgdGhl IGZlYXR1cmVzZXQgc3RyaWN0ZXIgaWYKKyAgICAgKiBlbXVsYXRpbmcgSW50ZWwuCisgICAgICov CisgICAgZnNbRkVBVFVSRVNFVF9lMWRdID0gKChmc1tGRUFUVVJFU0VUXzFkXSAgJiAgQ1BVSURf Q09NTU9OXzFEX0ZFQVRVUkVTKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgIChmc1tGRUFU VVJFU0VUX2UxZF0gJiB+Q1BVSURfQ09NTU9OXzFEX0ZFQVRVUkVTKSk7Cit9CisKK3N0YXRpYyB2 b2lkIF9faW5pdCBjYWxjdWxhdGVfcmF3X2ZlYXR1cmVzZXQodm9pZCkKK3sKKyAgICB1bnNpZ25l ZCBpbnQgbWF4LCB0bXA7CisKKyAgICBtYXggPSBjcHVpZF9lYXgoMCk7CisKKyAgICBpZiAoIG1h eCA+PSAxICkKKyAgICAgICAgY3B1aWQoMHgxLCAmdG1wLCAmdG1wLAorICAgICAgICAgICAgICAm cmF3X2ZlYXR1cmVzZXRbRkVBVFVSRVNFVF8xY10sCisgICAgICAgICAgICAgICZyYXdfZmVhdHVy ZXNldFtGRUFUVVJFU0VUXzFkXSk7CisgICAgaWYgKCBtYXggPj0gNyApCisgICAgICAgIGNwdWlk X2NvdW50KDB4NywgMCwgJnRtcCwKKyAgICAgICAgICAgICAgICAgICAgJnJhd19mZWF0dXJlc2V0 W0ZFQVRVUkVTRVRfN2IwXSwKKyAgICAgICAgICAgICAgICAgICAgJnJhd19mZWF0dXJlc2V0W0ZF QVRVUkVTRVRfN2MwXSwKKyAgICAgICAgICAgICAgICAgICAgJnRtcCk7CisgICAgaWYgKCBtYXgg Pj0gMHhkICkKKyAgICAgICAgY3B1aWRfY291bnQoMHhkLCAxLAorICAgICAgICAgICAgICAgICAg ICAmcmF3X2ZlYXR1cmVzZXRbRkVBVFVSRVNFVF9EYTFdLAorICAgICAgICAgICAgICAgICAgICAm dG1wLCAmdG1wLCAmdG1wKTsKKworICAgIG1heCA9IGNwdWlkX2VheCgweDgwMDAwMDAwKTsKKyAg ICBpZiAoIChtYXggPj4gMTYpICE9IDB4ODAwMCApCisgICAgICAgIHJldHVybjsKKworICAgIGlm ICggbWF4ID49IDB4ODAwMDAwMDEgKQorICAgICAgICBjcHVpZCgweDgwMDAwMDAxLCAmdG1wLCAm dG1wLAorICAgICAgICAgICAgICAmcmF3X2ZlYXR1cmVzZXRbRkVBVFVSRVNFVF9lMWNdLAorICAg ICAgICAgICAgICAmcmF3X2ZlYXR1cmVzZXRbRkVBVFVSRVNFVF9lMWRdKTsKKyAgICBpZiAoIG1h eCA+PSAweDgwMDAwMDA3ICkKKyAgICAgICAgY3B1aWQoMHg4MDAwMDAwNywgJnRtcCwgJnRtcCwg JnRtcCwKKyAgICAgICAgICAgICAgJnJhd19mZWF0dXJlc2V0W0ZFQVRVUkVTRVRfZTdkXSk7Cisg ICAgaWYgKCBtYXggPj0gMHg4MDAwMDAwOCApCisgICAgICAgIGNwdWlkKDB4ODAwMDAwMDgsICZ0 bXAsCisgICAgICAgICAgICAgICZyYXdfZmVhdHVyZXNldFtGRUFUVVJFU0VUX2U4Yl0sCisgICAg ICAgICAgICAgICZ0bXAsICZ0bXApOworfQorCitzdGF0aWMgdm9pZCBfX2luaXQgY2FsY3VsYXRl X3B2X2ZlYXR1cmVzZXQodm9pZCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvciAo IGkgPSAwOyBpIDwgRlNDQVBJTlRTOyArK2kgKQorICAgICAgICBwdl9mZWF0dXJlc2V0W2ldID0g aG9zdF9mZWF0dXJlc2V0W2ldICYgcHZfZmVhdHVyZW1hc2tbaV07CisKKyAgICAvKiBVbmNvbmRp dGlvbmFsbHkgY2xhaW0gdG8gYmUgYWJsZSB0byBzZXQgdGhlIGh5cGVydmlzb3IgYml0LiAqLwor ICAgIF9fc2V0X2JpdChYODZfRkVBVFVSRV9IWVBFUlZJU09SLCBwdl9mZWF0dXJlc2V0KTsKKwor ICAgIC8qCisgICAgICogQWxsb3cgdGhlIHRvb2xzdGFjayB0byBzZXQgSFRULCBYMkFQSUMgYW5k IENNUF9MRUdBQ1kuICBUaGVzZSBiaXRzCisgICAgICogYWZmZWN0IGhvdyB0byBpbnRlcnByZXQg dG9wb2xvZ3kgaW5mb3JtYXRpb24gaW4gb3RoZXIgY3B1aWQgbGVhdmVzLgorICAgICAqLworICAg IF9fc2V0X2JpdChYODZfRkVBVFVSRV9IVFQsIHB2X2ZlYXR1cmVzZXQpOworICAgIF9fc2V0X2Jp dChYODZfRkVBVFVSRV9YMkFQSUMsIHB2X2ZlYXR1cmVzZXQpOworICAgIF9fc2V0X2JpdChYODZf RkVBVFVSRV9DTVBfTEVHQUNZLCBwdl9mZWF0dXJlc2V0KTsKKworICAgIHNhbml0aXNlX2ZlYXR1 cmVzZXQocHZfZmVhdHVyZXNldCk7Cit9CisKK3N0YXRpYyB2b2lkIF9faW5pdCBjYWxjdWxhdGVf aHZtX2ZlYXR1cmVzZXQodm9pZCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBjb25zdCB1 aW50MzJfdCAqaHZtX2ZlYXR1cmVtYXNrOworCisgICAgaWYgKCAhaHZtX2VuYWJsZWQgKQorICAg ICAgICByZXR1cm47CisKKyAgICBodm1fZmVhdHVyZW1hc2sgPSBodm1fZnVuY3MuaGFwX3N1cHBv cnRlZCA/CisgICAgICAgIGh2bV9oYXBfZmVhdHVyZW1hc2sgOiBodm1fc2hhZG93X2ZlYXR1cmVt YXNrOworCisgICAgZm9yICggaSA9IDA7IGkgPCBGU0NBUElOVFM7ICsraSApCisgICAgICAgIGh2 bV9mZWF0dXJlc2V0W2ldID0gaG9zdF9mZWF0dXJlc2V0W2ldICYgaHZtX2ZlYXR1cmVtYXNrW2ld OworCisgICAgLyogVW5jb25kaXRpb25hbGx5IGNsYWltIHRvIGJlIGFibGUgdG8gc2V0IHRoZSBo eXBlcnZpc29yIGJpdC4gKi8KKyAgICBfX3NldF9iaXQoWDg2X0ZFQVRVUkVfSFlQRVJWSVNPUiwg aHZtX2ZlYXR1cmVzZXQpOworCisgICAgLyoKKyAgICAgKiBBbGxvdyB0aGUgdG9vbHN0YWNrIHRv IHNldCBIVFQsIFgyQVBJQyBhbmQgQ01QX0xFR0FDWS4gIFRoZXNlIGJpdHMKKyAgICAgKiBhZmZl Y3QgaG93IHRvIGludGVycHJldCB0b3BvbG9neSBpbmZvcm1hdGlvbiBpbiBvdGhlciBjcHVpZCBs ZWF2ZXMuCisgICAgICovCisgICAgX19zZXRfYml0KFg4Nl9GRUFUVVJFX0hUVCwgaHZtX2ZlYXR1 cmVzZXQpOworICAgIF9fc2V0X2JpdChYODZfRkVBVFVSRV9YMkFQSUMsIGh2bV9mZWF0dXJlc2V0 KTsKKyAgICBfX3NldF9iaXQoWDg2X0ZFQVRVUkVfQ01QX0xFR0FDWSwgaHZtX2ZlYXR1cmVzZXQp OworCisgICAgLyoKKyAgICAgKiBYZW4gY2FuIHByb3ZpZGUgYW4gQVBJQyBlbXVsYXRpb24gdG8g SFZNIGd1ZXN0cyBldmVuIGlmIHRoZSBob3N0J3MgQVBJQworICAgICAqIGlzbid0IGVuYWJsZWQu CisgICAgICovCisgICAgX19zZXRfYml0KFg4Nl9GRUFUVVJFX0FQSUMsIGh2bV9mZWF0dXJlc2V0 KTsKKworICAgIC8qCisgICAgICogT24gQU1ELCBQViBndWVzdHMgYXJlIGVudGlyZWx5IHVuYWJs ZSB0byB1c2UgU1lTRU5URVIgYXMgWGVuIHJ1bnMgaW4KKyAgICAgKiBsb25nIG1vZGUgKGFuZCBp bml0X2FtZCgpIGhhcyBjbGVhcmVkIGl0IG91dCBvZiBob3N0IGNhcGFiaWxpdGllcyksIGJ1dAor ICAgICAqIEhWTSBndWVzdHMgYXJlIGFibGUgaWYgcnVubmluZyBpbiBwcm90ZWN0ZWQgbW9kZS4K KyAgICAgKi8KKyAgICBpZiAoIChib290X2NwdV9kYXRhLng4Nl92ZW5kb3IgPT0gWDg2X1ZFTkRP Ul9BTUQpICYmCisgICAgICAgICB0ZXN0X2JpdChYODZfRkVBVFVSRV9TRVAsIHJhd19mZWF0dXJl c2V0KSApCisgICAgICAgIF9fc2V0X2JpdChYODZfRkVBVFVSRV9TRVAsIGh2bV9mZWF0dXJlc2V0 KTsKKworICAgIC8qCisgICAgICogV2l0aCBWVC14LCBzb21lIGZlYXR1cmVzIGFyZSBvbmx5IHN1 cHBvcnRlZCBieSBYZW4gaWYgZGVkaWNhdGVkCisgICAgICogaGFyZHdhcmUgc3VwcG9ydCBpcyBh bHNvIGF2YWlsYWJsZS4KKyAgICAgKi8KKyAgICBpZiAoIGNwdV9oYXNfdm14ICkKKyAgICB7Cisg ICAgICAgIGlmICggISh2bXhfdm1leGl0X2NvbnRyb2wgJiBWTV9FWElUX0NMRUFSX0JORENGR1Mp IHx8CisgICAgICAgICAgICAgISh2bXhfdm1lbnRyeV9jb250cm9sICYgVk1fRU5UUllfTE9BRF9C TkRDRkdTKSApCisgICAgICAgICAgICBfX2NsZWFyX2JpdChYODZfRkVBVFVSRV9NUFgsIGh2bV9m ZWF0dXJlc2V0KTsKKworICAgICAgICBpZiAoICFjcHVfaGFzX3ZteF94c2F2ZXMgKQorICAgICAg ICAgICAgX19jbGVhcl9iaXQoWDg2X0ZFQVRVUkVfWFNBVkVTLCBodm1fZmVhdHVyZXNldCk7CisK KyAgICAgICAgaWYgKCAhY3B1X2hhc192bXhfcGNvbW1pdCApCisgICAgICAgICAgICBfX2NsZWFy X2JpdChYODZfRkVBVFVSRV9QQ09NTUlULCBodm1fZmVhdHVyZXNldCk7CisgICAgfQorCisgICAg c2FuaXRpc2VfZmVhdHVyZXNldChodm1fZmVhdHVyZXNldCk7Cit9CisKK3ZvaWQgX19pbml0IGNh bGN1bGF0ZV9mZWF0dXJlc2V0cyh2b2lkKQoreworICAgIGNhbGN1bGF0ZV9yYXdfZmVhdHVyZXNl dCgpOworICAgIGNhbGN1bGF0ZV9wdl9mZWF0dXJlc2V0KCk7CisgICAgY2FsY3VsYXRlX2h2bV9m ZWF0dXJlc2V0KCk7Cit9CisKIHN0YXRpYyB2b2lkIF9faW5pdCBfX21heWJlX3VudXNlZCBidWls ZF9hc3NlcnRpb25zKHZvaWQpCiB7CiAgICAgQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoa25vd25f ZmVhdHVyZXMpICE9IEZTQ0FQSU5UUyk7CiAgICAgQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoc3Bl Y2lhbF9mZWF0dXJlcykgIT0gRlNDQVBJTlRTKTsKKyAgICBCVUlMRF9CVUdfT04oQVJSQVlfU0la RShwdl9mZWF0dXJlbWFzaykgIT0gRlNDQVBJTlRTKTsKKyAgICBCVUlMRF9CVUdfT04oQVJSQVlf U0laRShodm1fc2hhZG93X2ZlYXR1cmVtYXNrKSAhPSBGU0NBUElOVFMpOworICAgIEJVSUxEX0JV R19PTihBUlJBWV9TSVpFKGh2bV9oYXBfZmVhdHVyZW1hc2spICE9IEZTQ0FQSU5UUyk7CiB9CiAK IC8qCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvc2V0dXAuYyBiL3hlbi9hcmNoL3g4Ni9zZXR1 cC5jCmluZGV4IGVlNjVmNTUuLjM2OTZjMzEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9zZXR1 cC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9zZXR1cC5jCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVk ZSA8YXNtL25taS5oPgogI2luY2x1ZGUgPGFzbS9hbHRlcm5hdGl2ZS5oPgogI2luY2x1ZGUgPGFz bS9tYzE0NjgxOHJ0Yy5oPgorI2luY2x1ZGUgPGFzbS9jcHVpZC5oPgogCiAvKiBvcHRfbm9zbXA6 IElmIHRydWUsIHNlY29uZGFyeSBwcm9jZXNzb3JzIGFyZSBpZ25vcmVkLiAqLwogc3RhdGljIGJv b2xfdCBfX2luaXRkYXRhIG9wdF9ub3NtcDsKQEAgLTE1MjUsNiArMTUyNiw4IEBAIHZvaWQgX19p bml0IG5vcmV0dXJuIF9fc3RhcnRfeGVuKHVuc2lnbmVkIGxvbmcgbWJpX3ApCiAgICAgICAgICAg ICAgICAiTXVsdGlwbGUgaW5pdHJkIGNhbmRpZGF0ZXMsIHBpY2tpbmcgbW9kdWxlICMldVxuIiwK ICAgICAgICAgICAgICAgIGluaXRyZGlkeCk7CiAKKyAgICBjYWxjdWxhdGVfZmVhdHVyZXNldHMo KTsKKwogICAgIC8qCiAgICAgICogVGVtcG9yYXJpbHkgY2xlYXIgU01BUCBpbiBDUjQgdG8gYWxs b3cgdXNlci1hY2Nlc3NlcyBpbiBjb25zdHJ1Y3RfZG9tMCgpLgogICAgICAqIFRoaXMgc2F2ZXMg YSBsYXJnZSBudW1iZXIgb2YgY29ybmVyIGNhc2VzIGludGVyYWN0aW9ucyB3aXRoCmRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2NwdWlkLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2Nw dWlkLmgKaW5kZXggMGVjZjM1Ny4uNTA0MWJjZCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNt LXg4Ni9jcHVpZC5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvY3B1aWQuaApAQCAtNiwxMiAr NiwyOSBAQAogCiAjZGVmaW5lIEZTQ0FQSU5UUyBGRUFUVVJFU0VUX05SX0VOVFJJRVMKIAorI2Rl ZmluZSBGRUFUVVJFU0VUXzFkICAgICAwIC8qIDB4MDAwMDAwMDEuZWR4ICAgICAgKi8KKyNkZWZp bmUgRkVBVFVSRVNFVF8xYyAgICAgMSAvKiAweDAwMDAwMDAxLmVjeCAgICAgICovCisjZGVmaW5l IEZFQVRVUkVTRVRfZTFkICAgIDIgLyogMHg4MDAwMDAwMS5lZHggICAgICAqLworI2RlZmluZSBG RUFUVVJFU0VUX2UxYyAgICAzIC8qIDB4ODAwMDAwMDEuZWN4ICAgICAgKi8KKyNkZWZpbmUgRkVB VFVSRVNFVF9EYTEgICAgNCAvKiAweDAwMDAwMDBkOjEuZWF4ICAgICovCisjZGVmaW5lIEZFQVRV UkVTRVRfN2IwICAgIDUgLyogMHgwMDAwMDAwNzowLmVieCAgICAqLworI2RlZmluZSBGRUFUVVJF U0VUXzdjMCAgICA2IC8qIDB4MDAwMDAwMDc6MC5lY3ggICAgKi8KKyNkZWZpbmUgRkVBVFVSRVNF VF9lN2QgICAgNyAvKiAweDgwMDAwMDA3LmVkeCAgICAgICovCisjZGVmaW5lIEZFQVRVUkVTRVRf ZThiICAgIDggLyogMHg4MDAwMDAwOC5lYnggICAgICAqLworCiAjaWZuZGVmIF9fQVNTRU1CTFlf XwogI2luY2x1ZGUgPHhlbi90eXBlcy5oPgogCiBleHRlcm4gY29uc3QgdWludDMyX3Qga25vd25f ZmVhdHVyZXNbRlNDQVBJTlRTXTsKIGV4dGVybiBjb25zdCB1aW50MzJfdCBzcGVjaWFsX2ZlYXR1 cmVzW0ZTQ0FQSU5UU107CiAKK2V4dGVybiB1aW50MzJfdCByYXdfZmVhdHVyZXNldFtGU0NBUElO VFNdOworI2RlZmluZSBob3N0X2ZlYXR1cmVzZXQgYm9vdF9jcHVfZGF0YS54ODZfY2FwYWJpbGl0 eQorZXh0ZXJuIHVpbnQzMl90IHB2X2ZlYXR1cmVzZXRbRlNDQVBJTlRTXTsKK2V4dGVybiB1aW50 MzJfdCBodm1fZmVhdHVyZXNldFtGU0NBUElOVFNdOworCit2b2lkIGNhbGN1bGF0ZV9mZWF0dXJl c2V0cyh2b2lkKTsKKwogI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLwogI2VuZGlmIC8qICFfX1g4 Nl9DUFVJRF9IX18gKi8KIAotLSAKMi4xLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0 cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=