From mboxrd@z Thu Jan 1 00:00:00 1970 From: ilia.kurakin@intel.com Subject: [PATCH v5] ether: add support for vtune task tracing Date: Wed, 19 Jul 2017 11:54:45 +0300 Message-ID: <1500454485-11156-1-git-send-email-ilia.kurakin@intel.com> References: <1500311700-5298-1-git-send-email-ilia.kurakin@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: jerin.jacob@caviumnetworks.com, konstantin.ananyev@intel.com, keith.wiles@intel.com, dmitry.galanov@intel.com, Ilia Kurakin To: dev@dpdk.org Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 42F953977 for ; Wed, 19 Jul 2017 10:55:07 +0200 (CEST) In-Reply-To: <1500311700-5298-1-git-send-email-ilia.kurakin@intel.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" RnJvbTogSWxpYSBLdXJha2luIDxpbGlhLmt1cmFraW5AaW50ZWwuY29tPgoKVGhlIHBhdGNoIGFk ZHMgdHJhY2luZyBvZiBsb29wIGl0ZXJhdGlvbnMgdGhhdCB5aWVsZGVkIG5vIHBhY2tldHMgaW4g YSBEUERLCmFwcGxpY2F0aW9uLiBJdCBpcyB1c2luZyBJVFQgdGFzayBBUEk6CiAgICBodHRwczov L3NvZnR3YXJlLmludGVsLmNvbS9lbi11cy9ub2RlLzU0NDIwNgoKV2Ugc3VwcG9zZSB0aGUgZmxv dyBvZiB1c2luZyB0aGlzIHRyYWNpbmcgd291bGQgYXNzdW1lIHRoZSB1c2VyIGhhcyBJVFQgbGli CmFuZCBoZWFkZXIgb24gbWFjaGluZSBhbmQgcmUtYnVpbGQgRFBESyB3aXRoIGFkZGl0aW9uYWwg bWFrZSBwYXJhbWV0ZXJzOgoKICAgIG1ha2UgRVhUUkFfQ0ZMQUdTPS1JPHBhdGggdG8gaXR0bm90 aWZ5Lmg+CiAgICAgICAgIEVYVFJBX0xETElCUz0iLUw8cGF0aCB0byBsaWJpdHRub3RpZnkuYT4g LWxpdHRub3RpZnkiCgpTaWduZWQtb2ZmLWJ5OiBJbGlhIEt1cmFraW4gPGlsaWEua3VyYWtpbkBp bnRlbC5jb20+CgotLS0KCi1WMiBjaGFuZ2U6CiAgICBJVFQgdGFza3MgY29sbGVjdGlvbiBpcyBt b3ZlZCB0byByeCBjYWxsYmFjawoKLVYzIGNoYW5nZToKICAgIHJ0ZV9ldGhkZXZfcHJvZmlsZS5j IGNyZWF0ZWQsIGFsbCBwcm9maWxlIHNwZWNpZmljIGNvZGUgbW92ZWQgdGhlcmUuCgogICAgQWRk ZWQgZ2VuZXJpYyBwcm9maWxlIGZ1bmN0aW9uCgotVjQgY2hhbmdlOgogICAgY2hlY2twYXRjaCBp c3N1ZXMgZml4ZWQKCiAgICBBZGRlZCBkb2N1bWVudGF0aW9uIHRvcGljCgotVjUgY2hhbmdlOgog ICAgRG9jdW1lbnRhdGlvbiBmaXhlcwoKCiBjb25maWcvY29tbW9uX2Jhc2UgICAgICAgICAgICAg ICAgICAgIHwgICAxICsKIGRvYy9ndWlkZXMvcHJvZ19ndWlkZS9wcm9maWxlX2FwcC5yc3QgfCAg MzQgKysrKysrKysKIGxpYi9saWJydGVfZXRoZXIvTWFrZWZpbGUgICAgICAgICAgICAgfCAgIDEg KwogbGliL2xpYnJ0ZV9ldGhlci9ydGVfZXRoZGV2LmMgICAgICAgICB8ICAgNCArCiBsaWIvbGli cnRlX2V0aGVyL3J0ZV9ldGhkZXZfcHJvZmlsZS5jIHwgMTU2ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKIGxpYi9saWJydGVfZXRoZXIvcnRlX2V0aGRldl9wcm9maWxlLmggfCAg NTIgKysrKysrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDI0OCBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgbGliL2xpYnJ0ZV9ldGhlci9ydGVfZXRoZGV2X3Byb2ZpbGUuYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IGxpYi9saWJydGVfZXRoZXIvcnRlX2V0aGRldl9wcm9maWxlLmgKCmRp ZmYgLS1naXQgYS9jb25maWcvY29tbW9uX2Jhc2UgYi9jb25maWcvY29tbW9uX2Jhc2UKaW5kZXgg OGFlNmU5Mi4uZGRhNTFkYiAxMDA2NDQKLS0tIGEvY29uZmlnL2NvbW1vbl9iYXNlCisrKyBiL2Nv bmZpZy9jb21tb25fYmFzZQpAQCAtMTM2LDYgKzEzNiw3IEBAIENPTkZJR19SVEVfTUFYX1FVRVVF U19QRVJfUE9SVD0xMDI0CiBDT05GSUdfUlRFX0xJQlJURV9JRUVFMTU4OD1uCiBDT05GSUdfUlRF X0VUSERFVl9RVUVVRV9TVEFUX0NOVFJTPTE2CiBDT05GSUdfUlRFX0VUSERFVl9SWFRYX0NBTExC QUNLUz15CitDT05GSUdfUlRFX0VUSERFVl9QUk9GSUxFX0lUVF9XQVNURURfUlhfSVRFUkFUSU9O Uz1uCiAKICMKICMgVHVybiBvZmYgVHggcHJlcGFyYXRpb24gc3RhZ2UKZGlmZiAtLWdpdCBhL2Rv Yy9ndWlkZXMvcHJvZ19ndWlkZS9wcm9maWxlX2FwcC5yc3QgYi9kb2MvZ3VpZGVzL3Byb2dfZ3Vp ZGUvcHJvZmlsZV9hcHAucnN0CmluZGV4IDU0YjU0NmEuLjU5MGNiNzIgMTAwNjQ0Ci0tLSBhL2Rv Yy9ndWlkZXMvcHJvZ19ndWlkZS9wcm9maWxlX2FwcC5yc3QKKysrIGIvZG9jL2d1aWRlcy9wcm9n X2d1aWRlL3Byb2ZpbGVfYXBwLnJzdApAQCAtNTksNiArNTksNDAgQEAgUmVmZXIgdG8gdGhlCiBm b3IgZGV0YWlscyBhYm91dCBhcHBsaWNhdGlvbiBwcm9maWxpbmcuCiAKIAorUHJvZmlsaW5nIHdh c3RlZCBpdGVyYXRpb25zIHdpdGggSVRUCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn4KKworSXRlcmF0aW9ucyB0aGF0IHlpZWxkZWQgbm8gUlggcGFja2V0cyAod2FzdGVkIGxv b3AgaXRlcmF0aW9ucykgY2FuIGJlIGFuYWx5emVkCit1c2luZyBJbnRlbMKuIFZUdW5lXCA6c3Vw OmBUTWAgQW1wbGlmaWVyLiBUaGlzIHByb2ZpbGluZyBlbXBsb3lzIHRoZQorYEluc3RydW1lbnRh dGlvbiBhbmQgVHJhY2luZyBUZWNobm9sb2d5IChJVFQpIEFQSQorPGh0dHBzOi8vc29mdHdhcmUu aW50ZWwuY29tL2VuLXVzL25vZGUvNTQ0MTk1PmBfCitmZWF0dXJlIG9mIFZUdW5lIEFtcGxpZmll ciBhbmQgcmVxdWlyZXMgb25seSByZWNvbmZpZ3VyaW5nIG9mIERQREsgbGlicmFyeSwKK25vIGNo YW5nZXMgaW4gYSBEUERLIGFwcGxpY2F0aW9uIGFyZSBuZWVkZWQuCisKK1RvIHRyYWNlIHdhc3Rl ZCBpdGVyYXRpb25zIG9uIFJYIHF1ZXVlcywgZmlyc3QgcmVjb25maWd1cmUgRFBESyB3aXRoCitg YENPTkZJR19SVEVfRVRIREVWX1JYVFhfQ0FMTEJBQ0tTYGAgYW5kCitgYENPTkZJR19SVEVfRVRI REVWX1BST0ZJTEVfSVRUX1dBU1RFRF9SWF9JVEVSQVRJT05TYGAgZW5hYmxlZC4KKworVGhlbiBy ZWJ1aWxkIERQREssIHNwZWNpZnlpbmcgcGF0aHMgdG8gdGhlIElUVCBoZWFkZXIgYW5kIGxpYnJh cnksIHdoaWNoIGNhbgorYmUgZm91bmQgaW4gYW55IFZUdW5lIEFtcGxpZmllciBkaXN0cmlidXRp b24gaW4gdGhlICppbmNsdWRlKiBhbmQgKmxpYioKK2RpcmVjdG9yaWVzIHJlc3BlY3RpdmVseToK KworLi4gY29kZS1ibG9jazo6IGNvbnNvbGUKKworICAgIG1ha2UgRVhUUkFfQ0ZMQUdTPS1JPHBh dGggdG8gaXR0bm90aWZ5Lmg+IFwKKyAgICAgICAgIEVYVFJBX0xETElCUz0iLUw8cGF0aCB0byBs aWJpdHRub3RpZnkuYT4gLWxpdHRub3RpZnkiCisKK0ZpbmFsbHksIHRvIHNlZSB3YXN0ZWQgaXRl cmF0aW9ucyBpbiB5b3VyIHBlcmZvcm1hbmNlIGFuYWx5c2lzIHJlc3VsdHMsCitzZWxlY3QgdGhl ICoiQW5hbHl6ZSB1c2VyIHRhc2tzLCBldmVudHMsIGFuZCBjb3VudGVycyIqIGNoZWNrYm94IGlu IHRoZQorKiJBbmFseXNpcyBUeXBlIiogdGFiIHdoZW4gY29uZmlndXJpbmcgYW5hbHlzaXMgdmlh IFZUdW5lIEFtcGxpZmllciBHVUkuCitBbHRlcm5hdGl2ZWx5LCB3aGVuIHJ1bm5pbmcgVlR1bmUg QW1wbGlmaWVyIHZpYSBjb21tYW5kIGxpbmUsIHNwZWNpZnkKK2BgLWtub2IgZW5hYmxlLXVzZXIt dGFza3M9dHJ1ZWBgIG9wdGlvbi4KKworQ29sbGVjdGVkIHJlZ2lvbnMgb2Ygd2FzdGVkIGl0ZXJh dGlvbnMgd2lsbCBiZSBtYXJrZWQgb24gVlR1bmUgQW1wbGlmaWVyJ3MKK3RpbWVsaW5lIGFzIElU VCB0YXNrcy4gVGhlc2UgSVRUIHRhc2tzIGhhdmUgcHJlZGVmaW5lZCBuYW1lcywgY29udGFpbmlu ZworRXRoZXJuZXQgZGV2aWNlIGFuZCBSWCBxdWV1ZSBpZGVudGlmaWVycy4KKworCiBQcm9maWxp bmcgb24gQVJNNjQKIC0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9saWIvbGlicnRl X2V0aGVyL01ha2VmaWxlIGIvbGliL2xpYnJ0ZV9ldGhlci9NYWtlZmlsZQppbmRleCBkYjY5MmFl Li43MjI0YTExIDEwMDY0NAotLS0gYS9saWIvbGlicnRlX2V0aGVyL01ha2VmaWxlCisrKyBiL2xp Yi9saWJydGVfZXRoZXIvTWFrZWZpbGUKQEAgLTQ2LDYgKzQ2LDcgQEAgTElCQUJJVkVSIDo9IDYK IFNSQ1MteSArPSBydGVfZXRoZGV2LmMKIFNSQ1MteSArPSBydGVfZmxvdy5jCiBTUkNTLXkgKz0g cnRlX3RtLmMKK1NSQ1MteSArPSBydGVfZXRoZGV2X3Byb2ZpbGUuYwogCiAjCiAjIEV4cG9ydCBp bmNsdWRlIGZpbGVzCmRpZmYgLS1naXQgYS9saWIvbGlicnRlX2V0aGVyL3J0ZV9ldGhkZXYuYyBi L2xpYi9saWJydGVfZXRoZXIvcnRlX2V0aGRldi5jCmluZGV4IGExYjc0NDcuLjJlYmEzNmUgMTAw NjQ0Ci0tLSBhL2xpYi9saWJydGVfZXRoZXIvcnRlX2V0aGRldi5jCisrKyBiL2xpYi9saWJydGVf ZXRoZXIvcnRlX2V0aGRldi5jCkBAIC02Nyw2ICs2Nyw3IEBACiAKICNpbmNsdWRlICJydGVfZXRo ZXIuaCIKICNpbmNsdWRlICJydGVfZXRoZGV2LmgiCisjaW5jbHVkZSAicnRlX2V0aGRldl9wcm9m aWxlLmgiCiAKIHN0YXRpYyBjb25zdCBjaGFyICpNWl9SVEVfRVRIX0RFVl9EQVRBID0gInJ0ZV9l dGhfZGV2X2RhdGEiOwogc3RydWN0IHJ0ZV9ldGhfZGV2IHJ0ZV9ldGhfZGV2aWNlc1tSVEVfTUFY X0VUSFBPUlRTXTsKQEAgLTgyNSw2ICs4MjYsOSBAQCBydGVfZXRoX2Rldl9jb25maWd1cmUodWlu dDhfdCBwb3J0X2lkLCB1aW50MTZfdCBuYl9yeF9xLCB1aW50MTZfdCBuYl90eF9xLAogCQlyZXR1 cm4gZGlhZzsKIAl9CiAKKwkvKiBTZWUgcnRlX2V0aGRldl9wcm9maWxlLmggdG8gZmluZCBjb21t ZW50cyBvbiBjb2RlIGJlbG93LiAqLworCXJ0ZV9ldGhfcHJvZmlsZV9yeF9pbml0KHBvcnRfaWQs IGRldik7CisKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9ldGhlci9y dGVfZXRoZGV2X3Byb2ZpbGUuYyBiL2xpYi9saWJydGVfZXRoZXIvcnRlX2V0aGRldl9wcm9maWxl LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI4M2M4YQotLS0gL2Rldi9u dWxsCisrKyBiL2xpYi9saWJydGVfZXRoZXIvcnRlX2V0aGRldl9wcm9maWxlLmMKQEAgLTAsMCAr MSwxNTYgQEAKKy8qLQorICogICBCU0QgTElDRU5TRQorICoKKyAqICAgQ29weXJpZ2h0KGMpIDIw MTAtMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICAgQWxs IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291 cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogICBtb2RpZmljYXRpb24s IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq ICAgYXJlIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgICAgbm90aWNlLCB0aGlzIGxp c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj b3B5cmlnaHQKKyAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorICogICAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5k L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgICAgZGlzdHJpYnV0 aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBJbnRlbCBDb3Jwb3JhdGlvbiBub3Ig dGhlIG5hbWVzIG9mIGl0cworICogICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgICBmcm9tIHRoaXMgc29m dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog ICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg Q09OVFJJQlVUT1JTCisgKiAgICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogICBBIFBB UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP UFlSSUdIVAorICogICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqICAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogICBMSU1JVEVEIFRP LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT RSwKKyAqICAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiAgIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqICAgKElOQ0xVRElORyBO RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF CisgKiAgIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPHJ0ZV9jb25maWcuaD4KKworI2lu Y2x1ZGUgInJ0ZV9ldGhkZXZfcHJvZmlsZS5oIgorCisvKioKKyAqIFRoaXMgY29uZGl0aW9uYWwg YmxvY2sgZW5hYmxlcyBSWCBxdWV1ZXMgcHJvZmlsaW5nIGJ5IHRyYWNraW5nIHdhc3RlZAorICog aXRlcmF0aW9ucywgaS5lLiBpdGVyYXRpb25zIHdoaWNoIHlpZWxkZWQgbm8gUlggcGFja2V0cy4g UHJvZmlsaW5nIGlzCisgKiBwZXJmb3JtZWQgdXNpbmcgdGhlIEluc3RydW1lbnRhdGlvbiBhbmQg VHJhY2luZyBUZWNobm9sb2d5IChJVFQpIEFQSSwKKyAqIGVtcGxveWVkIGJ5IHRoZSBJbnRlbCAo UikgVlR1bmUgKFRNKSBBbXBsaWZpZXIuCisgKi8KKyNpZmRlZiBSVEVfRVRIREVWX1BST0ZJTEVf SVRUX1dBU1RFRF9SWF9JVEVSQVRJT05TCisKKyNpbmNsdWRlIDxpdHRub3RpZnkuaD4KKworI2Rl ZmluZSBJVFRfTUFYX05BTUVfTEVOICgxMDApCisKKy8qKgorICogQXV4aWxpYXJ5IElUVCBzdHJ1 Y3R1cmUgYmVsb25naW5nIHRvIEV0aGVybmV0IGRldml2ZSBhbmQgdXNpbmcgdG86CisgKiAgIC0g IHRyYWNrIFJYIHF1ZXVlIHN0YXRlIHRvIGRldGVybWluZSB3aGV0aGVyIGl0IGlzIHdhc3Rpbmcg bG9vcCBpdGVyYXRpb25zCisgKiAgIC0gIGJlZ2luIG9yIGVuZCBJVFQgdGFzayB1c2luZyB0YXNr IGRvbWFpbiBhbmQgdGFzayBuYW1lIChoYW5kbGUpCisgKi8KK3N0cnVjdCBpdHRfcHJvZmlsZV9y eF9kYXRhIHsKKwkvKioKKwkgKiBJVFQgZG9tYWlucyBmb3IgZWFjaCBxdWV1ZS4KKwkgKi8KKwlf X2l0dF9kb21haW4gKmRvbWFpbnNbUlRFX01BWF9RVUVVRVNfUEVSX1BPUlRdOworCS8qKgorCSAq IElUVCB0YXNrIG5hbWVzIGZvciBlYWNoIHF1ZXVlLgorCSAqLworCV9faXR0X3N0cmluZ19oYW5k bGUgKmhhbmRsZXNbUlRFX01BWF9RVUVVRVNfUEVSX1BPUlRdOworCS8qKgorCSAqIEZsYWdzIGlu ZGljYXRpbmcgdGhlIHF1ZXVlcyBzdGF0ZS4gUG9zc2libGUgdmFsdWVzOgorCSAqICAgMSAtIHF1 ZXVlIGlzIHdhc3RpbmcgaXRlcmF0aW9ucywKKwkgKiAgIDAgLSBvdGhlcndpc2UuCisJICovCisJ dWludDhfdCBxdWV1ZV9zdGF0ZVtSVEVfTUFYX1FVRVVFU19QRVJfUE9SVF07Cit9OworCisvKioK KyAqIFRoZSBwb29sIG9mICppdHRfcHJvZmlsZV9yeF9kYXRhKiBzdHJ1Y3R1cmVzLgorICovCitz dHJ1Y3QgaXR0X3Byb2ZpbGVfcnhfZGF0YSBpdHRfcnhfZGF0YVtSVEVfTUFYX0VUSFBPUlRTXTsK KworCisvKioKKyAqIFRoaXMgY2FsbGJhY2sgZnVuY3Rpb24gbWFuYWdlcyBJVFQgdGFza3MgY29s bGVjdGlvbiBvbiBnaXZlbiBwb3J0IGFuZCBxdWV1ZS4KKyAqIEl0IG11c3QgYmUgcmVnaXN0ZXJl ZCB3aXRoIHJ0ZV9ldGhfYWRkX3J4X2NhbGxiYWNrKCkgdG8gYmUgY2FsbGVkIGZyb20KKyAqIHJ0 ZV9ldGhfcnhfYnVyc3QoKS4gVG8gZmluZCBtb3JlIGNvbW1lbnRzIHNlZSBydGVfcnhfY2FsbGJh Y2tfZm4gZnVuY3Rpb24KKyAqIHR5cGUgZGVjbGFyYXRpb24uCisgKi8KK3N0YXRpYyB1aW50MTZf dAorY29sbGVjdF9pdHRfcnhfYnVyc3RfY2IodWludDhfdCBwb3J0X2lkLCB1aW50MTZfdCBxdWV1 ZV9pZCwKKwlfX3J0ZV91bnVzZWQgc3RydWN0IHJ0ZV9tYnVmICpwa3RzW10sIHVpbnQxNl90IG5i X3BrdHMsCisJX19ydGVfdW51c2VkIHVpbnQxNl90IG1heF9wa3RzLCBfX3J0ZV91bnVzZWQgdm9p ZCAqdXNlcl9wYXJhbSkKK3sKKwlpZiAodW5saWtlbHkobmJfcGt0cyA9PSAwKSkgeworCQlpZiAo IWl0dF9yeF9kYXRhW3BvcnRfaWRdLnF1ZXVlX3N0YXRlW3F1ZXVlX2lkXSkgeworCQkJX19pdHRf dGFza19iZWdpbigKKwkJCQlpdHRfcnhfZGF0YVtwb3J0X2lkXS5kb21haW5zW3F1ZXVlX2lkXSwK KwkJCQlfX2l0dF9udWxsLCBfX2l0dF9udWxsLAorCQkJCWl0dF9yeF9kYXRhW3BvcnRfaWRdLmhh bmRsZXNbcXVldWVfaWRdKTsKKwkJCWl0dF9yeF9kYXRhW3BvcnRfaWRdLnF1ZXVlX3N0YXRlW3F1 ZXVlX2lkXSA9IDE7CisJCX0KKwl9IGVsc2UgeworCQlpZiAodW5saWtlbHkoaXR0X3J4X2RhdGFb cG9ydF9pZF0ucXVldWVfc3RhdGVbcXVldWVfaWRdKSkgeworCQkJX19pdHRfdGFza19lbmQoCisJ CQkJaXR0X3J4X2RhdGFbcG9ydF9pZF0uZG9tYWluc1txdWV1ZV9pZF0pOworCQkJaXR0X3J4X2Rh dGFbcG9ydF9pZF0ucXVldWVfc3RhdGVbcXVldWVfaWRdID0gMDsKKwkJfQorCX0KKwlyZXR1cm4g bmJfcGt0czsKK30KKworLyoqCisgKiBJbml0aWFsaXphdGlvbiBvZiBpdHRfcHJvZmlsZV9yeF9k YXRhIGZvciBhIGdpdmVuIEV0aGVybmV0IGRldmljZS4KKyAqIFRoaXMgZnVuY3Rpb24gbXVzdCBi ZSBpbnZva2VkIHdoZW4gZXRoZXJuZXQgZGV2aWNlIGlzIGJlaW5nIGNvbmZpZ3VyZWQuCisgKiBS ZXN1bHQgd2lsbCBiZSBzdG9yZWQgaW4gdGhlIGdsb2JhbCBhcnJheSAqaXR0X3J4X2RhdGEqLgor ICoKKyAqIEBwYXJhbSBwb3J0X2lkCisgKiAgVGhlIHBvcnQgaWRlbnRpZmllciBvZiB0aGUgRXRo ZXJuZXQgZGV2aWNlLgorICogQHBhcmFtIHBvcnRfbmFtZQorICogIFRoZSBuYW1lIG9mIHRoZSBF dGhlcm5ldCBkZXZpY2UuCisgKiBAcGFyYW0gcnhfcXVldWVfbnVtCisgKiAgVGhlIG51bWJlciBv ZiBSWCBxdWV1ZXMgb24gc3BlY2lmaWVkIHBvcnQuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAor aXR0X3Byb2ZpbGVfcnhfaW5pdCh1aW50OF90IHBvcnRfaWQsIGNoYXIgKnBvcnRfbmFtZSwgdWlu dDhfdCByeF9xdWV1ZV9udW0pCit7CisJdWludDE2X3QgcV9pZDsKKworCWZvciAocV9pZCA9IDA7 IHFfaWQgPCByeF9xdWV1ZV9udW07ICsrcV9pZCkgeworCQljaGFyIGRvbWFpbl9uYW1lW0lUVF9N QVhfTkFNRV9MRU5dOworCisJCXNucHJpbnRmKGRvbWFpbl9uYW1lLCBzaXplb2YoZG9tYWluX25h bWUpLAorCQkJIlJYQnVyc3QuV2FzdGVkSXRlcmF0aW9ucy5Qb3J0XyVzLlF1ZXVlXyVkIiwKKwkJ CXBvcnRfbmFtZSwgcV9pZCk7CisJCWl0dF9yeF9kYXRhW3BvcnRfaWRdLmRvbWFpbnNbcV9pZF0K KwkJCT0gX19pdHRfZG9tYWluX2NyZWF0ZShkb21haW5fbmFtZSk7CisKKwkJY2hhciB0YXNrX25h bWVbSVRUX01BWF9OQU1FX0xFTl07CisKKwkJc25wcmludGYodGFza19uYW1lLCBzaXplb2YodGFz a19uYW1lKSwKKwkJCSJwb3J0IGlkOiAlZDsgcXVldWUgaWQ6ICVkIiwKKwkJCXBvcnRfaWQsIHFf aWQpOworCQlpdHRfcnhfZGF0YVtwb3J0X2lkXS5oYW5kbGVzW3FfaWRdCisJCQk9IF9faXR0X3N0 cmluZ19oYW5kbGVfY3JlYXRlKHRhc2tfbmFtZSk7CisKKwkJaXR0X3J4X2RhdGFbcG9ydF9pZF0u cXVldWVfc3RhdGVbcV9pZF0gPSAwOworCisJCXJ0ZV9ldGhfYWRkX3J4X2NhbGxiYWNrKAorCQkJ cG9ydF9pZCwgcV9pZCwgY29sbGVjdF9pdHRfcnhfYnVyc3RfY2IsIE5VTEwpOworCX0KK30KKyNl bmRpZiAvKiBSVEVfRVRIREVWX1BST0ZJTEVfSVRUX1dBU1RFRF9SWF9JVEVSQVRJT05TICovCisK K3ZvaWQKK3J0ZV9ldGhfcHJvZmlsZV9yeF9pbml0KF9fcnRlX3VudXNlZCB1aW50OF90IHBvcnRf aWQsCisJX19ydGVfdW51c2VkIHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KQoreworI2lmZGVmIFJU RV9FVEhERVZfUFJPRklMRV9JVFRfV0FTVEVEX1JYX0lURVJBVElPTlMKKwlpdHRfcHJvZmlsZV9y eF9pbml0KHBvcnRfaWQsIGRldi0+ZGF0YS0+bmFtZSwgZGV2LT5kYXRhLT5uYl9yeF9xdWV1ZXMp OworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9saWIvbGlicnRlX2V0aGVyL3J0ZV9ldGhkZXZfcHJv ZmlsZS5oIGIvbGliL2xpYnJ0ZV9ldGhlci9ydGVfZXRoZGV2X3Byb2ZpbGUuaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWI3MmJkCi0tLSAvZGV2L251bGwKKysrIGIvbGli L2xpYnJ0ZV9ldGhlci9ydGVfZXRoZGV2X3Byb2ZpbGUuaApAQCAtMCwwICsxLDUyIEBACisvKi0K KyAqICAgQlNEIExJQ0VOU0UKKyAqCisgKiAgIENvcHlyaWdodChjKSAyMDEwLTIwMTcgSW50ZWwg Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgIEFsbCByaWdodHMgcmVzZXJ2 ZWQuCisgKgorICogICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5 IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiAgIGFyZSBtZXQ6Cisg KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp c2NsYWltZXIgaW4KKyAqICAgICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgICAgIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq IE5laXRoZXIgdGhlIG5hbWUgb2YgSW50ZWwgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBp dHMKKyAqICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqICAgVEhJUyBTT0ZUV0FS RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor ICogICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV RElORywgQlVUIE5PVAorICogICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqICAgQSBQQVJUSUNVTEFSIFBVUlBP U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqICAg T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs IElOQ0lERU5UQUwsCisgKiAgIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqICAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiAgIERBVEEs IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E IE9OIEFOWQorICogICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAgIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogICBPRiBUSElT IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN QUdFLgorICovCisKKyNpZm5kZWYgX1JURV9FVEhERVZfUFJPRklMRV9IXworI2RlZmluZSBfUlRF X0VUSERFVl9QUk9GSUxFX0hfCisKKyNpbmNsdWRlICJydGVfZXRoZGV2LmgiCisKKy8qKgorICog SW5pdGlhbGl6YXRpb24gb2YgcHJvZmlsaW5nIFJYIHF1ZXVlcyBmb3IgdGhlIEV0aGVybmV0IGRl dmljZS4KKyAqIEltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gZGVwZW5kcyBvbiBjaG9z ZW4gcHJvZmlsaW5nIG1ldGhvZCwKKyAqIGRlZmluZWQgaW4gY29uZmlncy4KKyAqCisgKiBAcGFy YW0gcG9ydF9pZAorICogIFRoZSBwb3J0IGlkZW50aWZpZXIgb2YgdGhlIEV0aGVybmV0IGRldmlj ZS4KKyAqIEBwYXJhbSBkZXYKKyAqICBQb2ludGVyIHRvIHN0cnVjdCBydGVfZXRoX2RldiBjb3Jy ZXNwb25kaW5nIHRvIGdpdmVuIHBvcnRfaWQuCisgKi8KK3ZvaWQKK3J0ZV9ldGhfcHJvZmlsZV9y eF9pbml0KHVpbnQ4X3QgcG9ydF9pZCwgc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpOworCisjZW5k aWYKLS0gCjIuNy40CgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSm9pbnQgU3RvY2sgQ29tcGFueSBJbnRlbCBBL08K UmVnaXN0ZXJlZCBsZWdhbCBhZGRyZXNzOiBLcnlsYXRza3kgSGlsbHMgQnVzaW5lc3MgUGFyaywK MTcgS3J5bGF0c2theWEgU3RyLiwgQmxkZyA0LCBNb3Njb3cgMTIxNjE0LApSdXNzaWFuIEZlZGVy YXRpb24KClRoaXMgZS1tYWlsIGFuZCBhbnkgYXR0YWNobWVudHMgbWF5IGNvbnRhaW4gY29uZmlk ZW50aWFsIG1hdGVyaWFsIGZvcgp0aGUgc29sZSB1c2Ugb2YgdGhlIGludGVuZGVkIHJlY2lwaWVu dChzKS4gQW55IHJldmlldyBvciBkaXN0cmlidXRpb24KYnkgb3RoZXJzIGlzIHN0cmljdGx5IHBy b2hpYml0ZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZApyZWNpcGllbnQsIHBsZWFzZSBj b250YWN0IHRoZSBzZW5kZXIgYW5kIGRlbGV0ZSBhbGwgY29waWVzLgo=