From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boqun Feng Subject: [PATCH v2 10/17] xen: x86: add SGX cpuid handling support. Date: Mon, 4 Dec 2017 08:15:21 +0800 Message-ID: <20171204001528.1342-11-boqun.feng@intel.com> References: <20171204001528.1342-1-boqun.feng@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171204001528.1342-1-boqun.feng@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Kevin Tian , Stefano Stabellini , Wei Liu , Jun Nakajima , George Dunlap , Andrew Cooper , Ian Jackson , =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= , Tim Deegan , kai.huang@linux.intel.com, Julien Grall , Jan Beulich , David Scott , Boqun Feng List-Id: xen-devel@lists.xenproject.org RnJvbTogS2FpIEh1YW5nIDxrYWkuaHVhbmdAbGludXguaW50ZWwuY29tPgoKVGhpcyBwYXRjaCBh ZGRzIFNHWCB0byBjcHVpZCBoYW5kbGluZyBzdXBwb3J0LiBGb3IgU0dYIGZlYXR1cmUgYml0LCBp dCdzCnJlcG9ydGVkIGludG8gcmF3X3BvbGljeSBhbmQgcGFzc2VkIGFsb25nIHRvIGEgZ3Vlc3Qs IGJ1dCBpbgpyZWNhbGN1bGF0ZV9jcHVfcG9saWN5KCksIHdlIGNsZWFyIGl0IGlmIHNvbWUgb25l IGRpc2FibGVkIFNHWCBmb3Igc29tZQpyZWFzb24uIEZvciBFUEMgaW5mbywgcGh5c2ljYWwgb25l IGlzIHJlcG9ydGVkIGludG8gcmF3X3BvbGljeSBhbmQKcmVjYWxjdWxhdGVkIGZvciAqX3BvbGlj eS4gRm9yIGEgcGFydGljdWxhciBkb21haW4sIGl0J3MgRVBDIGJhc2UgYW5kCnNpemUgaW5mbyB3 aWxsIGJlIGZpbGxlZCBieSB0b29sc3RhY2suIEJlZm9yZSBkb21haW4ncyBFUEMgYmFzZSBhbmQg c2l6ZQphcmUgcHJvcGVybHkgY29uZmlndXJlZCwgZ3Vlc3QncyBTR1ggY3B1aWQgc2hvdWxkIHJl cG9ydCBpbnZhbGlkIEVQQywKd2hpY2ggaXMgYWxzbyBjb25zaXN0ZW50IHdpdGggSFcgYmVoYXZp b3IuCgpDdXJyZW50bHkgYWxsIEVQQyBwYWdlcyBhcmUgZnVsbHkgcG9wdWxhdGVkIGZvciBkb21h aW4gd2hlbiBpdCBpcwpjcmVhdGVkLiAgWGVuIGdldHMgZG9tYWluJ3MgRVBDIGJhc2UgYW5kIHNp emUgZnJvbSB0b29sc3RhY2sgdmlhClhFTl9ET01DVExfc2V0X2NwdWlkLCBzbyBkb21haW4ncyBF UEMgcGFnZXMgYXJlIGFsc28gcG9wdWxhdGVkIGluClhFTl9ET01DVExfc2V0X2NwdWlkLCBhZnRl ciByZWNlaXZpbmcgdmFsaWQgRVBDIGJhc2UgYW5kIHNpemUuIEZhaWx1cmUKdG8gcG9wdWxhdGUg RVBDIChzdWNoIGFzIHRoZXJlJ3Mgbm8gZW5vdWdoIGZyZWUgRVBDIHBhZ2VzKSByZXN1bHRzIGlu CmRvbWFpbiBjcmVhdGlvbiBmYWlsdXJlIGJ5IG1ha2luZyBYRU5fRE9NQ1RMX3NldF9jcHVpZCBy ZXR1cm4gZXJyb3IuCgpTaWduZWQtb2ZmLWJ5OiBLYWkgSHVhbmcgPGthaS5odWFuZ0BsaW51eC5p bnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEJvcXVuIEZlbmcgPGJvcXVuLmZlbmdAaW50ZWwuY29t PgotLS0KIHhlbi9hcmNoL3g4Ni9jcHVpZC5jICAgICAgICB8IDYyICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLQogeGVuL2FyY2gveDg2L2RvbWN0bC5jICAgICAg IHwgNTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiB4ZW4vaW5j bHVkZS9hc20teDg2L2NwdWlkLmggfCAyOSArKysrKysrKysrKysrKysrKysrKy0KIDMgZmlsZXMg Y2hhbmdlZCwgMTQ3IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L2NwdWlkLmMgYi94ZW4vYXJjaC94ODYvY3B1aWQuYwppbmRleCA1ZWU4MmQz OWQ3Y2QuLmZjZmZiZGVjNmJiZSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdWlkLmMKKysr IGIveGVuL2FyY2gveDg2L2NwdWlkLmMKQEAgLTksNiArOSw3IEBACiAjaW5jbHVkZSA8YXNtL3Bh Z2luZy5oPgogI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KICNpbmNsdWRlIDxhc20veHN0YXRl Lmg+CisjaW5jbHVkZSA8YXNtL3NneC5oPgogCiBjb25zdCB1aW50MzJfdCBrbm93bl9mZWF0dXJl c1tdID0gSU5JVF9LTk9XTl9GRUFUVVJFUzsKIGNvbnN0IHVpbnQzMl90IHNwZWNpYWxfZmVhdHVy ZXNbXSA9IElOSVRfU1BFQ0lBTF9GRUFUVVJFUzsKQEAgLTE1Miw2ICsxNTMsMzMgQEAgc3RhdGlj IHZvaWQgcmVjYWxjdWxhdGVfeHN0YXRlKHN0cnVjdCBjcHVpZF9wb2xpY3kgKnApCiAgICAgfQog fQogCitzdGF0aWMgdm9pZCByZWNhbGN1bGF0ZV9zZ3goc3RydWN0IGNwdWlkX3BvbGljeSAqcCkK K3sKKyAgICBpZiAoICFwLT5mZWF0LnNneCB8fCAhcC0+c2d4LnNneDEgKQorICAgIHsKKyAgICAg ICAgbWVtc2V0KCZwLT5zZ3gsIDAsIHNpemVvZiAocC0+c2d4KSk7CisgICAgICAgIHJldHVybjsK KyAgICB9CisKKyAgICAvKgorICAgICAqIFNETSA0Mi43LjIuMSBTRUNTLkFUVFJJQlVURS5YRlJN OgorICAgICAqCisgICAgICogTGVnYWwgdmFsdWUgZm9yIFNFQ1MuQVRUUklCVVRFLlhGUk0gY29u Zm9ybSB0byB0aGVzZSByZXF1aXJlbWVudHM6CisgICAgICogIC0gWEZSTVsxOjBdIG11c3QgYmUg c2V0IHRvIDB4MzsKKyAgICAgKiAgLSBJZiBwcm9jZXNzb3IgZG9lcyBub3Qgc3VwcG9ydCBYU0FW RSwgb3IgaWYgdGhlIHN5c3RlbSBzb2Z0d2FyZSBoYXMgbm90CisgICAgICogICAgZW5hYmxlZCBY U0FWRSwgdGhlbiBYRlJNWzYzOjJdIG11c3QgYmUgMC4KKyAgICAgKiAgLSBJZiB0aGUgcHJvY2Vz c29yIGRvZXMgc3VwcG9ydCBYU0FWRSwgWEZSTSBtdXN0IGNvbnRhaW4gYSB2YWx1ZSB0aGF0Cisg ICAgICogICAgd291bGQgYmUgbGVnYWwgaWYgbG9hZGVkIGludG8gWENSMC4KKyAgICAgKi8KKyAg ICBwLT5zZ3gueGZybV9sb3cgPSAweDM7CisgICAgcC0+c2d4Lnhmcm1faGlnaCA9IDA7CisgICAg aWYgKCBwLT5iYXNpYy54c2F2ZSApCisgICAgeworICAgICAgICBwLT5zZ3gueGZybV9sb3cgfD0g cC0+eHN0YXRlLnhjcjBfbG93OworICAgICAgICBwLT5zZ3gueGZybV9oaWdoIHw9IHAtPnhzdGF0 ZS54Y3IwX2hpZ2g7CisgICAgfQorfQorCiAvKgogICogTWlzYyBhZGp1c3RtZW50cyB0byB0aGUg cG9saWN5LiAgTW9zdGx5IGNsb2JiZXJpbmcgcmVzZXJ2ZWQgZmllbGRzIGFuZAogICogZHVwbGlj YXRpbmcgc2hhcmVkIGZpZWxkcy4gIEludGVudGlvbmFsbHkgaGlkZGVuIGZpZWxkcyBhcmUgYW5u b3RhdGVkLgpAQCAtMjMzLDcgKzI2MSw3IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBjYWxjdWxhdGVf cmF3X3BvbGljeSh2b2lkKQogICAgIHsKICAgICAgICAgc3dpdGNoICggaSApCiAgICAgICAgIHsK LSAgICAgICAgY2FzZSAweDQ6IGNhc2UgMHg3OiBjYXNlIDB4ZDoKKyAgICAgICAgY2FzZSAweDQ6 IGNhc2UgMHg3OiBjYXNlIDB4ZDogY2FzZSAweDEyOgogICAgICAgICAgICAgLyogTXVsdGktaW52 b2NhdGlvbiBsZWF2ZXMuICBEZWZlcnJlZC4gKi8KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg ICAgICB9CkBAIC0yOTMsNiArMzIxLDE5IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBjYWxjdWxhdGVf cmF3X3BvbGljeSh2b2lkKQogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKCBwLT5iYXNpYy5t YXhfbGVhZiA+PSBTR1hfQ1BVSUQgKQorICAgIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogRm9y IHJhdyBwb2xpY3kgd2UganVzdCByZXBvcnQgbmF0aXZlIENQVUlELiBGb3IgRVBDIG9uIG5hdGl2 ZSBpdCdzCisgICAgICAgICAqIHBvc3NpYmxlIHRoYXQgd2Ugd2lsbCBoYXZlIG11bHRpcGxlIEVQ QyBzZWN0aW9ucyAobWVhbmluZyBzdWJsZWFmIDMsCisgICAgICAgICAqIDQsIC4uLiBtYXkgYWxz byBiZSB2YWxpZCksIGJ1dCBhcyB0aGUgcG9saWN5IGlzIGZvciBndWVzdCBzbyB3ZSBvbmx5Cisg ICAgICAgICAqIG5lZWQgb25lIEVQQyBzZWN0aW9uIChzdWJsZWFmIDIpLgorICAgICAgICAgKi8K KyAgICAgICAgY3B1aWRfY291bnRfbGVhZihTR1hfQ1BVSUQsIDAsICZwLT5zZ3gucmF3WzBdKTsK KyAgICAgICAgY3B1aWRfY291bnRfbGVhZihTR1hfQ1BVSUQsIDEsICZwLT5zZ3gucmF3WzFdKTsK KyAgICAgICAgY3B1aWRfY291bnRfbGVhZihTR1hfQ1BVSUQsIDIsICZwLT5zZ3gucmF3WzJdKTsK KyAgICB9CisKICAgICAvKiBFeHRlbmRlZCBsZWF2ZXMuICovCiAgICAgY3B1aWRfbGVhZigweDgw MDAwMDAwLCAmcC0+ZXh0ZC5yYXdbMF0pOwogICAgIGZvciAoIGkgPSAxOyBpIDwgbWluKEFSUkFZ X1NJWkUocC0+ZXh0ZC5yYXcpLApAQCAtMzE4LDYgKzM1OSw3IEBAIHN0YXRpYyB2b2lkIF9faW5p dCBjYWxjdWxhdGVfaG9zdF9wb2xpY3kodm9pZCkKICAgICBjcHVpZF9mZWF0dXJlc2V0X3RvX3Bv bGljeShib290X2NwdV9kYXRhLng4Nl9jYXBhYmlsaXR5LCBwKTsKICAgICByZWNhbGN1bGF0ZV94 c3RhdGUocCk7CiAgICAgcmVjYWxjdWxhdGVfbWlzYyhwKTsKKyAgICByZWNhbGN1bGF0ZV9zZ3go cCk7CiAKICAgICBpZiAoIHAtPmV4dGQuc3ZtICkKICAgICB7CkBAIC0zNTEsNiArMzkzLDcgQEAg c3RhdGljIHZvaWQgX19pbml0IGNhbGN1bGF0ZV9wdl9tYXhfcG9saWN5KHZvaWQpCiAgICAgc2Fu aXRpc2VfZmVhdHVyZXNldChwdl9mZWF0dXJlc2V0KTsKICAgICBjcHVpZF9mZWF0dXJlc2V0X3Rv X3BvbGljeShwdl9mZWF0dXJlc2V0LCBwKTsKICAgICByZWNhbGN1bGF0ZV94c3RhdGUocCk7Cisg ICAgcmVjYWxjdWxhdGVfc2d4KHApOwogCiAgICAgcC0+ZXh0ZC5yYXdbMHhhXSA9IEVNUFRZX0xF QUY7IC8qIE5vIFNWTSBmb3IgUFYgZ3Vlc3RzLiAqLwogfQpAQCAtNDA4LDYgKzQ1MSw3IEBAIHN0 YXRpYyB2b2lkIF9faW5pdCBjYWxjdWxhdGVfaHZtX21heF9wb2xpY3kodm9pZCkKICAgICBzYW5p dGlzZV9mZWF0dXJlc2V0KGh2bV9mZWF0dXJlc2V0KTsKICAgICBjcHVpZF9mZWF0dXJlc2V0X3Rv X3BvbGljeShodm1fZmVhdHVyZXNldCwgcCk7CiAgICAgcmVjYWxjdWxhdGVfeHN0YXRlKHApOwor ICAgIHJlY2FsY3VsYXRlX3NneChwKTsKIH0KIAogdm9pZCBfX2luaXQgaW5pdF9ndWVzdF9jcHVp ZCh2b2lkKQpAQCAtNTIzLDYgKzU2NywxNCBAQCB2b2lkIHJlY2FsY3VsYXRlX2NwdWlkX3BvbGlj eShzdHJ1Y3QgZG9tYWluICpkKQogICAgIGlmICggcC0+YmFzaWMubWF4X2xlYWYgPCBYU1RBVEVf Q1BVSUQgKQogICAgICAgICBfX2NsZWFyX2JpdChYODZfRkVBVFVSRV9YU0FWRSwgZnMpOwogCisg ICAgLyoKKyAgICAgKiBXZSBjaGVjayBjcHVfaGFzX3NneCBoZXJlIGJlY2F1c2UgZHVyaW5nIGJv b3QgdXAgU0dYIG1heSBiZSBkaXNhYmxlZAorICAgICAqIHZpYSBkaXNhYmxlX3NneCgpLCBlLmcu IEJJT1MgZGlzYWJsZXMgU0dYIGJ5IHNldHRpbmcKKyAgICAgKiBJQTMyX0ZFQVRVUkVfQ09OVFJP TF9TR1hfRU5BQkxFPTAKKyAgICAgKi8KKyAgICBpZiAoIHAtPmJhc2ljLm1heF9sZWFmIDwgU0dY X0NQVUlEIHx8ICFjcHVfaGFzX3NneCApCisgICAgICAgIF9fY2xlYXJfYml0KFg4Nl9GRUFUVVJF X1NHWCwgZnMpOworCiAgICAgc2FuaXRpc2VfZmVhdHVyZXNldChmcyk7CiAKICAgICAvKiBGb2xk IGhvc3QncyBGRFBfRVhDUF9PTkxZIGFuZCBOT19GUFVfU0VMIGludG8gZ3Vlc3QncyB2aWV3LiAq LwpAQCAtNTQ1LDYgKzU5Nyw3IEBAIHZvaWQgcmVjYWxjdWxhdGVfY3B1aWRfcG9saWN5KHN0cnVj dCBkb21haW4gKmQpCiAKICAgICByZWNhbGN1bGF0ZV94c3RhdGUocCk7CiAgICAgcmVjYWxjdWxh dGVfbWlzYyhwKTsKKyAgICByZWNhbGN1bGF0ZV9zZ3gocCk7CiAKICAgICBmb3IgKCBpID0gMDsg aSA8IEFSUkFZX1NJWkUocC0+Y2FjaGUucmF3KTsgKytpICkKICAgICB7CkBAIC02NDEsNiArNjk0 LDEzIEBAIHZvaWQgZ3Vlc3RfY3B1aWQoY29uc3Qgc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IGxl YWYsCiAgICAgICAgICAgICAqcmVzID0gcC0+eHN0YXRlLnJhd1tzdWJsZWFmXTsKICAgICAgICAg ICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgU0dYX0NQVUlEOgorICAgICAgICAgICAgaWYgKCAh cC0+ZmVhdC5zZ3ggfHwgc3VibGVhZiA+PSBBUlJBWV9TSVpFKHAtPnNneC5yYXcpICkKKyAgICAg ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICpyZXMgPSBwLT5zZ3gucmF3W3N1Ymxl YWZdOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg ICpyZXMgPSBwLT5iYXNpYy5yYXdbbGVhZl07CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9kb21jdGwuYyBiL3hlbi9hcmNoL3g4Ni9kb21jdGwuYwppbmRleCA4 MGI0ZGY5ZWM5NWIuLjBlZTlmYjY0NThlYyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2RvbWN0 bC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9kb21jdGwuYwpAQCAtNTMsNiArNTMsNyBAQCBzdGF0aWMg aW50IHVwZGF0ZV9kb21haW5fY3B1aWRfaW5mbyhzdHJ1Y3QgZG9tYWluICpkLAogICAgIHN0cnVj dCBjcHVpZF9wb2xpY3kgKnAgPSBkLT5hcmNoLmNwdWlkOwogICAgIGNvbnN0IHN0cnVjdCBjcHVp ZF9sZWFmIGxlYWYgPSB7IGN0bC0+ZWF4LCBjdGwtPmVieCwgY3RsLT5lY3gsIGN0bC0+ZWR4IH07 CiAgICAgaW50IG9sZF92ZW5kb3IgPSBwLT54ODZfdmVuZG9yOworICAgIGludCByZXQgPSAwOwog CiAgICAgLyoKICAgICAgKiBTa2lwIHVwZGF0ZSBmb3IgbGVhdmVzIHdlIGRvbid0IGNhcmUgYWJv dXQuICBUaGlzIGF2b2lkcyB0aGUgb3ZlcmhlYWQKQEAgLTc0LDYgKzc1LDExIEBAIHN0YXRpYyBp bnQgdXBkYXRlX2RvbWFpbl9jcHVpZF9pbmZvKHN0cnVjdCBkb21haW4gKmQsCiAgICAgICAgIGlm ICggY3RsLT5pbnB1dFswXSA9PSBYU1RBVEVfQ1BVSUQgJiYKICAgICAgICAgICAgICBjdGwtPmlu cHV0WzFdICE9IDEgKSAvKiBFdmVyeXRoaW5nIGVsc2UgYXV0b21hdGljYWxseSBjYWxjdWxhdGVk LiAqLwogICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgaWYgKCBjdGwtPmlucHV0WzBd ID09IFNHWF9DUFVJRCAmJgorICAgICAgICAgICAgIGN0bC0+aW5wdXRbMV0gPj0gQVJSQVlfU0la RShwLT5zZ3gucmF3KSApCisgICAgICAgICAgICByZXR1cm4gMDsKKwogICAgICAgICBicmVhazsK IAogICAgIGNhc2UgMHg0MDAwMDAwMDogY2FzZSAweDQwMDAwMTAwOgpAQCAtMTA0LDYgKzExMCwx MCBAQCBzdGF0aWMgaW50IHVwZGF0ZV9kb21haW5fY3B1aWRfaW5mbyhzdHJ1Y3QgZG9tYWluICpk LAogICAgICAgICAgICAgcC0+eHN0YXRlLnJhd1tjdGwtPmlucHV0WzFdXSA9IGxlYWY7CiAgICAg ICAgICAgICBicmVhazsKIAorICAgICAgICBjYXNlIFNHWF9DUFVJRDoKKyAgICAgICAgICAgIHAt PnNneC5yYXdbY3RsLT5pbnB1dFsxXV0gPSBsZWFmOworICAgICAgICAgICAgYnJlYWs7CisKICAg ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHAtPmJhc2ljLnJhd1tjdGwtPmlucHV0WzBdXSA9 IGxlYWY7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI1NSw2ICsyNjUsNTMgQEAgc3RhdGljIGlu dCB1cGRhdGVfZG9tYWluX2NwdWlkX2luZm8oc3RydWN0IGRvbWFpbiAqZCwKICAgICAgICAgfQog ICAgICAgICBicmVhazsKIAorICAgIGNhc2UgMHgxMjoKKyAgICB7CisgICAgICAgIHVpbnQ2NF90 IGJhc2VfcGZuLCBucGFnZXM7CisgICAgICAgIHN0cnVjdCBzZ3hfZG9tYWluICpzZDsKKworICAg ICAgICBpZiAoIGJvb3RfY3B1X2RhdGEueDg2X3ZlbmRvciAhPSBYODZfVkVORE9SX0lOVEVMICkK KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmICggY3RsLT5pbnB1dFsxXSAhPSAyICkK KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qIFNHWCBoYXMgbm90IGVuYWJsZWQgKi8K KyAgICAgICAgaWYgKCAhcC0+ZmVhdC5zZ3ggfHwgIXAtPnNneC5zZ3gxICkKKyAgICAgICAgICAg IGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIElmIFNHWCBpcyBlbmFibGVkIGluIENQ VUlELCB0aGVuIHdlIGFyZSBleHBlY3RpbmcgdmFsaWQgRVBDIHJlc291cmNlCisgICAgICAgICAq IGluIHN1Yi1sZWFmIDB4Mi4gUmV0dXJuIC1FRkFVTFQgdG8gbm90aWZ5IHRvb2xzdGFjayB0aGF0 IHRoZXJlJ3MKKyAgICAgICAgICogc29tZXRoaW5nIHdyb25nLgorICAgICAgICAgKi8KKyAgICAg ICAgaWYgKCAhcC0+c2d4LmJhc2VfdmFsaWQgfHwgIXAtPnNneC5zaXplX3ZhbGlkICkKKyAgICAg ICAgeworICAgICAgICAgICAgcmV0ID0gLUVJTlZBTDsKKyAgICAgICAgICAgIGJyZWFrOworICAg ICAgICB9CisKKyAgICAgICAgYmFzZV9wZm4gPSAoKCh1aW50NjRfdCkocC0+c2d4LmJhc2VfaGln aCkpIDw8IDIwKSB8CisgICAgICAgICAgICAodWludDY0X3QpcC0+c2d4LmJhc2VfbG93OworICAg ICAgICBucGFnZXMgPSAoKCh1aW50NjRfdCkocC0+c2d4Lm5wYWdlc19oaWdoKSkgPDwgMjApIHwK KyAgICAgICAgICAgICh1aW50NjRfdClwLT5zZ3gubnBhZ2VzX2xvdzsKKworICAgICAgICBzZCA9 IHRvX3NneChkKTsKKworICAgICAgICBpZiAoICFzZCApCisgICAgICAgIHsKKyAgICAgICAgICAg IHJldCA9IC1FRkFVTFQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg IGlmICggIWRvbWFpbl9lcGNfcG9wdWxhdGVkKGQpICkKKyAgICAgICAgICAgIHJldCA9IGRvbWFp bl9wb3B1bGF0ZV9lcGMoZCwgYmFzZV9wZm4sIG5wYWdlcyk7CisgICAgICAgIGVsc2UKKyAgICAg ICAgICAgIGlmICggYmFzZV9wZm4gIT0gc2QtPmVwY19iYXNlX3BmbiB8fCBucGFnZXMgIT0gc2Qt PmVwY19ucGFnZXMgKQorICAgICAgICAgICAgICAgIHJldCA9IC1FSU5WQUw7CisKKyAgICAgICAg YnJlYWs7CisgICAgfQogICAgIGNhc2UgMHg4MDAwMDAwMToKICAgICAgICAgaWYgKCBpc19wdl9k b21haW4oZCkgJiYgKChsZXZlbGxpbmdfY2FwcyAmIExDQVBfZTFjZCkgPT0gTENBUF9lMWNkKSAp CiAgICAgICAgIHsKQEAgLTI5OSw3ICszNTYsNyBAQCBzdGF0aWMgaW50IHVwZGF0ZV9kb21haW5f Y3B1aWRfaW5mbyhzdHJ1Y3QgZG9tYWluICpkLAogICAgICAgICBicmVhazsKICAgICB9CiAKLSAg ICByZXR1cm4gMDsKKyAgICByZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW50IHZjcHVfc2V0X3Zt Y2Uoc3RydWN0IHZjcHUgKnYsCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2NwdWlk LmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2NwdWlkLmgKaW5kZXggZDJkZDg0MWUxNTgxLi42ZDA0 Mzg0MzcxM2EgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvY3B1aWQuaAorKysgYi94 ZW4vaW5jbHVkZS9hc20teDg2L2NwdWlkLmgKQEAgLTYxLDEwICs2MSwxMSBAQCBleHRlcm4gc3Ry dWN0IGNwdWlkbWFza3MgY3B1aWRtYXNrX2RlZmF1bHRzOwogLyogV2hldGhlciBvciBub3QgY3B1 aWQgZmF1bHRpbmcgaXMgYXZhaWxhYmxlIGZvciB0aGUgY3VycmVudCBkb21haW4uICovCiBERUNM QVJFX1BFUl9DUFUoYm9vbCwgY3B1aWRfZmF1bHRpbmdfZW5hYmxlZCk7CiAKLSNkZWZpbmUgQ1BV SURfR1VFU1RfTlJfQkFTSUMgICAgICAoMHhkdSArIDEpCisjZGVmaW5lIENQVUlEX0dVRVNUX05S X0JBU0lDICAgICAgKDB4MTJ1ICsgMSkKICNkZWZpbmUgQ1BVSURfR1VFU1RfTlJfRkVBVCAgICAg ICAoMHUgKyAxKQogI2RlZmluZSBDUFVJRF9HVUVTVF9OUl9DQUNIRSAgICAgICg1dSArIDEpCiAj ZGVmaW5lIENQVUlEX0dVRVNUX05SX1hTVEFURSAgICAgKDYydSArIDEpCisjZGVmaW5lIENQVUlE X0dVRVNUX05SX1NHWCAgICAgICAgKDB4MnUgKyAxKQogI2RlZmluZSBDUFVJRF9HVUVTVF9OUl9F WFREX0lOVEVMICgweDh1ICsgMSkKICNkZWZpbmUgQ1BVSURfR1VFU1RfTlJfRVhURF9BTUQgICAo MHgxY3UgKyAxKQogI2RlZmluZSBDUFVJRF9HVUVTVF9OUl9FWFREICAgICAgIE1BWChDUFVJRF9H VUVTVF9OUl9FWFREX0lOVEVMLCBcCkBAIC0xNjksNiArMTcwLDMyIEBAIHN0cnVjdCBjcHVpZF9w b2xpY3kKICAgICAgICAgfSBjb21wW0NQVUlEX0dVRVNUX05SX1hTVEFURV07CiAgICAgfSB4c3Rh dGU7CiAKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCBjcHVpZF9sZWFmIHJhd1tDUFVJRF9H VUVTVF9OUl9TR1hdOworCisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAvKiBTdWJsZWFm IDAuICovCisgICAgICAgICAgICBib29sIHNneDE6MSwgc2d4MjoxOyB1aW50MzJfdCA6MzA7Cisg ICAgICAgICAgICB1aW50MzJfdCBtaXNjc2VsZWN0OworICAgICAgICAgICAgdWludDMyX3QgLyog YyAqLyA6MzI7CisgICAgICAgICAgICB1aW50OF90IG1heHNpemVfbGVnZWN5LCBtYXhzaXplX2xv bmc7IHVpbnQzMl90IDoxNjsgLyogZCAqLworCisgICAgICAgICAgICAvKiBTdWJsZWFmIDEuICov CisgICAgICAgICAgICBib29sIGluaXQ6MSwgZGVidWc6MSwgbW9kZTY0OjEsIC8qcmVzZXJ2ZSov OjEsIHByb3Zpc2lvbmtleToxLAorICAgICAgICAgICAgICAgICAgICAgZWluaXR0b2tlbmtleTox OyB1aW50MzJfdCA6MjY7CisgICAgICAgICAgICB1aW50MzJfdCAvKiBTVyByZXNlcnZlZCAqLyA6 MzI7CisgICAgICAgICAgICB1aW50MzJfdCB4ZnJtX2xvdywgeGZybV9oaWdoOworCisgICAgICAg ICAgICAvKiBTdWJsZWFmIDIuICovCisgICAgICAgICAgICBib29sIGJhc2VfdmFsaWQ6MTsgdWlu dDMyX3QgOjExOworICAgICAgICAgICAgdWludDMyX3QgYmFzZV9sb3c6MjA7CisgICAgICAgICAg ICB1aW50MzJfdCBiYXNlX2hpZ2g6MjAsIDoxMjsKKyAgICAgICAgICAgIGJvb2wgc2l6ZV92YWxp ZDoxOyB1aW50MzJfdCA6MTE7CisgICAgICAgICAgICB1aW50MzJfdCBucGFnZXNfbG93OjIwOwor ICAgICAgICAgICAgdWludDMyX3QgbnBhZ2VzX2hpZ2g6MjAsIDoxMjsKKyAgICAgICAgfTsKKyAg ICB9IHNneDsKKwogICAgIC8qIEV4dGVuZGVkIGxlYXZlczogMHg4MDAwMDB4eCAqLwogICAgIHVu aW9uIHsKICAgICAgICAgc3RydWN0IGNwdWlkX2xlYWYgcmF3W0NQVUlEX0dVRVNUX05SX0VYVERd OwotLSAKMi4xNS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZl bA==