From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by dpdk.space (Postfix) with ESMTP id 4BA28A00E6 for ; Wed, 20 Mar 2019 14:53:27 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 613541B113; Wed, 20 Mar 2019 14:52:59 +0100 (CET) Received: from mx0b-00190b01.pphosted.com (mx0b-00190b01.pphosted.com [67.231.157.127]) by dpdk.org (Postfix) with ESMTP id 874275F2A for ; Wed, 20 Mar 2019 14:52:52 +0100 (CET) Received: from pps.filterd (m0122331.ppops.net [127.0.0.1]) by mx0b-00190b01.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x2KDqoXe025721; Wed, 20 Mar 2019 13:52:52 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=akamai.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=jan2016.eng; bh=dO9IIBUb/KotwGpSDQKxfoxAEUcLIgw0eUPSbVS26GA=; b=Rww9HZZYyoURmo7C76D1ldS0fgDAgW6PW5zow/hgqKYGNTO5uXZ18lpYAESHxbnRcuvY xpoFGBJ3ZE19lIwtepQks5+OXnBAHUN+o3fap/smpYxL8YIRPewtoMek0jNcYjSb4hM9 qqYaknBYDLjTYRQ4xowm8MabHDJRGJUitoLxf+FfJGdwf58HHHjgQh9+J9gkPdmassDc IpdPiRNPwMJV5CzBGhWpAPZmSEtg2W6oRU1KlYA83c+pivGbj/XCmNoe43DXRAlyfUvO EVTUefl+A2l5IfgOIk/nqwyCHQBpbiJ5KfizPBZrUjwE4Kv0KL+bcpCH+/T6MVLWdA2/ 4g== Received: from prod-mail-ppoint3 (a96-6-114-86.deploy.static.akamaitechnologies.com [96.6.114.86] (may be forged)) by mx0b-00190b01.pphosted.com with ESMTP id 2rbp6585ha-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 20 Mar 2019 13:52:51 +0000 Received: from pps.filterd (prod-mail-ppoint3.akamai.com [127.0.0.1]) by prod-mail-ppoint3.akamai.com (8.16.0.27/8.16.0.27) with SMTP id x2KDlQST021911; Wed, 20 Mar 2019 09:52:50 -0400 Received: from email.msg.corp.akamai.com ([172.27.25.31]) by prod-mail-ppoint3.akamai.com with ESMTP id 2r8vfyraa4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Wed, 20 Mar 2019 09:52:49 -0400 Received: from USTX2EX-DAG1MB3.msg.corp.akamai.com (172.27.27.103) by ustx2ex-dag1mb6.msg.corp.akamai.com (172.27.27.107) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Wed, 20 Mar 2019 06:52:45 -0700 Received: from USTX2EX-DAG1MB3.msg.corp.akamai.com ([172.27.27.103]) by ustx2ex-dag1mb3.msg.corp.akamai.com ([172.27.27.103]) with mapi id 15.00.1473.003; Wed, 20 Mar 2019 08:52:45 -0500 From: "Sanford, Robert" To: Erik Gabriel Carrillo , "thomas@monjalon.net" , "dev@dpdk.org" CC: "nhorman@tuxdriver.com" Thread-Topic: [PATCH v4 1/2] timer: allow timer management in shared memory Thread-Index: AQHU1EDuw0hakajaDke+tnCFUAJA1aYUsKQA Date: Wed, 20 Mar 2019 13:52:45 +0000 Message-ID: <40792313-7864-470F-B188-9AA1A0F072B8@akamai.com> References: <1544739996-26011-1-git-send-email-erik.g.carrillo@intel.com> <1551892822-23967-1-git-send-email-erik.g.carrillo@intel.com> <1551892822-23967-2-git-send-email-erik.g.carrillo@intel.com> In-Reply-To: <1551892822-23967-2-git-send-email-erik.g.carrillo@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Microsoft-MacOutlook/10.10.0.180812 x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [172.19.132.235] Content-Type: text/plain; charset="UTF-8" Content-ID: <869F80FE2F276F44AD527AE91E8B03B0@akamai.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-03-20_08:, , signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1903200106 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-03-20_08:, , signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1011 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1903200107 Subject: Re: [dpdk-dev] [PATCH v4 1/2] timer: allow timer management in shared memory X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Message-ID: <20190320135245._Zz7Q1qnhwI9Ubo1RMpjX-LRchSyMr00Ja5KKhRJXBc@z> SGkgRXJpaywNCg0KSSBoYXZlIGEgZmV3IHF1ZXN0aW9ucyBhbmQgY29tbWVudHMgb24gdGhpcyBw YXRjaCBzZXJpZXMuDQoNCjEuIERvbid0IHlvdSB0aGluayB3ZSBuZWVkIG5ldyB0ZXN0cyAoaW4g dGVzdC90ZXN0LykgdG8gdmVyaWZ5IHRoZSBzZWNvbmRhcnktcHJvY2VzcyBBUElzPw0KMi4gSSBz dWdnZXN0IHdlIGRlZmluZSBkZWZhdWx0X2RhdGFfaWQgYXMgY29uc3QsIGFuZCBleHBsaWNpdGx5 IHNldCBpdCB0byAwLg0KMy4gVGhlIG91dGVyIGZvci1sb29wIGluIHJ0ZV90aW1lcl9hbHRfbWFu YWdlKCkgdG91Y2hlcyBiZXlvbmQgdGhlIGVuZCBvZiBwb2xsX2xjb3Jlc1tdLiBJIHN1Z2dlc3Qg YSBjaGFuZ2UgbGlrZSB0aGlzOg0KDQotICAgICAgIGZvciAoaSA9IDAsIHBvbGxfbGNvcmUgPSBw b2xsX2xjb3Jlc1tpXTsgaSA8IG5iX3BvbGxfbGNvcmVzOw0KLSAgICAgICAgICAgIHBvbGxfbGNv cmUgPSBwb2xsX2xjb3Jlc1srK2ldKSB7DQorICAgICAgIGZvciAoaSA9IDA7IEkgPCBuYl9wb2xs X2xjb3JlczsgaSsrKSB7DQorICAgICAgICAgICAgcG9sbF9sY29yZSA9IHBvbGxfbGNvcmVzW2ld Ow0KDQo0LiBTYW1lIHByb2JsZW0gKGFzICMzKSBpbiB0aGUgZm9yLWxvb3AgaW4gcnRlX3RpbWVy X3N0b3BfYWxsKCksIGluIHBhdGNoIHY0IDIvMi4NCjUuIFRoZXJlIHNlZW1zIHRvIGJlIG5vIGRp ZmZlcmVuY2UgYmV0d2VlbiAidHlwZWRlZiB2b2lkICgqcnRlX3RpbWVyX2NiX3QpKHN0cnVjdCBy dGVfdGltZXIgKiwgdm9pZCAqKSIgYW5kICJ0eXBlZGVmIHZvaWQgKCpydGVfdGltZXJfc3RvcF9h bGxfY2JfdCkoc3RydWN0IHJ0ZV90aW1lciAqdGltLCB2b2lkICphcmcpIiwgd2h5IGFkZCBydGVf dGltZXJfc3RvcF9hbGxfY2JfdD8NCjYuIENhbiB5b3UgcHJvdmlkZSBhIHVzZSBjYXNlIG9yIGNv ZGUgc25pcHBldCB0aGF0IHNob3dzIGhvdyB3ZSB3aWxsIHVzZSBydGVfdGltZXJfYWx0X21hbmFn ZSgpPw0KNy4gV2h5IG5vdCBtYWtlIHRoZSBhcmd1bWVudCB0byBydGVfdGltZXJfYWx0X21hbmFn ZV9jYl90IGEgInN0cnVjdCBydGVfdGltZXIgKiIsIGluc3RlYWQgb2YgYSAidm9pZCAqIiwgc2lu Y2Ugd2UgcGFzcyBhIHBvaW50ZXItdG8tdGltZXIgd2hlbiB3ZSBpbnZva2UgdGhlIGZ1bmN0aW9u Pw0KDQotLQ0KUmVnYXJkcywNClJvYmVydCBTYW5mb3JkDQoNCg0K77u/T24gMy82LzE5LCAxMjoy MCBQTSwgIkVyaWsgR2FicmllbCBDYXJyaWxsbyIgPGVyaWsuZy5jYXJyaWxsb0BpbnRlbC5jb20+ IHdyb3RlOg0KDQpDdXJyZW50bHksIHRoZSB0aW1lciBsaWJyYXJ5IHVzZXMgYSBwZXItcHJvY2Vz cyB0YWJsZSBvZiBzdHJ1Y3R1cmVzIHRvDQptYW5hZ2Ugc2tpcGxpc3RzIG9mIHRpbWVycyBwcmVz dW1hYmx5IGJlY2F1c2UgdGltZXJzIGNvbnRhaW4gYXJiaXRyYXJ5DQpmdW5jdGlvbiBwb2ludGVy cyB3aG9zZSB2YWx1ZSBtYXkgbm90IHJlc29sdmUgcHJvcGVybHkgaW4gb3RoZXINCnByb2Nlc3Nl cy4NCg0KSG93ZXZlciwgaWYgdGhlIHNhbWUgY2FsbGJhY2sgaXMgdXNlZCBoYW5kbGUgYWxsIHRp bWVycywgYW5kIHRoYXQNCmNhbGxiYWNrIGlzIG9ubHkgaW52b2tlZCBpbiBvbmUgcHJvY2Vzcywg dGhlbiBpdCB3b3VkIGJlIHNhZmUgdG8gYWxsb3cNCnRoZSBkYXRhIHN0cnVjdHVyZXMgdG8gYmUg YWxsb2NhdGVkIGluIHNoYXJlZCBtZW1vcnksIGFuZCB0byBhbGxvdw0Kc2Vjb25kYXJ5IHByb2Nl c3NlcyB0byBtb2RpZnkgdGhlIHRpbWVyIGxpc3RzLiAgVGhpcyB3b3VsZCBsZXQgdGltZXJzIGJl DQp1c2VkIGluIG1vcmUgbXVsdGktcHJvY2VzcyBzY2VuYXJpb3MuDQoNClRoZSBsaWJyYXJ5J3Mg Z2xvYmFsIHZhcmlhYmxlcyBhcmUgd3JhcHBlZCB3aXRoIGEgc3RydWN0LCBhbmQgYW4gYXJyYXkN Cm9mIHRoZXNlIHN0cnVjdHVyZXMgaXMgY3JlYXRlZCBpbiBzaGFyZWQgbWVtb3J5LiAgVGhlIG9y aWdpbmFsIEFQSXMNCmFyZSB1cGRhdGVkIHRvIHJlZmVyZW5jZSB0aGUgemVyb3RoIGVudHJ5IGlu IHRoZSBhcnJheS4gVGhpcyBtYWludGFpbnMNCnRoZSBvcmlnaW5hbCBiZWhhdmlvciBmb3IgYm90 aCBwcmltYXJ5IGFuZCBzZWNvbmRhcnkgcHJvY2Vzc2VzIHNpbmNlDQp0aGUgc2V0IGludGVyc2Vj dGlvbiBvZiB0aGVpciBjb3JlbWFza3Mgc2hvdWxkIGJlIGVtcHR5IFsxXS4gIE5ldyBBUElzDQph cmUgaW50cm9kdWNlZCB0byBlbmFibGUgdGhlIGFsbG9jYXRpb24vZGVhbGxvY2F0aW9uIG9mIG90 aGVyIGVudHJpZXMNCmluIHRoZSBhcnJheS4NCg0KTmV3IHZhcmlhbnRzIG9mIHRoZSBBUElzIHVz ZWQgdG8gc3RhcnQgYW5kIHN0b3AgdGltZXJzIGFyZSBpbnRyb2R1Y2VkOw0KdGhleSBhbGxvdyBh IGNhbGxlciB0byBzcGVjaWZ5IHdoaWNoIGFycmF5IGVudHJ5IHNob3VsZCBiZSB1c2VkIHRvDQps b2NhdGUgdGhlIHRpbWVyIGxpc3QgdG8gaW5zZXJ0IGludG8gb3IgZGVsZXRlIGZyb20uDQoNCkZp bmFsbHksIGEgbmV3IHZhcmlhbnQgb2YgcnRlX3RpbWVyX21hbmFnZSgpIGlzIGludHJvZHVjZWQs IHdoaWNoDQphbGxvd3MgYSBjYWxsZXIgdG8gc3BlY2lmeSB3aGljaCBhcnJheSBlbnRyeSBzaG91 bGQgYmUgdXNlZCB0byBsb2NhdGUNCnRoZSB0aW1lciBsaXN0cyB0byBwcm9jZXNzOyBpdCBjYW4g YWxzbyBwcm9jZXNzIG11bHRpcGxlIHRpbWVyIGxpc3RzIHBlcg0KaW52b2NhdGlvbi4NCg0KWzFd IGh0dHBzOi8vZG9jLmRwZGsub3JnL2d1aWRlcy9wcm9nX2d1aWRlL211bHRpX3Byb2Nfc3VwcG9y dC5odG1sI211bHRpLXByb2Nlc3MtbGltaXRhdGlvbnMNCg0KU2lnbmVkLW9mZi1ieTogRXJpayBH YWJyaWVsIENhcnJpbGxvIDxlcmlrLmcuY2FycmlsbG9AaW50ZWwuY29tPg0KLS0tDQogbGliL2xp YnJ0ZV90aW1lci9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDEgKw0KIGxpYi9saWJydGVfdGlt ZXIvcnRlX3RpbWVyLmMgICAgICAgICAgIHwgNTE5ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLQ0KIGxpYi9saWJydGVfdGltZXIvcnRlX3RpbWVyLmggICAgICAgICAgIHwgMjI2ICsr KysrKysrKysrKystDQogbGliL2xpYnJ0ZV90aW1lci9ydGVfdGltZXJfdmVyc2lvbi5tYXAgfCAg MjIgKysNCiA0IGZpbGVzIGNoYW5nZWQsIDcyMyBpbnNlcnRpb25zKCspLCA0NSBkZWxldGlvbnMo LSkNCg0KZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfdGltZXIvTWFrZWZpbGUgYi9saWIvbGlicnRl X3RpbWVyL01ha2VmaWxlDQppbmRleCA0ZWJkNTI4Li44ZWM2M2Y0IDEwMDY0NA0KLS0tIGEvbGli L2xpYnJ0ZV90aW1lci9NYWtlZmlsZQ0KKysrIGIvbGliL2xpYnJ0ZV90aW1lci9NYWtlZmlsZQ0K QEAgLTYsNiArNiw3IEBAIGluY2x1ZGUgJChSVEVfU0RLKS9tay9ydGUudmFycy5taw0KICMgbGli cmFyeSBuYW1lDQogTElCID0gbGlicnRlX3RpbWVyLmENCiANCitDRkxBR1MgKz0gLURBTExPV19F WFBFUklNRU5UQUxfQVBJDQogQ0ZMQUdTICs9ICQoV0VSUk9SX0ZMQUdTKSAtSSQoU1JDRElSKSAt TzMNCiBMRExJQlMgKz0gLWxydGVfZWFsDQogDQpkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV90aW1l ci9ydGVfdGltZXIuYyBiL2xpYi9saWJydGVfdGltZXIvcnRlX3RpbWVyLmMNCmluZGV4IDMwYzdi MGEuLjJiZDQ5ZDAgMTAwNjQ0DQotLS0gYS9saWIvbGlicnRlX3RpbWVyL3J0ZV90aW1lci5jDQor KysgYi9saWIvbGlicnRlX3RpbWVyL3J0ZV90aW1lci5jDQpAQCAtNSw2ICs1LDcgQEANCiAjaW5j bHVkZSA8c3RyaW5nLmg+DQogI2luY2x1ZGUgPHN0ZGlvLmg+DQogI2luY2x1ZGUgPHN0ZGludC5o Pg0KKyNpbmNsdWRlIDxzdGRib29sLmg+DQogI2luY2x1ZGUgPGludHR5cGVzLmg+DQogI2luY2x1 ZGUgPGFzc2VydC5oPg0KICNpbmNsdWRlIDxzeXMvcXVldWUuaD4NCkBAIC0yMSwxMSArMjIsMTUg QEANCiAjaW5jbHVkZSA8cnRlX3NwaW5sb2NrLmg+DQogI2luY2x1ZGUgPHJ0ZV9yYW5kb20uaD4N CiAjaW5jbHVkZSA8cnRlX3BhdXNlLmg+DQorI2luY2x1ZGUgPHJ0ZV9tZW16b25lLmg+DQorI2lu Y2x1ZGUgPHJ0ZV9tYWxsb2MuaD4NCisjaW5jbHVkZSA8cnRlX2NvbXBhdC5oPg0KIA0KICNpbmNs dWRlICJydGVfdGltZXIuaCINCiANCi1MSVNUX0hFQUQocnRlX3RpbWVyX2xpc3QsIHJ0ZV90aW1l cik7DQotDQorLyoqDQorICogUGVyLWxjb3JlIGluZm8gZm9yIHRpbWVycy4NCisgKi8NCiBzdHJ1 Y3QgcHJpdl90aW1lciB7DQogCXN0cnVjdCBydGVfdGltZXIgcGVuZGluZ19oZWFkOyAgLyoqPCBk dW1teSB0aW1lciBpbnN0YW5jZSB0byBoZWFkIHVwIGxpc3QgKi8NCiAJcnRlX3NwaW5sb2NrX3Qg bGlzdF9sb2NrOyAgICAgICAvKio8IGxvY2sgdG8gcHJvdGVjdCBsaXN0IGFjY2VzcyAqLw0KQEAg LTQ4LDI1ICs1Myw4NCBAQCBzdHJ1Y3QgcHJpdl90aW1lciB7DQogI2VuZGlmDQogfSBfX3J0ZV9j YWNoZV9hbGlnbmVkOw0KIA0KLS8qKiBwZXItbGNvcmUgcHJpdmF0ZSBpbmZvIGZvciB0aW1lcnMg Ki8NCi1zdGF0aWMgc3RydWN0IHByaXZfdGltZXIgcHJpdl90aW1lcltSVEVfTUFYX0xDT1JFXTsN CisjZGVmaW5lIEZMX0FMTE9DQVRFRAkoMSA8PCAwKQ0KK3N0cnVjdCBydGVfdGltZXJfZGF0YSB7 DQorCXN0cnVjdCBwcml2X3RpbWVyIHByaXZfdGltZXJbUlRFX01BWF9MQ09SRV07DQorCXVpbnQ4 X3QgaW50ZXJuYWxfZmxhZ3M7DQorfTsNCisNCisjZGVmaW5lIFJURV9NQVhfREFUQV9FTFMgNjQN CitzdGF0aWMgc3RydWN0IHJ0ZV90aW1lcl9kYXRhICpydGVfdGltZXJfZGF0YV9hcnI7DQorc3Rh dGljIHVpbnQzMl90IGRlZmF1bHRfZGF0YV9pZDsNCitzdGF0aWMgdWludDMyX3QgcnRlX3RpbWVy X3N1YnN5c3RlbV9pbml0aWFsaXplZDsNCisNCisvKiBGb3IgbWFpbnRhaW5pbmcgb2xkZXIgaW50 ZXJmYWNlcyBmb3IgYSBwZXJpb2QgKi8NCitzdGF0aWMgc3RydWN0IHJ0ZV90aW1lcl9kYXRhIGRl ZmF1bHRfdGltZXJfZGF0YTsNCiANCiAvKiB3aGVuIGRlYnVnIGlzIGVuYWJsZWQsIHN0b3JlIHNv bWUgc3RhdGlzdGljcyAqLw0KICNpZmRlZiBSVEVfTElCUlRFX1RJTUVSX0RFQlVHDQotI2RlZmlu ZSBfX1RJTUVSX1NUQVRfQUREKG5hbWUsIG4pIGRvIHsJCQkJCVwNCisjZGVmaW5lIF9fVElNRVJf U1RBVF9BREQocHJpdl90aW1lciwgbmFtZSwgbikgZG8gewkJCVwNCiAJCXVuc2lnbmVkIF9fbGNv cmVfaWQgPSBydGVfbGNvcmVfaWQoKTsJCQlcDQogCQlpZiAoX19sY29yZV9pZCA8IFJURV9NQVhf TENPUkUpCQkJCVwNCiAJCQlwcml2X3RpbWVyW19fbGNvcmVfaWRdLnN0YXRzLm5hbWUgKz0gKG4p OwlcDQogCX0gd2hpbGUoMCkNCiAjZWxzZQ0KLSNkZWZpbmUgX19USU1FUl9TVEFUX0FERChuYW1l LCBuKSBkbyB7fSB3aGlsZSgwKQ0KKyNkZWZpbmUgX19USU1FUl9TVEFUX0FERChwcml2X3RpbWVy LCBuYW1lLCBuKSBkbyB7fSB3aGlsZSAoMCkNCiAjZW5kaWYNCiANCi0vKiBJbml0IHRoZSB0aW1l ciBsaWJyYXJ5LiAqLw0KK3N0YXRpYyBpbmxpbmUgaW50DQordGltZXJfZGF0YV92YWxpZCh1aW50 MzJfdCBpZCkNCit7DQorCXJldHVybiAhIShydGVfdGltZXJfZGF0YV9hcnJbaWRdLmludGVybmFs X2ZsYWdzICYgRkxfQUxMT0NBVEVEKTsNCit9DQorDQorLyogdmFsaWRhdGUgSUQgYW5kIHJldHJp ZXZlIHRpbWVyIGRhdGEgcG9pbnRlciwgb3IgcmV0dXJuIGVycm9yIHZhbHVlICovDQorI2RlZmlu ZSBUSU1FUl9EQVRBX1ZBTElEX0dFVF9PUl9FUlJfUkVUKGlkLCB0aW1lcl9kYXRhLCByZXR2YWwp IGRvIHsJXA0KKwlpZiAoaWQgPj0gUlRFX01BWF9EQVRBX0VMUyB8fCAhdGltZXJfZGF0YV92YWxp ZChpZCkpCQlcDQorCQlyZXR1cm4gcmV0dmFsOwkJCQkJCVwNCisJdGltZXJfZGF0YSA9ICZydGVf dGltZXJfZGF0YV9hcnJbaWRdOwkJCQlcDQorfSB3aGlsZSAoMCkNCisNCitpbnQgX19ydGVfZXhw ZXJpbWVudGFsDQorcnRlX3RpbWVyX2RhdGFfYWxsb2ModWludDMyX3QgKmlkX3B0cikNCit7DQor CWludCBpOw0KKwlzdHJ1Y3QgcnRlX3RpbWVyX2RhdGEgKmRhdGE7DQorDQorCWlmICghcnRlX3Rp bWVyX3N1YnN5c3RlbV9pbml0aWFsaXplZCkNCisJCXJldHVybiAtRU5PTUVNOw0KKw0KKwlmb3Ig KGkgPSAwOyBpIDwgUlRFX01BWF9EQVRBX0VMUzsgaSsrKSB7DQorCQlkYXRhID0gJnJ0ZV90aW1l cl9kYXRhX2FycltpXTsNCisJCWlmICghKGRhdGEtPmludGVybmFsX2ZsYWdzICYgRkxfQUxMT0NB VEVEKSkgew0KKwkJCWRhdGEtPmludGVybmFsX2ZsYWdzIHw9IEZMX0FMTE9DQVRFRDsNCisNCisJ CQlpZiAoaWRfcHRyKQ0KKwkJCQkqaWRfcHRyID0gaTsNCisNCisJCQlyZXR1cm4gMDsNCisJCX0N CisJfQ0KKw0KKwlyZXR1cm4gLUVOT1NQQzsNCit9DQorDQoraW50IF9fcnRlX2V4cGVyaW1lbnRh bA0KK3J0ZV90aW1lcl9kYXRhX2RlYWxsb2ModWludDMyX3QgaWQpDQorew0KKwlzdHJ1Y3QgcnRl X3RpbWVyX2RhdGEgKnRpbWVyX2RhdGE7DQorCVRJTUVSX0RBVEFfVkFMSURfR0VUX09SX0VSUl9S RVQoaWQsIHRpbWVyX2RhdGEsIC1FSU5WQUwpOw0KKw0KKwl0aW1lcl9kYXRhLT5pbnRlcm5hbF9m bGFncyAmPSB+KEZMX0FMTE9DQVRFRCk7DQorDQorCXJldHVybiAwOw0KK30NCisNCiB2b2lkDQot cnRlX3RpbWVyX3N1YnN5c3RlbV9pbml0KHZvaWQpDQorcnRlX3RpbWVyX3N1YnN5c3RlbV9pbml0 X3YyMCh2b2lkKQ0KIHsNCiAJdW5zaWduZWQgbGNvcmVfaWQ7DQorCXN0cnVjdCBwcml2X3RpbWVy ICpwcml2X3RpbWVyID0gZGVmYXVsdF90aW1lcl9kYXRhLnByaXZfdGltZXI7DQogDQogCS8qIHNp bmNlIHByaXZfdGltZXIgaXMgc3RhdGljLCBpdCdzIHplcm9lZCBieSBkZWZhdWx0LCBzbyBvbmx5 IGluaXQgc29tZQ0KIAkgKiBmaWVsZHMuDQpAQCAtNzYsNiArMTQwLDc2IEBAIHJ0ZV90aW1lcl9z dWJzeXN0ZW1faW5pdCh2b2lkKQ0KIAkJcHJpdl90aW1lcltsY29yZV9pZF0ucHJldl9sY29yZSA9 IGxjb3JlX2lkOw0KIAl9DQogfQ0KK1ZFUlNJT05fU1lNQk9MKHJ0ZV90aW1lcl9zdWJzeXN0ZW1f aW5pdCwgX3YyMCwgMi4wKTsNCisNCisvKiBJbml0IHRoZSB0aW1lciBsaWJyYXJ5LiBBbGxvY2F0 ZSBhbiBhcnJheSBvZiB0aW1lciBkYXRhIHN0cnVjdHMgaW4gc2hhcmVkDQorICogbWVtb3J5LCBh bmQgYWxsb2NhdGUgdGhlIHplcm90aCBlbnRyeSBmb3IgdXNlIHdpdGggb3JpZ2luYWwgdGltZXIN CisgKiBBUElzLiBTaW5jZSB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZSBzZXRzIG9mIGxjb3JlIGlk cyBpbiBwcmltYXJ5IGFuZA0KKyAqIHNlY29uZGFyeSBwcm9jZXNzZXMgc2hvdWxkIGJlIGVtcHR5 LCB0aGUgemVyb3RoIGVudHJ5IGNhbiBiZSBzaGFyZWQgYnkNCisgKiBtdWx0aXBsZSBwcm9jZXNz ZXMuDQorICovDQoraW50DQorcnRlX3RpbWVyX3N1YnN5c3RlbV9pbml0X3YxOTA1KHZvaWQpDQor ew0KKwljb25zdCBzdHJ1Y3QgcnRlX21lbXpvbmUgKm16Ow0KKwlzdHJ1Y3QgcnRlX3RpbWVyX2Rh dGEgKmRhdGE7DQorCWludCBpLCBsY29yZV9pZDsNCisJc3RhdGljIGNvbnN0IGNoYXIgKm16X25h bWUgPSAicnRlX3RpbWVyX216IjsNCisNCisJaWYgKHJ0ZV90aW1lcl9zdWJzeXN0ZW1faW5pdGlh bGl6ZWQpDQorCQlyZXR1cm4gLUVBTFJFQURZOw0KKw0KKwlpZiAocnRlX2VhbF9wcm9jZXNzX3R5 cGUoKSAhPSBSVEVfUFJPQ19QUklNQVJZKSB7DQorCQlteiA9IHJ0ZV9tZW16b25lX2xvb2t1cCht el9uYW1lKTsNCisJCWlmIChteiA9PSBOVUxMKQ0KKwkJCXJldHVybiAtRUVYSVNUOw0KKw0KKwkJ cnRlX3RpbWVyX2RhdGFfYXJyID0gbXotPmFkZHI7DQorDQorCQlydGVfdGltZXJfZGF0YV9hcnJb ZGVmYXVsdF9kYXRhX2lkXS5pbnRlcm5hbF9mbGFncyB8PQ0KKwkJCUZMX0FMTE9DQVRFRDsNCisN CisJCXJ0ZV90aW1lcl9zdWJzeXN0ZW1faW5pdGlhbGl6ZWQgPSAxOw0KKw0KKwkJcmV0dXJuIDA7 DQorCX0NCisNCisJbXogPSBydGVfbWVtem9uZV9yZXNlcnZlX2FsaWduZWQobXpfbmFtZSwNCisJ CQlSVEVfTUFYX0RBVEFfRUxTICogc2l6ZW9mKCpydGVfdGltZXJfZGF0YV9hcnIpLA0KKwkJCVNP Q0tFVF9JRF9BTlksIDAsIFJURV9DQUNIRV9MSU5FX1NJWkUpOw0KKwlpZiAobXogPT0gTlVMTCkN CisJCXJldHVybiAtRU5PTUVNOw0KKw0KKwlydGVfdGltZXJfZGF0YV9hcnIgPSBtei0+YWRkcjsN CisNCisJZm9yIChpID0gMDsgaSA8IFJURV9NQVhfREFUQV9FTFM7IGkrKykgew0KKwkJZGF0YSA9 ICZydGVfdGltZXJfZGF0YV9hcnJbaV07DQorDQorCQlmb3IgKGxjb3JlX2lkID0gMDsgbGNvcmVf aWQgPCBSVEVfTUFYX0xDT1JFOyBsY29yZV9pZCsrKSB7DQorCQkJcnRlX3NwaW5sb2NrX2luaXQo DQorCQkJCSZkYXRhLT5wcml2X3RpbWVyW2xjb3JlX2lkXS5saXN0X2xvY2spOw0KKwkJCWRhdGEt PnByaXZfdGltZXJbbGNvcmVfaWRdLnByZXZfbGNvcmUgPSBsY29yZV9pZDsNCisJCX0NCisJfQ0K Kw0KKwlydGVfdGltZXJfZGF0YV9hcnJbZGVmYXVsdF9kYXRhX2lkXS5pbnRlcm5hbF9mbGFncyB8 PSBGTF9BTExPQ0FURUQ7DQorDQorCXJ0ZV90aW1lcl9zdWJzeXN0ZW1faW5pdGlhbGl6ZWQgPSAx Ow0KKw0KKwlyZXR1cm4gMDsNCit9DQorTUFQX1NUQVRJQ19TWU1CT0woaW50IHJ0ZV90aW1lcl9z dWJzeXN0ZW1faW5pdCh2b2lkKSwNCisJCSAgcnRlX3RpbWVyX3N1YnN5c3RlbV9pbml0X3YxOTA1 KTsNCitCSU5EX0RFRkFVTFRfU1lNQk9MKHJ0ZV90aW1lcl9zdWJzeXN0ZW1faW5pdCwgX3YxOTA1 LCAxOS4wNSk7DQorDQordm9pZCBfX3J0ZV9leHBlcmltZW50YWwNCitydGVfdGltZXJfc3Vic3lz dGVtX2ZpbmFsaXplKHZvaWQpDQorew0KKwlpZiAocnRlX3RpbWVyX2RhdGFfYXJyKQ0KKwkJcnRl X2ZyZWUocnRlX3RpbWVyX2RhdGFfYXJyKTsNCisNCisJcnRlX3RpbWVyX3N1YnN5c3RlbV9pbml0 aWFsaXplZCA9IDA7DQorfQ0KIA0KIC8qIEluaXRpYWxpemUgdGhlIHRpbWVyIGhhbmRsZSB0aW0g Zm9yIHVzZSAqLw0KIHZvaWQNCkBAIC05NSw3ICsyMjksOCBAQCBydGVfdGltZXJfaW5pdChzdHJ1 Y3QgcnRlX3RpbWVyICp0aW0pDQogICovDQogc3RhdGljIGludA0KIHRpbWVyX3NldF9jb25maWdf c3RhdGUoc3RydWN0IHJ0ZV90aW1lciAqdGltLA0KLQkJICAgICAgIHVuaW9uIHJ0ZV90aW1lcl9z dGF0dXMgKnJldF9wcmV2X3N0YXR1cykNCisJCSAgICAgICB1bmlvbiBydGVfdGltZXJfc3RhdHVz ICpyZXRfcHJldl9zdGF0dXMsDQorCQkgICAgICAgc3RydWN0IHByaXZfdGltZXIgKnByaXZfdGlt ZXIpDQogew0KIAl1bmlvbiBydGVfdGltZXJfc3RhdHVzIHByZXZfc3RhdHVzLCBzdGF0dXM7DQog CWludCBzdWNjZXNzID0gMDsNCkBAIC0yMDcsNyArMzQyLDcgQEAgdGltZXJfZ2V0X3NraXBsaXN0 X2xldmVsKHVuc2lnbmVkIGN1cnJfZGVwdGgpDQogICovDQogc3RhdGljIHZvaWQNCiB0aW1lcl9n ZXRfcHJldl9lbnRyaWVzKHVpbnQ2NF90IHRpbWVfdmFsLCB1bnNpZ25lZCB0aW1fbGNvcmUsDQot CQlzdHJ1Y3QgcnRlX3RpbWVyICoqcHJldikNCisJCSAgICAgICBzdHJ1Y3QgcnRlX3RpbWVyICoq cHJldiwgc3RydWN0IHByaXZfdGltZXIgKnByaXZfdGltZXIpDQogew0KIAl1bnNpZ25lZCBsdmwg PSBwcml2X3RpbWVyW3RpbV9sY29yZV0uY3Vycl9za2lwbGlzdF9kZXB0aDsNCiAJcHJldltsdmxd ID0gJnByaXZfdGltZXJbdGltX2xjb3JlXS5wZW5kaW5nX2hlYWQ7DQpAQCAtMjI2LDEzICszNjEs MTUgQEAgdGltZXJfZ2V0X3ByZXZfZW50cmllcyh1aW50NjRfdCB0aW1lX3ZhbCwgdW5zaWduZWQg dGltX2xjb3JlLA0KICAqLw0KIHN0YXRpYyB2b2lkDQogdGltZXJfZ2V0X3ByZXZfZW50cmllc19m b3Jfbm9kZShzdHJ1Y3QgcnRlX3RpbWVyICp0aW0sIHVuc2lnbmVkIHRpbV9sY29yZSwNCi0JCXN0 cnVjdCBydGVfdGltZXIgKipwcmV2KQ0KKwkJCQlzdHJ1Y3QgcnRlX3RpbWVyICoqcHJldiwNCisJ CQkJc3RydWN0IHByaXZfdGltZXIgKnByaXZfdGltZXIpDQogew0KIAlpbnQgaTsNCisNCiAJLyog dG8gZ2V0IGEgc3BlY2lmaWMgZW50cnkgaW4gdGhlIGxpc3QsIGxvb2sgZm9yIGp1c3QgbG93ZXIg dGhhbiB0aGUgdGltZQ0KIAkgKiB2YWx1ZXMsIGFuZCB0aGVuIGluY3JlbWVudCBvbiBlYWNoIGxl dmVsIGluZGl2aWR1YWxseSBpZiBuZWNlc3NhcnkNCiAJICovDQotCXRpbWVyX2dldF9wcmV2X2Vu dHJpZXModGltLT5leHBpcmUgLSAxLCB0aW1fbGNvcmUsIHByZXYpOw0KKwl0aW1lcl9nZXRfcHJl dl9lbnRyaWVzKHRpbS0+ZXhwaXJlIC0gMSwgdGltX2xjb3JlLCBwcmV2LCBwcml2X3RpbWVyKTsN CiAJZm9yIChpID0gcHJpdl90aW1lclt0aW1fbGNvcmVdLmN1cnJfc2tpcGxpc3RfZGVwdGggLSAx OyBpID49IDA7IGktLSkgew0KIAkJd2hpbGUgKHByZXZbaV0tPnNsX25leHRbaV0gIT0gTlVMTCAm Jg0KIAkJCQlwcmV2W2ldLT5zbF9uZXh0W2ldICE9IHRpbSAmJg0KQEAgLTI0NywxNCArMzg0LDE1 IEBAIHRpbWVyX2dldF9wcmV2X2VudHJpZXNfZm9yX25vZGUoc3RydWN0IHJ0ZV90aW1lciAqdGlt LCB1bnNpZ25lZCB0aW1fbGNvcmUsDQogICogdGltZXIgbXVzdCBub3QgYmUgaW4gYSBsaXN0DQog ICovDQogc3RhdGljIHZvaWQNCi10aW1lcl9hZGQoc3RydWN0IHJ0ZV90aW1lciAqdGltLCB1bnNp Z25lZCBpbnQgdGltX2xjb3JlKQ0KK3RpbWVyX2FkZChzdHJ1Y3QgcnRlX3RpbWVyICp0aW0sIHVu c2lnbmVkIGludCB0aW1fbGNvcmUsDQorCSAgc3RydWN0IHByaXZfdGltZXIgKnByaXZfdGltZXIp DQogew0KIAl1bnNpZ25lZCBsdmw7DQogCXN0cnVjdCBydGVfdGltZXIgKnByZXZbTUFYX1NLSVBM SVNUX0RFUFRIKzFdOw0KIA0KIAkvKiBmaW5kIHdoZXJlIGV4YWN0bHkgdGhpcyBlbGVtZW50IGdv ZXMgaW4gdGhlIGxpc3Qgb2YgZWxlbWVudHMNCiAJICogZm9yIGVhY2ggZGVwdGguICovDQotCXRp bWVyX2dldF9wcmV2X2VudHJpZXModGltLT5leHBpcmUsIHRpbV9sY29yZSwgcHJldik7DQorCXRp bWVyX2dldF9wcmV2X2VudHJpZXModGltLT5leHBpcmUsIHRpbV9sY29yZSwgcHJldiwgcHJpdl90 aW1lcik7DQogDQogCS8qIG5vdyBhc3NpZ24gaXQgYSBuZXcgbGV2ZWwgYW5kIGFkZCBhdCB0aGF0 IGxldmVsICovDQogCWNvbnN0IHVuc2lnbmVkIHRpbV9sZXZlbCA9IHRpbWVyX2dldF9za2lwbGlz dF9sZXZlbCgNCkBAIC0yODQsNyArNDIyLDcgQEAgdGltZXJfYWRkKHN0cnVjdCBydGVfdGltZXIg KnRpbSwgdW5zaWduZWQgaW50IHRpbV9sY29yZSkNCiAgKi8NCiBzdGF0aWMgdm9pZA0KIHRpbWVy X2RlbChzdHJ1Y3QgcnRlX3RpbWVyICp0aW0sIHVuaW9uIHJ0ZV90aW1lcl9zdGF0dXMgcHJldl9z dGF0dXMsDQotCQlpbnQgbG9jYWxfaXNfbG9ja2VkKQ0KKwkgIGludCBsb2NhbF9pc19sb2NrZWQs IHN0cnVjdCBwcml2X3RpbWVyICpwcml2X3RpbWVyKQ0KIHsNCiAJdW5zaWduZWQgbGNvcmVfaWQg PSBydGVfbGNvcmVfaWQoKTsNCiAJdW5zaWduZWQgcHJldl9vd25lciA9IHByZXZfc3RhdHVzLm93 bmVyOw0KQEAgLTMwNCw3ICs0NDIsNyBAQCB0aW1lcl9kZWwoc3RydWN0IHJ0ZV90aW1lciAqdGlt LCB1bmlvbiBydGVfdGltZXJfc3RhdHVzIHByZXZfc3RhdHVzLA0KIAkJCQkoKHRpbS0+c2xfbmV4 dFswXSA9PSBOVUxMKSA/IDAgOiB0aW0tPnNsX25leHRbMF0tPmV4cGlyZSk7DQogDQogCS8qIGFk anVzdCBwb2ludGVycyBmcm9tIHByZXZpb3VzIGVudHJpZXMgdG8gcG9pbnQgcGFzdCB0aGlzICov DQotCXRpbWVyX2dldF9wcmV2X2VudHJpZXNfZm9yX25vZGUodGltLCBwcmV2X293bmVyLCBwcmV2 KTsNCisJdGltZXJfZ2V0X3ByZXZfZW50cmllc19mb3Jfbm9kZSh0aW0sIHByZXZfb3duZXIsIHBy ZXYsIHByaXZfdGltZXIpOw0KIAlmb3IgKGkgPSBwcml2X3RpbWVyW3ByZXZfb3duZXJdLmN1cnJf c2tpcGxpc3RfZGVwdGggLSAxOyBpID49IDA7IGktLSkgew0KIAkJaWYgKHByZXZbaV0tPnNsX25l eHRbaV0gPT0gdGltKQ0KIAkJCXByZXZbaV0tPnNsX25leHRbaV0gPSB0aW0tPnNsX25leHRbaV07 DQpAQCAtMzI2LDExICs0NjQsMTMgQEAgc3RhdGljIGludA0KIF9fcnRlX3RpbWVyX3Jlc2V0KHN0 cnVjdCBydGVfdGltZXIgKnRpbSwgdWludDY0X3QgZXhwaXJlLA0KIAkJICB1aW50NjRfdCBwZXJp b2QsIHVuc2lnbmVkIHRpbV9sY29yZSwNCiAJCSAgcnRlX3RpbWVyX2NiX3QgZmN0LCB2b2lkICph cmcsDQotCQkgIGludCBsb2NhbF9pc19sb2NrZWQpDQorCQkgIGludCBsb2NhbF9pc19sb2NrZWQs DQorCQkgIHN0cnVjdCBydGVfdGltZXJfZGF0YSAqdGltZXJfZGF0YSkNCiB7DQogCXVuaW9uIHJ0 ZV90aW1lcl9zdGF0dXMgcHJldl9zdGF0dXMsIHN0YXR1czsNCiAJaW50IHJldDsNCiAJdW5zaWdu ZWQgbGNvcmVfaWQgPSBydGVfbGNvcmVfaWQoKTsNCisJc3RydWN0IHByaXZfdGltZXIgKnByaXZf dGltZXIgPSB0aW1lcl9kYXRhLT5wcml2X3RpbWVyOw0KIA0KIAkvKiByb3VuZCByb2JpbiBmb3Ig dGltX2xjb3JlICovDQogCWlmICh0aW1fbGNvcmUgPT0gKHVuc2lnbmVkKUxDT1JFX0lEX0FOWSkg ew0KQEAgLTM0OCwxMSArNDg4LDExIEBAIF9fcnRlX3RpbWVyX3Jlc2V0KHN0cnVjdCBydGVfdGlt ZXIgKnRpbSwgdWludDY0X3QgZXhwaXJlLA0KIA0KIAkvKiB3YWl0IHRoYXQgdGhlIHRpbWVyIGlz IGluIGNvcnJlY3Qgc3RhdHVzIGJlZm9yZSB1cGRhdGUsDQogCSAqIGFuZCBtYXJrIGl0IGFzIGJl aW5nIGNvbmZpZ3VyZWQgKi8NCi0JcmV0ID0gdGltZXJfc2V0X2NvbmZpZ19zdGF0ZSh0aW0sICZw cmV2X3N0YXR1cyk7DQorCXJldCA9IHRpbWVyX3NldF9jb25maWdfc3RhdGUodGltLCAmcHJldl9z dGF0dXMsIHByaXZfdGltZXIpOw0KIAlpZiAocmV0IDwgMCkNCiAJCXJldHVybiAtMTsNCiANCi0J X19USU1FUl9TVEFUX0FERChyZXNldCwgMSk7DQorCV9fVElNRVJfU1RBVF9BREQocHJpdl90aW1l ciwgcmVzZXQsIDEpOw0KIAlpZiAocHJldl9zdGF0dXMuc3RhdGUgPT0gUlRFX1RJTUVSX1JVTk5J TkcgJiYNCiAJICAgIGxjb3JlX2lkIDwgUlRFX01BWF9MQ09SRSkgew0KIAkJcHJpdl90aW1lclts Y29yZV9pZF0udXBkYXRlZCA9IDE7DQpAQCAtMzYwLDggKzUwMCw4IEBAIF9fcnRlX3RpbWVyX3Jl c2V0KHN0cnVjdCBydGVfdGltZXIgKnRpbSwgdWludDY0X3QgZXhwaXJlLA0KIA0KIAkvKiByZW1v dmUgaXQgZnJvbSBsaXN0ICovDQogCWlmIChwcmV2X3N0YXR1cy5zdGF0ZSA9PSBSVEVfVElNRVJf UEVORElORykgew0KLQkJdGltZXJfZGVsKHRpbSwgcHJldl9zdGF0dXMsIGxvY2FsX2lzX2xvY2tl ZCk7DQotCQlfX1RJTUVSX1NUQVRfQUREKHBlbmRpbmcsIC0xKTsNCisJCXRpbWVyX2RlbCh0aW0s IHByZXZfc3RhdHVzLCBsb2NhbF9pc19sb2NrZWQsIHByaXZfdGltZXIpOw0KKwkJX19USU1FUl9T VEFUX0FERChwcml2X3RpbWVyLCBwZW5kaW5nLCAtMSk7DQogCX0NCiANCiAJdGltLT5wZXJpb2Qg PSBwZXJpb2Q7DQpAQCAtMzc2LDggKzUxNiw4IEBAIF9fcnRlX3RpbWVyX3Jlc2V0KHN0cnVjdCBy dGVfdGltZXIgKnRpbSwgdWludDY0X3QgZXhwaXJlLA0KIAlpZiAodGltX2xjb3JlICE9IGxjb3Jl X2lkIHx8ICFsb2NhbF9pc19sb2NrZWQpDQogCQlydGVfc3BpbmxvY2tfbG9jaygmcHJpdl90aW1l clt0aW1fbGNvcmVdLmxpc3RfbG9jayk7DQogDQotCV9fVElNRVJfU1RBVF9BREQocGVuZGluZywg MSk7DQotCXRpbWVyX2FkZCh0aW0sIHRpbV9sY29yZSk7DQorCV9fVElNRVJfU1RBVF9BREQocHJp dl90aW1lciwgcGVuZGluZywgMSk7DQorCXRpbWVyX2FkZCh0aW0sIHRpbV9sY29yZSwgcHJpdl90 aW1lcik7DQogDQogCS8qIHVwZGF0ZSBzdGF0ZTogYXMgd2UgYXJlIGluIENPTkZJRyBzdGF0ZSwg b25seSB1cyBjYW4gbW9kaWZ5DQogCSAqIHRoZSBzdGF0ZSBzbyB3ZSBkb24ndCBuZWVkIHRvIHVz ZSBjbXBzZXQoKSBoZXJlICovDQpAQCAtMzk0LDkgKzUzNCw5IEBAIF9fcnRlX3RpbWVyX3Jlc2V0 KHN0cnVjdCBydGVfdGltZXIgKnRpbSwgdWludDY0X3QgZXhwaXJlLA0KIA0KIC8qIFJlc2V0IGFu ZCBzdGFydCB0aGUgdGltZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSB0aW1lciBoYW5kbGUgdGltICov DQogaW50DQotcnRlX3RpbWVyX3Jlc2V0KHN0cnVjdCBydGVfdGltZXIgKnRpbSwgdWludDY0X3Qg dGlja3MsDQotCQllbnVtIHJ0ZV90aW1lcl90eXBlIHR5cGUsIHVuc2lnbmVkIHRpbV9sY29yZSwN Ci0JCXJ0ZV90aW1lcl9jYl90IGZjdCwgdm9pZCAqYXJnKQ0KK3J0ZV90aW1lcl9yZXNldF92MjAo c3RydWN0IHJ0ZV90aW1lciAqdGltLCB1aW50NjRfdCB0aWNrcywNCisJCSAgICBlbnVtIHJ0ZV90 aW1lcl90eXBlIHR5cGUsIHVuc2lnbmVkIGludCB0aW1fbGNvcmUsDQorCQkgICAgcnRlX3RpbWVy X2NiX3QgZmN0LCB2b2lkICphcmcpDQogew0KIAl1aW50NjRfdCBjdXJfdGltZSA9IHJ0ZV9nZXRf dGltZXJfY3ljbGVzKCk7DQogCXVpbnQ2NF90IHBlcmlvZDsNCkBAIC00MTIsNyArNTUyLDQ4IEBA IHJ0ZV90aW1lcl9yZXNldChzdHJ1Y3QgcnRlX3RpbWVyICp0aW0sIHVpbnQ2NF90IHRpY2tzLA0K IAkJcGVyaW9kID0gMDsNCiANCiAJcmV0dXJuIF9fcnRlX3RpbWVyX3Jlc2V0KHRpbSwgIGN1cl90 aW1lICsgdGlja3MsIHBlcmlvZCwgdGltX2xjb3JlLA0KLQkJCSAgZmN0LCBhcmcsIDApOw0KKwkJ CSAgZmN0LCBhcmcsIDAsICZkZWZhdWx0X3RpbWVyX2RhdGEpOw0KK30NCitWRVJTSU9OX1NZTUJP TChydGVfdGltZXJfcmVzZXQsIF92MjAsIDIuMCk7DQorDQoraW50DQorcnRlX3RpbWVyX3Jlc2V0 X3YxOTA1KHN0cnVjdCBydGVfdGltZXIgKnRpbSwgdWludDY0X3QgdGlja3MsDQorCQkgICAgICBl bnVtIHJ0ZV90aW1lcl90eXBlIHR5cGUsIHVuc2lnbmVkIGludCB0aW1fbGNvcmUsDQorCQkgICAg ICBydGVfdGltZXJfY2JfdCBmY3QsIHZvaWQgKmFyZykNCit7DQorCXJldHVybiBydGVfdGltZXJf YWx0X3Jlc2V0KGRlZmF1bHRfZGF0YV9pZCwgdGltLCB0aWNrcywgdHlwZSwNCisJCQkJICAgdGlt X2xjb3JlLCBmY3QsIGFyZyk7DQorfQ0KK01BUF9TVEFUSUNfU1lNQk9MKGludCBydGVfdGltZXJf cmVzZXQoc3RydWN0IHJ0ZV90aW1lciAqdGltLCB1aW50NjRfdCB0aWNrcywNCisJCQkJICAgICAg ZW51bSBydGVfdGltZXJfdHlwZSB0eXBlLA0KKwkJCQkgICAgICB1bnNpZ25lZCBpbnQgdGltX2xj b3JlLA0KKwkJCQkgICAgICBydGVfdGltZXJfY2JfdCBmY3QsIHZvaWQgKmFyZyksDQorCQkgIHJ0 ZV90aW1lcl9yZXNldF92MTkwNSk7DQorQklORF9ERUZBVUxUX1NZTUJPTChydGVfdGltZXJfcmVz ZXQsIF92MTkwNSwgMTkuMDUpOw0KKw0KK2ludCBfX3J0ZV9leHBlcmltZW50YWwNCitydGVfdGlt ZXJfYWx0X3Jlc2V0KHVpbnQzMl90IHRpbWVyX2RhdGFfaWQsIHN0cnVjdCBydGVfdGltZXIgKnRp bSwNCisJCSAgICB1aW50NjRfdCB0aWNrcywgZW51bSBydGVfdGltZXJfdHlwZSB0eXBlLA0KKwkJ ICAgIHVuc2lnbmVkIGludCB0aW1fbGNvcmUsIHJ0ZV90aW1lcl9jYl90IGZjdCwgdm9pZCAqYXJn KQ0KK3sNCisJdWludDY0X3QgY3VyX3RpbWUgPSBydGVfZ2V0X3RpbWVyX2N5Y2xlcygpOw0KKwl1 aW50NjRfdCBwZXJpb2Q7DQorCXN0cnVjdCBydGVfdGltZXJfZGF0YSAqdGltZXJfZGF0YTsNCisN CisJVElNRVJfREFUQV9WQUxJRF9HRVRfT1JfRVJSX1JFVCh0aW1lcl9kYXRhX2lkLCB0aW1lcl9k YXRhLCAtRUlOVkFMKTsNCisNCisJaWYgKHVubGlrZWx5KCh0aW1fbGNvcmUgIT0gKHVuc2lnbmVk IGludClMQ09SRV9JRF9BTlkpICYmDQorCQkJIShydGVfbGNvcmVfaXNfZW5hYmxlZCh0aW1fbGNv cmUpIHx8DQorCQkJICBydGVfbGNvcmVfaGFzX3JvbGUodGltX2xjb3JlLCBST0xFX1NFUlZJQ0Up KSkpDQorCQlyZXR1cm4gLTE7DQorDQorCWlmICh0eXBlID09IFBFUklPRElDQUwpDQorCQlwZXJp b2QgPSB0aWNrczsNCisJZWxzZQ0KKwkJcGVyaW9kID0gMDsNCisNCisJcmV0dXJuIF9fcnRlX3Rp bWVyX3Jlc2V0KHRpbSwgIGN1cl90aW1lICsgdGlja3MsIHBlcmlvZCwgdGltX2xjb3JlLA0KKwkJ CQkgZmN0LCBhcmcsIDAsIHRpbWVyX2RhdGEpOw0KIH0NCiANCiAvKiBsb29wIHVudGlsIHJ0ZV90 aW1lcl9yZXNldCgpIHN1Y2NlZWQgKi8NCkBAIC00MjYsMjEgKzYwNywyMiBAQCBydGVfdGltZXJf cmVzZXRfc3luYyhzdHJ1Y3QgcnRlX3RpbWVyICp0aW0sIHVpbnQ2NF90IHRpY2tzLA0KIAkJcnRl X3BhdXNlKCk7DQogfQ0KIA0KLS8qIFN0b3AgdGhlIHRpbWVyIGFzc29jaWF0ZWQgd2l0aCB0aGUg dGltZXIgaGFuZGxlIHRpbSAqLw0KLWludA0KLXJ0ZV90aW1lcl9zdG9wKHN0cnVjdCBydGVfdGlt ZXIgKnRpbSkNCitzdGF0aWMgaW50DQorX19ydGVfdGltZXJfc3RvcChzdHJ1Y3QgcnRlX3RpbWVy ICp0aW0sIGludCBsb2NhbF9pc19sb2NrZWQsDQorCQkgc3RydWN0IHJ0ZV90aW1lcl9kYXRhICp0 aW1lcl9kYXRhKQ0KIHsNCiAJdW5pb24gcnRlX3RpbWVyX3N0YXR1cyBwcmV2X3N0YXR1cywgc3Rh dHVzOw0KIAl1bnNpZ25lZCBsY29yZV9pZCA9IHJ0ZV9sY29yZV9pZCgpOw0KIAlpbnQgcmV0Ow0K KwlzdHJ1Y3QgcHJpdl90aW1lciAqcHJpdl90aW1lciA9IHRpbWVyX2RhdGEtPnByaXZfdGltZXI7 DQogDQogCS8qIHdhaXQgdGhhdCB0aGUgdGltZXIgaXMgaW4gY29ycmVjdCBzdGF0dXMgYmVmb3Jl IHVwZGF0ZSwNCiAJICogYW5kIG1hcmsgaXQgYXMgYmVpbmcgY29uZmlndXJlZCAqLw0KLQlyZXQg PSB0aW1lcl9zZXRfY29uZmlnX3N0YXRlKHRpbSwgJnByZXZfc3RhdHVzKTsNCisJcmV0ID0gdGlt ZXJfc2V0X2NvbmZpZ19zdGF0ZSh0aW0sICZwcmV2X3N0YXR1cywgcHJpdl90aW1lcik7DQogCWlm IChyZXQgPCAwKQ0KIAkJcmV0dXJuIC0xOw0KIA0KLQlfX1RJTUVSX1NUQVRfQUREKHN0b3AsIDEp Ow0KKwlfX1RJTUVSX1NUQVRfQUREKHByaXZfdGltZXIsIHN0b3AsIDEpOw0KIAlpZiAocHJldl9z dGF0dXMuc3RhdGUgPT0gUlRFX1RJTUVSX1JVTk5JTkcgJiYNCiAJICAgIGxjb3JlX2lkIDwgUlRF X01BWF9MQ09SRSkgew0KIAkJcHJpdl90aW1lcltsY29yZV9pZF0udXBkYXRlZCA9IDE7DQpAQCAt NDQ4LDggKzYzMCw4IEBAIHJ0ZV90aW1lcl9zdG9wKHN0cnVjdCBydGVfdGltZXIgKnRpbSkNCiAN CiAJLyogcmVtb3ZlIGl0IGZyb20gbGlzdCAqLw0KIAlpZiAocHJldl9zdGF0dXMuc3RhdGUgPT0g UlRFX1RJTUVSX1BFTkRJTkcpIHsNCi0JCXRpbWVyX2RlbCh0aW0sIHByZXZfc3RhdHVzLCAwKTsN Ci0JCV9fVElNRVJfU1RBVF9BREQocGVuZGluZywgLTEpOw0KKwkJdGltZXJfZGVsKHRpbSwgcHJl dl9zdGF0dXMsIGxvY2FsX2lzX2xvY2tlZCwgcHJpdl90aW1lcik7DQorCQlfX1RJTUVSX1NUQVRf QUREKHByaXZfdGltZXIsIHBlbmRpbmcsIC0xKTsNCiAJfQ0KIA0KIAkvKiBtYXJrIHRpbWVyIGFz IHN0b3BwZWQgKi8NCkBAIC00NjEsNiArNjQzLDMzIEBAIHJ0ZV90aW1lcl9zdG9wKHN0cnVjdCBy dGVfdGltZXIgKnRpbSkNCiAJcmV0dXJuIDA7DQogfQ0KIA0KKy8qIFN0b3AgdGhlIHRpbWVyIGFz c29jaWF0ZWQgd2l0aCB0aGUgdGltZXIgaGFuZGxlIHRpbSAqLw0KK2ludA0KK3J0ZV90aW1lcl9z dG9wX3YyMChzdHJ1Y3QgcnRlX3RpbWVyICp0aW0pDQorew0KKwlyZXR1cm4gX19ydGVfdGltZXJf c3RvcCh0aW0sIDAsICZkZWZhdWx0X3RpbWVyX2RhdGEpOw0KK30NCitWRVJTSU9OX1NZTUJPTChy dGVfdGltZXJfc3RvcCwgX3YyMCwgMi4wKTsNCisNCitpbnQNCitydGVfdGltZXJfc3RvcF92MTkw NShzdHJ1Y3QgcnRlX3RpbWVyICp0aW0pDQorew0KKwlyZXR1cm4gcnRlX3RpbWVyX2FsdF9zdG9w KGRlZmF1bHRfZGF0YV9pZCwgdGltKTsNCit9DQorTUFQX1NUQVRJQ19TWU1CT0woaW50IHJ0ZV90 aW1lcl9zdG9wKHN0cnVjdCBydGVfdGltZXIgKnRpbSksDQorCQkgIHJ0ZV90aW1lcl9zdG9wX3Yx OTA1KTsNCitCSU5EX0RFRkFVTFRfU1lNQk9MKHJ0ZV90aW1lcl9zdG9wLCBfdjE5MDUsIDE5LjA1 KTsNCisNCitpbnQgX19ydGVfZXhwZXJpbWVudGFsDQorcnRlX3RpbWVyX2FsdF9zdG9wKHVpbnQz Ml90IHRpbWVyX2RhdGFfaWQsIHN0cnVjdCBydGVfdGltZXIgKnRpbSkNCit7DQorCXN0cnVjdCBy dGVfdGltZXJfZGF0YSAqdGltZXJfZGF0YTsNCisNCisJVElNRVJfREFUQV9WQUxJRF9HRVRfT1Jf RVJSX1JFVCh0aW1lcl9kYXRhX2lkLCB0aW1lcl9kYXRhLCAtRUlOVkFMKTsNCisNCisJcmV0dXJu IF9fcnRlX3RpbWVyX3N0b3AodGltLCAwLCB0aW1lcl9kYXRhKTsNCit9DQorDQogLyogbG9vcCB1 bnRpbCBydGVfdGltZXJfc3RvcCgpIHN1Y2NlZWQgKi8NCiB2b2lkDQogcnRlX3RpbWVyX3N0b3Bf c3luYyhzdHJ1Y3QgcnRlX3RpbWVyICp0aW0pDQpAQCAtNDc3LDcgKzY4Niw4IEBAIHJ0ZV90aW1l cl9wZW5kaW5nKHN0cnVjdCBydGVfdGltZXIgKnRpbSkNCiB9DQogDQogLyogbXVzdCBiZSBjYWxs ZWQgcGVyaW9kaWNhbGx5LCBydW4gYWxsIHRpbWVyIHRoYXQgZXhwaXJlZCAqLw0KLXZvaWQgcnRl X3RpbWVyX21hbmFnZSh2b2lkKQ0KK3N0YXRpYyB2b2lkDQorX19ydGVfdGltZXJfbWFuYWdlKHN0 cnVjdCBydGVfdGltZXJfZGF0YSAqdGltZXJfZGF0YSkNCiB7DQogCXVuaW9uIHJ0ZV90aW1lcl9z dGF0dXMgc3RhdHVzOw0KIAlzdHJ1Y3QgcnRlX3RpbWVyICp0aW0sICpuZXh0X3RpbTsNCkBAIC00 ODYsMTEgKzY5NiwxMiBAQCB2b2lkIHJ0ZV90aW1lcl9tYW5hZ2Uodm9pZCkNCiAJc3RydWN0IHJ0 ZV90aW1lciAqcHJldltNQVhfU0tJUExJU1RfREVQVEggKyAxXTsNCiAJdWludDY0X3QgY3VyX3Rp bWU7DQogCWludCBpLCByZXQ7DQorCXN0cnVjdCBwcml2X3RpbWVyICpwcml2X3RpbWVyID0gdGlt ZXJfZGF0YS0+cHJpdl90aW1lcjsNCiANCiAJLyogdGltZXIgbWFuYWdlciBvbmx5IHJ1bnMgb24g RUFMIHRocmVhZCB3aXRoIHZhbGlkIGxjb3JlX2lkICovDQogCWFzc2VydChsY29yZV9pZCA8IFJU RV9NQVhfTENPUkUpOw0KIA0KLQlfX1RJTUVSX1NUQVRfQUREKG1hbmFnZSwgMSk7DQorCV9fVElN RVJfU1RBVF9BREQocHJpdl90aW1lciwgbWFuYWdlLCAxKTsNCiAJLyogb3B0aW1pemUgZm9yIHRo ZSBjYXNlIHdoZXJlIHBlci1jcHUgbGlzdCBpcyBlbXB0eSAqLw0KIAlpZiAocHJpdl90aW1lclts Y29yZV9pZF0ucGVuZGluZ19oZWFkLnNsX25leHRbMF0gPT0gTlVMTCkNCiAJCXJldHVybjsNCkBA IC01MTgsNyArNzI5LDcgQEAgdm9pZCBydGVfdGltZXJfbWFuYWdlKHZvaWQpDQogCXRpbSA9IHBy aXZfdGltZXJbbGNvcmVfaWRdLnBlbmRpbmdfaGVhZC5zbF9uZXh0WzBdOw0KIA0KIAkvKiBicmVh ayB0aGUgZXhpc3RpbmcgbGlzdCBhdCBjdXJyZW50IHRpbWUgcG9pbnQgKi8NCi0JdGltZXJfZ2V0 X3ByZXZfZW50cmllcyhjdXJfdGltZSwgbGNvcmVfaWQsIHByZXYpOw0KKwl0aW1lcl9nZXRfcHJl dl9lbnRyaWVzKGN1cl90aW1lLCBsY29yZV9pZCwgcHJldiwgcHJpdl90aW1lcik7DQogCWZvciAo aSA9IHByaXZfdGltZXJbbGNvcmVfaWRdLmN1cnJfc2tpcGxpc3RfZGVwdGggLTE7IGkgPj0gMDsg aS0tKSB7DQogCQlpZiAocHJldltpXSA9PSAmcHJpdl90aW1lcltsY29yZV9pZF0ucGVuZGluZ19o ZWFkKQ0KIAkJCWNvbnRpbnVlOw0KQEAgLTU2Myw3ICs3NzQsNyBAQCB2b2lkIHJ0ZV90aW1lcl9t YW5hZ2Uodm9pZCkNCiAJCS8qIGV4ZWN1dGUgY2FsbGJhY2sgZnVuY3Rpb24gd2l0aCBsaXN0IHVu bG9ja2VkICovDQogCQl0aW0tPmYodGltLCB0aW0tPmFyZyk7DQogDQotCQlfX1RJTUVSX1NUQVRf QUREKHBlbmRpbmcsIC0xKTsNCisJCV9fVElNRVJfU1RBVF9BREQocHJpdl90aW1lciwgcGVuZGlu ZywgLTEpOw0KIAkJLyogdGhlIHRpbWVyIHdhcyBzdG9wcGVkIG9yIHJlbG9hZGVkIGJ5IHRoZSBj YWxsYmFjaw0KIAkJICogZnVuY3Rpb24sIHdlIGhhdmUgbm90aGluZyB0byBkbyBoZXJlICovDQog CQlpZiAocHJpdl90aW1lcltsY29yZV9pZF0udXBkYXRlZCA9PSAxKQ0KQEAgLTU4MCwyNCArNzkx LDIyMiBAQCB2b2lkIHJ0ZV90aW1lcl9tYW5hZ2Uodm9pZCkNCiAJCQkvKiBrZWVwIGl0IGluIGxp c3QgYW5kIG1hcmsgdGltZXIgYXMgcGVuZGluZyAqLw0KIAkJCXJ0ZV9zcGlubG9ja19sb2NrKCZw cml2X3RpbWVyW2xjb3JlX2lkXS5saXN0X2xvY2spOw0KIAkJCXN0YXR1cy5zdGF0ZSA9IFJURV9U SU1FUl9QRU5ESU5HOw0KLQkJCV9fVElNRVJfU1RBVF9BREQocGVuZGluZywgMSk7DQorCQkJX19U SU1FUl9TVEFUX0FERChwcml2X3RpbWVyLCBwZW5kaW5nLCAxKTsNCiAJCQlzdGF0dXMub3duZXIg PSAoaW50MTZfdClsY29yZV9pZDsNCiAJCQlydGVfd21iKCk7DQogCQkJdGltLT5zdGF0dXMudTMy ID0gc3RhdHVzLnUzMjsNCiAJCQlfX3J0ZV90aW1lcl9yZXNldCh0aW0sIHRpbS0+ZXhwaXJlICsg dGltLT5wZXJpb2QsDQotCQkJCXRpbS0+cGVyaW9kLCBsY29yZV9pZCwgdGltLT5mLCB0aW0tPmFy ZywgMSk7DQorCQkJCXRpbS0+cGVyaW9kLCBsY29yZV9pZCwgdGltLT5mLCB0aW0tPmFyZywgMSwN CisJCQkJdGltZXJfZGF0YSk7DQogCQkJcnRlX3NwaW5sb2NrX3VubG9jaygmcHJpdl90aW1lclts Y29yZV9pZF0ubGlzdF9sb2NrKTsNCiAJCX0NCiAJfQ0KIAlwcml2X3RpbWVyW2xjb3JlX2lkXS5y dW5uaW5nX3RpbSA9IE5VTEw7DQogfQ0KIA0KK3ZvaWQNCitydGVfdGltZXJfbWFuYWdlX3YyMCh2 b2lkKQ0KK3sNCisJX19ydGVfdGltZXJfbWFuYWdlKCZkZWZhdWx0X3RpbWVyX2RhdGEpOw0KK30N CitWRVJTSU9OX1NZTUJPTChydGVfdGltZXJfbWFuYWdlLCBfdjIwLCAyLjApOw0KKw0KK2ludA0K K3J0ZV90aW1lcl9tYW5hZ2VfdjE5MDUodm9pZCkNCit7DQorCXN0cnVjdCBydGVfdGltZXJfZGF0 YSAqdGltZXJfZGF0YTsNCisNCisJVElNRVJfREFUQV9WQUxJRF9HRVRfT1JfRVJSX1JFVChkZWZh dWx0X2RhdGFfaWQsIHRpbWVyX2RhdGEsIC1FSU5WQUwpOw0KKw0KKwlfX3J0ZV90aW1lcl9tYW5h Z2UodGltZXJfZGF0YSk7DQorDQorCXJldHVybiAwOw0KK30NCitNQVBfU1RBVElDX1NZTUJPTChp bnQgcnRlX3RpbWVyX21hbmFnZSh2b2lkKSwgcnRlX3RpbWVyX21hbmFnZV92MTkwNSk7DQorQklO RF9ERUZBVUxUX1NZTUJPTChydGVfdGltZXJfbWFuYWdlLCBfdjE5MDUsIDE5LjA1KTsNCisNCitp bnQgX19ydGVfZXhwZXJpbWVudGFsDQorcnRlX3RpbWVyX2FsdF9tYW5hZ2UodWludDMyX3QgdGlt ZXJfZGF0YV9pZCwNCisJCSAgICAgdW5zaWduZWQgaW50ICpwb2xsX2xjb3JlcywNCisJCSAgICAg aW50IG5iX3BvbGxfbGNvcmVzLA0KKwkJICAgICBydGVfdGltZXJfYWx0X21hbmFnZV9jYl90IGYp DQorew0KKwl1bmlvbiBydGVfdGltZXJfc3RhdHVzIHN0YXR1czsNCisJc3RydWN0IHJ0ZV90aW1l ciAqdGltLCAqbmV4dF90aW0sICoqcHByZXY7DQorCXN0cnVjdCBydGVfdGltZXIgKnJ1bl9maXJz dF90aW1zW1JURV9NQVhfTENPUkVdOw0KKwl1bnNpZ25lZCBpbnQgcnVubGlzdF9sY29yZV9pZHNb UlRFX01BWF9MQ09SRV07DQorCXVuc2lnbmVkIGludCB0aGlzX2xjb3JlID0gcnRlX2xjb3JlX2lk KCk7DQorCXN0cnVjdCBydGVfdGltZXIgKnByZXZbTUFYX1NLSVBMSVNUX0RFUFRIICsgMV07DQor CXVpbnQ2NF90IGN1cl90aW1lOw0KKwlpbnQgaSwgaiwgcmV0Ow0KKwlpbnQgbmJfcnVubGlzdHMg PSAwOw0KKwlzdHJ1Y3QgcnRlX3RpbWVyX2RhdGEgKmRhdGE7DQorCXN0cnVjdCBwcml2X3RpbWVy ICpwcml2cDsNCisJdWludDMyX3QgcG9sbF9sY29yZTsNCisNCisJVElNRVJfREFUQV9WQUxJRF9H RVRfT1JfRVJSX1JFVCh0aW1lcl9kYXRhX2lkLCBkYXRhLCAtRUlOVkFMKTsNCisNCisJLyogdGlt ZXIgbWFuYWdlciBvbmx5IHJ1bnMgb24gRUFMIHRocmVhZCB3aXRoIHZhbGlkIGxjb3JlX2lkICov DQorCWFzc2VydCh0aGlzX2xjb3JlIDwgUlRFX01BWF9MQ09SRSk7DQorDQorCV9fVElNRVJfU1RB VF9BREQoZGF0YS0+cHJpdl90aW1lciwgbWFuYWdlLCAxKTsNCisNCisJaWYgKHBvbGxfbGNvcmVz ID09IE5VTEwpIHsNCisJCXBvbGxfbGNvcmVzID0gKHVuc2lnbmVkIGludCBbXSl7cnRlX2xjb3Jl X2lkKCl9Ow0KKwkJbmJfcG9sbF9sY29yZXMgPSAxOw0KKwl9DQorDQorCWZvciAoaSA9IDAsIHBv bGxfbGNvcmUgPSBwb2xsX2xjb3Jlc1tpXTsgaSA8IG5iX3BvbGxfbGNvcmVzOw0KKwkgICAgIHBv bGxfbGNvcmUgPSBwb2xsX2xjb3Jlc1srK2ldKSB7DQorCQlwcml2cCA9ICZkYXRhLT5wcml2X3Rp bWVyW3BvbGxfbGNvcmVdOw0KKw0KKwkJLyogb3B0aW1pemUgZm9yIHRoZSBjYXNlIHdoZXJlIHBl ci1jcHUgbGlzdCBpcyBlbXB0eSAqLw0KKwkJaWYgKHByaXZwLT5wZW5kaW5nX2hlYWQuc2xfbmV4 dFswXSA9PSBOVUxMKQ0KKwkJCWNvbnRpbnVlOw0KKwkJY3VyX3RpbWUgPSBydGVfZ2V0X3RpbWVy X2N5Y2xlcygpOw0KKw0KKyNpZmRlZiBSVEVfQVJDSF82NA0KKwkJLyogb24gNjQtYml0IHRoZSB2 YWx1ZSBjYWNoZWQgaW4gdGhlIHBlbmRpbmdfaGVhZC5leHBpcmVkIHdpbGwNCisJCSAqIGJlIHVw ZGF0ZWQgYXRvbWljYWxseSwgc28gd2UgY2FuIGNvbnN1bHQgdGhhdCBmb3IgYSBxdWljaw0KKwkJ ICogY2hlY2sgaGVyZSBvdXRzaWRlIHRoZSBsb2NrDQorCQkgKi8NCisJCWlmIChsaWtlbHkocHJp dnAtPnBlbmRpbmdfaGVhZC5leHBpcmUgPiBjdXJfdGltZSkpDQorCQkJY29udGludWU7DQorI2Vu ZGlmDQorDQorCQkvKiBicm93c2Ugb3JkZXJlZCBsaXN0LCBhZGQgZXhwaXJlZCB0aW1lcnMgaW4g J2V4cGlyZWQnIGxpc3QgKi8NCisJCXJ0ZV9zcGlubG9ja19sb2NrKCZwcml2cC0+bGlzdF9sb2Nr KTsNCisNCisJCS8qIGlmIG5vdGhpbmcgdG8gZG8ganVzdCB1bmxvY2sgYW5kIHJldHVybiAqLw0K KwkJaWYgKHByaXZwLT5wZW5kaW5nX2hlYWQuc2xfbmV4dFswXSA9PSBOVUxMIHx8DQorCQkgICAg cHJpdnAtPnBlbmRpbmdfaGVhZC5zbF9uZXh0WzBdLT5leHBpcmUgPiBjdXJfdGltZSkgew0KKwkJ CXJ0ZV9zcGlubG9ja191bmxvY2soJnByaXZwLT5saXN0X2xvY2spOw0KKwkJCWNvbnRpbnVlOw0K KwkJfQ0KKw0KKwkJLyogc2F2ZSBzdGFydCBvZiBsaXN0IG9mIGV4cGlyZWQgdGltZXJzICovDQor CQl0aW0gPSBwcml2cC0+cGVuZGluZ19oZWFkLnNsX25leHRbMF07DQorDQorCQkvKiBicmVhayB0 aGUgZXhpc3RpbmcgbGlzdCBhdCBjdXJyZW50IHRpbWUgcG9pbnQgKi8NCisJCXRpbWVyX2dldF9w cmV2X2VudHJpZXMoY3VyX3RpbWUsIHBvbGxfbGNvcmUsIHByZXYsDQorCQkJCSAgICAgICBkYXRh LT5wcml2X3RpbWVyKTsNCisJCWZvciAoaiA9IHByaXZwLT5jdXJyX3NraXBsaXN0X2RlcHRoIC0g MTsgaiA+PSAwOyBqLS0pIHsNCisJCQlpZiAocHJldltqXSA9PSAmcHJpdnAtPnBlbmRpbmdfaGVh ZCkNCisJCQkJY29udGludWU7DQorCQkJcHJpdnAtPnBlbmRpbmdfaGVhZC5zbF9uZXh0W2pdID0N CisJCQkJcHJldltqXS0+c2xfbmV4dFtqXTsNCisJCQlpZiAocHJldltqXS0+c2xfbmV4dFtqXSA9 PSBOVUxMKQ0KKwkJCQlwcml2cC0+Y3Vycl9za2lwbGlzdF9kZXB0aC0tOw0KKw0KKwkJCXByZXZb al0tPnNsX25leHRbal0gPSBOVUxMOw0KKwkJfQ0KKw0KKwkJLyogdHJhbnNpdGlvbiBydW4tbGlz dCBmcm9tIFBFTkRJTkcgdG8gUlVOTklORyAqLw0KKwkJcnVuX2ZpcnN0X3RpbXNbbmJfcnVubGlz dHNdID0gdGltOw0KKwkJcnVubGlzdF9sY29yZV9pZHNbbmJfcnVubGlzdHNdID0gcG9sbF9sY29y ZTsNCisJCXBwcmV2ID0gJnJ1bl9maXJzdF90aW1zW25iX3J1bmxpc3RzXTsNCisJCW5iX3J1bmxp c3RzKys7DQorDQorCQlmb3IgKCA7IHRpbSAhPSBOVUxMOyB0aW0gPSBuZXh0X3RpbSkgew0KKwkJ CW5leHRfdGltID0gdGltLT5zbF9uZXh0WzBdOw0KKw0KKwkJCXJldCA9IHRpbWVyX3NldF9ydW5u aW5nX3N0YXRlKHRpbSk7DQorCQkJaWYgKGxpa2VseShyZXQgPT0gMCkpIHsNCisJCQkJcHByZXYg PSAmdGltLT5zbF9uZXh0WzBdOw0KKwkJCX0gZWxzZSB7DQorCQkJCS8qIGFub3RoZXIgY29yZSBp cyB0cnlpbmcgdG8gcmUtY29uZmlnIHRoaXMgb25lLA0KKwkJCQkgKiByZW1vdmUgaXQgZnJvbSBs b2NhbCBleHBpcmVkIGxpc3QNCisJCQkJICovDQorCQkJCSpwcHJldiA9IG5leHRfdGltOw0KKwkJ CX0NCisJCX0NCisNCisJCS8qIHVwZGF0ZSB0aGUgbmV4dCB0byBleHBpcmUgdGltZXIgdmFsdWUg Ki8NCisJCXByaXZwLT5wZW5kaW5nX2hlYWQuZXhwaXJlID0NCisJCSAgICAocHJpdnAtPnBlbmRp bmdfaGVhZC5zbF9uZXh0WzBdID09IE5VTEwpID8gMCA6DQorCQkJcHJpdnAtPnBlbmRpbmdfaGVh ZC5zbF9uZXh0WzBdLT5leHBpcmU7DQorDQorCQlydGVfc3BpbmxvY2tfdW5sb2NrKCZwcml2cC0+ bGlzdF9sb2NrKTsNCisJfQ0KKw0KKwkvKiBOb3cgcHJvY2VzcyB0aGUgcnVuIGxpc3RzICovDQor CXdoaWxlICgxKSB7DQorCQlib29sIGRvbmUgPSB0cnVlOw0KKwkJdWludDY0X3QgbWluX2V4cGly ZSA9IFVJTlQ2NF9NQVg7DQorCQlpbnQgbWluX2lkeCA9IDA7DQorDQorCQkvKiBGaW5kIHRoZSBu ZXh0IG9sZGVzdCB0aW1lciB0byBwcm9jZXNzICovDQorCQlmb3IgKGkgPSAwOyBpIDwgbmJfcnVu bGlzdHM7IGkrKykgew0KKwkJCXRpbSA9IHJ1bl9maXJzdF90aW1zW2ldOw0KKw0KKwkJCWlmICh0 aW0gIT0gTlVMTCAmJiB0aW0tPmV4cGlyZSA8IG1pbl9leHBpcmUpIHsNCisJCQkJbWluX2V4cGly ZSA9IHRpbS0+ZXhwaXJlOw0KKwkJCQltaW5faWR4ID0gaTsNCisJCQkJZG9uZSA9IGZhbHNlOw0K KwkJCX0NCisJCX0NCisNCisJCWlmIChkb25lKQ0KKwkJCWJyZWFrOw0KKw0KKwkJdGltID0gcnVu X2ZpcnN0X3RpbXNbbWluX2lkeF07DQorCQlwcml2cCA9ICZkYXRhLT5wcml2X3RpbWVyW3J1bmxp c3RfbGNvcmVfaWRzW21pbl9pZHhdXTsNCisNCisJCS8qIE1vdmUgZG93biB0aGUgcnVubGlzdCBm cm9tIHdoaWNoIHdlIHBpY2tlZCBhIHRpbWVyIHRvDQorCQkgKiBleGVjdXRlDQorCQkgKi8NCisJ CXJ1bl9maXJzdF90aW1zW21pbl9pZHhdID0gcnVuX2ZpcnN0X3RpbXNbbWluX2lkeF0tPnNsX25l eHRbMF07DQorDQorCQlwcml2cC0+dXBkYXRlZCA9IDA7DQorCQlwcml2cC0+cnVubmluZ190aW0g PSB0aW07DQorDQorCQkvKiBDYWxsIHRoZSBwcm92aWRlZCBjYWxsYmFjayBmdW5jdGlvbiAqLw0K KwkJZih0aW0pOw0KKw0KKwkJX19USU1FUl9TVEFUX0FERChwcml2cCwgcGVuZGluZywgLTEpOw0K Kw0KKwkJLyogdGhlIHRpbWVyIHdhcyBzdG9wcGVkIG9yIHJlbG9hZGVkIGJ5IHRoZSBjYWxsYmFj aw0KKwkJICogZnVuY3Rpb24sIHdlIGhhdmUgbm90aGluZyB0byBkbyBoZXJlDQorCQkgKi8NCisJ CWlmIChwcml2cC0+dXBkYXRlZCA9PSAxKQ0KKwkJCWNvbnRpbnVlOw0KKw0KKwkJaWYgKHRpbS0+ cGVyaW9kID09IDApIHsNCisJCQkvKiByZW1vdmUgZnJvbSBkb25lIGxpc3QgYW5kIG1hcmsgdGlt ZXIgYXMgc3RvcHBlZCAqLw0KKwkJCXN0YXR1cy5zdGF0ZSA9IFJURV9USU1FUl9TVE9QOw0KKwkJ CXN0YXR1cy5vd25lciA9IFJURV9USU1FUl9OT19PV05FUjsNCisJCQlydGVfd21iKCk7DQorCQkJ dGltLT5zdGF0dXMudTMyID0gc3RhdHVzLnUzMjsNCisJCX0gZWxzZSB7DQorCQkJLyoga2VlcCBp dCBpbiBsaXN0IGFuZCBtYXJrIHRpbWVyIGFzIHBlbmRpbmcgKi8NCisJCQlydGVfc3BpbmxvY2tf bG9jaygNCisJCQkJJmRhdGEtPnByaXZfdGltZXJbdGhpc19sY29yZV0ubGlzdF9sb2NrKTsNCisJ CQlzdGF0dXMuc3RhdGUgPSBSVEVfVElNRVJfUEVORElORzsNCisJCQlfX1RJTUVSX1NUQVRfQURE KGRhdGEtPnByaXZfdGltZXIsIHBlbmRpbmcsIDEpOw0KKwkJCXN0YXR1cy5vd25lciA9IChpbnQx Nl90KXRoaXNfbGNvcmU7DQorCQkJcnRlX3dtYigpOw0KKwkJCXRpbS0+c3RhdHVzLnUzMiA9IHN0 YXR1cy51MzI7DQorCQkJX19ydGVfdGltZXJfcmVzZXQodGltLCB0aW0tPmV4cGlyZSArIHRpbS0+ cGVyaW9kLA0KKwkJCQl0aW0tPnBlcmlvZCwgdGhpc19sY29yZSwgdGltLT5mLCB0aW0tPmFyZywg MSwNCisJCQkJZGF0YSk7DQorCQkJcnRlX3NwaW5sb2NrX3VubG9jaygNCisJCQkJJmRhdGEtPnBy aXZfdGltZXJbdGhpc19sY29yZV0ubGlzdF9sb2NrKTsNCisJCX0NCisNCisJCXByaXZwLT5ydW5u aW5nX3RpbSA9IE5VTEw7DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KIC8qIGR1bXAgc3Rh dGlzdGljcyBhYm91dCB0aW1lcnMgKi8NCi12b2lkIHJ0ZV90aW1lcl9kdW1wX3N0YXRzKEZJTEUg KmYpDQorc3RhdGljIHZvaWQNCitfX3J0ZV90aW1lcl9kdW1wX3N0YXRzKHN0cnVjdCBydGVfdGlt ZXJfZGF0YSAqdGltZXJfZGF0YSBfX3J0ZV91bnVzZWQsIEZJTEUgKmYpDQogew0KICNpZmRlZiBS VEVfTElCUlRFX1RJTUVSX0RFQlVHDQogCXN0cnVjdCBydGVfdGltZXJfZGVidWdfc3RhdHMgc3Vt Ow0KIAl1bnNpZ25lZCBsY29yZV9pZDsNCisJc3RydWN0IHByaXZfdGltZXIgKnByaXZfdGltZXIg PSB0aW1lcl9kYXRhLT5wcml2X3RpbWVyOw0KIA0KIAltZW1zZXQoJnN1bSwgMCwgc2l6ZW9mKHN1 bSkpOw0KIAlmb3IgKGxjb3JlX2lkID0gMDsgbGNvcmVfaWQgPCBSVEVfTUFYX0xDT1JFOyBsY29y ZV9pZCsrKSB7DQpAQCAtNjE1LDMgKzEwMjQsMzEgQEAgdm9pZCBydGVfdGltZXJfZHVtcF9zdGF0 cyhGSUxFICpmKQ0KIAlmcHJpbnRmKGYsICJObyB0aW1lciBzdGF0aXN0aWNzLCBSVEVfTElCUlRF X1RJTUVSX0RFQlVHIGlzIGRpc2FibGVkXG4iKTsNCiAjZW5kaWYNCiB9DQorDQordm9pZA0KK3J0 ZV90aW1lcl9kdW1wX3N0YXRzX3YyMChGSUxFICpmKQ0KK3sNCisJX19ydGVfdGltZXJfZHVtcF9z dGF0cygmZGVmYXVsdF90aW1lcl9kYXRhLCBmKTsNCit9DQorVkVSU0lPTl9TWU1CT0wocnRlX3Rp bWVyX2R1bXBfc3RhdHMsIF92MjAsIDIuMCk7DQorDQoraW50DQorcnRlX3RpbWVyX2R1bXBfc3Rh dHNfdjE5MDUoRklMRSAqZikNCit7DQorCXJldHVybiBydGVfdGltZXJfYWx0X2R1bXBfc3RhdHMo ZGVmYXVsdF9kYXRhX2lkLCBmKTsNCit9DQorTUFQX1NUQVRJQ19TWU1CT0woaW50IHJ0ZV90aW1l cl9kdW1wX3N0YXRzKEZJTEUgKmYpLA0KKwkJICBydGVfdGltZXJfZHVtcF9zdGF0c192MTkwNSk7 DQorQklORF9ERUZBVUxUX1NZTUJPTChydGVfdGltZXJfZHVtcF9zdGF0cywgX3YxOTA1LCAxOS4w NSk7DQorDQoraW50IF9fcnRlX2V4cGVyaW1lbnRhbA0KK3J0ZV90aW1lcl9hbHRfZHVtcF9zdGF0 cyh1aW50MzJfdCB0aW1lcl9kYXRhX2lkIF9fcnRlX3VudXNlZCwgRklMRSAqZikNCit7DQorCXN0 cnVjdCBydGVfdGltZXJfZGF0YSAqdGltZXJfZGF0YTsNCisNCisJVElNRVJfREFUQV9WQUxJRF9H RVRfT1JfRVJSX1JFVCh0aW1lcl9kYXRhX2lkLCB0aW1lcl9kYXRhLCAtRUlOVkFMKTsNCisNCisJ X19ydGVfdGltZXJfZHVtcF9zdGF0cyh0aW1lcl9kYXRhLCBmKTsNCisNCisJcmV0dXJuIDA7DQor fQ0KZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfdGltZXIvcnRlX3RpbWVyLmggYi9saWIvbGlicnRl X3RpbWVyL3J0ZV90aW1lci5oDQppbmRleCA5Yjk1Y2QyLi5iZWUxNjc2IDEwMDY0NA0KLS0tIGEv bGliL2xpYnJ0ZV90aW1lci9ydGVfdGltZXIuaA0KKysrIGIvbGliL2xpYnJ0ZV90aW1lci9ydGVf dGltZXIuaA0KQEAgLTM5LDYgKzM5LDcgQEANCiAjaW5jbHVkZSA8c3RkZGVmLmg+DQogI2luY2x1 ZGUgPHJ0ZV9jb21tb24uaD4NCiAjaW5jbHVkZSA8cnRlX2NvbmZpZy5oPg0KKyNpbmNsdWRlIDxy dGVfc3BpbmxvY2suaD4NCiANCiAjaWZkZWYgX19jcGx1c3BsdXMNCiBleHRlcm4gIkMiIHsNCkBA IC0xMzIsMTIgKzEzMyw2OCBAQCBzdHJ1Y3QgcnRlX3RpbWVyDQogI2VuZGlmDQogDQogLyoqDQor ICogQHdhcm5pbmcNCisgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0 aG91dCBwcmlvciBub3RpY2UNCisgKg0KKyAqIEFsbG9jYXRlIGEgdGltZXIgZGF0YSBpbnN0YW5j ZSBpbiBzaGFyZWQgbWVtb3J5IHRvIHRyYWNrIGEgc2V0IG9mIHBlbmRpbmcNCisgKiB0aW1lciBs aXN0cy4NCisgKg0KKyAqIEBwYXJhbSBpZF9wdHINCisgKiAgIFBvaW50ZXIgdG8gdmFyaWFibGUg aW50byB3aGljaCB0byB3cml0ZSB0aGUgaWRlbnRpZmllciBvZiB0aGUgYWxsb2NhdGVkDQorICog ICB0aW1lciBkYXRhIGluc3RhbmNlLg0KKyAqDQorICogQHJldHVybg0KKyAqICAgLSAwOiBTdWNj ZXNzDQorICogICAtIC1FTk9TUEM6IG1heGltdW0gbnVtYmVyIG9mIHRpbWVyIGRhdGEgaW5zdGFu Y2VzIGFscmVhZHkgYWxsb2NhdGVkDQorICovDQoraW50IF9fcnRlX2V4cGVyaW1lbnRhbCBydGVf dGltZXJfZGF0YV9hbGxvYyh1aW50MzJfdCAqaWRfcHRyKTsNCisNCisvKioNCisgKiBAd2Fybmlu Zw0KKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9y IG5vdGljZQ0KKyAqDQorICogRGVhbGxvY2F0ZSBhIHRpbWVyIGRhdGEgaW5zdGFuY2UuDQorICoN CisgKiBAcGFyYW0gaWQNCisgKiAgIElkZW50aWZpZXIgb2YgdGhlIHRpbWVyIGRhdGEgaW5zdGFu Y2UgdG8gZGVhbGxvY2F0ZS4NCisgKg0KKyAqIEByZXR1cm4NCisgKiAgIC0gMDogU3VjY2Vzcw0K KyAqICAgLSAtRUlOVkFMOiBpbnZhbGlkIHRpbWVyIGRhdGEgaW5zdGFuY2UgaWRlbnRpZmllcg0K KyAqLw0KK2ludCBfX3J0ZV9leHBlcmltZW50YWwgcnRlX3RpbWVyX2RhdGFfZGVhbGxvYyh1aW50 MzJfdCBpZCk7DQorDQorLyoqDQogICogSW5pdGlhbGl6ZSB0aGUgdGltZXIgbGlicmFyeS4NCiAg Kg0KICAqIEluaXRpYWxpemVzIGludGVybmFsIHZhcmlhYmxlcyAobGlzdCwgbG9ja3MgYW5kIHNv IG9uKSBmb3IgdGhlIFJURQ0KICAqIHRpbWVyIGxpYnJhcnkuDQogICovDQotdm9pZCBydGVfdGlt ZXJfc3Vic3lzdGVtX2luaXQodm9pZCk7DQordm9pZCBydGVfdGltZXJfc3Vic3lzdGVtX2luaXRf djIwKHZvaWQpOw0KKw0KKy8qKg0KKyAqIEluaXRpYWxpemUgdGhlIHRpbWVyIGxpYnJhcnkuDQor ICoNCisgKiBJbml0aWFsaXplcyBpbnRlcm5hbCB2YXJpYWJsZXMgKGxpc3QsIGxvY2tzIGFuZCBz byBvbikgZm9yIHRoZSBSVEUNCisgKiB0aW1lciBsaWJyYXJ5Lg0KKyAqDQorICogQHJldHVybg0K KyAqICAgLSAwOiBTdWNjZXNzDQorICogICAtIC1FRVhJU1Q6IFJldHVybmVkIGluIHNlY29uZGFy eSBwcm9jZXNzIHdoZW4gcHJpbWFyeSBwcm9jZXNzIGhhcyBub3QNCisgKiAgICAgIHlldCBpbml0 aWFsaXplZCB0aGUgdGltZXIgc3Vic3lzdGVtDQorICogICAtIC1FTk9NRU06IFVuYWJsZSB0byBh bGxvY2F0ZSBtZW1vcnkgbmVlZGVkIHRvIGluaXRpYWxpemUgdGltZXINCisgKiAgICAgIHN1YnN5 c3RlbQ0KKyAqLw0KK2ludCBydGVfdGltZXJfc3Vic3lzdGVtX2luaXRfdjE5MDUodm9pZCk7DQor aW50IHJ0ZV90aW1lcl9zdWJzeXN0ZW1faW5pdCh2b2lkKTsNCisNCisvKioNCisgKiBAd2Fybmlu Zw0KKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9y IG5vdGljZQ0KKyAqDQorICogRnJlZSB0aW1lciBzdWJzeXN0ZW0gcmVzb3VyY2VzLg0KKyAqLw0K K3ZvaWQgX19ydGVfZXhwZXJpbWVudGFsIHJ0ZV90aW1lcl9zdWJzeXN0ZW1fZmluYWxpemUodm9p ZCk7DQogDQogLyoqDQogICogSW5pdGlhbGl6ZSBhIHRpbWVyIGhhbmRsZS4NCkBAIC0xOTMsNiAr MjUwLDEyIEBAIHZvaWQgcnRlX3RpbWVyX2luaXQoc3RydWN0IHJ0ZV90aW1lciAqdGltKTsNCiAg KiAgIC0gMDogU3VjY2VzczsgdGhlIHRpbWVyIGlzIHNjaGVkdWxlZC4NCiAgKiAgIC0gKC0xKTog VGltZXIgaXMgaW4gdGhlIFJVTk5JTkcgb3IgQ09ORklHIHN0YXRlLg0KICAqLw0KK2ludCBydGVf dGltZXJfcmVzZXRfdjIwKHN0cnVjdCBydGVfdGltZXIgKnRpbSwgdWludDY0X3QgdGlja3MsDQor CQkJZW51bSBydGVfdGltZXJfdHlwZSB0eXBlLCB1bnNpZ25lZCBpbnQgdGltX2xjb3JlLA0KKwkJ CXJ0ZV90aW1lcl9jYl90IGZjdCwgdm9pZCAqYXJnKTsNCitpbnQgcnRlX3RpbWVyX3Jlc2V0X3Yx OTA1KHN0cnVjdCBydGVfdGltZXIgKnRpbSwgdWludDY0X3QgdGlja3MsDQorCQkJICBlbnVtIHJ0 ZV90aW1lcl90eXBlIHR5cGUsIHVuc2lnbmVkIGludCB0aW1fbGNvcmUsDQorCQkJICBydGVfdGlt ZXJfY2JfdCBmY3QsIHZvaWQgKmFyZyk7DQogaW50IHJ0ZV90aW1lcl9yZXNldChzdHJ1Y3QgcnRl X3RpbWVyICp0aW0sIHVpbnQ2NF90IHRpY2tzLA0KIAkJICAgIGVudW0gcnRlX3RpbWVyX3R5cGUg dHlwZSwgdW5zaWduZWQgdGltX2xjb3JlLA0KIAkJICAgIHJ0ZV90aW1lcl9jYl90IGZjdCwgdm9p ZCAqYXJnKTsNCkBAIC0yNTIsOSArMzE1LDEwIEBAIHJ0ZV90aW1lcl9yZXNldF9zeW5jKHN0cnVj dCBydGVfdGltZXIgKnRpbSwgdWludDY0X3QgdGlja3MsDQogICogICAtIDA6IFN1Y2Nlc3M7IHRo ZSB0aW1lciBpcyBzdG9wcGVkLg0KICAqICAgLSAoLTEpOiBUaGUgdGltZXIgaXMgaW4gdGhlIFJV Tk5JTkcgb3IgQ09ORklHIHN0YXRlLg0KICAqLw0KK2ludCBydGVfdGltZXJfc3RvcF92MjAoc3Ry dWN0IHJ0ZV90aW1lciAqdGltKTsNCitpbnQgcnRlX3RpbWVyX3N0b3BfdjE5MDUoc3RydWN0IHJ0 ZV90aW1lciAqdGltKTsNCiBpbnQgcnRlX3RpbWVyX3N0b3Aoc3RydWN0IHJ0ZV90aW1lciAqdGlt KTsNCiANCi0NCiAvKioNCiAgKiBMb29wIHVudGlsIHJ0ZV90aW1lcl9zdG9wKCkgc3VjY2VlZHMu DQogICoNCkBAIC0yOTIsNyArMzU2LDI1IEBAIGludCBydGVfdGltZXJfcGVuZGluZyhzdHJ1Y3Qg cnRlX3RpbWVyICp0aW0pOw0KICAqIGZ1bmN0aW9uLiBIb3dldmVyLCB0aGUgbW9yZSBvZnRlbiB0 aGUgZnVuY3Rpb24gaXMgY2FsbGVkLCB0aGUgbW9yZQ0KICAqIENQVSByZXNvdXJjZXMgaXQgd2ls bCB1c2UuDQogICovDQotdm9pZCBydGVfdGltZXJfbWFuYWdlKHZvaWQpOw0KK3ZvaWQgcnRlX3Rp bWVyX21hbmFnZV92MjAodm9pZCk7DQorDQorLyoqDQorICogTWFuYWdlIHRoZSB0aW1lciBsaXN0 IGFuZCBleGVjdXRlIGNhbGxiYWNrIGZ1bmN0aW9ucy4NCisgKg0KKyAqIFRoaXMgZnVuY3Rpb24g bXVzdCBiZSBjYWxsZWQgcGVyaW9kaWNhbGx5IGZyb20gRUFMIGxjb3Jlcw0KKyAqIG1haW5fbG9v cCgpLiBJdCBicm93c2VzIHRoZSBsaXN0IG9mIHBlbmRpbmcgdGltZXJzIGFuZCBydW5zIGFsbA0K KyAqIHRpbWVycyB0aGF0IGFyZSBleHBpcmVkLg0KKyAqDQorICogVGhlIHByZWNpc2lvbiBvZiB0 aGUgdGltZXIgZGVwZW5kcyBvbiB0aGUgY2FsbCBmcmVxdWVuY3kgb2YgdGhpcw0KKyAqIGZ1bmN0 aW9uLiBIb3dldmVyLCB0aGUgbW9yZSBvZnRlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLCB0aGUg bW9yZQ0KKyAqIENQVSByZXNvdXJjZXMgaXQgd2lsbCB1c2UuDQorICoNCisgKiBAcmV0dXJuDQor ICogICAtIDA6IFN1Y2Nlc3MNCisgKiAgIC0gLUVJTlZBTDogdGltZXIgc3Vic3lzdGVtIG5vdCB5 ZXQgaW5pdGlhbGl6ZWQNCisgKi8NCitpbnQgcnRlX3RpbWVyX21hbmFnZV92MTkwNSh2b2lkKTsN CitpbnQgcnRlX3RpbWVyX21hbmFnZSh2b2lkKTsNCiANCiAvKioNCiAgKiBEdW1wIHN0YXRpc3Rp Y3MgYWJvdXQgdGltZXJzLg0KQEAgLTMwMCw3ICszODIsMTQzIEBAIHZvaWQgcnRlX3RpbWVyX21h bmFnZSh2b2lkKTsNCiAgKiBAcGFyYW0gZg0KICAqICAgQSBwb2ludGVyIHRvIGEgZmlsZSBmb3Ig b3V0cHV0DQogICovDQotdm9pZCBydGVfdGltZXJfZHVtcF9zdGF0cyhGSUxFICpmKTsNCit2b2lk IHJ0ZV90aW1lcl9kdW1wX3N0YXRzX3YyMChGSUxFICpmKTsNCisNCisvKioNCisgKiBEdW1wIHN0 YXRpc3RpY3MgYWJvdXQgdGltZXJzLg0KKyAqDQorICogQHBhcmFtIGYNCisgKiAgIEEgcG9pbnRl ciB0byBhIGZpbGUgZm9yIG91dHB1dA0KKyAqIEByZXR1cm4NCisgKiAgIC0gMDogU3VjY2Vzcw0K KyAqICAgLSAtRUlOVkFMOiB0aW1lciBzdWJzeXN0ZW0gbm90IHlldCBpbml0aWFsaXplZA0KKyAq Lw0KK2ludCBydGVfdGltZXJfZHVtcF9zdGF0c192MTkwNShGSUxFICpmKTsNCitpbnQgcnRlX3Rp bWVyX2R1bXBfc3RhdHMoRklMRSAqZik7DQorDQorLyoqDQorICogQHdhcm5pbmcNCisgKiBAYiBF WFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UNCisg Kg0KKyAqIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXMgcnRlX3RpbWVyX3Jlc2V0KCksIGV4 Y2VwdCB0aGF0IGl0IGFsbG93cyBhDQorICogY2FsbGVyIHRvIHNwZWNpZnkgdGhlIHJ0ZV90aW1l cl9kYXRhIGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIGxpc3QgdG8gd2hpY2gNCisgKiB0aGUgdGlt ZXIgc2hvdWxkIGJlIGFkZGVkLg0KKyAqDQorICogQHNlZSBydGVfdGltZXJfcmVzZXQoKQ0KKyAq DQorICogQHBhcmFtIHRpbWVyX2RhdGFfaWQNCisgKiAgIEFuIGlkZW50aWZpZXIgaW5kaWNhdGlu ZyB3aGljaCBpbnN0YW5jZSBvZiB0aW1lciBkYXRhIHNob3VsZCBiZSB1c2VkIGZvcg0KKyAqICAg dGhpcyBvcGVyYXRpb24uDQorICogQHBhcmFtIHRpbQ0KKyAqICAgVGhlIHRpbWVyIGhhbmRsZS4N CisgKiBAcGFyYW0gdGlja3MNCisgKiAgIFRoZSBudW1iZXIgb2YgY3ljbGVzIChzZWUgcnRlX2dl dF9ocGV0X2h6KCkpIGJlZm9yZSB0aGUgY2FsbGJhY2sNCisgKiAgIGZ1bmN0aW9uIGlzIGNhbGxl ZC4NCisgKiBAcGFyYW0gdHlwZQ0KKyAqICAgVGhlIHR5cGUgY2FuIGJlIGVpdGhlcjoNCisgKiAg IC0gUEVSSU9ESUNBTDogVGhlIHRpbWVyIGlzIGF1dG9tYXRpY2FsbHkgcmVsb2FkZWQgYWZ0ZXIg ZXhlY3V0aW9uDQorICogICAgIChyZXR1cm5zIHRvIHRoZSBQRU5ESU5HIHN0YXRlKQ0KKyAqICAg LSBTSU5HTEU6IFRoZSB0aW1lciBpcyBvbmUtc2hvdCwgdGhhdCBpcywgdGhlIHRpbWVyIGdvZXMg dG8gYQ0KKyAqICAgICBTVE9QUEVEIHN0YXRlIGFmdGVyIGV4ZWN1dGlvbi4NCisgKiBAcGFyYW0g dGltX2xjb3JlDQorICogICBUaGUgSUQgb2YgdGhlIGxjb3JlIHdoZXJlIHRoZSB0aW1lciBjYWxs YmFjayBmdW5jdGlvbiBoYXMgdG8gYmUNCisgKiAgIGV4ZWN1dGVkLiBJZiB0aW1fbGNvcmUgaXMg TENPUkVfSURfQU5ZLCB0aGUgdGltZXIgbGlicmFyeSB3aWxsDQorICogICBsYXVuY2ggaXQgb24g YSBkaWZmZXJlbnQgY29yZSBmb3IgZWFjaCBjYWxsIChyb3VuZC1yb2JpbikuDQorICogQHBhcmFt IGZjdA0KKyAqICAgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIG9mIHRoZSB0aW1lci4gVGhpcyBwYXJh bWV0ZXIgY2FuIGJlIE5VTEwgaWYgKGFuZA0KKyAqICAgb25seSBpZikgcnRlX3RpbWVyX2FsdF9t YW5hZ2UoKSB3aWxsIGJlIHVzZWQgdG8gbWFuYWdlIHRoaXMgdGltZXIuDQorICogQHBhcmFtIGFy Zw0KKyAqICAgVGhlIHVzZXIgYXJndW1lbnQgb2YgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLg0KKyAq IEByZXR1cm4NCisgKiAgIC0gMDogU3VjY2VzczsgdGhlIHRpbWVyIGlzIHNjaGVkdWxlZC4NCisg KiAgIC0gKC0xKTogVGltZXIgaXMgaW4gdGhlIFJVTk5JTkcgb3IgQ09ORklHIHN0YXRlLg0KKyAq ICAgLSAtRUlOVkFMOiBpbnZhbGlkIHRpbWVyX2RhdGFfaWQNCisgKi8NCitpbnQgX19ydGVfZXhw ZXJpbWVudGFsDQorcnRlX3RpbWVyX2FsdF9yZXNldCh1aW50MzJfdCB0aW1lcl9kYXRhX2lkLCBz dHJ1Y3QgcnRlX3RpbWVyICp0aW0sDQorCQkgICAgdWludDY0X3QgdGlja3MsIGVudW0gcnRlX3Rp bWVyX3R5cGUgdHlwZSwNCisJCSAgICB1bnNpZ25lZCBpbnQgdGltX2xjb3JlLCBydGVfdGltZXJf Y2JfdCBmY3QsIHZvaWQgKmFyZyk7DQorDQorLyoqDQorICogQHdhcm5pbmcNCisgKiBAYiBFWFBF UklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UNCisgKg0K KyAqIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXMgcnRlX3RpbWVyX3N0b3AoKSwgZXhjZXB0 IHRoYXQgaXQgYWxsb3dzIGENCisgKiBjYWxsZXIgdG8gc3BlY2lmeSB0aGUgcnRlX3RpbWVyX2Rh dGEgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgbGlzdCBmcm9tIHdoaWNoDQorICogdGhpcyB0aW1l ciBzaG91bGQgYmUgcmVtb3ZlZC4NCisgKg0KKyAqIEBzZWUgcnRlX3RpbWVyX3N0b3AoKQ0KKyAq DQorICogQHBhcmFtIHRpbWVyX2RhdGFfaWQNCisgKiAgIEFuIGlkZW50aWZpZXIgaW5kaWNhdGlu ZyB3aGljaCBpbnN0YW5jZSBvZiB0aW1lciBkYXRhIHNob3VsZCBiZSB1c2VkIGZvcg0KKyAqICAg dGhpcyBvcGVyYXRpb24uDQorICogQHBhcmFtIHRpbQ0KKyAqICAgVGhlIHRpbWVyIGhhbmRsZS4N CisgKiBAcmV0dXJuDQorICogICAtIDA6IFN1Y2Nlc3M7IHRoZSB0aW1lciBpcyBzdG9wcGVkLg0K KyAqICAgLSAoLTEpOiBUaGUgdGltZXIgaXMgaW4gdGhlIFJVTk5JTkcgb3IgQ09ORklHIHN0YXRl Lg0KKyAqICAgLSAtRUlOVkFMOiBpbnZhbGlkIHRpbWVyX2RhdGFfaWQNCisgKi8NCitpbnQgX19y dGVfZXhwZXJpbWVudGFsDQorcnRlX3RpbWVyX2FsdF9zdG9wKHVpbnQzMl90IHRpbWVyX2RhdGFf aWQsIHN0cnVjdCBydGVfdGltZXIgKnRpbSk7DQorDQorLyoqDQorICogQ2FsbGJhY2sgZnVuY3Rp b24gdHlwZSBmb3IgcnRlX3RpbWVyX2FsdF9tYW5hZ2UoKS4NCisgKi8NCit0eXBlZGVmIHZvaWQg KCpydGVfdGltZXJfYWx0X21hbmFnZV9jYl90KSh2b2lkICopOw0KKw0KKy8qKg0KKyAqIEB3YXJu aW5nDQorICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJp b3Igbm90aWNlDQorICoNCisgKiBNYW5hZ2UgYSBzZXQgb2YgdGltZXIgbGlzdHMgYW5kIGV4ZWN1 dGUgdGhlIHNwZWNpZmllZCBjYWxsYmFjayBmdW5jdGlvbiBmb3INCisgKiBhbGwgZXhwaXJlZCB0 aW1lcnMuIFRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0byBydGVfdGltZXJfbWFuYWdlKCksIGV4 Y2VwdA0KKyAqIHRoYXQgaXQgYWxsb3dzIGEgY2FsbGVyIHRvIHNwZWNpZnkgdGhlIHRpbWVyX2Rh dGEgaW5zdGFuY2UgdGhhdCBzaG91bGQNCisgKiBiZSBvcGVyYXRlZCBvbiwgYXMgd2VsbCBhcyBh IHNldCBvZiBsY29yZSBJRHMgaWRlbnRpZnlpbmcgd2hpY2ggdGltZXIgbGlzdHMNCisgKiBzaG91 bGQgYmUgcHJvY2Vzc2VkLiAgQ2FsbGJhY2sgZnVuY3Rpb25zIG9mIGluZGl2aWR1YWwgdGltZXJz IGFyZSBpZ25vcmVkLg0KKyAqDQorICogQHNlZSBydGVfdGltZXJfbWFuYWdlKCkNCisgKg0KKyAq IEBwYXJhbSB0aW1lcl9kYXRhX2lkDQorICogICBBbiBpZGVudGlmaWVyIGluZGljYXRpbmcgd2hp Y2ggaW5zdGFuY2Ugb2YgdGltZXIgZGF0YSBzaG91bGQgYmUgdXNlZCBmb3INCisgKiAgIHRoaXMg b3BlcmF0aW9uLg0KKyAqIEBwYXJhbSBwb2xsX2xjb3Jlcw0KKyAqICAgQW4gYXJyYXkgb2YgbGNv cmUgaWRzIGlkZW50aWZ5aW5nIHRoZSB0aW1lciBsaXN0cyB0aGF0IHNob3VsZCBiZSBwcm9jZXNz ZWQuDQorICogICBOVUxMIGlzIGFsbG93ZWQgLSBpZiBOVUxMLCB0aGUgdGltZXIgbGlzdCBjb3Jy ZXNwb25kaW5nIHRvIHRoZSBsY29yZQ0KKyAqICAgY2FsbGluZyB0aGlzIHJvdXRpbmUgaXMgcHJv Y2Vzc2VkIChzYW1lIGFzIHJ0ZV90aW1lcl9tYW5hZ2UoKSkuDQorICogQHBhcmFtIG5fcG9sbF9s Y29yZXMNCisgKiAgIFRoZSBzaXplIG9mIHRoZSBwb2xsX2xjb3JlcyBhcnJheS4gSWYgJ3BvbGxf bGNvcmVzJyBpcyBOVUxMLCB0aGlzIHBhcmFtZXRlcg0KKyAqICAgaXMgaWdub3JlZC4NCisgKiBA cGFyYW0gZg0KKyAqICAgVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHdoaWNoIHNob3VsZCBiZSBjYWxs ZWQgZm9yIGFsbCBleHBpcmVkIHRpbWVycy4NCisgKiBAcmV0dXJuDQorICogICAtIDA6IHN1Y2Nl c3MNCisgKiAgIC0gLUVJTlZBTDogaW52YWxpZCB0aW1lcl9kYXRhX2lkDQorICovDQoraW50IF9f cnRlX2V4cGVyaW1lbnRhbA0KK3J0ZV90aW1lcl9hbHRfbWFuYWdlKHVpbnQzMl90IHRpbWVyX2Rh dGFfaWQsIHVuc2lnbmVkIGludCAqcG9sbF9sY29yZXMsDQorCQkgICAgIGludCBuX3BvbGxfbGNv cmVzLCBydGVfdGltZXJfYWx0X21hbmFnZV9jYl90IGYpOw0KKw0KKy8qKg0KKyAqIEB3YXJuaW5n DQorICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Ig bm90aWNlDQorICoNCisgKiBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFzIHJ0ZV90aW1lcl9k dW1wX3N0YXRzKCksIGV4Y2VwdCB0aGF0IGl0IGFsbG93cw0KKyAqIHRoZSBjYWxsZXIgdG8gc3Bl Y2lmeSB0aGUgcnRlX3RpbWVyX2RhdGEgaW5zdGFuY2UgdGhhdCBzaG91bGQgYmUgdXNlZC4NCisg Kg0KKyAqIEBzZWUgcnRlX3RpbWVyX2R1bXBfc3RhdHMoKQ0KKyAqDQorICogQHBhcmFtIHRpbWVy X2RhdGFfaWQNCisgKiAgIEFuIGlkZW50aWZpZXIgaW5kaWNhdGluZyB3aGljaCBpbnN0YW5jZSBv ZiB0aW1lciBkYXRhIHNob3VsZCBiZSB1c2VkIGZvcg0KKyAqICAgdGhpcyBvcGVyYXRpb24uDQor ICogQHBhcmFtIGYNCisgKiAgIEEgcG9pbnRlciB0byBhIGZpbGUgZm9yIG91dHB1dA0KKyAqIEBy ZXR1cm4NCisgKiAgIC0gMDogc3VjY2Vzcw0KKyAqICAgLSAtRUlOVkFMOiBpbnZhbGlkIHRpbWVy X2RhdGFfaWQNCisgKi8NCitpbnQgX19ydGVfZXhwZXJpbWVudGFsDQorcnRlX3RpbWVyX2FsdF9k dW1wX3N0YXRzKHVpbnQzMl90IHRpbWVyX2RhdGFfaWQsIEZJTEUgKmYpOw0KIA0KICNpZmRlZiBf X2NwbHVzcGx1cw0KIH0NCmRpZmYgLS1naXQgYS9saWIvbGlicnRlX3RpbWVyL3J0ZV90aW1lcl92 ZXJzaW9uLm1hcCBiL2xpYi9saWJydGVfdGltZXIvcnRlX3RpbWVyX3ZlcnNpb24ubWFwDQppbmRl eCA5YjJlNGI4Li5jMmU1ODM2IDEwMDY0NA0KLS0tIGEvbGliL2xpYnJ0ZV90aW1lci9ydGVfdGlt ZXJfdmVyc2lvbi5tYXANCisrKyBiL2xpYi9saWJydGVfdGltZXIvcnRlX3RpbWVyX3ZlcnNpb24u bWFwDQpAQCAtMTMsMyArMTMsMjUgQEAgRFBES18yLjAgew0KIA0KIAlsb2NhbDogKjsNCiB9Ow0K Kw0KK0RQREtfMTkuMDUgew0KKwlnbG9iYWw6DQorDQorCXJ0ZV90aW1lcl9kdW1wX3N0YXRzOw0K KwlydGVfdGltZXJfbWFuYWdlOw0KKwlydGVfdGltZXJfcmVzZXQ7DQorCXJ0ZV90aW1lcl9zdG9w Ow0KKwlydGVfdGltZXJfc3Vic3lzdGVtX2luaXQ7DQorfSBEUERLXzIuMDsNCisNCitFWFBFUklN RU5UQUwgew0KKwlnbG9iYWw6DQorDQorCXJ0ZV90aW1lcl9hbHRfZHVtcF9zdGF0czsNCisJcnRl X3RpbWVyX2FsdF9tYW5hZ2U7DQorCXJ0ZV90aW1lcl9hbHRfcmVzZXQ7DQorCXJ0ZV90aW1lcl9h bHRfc3RvcDsNCisJcnRlX3RpbWVyX2RhdGFfYWxsb2M7DQorCXJ0ZV90aW1lcl9kYXRhX2RlYWxs b2M7DQorCXJ0ZV90aW1lcl9zdWJzeXN0ZW1fZmluYWxpemU7DQorfTsNCi0tIA0KMi42LjQNCg0K DQo=