From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH 2/5] x86: split out cpuid objects and helpers Date: Thu, 24 May 2018 17:05:19 +0100 Message-ID: <20180524160522.757-3-wei.liu2@citrix.com> References: <20180524160522.757-1-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fLsk4-0000K5-R1 for xen-devel@lists.xenproject.org; Thu, 24 May 2018 16:05:28 +0000 In-Reply-To: <20180524160522.757-1-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: sergey.dyasli@citrix.com, Andrew Cooper , Wei Liu , Jan Beulich , roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org VGhleSBhcmUgbW92ZWQgdG8gYSBuZXcgaGVhZGVyIHdoaWNoIGlzIGdvaW5nIHRvIGJlIGNvbnN1 bWVkIGJ5IGJvdGgKdGhlIGh5cGVydmlzb3IgYW5kIHRvb2xzdGFjay4KCkNyZWF0ZSBhIG5ldyBk aXJlY3RvcnkgZm9yIHRoaXMga2luZCBvZiBoZWFkZXJzIGluIGFudGljaXBhdGlvbiBvZgptb3Jl IHdpbGwgY29tZS4KCk5vIGZ1bmN0aW9uYWwgY2hhbmdlLgoKU2lnbmVkLW9mZi1ieTogV2VpIExp dSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KLS0tCkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz ZS5jb20+CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgoKQW55 IHN1Z2dlc3Rpb24gb24gdGhlIGRpcmVjdG9yeSBuYW1lPwotLS0KIHhlbi9pbmNsdWRlL2FzbS14 ODYvYXJjaC1zaGFyZWQvY3B1aWQuaCB8IDIxMyArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9jcHVpZC5oICAgICAgICAgICAgIHwgMjEwICstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMjE1IGluc2VydGlv bnMoKyksIDIwOCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS9h c20teDg2L2FyY2gtc2hhcmVkL2NwdWlkLmgKCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20t eDg2L2FyY2gtc2hhcmVkL2NwdWlkLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2FyY2gtc2hhcmVk L2NwdWlkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNWMwNDllMTFh NgotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvYXJjaC1zaGFyZWQvY3B1 aWQuaApAQCAtMCwwICsxLDIxMyBAQAorLyogQ29tbW9uIGRhdGEgc3RydWN0dXJlcyBhbmQgZnVu Y3Rpb25zIGNvbnN1bWVkIGJ5IGh5cGVydmlzb3IgYW5kIHRvb2xzdGFjayAqLworI2lmbmRlZiBf X1g4Nl9DUFVJRF9TSEFSRURfSF9fCisjZGVmaW5lIF9fWDg2X0NQVUlEX1NIQVJFRF9IX18KKwor I2RlZmluZSBGRUFUVVJFU0VUXzFkICAgICAwIC8qIDB4MDAwMDAwMDEuZWR4ICAgICAgKi8KKyNk ZWZpbmUgRkVBVFVSRVNFVF8xYyAgICAgMSAvKiAweDAwMDAwMDAxLmVjeCAgICAgICovCisjZGVm aW5lIEZFQVRVUkVTRVRfZTFkICAgIDIgLyogMHg4MDAwMDAwMS5lZHggICAgICAqLworI2RlZmlu ZSBGRUFUVVJFU0VUX2UxYyAgICAzIC8qIDB4ODAwMDAwMDEuZWN4ICAgICAgKi8KKyNkZWZpbmUg RkVBVFVSRVNFVF9EYTEgICAgNCAvKiAweDAwMDAwMDBkOjEuZWF4ICAgICovCisjZGVmaW5lIEZF QVRVUkVTRVRfN2IwICAgIDUgLyogMHgwMDAwMDAwNzowLmVieCAgICAqLworI2RlZmluZSBGRUFU VVJFU0VUXzdjMCAgICA2IC8qIDB4MDAwMDAwMDc6MC5lY3ggICAgKi8KKyNkZWZpbmUgRkVBVFVS RVNFVF9lN2QgICAgNyAvKiAweDgwMDAwMDA3LmVkeCAgICAgICovCisjZGVmaW5lIEZFQVRVUkVT RVRfZThiICAgIDggLyogMHg4MDAwMDAwOC5lYnggICAgICAqLworI2RlZmluZSBGRUFUVVJFU0VU XzdkMCAgICA5IC8qIDB4MDAwMDAwMDc6MC5lZHggICAgKi8KKworCisjZGVmaW5lIENQVUlEX0dV RVNUX05SX0JBU0lDICAgICAgKDB4ZHUgKyAxKQorI2RlZmluZSBDUFVJRF9HVUVTVF9OUl9GRUFU ICAgICAgICgwdSArIDEpCisjZGVmaW5lIENQVUlEX0dVRVNUX05SX0NBQ0hFICAgICAgKDV1ICsg MSkKKyNkZWZpbmUgQ1BVSURfR1VFU1RfTlJfWFNUQVRFICAgICAoNjJ1ICsgMSkKKyNkZWZpbmUg Q1BVSURfR1VFU1RfTlJfRVhURF9JTlRFTCAoMHg4dSArIDEpCisjZGVmaW5lIENQVUlEX0dVRVNU X05SX0VYVERfQU1EICAgKDB4MWN1ICsgMSkKKyNkZWZpbmUgQ1BVSURfR1VFU1RfTlJfRVhURCAg ICAgICBNQVgoQ1BVSURfR1VFU1RfTlJfRVhURF9JTlRFTCwgXAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBDUFVJRF9HVUVTVF9OUl9FWFREX0FNRCkKK3N0cnVjdCBjcHVp ZF9sZWFmCit7CisgICAgdWludDMyX3QgYSwgYiwgYywgZDsKK307CisKK3N0cnVjdCBjcHVpZF9w b2xpY3kKK3sKKyNkZWZpbmUgREVDTF9CSVRGSUVMRCh3b3JkKSBfREVDTF9CSVRGSUVMRChGRUFU VVJFU0VUXyAjIyB3b3JkKQorI2RlZmluZSBfREVDTF9CSVRGSUVMRCh4KSAgIF9fREVDTF9CSVRG SUVMRCh4KQorI2RlZmluZSBfX0RFQ0xfQklURklFTEQoeCkgIENQVUlEX0JJVEZJRUxEXyAjIyB4 CisKKyAgICAvKiBCYXNpYyBsZWF2ZXM6IDB4MDAwMDAweHggKi8KKyAgICB1bmlvbiB7CisgICAg ICAgIHN0cnVjdCBjcHVpZF9sZWFmIHJhd1tDUFVJRF9HVUVTVF9OUl9CQVNJQ107CisgICAgICAg IHN0cnVjdCB7CisgICAgICAgICAgICAvKiBMZWFmIDB4MCAtIE1heCBhbmQgdmVuZG9yLiAqLwor ICAgICAgICAgICAgdWludDMyX3QgbWF4X2xlYWYsIHZlbmRvcl9lYngsIHZlbmRvcl9lY3gsIHZl bmRvcl9lZHg7CisKKyAgICAgICAgICAgIC8qIExlYWYgMHgxIC0gRmFtaWx5L21vZGVsL3N0ZXBw aW5nIGFuZCBmZWF0dXJlcy4gKi8KKyAgICAgICAgICAgIHVpbnQzMl90IHJhd19mbXM7CisgICAg ICAgICAgICB1aW50OF90IDo4LCAgICAgICAvKiBCcmFuZCBJRC4gKi8KKyAgICAgICAgICAgICAg ICBjbGZsdXNoX3NpemUsIC8qIE51bWJlciBvZiA4LWJ5dGUgYmxvY2tzIHBlciBjYWNoZSBsaW5l LiAqLworICAgICAgICAgICAgICAgIGxwcHAsICAgICAgICAgLyogTG9naWNhbCBwcm9jZXNzb3Jz IHBlciBwYWNrYWdlLiAqLworICAgICAgICAgICAgICAgIGFwaWNfaWQ7ICAgICAgLyogSW5pdGlh bCBBUElDIElELiAqLworICAgICAgICAgICAgdW5pb24geworICAgICAgICAgICAgICAgIHVpbnQz Ml90IF8xYzsKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgeyBERUNMX0JJVEZJRUxEKDFjKTsgfTsK KyAgICAgICAgICAgIH07CisgICAgICAgICAgICB1bmlvbiB7CisgICAgICAgICAgICAgICAgdWlu dDMyX3QgXzFkOworICAgICAgICAgICAgICAgIHN0cnVjdCB7IERFQ0xfQklURklFTEQoMWQpOyB9 OworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgLyogTGVhZiAweDIgLSBUTEIvQ2FjaGUv UHJlZmV0Y2guICovCisgICAgICAgICAgICB1aW50OF90IGwyX25yX3F1ZXJpZXM7IC8qIERvY3Vt ZW50ZWQgYXMgZml4ZWQgdG8gMS4gKi8KKyAgICAgICAgICAgIHVpbnQ4X3QgbDJfZGVzY1sxNV07 CisKKyAgICAgICAgICAgIHVpbnQ2NF90IDo2NCwgOjY0OyAvKiBMZWFmIDB4MyAtIFBTTi4gKi8K KyAgICAgICAgICAgIHVpbnQ2NF90IDo2NCwgOjY0OyAvKiBMZWFmIDB4NCAtIFN0cnVjdHVyZWQg Q2FjaGUuICovCisgICAgICAgICAgICB1aW50NjRfdCA6NjQsIDo2NDsgLyogTGVhZiAweDUgLSBN T05JVE9SLiAqLworICAgICAgICAgICAgdWludDY0X3QgOjY0LCA6NjQ7IC8qIExlYWYgMHg2IC0g VGhlcm0vUGVyZi4gKi8KKyAgICAgICAgICAgIHVpbnQ2NF90IDo2NCwgOjY0OyAvKiBMZWFmIDB4 NyAtIFN0cnVjdHVyZWQgRmVhdHVyZXMuICovCisgICAgICAgICAgICB1aW50NjRfdCA6NjQsIDo2 NDsgLyogTGVhZiAweDggLSByc3ZkICovCisgICAgICAgICAgICB1aW50NjRfdCA6NjQsIDo2NDsg LyogTGVhZiAweDkgLSBEQ0EgKi8KKworICAgICAgICAgICAgLyogTGVhZiAweGEgLSBJbnRlbCBQ TVUuICovCisgICAgICAgICAgICB1aW50OF90IHBtdV92ZXJzaW9uOworICAgICAgICB9OworICAg IH0gYmFzaWM7CisKKyAgICAvKiBTdHJ1Y3R1cmVkIGNhY2hlIGxlYWY6IDB4MDAwMDAwMDRbeHhd ICovCisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3QgY3B1aWRfbGVhZiByYXdbQ1BVSURfR1VF U1RfTlJfQ0FDSEVdOworICAgICAgICBzdHJ1Y3QgY3B1aWRfY2FjaGVfbGVhZiB7CisgICAgICAg ICAgICB1aW50MzJfdCB0eXBlOjUsCisgICAgICAgICAgICAgICAgOjI3LCA6MzIsIDozMiwgOjMy OworICAgICAgICB9IHN1YmxlYWZbQ1BVSURfR1VFU1RfTlJfQ0FDSEVdOworICAgIH0gY2FjaGU7 CisKKyAgICAvKiBTdHJ1Y3R1cmVkIGZlYXR1cmUgbGVhZjogMHgwMDAwMDAwN1t4eF0gKi8KKyAg ICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCBjcHVpZF9sZWFmIHJhd1tDUFVJRF9HVUVTVF9OUl9G RUFUXTsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIC8qIFN1YmxlYWYgMC4gKi8KKyAg ICAgICAgICAgIHVpbnQzMl90IG1heF9zdWJsZWFmOworICAgICAgICAgICAgdW5pb24geworICAg ICAgICAgICAgICAgIHVpbnQzMl90IF83YjA7CisgICAgICAgICAgICAgICAgc3RydWN0IHsgREVD TF9CSVRGSUVMRCg3YjApOyB9OworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHVuaW9uIHsK KyAgICAgICAgICAgICAgICB1aW50MzJfdCBfN2MwOworICAgICAgICAgICAgICAgIHN0cnVjdCB7 IERFQ0xfQklURklFTEQoN2MwKTsgfTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICB1bmlv biB7CisgICAgICAgICAgICAgICAgdWludDMyX3QgXzdkMDsKKyAgICAgICAgICAgICAgICBzdHJ1 Y3QgeyBERUNMX0JJVEZJRUxEKDdkMCk7IH07CisgICAgICAgICAgICB9OworICAgICAgICB9Owor ICAgIH0gZmVhdDsKKworICAgIC8qIFhzdGF0ZSBmZWF0dXJlIGxlYWY6IDB4MDAwMDAwMERbeHhd ICovCisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3QgY3B1aWRfbGVhZiByYXdbQ1BVSURfR1VF U1RfTlJfWFNUQVRFXTsKKworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgLyogU3VibGVh ZiAwLiAqLworICAgICAgICAgICAgdWludDMyX3QgeGNyMF9sb3csIC8qIGIgKi86MzIsIG1heF9z aXplLCB4Y3IwX2hpZ2g7CisKKyAgICAgICAgICAgIC8qIFN1YmxlYWYgMS4gKi8KKyAgICAgICAg ICAgIHVuaW9uIHsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBEYTE7CisgICAgICAgICAgICAg ICAgc3RydWN0IHsgREVDTF9CSVRGSUVMRChEYTEpOyB9OworICAgICAgICAgICAgfTsKKyAgICAg ICAgICAgIHVpbnQzMl90IC8qIGIgKi86MzIsIHhzc19sb3csIHhzc19oaWdoOworICAgICAgICB9 OworCisgICAgICAgIC8qIFBlci1jb21wb25lbnQgY29tbW9uIHN0YXRlLiAgVmFsaWQgZm9yIGkg Pj0gMi4gKi8KKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVpbnQzMl90IHNpemUsIG9m ZnNldDsKKyAgICAgICAgICAgIGJvb2wgeHNzOjEsIGFsaWduOjE7CisgICAgICAgICAgICB1aW50 MzJfdCBfcmVzX2Q7CisgICAgICAgIH0gY29tcFtDUFVJRF9HVUVTVF9OUl9YU1RBVEVdOworICAg IH0geHN0YXRlOworCisgICAgLyogRXh0ZW5kZWQgbGVhdmVzOiAweDgwMDAwMHh4ICovCisgICAg dW5pb24geworICAgICAgICBzdHJ1Y3QgY3B1aWRfbGVhZiByYXdbQ1BVSURfR1VFU1RfTlJfRVhU RF07CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAvKiBMZWFmIDB4ODAwMDAwMDAgLSBN YXggYW5kIHZlbmRvci4gKi8KKyAgICAgICAgICAgIHVpbnQzMl90IG1heF9sZWFmLCB2ZW5kb3Jf ZWJ4LCB2ZW5kb3JfZWN4LCB2ZW5kb3JfZWR4OworCisgICAgICAgICAgICAvKiBMZWFmIDB4ODAw MDAwMDEgLSBGYW1pbHkvbW9kZWwvc3RlcHBpbmcgYW5kIGZlYXR1cmVzLiAqLworICAgICAgICAg ICAgdWludDMyX3QgcmF3X2ZtcywgLyogYiAqLzozMjsKKyAgICAgICAgICAgIHVuaW9uIHsKKyAg ICAgICAgICAgICAgICB1aW50MzJfdCBlMWM7CisgICAgICAgICAgICAgICAgc3RydWN0IHsgREVD TF9CSVRGSUVMRChlMWMpOyB9OworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHVuaW9uIHsK KyAgICAgICAgICAgICAgICB1aW50MzJfdCBlMWQ7CisgICAgICAgICAgICAgICAgc3RydWN0IHsg REVDTF9CSVRGSUVMRChlMWQpOyB9OworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgdWlu dDY0X3QgOjY0LCA6NjQ7IC8qIEJyYW5kIHN0cmluZy4gKi8KKyAgICAgICAgICAgIHVpbnQ2NF90 IDo2NCwgOjY0OyAvKiBCcmFuZCBzdHJpbmcuICovCisgICAgICAgICAgICB1aW50NjRfdCA6NjQs IDo2NDsgLyogQnJhbmQgc3RyaW5nLiAqLworICAgICAgICAgICAgdWludDY0X3QgOjY0LCA6NjQ7 IC8qIEwxIGNhY2hlL1RMQi4gKi8KKyAgICAgICAgICAgIHVpbnQ2NF90IDo2NCwgOjY0OyAvKiBM Mi8zIGNhY2hlL1RMQi4gKi8KKworICAgICAgICAgICAgLyogTGVhZiAweDgwMDAwMDA3IC0gQWR2 YW5jZWQgUG93ZXIgTWFuYWdlbWVudC4gKi8KKyAgICAgICAgICAgIHVpbnQzMl90IC8qIGEgKi86 MzIsIC8qIGIgKi86MzIsIC8qIGMgKi86MzI7CisgICAgICAgICAgICB1bmlvbiB7CisgICAgICAg ICAgICAgICAgdWludDMyX3QgZTdkOworICAgICAgICAgICAgICAgIHN0cnVjdCB7IERFQ0xfQklU RklFTEQoZTdkKTsgfTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIC8qIExlYWYgMHg4 MDAwMDAwOCAtIE1pc2MgYWRkci9mZWF0dXJlIGluZm8uICovCisgICAgICAgICAgICB1aW50OF90 IG1heHBoeXNhZGRyLCBtYXhsaW5hZGRyLCA6OCwgOjg7CisgICAgICAgICAgICB1bmlvbiB7Cisg ICAgICAgICAgICAgICAgdWludDMyX3QgZThiOworICAgICAgICAgICAgICAgIHN0cnVjdCB7IERF Q0xfQklURklFTEQoZThiKTsgfTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICB1aW50MzJf dCAvKiBjICovOjMyLCAvKiBkICovOjMyOworICAgICAgICB9OworICAgIH0gZXh0ZDsKKworI3Vu ZGVmIF9fREVDTF9CSVRGSUVMRAorI3VuZGVmIF9ERUNMX0JJVEZJRUxECisjdW5kZWYgREVDTF9C SVRGSUVMRAorCisgICAgLyogVG9vbHN0YWNrIHNlbGVjdGVkIEh5cGVydmlzb3IgbWF4X2xlYWYg KGlmIG5vbi16ZXJvKS4gKi8KKyAgICB1aW50OF90IGh2X2xpbWl0LCBodjJfbGltaXQ7CisKKyAg ICAvKiBWYWx1ZSBjYWxjdWxhdGVkIGZyb20gcmF3IGRhdGEgYWJvdmUuICovCisgICAgdWludDhf dCB4ODZfdmVuZG9yOworfTsKKworLyogRmlsbCBpbiBhIGZlYXR1cmVzZXQgYml0bWFwIGZyb20g YSBDUFVJRCBwb2xpY3kuICovCitzdGF0aWMgaW5saW5lIHZvaWQgY3B1aWRfcG9saWN5X3RvX2Zl YXR1cmVzZXQoCisgICAgY29uc3Qgc3RydWN0IGNwdWlkX3BvbGljeSAqcCwgdWludDMyX3QgZnNb RlNDQVBJTlRTXSkKK3sKKyAgICBmc1tGRUFUVVJFU0VUXzFkXSAgPSBwLT5iYXNpYy5fMWQ7Cisg ICAgZnNbRkVBVFVSRVNFVF8xY10gID0gcC0+YmFzaWMuXzFjOworICAgIGZzW0ZFQVRVUkVTRVRf ZTFkXSA9IHAtPmV4dGQuZTFkOworICAgIGZzW0ZFQVRVUkVTRVRfZTFjXSA9IHAtPmV4dGQuZTFj OworICAgIGZzW0ZFQVRVUkVTRVRfRGExXSA9IHAtPnhzdGF0ZS5EYTE7CisgICAgZnNbRkVBVFVS RVNFVF83YjBdID0gcC0+ZmVhdC5fN2IwOworICAgIGZzW0ZFQVRVUkVTRVRfN2MwXSA9IHAtPmZl YXQuXzdjMDsKKyAgICBmc1tGRUFUVVJFU0VUX2U3ZF0gPSBwLT5leHRkLmU3ZDsKKyAgICBmc1tG RUFUVVJFU0VUX2U4Yl0gPSBwLT5leHRkLmU4YjsKKyAgICBmc1tGRUFUVVJFU0VUXzdkMF0gPSBw LT5mZWF0Ll83ZDA7Cit9CisKKy8qIEZpbGwgaW4gYSBDUFVJRCBwb2xpY3kgZnJvbSBhIGZlYXR1 cmVzZXQgYml0bWFwLiAqLworc3RhdGljIGlubGluZSB2b2lkIGNwdWlkX2ZlYXR1cmVzZXRfdG9f cG9saWN5KAorICAgIGNvbnN0IHVpbnQzMl90IGZzW0ZTQ0FQSU5UU10sIHN0cnVjdCBjcHVpZF9w b2xpY3kgKnApCit7CisgICAgcC0+YmFzaWMuXzFkICA9IGZzW0ZFQVRVUkVTRVRfMWRdOworICAg IHAtPmJhc2ljLl8xYyAgPSBmc1tGRUFUVVJFU0VUXzFjXTsKKyAgICBwLT5leHRkLmUxZCAgID0g ZnNbRkVBVFVSRVNFVF9lMWRdOworICAgIHAtPmV4dGQuZTFjICAgPSBmc1tGRUFUVVJFU0VUX2Ux Y107CisgICAgcC0+eHN0YXRlLkRhMSA9IGZzW0ZFQVRVUkVTRVRfRGExXTsKKyAgICBwLT5mZWF0 Ll83YjAgID0gZnNbRkVBVFVSRVNFVF83YjBdOworICAgIHAtPmZlYXQuXzdjMCAgPSBmc1tGRUFU VVJFU0VUXzdjMF07CisgICAgcC0+ZXh0ZC5lN2QgICA9IGZzW0ZFQVRVUkVTRVRfZTdkXTsKKyAg ICBwLT5leHRkLmU4YiAgID0gZnNbRkVBVFVSRVNFVF9lOGJdOworICAgIHAtPmZlYXQuXzdkMCAg PSBmc1tGRUFUVVJFU0VUXzdkMF07Cit9CisKKyNlbmRpZiAvKiBfX1g4Nl9DUFVJRF9TSEFSRURf SF9fICovCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2NwdWlkLmggYi94ZW4vaW5j bHVkZS9hc20teDg2L2NwdWlkLmgKaW5kZXggY2E2NjRkNTBlMi4uOTcwYzVhMjE2MSAxMDA2NDQK LS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9jcHVpZC5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14 ODYvY3B1aWQuaApAQCAtNCwxNyArNCw2IEBACiAjaW5jbHVkZSA8YXNtL2NwdWZlYXR1cmVzZXQu aD4KICNpbmNsdWRlIDxhc20vcGVyY3B1Lmg+CiAKLSNkZWZpbmUgRkVBVFVSRVNFVF8xZCAgICAg MCAvKiAweDAwMDAwMDAxLmVkeCAgICAgICovCi0jZGVmaW5lIEZFQVRVUkVTRVRfMWMgICAgIDEg LyogMHgwMDAwMDAwMS5lY3ggICAgICAqLwotI2RlZmluZSBGRUFUVVJFU0VUX2UxZCAgICAyIC8q IDB4ODAwMDAwMDEuZWR4ICAgICAgKi8KLSNkZWZpbmUgRkVBVFVSRVNFVF9lMWMgICAgMyAvKiAw eDgwMDAwMDAxLmVjeCAgICAgICovCi0jZGVmaW5lIEZFQVRVUkVTRVRfRGExICAgIDQgLyogMHgw MDAwMDAwZDoxLmVheCAgICAqLwotI2RlZmluZSBGRUFUVVJFU0VUXzdiMCAgICA1IC8qIDB4MDAw MDAwMDc6MC5lYnggICAgKi8KLSNkZWZpbmUgRkVBVFVSRVNFVF83YzAgICAgNiAvKiAweDAwMDAw MDA3OjAuZWN4ICAgICovCi0jZGVmaW5lIEZFQVRVUkVTRVRfZTdkICAgIDcgLyogMHg4MDAwMDAw Ny5lZHggICAgICAqLwotI2RlZmluZSBGRUFUVVJFU0VUX2U4YiAgICA4IC8qIDB4ODAwMDAwMDgu ZWJ4ICAgICAgKi8KLSNkZWZpbmUgRkVBVFVSRVNFVF83ZDAgICAgOSAvKiAweDAwMDAwMDA3OjAu ZWR4ICAgICovCi0KICNpZm5kZWYgX19BU1NFTUJMWV9fCiAjaW5jbHVkZSA8eGVuL3R5cGVzLmg+ CiAjaW5jbHVkZSA8eGVuL2tlcm5lbC5oPgpAQCAtNTUsMjA1ICs0NCwxMCBAQCBzdHJ1Y3QgY3B1 aWRtYXNrcwogLyogUGVyIENQVSBzaGFkb3dzIG9mIG1hc2tpbmcgTVNSIHZhbHVlcywgZm9yIGxh enkgY29udGV4dCBzd2l0Y2hpbmcuICovCiBERUNMQVJFX1BFUl9DUFUoc3RydWN0IGNwdWlkbWFz a3MsIGNwdWlkbWFza3MpOwogCisjaW5jbHVkZSAiYXJjaC1zaGFyZWQvY3B1aWQuaCIKKwogLyog RGVmYXVsdCBtYXNraW5nIE1TUiB2YWx1ZXMsIGNhbGN1bGF0ZWQgYXQgYm9vdC4gKi8KIGV4dGVy biBzdHJ1Y3QgY3B1aWRtYXNrcyBjcHVpZG1hc2tfZGVmYXVsdHM7Ci0KLSNkZWZpbmUgQ1BVSURf R1VFU1RfTlJfQkFTSUMgICAgICAoMHhkdSArIDEpCi0jZGVmaW5lIENQVUlEX0dVRVNUX05SX0ZF QVQgICAgICAgKDB1ICsgMSkKLSNkZWZpbmUgQ1BVSURfR1VFU1RfTlJfQ0FDSEUgICAgICAoNXUg KyAxKQotI2RlZmluZSBDUFVJRF9HVUVTVF9OUl9YU1RBVEUgICAgICg2MnUgKyAxKQotI2RlZmlu ZSBDUFVJRF9HVUVTVF9OUl9FWFREX0lOVEVMICgweDh1ICsgMSkKLSNkZWZpbmUgQ1BVSURfR1VF U1RfTlJfRVhURF9BTUQgICAoMHgxY3UgKyAxKQotI2RlZmluZSBDUFVJRF9HVUVTVF9OUl9FWFRE ICAgICAgIE1BWChDUFVJRF9HVUVTVF9OUl9FWFREX0lOVEVMLCBcCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIENQVUlEX0dVRVNUX05SX0VYVERfQU1EKQotc3RydWN0IGNw dWlkX2xlYWYKLXsKLSAgICB1aW50MzJfdCBhLCBiLCBjLCBkOwotfTsKLQotc3RydWN0IGNwdWlk X3BvbGljeQotewotI2RlZmluZSBERUNMX0JJVEZJRUxEKHdvcmQpIF9ERUNMX0JJVEZJRUxEKEZF QVRVUkVTRVRfICMjIHdvcmQpCi0jZGVmaW5lIF9ERUNMX0JJVEZJRUxEKHgpICAgX19ERUNMX0JJ VEZJRUxEKHgpCi0jZGVmaW5lIF9fREVDTF9CSVRGSUVMRCh4KSAgQ1BVSURfQklURklFTERfICMj IHgKLQotICAgIC8qIEJhc2ljIGxlYXZlczogMHgwMDAwMDB4eCAqLwotICAgIHVuaW9uIHsKLSAg ICAgICAgc3RydWN0IGNwdWlkX2xlYWYgcmF3W0NQVUlEX0dVRVNUX05SX0JBU0lDXTsKLSAgICAg ICAgc3RydWN0IHsKLSAgICAgICAgICAgIC8qIExlYWYgMHgwIC0gTWF4IGFuZCB2ZW5kb3IuICov Ci0gICAgICAgICAgICB1aW50MzJfdCBtYXhfbGVhZiwgdmVuZG9yX2VieCwgdmVuZG9yX2VjeCwg dmVuZG9yX2VkeDsKLQotICAgICAgICAgICAgLyogTGVhZiAweDEgLSBGYW1pbHkvbW9kZWwvc3Rl cHBpbmcgYW5kIGZlYXR1cmVzLiAqLwotICAgICAgICAgICAgdWludDMyX3QgcmF3X2ZtczsKLSAg ICAgICAgICAgIHVpbnQ4X3QgOjgsICAgICAgIC8qIEJyYW5kIElELiAqLwotICAgICAgICAgICAg ICAgIGNsZmx1c2hfc2l6ZSwgLyogTnVtYmVyIG9mIDgtYnl0ZSBibG9ja3MgcGVyIGNhY2hlIGxp bmUuICovCi0gICAgICAgICAgICAgICAgbHBwcCwgICAgICAgICAvKiBMb2dpY2FsIHByb2Nlc3Nv cnMgcGVyIHBhY2thZ2UuICovCi0gICAgICAgICAgICAgICAgYXBpY19pZDsgICAgICAvKiBJbml0 aWFsIEFQSUMgSUQuICovCi0gICAgICAgICAgICB1bmlvbiB7Ci0gICAgICAgICAgICAgICAgdWlu dDMyX3QgXzFjOwotICAgICAgICAgICAgICAgIHN0cnVjdCB7IERFQ0xfQklURklFTEQoMWMpOyB9 OwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHVuaW9uIHsKLSAgICAgICAgICAgICAgICB1 aW50MzJfdCBfMWQ7Ci0gICAgICAgICAgICAgICAgc3RydWN0IHsgREVDTF9CSVRGSUVMRCgxZCk7 IH07Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICAvKiBMZWFmIDB4MiAtIFRMQi9DYWNo ZS9QcmVmZXRjaC4gKi8KLSAgICAgICAgICAgIHVpbnQ4X3QgbDJfbnJfcXVlcmllczsgLyogRG9j dW1lbnRlZCBhcyBmaXhlZCB0byAxLiAqLwotICAgICAgICAgICAgdWludDhfdCBsMl9kZXNjWzE1 XTsKLQotICAgICAgICAgICAgdWludDY0X3QgOjY0LCA6NjQ7IC8qIExlYWYgMHgzIC0gUFNOLiAq LwotICAgICAgICAgICAgdWludDY0X3QgOjY0LCA6NjQ7IC8qIExlYWYgMHg0IC0gU3RydWN0dXJl ZCBDYWNoZS4gKi8KLSAgICAgICAgICAgIHVpbnQ2NF90IDo2NCwgOjY0OyAvKiBMZWFmIDB4NSAt IE1PTklUT1IuICovCi0gICAgICAgICAgICB1aW50NjRfdCA6NjQsIDo2NDsgLyogTGVhZiAweDYg LSBUaGVybS9QZXJmLiAqLwotICAgICAgICAgICAgdWludDY0X3QgOjY0LCA6NjQ7IC8qIExlYWYg MHg3IC0gU3RydWN0dXJlZCBGZWF0dXJlcy4gKi8KLSAgICAgICAgICAgIHVpbnQ2NF90IDo2NCwg OjY0OyAvKiBMZWFmIDB4OCAtIHJzdmQgKi8KLSAgICAgICAgICAgIHVpbnQ2NF90IDo2NCwgOjY0 OyAvKiBMZWFmIDB4OSAtIERDQSAqLwotCi0gICAgICAgICAgICAvKiBMZWFmIDB4YSAtIEludGVs IFBNVS4gKi8KLSAgICAgICAgICAgIHVpbnQ4X3QgcG11X3ZlcnNpb247Ci0gICAgICAgIH07Ci0g ICAgfSBiYXNpYzsKLQotICAgIC8qIFN0cnVjdHVyZWQgY2FjaGUgbGVhZjogMHgwMDAwMDAwNFt4 eF0gKi8KLSAgICB1bmlvbiB7Ci0gICAgICAgIHN0cnVjdCBjcHVpZF9sZWFmIHJhd1tDUFVJRF9H VUVTVF9OUl9DQUNIRV07Ci0gICAgICAgIHN0cnVjdCBjcHVpZF9jYWNoZV9sZWFmIHsKLSAgICAg ICAgICAgIHVpbnQzMl90IHR5cGU6NSwKLSAgICAgICAgICAgICAgICA6MjcsIDozMiwgOjMyLCA6 MzI7Ci0gICAgICAgIH0gc3VibGVhZltDUFVJRF9HVUVTVF9OUl9DQUNIRV07Ci0gICAgfSBjYWNo ZTsKLQotICAgIC8qIFN0cnVjdHVyZWQgZmVhdHVyZSBsZWFmOiAweDAwMDAwMDA3W3h4XSAqLwot ICAgIHVuaW9uIHsKLSAgICAgICAgc3RydWN0IGNwdWlkX2xlYWYgcmF3W0NQVUlEX0dVRVNUX05S X0ZFQVRdOwotICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgLyogU3VibGVhZiAwLiAqLwot ICAgICAgICAgICAgdWludDMyX3QgbWF4X3N1YmxlYWY7Ci0gICAgICAgICAgICB1bmlvbiB7Ci0g ICAgICAgICAgICAgICAgdWludDMyX3QgXzdiMDsKLSAgICAgICAgICAgICAgICBzdHJ1Y3QgeyBE RUNMX0JJVEZJRUxEKDdiMCk7IH07Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdW5pb24g ewotICAgICAgICAgICAgICAgIHVpbnQzMl90IF83YzA7Ci0gICAgICAgICAgICAgICAgc3RydWN0 IHsgREVDTF9CSVRGSUVMRCg3YzApOyB9OwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHVu aW9uIHsKLSAgICAgICAgICAgICAgICB1aW50MzJfdCBfN2QwOwotICAgICAgICAgICAgICAgIHN0 cnVjdCB7IERFQ0xfQklURklFTEQoN2QwKTsgfTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07 Ci0gICAgfSBmZWF0OwotCi0gICAgLyogWHN0YXRlIGZlYXR1cmUgbGVhZjogMHgwMDAwMDAwRFt4 eF0gKi8KLSAgICB1bmlvbiB7Ci0gICAgICAgIHN0cnVjdCBjcHVpZF9sZWFmIHJhd1tDUFVJRF9H VUVTVF9OUl9YU1RBVEVdOwotCi0gICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAvKiBTdWJs ZWFmIDAuICovCi0gICAgICAgICAgICB1aW50MzJfdCB4Y3IwX2xvdywgLyogYiAqLzozMiwgbWF4 X3NpemUsIHhjcjBfaGlnaDsKLQotICAgICAgICAgICAgLyogU3VibGVhZiAxLiAqLwotICAgICAg ICAgICAgdW5pb24gewotICAgICAgICAgICAgICAgIHVpbnQzMl90IERhMTsKLSAgICAgICAgICAg ICAgICBzdHJ1Y3QgeyBERUNMX0JJVEZJRUxEKERhMSk7IH07Ci0gICAgICAgICAgICB9OwotICAg ICAgICAgICAgdWludDMyX3QgLyogYiAqLzozMiwgeHNzX2xvdywgeHNzX2hpZ2g7Ci0gICAgICAg IH07Ci0KLSAgICAgICAgLyogUGVyLWNvbXBvbmVudCBjb21tb24gc3RhdGUuICBWYWxpZCBmb3Ig aSA+PSAyLiAqLwotICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgdWludDMyX3Qgc2l6ZSwg b2Zmc2V0OwotICAgICAgICAgICAgYm9vbCB4c3M6MSwgYWxpZ246MTsKLSAgICAgICAgICAgIHVp bnQzMl90IF9yZXNfZDsKLSAgICAgICAgfSBjb21wW0NQVUlEX0dVRVNUX05SX1hTVEFURV07Ci0g ICAgfSB4c3RhdGU7Ci0KLSAgICAvKiBFeHRlbmRlZCBsZWF2ZXM6IDB4ODAwMDAweHggKi8KLSAg ICB1bmlvbiB7Ci0gICAgICAgIHN0cnVjdCBjcHVpZF9sZWFmIHJhd1tDUFVJRF9HVUVTVF9OUl9F WFREXTsKLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIC8qIExlYWYgMHg4MDAwMDAwMCAt IE1heCBhbmQgdmVuZG9yLiAqLwotICAgICAgICAgICAgdWludDMyX3QgbWF4X2xlYWYsIHZlbmRv cl9lYngsIHZlbmRvcl9lY3gsIHZlbmRvcl9lZHg7Ci0KLSAgICAgICAgICAgIC8qIExlYWYgMHg4 MDAwMDAwMSAtIEZhbWlseS9tb2RlbC9zdGVwcGluZyBhbmQgZmVhdHVyZXMuICovCi0gICAgICAg ICAgICB1aW50MzJfdCByYXdfZm1zLCAvKiBiICovOjMyOwotICAgICAgICAgICAgdW5pb24gewot ICAgICAgICAgICAgICAgIHVpbnQzMl90IGUxYzsKLSAgICAgICAgICAgICAgICBzdHJ1Y3QgeyBE RUNMX0JJVEZJRUxEKGUxYyk7IH07Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdW5pb24g ewotICAgICAgICAgICAgICAgIHVpbnQzMl90IGUxZDsKLSAgICAgICAgICAgICAgICBzdHJ1Y3Qg eyBERUNMX0JJVEZJRUxEKGUxZCk7IH07Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICB1 aW50NjRfdCA6NjQsIDo2NDsgLyogQnJhbmQgc3RyaW5nLiAqLwotICAgICAgICAgICAgdWludDY0 X3QgOjY0LCA6NjQ7IC8qIEJyYW5kIHN0cmluZy4gKi8KLSAgICAgICAgICAgIHVpbnQ2NF90IDo2 NCwgOjY0OyAvKiBCcmFuZCBzdHJpbmcuICovCi0gICAgICAgICAgICB1aW50NjRfdCA6NjQsIDo2 NDsgLyogTDEgY2FjaGUvVExCLiAqLwotICAgICAgICAgICAgdWludDY0X3QgOjY0LCA6NjQ7IC8q IEwyLzMgY2FjaGUvVExCLiAqLwotCi0gICAgICAgICAgICAvKiBMZWFmIDB4ODAwMDAwMDcgLSBB ZHZhbmNlZCBQb3dlciBNYW5hZ2VtZW50LiAqLwotICAgICAgICAgICAgdWludDMyX3QgLyogYSAq LzozMiwgLyogYiAqLzozMiwgLyogYyAqLzozMjsKLSAgICAgICAgICAgIHVuaW9uIHsKLSAgICAg ICAgICAgICAgICB1aW50MzJfdCBlN2Q7Ci0gICAgICAgICAgICAgICAgc3RydWN0IHsgREVDTF9C SVRGSUVMRChlN2QpOyB9OwotICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgLyogTGVhZiAw eDgwMDAwMDA4IC0gTWlzYyBhZGRyL2ZlYXR1cmUgaW5mby4gKi8KLSAgICAgICAgICAgIHVpbnQ4 X3QgbWF4cGh5c2FkZHIsIG1heGxpbmFkZHIsIDo4LCA6ODsKLSAgICAgICAgICAgIHVuaW9uIHsK LSAgICAgICAgICAgICAgICB1aW50MzJfdCBlOGI7Ci0gICAgICAgICAgICAgICAgc3RydWN0IHsg REVDTF9CSVRGSUVMRChlOGIpOyB9OwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHVpbnQz Ml90IC8qIGMgKi86MzIsIC8qIGQgKi86MzI7Ci0gICAgICAgIH07Ci0gICAgfSBleHRkOwotCi0j dW5kZWYgX19ERUNMX0JJVEZJRUxECi0jdW5kZWYgX0RFQ0xfQklURklFTEQKLSN1bmRlZiBERUNM X0JJVEZJRUxECi0KLSAgICAvKiBUb29sc3RhY2sgc2VsZWN0ZWQgSHlwZXJ2aXNvciBtYXhfbGVh ZiAoaWYgbm9uLXplcm8pLiAqLwotICAgIHVpbnQ4X3QgaHZfbGltaXQsIGh2Ml9saW1pdDsKLQot ICAgIC8qIFZhbHVlIGNhbGN1bGF0ZWQgZnJvbSByYXcgZGF0YSBhYm92ZS4gKi8KLSAgICB1aW50 OF90IHg4Nl92ZW5kb3I7Ci19OwotCi0vKiBGaWxsIGluIGEgZmVhdHVyZXNldCBiaXRtYXAgZnJv bSBhIENQVUlEIHBvbGljeS4gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBjcHVpZF9wb2xpY3lfdG9f ZmVhdHVyZXNldCgKLSAgICBjb25zdCBzdHJ1Y3QgY3B1aWRfcG9saWN5ICpwLCB1aW50MzJfdCBm c1tGU0NBUElOVFNdKQotewotICAgIGZzW0ZFQVRVUkVTRVRfMWRdICA9IHAtPmJhc2ljLl8xZDsK LSAgICBmc1tGRUFUVVJFU0VUXzFjXSAgPSBwLT5iYXNpYy5fMWM7Ci0gICAgZnNbRkVBVFVSRVNF VF9lMWRdID0gcC0+ZXh0ZC5lMWQ7Ci0gICAgZnNbRkVBVFVSRVNFVF9lMWNdID0gcC0+ZXh0ZC5l MWM7Ci0gICAgZnNbRkVBVFVSRVNFVF9EYTFdID0gcC0+eHN0YXRlLkRhMTsKLSAgICBmc1tGRUFU VVJFU0VUXzdiMF0gPSBwLT5mZWF0Ll83YjA7Ci0gICAgZnNbRkVBVFVSRVNFVF83YzBdID0gcC0+ ZmVhdC5fN2MwOwotICAgIGZzW0ZFQVRVUkVTRVRfZTdkXSA9IHAtPmV4dGQuZTdkOwotICAgIGZz W0ZFQVRVUkVTRVRfZThiXSA9IHAtPmV4dGQuZThiOwotICAgIGZzW0ZFQVRVUkVTRVRfN2QwXSA9 IHAtPmZlYXQuXzdkMDsKLX0KLQotLyogRmlsbCBpbiBhIENQVUlEIHBvbGljeSBmcm9tIGEgZmVh dHVyZXNldCBiaXRtYXAuICovCi1zdGF0aWMgaW5saW5lIHZvaWQgY3B1aWRfZmVhdHVyZXNldF90 b19wb2xpY3koCi0gICAgY29uc3QgdWludDMyX3QgZnNbRlNDQVBJTlRTXSwgc3RydWN0IGNwdWlk X3BvbGljeSAqcCkKLXsKLSAgICBwLT5iYXNpYy5fMWQgID0gZnNbRkVBVFVSRVNFVF8xZF07Ci0g ICAgcC0+YmFzaWMuXzFjICA9IGZzW0ZFQVRVUkVTRVRfMWNdOwotICAgIHAtPmV4dGQuZTFkICAg PSBmc1tGRUFUVVJFU0VUX2UxZF07Ci0gICAgcC0+ZXh0ZC5lMWMgICA9IGZzW0ZFQVRVUkVTRVRf ZTFjXTsKLSAgICBwLT54c3RhdGUuRGExID0gZnNbRkVBVFVSRVNFVF9EYTFdOwotICAgIHAtPmZl YXQuXzdiMCAgPSBmc1tGRUFUVVJFU0VUXzdiMF07Ci0gICAgcC0+ZmVhdC5fN2MwICA9IGZzW0ZF QVRVUkVTRVRfN2MwXTsKLSAgICBwLT5leHRkLmU3ZCAgID0gZnNbRkVBVFVSRVNFVF9lN2RdOwot ICAgIHAtPmV4dGQuZThiICAgPSBmc1tGRUFUVVJFU0VUX2U4Yl07Ci0gICAgcC0+ZmVhdC5fN2Qw ICA9IGZzW0ZFQVRVUkVTRVRfN2QwXTsKLX0KLQogZXh0ZXJuIHN0cnVjdCBjcHVpZF9wb2xpY3kg cmF3X2NwdWlkX3BvbGljeSwgaG9zdF9jcHVpZF9wb2xpY3ksCiAgICAgcHZfbWF4X2NwdWlkX3Bv bGljeSwgaHZtX21heF9jcHVpZF9wb2xpY3k7CiAKLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QK WGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5v cmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=