From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH 2/3] x86: add support for L2 CAT in hypervisor. Date: Thu, 25 Aug 2016 13:22:32 +0800 Message-ID: <1472102552-7196-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 1bcnAL-0007kg-Hh for xen-devel@lists.xenproject.org; Thu, 25 Aug 2016 05:25:25 +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.y.sun@linux.intel.com, jbeulich@suse.com, chao.p.peng@linux.intel.com List-Id: xen-devel@lists.xenproject.org QWRkIEwyIENBVCAoQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5KSBmZWF0dXJlIHN1cHBvcnQg aW4KaHlwZXJ2aXNvcjoKLSBJbXBsZW1lbnQgJ3N0cnVjdCBmZWF0X29wcycgY2FsbGJhY2sgZnVu Y3Rpb25zIGZvciBMMiBDQVQKICBhbmQgaW5pdGlhbGl6ZSBMMiBDQVQgZmVhdHVyZSBhbmQgYWRk IGl0IGludG8gZmVhdHVyZSBsaXN0LgotIEFkZCBuZXcgc3lzY3RsIHRvIGdldCBMMiBDQVQgaW5m b3JtYXRpb24uCi0gQWRkIG5ldyBkb21jdGwgdG8gc2V0L2dldCBMMiBDQVQgQ0JNLgoKU2lnbmVk LW9mZi1ieTogSGUgQ2hlbiA8aGUuY2hlbkBsaW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6 IFlpIFN1biA8eWkueS5zdW5AbGludXguaW50ZWwuY29tPgotLS0KIHhlbi9hcmNoL3g4Ni9kb21j dGwuYyAgICAgICAgICAgfCAgMTMgKysrCiB4ZW4vYXJjaC94ODYvcHNyLmMgICAgICAgICAgICAg IHwgMjI2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIHhlbi9hcmNo L3g4Ni9zeXNjdGwuYyAgICAgICAgICAgfCAgMTYgKystCiB4ZW4vaW5jbHVkZS9hc20teDg2L21z ci1pbmRleC5oIHwgICAxICsKIHhlbi9pbmNsdWRlL2FzbS14ODYvcHNyLmggICAgICAgfCAgIDIg KwogeGVuL2luY2x1ZGUvcHVibGljL2RvbWN0bC5oICAgICB8ICAgMiArCiB4ZW4vaW5jbHVkZS9w dWJsaWMvc3lzY3RsLmggICAgIHwgICAzICstCiA3IGZpbGVzIGNoYW5nZWQsIDI1OCBpbnNlcnRp b25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21jdGwu YyBiL3hlbi9hcmNoL3g4Ni9kb21jdGwuYwppbmRleCBhNTFlZDJjLi42MDRkMjAyIDEwMDY0NAot LS0gYS94ZW4vYXJjaC94ODYvZG9tY3RsLmMKKysrIGIveGVuL2FyY2gveDg2L2RvbWN0bC5jCkBA IC0xMzk2LDYgKzEzOTYsMTkgQEAgbG9uZyBhcmNoX2RvX2RvbWN0bCgKICAgICAgICAgICAgIGNv cHliYWNrID0gMTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgWEVOX0RPTUNU TF9QU1JfQ0FUX09QX1NFVF9MMl9DQk06CisgICAgICAgICAgICByZXQgPSBwc3Jfc2V0X3ZhbChk LCBkb21jdGwtPnUucHNyX2NhdF9vcC50YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkb21jdGwtPnUucHNyX2NhdF9vcC5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUFNSX01BU0tfVFlQRV9MMl9DQk0pOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg ICAgY2FzZSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wyX0NCTToKKyAgICAgICAgICAgIHJl dCA9IHBzcl9nZXRfdmFsKGQsIGRvbWN0bC0+dS5wc3JfY2F0X29wLnRhcmdldCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZkb21jdGwtPnUucHNyX2NhdF9vcC5kYXRhLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUFNSX01BU0tfVFlQRV9MMl9DQk0pOworICAgICAgICAg ICAgY29weWJhY2sgPSAxOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgZGVmYXVsdDoK ICAgICAgICAgICAgIHJldCA9IC1FT1BOT1RTVVBQOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvcHNyLmMgYi94ZW4vYXJjaC94ODYvcHNyLmMKaW5kZXggYTc3 YjU1YS4uYTIzZDNjOSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3Bzci5jCisrKyBiL3hlbi9h cmNoL3g4Ni9wc3IuYwpAQCAtMTIzLDYgKzEyMyw3IEBAIHN0cnVjdCBwc3JfcmVmIHsKIAogI2Rl ZmluZSBQU1JfU09DS0VUX0wzX0NBVCAwCiAjZGVmaW5lIFBTUl9TT0NLRVRfTDNfQ0RQIDEKKyNk ZWZpbmUgUFNSX1NPQ0tFVF9MMl9DQVQgMgogCiBzdHJ1Y3QgcHNyX3NvY2tldF9hbGxvY19pbmZv IHsKICAgICAvKgpAQCAtMTUzLDYgKzE1NCw3IEBAIHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1 Y3QgcHNyX2Fzc29jLCBwc3JfYXNzb2MpOwogc3RhdGljIHN0cnVjdCBwc3JfcmVmICp0ZW1wX2Nv c19yZWY7CiAvKiBFdmVyeSBmZWF0dXJlIGhhcyBpdHMgb3duIG9iamVjdC4gKi8KIHN0cnVjdCBm ZWF0X2xpc3QgKnBMM0NBVDsKK3N0cnVjdCBmZWF0X2xpc3QgKnBMMkNBVDsKIAogLyogQ29tbW9u IGZ1bmN0aW9ucyBmb3Igc3VwcG9ydGluZyBmZWF0dXJlIGNhbGxiYWNrIGZ1bmN0aW9ucy4gKi8K IHN0YXRpYyB2b2lkIGFkZF9mZWF0dXJlKHN0cnVjdCBmZWF0X2xpc3QgKnBIZWFkLCBzdHJ1Y3Qg ZmVhdF9saXN0ICpwVG1wKQpAQCAtMjE1LDEyICsyMTcsMjE1IEBAIHN0YXRpYyBib29sX3QgcHNy X2NoZWNrX2NibSh1bnNpZ25lZCBpbnQgY2JtX2xlbiwgdWludDY0X3QgY2JtKQogICogRmVhdHVy ZXMgc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zLgogICovCiAKLS8qIENBVC9DRFAgZGF0YSBzdHJ1 Y3R1cmUgYW5kIGNhbGxiYWNrIGZ1bmN0aW9ucyBpbXBsZW1lbnRhdGlvbi4gKi8KKy8qIENBVC9D RFAgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbi4gKi8KIHN0cnVjdCBwc3JfY2F0X2x2bF9pbmZv IHsKICAgICB1bnNpZ25lZCBpbnQgY2JtX2xlbjsKICAgICB1bnNpZ25lZCBpbnQgY29zX21heDsK IH07CiAKKy8qIEwyIENBVCBjYWxsYmFjayBmdW5jdGlvbnMgaW1wbGVtZW50YXRpb24uICovCitz dGF0aWMgdm9pZCBsMl9jYXRfaW5pdF9mZWF0dXJlKHVuc2lnbmVkIGludCBlYXgsIHVuc2lnbmVk IGludCBlYngsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBl Y3gsIHVuc2lnbmVkIGludCBlZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBmZWF0X2xpc3QgKnBGZWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgcHNyX3NvY2tldF9hbGxvY19pbmZvICppbmZvKQoreworICAgIHN0cnVjdCBwc3JfY2F0 X2x2bF9pbmZvIGwyX2NhdDsKKyAgICB1bnNpZ25lZCBpbnQgc29ja2V0OworCisgICAgaWYgKCBN QVhfRkVBVF9JTkZPX1NJWkUgPCBzaXplb2Yoc3RydWN0IHBzcl9jYXRfbHZsX2luZm8pICkKKyAg ICAgICAgcmV0dXJuOworCisgICAgLyogTm8gdmFsaWQgdmFsdWUgc28gZG8gbm90IGVuYWJsZSBm ZWF0dXJlLiAqLworICAgIGlmICggMCA9PSBlYXggfHwgMCA9PSBlZHggKQorICAgICAgICByZXR1 cm47CisKKyAgICBsMl9jYXQuY2JtX2xlbiA9IChlYXggJiAweDFmKSArIDE7CisgICAgbDJfY2F0 LmNvc19tYXggPSBtaW4ob3B0X2Nvc19tYXgsIGVkeCAmIDB4ZmZmZik7CisKKyAgICAvKiBjb3M9 MCBpcyByZXNlcnZlZCBhcyBkZWZhdWx0IGNibShhbGwgb25lcykuICovCisgICAgcEZlYXQtPmNv c19yZWdfdmFsWzBdID0gKDF1bGwgPDwgbDJfY2F0LmNibV9sZW4pIC0gMTsKKworICAgIHBGZWF0 LT5mZWF0dXJlID0gUFNSX1NPQ0tFVF9MMl9DQVQ7CisgICAgc2V0X2JpdChQU1JfU09DS0VUX0wy X0NBVCwgJihpbmZvLT5mZWF0dXJlcykpOworCisgICAgbWVtY3B5KHBGZWF0LT5mZWF0X2luZm8s ICZsMl9jYXQsIHNpemVvZihzdHJ1Y3QgcHNyX2NhdF9sdmxfaW5mbykpOworCisgICAgaW5mby0+ bnJfZmVhdCsrOworCisgICAgLyogQWRkIHRoaXMgZmVhdHVyZSBpbnRvIGxpc3QuICovCisgICAg YWRkX2ZlYXR1cmUoaW5mby0+cEZlYXQsIHBGZWF0KTsKKworICAgIHNvY2tldCA9IGNwdV90b19z b2NrZXQoc21wX3Byb2Nlc3Nvcl9pZCgpKTsKKyAgICBwcmludGsoWEVOTE9HX0lORk8gIkwyIENB VDogZW5hYmxlZCBvbiBzb2NrZXQgJXUsIGNvc19tYXg6JXUsIGNibV9sZW46JXUuXG4iLAorICAg ICAgICAgICBzb2NrZXQsIHBGZWF0LT5mZWF0X2luZm9bMV0sIHBGZWF0LT5mZWF0X2luZm9bMF0p OworfQorCitzdGF0aWMgaW50IGwyX2NhdF9jb21wYXJlX21hc2sodWludDY0X3QgKm1hc2ssIHN0 cnVjdCBmZWF0X2xpc3QgKnBGZWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCBjb3MsIGJvb2xfdCAqZm91bmQpCit7CisgICAgc3RydWN0IHBzcl9jYXRfbHZs X2luZm8gY2F0X2luZm87CisgICAgdWludDY0X3QgbDJfZGVmX2NibTsKKworICAgIG1lbWNweSgm Y2F0X2luZm8sIHBGZWF0LT5mZWF0X2luZm8sIHNpemVvZihzdHJ1Y3QgcHNyX2NhdF9sdmxfaW5m bykpOworICAgIGwyX2RlZl9jYm0gPSAoMXVsbCA8PCBjYXRfaW5mby5jYm1fbGVuKSAtIDE7CisK KyAgICAvKiBMMiBDQVQgKi8KKyAgICBpZiAoIGNvcyA+IGNhdF9pbmZvLmNvc19tYXggKQorICAg IHsKKyAgICAgICAgaWYgKCBtYXNrWzBdICE9IGwyX2RlZl9jYm0gKQorICAgICAgICB7CisgICAg ICAgICAgICBwcmludGsoWEVOTE9HX0VSUiAiTDIgQ0FUIGV4Y2VlZCBjb3MgbWF4LlxuIik7Cisg ICAgICAgICAgICAqZm91bmQgPSAwOworICAgICAgICAgICAgcmV0dXJuIC1FTk9FTlQ7CisgICAg ICAgIH0KKyAgICAgICAgKmZvdW5kID0gMTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisg ICAgaWYgKCBtYXNrWzBdID09IHBGZWF0LT5jb3NfcmVnX3ZhbFtjb3NdICkKKyAgICAgICAgKmZv dW5kID0gMTsKKyAgICBlbHNlCisgICAgICAgICpmb3VuZCA9IDA7CisKKyAgICByZXR1cm4gMTsK K30KKworc3RhdGljIHVuc2lnbmVkIGludCBsMl9jYXRfZ2V0X2Nvc19tYXhfYXNfdHlwZShzdHJ1 Y3QgZmVhdF9saXN0ICpwRmVhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZW51bSBtYXNrX3R5cGUgdHlwZSkKK3sKKyAgICBzdHJ1Y3QgcHNyX2NhdF9s dmxfaW5mbyBjYXRfaW5mbzsKKworICAgIGlmICggdHlwZSAhPSBQU1JfTUFTS19UWVBFX0wyX0NC TSApCisgICAgICAgIHJldHVybiAwOworCisgICAgbWVtY3B5KCZjYXRfaW5mbywgcEZlYXQtPmZl YXRfaW5mbywgc2l6ZW9mKHN0cnVjdCBwc3JfY2F0X2x2bF9pbmZvKSk7CisgICAgcmV0dXJuIGNh dF9pbmZvLmNvc19tYXg7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgbDJfY2F0X2V4Y2VlZF9y YW5nZSh1aW50NjRfdCAqbWFzaywgc3RydWN0IGZlYXRfbGlzdCAqcEZlYXQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNvcykKK3sKKyAgICBz dHJ1Y3QgcHNyX2NhdF9sdmxfaW5mbyBjYXRfaW5mbzsKKyAgICB1aW50NjRfdCBsMl9kZWZfY2Jt OworCisgICAgbWVtY3B5KCZjYXRfaW5mbywgcEZlYXQtPmZlYXRfaW5mbywgc2l6ZW9mKHN0cnVj dCBwc3JfY2F0X2x2bF9pbmZvKSk7CisgICAgbDJfZGVmX2NibSA9ICgxdWxsIDw8IGNhdF9pbmZv LmNibV9sZW4pIC0gMTsKKworICAgIC8qIEwyIENBVCAqLworICAgIGlmICggY29zID4gY2F0X2lu Zm8uY29zX21heCApCisgICAgICAgIGlmICggbWFza1swXSAhPSBsMl9kZWZfY2JtICkKKyAgICAg ICAgICAgIC8qCisgICAgICAgICAgICAgKiBFeGNlZWQgY29zX21heCBhbmQgdmFsdWUgdG8gc2V0 IGlzIG5vdCBkZWZhdWx0LAorICAgICAgICAgICAgICogcmV0dXJuIGVycm9yLgorICAgICAgICAg ICAgICovCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiAxOworfQorCitzdGF0 aWMgaW50IGwyX2NhdF93cml0ZV9tc3IodW5zaWduZWQgaW50IGNvcywgdWludDY0X3QgKm1hc2ss CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGZlYXRfbGlzdCAqcEZlYXQpCit7 CisgICAgc3RydWN0IHBzcl9jYXRfbHZsX2luZm8gY2F0X2luZm87CisKKyAgICBtZW1jcHkoJmNh dF9pbmZvLCBwRmVhdC0+ZmVhdF9pbmZvLCBzaXplb2Yoc3RydWN0IHBzcl9jYXRfbHZsX2luZm8p KTsKKworICAgIC8qIEwyIENBVCAqLworICAgIGlmICggY29zID4gY2F0X2luZm8uY29zX21heCAp CisgICAgICAgIHJldHVybiAxOworCisgICAgcEZlYXQtPmNvc19yZWdfdmFsW2Nvc10gPSBtYXNr WzBdOworICAgIHdybXNybChNU1JfSUEzMl9QU1JfTDJfTUFTSyhjb3MpLCBtYXNrWzBdKTsKKyAg ICByZXR1cm4gMTsKK30KKworc3RhdGljIGludCBsMl9jYXRfZ2V0X29sZF9zZXRfbmV3KHVpbnQ2 NF90ICptYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmZWF0 X2xpc3QgKnBGZWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBvbGRfY29zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gbWFz a190eXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3Qg bSkKK3sKKyAgICBzdHJ1Y3QgcHNyX2NhdF9sdmxfaW5mbyBjYXRfaW5mbzsKKworICAgIG1lbWNw eSgmY2F0X2luZm8sIHBGZWF0LT5mZWF0X2luZm8sIHNpemVvZihzdHJ1Y3QgcHNyX2NhdF9sdmxf aW5mbykpOworCisgICAgLyogTm8gbWF0dGVyIHRoZSB0eXBlLCB3ZSBzaG91bGQgcmV0dXJuIEwy IENBVCBtYXNrLiAqLworICAgIGlmICggdHlwZSA9PSBQU1JfTUFTS19UWVBFX0wyX0NCTSApCisg ICAgICAgIGlmICggIXBzcl9jaGVja19jYm0oY2F0X2luZm8uY2JtX2xlbiwgbSkgKQorICAgICAg ICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICAvKiBMMiBDQVQgKi8KKyAgICBpZiAoIG9sZF9j b3MgPiBjYXRfaW5mby5jb3NfbWF4ICkKKyAgICAgICAgbWFza1swXSA9ICBwRmVhdC0+Y29zX3Jl Z192YWxbMF07CisgICAgZWxzZQorICAgICAgICBtYXNrWzBdID0gIHBGZWF0LT5jb3NfcmVnX3Zh bFtvbGRfY29zXTsKKworICAgIGlmICggdHlwZSA9PSBQU1JfTUFTS19UWVBFX0wyX0NCTSApCisg ICAgICAgIG1hc2tbMF0gPSBtOworCisgICAgLyogUmV0dXJuIG51bWJlciBvZiBtYXNrcyB0byBi ZSBoYW5kbGVkLiAqLworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50IGwyX2NhdF9nZXRf dmFsKHN0cnVjdCBmZWF0X2xpc3QgKnBGZWF0LCB1bnNpZ25lZCBpbnQgY29zLAorICAgICAgICAg ICAgICAgICAgICAgICAgICBlbnVtIG1hc2tfdHlwZSB0eXBlLCB1aW50NjRfdCAqdmFsKQorewor ICAgIHN0cnVjdCBwc3JfY2F0X2x2bF9pbmZvIGNhdF9pbmZvOworCisgICAgaWYgKCB0eXBlICE9 IFBTUl9NQVNLX1RZUEVfTDJfQ0JNICkKKyAgICAgICAgIHJldHVybiAwOworCisgICAgbWVtY3B5 KCZjYXRfaW5mbywgcEZlYXQtPmZlYXRfaW5mbywgc2l6ZW9mKHN0cnVjdCBwc3JfY2F0X2x2bF9p bmZvKSk7CisKKyAgICAvKiBMMiBDQVQgKi8KKyAgICBpZiAoIGNvcyA+IGNhdF9pbmZvLmNvc19t YXggKQorICAgICAgICAqdmFsID0gIHBGZWF0LT5jb3NfcmVnX3ZhbFswXTsKKyAgICBlbHNlCisg ICAgICAgICp2YWwgPSAgcEZlYXQtPmNvc19yZWdfdmFsW2Nvc107CisKKyAgICByZXR1cm4gMTsK K30KKworc3RhdGljIGludCBsMl9jYXRfZ2V0X2ZlYXRfaW5mbyhzdHJ1Y3QgZmVhdF9saXN0ICpw RmVhdCwgZW51bSBtYXNrX3R5cGUgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludDMyX3QgKmRhdDAsIHVpbnQzMl90ICpkYXQxLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50MzJfdCAqZGF0MikKK3sKKyAgICBzdHJ1Y3QgcHNyX2NhdF9sdmxfaW5m byBjYXRfaW5mbzsKKworICAgIGlmICggdHlwZSAhPSBQU1JfTUFTS19UWVBFX0wyX0NCTSApCisg ICAgICAgIHJldHVybiAwOworCisgICAgbWVtY3B5KCZjYXRfaW5mbywgcEZlYXQtPmZlYXRfaW5m bywgc2l6ZW9mKHN0cnVjdCBwc3JfY2F0X2x2bF9pbmZvKSk7CisKKyAgICAqZGF0MCA9IGNhdF9p bmZvLmNibV9sZW47CisgICAgKmRhdDEgPSBjYXRfaW5mby5jb3NfbWF4OworICAgICpkYXQyID0g MDsKKworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50IGwyX2NhdF9nZXRf bWF4X2Nvc19tYXgoc3RydWN0IGZlYXRfbGlzdCAqcEZlYXQpCit7CisgICAgc3RydWN0IHBzcl9j YXRfbHZsX2luZm8gY2F0X2luZm87CisKKyAgICBtZW1jcHkoJmNhdF9pbmZvLCBwRmVhdC0+ZmVh dF9pbmZvLCBzaXplb2Yoc3RydWN0IHBzcl9jYXRfbHZsX2luZm8pKTsKKworICAgIHJldHVybiBj YXRfaW5mby5jb3NfbWF4OworfQorCitzdHJ1Y3QgZmVhdF9vcHMgbDJfY2F0X29wcyA9IHsKKyAg ICAuaW5pdF9mZWF0dXJlID0gbDJfY2F0X2luaXRfZmVhdHVyZSwKKyAgICAuZ2V0X29sZF9zZXRf bmV3ID0gbDJfY2F0X2dldF9vbGRfc2V0X25ldywKKyAgICAuY29tcGFyZV9tYXNrID0gbDJfY2F0 X2NvbXBhcmVfbWFzaywKKyAgICAuZ2V0X2Nvc19tYXhfYXNfdHlwZSA9IGwyX2NhdF9nZXRfY29z X21heF9hc190eXBlLAorICAgIC5leGNlZWRfcmFuZ2UgPSBsMl9jYXRfZXhjZWVkX3JhbmdlLAor ICAgIC53cml0ZV9tc3IgPSBsMl9jYXRfd3JpdGVfbXNyLAorICAgIC5nZXRfdmFsID0gbDJfY2F0 X2dldF92YWwsCisgICAgLmdldF9mZWF0X2luZm8gPSBsMl9jYXRfZ2V0X2ZlYXRfaW5mbywKKyAg ICAuZ2V0X21heF9jb3NfbWF4ID0gbDJfY2F0X2dldF9tYXhfY29zX21heCwKK307CisKKy8qIEwz IENBVC9DRFAgY2FsbGJhY2sgZnVuY3Rpb25zIGltcGxlbWVudGF0aW9uLiAqLwogc3RhdGljIHZv aWQgbDNfY2F0X2luaXRfZmVhdHVyZSh1bnNpZ25lZCBpbnQgZWF4LCB1bnNpZ25lZCBpbnQgZWJ4 LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZWN4LCB1bnNp Z25lZCBpbnQgZWR4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZmVh dF9saXN0ICpwRmVhdCwKQEAgLTEyMDcsOSArMTQxMiwxNCBAQCBzdGF0aWMgaW50IGludGVybmFs X2NwdV9wcmVwYXJlKHVuc2lnbmVkIGludCBjcHUpCiAgICAgICAgICAocEwzQ0FUID0geHphbGxv YyhzdHJ1Y3QgZmVhdF9saXN0KSkgPT0gTlVMTCApCiAgICAgICAgIHJldHVybiAtRU5PTUVNOwog CisgICAgaWYgKCBwTDJDQVQgPT0gTlVMTCAmJgorICAgICAgICAgKHBMMkNBVCA9IHh6YWxsb2Mo c3RydWN0IGZlYXRfbGlzdCkpID09IE5VTEwgKQorICAgICAgICByZXR1cm4gLUVOT01FTTsKKwog ICAgIHJldHVybiAwOwogfQogCisvKiBFdmVyeSBmZWF0dXJlIHNob3VsZCBiZSBoYW5kbGVkIGhl cmUuICovCiBzdGF0aWMgdm9pZCBpbnRlcm5hbF9jcHVfaW5pdCh2b2lkKQogewogICAgIHVuc2ln bmVkIGludCBlYXgsIGVieCwgZWN4LCBlZHg7CkBAIC0xMjQwLDYgKzE0NTAsMjAgQEAgc3RhdGlj IHZvaWQgaW50ZXJuYWxfY3B1X2luaXQodm9pZCkKICAgICAgICAgcFRtcC0+b3BzID0gbDNfY2F0 X29wczsKICAgICAgICAgcFRtcC0+b3BzLmluaXRfZmVhdHVyZShlYXgsIGVieCwgZWN4LCBlZHgs IHBUbXAsIGluZm8pOwogICAgIH0KKworICAgIGNwdWlkX2NvdW50KFBTUl9DUFVJRF9MRVZFTF9D QVQsIDAsICZlYXgsICZlYngsICZlY3gsICZlZHgpOworICAgIGlmICggZWJ4ICYgUFNSX1JFU09V UkNFX1RZUEVfTDIgKQorICAgIHsKKyAgICAgICAgcFRtcCA9IHBMMkNBVDsKKyAgICAgICAgaWYg KCAhcFRtcCApCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHBMMkNBVCA9IE5VTEw7CisK KyAgICAgICAgLyogSW5pdGlhbGl6ZSBMMiBDQVQgYWNjb3JkaW5nIHRvIENQVUlELiAqLworICAg ICAgICBjcHVpZF9jb3VudChQU1JfQ1BVSURfTEVWRUxfQ0FULCAyLCAmZWF4LCAmZWJ4LCAmZWN4 LCAmZWR4KTsKKyAgICAgICAgcFRtcC0+b3BzID0gbDJfY2F0X29wczsKKyAgICAgICAgcFRtcC0+ b3BzLmluaXRfZmVhdHVyZShlYXgsIGVieCwgZWN4LCBlZHgsIHBUbXAsIGluZm8pOworICAgIH0K IH0KIAogc3RhdGljIHZvaWQgaW50ZXJuYWxfY3B1X2ZpbmkodW5zaWduZWQgaW50IGNwdSkKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9zeXNjdGwuYyBiL3hlbi9hcmNoL3g4Ni9zeXNjdGwuYwpp bmRleCBhMTQzZTdhLi4zYTFkODBiIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvc3lzY3RsLmMK KysrIGIveGVuL2FyY2gveDg2L3N5c2N0bC5jCkBAIC0xNzgsMTQgKzE3OCwyNCBAQCBsb25nIGFy Y2hfZG9fc3lzY3RsKAogICAgICAgICBjYXNlIFhFTl9TWVNDVExfUFNSX0NBVF9nZXRfbDNfaW5m bzoKICAgICAgICAgICAgIHJldCA9IHBzcl9nZXRfaW5mbyhzeXNjdGwtPnUucHNyX2NhdF9vcC50 YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFNSX01BU0tfVFlQRV9MM19D Qk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN5c2N0bC0+dS5wc3JfY2F0X29w LnUubDNfaW5mby5jYm1fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzeXNj dGwtPnUucHNyX2NhdF9vcC51LmwzX2luZm8uY29zX21heCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmc3lzY3RsLT51LnBzcl9jYXRfb3AudS5sM19pbmZvLmZsYWdzKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmc3lzY3RsLT51LnBzcl9jYXRfb3AudS5pbmZvLmNi bV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN5c2N0bC0+dS5wc3JfY2F0 X29wLnUuaW5mby5jb3NfbWF4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzeXNj dGwtPnUucHNyX2NhdF9vcC51LmluZm8uZmxhZ3MpOwogCiAgICAgICAgICAgICBpZiAoICFyZXQg JiYgX19jb3B5X2ZpZWxkX3RvX2d1ZXN0KHVfc3lzY3RsLCBzeXNjdGwsIHUucHNyX2NhdF9vcCkg KQogICAgICAgICAgICAgICAgIHJldCA9IC1FRkFVTFQ7CiAgICAgICAgICAgICBicmVhazsKIAor ICAgICAgICBjYXNlIFhFTl9TWVNDVExfUFNSX0NBVF9nZXRfbDJfaW5mbzoKKyAgICAgICAgICAg IHJldCA9IHBzcl9nZXRfaW5mbyhzeXNjdGwtPnUucHNyX2NhdF9vcC50YXJnZXQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUFNSX01BU0tfVFlQRV9MMl9DQk0sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJnN5c2N0bC0+dS5wc3JfY2F0X29wLnUuaW5mby5jYm1fbGVu LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzeXNjdGwtPnUucHNyX2NhdF9vcC51 LmluZm8uY29zX21heCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3lzY3RsLT51 LnBzcl9jYXRfb3AudS5pbmZvLmZsYWdzKTsKKyAgICAgICAgICAgIGlmICggIXJldCAmJiBfX2Nv cHlfZmllbGRfdG9fZ3Vlc3QodV9zeXNjdGwsIHN5c2N0bCwgdS5wc3JfY2F0X29wKSApCisgICAg ICAgICAgICAgICAgcmV0ID0gLUVGQVVMVDsKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAg IGRlZmF1bHQ6CiAgICAgICAgICAgICByZXQgPSAtRU9QTk9UU1VQUDsKICAgICAgICAgICAgIGJy ZWFrOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9tc3ItaW5kZXguaCBiL3hlbi9p bmNsdWRlL2FzbS14ODYvbXNyLWluZGV4LmgKaW5kZXggMTA5NWM4MS4uZTI3NmY4YSAxMDA2NDQK LS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9tc3ItaW5kZXguaAorKysgYi94ZW4vaW5jbHVkZS9h c20teDg2L21zci1pbmRleC5oCkBAIC0zMzksNiArMzM5LDcgQEAKICNkZWZpbmUgTVNSX0lBMzJf UFNSX0wzX01BU0sobikJKDB4MDAwMDBjOTAgKyAobikpCiAjZGVmaW5lIE1TUl9JQTMyX1BTUl9M M19NQVNLX0NPREUobikJKDB4MDAwMDBjOTAgKyAobikgKiAyICsgMSkKICNkZWZpbmUgTVNSX0lB MzJfUFNSX0wzX01BU0tfREFUQShuKQkoMHgwMDAwMGM5MCArIChuKSAqIDIpCisjZGVmaW5lIE1T Ul9JQTMyX1BTUl9MMl9NQVNLKG4pCQkoMHgwMDAwMGQxMCArIChuKSkKIAogLyogSW50ZWwgTW9k ZWwgNiAqLwogI2RlZmluZSBNU1JfUDZfUEVSRkNUUihuKQkJKDB4MDAwMDAwYzEgKyAobikpCmRp ZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oIGIveGVuL2luY2x1ZGUvYXNtLXg4 Ni9wc3IuaAppbmRleCAwOTkzODYzLi5kZTlhNWI1IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9h c20teDg2L3Bzci5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHNyLmgKQEAgLTIzLDYgKzIz LDcgQEAKIAogLyogUmVzb3VyY2UgVHlwZSBFbnVtZXJhdGlvbiAqLwogI2RlZmluZSBQU1JfUkVT T1VSQ0VfVFlQRV9MMyAgICAgICAgICAgIDB4MgorI2RlZmluZSBQU1JfUkVTT1VSQ0VfVFlQRV9M MiAgICAgICAgICAgIDB4NAogCiAvKiBMMyBNb25pdG9yaW5nIEZlYXR1cmVzICovCiAjZGVmaW5l IFBTUl9DTVRfTDNfT0NDVVBBTkNZICAgICAgICAgICAweDEKQEAgLTUwLDYgKzUxLDcgQEAgZW51 bSBtYXNrX3R5cGUgewogICAgIFBTUl9NQVNLX1RZUEVfTDNfQ0JNLAogICAgIFBTUl9NQVNLX1RZ UEVfTDNfQ09ERSwKICAgICBQU1JfTUFTS19UWVBFX0wzX0RBVEEsCisgICAgUFNSX01BU0tfVFlQ RV9MMl9DQk0sCiB9OwogCiBleHRlcm4gc3RydWN0IHBzcl9jbXQgKnBzcl9jbXQ7CmRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvZG9tY3RsLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvZG9t Y3RsLmgKaW5kZXggZGRkM2RlNC4uOGEzMDI5OSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVi bGljL2RvbWN0bC5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaApAQCAtMTEzNiw2 ICsxMTM2LDggQEAgc3RydWN0IHhlbl9kb21jdGxfcHNyX2NhdF9vcCB7CiAjZGVmaW5lIFhFTl9E T01DVExfUFNSX0NBVF9PUF9TRVRfTDNfREFUQSAgICAzCiAjZGVmaW5lIFhFTl9ET01DVExfUFNS X0NBVF9PUF9HRVRfTDNfQ09ERSAgICA0CiAjZGVmaW5lIFhFTl9ET01DVExfUFNSX0NBVF9PUF9H RVRfTDNfREFUQSAgICA1CisjZGVmaW5lIFhFTl9ET01DVExfUFNSX0NBVF9PUF9TRVRfTDJfQ0JN ICAgICA2CisjZGVmaW5lIFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDJfQ0JNICAgICA3CiAg ICAgdWludDMyX3QgY21kOyAgICAgICAvKiBJTjogWEVOX0RPTUNUTF9QU1JfQ0FUX09QXyogKi8K ICAgICB1aW50MzJfdCB0YXJnZXQ7ICAgIC8qIElOICovCiAgICAgdWludDY0X3QgZGF0YTsgICAg ICAvKiBJTi9PVVQgKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaCBi L3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaAppbmRleCA4MTk3YzE0Li5lMjU0MmZhIDEwMDY0 NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmgKKysrIGIveGVuL2luY2x1ZGUvcHVi bGljL3N5c2N0bC5oCkBAIC03MzQsNiArNzM0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGVuX3N5c2N0 bF9wY2l0b3BvaW5mbyB4ZW5fc3lzY3RsX3BjaXRvcG9pbmZvX3Q7CiBERUZJTkVfWEVOX0dVRVNU X0hBTkRMRSh4ZW5fc3lzY3RsX3BjaXRvcG9pbmZvX3QpOwogCiAjZGVmaW5lIFhFTl9TWVNDVExf UFNSX0NBVF9nZXRfbDNfaW5mbyAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgWEVOX1NZU0NUTF9Q U1JfQ0FUX2dldF9sMl9pbmZvICAgICAgICAgICAgICAgMQogc3RydWN0IHhlbl9zeXNjdGxfcHNy X2NhdF9vcCB7CiAgICAgdWludDMyX3QgY21kOyAgICAgICAvKiBJTjogWEVOX1NZU0NUTF9QU1Jf Q0FUXyogKi8KICAgICB1aW50MzJfdCB0YXJnZXQ7ICAgIC8qIElOICovCkBAIC03NDMsNyArNzQ0 LDcgQEAgc3RydWN0IHhlbl9zeXNjdGxfcHNyX2NhdF9vcCB7CiAgICAgICAgICAgICB1aW50MzJf dCBjb3NfbWF4OyAgIC8qIE9VVDogTWF4aW11bSBDT1MgKi8KICNkZWZpbmUgWEVOX1NZU0NUTF9Q U1JfQ0FUX0wzX0NEUCAgICAgICAoMXUgPDwgMCkKICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdz OyAgICAgLyogT1VUOiBDQVQgZmxhZ3MgKi8KLSAgICAgICAgfSBsM19pbmZvOworICAgICAgICB9 IGluZm87CiAgICAgfSB1OwogfTsKIHR5cGVkZWYgc3RydWN0IHhlbl9zeXNjdGxfcHNyX2NhdF9v cCB4ZW5fc3lzY3RsX3Bzcl9jYXRfb3BfdDsKLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4t ZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==