From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH 04/27] x86/cpuid: Move featuresets into struct cpuid_policy Date: Wed, 4 Jan 2017 12:39:21 +0000 Message-ID: <1483533584-8015-5-git-send-email-andrew.cooper3@citrix.com> References: <1483533584-8015-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: <1483533584-8015-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 RmVhdHVyZXNldHMgd2lsbCBldmVudHVhbGx5IGxpdmUgb25seSBvbmNlIGluIGEgc3RydWN0IGNw dWlkX3BvbGljeSwgYnV0IGxvdHMKb2YgY29kZSBjdXJyZW50bHkgdXNlcyB0aGUgZ2xvYmFsIGZl YXR1cmVzZXRzIGFzIGEgbGluZWFyIGJpdG1hcC4gIFJlbW92ZSB0aGUKZXhpc3RpbmcgZ2xvYmFs ICpfZmVhdHVyZXNldCBiaXRtYXBzLCByZXBsYWNpbmcgdGhlbSB3aXRoICpfcG9saWN5IG9iamVj dHMKY29udGFpbmluZyBuYW1lZCBmZWF0dXJlc2V0IHdvcmRzIGFuZCBhIGZzW10gbGluZWFyIGJp dG1hcC4KClR3byBuZXcgaGVscGVycyBhcmUgaW50cm9kdWNlZCB0byBzY2F0dGVyL2dhdGhlciBh IGxpbmVhciBmZWF0dXJlc2V0IGJpdG1hcAp0by9mcm9tIHRoZSBmaXhlZCB3b3JkIGxvY2F0aW9u cyBpbiBzdHJ1Y3QgY3B1aWRfcG9saWN5LgoKVGhlIGV4aXN0aW5nIGNhbGN1bGF0ZV9yYXdfcG9s aWN5KCkgYWxyZWFkeSBvYnRhaW5zIHRoZSBzY2F0dGVyZWQgcmF3CmZlYXR1cmVzZXQuICBHYXRo ZXIgdGhlIHJhdyBmZWF0dXJlc2V0IGludG8gcmF3X3BvbGljeS5mcyBpbgpjYWxjdWxhdGVfcmF3 X3BvbGljeSgpIGFuZCBkcm9wIGNhbGN1bGF0ZV9yYXdfZmVhdHVyZXNldCgpIGVudGlyZWx5LgoK Tm93IHRoYXQgaG9zdF9mZWF0dXJlc2V0IGNhbid0IGJlIGEgc3RyYWlnaHQgZGVmaW5lIG9mCmJv b3RfY3B1X2RhdGEueDg2X2NhcGFiaWxpdHksIGludHJvZHVjZSBjYWxjdWxhdGVfaG9zdF9wb2xp Y3koKSB0byBzdWl0YWJseQpmaWxsIGluIGhvc3RfcG9saWN5IGZyb20gYm9vdF9jcHVfZGF0YS54 ODZfY2FwYWJpbGl0eS4gIChGdXR1cmUgY2hhbmdlcyB3aWxsCmhhdmUgYWRkaXRpb25hbCBzYW5p dGl6YXRpb24gbG9naWMgaW4gdGhpcyBmdW5jdGlvbi4pCgpUaGUgUFYgYW5kIEhWTSBwb2xpY3kg b2JqZWN0cyBhbmQgY2FsY3VsYXRpb24gZnVuY3Rpb25zIGhhdmUgbWF4IGludHJvZHVjZWQgdG8K dGhlaXIgbmFtZXMsIGFzIHRoZXJlIHdpbGwgZXZlbnR1YWxseSBiZSBhIGRpc3RpbmN0aW9uIGJl dHdlZW4gbWF4IGFuZCBkZWZhdWx0CnBvbGljaWVzIGZvciBlYWNoIGRvbWFpbiB0eXBlLiAgVGhl IGV4aXN0aW5nIGxvZ2ljIHdvcmtzIGluIHRlcm1zIG9mIGxpbmVhcgpiaXRtYXBzLCBzbyBzY2F0 dGVyIHRoZSByZXN1bHQgYmFjayBpbnRvIHRoZSBwb2xpY3kgb2JqZWN0cy4KCkxlYXZlIHNvbWUg Y29tcGF0aWJpbGl0eSBkZWZpbmVzIHByb3ZpZGluZyB0aGUgb2xkICpfZmVhdHVyZXNldCBBUEku ICBUaGlzCnJlc3VsdHMgaW4gbm8gb2JzZXJ2ZWQgY2hhbmdlIGluIHRoZSAqX2ZlYXR1cmVzZXQg dmFsdWVzLCB3aGljaCBhcmUgc3RpbGwgdXNlZAphdCB0aGUgaHlwZXJjYWxsIGFuZCBndWVzdF9j cHVpZCgpIGludGVyZmFjZXMuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcu Y29vcGVyM0BjaXRyaXguY29tPgotLS0KQ0M6IEphbiBCZXVsaWNoIDxKQmV1bGljaEBzdXNlLmNv bT4KLS0tCiB4ZW4vYXJjaC94ODYvY3B1aWQuYyAgICAgICAgfCA2NCArKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9jcHVpZC5oIHwgODEgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAyIGZpbGVzIGNoYW5n ZWQsIDkzIGluc2VydGlvbnMoKyksIDUyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9h cmNoL3g4Ni9jcHVpZC5jIGIveGVuL2FyY2gveDg2L2NwdWlkLmMKaW5kZXggZTA3NTFjOS4uOTJl ODI1ZSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdWlkLmMKKysrIGIveGVuL2FyY2gveDg2 L2NwdWlkLmMKQEAgLTE0LDEzICsxNCwxMiBAQCBzdGF0aWMgY29uc3QgdWludDMyX3QgX19pbml0 Y29uc3QgaHZtX3NoYWRvd19mZWF0dXJlbWFza1tdID0gSU5JVF9IVk1fU0hBRE9XX0ZFQQogc3Rh dGljIGNvbnN0IHVpbnQzMl90IF9faW5pdGNvbnN0IGh2bV9oYXBfZmVhdHVyZW1hc2tbXSA9IElO SVRfSFZNX0hBUF9GRUFUVVJFUzsKIHN0YXRpYyBjb25zdCB1aW50MzJfdCBfX2luaXRjb25zdCBk ZWVwX2ZlYXR1cmVzW10gPSBJTklUX0RFRVBfRkVBVFVSRVM7CiAKLXVpbnQzMl90IF9fcmVhZF9t b3N0bHkgcmF3X2ZlYXR1cmVzZXRbRlNDQVBJTlRTXTsKLXVpbnQzMl90IF9fcmVhZF9tb3N0bHkg cHZfZmVhdHVyZXNldFtGU0NBUElOVFNdOwotdWludDMyX3QgX19yZWFkX21vc3RseSBodm1fZmVh dHVyZXNldFtGU0NBUElOVFNdOwotCiAjZGVmaW5lIEVNUFRZX0xFQUYgKHN0cnVjdCBjcHVpZF9s ZWFmKXt9CiAKLXN0YXRpYyBzdHJ1Y3QgY3B1aWRfcG9saWN5IF9fcmVhZF9tb3N0bHkgcmF3X3Bv bGljeTsKK3N0cnVjdCBjcHVpZF9wb2xpY3kgX19yZWFkX21vc3RseSByYXdfcG9saWN5LAorICAg IF9fcmVhZF9tb3N0bHkgaG9zdF9wb2xpY3ksCisgICAgX19yZWFkX21vc3RseSBwdl9tYXhfcG9s aWN5LAorICAgIF9fcmVhZF9tb3N0bHkgaHZtX21heF9wb2xpY3k7CiAKIHN0YXRpYyB2b2lkIGNw dWlkX2xlYWYodW5zaWduZWQgaW50IGxlYWYsIHN0cnVjdCBjcHVpZF9sZWFmICpkYXRhKQogewpA QCAtMTI3LDQ3ICsxMjYsMjIgQEAgc3RhdGljIHZvaWQgX19pbml0IGNhbGN1bGF0ZV9yYXdfcG9s aWN5KHZvaWQpCiAgICAgZm9yICggaSA9IDE7IGkgPCBtaW4oQVJSQVlfU0laRShwLT5leHRkLnJh dyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgcC0+ZXh0ZC5tYXhfbGVhZiArIDEgLSAweDgw MDAwMDAwdWwpOyArK2kgKQogICAgICAgICBjcHVpZF9sZWFmKDB4ODAwMDAwMDAgKyBpLCAmcC0+ ZXh0ZC5yYXdbaV0pOworCisgICAgY3B1aWRfcG9saWN5X3RvX2ZlYXR1cmVzZXQocCwgcC0+ZnMp OwogfQogCi1zdGF0aWMgdm9pZCBfX2luaXQgY2FsY3VsYXRlX3Jhd19mZWF0dXJlc2V0KHZvaWQp CitzdGF0aWMgdm9pZCBfX2luaXQgY2FsY3VsYXRlX2hvc3RfcG9saWN5KHZvaWQpCiB7Ci0gICAg dW5zaWduZWQgaW50IG1heCwgdG1wOwotCi0gICAgbWF4ID0gY3B1aWRfZWF4KDApOwotCi0gICAg aWYgKCBtYXggPj0gMSApCi0gICAgICAgIGNwdWlkKDB4MSwgJnRtcCwgJnRtcCwKLSAgICAgICAg ICAgICAgJnJhd19mZWF0dXJlc2V0W0ZFQVRVUkVTRVRfMWNdLAotICAgICAgICAgICAgICAmcmF3 X2ZlYXR1cmVzZXRbRkVBVFVSRVNFVF8xZF0pOwotICAgIGlmICggbWF4ID49IDcgKQotICAgICAg ICBjcHVpZF9jb3VudCgweDcsIDAsICZ0bXAsCi0gICAgICAgICAgICAgICAgICAgICZyYXdfZmVh dHVyZXNldFtGRUFUVVJFU0VUXzdiMF0sCi0gICAgICAgICAgICAgICAgICAgICZyYXdfZmVhdHVy ZXNldFtGRUFUVVJFU0VUXzdjMF0sCi0gICAgICAgICAgICAgICAgICAgICZyYXdfZmVhdHVyZXNl dFtGRUFUVVJFU0VUXzdkMF0pOwotICAgIGlmICggbWF4ID49IDB4ZCApCi0gICAgICAgIGNwdWlk X2NvdW50KDB4ZCwgMSwKLSAgICAgICAgICAgICAgICAgICAgJnJhd19mZWF0dXJlc2V0W0ZFQVRV UkVTRVRfRGExXSwKLSAgICAgICAgICAgICAgICAgICAgJnRtcCwgJnRtcCwgJnRtcCk7Ci0KLSAg ICBtYXggPSBjcHVpZF9lYXgoMHg4MDAwMDAwMCk7Ci0gICAgaWYgKCAobWF4ID4+IDE2KSAhPSAw eDgwMDAgKQotICAgICAgICByZXR1cm47CisgICAgc3RydWN0IGNwdWlkX3BvbGljeSAqcCA9ICZo b3N0X3BvbGljeTsKIAotICAgIGlmICggbWF4ID49IDB4ODAwMDAwMDEgKQotICAgICAgICBjcHVp ZCgweDgwMDAwMDAxLCAmdG1wLCAmdG1wLAotICAgICAgICAgICAgICAmcmF3X2ZlYXR1cmVzZXRb RkVBVFVSRVNFVF9lMWNdLAotICAgICAgICAgICAgICAmcmF3X2ZlYXR1cmVzZXRbRkVBVFVSRVNF VF9lMWRdKTsKLSAgICBpZiAoIG1heCA+PSAweDgwMDAwMDA3ICkKLSAgICAgICAgY3B1aWQoMHg4 MDAwMDAwNywgJnRtcCwgJnRtcCwgJnRtcCwKLSAgICAgICAgICAgICAgJnJhd19mZWF0dXJlc2V0 W0ZFQVRVUkVTRVRfZTdkXSk7Ci0gICAgaWYgKCBtYXggPj0gMHg4MDAwMDAwOCApCi0gICAgICAg IGNwdWlkKDB4ODAwMDAwMDgsICZ0bXAsCi0gICAgICAgICAgICAgICZyYXdfZmVhdHVyZXNldFtG RUFUVVJFU0VUX2U4Yl0sCi0gICAgICAgICAgICAgICZ0bXAsICZ0bXApOworICAgIG1lbWNweShw LT5mcywgYm9vdF9jcHVfZGF0YS54ODZfY2FwYWJpbGl0eSwgc2l6ZW9mKHAtPmZzKSk7CisKKyAg ICBjcHVpZF9mZWF0dXJlc2V0X3RvX3BvbGljeShob3N0X2ZlYXR1cmVzZXQsIHApOwogfQogCi1z dGF0aWMgdm9pZCBfX2luaXQgY2FsY3VsYXRlX3B2X2ZlYXR1cmVzZXQodm9pZCkKK3N0YXRpYyB2 b2lkIF9faW5pdCBjYWxjdWxhdGVfcHZfbWF4X3BvbGljeSh2b2lkKQogeworICAgIHN0cnVjdCBj cHVpZF9wb2xpY3kgKnAgPSAmcHZfbWF4X3BvbGljeTsKICAgICB1bnNpZ25lZCBpbnQgaTsKIAog ICAgIGZvciAoIGkgPSAwOyBpIDwgRlNDQVBJTlRTOyArK2kgKQpAQCAtMTg1LDEwICsxNTksMTIg QEAgc3RhdGljIHZvaWQgX19pbml0IGNhbGN1bGF0ZV9wdl9mZWF0dXJlc2V0KHZvaWQpCiAgICAg X19zZXRfYml0KFg4Nl9GRUFUVVJFX0NNUF9MRUdBQ1ksIHB2X2ZlYXR1cmVzZXQpOwogCiAgICAg c2FuaXRpc2VfZmVhdHVyZXNldChwdl9mZWF0dXJlc2V0KTsKKyAgICBjcHVpZF9mZWF0dXJlc2V0 X3RvX3BvbGljeShwdl9mZWF0dXJlc2V0LCBwKTsKIH0KIAotc3RhdGljIHZvaWQgX19pbml0IGNh bGN1bGF0ZV9odm1fZmVhdHVyZXNldCh2b2lkKQorc3RhdGljIHZvaWQgX19pbml0IGNhbGN1bGF0 ZV9odm1fbWF4X3BvbGljeSh2b2lkKQogeworICAgIHN0cnVjdCBjcHVpZF9wb2xpY3kgKnAgPSAm aHZtX21heF9wb2xpY3k7CiAgICAgdW5zaWduZWQgaW50IGk7CiAgICAgY29uc3QgdWludDMyX3Qg Kmh2bV9mZWF0dXJlbWFzazsKIApAQCAtMjQxLDE1ICsyMTcsMTUgQEAgc3RhdGljIHZvaWQgX19p bml0IGNhbGN1bGF0ZV9odm1fZmVhdHVyZXNldCh2b2lkKQogICAgIH0KIAogICAgIHNhbml0aXNl X2ZlYXR1cmVzZXQoaHZtX2ZlYXR1cmVzZXQpOworICAgIGNwdWlkX2ZlYXR1cmVzZXRfdG9fcG9s aWN5KGh2bV9mZWF0dXJlc2V0LCBwKTsKIH0KIAogdm9pZCBfX2luaXQgaW5pdF9ndWVzdF9jcHVp ZCh2b2lkKQogewogICAgIGNhbGN1bGF0ZV9yYXdfcG9saWN5KCk7Ci0KLSAgICBjYWxjdWxhdGVf cmF3X2ZlYXR1cmVzZXQoKTsKLSAgICBjYWxjdWxhdGVfcHZfZmVhdHVyZXNldCgpOwotICAgIGNh bGN1bGF0ZV9odm1fZmVhdHVyZXNldCgpOworICAgIGNhbGN1bGF0ZV9ob3N0X3BvbGljeSgpOwor ICAgIGNhbGN1bGF0ZV9wdl9tYXhfcG9saWN5KCk7CisgICAgY2FsY3VsYXRlX2h2bV9tYXhfcG9s aWN5KCk7CiB9CiAKIGNvbnN0IHVpbnQzMl90ICogX19pbml0IGxvb2t1cF9kZWVwX2RlcHModWlu dDMyX3QgZmVhdHVyZSkKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvY3B1aWQuaCBi L3hlbi9pbmNsdWRlL2FzbS14ODYvY3B1aWQuaAppbmRleCA1MDg0NGYyLi5iNjdjMTBlIDEwMDY0 NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2NwdWlkLmgKKysrIGIveGVuL2luY2x1ZGUvYXNt LXg4Ni9jcHVpZC5oCkBAIC0yNCwxMSArMjQsNiBAQAogZXh0ZXJuIGNvbnN0IHVpbnQzMl90IGtu b3duX2ZlYXR1cmVzW0ZTQ0FQSU5UU107CiBleHRlcm4gY29uc3QgdWludDMyX3Qgc3BlY2lhbF9m ZWF0dXJlc1tGU0NBUElOVFNdOwogCi1leHRlcm4gdWludDMyX3QgcmF3X2ZlYXR1cmVzZXRbRlND QVBJTlRTXTsKLSNkZWZpbmUgaG9zdF9mZWF0dXJlc2V0IGJvb3RfY3B1X2RhdGEueDg2X2NhcGFi aWxpdHkKLWV4dGVybiB1aW50MzJfdCBwdl9mZWF0dXJlc2V0W0ZTQ0FQSU5UU107Ci1leHRlcm4g dWludDMyX3QgaHZtX2ZlYXR1cmVzZXRbRlNDQVBJTlRTXTsKLQogdm9pZCBpbml0X2d1ZXN0X2Nw dWlkKHZvaWQpOwogCiBjb25zdCB1aW50MzJfdCAqbG9va3VwX2RlZXBfZGVwcyh1aW50MzJfdCBm ZWF0dXJlKTsKQEAgLTg3LDcgKzgyLDcgQEAgc3RydWN0IGNwdWlkX3BvbGljeQogICAgICAqICAg LSB7eGNyMCx4c3N9X3toaWdoLGxvd30KICAgICAgKgogICAgICAqIC0gR3Vlc3QgYXBwcm9wcmlh dGU6Ci0gICAgICogICAtIE5vdGhpbmcKKyAgICAgKiAgIC0gQWxsIEZFQVRVUkVTRVRfKiB3b3Jk cwogICAgICAqCiAgICAgICogRXZlcnl0aGluZyBlbHNlIHNob3VsZCBiZSBjb25zaWRlcmVkIGlu YWNjdXJhdGUsIGFuZCBub3QgbmVjZXNzZXJpbHkgMC4KICAgICAgKi8KQEAgLTEwMCw2ICs5NSwx MSBAQCBzdHJ1Y3QgY3B1aWRfcG9saWN5CiAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAg ICAgICAgIHVpbnQzMl90IG1heF9sZWFmLCA6MzIsIDozMiwgOjMyOwogICAgICAgICAgICAgfTsK KworICAgICAgICAgICAgLyogTGVhZiAweDEgLSBmYW1pbHkvbW9kZWwvc3RlcHBpbmcgYW5kIGZl YXR1cmVzLiAqLworICAgICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICB1aW50MzJf dCA6MzIsIDozMiwgXzFjLCBfMWQ7CisgICAgICAgICAgICB9OwogICAgICAgICB9OwogICAgIH0g YmFzaWM7CiAKQEAgLTEwOCw3ICsxMDgsNyBAQCBzdHJ1Y3QgY3B1aWRfcG9saWN5CiAgICAgICAg IHN0cnVjdCBjcHVpZF9sZWFmIHJhd1tDUFVJRF9HVUVTVF9OUl9GRUFUXTsKICAgICAgICAgc3Ry dWN0IHsKICAgICAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgdWludDMyX3QgbWF4 X3N1YmxlYWYsIDozMiwgOjMyLCA6MzI7CisgICAgICAgICAgICAgICAgdWludDMyX3QgbWF4X3N1 YmxlYWYsIF83YjAsIF83YzAsIF83ZDA7CiAgICAgICAgICAgICB9OwogICAgICAgICB9OwogICAg IH0gZmVhdDsKQEAgLTEyMSw3ICsxMjEsNyBAQCBzdHJ1Y3QgY3B1aWRfcG9saWN5CiAgICAgICAg ICAgICAgICAgdWludDMyX3QgeGNyMF9sb3csIDozMiwgOjMyLCB4Y3IwX2hpZ2g7CiAgICAgICAg ICAgICB9OwogICAgICAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgICAgICB1aW50MzJfdCA6 MzIsIDozMiwgeHNzX2xvdywgeHNzX2hpZ2g7CisgICAgICAgICAgICAgICAgdWludDMyX3QgRGEx LCA6MzIsIHhzc19sb3csIHhzc19oaWdoOwogICAgICAgICAgICAgfTsKICAgICAgICAgfTsKICAg ICB9IHhzdGF0ZTsKQEAgLTEzNCwxMCArMTM0LDc1IEBAIHN0cnVjdCBjcHVpZF9wb2xpY3kKICAg ICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgdWludDMyX3QgbWF4X2xlYWYsIDoz MiwgOjMyLCA6MzI7CiAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAvKiBMZWFmIDB4ODAw MDAwMDEgLSBmYW1pbHkvbW9kZWwvc3RlcHBpbmcgYW5kIGZlYXR1cmVzLiAqLworICAgICAgICAg ICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCA6MzIsIDozMiwgZTFjLCBlMWQ7 CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICB1aW50NjRfdCA6NjQsIDo2NDsgLyogQnJh bmQgc3RyaW5nLiAqLworICAgICAgICAgICAgdWludDY0X3QgOjY0LCA6NjQ7IC8qIEJyYW5kIHN0 cmluZy4gKi8KKyAgICAgICAgICAgIHVpbnQ2NF90IDo2NCwgOjY0OyAvKiBCcmFuZCBzdHJpbmcu ICovCisgICAgICAgICAgICB1aW50NjRfdCA6NjQsIDo2NDsgLyogTDEgY2FjaGUvVExCLiAqLwor ICAgICAgICAgICAgdWludDY0X3QgOjY0LCA6NjQ7IC8qIEwyLzMgY2FjaGUvVExCLiAqLworCisg ICAgICAgICAgICAvKiBMZWFmIDB4ODAwMDAwMDcgLSBBZHZhbmNlZCBQb3dlciBNYW5hZ2VtZW50 LiAqLworICAgICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCA6MzIs IDozMiwgOjMyLCBlN2Q7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICAvKiBMZWFmIDB4 ODAwMDAwMDggLSBNaXNjIGFkZHIvZmVhdHVyZSBpbmZvLiAqLworICAgICAgICAgICAgc3RydWN0 IHsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCA6MzIsIGU4YiwgOjMyLCA6MzI7CisgICAgICAg ICAgICB9OwogICAgICAgICB9OwogICAgIH0gZXh0ZDsKKworICAgIC8qIFRlbXBvcmFyeSBmZWF0 dXJlc2V0IGJpdG1hcC4gKi8KKyAgICB1aW50MzJfdCBmc1tGU0NBUElOVFNdOwogfTsKIAorLyog RmlsbCBpbiBhIGZlYXR1cmVzZXQgYml0bWFwIGZyb20gYSBDUFVJRCBwb2xpY3kuICovCitzdGF0 aWMgaW5saW5lIHZvaWQgY3B1aWRfcG9saWN5X3RvX2ZlYXR1cmVzZXQoCisgICAgY29uc3Qgc3Ry dWN0IGNwdWlkX3BvbGljeSAqcCwgdWludDMyX3QgZnNbRlNDQVBJTlRTXSkKK3sKKyAgICBmc1tG RUFUVVJFU0VUXzFkXSAgPSBwLT5iYXNpYy5fMWQ7CisgICAgZnNbRkVBVFVSRVNFVF8xY10gID0g cC0+YmFzaWMuXzFjOworICAgIGZzW0ZFQVRVUkVTRVRfZTFkXSA9IHAtPmV4dGQuZTFkOworICAg IGZzW0ZFQVRVUkVTRVRfZTFjXSA9IHAtPmV4dGQuZTFjOworICAgIGZzW0ZFQVRVUkVTRVRfRGEx XSA9IHAtPnhzdGF0ZS5EYTE7CisgICAgZnNbRkVBVFVSRVNFVF83YjBdID0gcC0+ZmVhdC5fN2Iw OworICAgIGZzW0ZFQVRVUkVTRVRfN2MwXSA9IHAtPmZlYXQuXzdjMDsKKyAgICBmc1tGRUFUVVJF U0VUX2U3ZF0gPSBwLT5leHRkLmU3ZDsKKyAgICBmc1tGRUFUVVJFU0VUX2U4Yl0gPSBwLT5leHRk LmU4YjsKKyAgICBmc1tGRUFUVVJFU0VUXzdkMF0gPSBwLT5mZWF0Ll83ZDA7Cit9CisKKy8qIEZp bGwgaW4gYSBDUFVJRCBwb2xpY3kgZnJvbSBhIGZlYXR1cmVzZXQgYml0bWFwLiAqLworc3RhdGlj IGlubGluZSB2b2lkIGNwdWlkX2ZlYXR1cmVzZXRfdG9fcG9saWN5KAorICAgIGNvbnN0IHVpbnQz Ml90IGZzW0ZTQ0FQSU5UU10sIHN0cnVjdCBjcHVpZF9wb2xpY3kgKnApCit7CisgICAgcC0+YmFz aWMuXzFkICA9IGZzW0ZFQVRVUkVTRVRfMWRdOworICAgIHAtPmJhc2ljLl8xYyAgPSBmc1tGRUFU VVJFU0VUXzFjXTsKKyAgICBwLT5leHRkLmUxZCAgID0gZnNbRkVBVFVSRVNFVF9lMWRdOworICAg IHAtPmV4dGQuZTFjICAgPSBmc1tGRUFUVVJFU0VUX2UxY107CisgICAgcC0+eHN0YXRlLkRhMSA9 IGZzW0ZFQVRVUkVTRVRfRGExXTsKKyAgICBwLT5mZWF0Ll83YjAgID0gZnNbRkVBVFVSRVNFVF83 YjBdOworICAgIHAtPmZlYXQuXzdjMCAgPSBmc1tGRUFUVVJFU0VUXzdjMF07CisgICAgcC0+ZXh0 ZC5lN2QgICA9IGZzW0ZFQVRVUkVTRVRfZTdkXTsKKyAgICBwLT5leHRkLmU4YiAgID0gZnNbRkVB VFVSRVNFVF9lOGJdOworICAgIHAtPmZlYXQuXzdkMCAgPSBmc1tGRUFUVVJFU0VUXzdkMF07Cit9 CisKK2V4dGVybiBzdHJ1Y3QgY3B1aWRfcG9saWN5IHJhd19wb2xpY3ksIGhvc3RfcG9saWN5LCBw dl9tYXhfcG9saWN5LAorICAgIGh2bV9tYXhfcG9saWN5OworCisvKiBUZW1wb3JhcnkgY29tcGF0 aWJpbGl0eSBkZWZpbmVzLiAqLworI2RlZmluZSByYXdfZmVhdHVyZXNldCByYXdfcG9saWN5LmZz CisjZGVmaW5lIGhvc3RfZmVhdHVyZXNldCBob3N0X3BvbGljeS5mcworI2RlZmluZSBwdl9mZWF0 dXJlc2V0IHB2X21heF9wb2xpY3kuZnMKKyNkZWZpbmUgaHZtX2ZlYXR1cmVzZXQgaHZtX21heF9w b2xpY3kuZnMKKwogdm9pZCBndWVzdF9jcHVpZChjb25zdCBzdHJ1Y3QgdmNwdSAqdiwgdW5zaWdu ZWQgaW50IGxlYWYsCiAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzdWJsZWFmLCBzdHJ1 Y3QgY3B1aWRfbGVhZiAqcmVzKTsKIAotLSAKMi4xLjQKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZl bEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK