From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boqun Feng Subject: [PATCH v2 11/17] xen: vmx: handle SGX related MSRs Date: Mon, 4 Dec 2017 08:15:22 +0800 Message-ID: <20171204001528.1342-12-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 RnJvbTogS2FpIEh1YW5nIDxrYWkuaHVhbmdAbGludXguaW50ZWwuY29tPgoKVGhpcyBwYXRjaCBo YW5kbGVzIElBMzJfRkVBVFVSRV9DT05UUk9MIGFuZCBJQTMyX1NHWExFUFVCS0VZSEFTSG4gTVNS cy4KCkZvciBJQTMyX0ZFQVRVUkVfQ09OVFJPTCwgaWYgU0dYIGlzIGV4cG9zZWQgdG8gZG9tYWlu LCB0aGVuIFNHWF9FTkFCTEUKYml0IGlzIGFsd2F5cyBzZXQuIFRoZSBTR1hfTEVfV1IgYml0IGlz IGRlZmF1bHQgdG8gYmUgMCwgdW5sZXNzIDEpIHRoZQpTR1ggbGF1bmNoIGNvbnRyb2wgaXMgZXhw b3NlZCB0byBkb21haW4gYW5kIDIpIHRoZSBYTCBwYXJhbWV0ZXIgJ2xld3InCmlzIHRydWUodGhl IGhhbmRsaW5nIG9mIHRoaXMgcGFyYW1ldGVyIGlzIGluIGEgbGF0ZXIgcGF0Y2gsIHNvIGZvciB0 aGlzCnBhdGNoLCBTR1hfTEVfV1IgYml0IGlzIGFsd2F5cyAwKS4gIFdyaXRlIHRvIElBMzJfRkVB VFVSRV9DT05UUk9MIHdpbGwKZmF1bHQuCgpGb3IgSUEzMl9TR1hMRVBVQktFWUhBU0huLCB2Y3B1 J3MgdmlydHVhbCBpYTMyX3NneGxlcHVia2V5aGFzaFswLTNdIGFyZQphZGRlZCBpbiAnc2d4JyBm aWVsZCBvZiAnc3RydWN0IG1zcl92Y3B1X3BvbGljeScuCgpEdXJpbmcgdmNwdSBpcyBpbml0aWFs aXplZCwgdmlydHVhbCBpYTMyX3NneGxlcHVia2V5aGFzaCBhcmUgYWxzbwppbml0aWFsaXplZC4g VGhlIGRlZmF1bHQgdmFsdWVzIHdvdWxkIGJlIHRoZSBwaHlzaWNhbCB2YWx1ZXMgb2YgdGhlCnBo eXNpY2FsIG1hY2hpbmVzLiBMYXRlciBvbiwgd2UgbWF5IHJlc2V0IHRob3NlIHZhbHVlcyB3aXRo IHRoZSBjb250ZW50Cm9mIHRoZSBYTCBwYXJhbWV0ZXIgJ2xlaGFzaCcuIEJlc2lkZXMgaWYgJ2xl d3InIGlzIHRydWUgYW5kIG5vICdsZWhhc2gnCmlzIHByb3ZpZGVkLCB3ZSB3aWxsIHJlc2V0IHRo b3NlIHZhbHVlcyB3aXRoIEludGVsJ3MgZGVmYXVsdCB2YWx1ZSwgYXMKZm9yIHBoeXNpY2FsIG1h Y2hpbmVzLCB0aG9zZSBNU1JzIHdpbGwgaGF2ZSBJbnRlbCdzIGRlZmF1bHQgdmFsdWUuCgpGb3Ig SUEzMl9TR1hMRVBVQktFWUhBU0huIE1TUiByZWFkIGZyb20gZ3Vlc3QsIGlmIFNHWCBsYXVuY2gg Y29udHJvbCBpcwpub3QgZXhwb3NlZCB0byBkb21haW4sIGd1ZXN0IGlzIG5vdCBhbGxvd2VkIHRv IHJlYWQgZWl0aGVyLCBvdGhlcndpc2UKdmNwdSdzIHZpcnR1YWwgTVNSIHZhbHVlIGlzIHJldHVy bmVkLgoKRm9yIElBMzJfU0dYTEVQVUJLRVlIQVNIbiBNU1Igd3JpdGUgZnJvbSBndWVzdCwgd2Ug YWxsb3cgZ3Vlc3QgdG8gd3JpdGUKaWYgb25seSAnbGV3cicgaXMgc2V0KHNvIGZvciB0aGlzIHBh dGNoLCB3cml0ZXMgd2lsbCBmYXVsdCkuCgpUbyBtYWtlIEVJTklUIHJ1biBzdWNjZXNzZnVsbHkg aW4gZ3Vlc3QsIHZjcHUncyB2aXJ0dWFsCklBMzJfU0dYTEVQVUJLRVlIQVNIbiB3aWxsIGJlIHVw ZGF0ZSB0byBwaHlzaWNhbCBNU1JzIHdoZW4gdmNwdSBpcwpzY2hlZHVsZWQgaW4uIE1vcmVvdmVy LCB3ZSBjYWNoZSB0aGUgcmVjZW50IElBMzJfU0dYTEVQVUJLRVlIQVNIbiBpbiBhCnBlcmNwdSB2 YXJpYWJsZSwgc28gdGhhdCB3ZSB3b24ndCBuZWVkIHRvIHVwZGF0ZSB3aXRoIHdybXNyIGlmIHRo ZSB2YWx1ZQpub3QgY2hhbmdlZC4KClNpZ25lZC1vZmYtYnk6IEthaSBIdWFuZyA8a2FpLmh1YW5n QGxpbnV4LmludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogQm9xdW4gRmVuZyA8Ym9xdW4uZmVuZ0Bp bnRlbC5jb20+Ci0tLQogeGVuL2FyY2gveDg2L2RvbWN0bC5jICAgICAgICAgICAgfCAgMjggKysr KysrKystCiB4ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYyAgICAgICB8ICAxOSArKysrKysKIHhl bi9hcmNoL3g4Ni9tc3IuYyAgICAgICAgICAgICAgIHwgICA2ICstCiB4ZW4vYXJjaC94ODYvc2d4 LmMgICAgICAgICAgICAgICB8IDEyMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIHhlbi9pbmNsdWRlL2FzbS14ODYvY3B1ZmVhdHVyZS5oIHwgICAzICsKIHhlbi9pbmNs dWRlL2FzbS14ODYvbXNyLWluZGV4LmggIHwgICA1ICsrCiB4ZW4vaW5jbHVkZS9hc20teDg2L21z ci5oICAgICAgICB8ICAgNSArKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9zZ3guaCAgICAgICAgfCAg IDkgKysrCiA4IGZpbGVzIGNoYW5nZWQsIDE5NiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21jdGwuYyBiL3hlbi9hcmNoL3g4Ni9kb21j dGwuYwppbmRleCAwZWU5ZmI2NDU4ZWMuLmViNWQ0YjM0NjMxMyAxMDA2NDQKLS0tIGEveGVuL2Fy Y2gveDg2L2RvbWN0bC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9kb21jdGwuYwpAQCAtMTM1MiwxMyAr MTM1MiwxNiBAQCBsb25nIGFyY2hfZG9fZG9tY3RsKAogCiAgICAgICAgIHJldCA9IC1FSU5WQUw7 CiAgICAgICAgIGlmICggKHYgPT0gY3VycikgfHwgLyogbm8gdmNwdV9wYXVzZSgpICovCi0gICAg ICAgICAgICAgIWlzX3B2X2RvbWFpbihkKSApCisgICAgICAgICAgICAgKCFpc19wdl9kb21haW4o ZCkgJiYgIWQtPmFyY2guY3B1aWQtPmZlYXQuc2d4X2xjKSApCiAgICAgICAgICAgICBicmVhazsK IAogICAgICAgICAvKiBDb3VudCBtYXhpbXVtIG51bWJlciBvZiBvcHRpb25hbCBtc3JzLiAqLwog ICAgICAgICBpZiAoIGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9EQkVYVCkgKQogICAgICAgICAg ICAgbnJfbXNycyArPSA0OwogCisgICAgICAgIGlmICggZC0+YXJjaC5jcHVpZC0+ZmVhdC5zZ3hf bGMgKQorICAgICAgICAgICAgbnJfbXNycyArPSA1OworCiAgICAgICAgIGlmICggZG9tY3RsLT5j bWQgPT0gWEVOX0RPTUNUTF9nZXRfdmNwdV9tc3JzICkKICAgICAgICAgewogICAgICAgICAgICAg cmV0ID0gMDsgY29weWJhY2sgPSB0cnVlOwpAQCAtMTQ0Nyw2ICsxNDUwLDI5IEBAIGxvbmcgYXJj aF9kb19kb21jdGwoCiAgICAgICAgICAgICAgICAgICAgIG1zci5pbmRleCAtPSBNU1JfQU1ENjRf RFIxX0FERFJFU1NfTUFTSyAtIDE7CiAgICAgICAgICAgICAgICAgICAgIHYtPmFyY2gucHZfdmNw dS5kcl9tYXNrW21zci5pbmRleF0gPSBtc3IudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgIGNv bnRpbnVlOworICAgICAgICAgICAgICAgIGNhc2UgTVNSX0lBMzJfRkVBVFVSRV9DT05UUk9MOgor ICAgICAgICAgICAgICAgICAgICBpZiAoIG1zci52YWx1ZSAmIElBMzJfRkVBVFVSRV9DT05UUk9M X1NHWF9MRV9XUiApCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg ICAgIGlmICggZC0+YXJjaC5jcHVpZC0+ZmVhdC5zZ3hfbGMgJiYgc2d4X2xld3IoKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LT5hcmNo Lm1zci0+c2d4Lmxld3IgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp bnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg ZWxzZSAvKiBUcnkgdG8gc2V0IExFX1dSIHdoaWxlIG5vdCBzdXBwb3J0ZWQgKi8KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorCQkgICAg Y29udGludWU7CisgICAgICAgICAgICAgICAgY2FzZSBNU1JfSUEzMl9TR1hMRVBVQktFWUhBU0gw IC4uLiBNU1JfSUEzMl9TR1hMRVBVQktFWUhBU0gzOgorICAgICAgICAgICAgICAgICAgICBpZiAo IGQtPmFyY2guY3B1aWQtPmZlYXQuc2d4X2xjICYmIHNneF9sZXdyKCkgKQorICAgICAgICAgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBzZ3hfc2V0X3ZjcHVfc2d4bGVwdWJr ZXloYXNoKHYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zci5pbmRleCAtIE1T Ul9JQTMyX1NHWExFUFVCS0VZSEFTSDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1zci52YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg ICAgICAgICBicmVhazsKKwkJICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAg ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4 Ni9odm0vdm14L3ZteC5jIGIveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMKaW5kZXggOTJmYjg1 YjEzYTBjLi5jZTFjOTVmNjkwNjIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L3Zt eC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCkBAIC0xMDQ5LDYgKzEwNDksOSBA QCBzdGF0aWMgdm9pZCB2bXhfY3R4dF9zd2l0Y2hfdG8oc3RydWN0IHZjcHUgKnYpCiAKICAgICBp ZiAoIHYtPmRvbWFpbi0+YXJjaC5odm1fZG9tYWluLnBpX29wcy5zd2l0Y2hfdG8gKQogICAgICAg ICB2LT5kb21haW4tPmFyY2guaHZtX2RvbWFpbi5waV9vcHMuc3dpdGNoX3RvKHYpOworCisgICAg aWYgKCB2LT5kb21haW4tPmFyY2guY3B1aWQtPmZlYXQuc2d4X2xjICYmIHNneF9sZXdyKCkgKQor ICAgICAgICBzZ3hfY3R4dF9zd2l0Y2hfdG8odik7CiB9CiAKIApAQCAtMjg5Miw2ICsyODk1LDgg QEAgc3RhdGljIGludCBpc19sYXN0X2JyYW5jaF9tc3IodTMyIGVjeCkKIHN0YXRpYyBpbnQgdm14 X21zcl9yZWFkX2ludGVyY2VwdCh1bnNpZ25lZCBpbnQgbXNyLCB1aW50NjRfdCAqbXNyX2NvbnRl bnQpCiB7CiAgICAgY29uc3Qgc3RydWN0IHZjcHUgKmN1cnIgPSBjdXJyZW50OworICAgIGNvbnN0 IHN0cnVjdCBtc3JfdmNwdV9wb2xpY3kgKnZwID0gY3Vyci0+YXJjaC5tc3I7CisgICAgY29uc3Qg c3RydWN0IGRvbWFpbiAqZCA9IGN1cnJlbnQtPmRvbWFpbjsKIAogICAgIEhWTV9EQkdfTE9HKERC R19MRVZFTF9NU1IsICJlY3g9JSN4IiwgbXNyKTsKIApAQCAtMjkxNSwxMSArMjkyMCwxOSBAQCBz dGF0aWMgaW50IHZteF9tc3JfcmVhZF9pbnRlcmNlcHQodW5zaWduZWQgaW50IG1zciwgdWludDY0 X3QgKm1zcl9jb250ZW50KQogICAgICAgICAgICAgKm1zcl9jb250ZW50IHw9IElBMzJfRkVBVFVS RV9DT05UUk9MX0xNQ0VfT047CiAgICAgICAgIGlmICggbmVzdGVkaHZtX2VuYWJsZWQoY3Vyci0+ ZG9tYWluKSApCiAgICAgICAgICAgICAqbXNyX2NvbnRlbnQgfD0gSUEzMl9GRUFUVVJFX0NPTlRS T0xfRU5BQkxFX1ZNWE9OX09VVFNJREVfU01YOworICAgICAgICBpZiAoIGQtPmFyY2guY3B1aWQt PmZlYXQuc2d4ICkKKyAgICAgICAgICAgICptc3JfY29udGVudCB8PSBJQTMyX0ZFQVRVUkVfQ09O VFJPTF9TR1hfRU5BQkxFOworICAgICAgICBpZiAoIHZwLT5zZ3gubGV3ciApCisgICAgICAgICAg ICAqbXNyX2NvbnRlbnQgfD0gSUEzMl9GRUFUVVJFX0NPTlRST0xfU0dYX0xFX1dSOwogICAgICAg ICBicmVhazsKICAgICBjYXNlIE1TUl9JQTMyX1ZNWF9CQVNJQy4uLk1TUl9JQTMyX1ZNWF9WTUZV TkM6CiAgICAgICAgIGlmICggIW52bXhfbXNyX3JlYWRfaW50ZXJjZXB0KG1zciwgbXNyX2NvbnRl bnQpICkKICAgICAgICAgICAgIGdvdG8gZ3BfZmF1bHQ7CiAgICAgICAgIGJyZWFrOworICAgIGNh c2UgTVNSX0lBMzJfU0dYTEVQVUJLRVlIQVNIMCAuLi4gTVNSX0lBMzJfU0dYTEVQVUJLRVlIQVNI MzoKKyAgICAgICAgaWYgKCAhc2d4X21zcl9yZWFkX2ludGVyY2VwdChjdXJyZW50LCBtc3IsIG1z cl9jb250ZW50KSApCisgICAgICAgICAgICBnb3RvIGdwX2ZhdWx0OworICAgICAgICBicmVhazsK ICAgICBjYXNlIE1TUl9JQTMyX01JU0NfRU5BQkxFOgogICAgICAgICByZG1zcmwoTVNSX0lBMzJf TUlTQ19FTkFCTEUsICptc3JfY29udGVudCk7CiAgICAgICAgIC8qIERlYnVnIFRyYWNlIFN0b3Jl IGlzIG5vdCBzdXBwb3J0ZWQuICovCkBAIC0zMTQ2LDYgKzMxNTksMTIgQEAgc3RhdGljIGludCB2 bXhfbXNyX3dyaXRlX2ludGVyY2VwdCh1bnNpZ25lZCBpbnQgbXNyLCB1aW50NjRfdCBtc3JfY29u dGVudCkKICAgICBjYXNlIE1TUl9JQTMyX1ZNWF9CQVNJQyAuLi4gTVNSX0lBMzJfVk1YX1ZNRlVO QzoKICAgICAgICAgLyogTm9uZSBvZiB0aGVzZSBNU1JzIGFyZSB3cml0ZWFibGUuICovCiAgICAg ICAgIGdvdG8gZ3BfZmF1bHQ7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBNU1JfSUEzMl9T R1hMRVBVQktFWUhBU0gwLi4uTVNSX0lBMzJfU0dYTEVQVUJLRVlIQVNIMzoKKyAgICAgICAgaWYg KCAhc2d4X21zcl93cml0ZV9pbnRlcmNlcHQoY3VycmVudCwgbXNyLCBtc3JfY29udGVudCkgKQor ICAgICAgICAgICAgZ290byBncF9mYXVsdDsKKyAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIE1T Ul9QNl9QRVJGQ1RSKDApLi4uTVNSX1A2X1BFUkZDVFIoNyk6CiAgICAgY2FzZSBNU1JfUDZfRVZO VFNFTCgwKS4uLk1TUl9QNl9FVk5UU0VMKDcpOgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21z ci5jIGIveGVuL2FyY2gveDg2L21zci5jCmluZGV4IGJhYmE0NGY0M2QwNS4uOTVjYjQxYjRkODI1 IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbXNyLmMKKysrIGIveGVuL2FyY2gveDg2L21zci5j CkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSA8eGVuL2xpYi5oPgogI2luY2x1ZGUgPHhlbi9z Y2hlZC5oPgogI2luY2x1ZGUgPGFzbS9tc3IuaD4KKyNpbmNsdWRlIDxhc20vc2d4Lmg+CiAKIHN0 cnVjdCBtc3JfZG9tYWluX3BvbGljeSBfX3JlYWRfbW9zdGx5IGh2bV9tYXhfbXNyX2RvbWFpbl9w b2xpY3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgX19yZWFkX21vc3RseSAgcHZfbWF4X21z cl9kb21haW5fcG9saWN5OwpAQCAtMTEyLDYgKzExMyw4IEBAIGludCBpbml0X3ZjcHVfbXNyX3Bv bGljeShzdHJ1Y3QgdmNwdSAqdikKICAgICBpZiAoIGlzX2NvbnRyb2xfZG9tYWluKGQpICkKICAg ICAgICAgdnAtPm1pc2NfZmVhdHVyZXNfZW5hYmxlcy5hdmFpbGFibGUgPSBmYWxzZTsKIAorICAg IHNneF9tc3JfdmNwdV9pbml0KHYsIHZwKTsKKwogICAgIHYtPmFyY2gubXNyID0gdnA7CiAKICAg ICByZXR1cm4gMDsKQEAgLTExOSw4ICsxMjIsOSBAQCBpbnQgaW5pdF92Y3B1X21zcl9wb2xpY3ko c3RydWN0IHZjcHUgKnYpCiAKIGludCBndWVzdF9yZG1zcihjb25zdCBzdHJ1Y3QgdmNwdSAqdiwg dWludDMyX3QgbXNyLCB1aW50NjRfdCAqdmFsKQogewotICAgIGNvbnN0IHN0cnVjdCBtc3JfZG9t YWluX3BvbGljeSAqZHAgPSB2LT5kb21haW4tPmFyY2gubXNyOwogICAgIGNvbnN0IHN0cnVjdCBt c3JfdmNwdV9wb2xpY3kgKnZwID0gdi0+YXJjaC5tc3I7CisgICAgY29uc3Qgc3RydWN0IGRvbWFp biAqZCA9IHYtPmRvbWFpbjsKKyAgICBjb25zdCBzdHJ1Y3QgbXNyX2RvbWFpbl9wb2xpY3kgKmRw ID0gZC0+YXJjaC5tc3I7CiAKICAgICBzd2l0Y2ggKCBtc3IgKQogICAgIHsKZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9zZ3guYyBiL3hlbi9hcmNoL3g4Ni9zZ3guYwppbmRleCAwYzg5OGMzMDg2 Y2IuLmQxMDNlYjI0M2U3YSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3NneC5jCisrKyBiL3hl bi9hcmNoL3g4Ni9zZ3guYwpAQCAtMjcsMTIgKzI3LDE1IEBACiAjaW5jbHVkZSA8YXNtL3NneC5o PgogI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgogI2luY2x1ZGUgPGFzbS9wMm0uaD4KKyNpbmNsdWRl IDx4ZW4vcGVyY3B1Lmg+CiAKIHN0cnVjdCBzZ3hfY3B1aW5mbyBfX3JlYWRfbW9zdGx5IGJvb3Rf c2d4X2NwdWRhdGE7CiAKIHN0YXRpYyBib29sIF9fcmVhZF9tb3N0bHkgb3B0X3NneF9lbmFibGVk ID0gZmFsc2U7CiBib29sZWFuX3BhcmFtKCJzZ3giLCBvcHRfc2d4X2VuYWJsZWQpOwogCitERUZJ TkVfUEVSX0NQVSh1aW50NjRfdFs0XSwgY3B1X2lhMzJfc2d4bGVwdWJrZXloYXNoKTsKKwogI2Rl ZmluZSB0b3RhbF9lcGNfbnBhZ2VzIChib290X3NneF9jcHVkYXRhLmVwY19zaXplID4+IFBBR0Vf U0hJRlQpCiAjZGVmaW5lIGVwY19iYXNlX21mbiAoYm9vdF9zZ3hfY3B1ZGF0YS5lcGNfYmFzZSA+ PiBQQUdFX1NISUZUKQogI2RlZmluZSBlcGNfYmFzZV9tYWRkciAoYm9vdF9zZ3hfY3B1ZGF0YS5l cGNfYmFzZSkKQEAgLTM3OCw2ICszODEsMTI2IEBAIGludCBkb21haW5fZGVzdHJveV9lcGMoc3Ry dWN0IGRvbWFpbiAqZCkKICAgICByZXR1cm4gZG9tYWluX3Jlc2V0X2VwYyhkLCB0cnVlKTsKIH0K IAorLyogRGlnZXN0IG9mIEludGVsIHNpZ25pbmcga2V5LiBNU1IncyBkZWZhdWx0IHZhbHVlIGFm dGVyIHJlc2V0LiAqLworI2RlZmluZSBTR1hfSU5URUxfREVGQVVMVF9MRVBVQktFWUhBU0gwIDB4 YTYwNTNlMDUxMjcwYjdhYworI2RlZmluZSBTR1hfSU5URUxfREVGQVVMVF9MRVBVQktFWUhBU0gx IDB4NmNmYmU4YmE4YjNiNDEzZAorI2RlZmluZSBTR1hfSU5URUxfREVGQVVMVF9MRVBVQktFWUhB U0gyIDB4YzQ5MTZkOTlmMmIzNzM1ZAorI2RlZmluZSBTR1hfSU5URUxfREVGQVVMVF9MRVBVQktF WUhBU0gzIDB4ZDRmOGMwNTkwOWY5YmIzYgorCit2b2lkIHNneF9zZXRfdmNwdV9zZ3hsZXB1Ymtl eWhhc2goc3RydWN0IHZjcHUgKnYsIGludCBpZHgsIHVpbnQ2NF90IHZhbCkKK3sKKyAgICBCVUdf T04oaWR4IDwgMCB8fCBpZHggPiAzKTsKKworICAgIHYtPmFyY2gubXNyLT5zZ3guaWEzMl9zZ3hs ZXB1YmtleWhhc2hbaWR4XSA9IHZhbDsKK30KKwordm9pZCBzZ3hfbXNyX3ZjcHVfaW5pdChzdHJ1 Y3QgdmNwdSAqdiwgc3RydWN0IG1zcl92Y3B1X3BvbGljeSAqdnApCit7CisgICAgY29uc3Qgc3Ry dWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKKworICAgIC8qIGxld3IgaXMgZGVmYXVsdCBmYWxz ZSAqLworICAgIHZwLT5zZ3gubGV3ciA9IGZhbHNlOworCisgICAgaWYgKCBkLT5hcmNoLmNwdWlk LT5mZWF0LnNneF9sYyApCisgICAgeworICAgICAgICBpZiAoIHNneF9sZXdyKCkgKQorICAgICAg ICB7CisgICAgICAgICAgICB2cC0+c2d4LmlhMzJfc2d4bGVwdWJrZXloYXNoWzBdID0gU0dYX0lO VEVMX0RFRkFVTFRfTEVQVUJLRVlIQVNIMDsKKyAgICAgICAgICAgIHZwLT5zZ3guaWEzMl9zZ3hs ZXB1YmtleWhhc2hbMV0gPSBTR1hfSU5URUxfREVGQVVMVF9MRVBVQktFWUhBU0gxOworICAgICAg ICAgICAgdnAtPnNneC5pYTMyX3NneGxlcHVia2V5aGFzaFsyXSA9IFNHWF9JTlRFTF9ERUZBVUxU X0xFUFVCS0VZSEFTSDI7CisgICAgICAgICAgICB2cC0+c2d4LmlhMzJfc2d4bGVwdWJrZXloYXNo WzNdID0gU0dYX0lOVEVMX0RFRkFVTFRfTEVQVUJLRVlIQVNIMzsKKyAgICAgICAgfQorICAgICAg ICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJkbXNybChNU1JfSUEzMl9TR1hMRVBVQktF WUhBU0gwLCB2cC0+c2d4LmlhMzJfc2d4bGVwdWJrZXloYXNoWzBdKTsKKyAgICAgICAgICAgIHJk bXNybChNU1JfSUEzMl9TR1hMRVBVQktFWUhBU0gxLCB2cC0+c2d4LmlhMzJfc2d4bGVwdWJrZXlo YXNoWzFdKTsKKyAgICAgICAgICAgIHJkbXNybChNU1JfSUEzMl9TR1hMRVBVQktFWUhBU0gyLCB2 cC0+c2d4LmlhMzJfc2d4bGVwdWJrZXloYXNoWzJdKTsKKyAgICAgICAgICAgIHJkbXNybChNU1Jf SUEzMl9TR1hMRVBVQktFWUhBU0gzLCB2cC0+c2d4LmlhMzJfc2d4bGVwdWJrZXloYXNoWzNdKTsK KyAgICAgICAgfQorICAgIH0KK30KKworI2RlZmluZSBzZ3hfdHJ5X3RvX3dyaXRlX21zcih2cCwg aSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorZG8gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgIGlmICgodnApLT5zZ3guaWEzMl9zZ3hsZXB1YmtleWhh c2hbaV0gIT0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgdGhpc19j cHUoY3B1X2lhMzJfc2d4bGVwdWJrZXloYXNoW2ldKSkgICAgICAgICAgICAgICAgICAgICAgXAor ICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorICAgICAgICB3cm1zcmwoTVNSX0lBMzJfU0dYTEVQVUJLRVlIQVNI IyNpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgKHZwKS0+ c2d4LmlhMzJfc2d4bGVwdWJrZXloYXNoW2ldKTsgICAgICAgICAgICAgICAgICAgICAgXAorICAg ICAgICB0aGlzX2NwdShjcHVfaWEzMl9zZ3hsZXB1YmtleWhhc2hbaV0pID0gICAgICAgICAgICAg ICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAodnApLT5zZ3guaWEzMl9zZ3hsZXB1 YmtleWhhc2hbaV07ICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfSB3aGls ZSAoMCkKKwordm9pZCBzZ3hfY3R4dF9zd2l0Y2hfdG8oc3RydWN0IHZjcHUgKnYpCit7CisgICAg c3RydWN0IG1zcl92Y3B1X3BvbGljeSAqdnAgPSB2LT5hcmNoLm1zcjsKKworICAgIHNneF90cnlf dG9fd3JpdGVfbXNyKHZwLCAwKTsKKyAgICBzZ3hfdHJ5X3RvX3dyaXRlX21zcih2cCwgMSk7Cisg ICAgc2d4X3RyeV90b193cml0ZV9tc3IodnAsIDIpOworICAgIHNneF90cnlfdG9fd3JpdGVfbXNy KHZwLCAzKTsKK30KKworaW50IHNneF9tc3JfcmVhZF9pbnRlcmNlcHQoc3RydWN0IHZjcHUgKnYs IHVuc2lnbmVkIGludCBtc3IsIHU2NCAqbXNyX2NvbnRlbnQpCit7CisgICAgY29uc3Qgc3RydWN0 IG1zcl92Y3B1X3BvbGljeSAqdnAgPSB2LT5hcmNoLm1zcjsKKyAgICBjb25zdCBzdHJ1Y3QgZG9t YWluICpkID0gdi0+ZG9tYWluOworICAgIHU2NCBkYXRhOworICAgIGludCByID0gMTsKKworICAg IGlmICggIWQtPmFyY2guY3B1aWQtPmZlYXQuc2d4X2xjICkKKyAgICAgICAgcmV0dXJuIDA7CisK KyAgICBzd2l0Y2ggKCBtc3IgKQorICAgIHsKKyAgICBjYXNlIE1TUl9JQTMyX1NHWExFUFVCS0VZ SEFTSDAgLi4uIE1TUl9JQTMyX1NHWExFUFVCS0VZSEFTSDM6CisgICAgICAgIGRhdGEgPSB2cC0+ c2d4LmlhMzJfc2d4bGVwdWJrZXloYXNoW21zciAtIE1TUl9JQTMyX1NHWExFUFVCS0VZSEFTSDBd OworICAgICAgICAqbXNyX2NvbnRlbnQgPSBkYXRhOworCisgICAgICAgIGJyZWFrOworICAgIGRl ZmF1bHQ6CisgICAgICAgIHIgPSAwOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1 cm4gcjsKK30KKworaW50IHNneF9tc3Jfd3JpdGVfaW50ZXJjZXB0KHN0cnVjdCB2Y3B1ICp2LCB1 bnNpZ25lZCBpbnQgbXNyLCB1NjQgbXNyX2NvbnRlbnQpCit7CisgICAgc3RydWN0IG1zcl92Y3B1 X3BvbGljeSAqdnAgPSB2LT5hcmNoLm1zcjsKKyAgICBjb25zdCBzdHJ1Y3QgZG9tYWluICpkID0g di0+ZG9tYWluOworICAgIGludCByID0gMTsKKworICAgIC8qCisgICAgICogU0RNIDM1LjEgTW9k ZWwtU3BlY2lmaWMgUmVnaXN0ZXJzLCB0YWJsZSAzNS0yLgorICAgICAqCisgICAgICogSUEzMl9T R1hMRVBVQktFWUhBU0hbMC4uM106CisgICAgICoKKyAgICAgKiAtIElmIENQVUlELjB4Ny4wOkVD WFszMF0gPSAxLCBGRUFUVVJFX0NPTlRST0xbMTddIGlzIGF2YWlsYWJsZS4KKyAgICAgKiAtIFdy aXRlIHBlcm1pdHRlZCBpZiBDUFVJRC4weDEyLjA6RUFYWzBdID0gMSAmJgorICAgICAqICAgICAg RkVBVFVSRV9DT05UUk9MWzE3XSA9IDEgJiYgRkVBVFVSRV9DT05UUk9MWzBdID0gMS4KKyAgICAg Ki8KKyAgICBpZiAoICFkLT5hcmNoLmNwdWlkLT5mZWF0LnNneF9sYyB8fCAhdnAtPnNneC5sZXdy ICkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBzd2l0Y2ggKCBtc3IgKQorICAgIHsKKyAgICBj YXNlIE1TUl9JQTMyX1NHWExFUFVCS0VZSEFTSDAuLi5NU1JfSUEzMl9TR1hMRVBVQktFWUhBU0gz OgorICAgICAgICB2cC0+c2d4LmlhMzJfc2d4bGVwdWJrZXloYXNoW21zciAtIE1TUl9JQTMyX1NH WExFUFVCS0VZSEFTSDBdID0KKyAgICAgICAgICAgIG1zcl9jb250ZW50OworCisgICAgICAgIGJy ZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHIgPSAwOworICAgICAgICBicmVhazsKKyAgICB9 CisKKyAgICByZXR1cm4gcjsKK30KKwogc3RhdGljIHZvaWQgX19kZXRlY3Rfc2d4KHN0cnVjdCBz Z3hfY3B1aW5mbyAqc2d4aW5mbykKIHsKICAgICB1MzIgZWF4LCBlYngsIGVjeCwgZWR4OwpkaWZm IC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9jcHVmZWF0dXJlLmggYi94ZW4vaW5jbHVkZS9h c20teDg2L2NwdWZlYXR1cmUuaAppbmRleCA5NzkzZjhjMWM1ODYuLmYxNWRlYjUzNTg3MSAxMDA2 NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9jcHVmZWF0dXJlLmgKKysrIGIveGVuL2luY2x1 ZGUvYXNtLXg4Ni9jcHVmZWF0dXJlLmgKQEAgLTk4LDYgKzk4LDkgQEAKICNkZWZpbmUgY3B1X2hh c19zbWFwICAgICAgICAgICAgYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX1NNQVApCiAjZGVmaW5l IGNwdV9oYXNfc2hhICAgICAgICAgICAgIGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9TSEEpCiAK Ky8qIENQVUlEIGxldmVsIDB4MDAwMDAwMDc6MC5lY3ggKi8KKyNkZWZpbmUgY3B1X2hhc19zZ3hf bGMgICAgICAgICAgYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX1NHWF9MQykKKwogLyogQ1BVSUQg bGV2ZWwgMHg4MDAwMDAwNy5lZHggKi8KICNkZWZpbmUgY3B1X2hhc19pdHNjICAgICAgICAgICAg Ym9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0lUU0MpCiAKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRl L2FzbS14ODYvbXNyLWluZGV4LmggYi94ZW4vaW5jbHVkZS9hc20teDg2L21zci1pbmRleC5oCmlu ZGV4IDYzZTExOTMxY2QwOS4uMDA0ZTBmYjI0OWQ1IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9h c20teDg2L21zci1pbmRleC5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbXNyLWluZGV4LmgK QEAgLTMwMCw2ICszMDAsMTEgQEAKICNkZWZpbmUgSUEzMl9GRUFUVVJFX0NPTlRST0xfTE1DRV9P TiAgICAgICAgICAgICAgICAgIDB4MTAwMDAwCiAjZGVmaW5lIElBMzJfRkVBVFVSRV9DT05UUk9M X1NHWF9MRV9XUiAgICAgICAgICAgICAgICAweDIwMDAwCiAKKyNkZWZpbmUgTVNSX0lBMzJfU0dY TEVQVUJLRVlIQVNIMCAgIDB4MDAwMDAwOGMKKyNkZWZpbmUgTVNSX0lBMzJfU0dYTEVQVUJLRVlI QVNIMSAgIDB4MDAwMDAwOGQKKyNkZWZpbmUgTVNSX0lBMzJfU0dYTEVQVUJLRVlIQVNIMiAgIDB4 MDAwMDAwOGUKKyNkZWZpbmUgTVNSX0lBMzJfU0dYTEVQVUJLRVlIQVNIMyAgIDB4MDAwMDAwOGYK KwogI2RlZmluZSBNU1JfSUEzMl9UU0NfQURKVVNUCQkweDAwMDAwMDNiCiAKICNkZWZpbmUgTVNS X0lBMzJfQVBJQ0JBU0UJCTB4MDAwMDAwMWIKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14 ODYvbXNyLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L21zci5oCmluZGV4IDc1MWZhMjVhMzY5NC4u ZTI1NWEyOGY3ZmVjIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L21zci5oCisrKyBi L3hlbi9pbmNsdWRlL2FzbS14ODYvbXNyLmgKQEAgLTIyMCw2ICsyMjAsMTEgQEAgc3RydWN0IG1z cl92Y3B1X3BvbGljeQogICAgICAgICBib29sIGF2YWlsYWJsZTsgLyogVGhpcyBNU1IgaXMgbm9u LWFyY2hpdGVjdHVyYWwgKi8KICAgICAgICAgYm9vbCBjcHVpZF9mYXVsdGluZzsKICAgICB9IG1p c2NfZmVhdHVyZXNfZW5hYmxlczsKKworICAgIHN0cnVjdCB7CisgICAgICAgIGJvb2wgbGV3cjsK KyAgICAgICAgdWludDY0X3QgaWEzMl9zZ3hsZXB1YmtleWhhc2hbNF07CisgICAgfSBzZ3g7CiB9 OwogCiB2b2lkIGluaXRfZ3Vlc3RfbXNyX3BvbGljeSh2b2lkKTsKZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL2FzbS14ODYvc2d4LmggYi94ZW4vaW5jbHVkZS9hc20teDg2L3NneC5oCmluZGV4IDg1 NWU3ZTYzODc0My4uOTdjYTVkZDViMWVmIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2 L3NneC5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvc2d4LmgKQEAgLTI0LDYgKzI0LDcgQEAK ICNpbmNsdWRlIDx4ZW4vdHlwZXMuaD4KICNpbmNsdWRlIDx4ZW4vaW5pdC5oPgogI2luY2x1ZGUg PGFzbS9wcm9jZXNzb3IuaD4KKyNpbmNsdWRlIDxhc20vbXNyLmg+CiAjaW5jbHVkZSA8cHVibGlj L2h2bS9wYXJhbXMuaD4gICAvKiBIVk1fUEFSQU1fU0dYICovCiAKICNkZWZpbmUgU0dYX0NQVUlE IDB4MTIKQEAgLTU5LDYgKzYwLDggQEAgdm9pZCBkZXRlY3Rfc2d4KHN0cnVjdCBzZ3hfY3B1aW5m byAqc2d4aW5mbyk7CiB2b2lkIGRpc2FibGVfc2d4KHZvaWQpOwogI2RlZmluZSBzZ3hfbGV3cigp IChib290X3NneF9jcHVkYXRhLmxld3IpCiAKK0RFQ0xBUkVfUEVSX0NQVSh1aW50NjRfdFs0XSwg Y3B1X2lhMzJfc2d4bGVwdWJrZXloYXNoKTsKKwogc3RydWN0IHBhZ2VfaW5mbyAqYWxsb2NfZXBj X3BhZ2Uodm9pZCk7CiB2b2lkIGZyZWVfZXBjX3BhZ2Uoc3RydWN0IHBhZ2VfaW5mbyAqZXBnKTsK IApAQCAtNzQsNCArNzcsMTAgQEAgaW50IGRvbWFpbl9wb3B1bGF0ZV9lcGMoc3RydWN0IGRvbWFp biAqZCwgdW5zaWduZWQgbG9uZyBlcGNfYmFzZV9wZm4sCiBpbnQgZG9tYWluX3Jlc2V0X2VwYyhz dHJ1Y3QgZG9tYWluICpkLCBib29sIGZyZWVfZXBjKTsKIGludCBkb21haW5fZGVzdHJveV9lcGMo c3RydWN0IGRvbWFpbiAqZCk7CiAKK3ZvaWQgc2d4X3NldF92Y3B1X3NneGxlcHVia2V5aGFzaChz dHJ1Y3QgdmNwdSAqdiwgaW50IGlkeCwgdWludDY0X3QgdmFsKTsKK3ZvaWQgc2d4X2N0eHRfc3dp dGNoX3RvKHN0cnVjdCB2Y3B1ICp2KTsKK3ZvaWQgc2d4X21zcl92Y3B1X2luaXQoc3RydWN0IHZj cHUgKnYsIHN0cnVjdCBtc3JfdmNwdV9wb2xpY3kgKnZwKTsKK2ludCBzZ3hfbXNyX3JlYWRfaW50 ZXJjZXB0KHN0cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBpbnQgbXNyLCB1NjQgKm1zcl9jb250ZW50 KTsKK2ludCBzZ3hfbXNyX3dyaXRlX2ludGVyY2VwdChzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQg aW50IG1zciwgdTY0IG1zcl9jb250ZW50KTsKKwogI2VuZGlmICAvKiBfX0FTTV9YODZfU0dYX0hf XyAqLwotLSAKMi4xNS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVj dC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1k ZXZlbA==