From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ilia.kurakin@intel.com>
Received: from mga11.intel.com (mga11.intel.com [192.55.52.93])
 by dpdk.org (Postfix) with ESMTP id 42F953977
 for <dev@dpdk.org>; Wed, 19 Jul 2017 10:55:07 +0200 (CEST)
Received: from fmsmga004.fm.intel.com ([10.253.24.48])
 by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;
 19 Jul 2017 01:55:06 -0700
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.40,380,1496127600"; d="scan'208";a="288698461"
Received: from nntvtune144.inn.intel.com ([10.125.21.144])
 by fmsmga004.fm.intel.com with ESMTP; 19 Jul 2017 01:55:03 -0700
From: ilia.kurakin@intel.com
To: dev@dpdk.org
Cc: jerin.jacob@caviumnetworks.com, konstantin.ananyev@intel.com,
 keith.wiles@intel.com, dmitry.galanov@intel.com,
 Ilia Kurakin <ilia.kurakin@intel.com>
Date: Wed, 19 Jul 2017 11:54:45 +0300
Message-Id: <1500454485-11156-1-git-send-email-ilia.kurakin@intel.com>
X-Mailer: git-send-email 2.7.4
In-Reply-To: <1500311700-5298-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
Subject: [dpdk-dev] [PATCH v5] ether: add support for vtune task tracing
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Wed, 19 Jul 2017 08:55:09 -0000

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=