From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [v2 2/3] x86: add support for L2 CAT in hypervisor. Date: Thu, 22 Sep 2016 10:15:44 +0800 Message-ID: <1474510544-29571-1-git-send-email-yi.y.sun@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bmtYV-0007Cs-L9 for xen-devel@lists.xenproject.org; Thu, 22 Sep 2016 02:16:07 +0000 List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: wei.liu2@citrix.com, he.chen@linux.intel.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, Yi Sun , jbeulich@suse.com, chao.p.peng@linux.intel.com List-Id: xen-devel@lists.xenproject.org QWRkIEwyIENBVCAoQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5KSBmZWF0dXJlIHN1cHBvcnQg aW4KaHlwZXJ2aXNvcjoKLSBJbXBsZW1lbnQgJ3N0cnVjdCBmZWF0X29wcycgY2FsbGJhY2sgZnVu Y3Rpb25zIGZvciBMMiBDQVQKICBhbmQgaW5pdGlhbGl6ZSBMMiBDQVQgZmVhdHVyZSBhbmQgYWRk IGl0IGludG8gZmVhdHVyZSBsaXN0LgotIEFkZCBuZXcgc3lzY3RsIHRvIGdldCBMMiBDQVQgaW5m b3JtYXRpb24uCi0gQWRkIG5ldyBkb21jdGwgdG8gc2V0L2dldCBMMiBDQVQgQ0JNLgoKU2lnbmVk LW9mZi1ieTogSGUgQ2hlbiA8aGUuY2hlbkBsaW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6 IFlpIFN1biA8eWkueS5zdW5AbGludXguaW50ZWwuY29tPgoKLS0tCkNoYW5nZWQgc2luY2UgdjE6 CiAqIHBzci5jCiAgICAtIEZ1bmN0aW9uIGFuZCB2YXJpYWJsZXMgbmFtZXMgYXJlIGNoYW5nZWQg dG8gZXhwcmVzcyBhY2N1cmF0ZWx5LgogICAgLSBGaXggY29kZSBzdHlsZSBpc3N1ZXMuCiAgICAt IEZpeCBpbXByZWNpc2UgY29tbWVudHMuCiAgICAtIEFkZCBvbmUgY2FsbGJhY2sgZnVuY3Rpb24s IGdldF9jb3NfbnVtKCksIHRvIGZ1bGZpbGwgdGhlCiAgICAgIGFic3RyYWN0aW9uIHJlcXVpcmVt ZW50LgogICAgLSBSZXBsYWNlIGN1c3RvbSBsaXN0IG1hbmFnZW1lbnQgdG8gc3lzdGVtLgogICAg LSBVc2UgJ2NvbnN0JyB0byBtYWtlIGNvZGVzIG1vcmUgc2FmZS4KLS0tCiB4ZW4vYXJjaC94ODYv ZG9tY3RsLmMgICAgICAgICAgIHwgIDEzICsrKwogeGVuL2FyY2gveDg2L3Bzci5jICAgICAgICAg ICAgICB8IDIxNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4v YXJjaC94ODYvc3lzY3RsLmMgICAgICAgICAgIHwgIDEzICsrKwogeGVuL2luY2x1ZGUvYXNtLXg4 Ni9tc3ItaW5kZXguaCB8ICAgMSArCiB4ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oICAgICAgIHwg ICAyICsKIHhlbi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaCAgICAgfCAgIDIgKwogeGVuL2luY2x1 ZGUvcHVibGljL3N5c2N0bC5oICAgICB8ICAgNiArKwogNyBmaWxlcyBjaGFuZ2VkLCAyNTMgaW5z ZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21jdGwuYyBiL3hlbi9hcmNo L3g4Ni9kb21jdGwuYwppbmRleCBjNTNkODE5Li4yNGY4NWM3IDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYvZG9tY3RsLmMKKysrIGIveGVuL2FyY2gveDg2L2RvbWN0bC5jCkBAIC0xNDI0LDYgKzE0 MjQsMTkgQEAgbG9uZyBhcmNoX2RvX2RvbWN0bCgKICAgICAgICAgICAgIGNvcHliYWNrID0gMTsK ICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgWEVOX0RPTUNUTF9QU1JfQ0FUX09Q X1NFVF9MMl9DQk06CisgICAgICAgICAgICByZXQgPSBwc3Jfc2V0X3ZhbChkLCBkb21jdGwtPnUu cHNyX2NhdF9vcC50YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21jdGwt PnUucHNyX2NhdF9vcC5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFNSX01B U0tfVFlQRV9MMl9DQk0pOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBYRU5f RE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wyX0NCTToKKyAgICAgICAgICAgIHJldCA9IHBzcl9nZXRf dmFsKGQsIGRvbWN0bC0+dS5wc3JfY2F0X29wLnRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZkb21jdGwtPnUucHNyX2NhdF9vcC5kYXRhLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUFNSX01BU0tfVFlQRV9MMl9DQk0pOworICAgICAgICAgICAgY29weWJhY2sg PSAxOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg IHJldCA9IC1FT1BOT1RTVVBQOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYvcHNyLmMgYi94ZW4vYXJjaC94ODYvcHNyLmMKaW5kZXggOTllNGM3OC4uNTAwMGEz YyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3Bzci5jCisrKyBiL3hlbi9hcmNoL3g4Ni9wc3Iu YwpAQCAtMTM3LDYgKzEzNyw3IEBAIHN0cnVjdCBwc3JfY2F0X2x2bF9pbmZvIHsKIHN0cnVjdCBm ZWF0X2luZm8gewogICAgIHVuaW9uIHsKICAgICAgICAgc3RydWN0IHBzcl9jYXRfbHZsX2luZm8g bDNfaW5mbzsKKyAgICAgICAgc3RydWN0IHBzcl9jYXRfbHZsX2luZm8gbDJfaW5mbzsKICAgICB9 OwogfTsKIApAQCAtMTU4LDEyICsxNTksMTUgQEAgc3RydWN0IHBzcl9yZWYgewogICAgIHVuc2ln bmVkIGludCByZWY7CiB9OwogCisKICNkZWZpbmUgUFNSX1NPQ0tFVF9MM19DQVQgMAogI2RlZmlu ZSBQU1JfU09DS0VUX0wzX0NEUCAxCisjZGVmaW5lIFBTUl9TT0NLRVRfTDJfQ0FUIDIKIAogc3Ry dWN0IHBzcl9zb2NrZXRfaW5mbyB7CiAgICAgLyoKICAgICAgKiBiaXQgMX4wOiBbMDFdLT5MMyBD QVQtb25seSwgWzEwXS0+TDMgQ0RQCisgICAgICogYml0IDI6ICAgTDIgQ0FUCiAgICAgICovCiAg ICAgdW5zaWduZWQgaW50IGZlYXR1cmVzOwogICAgIHVuc2lnbmVkIGludCBucl9mZWF0OwpAQCAt MTkwLDYgKzE5NCw3IEBAIHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgcHNyX2Fzc29jLCBw c3JfYXNzb2MpOwogc3RhdGljIHN0cnVjdCBwc3JfcmVmICp0ZW1wX2Nvc19yZWY7CiAvKiBFdmVy eSBmZWF0dXJlIGhhcyBpdHMgb3duIG9iamVjdC4gKi8KIHN0YXRpYyBzdHJ1Y3QgZmVhdF9saXN0 ICpmZWF0X2wzOworc3RhdGljIHN0cnVjdCBmZWF0X2xpc3QgKmZlYXRfbDI7CiAKIC8qIENvbW1v biBmdW5jdGlvbnMgZm9yIHN1cHBvcnRpbmcgZmVhdHVyZSBjYWxsYmFjayBmdW5jdGlvbnMuICov CiBzdGF0aWMgdm9pZCBmcmVlX2ZlYXR1cmUoc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbykK QEAgLTIxMiw2ICsyMTcsMTIgQEAgc3RhdGljIHZvaWQgZnJlZV9mZWF0dXJlKHN0cnVjdCBwc3Jf c29ja2V0X2luZm8gKmluZm8pCiAgICAgICAgIHhmcmVlKGZlYXRfbDMpOwogICAgICAgICBmZWF0 X2wzID0gTlVMTDsKICAgICB9CisKKyAgICBpZiAoIGZlYXRfbDIgKQorICAgIHsKKyAgICAgICAg eGZyZWUoZmVhdF9sMik7CisgICAgICAgIGZlYXRfbDIgPSBOVUxMOworICAgIH0KIH0KIAogc3Rh dGljIGJvb2wgcHNyX2NoZWNrX2NibSh1bnNpZ25lZCBpbnQgY2JtX2xlbiwgdWludDY0X3QgY2Jt KQpAQCAtMjQxLDYgKzI1MiwxOTUgQEAgc3RhdGljIGJvb2wgcHNyX2NoZWNrX2NibSh1bnNpZ25l ZCBpbnQgY2JtX2xlbiwgdWludDY0X3QgY2JtKQogICogRmVhdHVyZXMgc3BlY2lmaWMgaW1wbGVt ZW50YXRpb25zLgogICovCiAKKy8qIEwyIENBVCBjYWxsYmFjayBmdW5jdGlvbnMgaW1wbGVtZW50 YXRpb24uICovCitzdGF0aWMgdm9pZCBsMl9jYXRfaW5pdF9mZWF0dXJlKHVuc2lnbmVkIGludCBl YXgsIHVuc2lnbmVkIGludCBlYngsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCBlY3gsIHVuc2lnbmVkIGludCBlZHgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBmZWF0X2xpc3QgKmZlYXQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8pCit7CisgICAgc3RydWN0IHBz cl9jYXRfbHZsX2luZm8gbDJfY2F0OworICAgIHVuc2lnbmVkIGludCBzb2NrZXQ7CisKKyAgICAv KiBObyB2YWxpZCB2YWx1ZSBzbyBkbyBub3QgZW5hYmxlIGZlYXR1cmUuICovCisgICAgaWYgKCAw ID09IGVheCB8fCAwID09IGVkeCApCisgICAgICAgIHJldHVybjsKKworICAgIGwyX2NhdC5jYm1f bGVuID0gKGVheCAmIDB4MWYpICsgMTsKKyAgICBsMl9jYXQuY29zX21heCA9IG1pbihvcHRfY29z X21heCwgZWR4ICYgMHhmZmZmKTsKKworICAgIC8qIGNvcz0wIGlzIHJlc2VydmVkIGFzIGRlZmF1 bHQgY2JtKGFsbCBvbmVzKS4gKi8KKyAgICBmZWF0LT5jb3NfcmVnX3ZhbFswXSA9ICgxdWxsIDw8 IGwyX2NhdC5jYm1fbGVuKSAtIDE7CisKKyAgICBmZWF0LT5mZWF0dXJlID0gUFNSX1NPQ0tFVF9M Ml9DQVQ7CisgICAgX19zZXRfYml0KFBTUl9TT0NLRVRfTDJfQ0FULCAmaW5mby0+ZmVhdHVyZXMp OworCisgICAgZmVhdC0+aW5mby5sMl9pbmZvID0gbDJfY2F0OworCisgICAgaW5mby0+bnJfZmVh dCsrOworCisgICAgLyogQWRkIHRoaXMgZmVhdHVyZSBpbnRvIGxpc3QuICovCisgICAgbGlzdF9h ZGRfdGFpbCgmZmVhdC0+bGlzdCwgJmluZm8tPmZlYXRfbGlzdCk7CisKKyAgICBzb2NrZXQgPSBj cHVfdG9fc29ja2V0KHNtcF9wcm9jZXNzb3JfaWQoKSk7CisgICAgcHJpbnRrKFhFTkxPR19JTkZP ICJMMiBDQVQ6IGVuYWJsZWQgb24gc29ja2V0ICV1LCBjb3NfbWF4OiV1LCBjYm1fbGVuOiV1Llxu IiwKKyAgICAgICAgICAgc29ja2V0LCBmZWF0LT5pbmZvLmwyX2luZm8uY29zX21heCwgZmVhdC0+ aW5mby5sMl9pbmZvLmNibV9sZW4pOworfQorCitzdGF0aWMgaW50IGwyX2NhdF9jb21wYXJlX3Zh bChjb25zdCB1aW50NjRfdCB2YWxbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCBmZWF0X2xpc3QgKmZlYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgY29zLCBib29sICpmb3VuZCkKK3sKKyAgICB1aW50NjRfdCBsMl9kZWZf Y2JtOworCisgICAgbDJfZGVmX2NibSA9ICgxdWxsIDw8IGZlYXQtPmluZm8ubDJfaW5mby5jYm1f bGVuKSAtIDE7CisKKyAgICAvKiBMMiBDQVQgKi8KKyAgICBpZiAoIGNvcyA+IGZlYXQtPmluZm8u bDJfaW5mby5jb3NfbWF4ICkKKyAgICB7CisgICAgICAgIGlmICggdmFsWzBdICE9IGwyX2RlZl9j Ym0gKQorICAgICAgICB7CisgICAgICAgICAgICAqZm91bmQgPSBmYWxzZTsKKyAgICAgICAgICAg IHJldHVybiAtRU5PRU5UOworICAgICAgICB9CisgICAgICAgICpmb3VuZCA9IHRydWU7CisgICAg fQorICAgIGVsc2UKKyAgICAgICAgKmZvdW5kID0gKHZhbFswXSA9PSBmZWF0LT5jb3NfcmVnX3Zh bFtjb3NdKTsKKworICAgIC8qIEwyIENBVCBvY2N1cGllcyBvbmUgQ09TLiAqLworICAgIHJldHVy biAxOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50IGwyX2NhdF9nZXRfY29zX21heF9mcm9tX3R5 cGUoY29uc3Qgc3RydWN0IGZlYXRfbGlzdCAqZmVhdCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHBzcl92YWxfdHlwZSB0eXBlKQoreworICAg IGlmICggdHlwZSAhPSBQU1JfTUFTS19UWVBFX0wyX0NCTSApCisgICAgICAgIHJldHVybiAwOwor CisgICAgcmV0dXJuIGZlYXQtPmluZm8ubDJfaW5mby5jb3NfbWF4OworfQorCitzdGF0aWMgdW5z aWduZWQgaW50IGwyX2NhdF9leGNlZWRzX2Nvc19tYXgoY29uc3QgdWludDY0X3QgdmFsW10sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGZl YXRfbGlzdCAqZmVhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgY29zKQoreworICAgIHVpbnQ2NF90IGwyX2RlZl9jYm07CisKKyAgICBs Ml9kZWZfY2JtID0gKDF1bGwgPDwgZmVhdC0+aW5mby5sMl9pbmZvLmNibV9sZW4pIC0gMTsKKwor ICAgIC8qIEwyIENBVCAqLworICAgIGlmICggY29zID4gZmVhdC0+aW5mby5sM19pbmZvLmNvc19t YXggJiYKKyAgICAgICAgIHZhbFswXSAhPSBsMl9kZWZfY2JtICkKKyAgICAgICAgICAgIC8qCisg ICAgICAgICAgICAgKiBFeGNlZWQgY29zX21heCBhbmQgdmFsdWUgdG8gc2V0IGlzIG5vdCBkZWZh dWx0LAorICAgICAgICAgICAgICogcmV0dXJuIGVycm9yLgorICAgICAgICAgICAgICovCisgICAg ICAgICAgICByZXR1cm4gMDsKKworICAgIC8qIEwyIENBVCBvY2N1cGllcyBvbmUgQ09TLiAqLwor ICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50IGwyX2NhdF93cml0ZV9tc3IodW5zaWduZWQg aW50IGNvcywgY29uc3QgdWludDY0X3QgdmFsW10sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGZlYXRfbGlzdCAqZmVhdCkKK3sKKyAgICAvKiBMMiBDQVQgKi8KKyAgICBpZiAo IGNvcyA+IGZlYXQtPmluZm8ubDJfaW5mby5jb3NfbWF4ICkKKyAgICAgICAgcmV0dXJuIDE7CisK KyAgICBmZWF0LT5jb3NfcmVnX3ZhbFtjb3NdID0gdmFsWzBdOworICAgIHdybXNybChNU1JfSUEz Ml9QU1JfTDJfTUFTSyhjb3MpLCB2YWxbMF0pOworCisgICAgLyogTDIgQ0FUIG9jY3VwaWVzIG9u ZSBDT1MuICovCisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgbDJfY2F0 X2dldF9jb3NfbnVtKGNvbnN0IHN0cnVjdCBmZWF0X2xpc3QgKmZlYXQpCit7CisgICAgLyogTDIg Q0FUIG9jY3VwaWVzIG9uZSBDT1MuICovCisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQg bDJfY2F0X2dldF9vbGRfdmFsKHVpbnQ2NF90IHZhbFtdLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3Qgc3RydWN0IGZlYXRfbGlzdCAqZmVhdCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBvbGRfY29zLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZW51bSBwc3JfdmFsX3R5cGUgdHlwZSkKK3sKKyAgICBpZiAoIG9sZF9jb3MgPiBm ZWF0LT5pbmZvLmwyX2luZm8uY29zX21heCApCisgICAgICAgIC8qIFVzZSBkZWZhdWx0IHZhbHVl LiAqLworICAgICAgICBvbGRfY29zID0gMDsKKworICAgIHZhbFswXSA9ICBmZWF0LT5jb3NfcmVn X3ZhbFtvbGRfY29zXTsKKworICAgIC8qIEwyIENBVCBvY2N1cGllcyBvbmUgQ09TLiAqLworICAg IHJldHVybiAxOworfQorCitzdGF0aWMgaW50IGwyX2NhdF9zZXRfbmV3X3ZhbCh1aW50NjRfdCB2 YWxbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBmZWF0X2xp c3QgKmZlYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgb2xk X2NvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX3ZhbF90eXBlIHR5 cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBtKQoreworICAgIGlm ICggdHlwZSA9PSBQU1JfTUFTS19UWVBFX0wyX0NCTSApCisgICAgeworICAgICAgICBpZiAoICFw c3JfY2hlY2tfY2JtKGZlYXQtPmluZm8ubDJfaW5mby5jYm1fbGVuLCBtKSApCisgICAgICAgICAg ICByZXR1cm4gLUVJTlZBTDsKKworICAgICAgICB2YWxbMF0gPSBtOworICAgIH0KKworICAgIC8q IEwyIENBVCBvY2N1cGllcyBvbmUgQ09TLiAqLworICAgIHJldHVybiAxOworfQorCitzdGF0aWMg aW50IGwyX2NhdF9nZXRfdmFsKGNvbnN0IHN0cnVjdCBmZWF0X2xpc3QgKmZlYXQsIHVuc2lnbmVk IGludCBjb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX3ZhbF90eXBlIHR5 cGUsIHVpbnQ2NF90ICp2YWwpCit7CisgICAgaWYgKCB0eXBlICE9IFBTUl9NQVNLX1RZUEVfTDJf Q0JNICkKKyAgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCBjb3MgPiBmZWF0LT5pbmZvLmwz X2luZm8uY29zX21heCApCisgICAgICAgIGNvcyA9IDA7CisKKyAgICAvKiBMMiBDQVQgKi8KKyAg ICAqdmFsID0gIGZlYXQtPmNvc19yZWdfdmFsW2Nvc107CisKKyAgICByZXR1cm4gMTsKK30KKwor c3RhdGljIGludCBsMl9jYXRfZ2V0X2ZlYXRfaW5mbyhjb25zdCBzdHJ1Y3QgZmVhdF9saXN0ICpm ZWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHBzcl92YWxfdHlwZSB0 eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBkYXRbXSwgdWlu dDMyX3QgYXJyYXlfbGVuKQoreworICAgIGlmICggdHlwZSAhPSBQU1JfTUFTS19UWVBFX0wyX0NC TSB8fCAhZGF0IHx8IDIgPiBhcnJheV9sZW4pCisgICAgICAgIHJldHVybiAwOworCisgICAgZGF0 WzBdID0gZmVhdC0+aW5mby5sMl9pbmZvLmNibV9sZW47CisgICAgZGF0WzFdID0gZmVhdC0+aW5m by5sMl9pbmZvLmNvc19tYXg7CisKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIHVuc2lnbmVk IGludCBsMl9jYXRfZ2V0X21heF9jb3NfbWF4KGNvbnN0IHN0cnVjdCBmZWF0X2xpc3QgKmZlYXQp Cit7CisgICAgcmV0dXJuIGZlYXQtPmluZm8ubDJfaW5mby5jb3NfbWF4OworfQorCitzdHJ1Y3Qg ZmVhdF9vcHMgbDJfY2F0X29wcyA9IHsKKyAgICAuaW5pdF9mZWF0dXJlID0gbDJfY2F0X2luaXRf ZmVhdHVyZSwKKyAgICAuZ2V0X2Nvc19udW0gPSBsMl9jYXRfZ2V0X2Nvc19udW0sCisgICAgLmdl dF9vbGRfdmFsID0gbDJfY2F0X2dldF9vbGRfdmFsLAorICAgIC5zZXRfbmV3X3ZhbCA9IGwyX2Nh dF9zZXRfbmV3X3ZhbCwKKyAgICAuY29tcGFyZV92YWwgPSBsMl9jYXRfY29tcGFyZV92YWwsCisg ICAgLmdldF9jb3NfbWF4X2Zyb21fdHlwZSA9IGwyX2NhdF9nZXRfY29zX21heF9mcm9tX3R5cGUs CisgICAgLmV4Y2VlZHNfY29zX21heCA9IGwyX2NhdF9leGNlZWRzX2Nvc19tYXgsCisgICAgLndy aXRlX21zciA9IGwyX2NhdF93cml0ZV9tc3IsCisgICAgLmdldF92YWwgPSBsMl9jYXRfZ2V0X3Zh bCwKKyAgICAuZ2V0X2ZlYXRfaW5mbyA9IGwyX2NhdF9nZXRfZmVhdF9pbmZvLAorICAgIC5nZXRf bWF4X2Nvc19tYXggPSBsMl9jYXRfZ2V0X21heF9jb3NfbWF4LAorfTsKKwogLyogTDMgQ0FUL0NE UCBjYWxsYmFjayBmdW5jdGlvbnMgaW1wbGVtZW50YXRpb24uICovCiBzdGF0aWMgdm9pZCBsM19j YXRfaW5pdF9mZWF0dXJlKHVuc2lnbmVkIGludCBlYXgsIHVuc2lnbmVkIGludCBlYngsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBlY3gsIHVuc2lnbmVkIGlu dCBlZHgsCkBAIC0xMjIwLDYgKzE0MjAsMTAgQEAgc3RhdGljIGludCBjcHVfcHJlcGFyZV93b3Jr KHVuc2lnbmVkIGludCBjcHUpCiAgICAgICAgICAoZmVhdF9sMyA9IHh6YWxsb2Moc3RydWN0IGZl YXRfbGlzdCkpID09IE5VTEwgKQogICAgICAgICByZXR1cm4gLUVOT01FTTsKIAorICAgIGlmICgg ZmVhdF9sMiA9PSBOVUxMICYmCisgICAgICAgICAoZmVhdF9sMiA9IHh6YWxsb2Moc3RydWN0IGZl YXRfbGlzdCkpID09IE5VTEwgKQorICAgICAgICByZXR1cm4gLUVOT01FTTsKKwogICAgIHJldHVy biAwOwogfQogCkBAIC0xMjU1LDYgKzE0NTksMTggQEAgc3RhdGljIHZvaWQgY3B1X2luaXRfd29y ayh2b2lkKQogICAgICAgICBmZWF0X3RtcC0+b3BzID0gbDNfY2F0X29wczsKICAgICAgICAgZmVh dF90bXAtPm9wcy5pbml0X2ZlYXR1cmUoZWF4LCBlYngsIGVjeCwgZWR4LCBmZWF0X3RtcCwgaW5m byk7CiAgICAgfQorCisgICAgY3B1aWRfY291bnQoUFNSX0NQVUlEX0xFVkVMX0NBVCwgMCwgJmVh eCwgJmVieCwgJmVjeCwgJmVkeCk7CisgICAgaWYgKCBlYnggJiBQU1JfUkVTT1VSQ0VfVFlQRV9M MiApCisgICAgeworICAgICAgICBmZWF0X3RtcCA9IGZlYXRfbDI7CisgICAgICAgIGZlYXRfbDIg PSBOVUxMOworCisgICAgICAgIC8qIEluaXRpYWxpemUgTDIgQ0FUIGFjY29yZGluZyB0byBDUFVJ RC4gKi8KKyAgICAgICAgY3B1aWRfY291bnQoUFNSX0NQVUlEX0xFVkVMX0NBVCwgMiwgJmVheCwg JmVieCwgJmVjeCwgJmVkeCk7CisgICAgICAgIGZlYXRfdG1wLT5vcHMgPSBsMl9jYXRfb3BzOwor ICAgICAgICBmZWF0X3RtcC0+b3BzLmluaXRfZmVhdHVyZShlYXgsIGVieCwgZWN4LCBlZHgsIGZl YXRfdG1wLCBpbmZvKTsKKyAgICB9CiB9CiAKIHN0YXRpYyB2b2lkIGNwdV9maW5pX3dvcmsodW5z aWduZWQgaW50IGNwdSkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9zeXNjdGwuYyBiL3hlbi9h cmNoL3g4Ni9zeXNjdGwuYwppbmRleCA4ZTE3YTlhLi42YmJlOTk0IDEwMDY0NAotLS0gYS94ZW4v YXJjaC94ODYvc3lzY3RsLmMKKysrIGIveGVuL2FyY2gveDg2L3N5c2N0bC5jCkBAIC0xODksNiAr MTg5LDE5IEBAIGxvbmcgYXJjaF9kb19zeXNjdGwoCiAgICAgICAgICAgICAgICAgcmV0ID0gLUVG QVVMVDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2UgWEVOX1NZ U0NUTF9QU1JfQ0FUX2dldF9sMl9pbmZvOgorICAgICAgICB7CisgICAgICAgICAgICB1aW50MzJf dCBkYXRbMl07CisgICAgICAgICAgICByZXQgPSBwc3JfZ2V0X2luZm8oc3lzY3RsLT51LnBzcl9j YXRfb3AudGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTUl9NQVNLX1RZ UEVfTDJfQ0JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdCwgMik7CisgICAg ICAgICAgICBzeXNjdGwtPnUucHNyX2NhdF9vcC51LmwyX2luZm8uY2JtX2xlbiA9IGRhdFswXTsK KyAgICAgICAgICAgIHN5c2N0bC0+dS5wc3JfY2F0X29wLnUubDJfaW5mby5jb3NfbWF4ID0gZGF0 WzFdOworCisgICAgICAgICAgICBpZiAoICFyZXQgJiYgX19jb3B5X2ZpZWxkX3RvX2d1ZXN0KHVf c3lzY3RsLCBzeXNjdGwsIHUucHNyX2NhdF9vcCkgKQorICAgICAgICAgICAgICAgIHJldCA9IC1F RkFVTFQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBkZWZhdWx0Ogog ICAgICAgICAgICAgcmV0ID0gLUVPUE5PVFNVUFA7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbXNyLWluZGV4LmggYi94ZW4vaW5jbHVkZS9hc20t eDg2L21zci1pbmRleC5oCmluZGV4IGRlYjgyYTcuLjk5MjAyZjMgMTAwNjQ0Ci0tLSBhL3hlbi9p bmNsdWRlL2FzbS14ODYvbXNyLWluZGV4LmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9tc3It aW5kZXguaApAQCAtMzQyLDYgKzM0Miw3IEBACiAjZGVmaW5lIE1TUl9JQTMyX1BTUl9MM19NQVNL KG4pCSgweDAwMDAwYzkwICsgKG4pKQogI2RlZmluZSBNU1JfSUEzMl9QU1JfTDNfTUFTS19DT0RF KG4pCSgweDAwMDAwYzkwICsgKG4pICogMiArIDEpCiAjZGVmaW5lIE1TUl9JQTMyX1BTUl9MM19N QVNLX0RBVEEobikJKDB4MDAwMDBjOTAgKyAobikgKiAyKQorI2RlZmluZSBNU1JfSUEzMl9QU1Jf TDJfTUFTSyhuKQkJKDB4MDAwMDBkMTAgKyAobikpCiAKIC8qIEludGVsIE1vZGVsIDYgKi8KICNk ZWZpbmUgTVNSX1A2X1BFUkZDVFIobikJCSgweDAwMDAwMGMxICsgKG4pKQpkaWZmIC0tZ2l0IGEv eGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHNyLmgKaW5k ZXggZWY0NmQxMi4uMTAxYTc2YSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3Iu aAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oCkBAIC0yMyw2ICsyMyw3IEBACiAKIC8q IFJlc291cmNlIFR5cGUgRW51bWVyYXRpb24gKi8KICNkZWZpbmUgUFNSX1JFU09VUkNFX1RZUEVf TDMgICAgICAgICAgICAweDIKKyNkZWZpbmUgUFNSX1JFU09VUkNFX1RZUEVfTDIgICAgICAgICAg ICAweDQKIAogLyogTDMgTW9uaXRvcmluZyBGZWF0dXJlcyAqLwogI2RlZmluZSBQU1JfQ01UX0wz X09DQ1VQQU5DWSAgICAgICAgICAgMHgxCkBAIC01MCw2ICs1MSw3IEBAIGVudW0gcHNyX3ZhbF90 eXBlIHsKICAgICBQU1JfTUFTS19UWVBFX0wzX0NCTSwKICAgICBQU1JfTUFTS19UWVBFX0wzX0NP REUsCiAgICAgUFNSX01BU0tfVFlQRV9MM19EQVRBLAorICAgIFBTUl9NQVNLX1RZUEVfTDJfQ0JN LAogfTsKIAogZXh0ZXJuIHN0cnVjdCBwc3JfY210ICpwc3JfY210OwpkaWZmIC0tZ2l0IGEveGVu L2luY2x1ZGUvcHVibGljL2RvbWN0bC5oIGIveGVuL2luY2x1ZGUvcHVibGljL2RvbWN0bC5oCmlu ZGV4IGRkZDNkZTQuLjhhMzAyOTkgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9kb21j dGwuaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvZG9tY3RsLmgKQEAgLTExMzYsNiArMTEzNiw4 IEBAIHN0cnVjdCB4ZW5fZG9tY3RsX3Bzcl9jYXRfb3AgewogI2RlZmluZSBYRU5fRE9NQ1RMX1BT Ul9DQVRfT1BfU0VUX0wzX0RBVEEgICAgMwogI2RlZmluZSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1Bf R0VUX0wzX0NPREUgICAgNAogI2RlZmluZSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wzX0RB VEEgICAgNQorI2RlZmluZSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfU0VUX0wyX0NCTSAgICAgNgor I2RlZmluZSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wyX0NCTSAgICAgNwogICAgIHVpbnQz Ml90IGNtZDsgICAgICAgLyogSU46IFhFTl9ET01DVExfUFNSX0NBVF9PUF8qICovCiAgICAgdWlu dDMyX3QgdGFyZ2V0OyAgICAvKiBJTiAqLwogICAgIHVpbnQ2NF90IGRhdGE7ICAgICAgLyogSU4v T1VUICovCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmggYi94ZW4vaW5j bHVkZS9wdWJsaWMvc3lzY3RsLmgKaW5kZXggODE5N2MxNC4uNTBmZjYxYyAxMDA2NDQKLS0tIGEv eGVuL2luY2x1ZGUvcHVibGljL3N5c2N0bC5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNj dGwuaApAQCAtNzM0LDYgKzczNCw3IEBAIHR5cGVkZWYgc3RydWN0IHhlbl9zeXNjdGxfcGNpdG9w b2luZm8geGVuX3N5c2N0bF9wY2l0b3BvaW5mb190OwogREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUo eGVuX3N5c2N0bF9wY2l0b3BvaW5mb190KTsKIAogI2RlZmluZSBYRU5fU1lTQ1RMX1BTUl9DQVRf Z2V0X2wzX2luZm8gICAgICAgICAgICAgICAwCisjZGVmaW5lIFhFTl9TWVNDVExfUFNSX0NBVF9n ZXRfbDJfaW5mbyAgICAgICAgICAgICAgIDEKIHN0cnVjdCB4ZW5fc3lzY3RsX3Bzcl9jYXRfb3Ag ewogICAgIHVpbnQzMl90IGNtZDsgICAgICAgLyogSU46IFhFTl9TWVNDVExfUFNSX0NBVF8qICov CiAgICAgdWludDMyX3QgdGFyZ2V0OyAgICAvKiBJTiAqLwpAQCAtNzQ0LDYgKzc0NSwxMSBAQCBz dHJ1Y3QgeGVuX3N5c2N0bF9wc3JfY2F0X29wIHsKICNkZWZpbmUgWEVOX1NZU0NUTF9QU1JfQ0FU X0wzX0NEUCAgICAgICAoMXUgPDwgMCkKICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzOyAgICAg LyogT1VUOiBDQVQgZmxhZ3MgKi8KICAgICAgICAgfSBsM19pbmZvOworCisgICAgICAgIHN0cnVj dCB7CisgICAgICAgICAgICB1aW50MzJfdCBjYm1fbGVuOyAgIC8qIE9VVDogQ0JNIGxlbmd0aCAq LworICAgICAgICAgICAgdWludDMyX3QgY29zX21heDsgICAvKiBPVVQ6IE1heGltdW0gQ09TICov CisgICAgICAgIH0gbDJfaW5mbzsKICAgICB9IHU7CiB9OwogdHlwZWRlZiBzdHJ1Y3QgeGVuX3N5 c2N0bF9wc3JfY2F0X29wIHhlbl9zeXNjdGxfcHNyX2NhdF9vcF90OwotLSAKMi43LjQKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFp bGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94 ZW4tZGV2ZWwK