From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chao Gao Subject: [PATCH v4 4/4] Xentrace: add support for HVM's PI blocking list operation Date: Fri, 7 Jul 2017 14:49:00 +0800 Message-ID: <1499410140-8003-5-git-send-email-chao.gao@intel.com> References: <1499410140-8003-1-git-send-email-chao.gao@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1499410140-8003-1-git-send-email-chao.gao@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Kevin Tian , Wei Liu , Jan Beulich , George Dunlap , Andrew Cooper , Ian Jackson , Jun Nakajima , Chao Gao List-Id: xen-devel@lists.xenproject.org SW4gb3JkZXIgdG8gYW5hbHl6ZSBQSSBibG9ja2luZyBsaXN0IG9wZXJhdGlvbiBmcmVxdWVuY2Ug YW5kIG9idGFpbgp0aGUgbGlzdCBsZW5ndGgsIGFkZCBzb21lIHJlbGV2YW50IGV2ZW50cyB0byB4 ZW50cmFjZSBhbmQgc29tZQphc3NvY2lhdGVkIGNvZGUgaW4geGVuYWx5emUuIEV2ZW50IEFTWU5D X1BJX0xJU1RfREVMIG1heSBoYXBwZW4gaW4gaW50ZXJydXB0CmNvbnRleHQsIHdoaWNoIGluY3Vy cyBjdXJyZW50IGFzc3VtcHRpb25zIGNoZWNrZWQgaW4gdG9wbGV2ZWxfYXNzZXJ0X2NoZWNrKCkK YXJlIG5vdCBzdWl0YWJsZSBhbnkgbW9yZS4gVGh1cywgdGhpcyBwYXRjaCBleHRlbmRzIHRoZSB0 b3BsZXZlbF9hc3NlcnRfY2hlY2soKQp0byByZW1vdmUgc3VjaCBhc3N1bXB0aW9ucyBmb3IgZXZl bnRzIG9mIHR5cGUgQVNZTkNfUElfTElTVF9ERUwuCgpTaWduZWQtb2ZmLWJ5OiBDaGFvIEdhbyA8 Y2hhby5nYW9AaW50ZWwuY29tPgotLS0KdjQ6CiAtIHRyYWNlIHBhcnQgb2YgUGF0Y2ggMSBpbiB2 MwoKLS0tCiB0b29scy94ZW50cmFjZS9mb3JtYXRzICAgICAgICAgIHwgICAzICsKIHRvb2xzL3hl bnRyYWNlL3hlbmFseXplLmMgICAgICAgfCAxNTQgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0tLQogeGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMgICAgICB8ICAyMSArKysr Ky0KIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3RyYWNlLmggfCAgIDEgKwogeGVuL2luY2x1ZGUv cHVibGljL3RyYWNlLmggICAgICB8ICAgNSArKwogNSBmaWxlcyBjaGFuZ2VkLCAxNzIgaW5zZXJ0 aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMveGVudHJhY2UvZm9y bWF0cyBiL3Rvb2xzL3hlbnRyYWNlL2Zvcm1hdHMKaW5kZXggOGIzMTc4MC4uNTRlMGIxMSAxMDA2 NDQKLS0tIGEvdG9vbHMveGVudHJhY2UvZm9ybWF0cworKysgYi90b29scy94ZW50cmFjZS9mb3Jt YXRzCkBAIC0xMjUsNiArMTI1LDkgQEAKIDB4MDAwODIwMjAgIENQVSUoY3B1KWQgICUodHNjKWQg KCslKHJlbHRzYyk4ZCkgIElOVFJfV0lORE9XIFsgdmFsdWUgPSAweCUoMSkwOHggXQogMHgwMDA4 MjAyMSAgQ1BVJShjcHUpZCAgJSh0c2MpZCAoKyUocmVsdHNjKThkKSAgTlBGICAgICAgICAgWyBn cGEgPSAweCUoMikwOHglKDEpMDh4IG1mbiA9IDB4JSg0KTA4eCUoMykwOHggcXVhbCA9IDB4JSg1 KTA0eCBwMm10ID0gMHglKDYpMDR4IF0KIDB4MDAwODIwMjMgIENQVSUoY3B1KWQgICUodHNjKWQg KCslKHJlbHRzYyk4ZCkgIFRSQVAgICAgICAgIFsgdmVjdG9yID0gMHglKDEpMDJ4IF0KKzB4MDAw ODIwMjYgIENQVSUoY3B1KWQgICUodHNjKWQgKCslKHJlbHRzYyk4ZCkgIFBJX0xJU1RfQUREIFsg ZG9taWQgPSAweCUoMSkwNHggdmNwdSA9IDB4JSgyKTA0eCwgcGNwdSA9IDB4JSgzKTA0eCwgI2Vu dHJ5ID0gMHglKDQpMDR4IF0KKworMHgwMDA4ODAwMSAgQ1BVJShjcHUpZCAgJSh0c2MpZCAoKyUo cmVsdHNjKThkKSAgQVNZTkNfUElfTElTVF9ERUwgWyBkb21pZCA9IDB4JSgxKTA0eCB2Y3B1ID0g MHglKDIpMDR4IF0KIAogMHgwMDEwZjAwMSAgQ1BVJShjcHUpZCAgJSh0c2MpZCAoKyUocmVsdHNj KThkKSAgcGFnZV9ncmFudF9tYXAgICAgICBbIGRvbWlkID0gJSgxKWQgXQogMHgwMDEwZjAwMiAg Q1BVJShjcHUpZCAgJSh0c2MpZCAoKyUocmVsdHNjKThkKSAgcGFnZV9ncmFudF91bm1hcCAgICBb IGRvbWlkID0gJSgxKWQgXQpkaWZmIC0tZ2l0IGEvdG9vbHMveGVudHJhY2UveGVuYWx5emUuYyBi L3Rvb2xzL3hlbnRyYWNlL3hlbmFseXplLmMKaW5kZXggZmE2MDhhZC4uZmJjMjQyOSAxMDA2NDQK LS0tIGEvdG9vbHMveGVudHJhY2UveGVuYWx5emUuYworKysgYi90b29scy94ZW50cmFjZS94ZW5h bHl6ZS5jCkBAIC0yOTYsNiArMjk2LDcgQEAgc3RydWN0IHN5bWJvbF9zdHJ1Y3QgewogfTsKIAog dm9pZCBlcnJvcihlbnVtIGVycm9yX2xldmVsIGwsIHN0cnVjdCByZWNvcmRfaW5mbyAqcmkpOwor c3RydWN0IHZjcHVfZGF0YSAqIHZjcHVfZmluZChpbnQgZGlkLCBpbnQgdmlkKTsKIAogdm9pZCBw YXJzZV9zeW1ib2xfZmlsZShjaGFyICpmbikgewogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBsYXN0 X2FkZHIgPSAwOwpAQCAtOTQ0LDYgKzk0NSw3IEBAIGVudW0gewogICAgIEhWTV9FVkVOVF9UUkFQ LAogICAgIEhWTV9FVkVOVF9UUkFQX0RFQlVHLAogICAgIEhWTV9FVkVOVF9WTEFQSUMsCisgICAg SFZNX0VWRU5UX1BJX0xJU1RfQURELAogICAgIEhWTV9FVkVOVF9IQU5ETEVSX01BWAogfTsKIGNo YXIgKiBodm1fZXZlbnRfaGFuZGxlcl9uYW1lW0hWTV9FVkVOVF9IQU5ETEVSX01BWF0gPSB7CkBA IC05NzksMTMgKzk4MSwxNSBAQCBjaGFyICogaHZtX2V2ZW50X2hhbmRsZXJfbmFtZVtIVk1fRVZF TlRfSEFORExFUl9NQVhdID0gewogICAgICJyZWFsbW9kZV9lbXVsYXRlIiwKICAgICAidHJhcCIs CiAgICAgInRyYXBfZGVidWciLAotICAgICJ2bGFwaWMiCisgICAgInZsYXBpYyIsCisgICAgInBp X2xpc3RfYWRkIiwKIH07CiAKIGVudW0gewogICAgIEhWTV9WT0xfVk1FTlRSWSwKICAgICBIVk1f Vk9MX1ZNRVhJVCwKICAgICBIVk1fVk9MX0hBTkRMRVIsCisgICAgSFZNX1ZPTF9BU1lOQywKICAg ICBIVk1fVk9MX01BWAogfTsKIApAQCAtMTAxMiw2ICsxMDE2LDcgQEAgY2hhciAqaHZtX3ZvbF9u YW1lW0hWTV9WT0xfTUFYXSA9IHsKICAgICBbSFZNX1ZPTF9WTUVOVFJZXT0idm1lbnRyeSIsCiAg ICAgW0hWTV9WT0xfVk1FWElUXSA9InZtZXhpdCIsCiAgICAgW0hWTV9WT0xfSEFORExFUl09Imhh bmRsZXIiLAorICAgIFtIVk1fVk9MX0FTWU5DXT0iYXN5bmMiLAogfTsKIAogZW51bSB7CkBAIC0x MzM3LDYgKzEzNDIsOSBAQCBzdHJ1Y3QgaHZtX2RhdGEgewogICAgICAgICBzdHJ1Y3QgewogICAg ICAgICAgICAgc3RydWN0IGlvX2FkZHJlc3MgKm1taW8sICpwaW87CiAgICAgICAgIH0gaW87Cisg ICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBpbnQgcGlfbGlzdF9hZGQsIHBpX2xpc3RfZGVs OworICAgICAgICB9IHBpOwogICAgIH0gc3VtbWFyeTsKIAogICAgIC8qIEluLWZsaWdodCBhY2N1 bXVsYXRpb24gaW5mb3JtYXRpb24gKi8KQEAgLTEzOTEsNiArMTM5OSw5IEBAIHN0cnVjdCBodm1f ZGF0YSB7CiAKICAgICAvKiBIaXN0b3JpY2FsIGluZm8gKi8KICAgICB0c2NfdCBsYXN0X3JkdHNj OworCisgICAgLyogRGVzdGluYXRpb24gcGNwdSBvZiBwb3N0ZWQgaW50ZXJydXB0J3Mgd2FrZXVw IGludGVycnVwdCAqLworICAgIGludCBwaV9jcHU7CiB9OwogCiBlbnVtIHsKQEAgLTE0NTcsNiAr MTQ2OCw4IEBAIHZvaWQgaW5pdF9odm1fZGF0YShzdHJ1Y3QgaHZtX2RhdGEgKmgsIHN0cnVjdCB2 Y3B1X2RhdGEgKnYpIHsKICAgICB9CiAgICAgZm9yKGk9MDsgaTxHVUVTVF9JTlRFUlJVUFRfTUFY KzE7IGkrKykKICAgICAgICAgaC0+c3VtbWFyeS5ndWVzdF9pbnRlcnJ1cHRbaV0uY291bnQ9MDsK KworICAgIGgtPnBpX2NwdSA9IC0xOwogfQogCiAvKiBQViBkYXRhICovCkBAIC0xNzY2LDYgKzE3 NzksMTQgQEAgY2hhciAqIHRvcGxldmVsX25hbWVbVE9QTEVWRUxfTUFYXSA9IHsKICAgICBbVE9Q TEVWRUxfSFddPSJodyIsCiB9OwogCitlbnVtIHsKKyAgICBTVUJMRVZFTF9IVk1fRU5UUllFWElU PTEsCisgICAgU1VCTEVWRUxfSFZNX0hBTkRMRVIsCisgICAgU1VCTEVWRUxfSFZNX0VNVUwsCisg ICAgU1VCTEVWRUxfSFZNX0FTWU5DLAorICAgIFNVQkxFVkVMX0hWTV9NQVg9U1VCTEVWRUxfSFZN X0FTWU5DKzEsCit9OworCiBzdHJ1Y3QgdHJhY2Vfdm9sdW1lIHsKICAgICB1bnNpZ25lZCBsb25n IGxvbmcgdG9wbGV2ZWxbVE9QTEVWRUxfTUFYXTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc2No ZWRfdmVyYm9zZTsKQEAgLTE4NTIsNiArMTg3Myw5IEBAIHN0cnVjdCBwY3B1X2luZm8gewogICAg ICAgICB0c2NfdCB0c2M7CiAgICAgICAgIHN0cnVjdCBjeWNsZV9zdW1tYXJ5IGlkbGUsIHJ1bm5p bmcsIGxvc3Q7CiAgICAgfSB0aW1lOworCisgICAgLyogUG9zdGVkIEludGVycnVwdCBMaXN0IExl bmd0aCAqLworICAgIGludCBwaV9saXN0X2xlbmd0aDsKIH07CiAKIHZvaWQgX19maWxsX2luX3Jl Y29yZF9pbmZvKHN0cnVjdCBwY3B1X2luZm8gKnApOwpAQCAtNDcyNiw2ICs0NzUwLDcxIEBAIHZv aWQgaHZtX2dlbmVyaWNfZHVtcChzdHJ1Y3QgcmVjb3JkX2luZm8gKnJpLCBjaGFyICogcHJlZml4 KQogICAgIHByaW50ZigiIF1cbiIpOwogfQogCit2b2lkIGh2bV9waV9saXN0X2FkZF9wcm9jZXNz KHN0cnVjdCByZWNvcmRfaW5mbyAqcmksIHN0cnVjdCBodm1fZGF0YSAqaCkKK3sKKyAgICBzdHJ1 Y3QgeworICAgICAgICBpbnQgZGlkOworICAgICAgICBpbnQgdmlkOworICAgICAgICBpbnQgcGNw dTsKKyAgICAgICAgaW50IGxlbjsKKyAgICB9ICpkYXRhOworICAgIHN0cnVjdCB2Y3B1X2RhdGEg KnY7CisKKyAgICBkYXRhID0gKHR5cGVvZihkYXRhKSlyaS0+cmVjLnUudHNjLmRhdGE7CisgICAg diA9IHZjcHVfZmluZChkYXRhLT5kaWQsIGRhdGEtPnZpZCk7CisgICAgaWYgKCAhdi0+aHZtLmlu aXQgKQorICAgICAgICBpbml0X2h2bV9kYXRhKCZ2LT5odm0sIHYpOworCisgICAgaWYgKCBvcHQu ZHVtcF9hbGwgKQorICAgICAgICBwcmludGYoImQldXYldSBpcyBhZGRlZCB0byBwaSBibG9ja2lu ZyBsaXN0IG9mIHBjcHUldS4gIgorICAgICAgICAgICAgICAgIlRoZSBsaXN0IGxlbmd0aCBpcyBu b3cgJWRcbiIsCisgICAgICAgICAgICAgICBkYXRhLT5kaWQsIGRhdGEtPnZpZCwgZGF0YS0+cGNw dSwgZGF0YS0+bGVuKTsKKworICAgIHYtPmh2bS5waV9jcHUgPSBkYXRhLT5wY3B1OworICAgIHYt Pmh2bS5zdW1tYXJ5LnBpLnBpX2xpc3RfYWRkKys7CisgICAgaWYgKCBkYXRhLT5wY3B1ID4gUC5t YXhfYWN0aXZlX3BjcHUgfHwgIVAucGNwdVtkYXRhLT5wY3B1XS5hY3RpdmUgKQorICAgICAgICBm cHJpbnRmKHN0ZGVyciwgIlN0cmFuZ2UhIHBjcHUldSBpcyBpbmFjdGl2ZSBidXQgYSB2Y3B1IGlz IGFkZGVkIgorICAgICAgICAgICAgICAgICJ0byBpdCIsIGRhdGEtPnBjcHUpOworICAgIGVsc2Ug aWYgKCBQLnBjcHVbZGF0YS0+cGNwdV0ucGlfbGlzdF9sZW5ndGggPT0gLTEgKQorICAgICAgICBQ LnBjcHVbZGF0YS0+cGNwdV0ucGlfbGlzdF9sZW5ndGggPSBkYXRhLT5sZW47CisgICAgZWxzZSBp ZiAoIGRhdGEtPmxlbiAhPSArK1AucGNwdVtkYXRhLT5wY3B1XS5waV9saXN0X2xlbmd0aCApCisg ICAgICAgIC8qCisgICAgICAgICAqIENvcnJlY3QgcGkgbGlzdCBsZW5ndGguIFJlbW92aW5nIG9u ZSB2Y3B1IHRoYXQgaXMgYWxyZWFkeSBvbiB0aGUKKyAgICAgICAgICogbGlzdCBiZWZvcmUgdHJh Y2luZyBzdGFydHMgd291bGQgbm90IGRlY3JlYXNlIHRoZSBwaSBsaXN0IGxlbmd0aDsKKyAgICAg ICAgICogdGhlIGxpc3QgbGVuZ3RoIHdvdWxkIGJlIGluYWNjdWF0ZS4KKyAgICAgICAgICovCisg ICAgICAgIFAucGNwdVtkYXRhLT5wY3B1XS5waV9saXN0X2xlbmd0aCA9IGRhdGEtPmxlbjsKK30K Kwordm9pZCBodm1fcGlfbGlzdF9kZWxfcHJvY2VzcyhzdHJ1Y3QgcmVjb3JkX2luZm8gKnJpKQor eworICAgIHN0cnVjdCB7CisgICAgICAgIGludCBkaWQ7CisgICAgICAgIGludCB2aWQ7CisgICAg fSAqZGF0YTsKKyAgICBzdHJ1Y3QgdmNwdV9kYXRhICp2OworCisgICAgZGF0YSA9ICh0eXBlb2Yo ZGF0YSkpcmktPnJlYy51LnRzYy5kYXRhOworICAgIHYgPSB2Y3B1X2ZpbmQoZGF0YS0+ZGlkLCBk YXRhLT52aWQpOworICAgIGlmICggIXYtPmh2bS5pbml0ICkKKyAgICAgICAgaW5pdF9odm1fZGF0 YSgmdi0+aHZtLCB2KTsKKworICAgIGlmICggb3B0LmR1bXBfYWxsICkKKyAgICB7CisgICAgICAg IGlmICggdi0+aHZtLnBpX2NwdSAhPSAtMSApCisgICAgICAgICAgICBwcmludGYoImQldXYldSBp cyByZW1vdmVkIGZyb20gcGkgYmxvY2tpbmcgbGlzdCBvZiBwY3B1JXVcbiIsCisgICAgICAgICAg ICAgICAgICAgZGF0YS0+ZGlkLCBkYXRhLT52aWQsIHYtPmh2bS5waV9jcHUpOworICAgICAgICBl bHNlCisgICAgICAgICAgICBwcmludGYoImQldXYldSBpcyByZW1vdmVkIGZyb20gcGkgYmxvY2tp bmcgbGlzdFxuIiwKKyAgICAgICAgICAgICAgICAgICBkYXRhLT5kaWQsIGRhdGEtPnZpZCk7Cisg ICAgfQorCisgICAgaWYgKCBQLnBjcHVbdi0+aHZtLnBpX2NwdV0ucGlfbGlzdF9sZW5ndGggIT0g LTEgKQorICAgICAgICBQLnBjcHVbdi0+aHZtLnBpX2NwdV0ucGlfbGlzdF9sZW5ndGgtLTsKKyAg ICB2LT5odm0ucGlfY3B1ID0gLTE7CisgICAgdi0+aHZtLnN1bW1hcnkucGkucGlfbGlzdF9kZWwr KzsKK30KKwogdm9pZCBodm1faGFuZGxlcl9wcm9jZXNzKHN0cnVjdCByZWNvcmRfaW5mbyAqcmks IHN0cnVjdCBodm1fZGF0YSAqaCkgewogICAgIC8qIFdhaXQgZm9yIGZpcnN0IHZtZXhpdCB0byBp bml0aWFsaXplICovCiAgICAgaWYoIWgtPmluaXQpCkBAIC00NzYzLDYgKzQ4NTIsOSBAQCB2b2lk IGh2bV9oYW5kbGVyX3Byb2Nlc3Moc3RydWN0IHJlY29yZF9pbmZvICpyaSwgc3RydWN0IGh2bV9k YXRhICpoKSB7CiAgICAgY2FzZSBUUkNfSFZNX0lOVFJfV0lORE9XOgogICAgICAgICBodm1faW50 cl93aW5kb3dfcHJvY2VzcyhyaSwgaCk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgVFJDX0hW TV9QSV9MSVNUX0FERDoKKyAgICAgICAgaHZtX3BpX2xpc3RfYWRkX3Byb2Nlc3MocmksIGgpOwor ICAgICAgICBicmVhazsKICAgICBjYXNlIFRSQ19IVk1fT1BfREVTVFJPWV9QUk9DOgogICAgICAg ICBpZihoLT52LT5jcjMuZGF0YSkgewogICAgICAgICAgICAgc3RydWN0IGNyM192YWx1ZV9zdHJ1 Y3QgKmN1ciA9IGgtPnYtPmNyMy5kYXRhOwpAQCAtNDg2Miw3ICs0OTU0LDYgQEAgbmVlZHNfdm1l eGl0Ogogdm9pZCB2Y3B1X25leHRfdXBkYXRlKHN0cnVjdCBwY3B1X2luZm8gKnAsIHN0cnVjdCB2 Y3B1X2RhdGEgKm5leHQsIHRzY190IHRzYyk7CiB2b2lkIHZjcHVfcHJldl91cGRhdGUoc3RydWN0 IHBjcHVfaW5mbyAqcCwgc3RydWN0IHZjcHVfZGF0YSAqcHJldiwKICAgICAgICAgICAgICAgICAg ICAgICB0c2NfdCB0c2MsIGludCBuZXdfcnVuc3RhdGUpOwotc3RydWN0IHZjcHVfZGF0YSAqIHZj cHVfZmluZChpbnQgZGlkLCBpbnQgdmlkKTsKIHZvaWQgbG9zZV92Y3B1KHN0cnVjdCB2Y3B1X2Rh dGEgKnYsIHRzY190IHRzYyk7CiAKIGludCBkb21haW5fcnVuc3RhdGUoc3RydWN0IGRvbWFpbl9k YXRhICpkKSB7CkBAIC01MjY3LDYgKzUzNTgsMjEgQEAgdm9pZCBodm1fcHJvY2VzcyhzdHJ1Y3Qg cGNwdV9pbmZvICpwKQogICAgIHN0cnVjdCB2Y3B1X2RhdGEgKnYgPSBwLT5jdXJyZW50OwogICAg IHN0cnVjdCBodm1fZGF0YSAqaCA9ICZ2LT5odm07CiAKKyAgICBpZihyaS0+ZXZ0LnN1YiA9PSA4 KQorICAgIHsKKyAgICAgICAgVVBEQVRFX1ZPTFVNRShwLCBodm1bSFZNX1ZPTF9BU1lOQ10sIHJp LT5zaXplKTsKKworICAgICAgICBzd2l0Y2gocmktPmV2ZW50KSB7CisgICAgICAgIGNhc2UgVFJD X0hWTV9BU1lOQ19QSV9MSVNUX0RFTDoKKyAgICAgICAgICAgIGh2bV9waV9saXN0X2RlbF9wcm9j ZXNzKHJpKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg ICAgICBmcHJpbnRmKHdhcm4sICJVbmtub3duIGh2bSBldmVudDogJXhcbiIsIHJpLT5ldmVudCk7 CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGFzc2VydChwLT5jdXJy ZW50KTsKIAogICAgIGlmKHZjcHVfc2V0X2RhdGFfdHlwZShwLT5jdXJyZW50LCBWQ1BVX0RBVEFf SFZNKSkKQEAgLTUzNTksNiArNTQ2NSwxMCBAQCB2b2lkIGh2bV9zdW1tYXJ5KHN0cnVjdCBodm1f ZGF0YSAqaCkgewogICAgICAgICAgICAgICAgICAgaSwgaC0+c3VtbWFyeS5pcGlfY291bnRbaV0p OwogICAgaHZtX2lvX2FkZHJlc3Nfc3VtbWFyeShoLT5zdW1tYXJ5LmlvLnBpbywgIklPIGFkZHJl c3Mgc3VtbWFyeToiKTsKICAgIGh2bV9pb19hZGRyZXNzX3N1bW1hcnkoaC0+c3VtbWFyeS5pby5t bWlvLCAiTU1JTyBhZGRyZXNzIHN1bW1hcnk6Iik7CisKKyAgIHByaW50ZigiUG9zdGVkIEludGVy cnVwdDpcbiIpOworICAgcHJpbnRmKCIgTGlzdCBBZGQ6ICV1XG4iLCBoLT5zdW1tYXJ5LnBpLnBp X2xpc3RfYWRkKTsKKyAgIHByaW50ZigiIExpc3QgRGVsOiAldVxuIiwgaC0+c3VtbWFyeS5waS5w aV9saXN0X2RlbCk7CiB9CiAKIC8qIC0tLS0gU2hhZG93IHJlY29yZHMgLS0tLSAqLwpAQCAtODk2 Miw2ICs5MDcyLDcgQEAgb2ZmX3Qgc2Nhbl9mb3JfbmV3X3BjcHUob2ZmX3Qgb2Zmc2V0KSB7CiAK ICAgICAgICAgcC0+ZmlsZV9vZmZzZXQgPSBvZmZzZXQ7CiAgICAgICAgIHAtPm5leHRfY3B1X2No YW5nZV9vZmZzZXQgPSBvZmZzZXQ7CisgICAgICAgIHAtPnBpX2xpc3RfbGVuZ3RoID0gLTE7CiAK ICAgICAgICAgcmVjb3JkX29yZGVyX2luc2VydChwKTsKIApAQCAtOTE0Miw3ICs5MjUzLDYgQEAg aW50IGZpbmRfdG9wbGV2ZWxfZXZlbnQoc3RydWN0IHJlY29yZF9pbmZvICpyaSkKICAgICByZXR1 cm4gdG9wbGV2ZWw7CiB9CiAKLQogdm9pZCBwcm9jZXNzX2NwdV9jaGFuZ2Uoc3RydWN0IHBjcHVf aW5mbyAqcCkgewogICAgIHN0cnVjdCByZWNvcmRfaW5mbyAqcmkgPSAmcC0+cmk7CiAgICAgc3Ry dWN0IGNwdV9jaGFuZ2VfZGF0YSAqciA9ICh0eXBlb2YocikpcmktPmQ7CkBAIC05MTkwLDYgKzkz MDAsNyBAQCB2b2lkIHByb2Nlc3NfY3B1X2NoYW5nZShzdHJ1Y3QgcGNwdV9pbmZvICpwKSB7CiAg ICAgICAgIHAyLT5yaS5kID0gcDItPnJpLnJlYy51Lm5vdHNjLmRhdGE7CiAgICAgICAgIHAyLT5m aWxlX29mZnNldCA9IHAtPmZpbGVfb2Zmc2V0OwogICAgICAgICBwMi0+bmV4dF9jcHVfY2hhbmdl X29mZnNldCA9IHAtPmZpbGVfb2Zmc2V0OworICAgICAgICBwMi0+cGlfbGlzdF9sZW5ndGggPSAt MTsKIAogICAgICAgICBmcHJpbnRmKHdhcm4sICIlczogQWN0aXZhdGluZyBwY3B1ICVkIGF0IG9m ZnNldCAlbGxkXG4iLAogICAgICAgICAgICAgICAgIF9fZnVuY19fLCByLT5jcHUsICh1bnNpZ25l ZCBsb25nIGxvbmcpcC0+ZmlsZV9vZmZzZXQpOwpAQCAtOTI3NiwyNiArOTM4Nyw1MiBAQCB2b2lk IHByb2Nlc3NfY3B1X2NoYW5nZShzdHJ1Y3QgcGNwdV9pbmZvICpwKSB7CiAgICAgfQogfQogCi1z dHJ1Y3QgdGxfYXNzZXJ0X21hc2sgeworc3RydWN0IGFzc2VydF9tYXNrIHsKICAgICB1bnNpZ25l ZCBwX2N1cnJlbnQ6MSwKLSAgICAgICAgbm90X2lkbGVfZG9tYWluOjE7CisgICAgICAgIG5vdF9p ZGxlX2RvbWFpbjoxLAorICAgICAgICBjaGVja19zdWJsZXZlbDoxOwogICAgIGludCB2Y3B1X2Rh dGFfbW9kZTsKKyAgICBpbnQgc3ViX21heDsKKyAgICBzdHJ1Y3QgYXNzZXJ0X21hc2sgKnN1YjsK IH07Ci1zdGF0aWMgc3RydWN0IHRsX2Fzc2VydF9tYXNrIHRsX2Fzc2VydF9jaGVja3NbVE9QTEVW RUxfTUFYXSA9IHsKLSAgICBbVFJDX0hWTV9NQUlOXT17IC5wX2N1cnJlbnQ9MSwgLm5vdF9pZGxl X2RvbWFpbj0xLCAudmNwdV9kYXRhX21vZGU9VkNQVV9EQVRBX0hWTSB9LAorCitzdGF0aWMgc3Ry dWN0IGFzc2VydF9tYXNrIHNsX2h2bV9hc3NlcnRfbWFza1tTVUJMRVZFTF9IVk1fTUFYXSA9IHsK KyAgICBbU1VCTEVWRUxfSFZNX0VOVFJZRVhJVF0gPSB7IC5wX2N1cnJlbnQ9MSwgLm5vdF9pZGxl X2RvbWFpbj0xLCAudmNwdV9kYXRhX21vZGU9VkNQVV9EQVRBX0hWTSB9LAorICAgIFtTVUJMRVZF TF9IVk1fSEFORExFUl0gPSB7IC5wX2N1cnJlbnQ9MSwgLm5vdF9pZGxlX2RvbWFpbj0xLCAudmNw dV9kYXRhX21vZGU9VkNQVV9EQVRBX0hWTSB9LAorICAgIFtTVUJMRVZFTF9IVk1fRU1VTF0gPSB7 IC5wX2N1cnJlbnQ9MSwgLm5vdF9pZGxlX2RvbWFpbj0xLCAudmNwdV9kYXRhX21vZGU9VkNQVV9E QVRBX0hWTSB9LAorfTsKKworc3RhdGljIHN0cnVjdCBhc3NlcnRfbWFzayB0bF9hc3NlcnRfY2hl Y2tzW1RPUExFVkVMX01BWF0gPSB7CisgICAgW1RSQ19IVk1fTUFJTl09eyAuY2hlY2tfc3VibGV2 ZWw9MSwgLnN1Yj1zbF9odm1fYXNzZXJ0X21hc2ssIC5zdWJfbWF4PVNVQkxFVkVMX0hWTV9NQVgg fSwKICAgICBbVFJDX1NIQURPV19NQUlOXT17IC5wX2N1cnJlbnQ9MSwgLm5vdF9pZGxlX2RvbWFp bj0xLCAudmNwdV9kYXRhX21vZGU9VkNQVV9EQVRBX0hWTSB9LAogICAgIFtUUkNfUFZfTUFJTl09 eyAucF9jdXJyZW50PTEsIC5ub3RfaWRsZV9kb21haW49MSwgLnZjcHVfZGF0YV9tb2RlPVZDUFVf REFUQV9QViB9LAogfTsKIAorLyogT3RoZXIgc3ViIHR5cGVzIGFyZSByZXNlcnZlZCAqLworc3Rh dGljIGludCBzdWJsZXZlbF90b19pbmRleFsxNl0gPSB7CisgICAgWzFdID0gMSwKKyAgICBbMl0g PSAyLAorICAgIFs0XSA9IDMsCisgICAgWzhdID0gNCwKK307CisKIC8qIFRoZXJlIGFyZSBhIGxv dCBvZiBjb21tb24gYXNzdW1wdGlvbnMgZm9yIHRoZSB2YXJpb3VzIHByb2Nlc3NpbmcKICAqIHJv dXRpbmVzLiAgQ2hlY2sgdGhlbSBhbGwgaW4gb25lIHBsYWNlLCBkb2luZyBzb21ldGhpbmcgZWxz ZSBpZgogICogdGhleSBkb24ndCBwYXNzLiAqLwogaW50IHRvcGxldmVsX2Fzc2VydF9jaGVjayhp bnQgdG9wbGV2ZWwsIHN0cnVjdCBwY3B1X2luZm8gKnApCiB7Ci0gICAgc3RydWN0IHRsX2Fzc2Vy dF9tYXNrIG1hc2s7CisgICAgc3RydWN0IGFzc2VydF9tYXNrIG1hc2s7CiAKICAgICBtYXNrID0g dGxfYXNzZXJ0X2NoZWNrc1t0b3BsZXZlbF07CiAKKyAgICBpZiAobWFzay5jaGVja19zdWJsZXZl bCkKKyAgICB7CisgICAgICAgIGludCBzdWIgPSBzdWJsZXZlbF90b19pbmRleFtwLT5yaS5ldnQu c3ViXTsKKworICAgICAgICBhc3NlcnQobWFzay5zdWIgJiYgKHN1YiA8IG1hc2suc3ViX21heCkp OworICAgICAgICBtYXNrID0gbWFzay5zdWJbc3ViXTsKKyAgICB9CisKICAgICBpZiAobWFzay5w X2N1cnJlbnQgJiYgcC0+Y3VycmVudCA9PSBOVUxMKQogICAgIHsKICAgICAgICAgZnByaW50Zih3 YXJuLCAiV0FSTklORzogcC0+Y3VycmVudCBudWxsISAgTm90IHByb2Nlc3NpbmdcbiIpOwpAQCAt OTM2Miw3ICs5NDk5LDYgQEAgdm9pZCBwcm9jZXNzX3JlY29yZChzdHJ1Y3QgcGNwdV9pbmZvICpw KSB7CiAgICAgaWYob3B0LmR1bXBfYWxsKQogICAgICAgICBjcmVhdGVfZHVtcF9oZWFkZXIocmks IHApOwogCi0KICAgICB0b3BsZXZlbCA9IGZpbmRfdG9wbGV2ZWxfZXZlbnQocmkpOwogICAgIGlm ICggdG9wbGV2ZWwgPCAwICkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L2h2bS92bXgvdm14LmMgYi94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYwppbmRleCAwNGU5 YWE2Li5jY2IxYzhkIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYworKysg Yi94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYwpAQCAtMTkwLDcgKzE5MCw5IEBAIHN0YXRpYyB2 b2lkIHZteF92Y3B1X2Jsb2NrKHN0cnVjdCB2Y3B1ICp2KQogICAgICAqLwogICAgIEFTU0VSVChv bGRfbG9jayA9PSBOVUxMKTsKIAotICAgIHBlcl9jcHUodm14X3BpX2Jsb2NraW5nLCB2LT5wcm9j ZXNzb3IpLmNvdW50ZXIrKzsKKyAgICBwZXJfY3B1KHZteF9waV9ibG9ja2luZywgcGlfY3B1KS5j b3VudGVyKys7CisgICAgVFJBQ0VfNEQoVFJDX0hWTV9QSV9MSVNUX0FERCwgdi0+ZG9tYWluLT5k b21haW5faWQsIHYtPnZjcHVfaWQsIHBpX2NwdSwKKyAgICAgICAgICAgICBwZXJfY3B1KHZteF9w aV9ibG9ja2luZywgcGlfY3B1KS5jb3VudGVyKTsKICAgICBsaXN0X2FkZF90YWlsKCZ2LT5hcmNo Lmh2bV92bXgucGlfYmxvY2tpbmcubGlzdCwKICAgICAgICAgICAgICAgICAgICZwZXJfY3B1KHZt eF9waV9ibG9ja2luZywgcGlfY3B1KS5saXN0KTsKICAgICBzcGluX3VubG9ja19pcnFyZXN0b3Jl KHBpX2Jsb2NraW5nX2xpc3RfbG9jaywgZmxhZ3NbMV0pOwpAQCAtMjc5LDYgKzI4MSw3IEBAIHN0 YXRpYyB2b2lkIHZteF9waV91bmJsb2NrX3ZjcHUoc3RydWN0IHZjcHUgKnYpCiAgICAgICAgIGxp c3RfZGVsKCZ2LT5hcmNoLmh2bV92bXgucGlfYmxvY2tpbmcubGlzdCk7CiAgICAgICAgIGNvbnRh aW5lcl9vZihwaV9ibG9ja2luZ19saXN0X2xvY2ssCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3Qgdm14X3BpX2Jsb2NraW5nX3ZjcHUsIGxvY2spLT5jb3VudGVyLS07CisgICAgICAgIFRSQUNF XzJEKFRSQ19IVk1fQVNZTkNfUElfTElTVF9ERUwsIHYtPmRvbWFpbi0+ZG9tYWluX2lkLCB2LT52 Y3B1X2lkKTsKICAgICAgICAgdi0+YXJjaC5odm1fdm14LnBpX2Jsb2NraW5nLmxvY2sgPSBOVUxM OwogICAgIH0KIApAQCAtMzA4LDYgKzMxMSw4IEBAIHZvaWQgdm14X3BpX2Rlc2NfZml4dXAodW5z aWduZWQgaW50IGNwdSkKIAogICAgIGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh2bXgsIHRtcCwg YmxvY2tlZF92Y3B1cywgcGlfYmxvY2tpbmcubGlzdCkKICAgICB7CisgICAgICAgIHN0cnVjdCB2 Y3B1ICp2ID0gY29udGFpbmVyX29mKHZteCwgc3RydWN0IHZjcHUsIGFyY2guaHZtX3ZteCk7CisK ICAgICAgICAgLyoKICAgICAgICAgICogU3VwcHJlc3Mgbm90aWZpY2F0aW9uIG9yIHdlIG1heSBt aXNzIGFuIGludGVycnVwdCB3aGVuIHRoZQogICAgICAgICAgKiB0YXJnZXQgY3B1IGlzIGR5aW5n LgpAQCAtMzIyLDkgKzMyNywxMSBAQCB2b2lkIHZteF9waV9kZXNjX2ZpeHVwKHVuc2lnbmVkIGlu dCBjcHUpCiAgICAgICAgIGlmICggcGlfdGVzdF9vbigmdm14LT5waV9kZXNjKSApCiAgICAgICAg IHsKICAgICAgICAgICAgIGxpc3RfZGVsKCZ2bXgtPnBpX2Jsb2NraW5nLmxpc3QpOworICAgICAg ICAgICAgVFJBQ0VfMkQoVFJDX0hWTV9BU1lOQ19QSV9MSVNUX0RFTCwgdi0+ZG9tYWluLT5kb21h aW5faWQsCisgICAgICAgICAgICAgICAgICAgICB2LT52Y3B1X2lkKTsKICAgICAgICAgICAgIHBl cl9jcHUodm14X3BpX2Jsb2NraW5nLCBjcHUpLmNvdW50ZXItLTsKICAgICAgICAgICAgIHZteC0+ cGlfYmxvY2tpbmcubG9jayA9IE5VTEw7Ci0gICAgICAgICAgICB2Y3B1X3VuYmxvY2soY29udGFp bmVyX29mKHZteCwgc3RydWN0IHZjcHUsIGFyY2guaHZtX3ZteCkpOworICAgICAgICAgICAgdmNw dV91bmJsb2NrKHYpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewpAQCAtMzU3 LDYgKzM2NCwxMCBAQCB2b2lkIHZteF9waV9kZXNjX2ZpeHVwKHVuc2lnbmVkIGludCBjcHUpCiAg ICAgICAgICAgICAgICAgICAgICAgJnBlcl9jcHUodm14X3BpX2Jsb2NraW5nLCBuZXdfY3B1KS5s aXN0KTsKICAgICAgICAgICAgIHBlcl9jcHUodm14X3BpX2Jsb2NraW5nLCBjcHUpLmNvdW50ZXIt LTsKICAgICAgICAgICAgIHBlcl9jcHUodm14X3BpX2Jsb2NraW5nLCBuZXdfY3B1KS5jb3VudGVy Kys7CisgICAgICAgICAgICBUUkFDRV8yRChUUkNfSFZNX0FTWU5DX1BJX0xJU1RfREVMLCB2LT5k b21haW4tPmRvbWFpbl9pZCwKKyAgICAgICAgICAgICAgICAgICAgIHYtPnZjcHVfaWQpOworICAg ICAgICAgICAgVFJBQ0VfNEQoVFJDX0hWTV9QSV9MSVNUX0FERCwgdi0+ZG9tYWluLT5kb21haW5f aWQsIHYtPnZjcHVfaWQsCisgICAgICAgICAgICAgICAgICAgICBuZXdfY3B1LCBwZXJfY3B1KHZt eF9waV9ibG9ja2luZywgbmV3X2NwdSkuY291bnRlcik7CiAgICAgICAgICAgICB2bXgtPnBpX2Js b2NraW5nLmxvY2sgPSBuZXdfbG9jazsKIAogICAgICAgICAgICAgc3Bpbl91bmxvY2sobmV3X2xv Y2spOwpAQCAtMjQ3NSwxMSArMjQ4NiwxNSBAQCBzdGF0aWMgdm9pZCBwaV93YWtldXBfaW50ZXJy dXB0KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogICAgIHsKICAgICAgICAgaWYgKCBwaV90 ZXN0X29uKCZ2bXgtPnBpX2Rlc2MpICkKICAgICAgICAgeworICAgICAgICAgICAgc3RydWN0IHZj cHUgKnYgPSBjb250YWluZXJfb2Yodm14LCBzdHJ1Y3QgdmNwdSwgYXJjaC5odm1fdm14KTsKKwog ICAgICAgICAgICAgbGlzdF9kZWwoJnZteC0+cGlfYmxvY2tpbmcubGlzdCk7CisgICAgICAgICAg ICBUUkFDRV8yRChUUkNfSFZNX0FTWU5DX1BJX0xJU1RfREVMLCB2LT5kb21haW4tPmRvbWFpbl9p ZCwKKyAgICAgICAgICAgICAgICAgICAgIHYtPnZjcHVfaWQpOwogICAgICAgICAgICAgcGVyX2Nw dSh2bXhfcGlfYmxvY2tpbmcsIGNwdSkuY291bnRlci0tOwogICAgICAgICAgICAgQVNTRVJUKHZt eC0+cGlfYmxvY2tpbmcubG9jayA9PSBsb2NrKTsKICAgICAgICAgICAgIHZteC0+cGlfYmxvY2tp bmcubG9jayA9IE5VTEw7Ci0gICAgICAgICAgICB2Y3B1X3VuYmxvY2soY29udGFpbmVyX29mKHZt eCwgc3RydWN0IHZjcHUsIGFyY2guaHZtX3ZteCkpOworICAgICAgICAgICAgdmNwdV91bmJsb2Nr KHYpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2 L2h2bS90cmFjZS5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdHJhY2UuaAppbmRleCBkZTgw MmE2Li5iNzRmZmRkIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS90cmFjZS5o CisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3RyYWNlLmgKQEAgLTU0LDYgKzU0LDcgQEAK ICNkZWZpbmUgRE9fVFJDX0hWTV9UUkFQICAgICAgICAgICAgIERFRkFVTFRfSFZNX01JU0MKICNk ZWZpbmUgRE9fVFJDX0hWTV9UUkFQX0RFQlVHICAgICAgIERFRkFVTFRfSFZNX01JU0MKICNkZWZp bmUgRE9fVFJDX0hWTV9WTEFQSUMgICAgICAgICAgIERFRkFVTFRfSFZNX01JU0MKKyNkZWZpbmUg RE9fVFJDX0hWTV9QSV9MSVNUX0FERCAgICAgIERFRkFVTFRfSFZNX01JU0MKIAogCiAjZGVmaW5l IFRSQ19QQVJfTE9ORyhwYXIpICgocGFyKSYweEZGRkZGRkZGKSwoKHBhcik+PjMyKQpkaWZmIC0t Z2l0IGEveGVuL2luY2x1ZGUvcHVibGljL3RyYWNlLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvdHJh Y2UuaAppbmRleCA3ZjJlODkxLi4xNWVhODdjIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJs aWMvdHJhY2UuaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvdHJhY2UuaApAQCAtNTMsNiArNTMs NyBAQAogI2RlZmluZSBUUkNfSFZNX0VOVFJZRVhJVCAgIDB4MDAwODEwMDAgICAvKiBWTUVOVFJZ IGFuZCAjVk1FWElUICAgICAgICovCiAjZGVmaW5lIFRSQ19IVk1fSEFORExFUiAgICAgMHgwMDA4 MjAwMCAgIC8qIHZhcmlvdXMgSFZNIGhhbmRsZXJzICAgICAgKi8KICNkZWZpbmUgVFJDX0hWTV9F TVVMICAgICAgICAweDAwMDg0MDAwICAgLyogZW11bGF0ZWQgZGV2aWNlcyAqLworI2RlZmluZSBU UkNfSFZNX0FTWU5DICAgICAgIDB4MDAwODgwMDAgICAvKiBBc3luY2hyb25vdXMgZXZlbnRzICov CiAKICNkZWZpbmUgVFJDX1NDSEVEX01JTiAgICAgICAweDAwMDIxMDAwICAgLyogSnVzdCBydW5z dGF0ZSBjaGFuZ2VzICovCiAjZGVmaW5lIFRSQ19TQ0hFRF9DTEFTUyAgICAgMHgwMDAyMjAwMCAg IC8qIFNjaGVkdWxlci1zcGVjaWZpYyAgICAqLwpAQCAtMjM0LDYgKzIzNSw3IEBACiAjZGVmaW5l IFRSQ19IVk1fVFJBUCAgICAgICAgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgyMykKICNkZWZp bmUgVFJDX0hWTV9UUkFQX0RFQlVHICAgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAweDI0KQogI2Rl ZmluZSBUUkNfSFZNX1ZMQVBJQyAgICAgICAgICAgKFRSQ19IVk1fSEFORExFUiArIDB4MjUpCisj ZGVmaW5lIFRSQ19IVk1fUElfTElTVF9BREQgICAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgyNikK IAogI2RlZmluZSBUUkNfSFZNX0lPUE9SVF9XUklURSAgICAoVFJDX0hWTV9IQU5ETEVSICsgMHgy MTYpCiAjZGVmaW5lIFRSQ19IVk1fSU9NRU1fV1JJVEUgICAgIChUUkNfSFZNX0hBTkRMRVIgKyAw eDIxNykKQEAgLTI1Nyw2ICsyNTksOSBAQAogI2RlZmluZSBUUkNfSFZNX0VNVUxfUElDX1BFTkRf SVJRX0NBTEwgKFRSQ19IVk1fRU1VTCArIDB4MTApCiAjZGVmaW5lIFRSQ19IVk1fRU1VTF9MQVBJ Q19QSUNfSU5UUiAgICAoVFJDX0hWTV9FTVVMICsgMHgxMSkKIAorLyogVHJhY2UgYXN5bmNvbm91 cyBldmVudHMgZm9yIEhWTSAqLworI2RlZmluZSBUUkNfSFZNX0FTWU5DX1BJX0xJU1RfREVMICAg ICAgKFRSQ19IVk1fQVNZTkMgKyAweDEpCisKIC8qIHRyYWNlIGV2ZW50cyBmb3IgcGVyIGNsYXNz ICovCiAjZGVmaW5lIFRSQ19QTV9GUkVRX0NIQU5HRSAgICAgIChUUkNfSFdfUE0gKyAweDAxKQog I2RlZmluZSBUUkNfUE1fSURMRV9FTlRSWSAgICAgICAoVFJDX0hXX1BNICsgMHgwMikKLS0gCjEu OC4zLjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpY ZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlz dHMueGVuLm9yZy94ZW4tZGV2ZWwK