From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from exchange.timesys.com (mail.timesys.com [65.117.135.102]) by ozlabs.org (Postfix) with ESMTP id B078967A67 for ; Fri, 1 Apr 2005 05:54:53 +1000 (EST) From: Jason McMullan To: linuxppc-embedded Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-0sr86ImfceoTFEGKyzId" Date: Thu, 31 Mar 2005 14:54:46 -0500 Message-Id: <1112298886.3337.14.camel@ad.doubleclick.net> Mime-Version: 1.0 Subject: [PATCH 2.6.11.6] CPM2 Timers API List-Id: Linux on Embedded PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , --=-0sr86ImfceoTFEGKyzId Content-Type: multipart/mixed; boundary="=-KXEnYpftYlZtN/zIaf15" --=-KXEnYpftYlZtN/zIaf15 Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Two patches: cpm-timer.patch: The base timers API for CPM2 timers cpm-timer.mpc85xx-devices.patch: MPC85xx support --=20 Jason McMullan TimeSys Corporation --=-KXEnYpftYlZtN/zIaf15 Content-Disposition: attachment; filename=cpm-timer.mpc85xx-devices.patch Content-Type: text/x-patch; name=cpm-timer.mpc85xx-devices.patch; charset=ISO-8859-1 Content-Transfer-Encoding: base64 RGVzY3JpcHRpb246IE1QQzg1eHggc3VwcG9ydCBmb3IgQ1BNMiB0aW1lcnMNCkRhdGU6IFRodSBN YXIgMzEgMTQ6NDk6NDkgRVNUIDIwMDUNClBhdGNoZXM6IGxpbnV4LTIuNi4xMi1yYzEuYmsNClNp Z25lZC1PZmYtQnk6IEphc29uIE1jTXVsbGFuIDxqYXNvbi5tY211bGxhbkB0aW1lc3lzLmNvbT4N Cg0KRGlmZmVyZW5jZSBzdW1tYXJ5Og0KIGFyY2gvcHBjL3N5c2xpYi9tcGM4NXh4X2RldmljZXMu YyB8ICAgMjUgKysrKysrKysrKysrKysrKysrKysrKysrKw0KIGFyY2gvcHBjL3N5c2xpYi9tcGM4 NXh4X3N5cy5jICAgICB8ICAgMTcgKysrKysrKysrKy0tLS0tLS0NCiBpbmNsdWRlL2FzbS1wcGMv bXBjODV4eC5oICAgICAgICAgfCAgICAxICsNCiAzIGZpbGVzIGNoYW5nZWQsIDM2IGluc2VydGlv bnMoKyksIDcgZGVsZXRpb25zKC0pDQoNCg0KZGlmZiAtdXJOIC1YIC9ob21lL2ptY211bGxhbi9k b250ZGlmZiBsaW51eC0yLjYvYXJjaC9wcGMvc3lzbGliL21wYzg1eHhfZGV2aWNlcy5jIGxpbnV4 LTIuNi5wYXRjaC9hcmNoL3BwYy9zeXNsaWIvbXBjODV4eF9kZXZpY2VzLmMNCi0tLSBsaW51eC0y LjYvYXJjaC9wcGMvc3lzbGliL21wYzg1eHhfZGV2aWNlcy5jCTIwMDUtMDMtMzEgMTQ6MDY6MDQu MDAwMDAwMDAwIC0wNTAwDQorKysgbGludXgtMi42LnBhdGNoL2FyY2gvcHBjL3N5c2xpYi9tcGM4 NXh4X2RldmljZXMuYwkyMDA1LTAzLTMxIDE0OjQyOjQyLjAwMDAwMDAwMCAtMDUwMA0KQEAgLTE5 LDYgKzE5LDggQEANCiAjaW5jbHVkZSA8bGludXgvc2VyaWFsXzgyNTAuaD4NCiAjaW5jbHVkZSA8 bGludXgvZnNsX2RldmljZXMuaD4NCiAjaW5jbHVkZSA8YXNtL21wYzg1eHguaD4NCisjaW5jbHVk ZSA8YXNtL2NwbTIuaD4NCisjaW5jbHVkZSA8YXNtL2ltbWFwX2NwbTIuaD4NCiAjaW5jbHVkZSA8 YXNtL2lycS5oPg0KICNpbmNsdWRlIDxhc20vcHBjX3N5cy5oPg0KIA0KQEAgLTYxLDggKzYzLDE0 IEBADQogCQkuaW90eXBlCQk9IFVQSU9fTUVNLA0KIAkJLmZsYWdzCQk9IFVQRl9CT09UX0FVVE9D T05GIHwgVVBGX1NLSVBfVEVTVCB8IFVQRl9TSEFSRV9JUlEsDQogCX0sDQorCVsyXSA9IHsNCisJ CS5mbGFncyA9IDANCisJfQ0KIH07DQogDQorI2RlZmluZSBDUE0yX09GRlNFVCh0KQkoKHZvaWQg KikoJigoY3BtMl9tYXBfdCAqKU5VTEwpLT50KS1OVUxMKQ0KKyNkZWZpbmUgQ1BNMl9FTkQodCkJ KENQTTJfT0ZGU0VUKHQpKyhzaXplb2YoKChjcG0yX21hcF90ICopTlVMTCktPnQpKS0xKQ0KKw0K IHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgcHBjX3N5c19wbGF0Zm9ybV9kZXZpY2VzW10gPSB7DQog CVtNUEM4NXh4X1RTRUMxXSA9IHsNCiAJCS5uYW1lID0gImZzbC1naWFuZmFyIiwNCkBAIC01MzQs NiArNTQyLDIzIEBADQogCQkJfSwNCiAJCX0sDQogCX0sDQorCVtNUEM4NXh4X0NQTV9USU1FUl0g PSB7DQorCQkubmFtZSA9ICJmc2wtY3BtLXRpbWVyIiwNCisJCS5pZCA9IDAsDQorCQkubnVtX3Jl c291cmNlcwk9IDIsDQorCQkucmVzb3VyY2UgPSAoc3RydWN0IHJlc291cmNlW10pIHsNCisJCQl7 DQorCQkJCS5zdGFydAk9IENQTTJfT0ZGU0VUKGltX2NwbXRpbWVyKSwNCisJCQkJLmVuZAk9IENQ TTJfRU5EKGltX2NwbXRpbWVyKSwNCisJCQkJLmZsYWdzCT0gSU9SRVNPVVJDRV9NRU0sDQorCQkJ fSwNCisJCQl7DQorCQkJCS5zdGFydAk9IFNJVV9JTlRfVElNRVIxLA0KKwkJCQkuZW5kCT0gU0lV X0lOVF9USU1FUjQsDQorCQkJCS5mbGFncwk9IElPUkVTT1VSQ0VfSVJRLA0KKwkJCX0sDQorCQl9 LA0KKwl9LA0KICNlbmRpZiAvKiBDT05GSUdfQ1BNMiAqLw0KIH07DQogDQpkaWZmIC11ck4gLVgg L2hvbWUvam1jbXVsbGFuL2RvbnRkaWZmIGxpbnV4LTIuNi9hcmNoL3BwYy9zeXNsaWIvbXBjODV4 eF9zeXMuYyBsaW51eC0yLjYucGF0Y2gvYXJjaC9wcGMvc3lzbGliL21wYzg1eHhfc3lzLmMNCi0t LSBsaW51eC0yLjYvYXJjaC9wcGMvc3lzbGliL21wYzg1eHhfc3lzLmMJMjAwNS0wMy0zMSAxNDow NjowNC4wMDAwMDAwMDAgLTA1MDANCisrKyBsaW51eC0yLjYucGF0Y2gvYXJjaC9wcGMvc3lzbGli L21wYzg1eHhfc3lzLmMJMjAwNS0wMy0zMSAxNDo0Njo1My43NjgyNzQ4MDEgLTA1MDANCkBAIC0z Niw3ICszNiw3IEBADQogCQkucHBjX3N5c19uYW1lCT0gIjg1NjAiLA0KIAkJLm1hc2sgCQk9IDB4 RkZGRjAwMDAsDQogCQkudmFsdWUgCQk9IDB4ODA3MDAwMDAsDQotCQkubnVtX2RldmljZXMJPSAx OSwNCisJCS5udW1fZGV2aWNlcwk9IDIwLA0KIAkJLmRldmljZV9saXN0CT0gKGVudW0gcHBjX3N5 c19kZXZpY2VzW10pDQogCQl7DQogCQkJTVBDODV4eF9UU0VDMSwgTVBDODV4eF9UU0VDMiwgTVBD ODV4eF9JSUMxLA0KQEAgLTQ2LDEzICs0NiwxNCBAQA0KIAkJCU1QQzg1eHhfQ1BNX1NDQzIsIE1Q Qzg1eHhfQ1BNX1NDQzMsIE1QQzg1eHhfQ1BNX1NDQzQsDQogCQkJTVBDODV4eF9DUE1fRkNDMSwg TVBDODV4eF9DUE1fRkNDMiwgTVBDODV4eF9DUE1fRkNDMywNCiAJCQlNUEM4NXh4X0NQTV9NQ0Mx LCBNUEM4NXh4X0NQTV9NQ0MyLA0KKwkJCU1QQzg1eHhfQ1BNX1RJTUVSLA0KIAkJfSwNCiAJfSwN CiAJew0KIAkJLnBwY19zeXNfbmFtZQk9ICI4NTQxIiwNCiAJCS5tYXNrIAkJPSAweEZGRkYwMDAw LA0KIAkJLnZhbHVlIAkJPSAweDgwNzIwMDAwLA0KLQkJLm51bV9kZXZpY2VzCT0gMTMsDQorCQku bnVtX2RldmljZXMJPSAxNCwNCiAJCS5kZXZpY2VfbGlzdAk9IChlbnVtIHBwY19zeXNfZGV2aWNl c1tdKQ0KIAkJew0KIAkJCU1QQzg1eHhfVFNFQzEsIE1QQzg1eHhfVFNFQzIsIE1QQzg1eHhfSUlD MSwNCkBAIC02MCwxMyArNjEsMTQgQEANCiAJCQlNUEM4NXh4X1BFUkZNT04sIE1QQzg1eHhfRFVB UlQsDQogCQkJTVBDODV4eF9DUE1fU1BJLCBNUEM4NXh4X0NQTV9JMkMsDQogCQkJTVBDODV4eF9D UE1fRkNDMSwgTVBDODV4eF9DUE1fRkNDMiwNCisJCQlNUEM4NXh4X0NQTV9USU1FUiwNCiAJCX0s DQogCX0sDQogCXsNCiAJCS5wcGNfc3lzX25hbWUJPSAiODU0MUUiLA0KIAkJLm1hc2sgCQk9IDB4 RkZGRjAwMDAsDQogCQkudmFsdWUgCQk9IDB4ODA3QTAwMDAsDQotCQkubnVtX2RldmljZXMJPSAx NCwNCisJCS5udW1fZGV2aWNlcwk9IDE1LA0KIAkJLmRldmljZV9saXN0CT0gKGVudW0gcHBjX3N5 c19kZXZpY2VzW10pDQogCQl7DQogCQkJTVBDODV4eF9UU0VDMSwgTVBDODV4eF9UU0VDMiwgTVBD ODV4eF9JSUMxLA0KQEAgLTc0LDEzICs3NiwxNCBAQA0KIAkJCU1QQzg1eHhfUEVSRk1PTiwgTVBD ODV4eF9EVUFSVCwgTVBDODV4eF9TRUMyLA0KIAkJCU1QQzg1eHhfQ1BNX1NQSSwgTVBDODV4eF9D UE1fSTJDLA0KIAkJCU1QQzg1eHhfQ1BNX0ZDQzEsIE1QQzg1eHhfQ1BNX0ZDQzIsDQorCQkJTVBD ODV4eF9DUE1fVElNRVIsDQogCQl9LA0KIAl9LA0KIAl7DQogCQkucHBjX3N5c19uYW1lCT0gIjg1 NTUiLA0KIAkJLm1hc2sgCQk9IDB4RkZGRjAwMDAsDQogCQkudmFsdWUgCQk9IDB4ODA3MTAwMDAs DQotCQkubnVtX2RldmljZXMJPSAxOSwNCisJCS5udW1fZGV2aWNlcwk9IDIwLA0KIAkJLmRldmlj ZV9saXN0CT0gKGVudW0gcHBjX3N5c19kZXZpY2VzW10pDQogCQl7DQogCQkJTVBDODV4eF9UU0VD MSwgTVBDODV4eF9UU0VDMiwgTVBDODV4eF9JSUMxLA0KQEAgLTkwLDE0ICs5MywxNCBAQA0KIAkJ CU1QQzg1eHhfQ1BNX1NDQzIsIE1QQzg1eHhfQ1BNX1NDQzMsDQogCQkJTVBDODV4eF9DUE1fRkND MSwgTVBDODV4eF9DUE1fRkNDMiwNCiAJCQlNUEM4NXh4X0NQTV9TTUMxLCBNUEM4NXh4X0NQTV9T TUMyLA0KLQkJCU1QQzg1eHhfQ1BNX1VTQiwNCisJCQlNUEM4NXh4X0NQTV9VU0IsIE1QQzg1eHhf Q1BNX1RJTUVSLA0KIAkJfSwNCiAJfSwNCiAJew0KIAkJLnBwY19zeXNfbmFtZQk9ICI4NTU1RSIs DQogCQkubWFzayAJCT0gMHhGRkZGMDAwMCwNCiAJCS52YWx1ZSAJCT0gMHg4MDc5MDAwMCwNCi0J CS5udW1fZGV2aWNlcwk9IDIwLA0KKwkJLm51bV9kZXZpY2VzCT0gMjEsDQogCQkuZGV2aWNlX2xp c3QJPSAoZW51bSBwcGNfc3lzX2RldmljZXNbXSkNCiAJCXsNCiAJCQlNUEM4NXh4X1RTRUMxLCBN UEM4NXh4X1RTRUMyLCBNUEM4NXh4X0lJQzEsDQpAQCAtMTA3LDcgKzExMCw3IEBADQogCQkJTVBD ODV4eF9DUE1fU0NDMiwgTVBDODV4eF9DUE1fU0NDMywNCiAJCQlNUEM4NXh4X0NQTV9GQ0MxLCBN UEM4NXh4X0NQTV9GQ0MyLA0KIAkJCU1QQzg1eHhfQ1BNX1NNQzEsIE1QQzg1eHhfQ1BNX1NNQzIs DQotCQkJTVBDODV4eF9DUE1fVVNCLA0KKwkJCU1QQzg1eHhfQ1BNX1VTQiwgTVBDODV4eF9DUE1f VElNRVIsDQogCQl9LA0KIAl9LA0KIAl7CS8qIGRlZmF1bHQgbWF0Y2ggKi8NCmRpZmYgLXVyTiAt WCAvaG9tZS9qbWNtdWxsYW4vZG9udGRpZmYgbGludXgtMi42L2luY2x1ZGUvYXNtLXBwYy9tcGM4 NXh4LmggbGludXgtMi42LnBhdGNoL2luY2x1ZGUvYXNtLXBwYy9tcGM4NXh4LmgNCi0tLSBsaW51 eC0yLjYvaW5jbHVkZS9hc20tcHBjL21wYzg1eHguaAkyMDA1LTAzLTMxIDE0OjE3OjAwLjAwMDAw MDAwMCAtMDUwMA0KKysrIGxpbnV4LTIuNi5wYXRjaC9pbmNsdWRlL2FzbS1wcGMvbXBjODV4eC5o CTIwMDUtMDMtMzEgMTQ6MzY6MDYuMDAwMDAwMDAwIC0wNTAwDQpAQCAtMTI3LDYgKzEyNyw3IEBA DQogCU1QQzg1eHhfQ1BNX01DQzIsDQogCU1QQzg1eHhfQ1BNX1NNQzEsDQogCU1QQzg1eHhfQ1BN X1NNQzIsDQorCU1QQzg1eHhfQ1BNX1RJTUVSLA0KIH07DQogDQogI2VuZGlmIC8qIENPTkZJR184 NXh4ICovDQo= --=-KXEnYpftYlZtN/zIaf15 Content-Disposition: attachment; filename=cpm-timer.patch Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name=cpm-timer.patch; charset=ISO-8859-1 RGVzY3JpcHRpb246IENQTTIgVGltZXJzIEFQSQ0KRGF0ZTogVGh1IE1hciAzMSAxNDo0OTo0OSBF U1QgMjAwNQ0KUGF0Y2hlczogbGludXgtMi42LjEyLXJjMS5iaw0KU2lnbmVkLU9mZi1CeTogSmFz b24gTWNNdWxsYW4gPGphc29uLm1jbXVsbGFuQHRpbWVzeXMuY29tPg0KDQpEaWZmZXJlbmNlIHN1 bW1hcnk6DQogYXJjaC9wcGMvS2NvbmZpZyAgICAgICAgICAgIHwgICAgNiANCiBhcmNoL3BwYy9z eXNsaWIvTWFrZWZpbGUgICAgfCAgICAxIA0KIGFyY2gvcHBjL3N5c2xpYi9jcG1fdGltZXIuYyB8 ICA1MjIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiBpbmNs dWRlL2FzbS1wcGMvY3BtX3RpbWVyLmggfCAgIDc0ICsrKysrKw0KIDQgZmlsZXMgY2hhbmdlZCwg NjAzIGluc2VydGlvbnMoKykNCg0KZGlmZiAtdXJOIC1YIC9ob21lL2ptY211bGxhbi9kb250ZGlm ZiBsaW51eC0yLjYvYXJjaC9wcGMvS2NvbmZpZyBsaW51eC0yLjYucGF0Y2gvYXJjaC9wcGMvS2Nv bmZpZw0KLS0tIGxpbnV4LTIuNi9hcmNoL3BwYy9LY29uZmlnCTIwMDUtMDMtMzEgMTQ6MDU6NDgu MDAwMDAwMDAwIC0wNTAwDQorKysgbGludXgtMi42LnBhdGNoL2FyY2gvcHBjL0tjb25maWcJMjAw NS0wMy0zMSAxNDo1MDoyOS4xOTI0NjkxOTggLTA1MDANCkBAIC03MTMsNiArNzEzLDEyIEBADQog CSAgeW91IHdpc2ggdG8gYnVpbGQgYSBrZXJuZWwgZm9yIGEgbWFjaGluZSB3aXRoIGEgQ1BNMiBj b3Byb2Nlc3Nvcg0KIAkgIG9uIGl0ICg4MjZ4LCA4Mjd4LCA4NTYwKS4NCiANCitjb25maWcgQ1BN X1RJTUVSDQorCXRyaXN0YXRlICJDUE0yIFRpbWVycyINCisJZGVwZW5kcyBvbiA4MjYwIHx8IDg1 eHgNCisJaGVscA0KKwkgIEluY2x1ZGVzIGtlcm5lbCBzdXBwb3J0IGZvciBDUE0yIHRpbWVycw0K Kw0KIGNvbmZpZyBQUENfQ0hSUA0KIAlib29sDQogCWRlcGVuZHMgb24gUFBDX01VTFRJUExBVEZP Uk0NCmRpZmYgLXVyTiAtWCAvaG9tZS9qbWNtdWxsYW4vZG9udGRpZmYgbGludXgtMi42L2FyY2gv cHBjL3N5c2xpYi9jcG1fdGltZXIuYyBsaW51eC0yLjYucGF0Y2gvYXJjaC9wcGMvc3lzbGliL2Nw bV90aW1lci5jDQotLS0gbGludXgtMi42L2FyY2gvcHBjL3N5c2xpYi9jcG1fdGltZXIuYwkxOTY5 LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMA0KKysrIGxpbnV4LTIuNi5wYXRjaC9hcmNo L3BwYy9zeXNsaWIvY3BtX3RpbWVyLmMJMjAwNS0wMy0zMSAxNDo1MDoyOS4yMTc0NjM1MzQgLTA1 MDANCkBAIC0wLDAgKzEsNTIyIEBADQorI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPg0KKyNpbmNs dWRlIDxsaW51eC9tb2R1bGUuaD4NCisjaW5jbHVkZSA8bGludXgvdGltZXIuaD4NCisjaW5jbHVk ZSA8bGludXgvaW9wb3J0Lmg+DQorI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPg0KKyNpbmNs dWRlIDxsaW51eC9kZXZpY2UuaD4NCisjaW5jbHVkZSA8bGludXgvcHJvY19mcy5oPg0KKyNpbmNs dWRlIDxsaW51eC9zZXFfZmlsZS5oPg0KKw0KKyNpbmNsdWRlIDxhc20vaW8uaD4NCisjaW5jbHVk ZSA8YXNtL2NwbTIuaD4NCisjaW5jbHVkZSA8YXNtL2NwbV90aW1lci5oPg0KKyNpbmNsdWRlIDxh c20vZGVsYXkuaD4NCisjaW5jbHVkZSA8YXNtL3BwY2Jvb3QuaD4NCisNCisjZGVmaW5lIFRHQ1Jf Q0FTCTB4OA0KKyNkZWZpbmUgVEdDUl9HTQkJMHg4DQorI2RlZmluZSBUR0NSX1NUUAkweDINCisj ZGVmaW5lIFRHQ1JfUlNUCTB4MQ0KKw0KKyNkZWZpbmUgVE1SX1BTX01BU0sJMHhmZjAwDQorI2Rl ZmluZSBUTVJfQ0VfTUFTSwkweGZmYzANCisjZGVmaW5lICAgVE1SX0NFX0RJU0FCTEUJMHgwMDAw DQorI2RlZmluZQkgIFRNUl9DRV9SSVNJTkcJCTB4MDA0MA0KKyNkZWZpbmUJICBUTVJfQ0VfRkFM TElORwkweDAwODANCisjZGVmaW5lCSAgVE1SX0NFX0JPVEgJCTB4MDBjMA0KKyNkZWZpbmUJVE1S X09NCQkweDAwMjANCisjZGVmaW5lIFRNUl9PUkkJCTB4MDAxMA0KKyNkZWZpbmUgVE1SX0ZSUgkJ MHgwMDA4DQorI2RlZmluZSBUTVJfSUNMS19NQVNLCTB4MDAwNg0KKyNkZWZpbmUgICBUTVJfSUNM S19DQVNDQURFRAkweDAwMDANCisjZGVmaW5lICAgVE1SX0lDTEtfSU5URVJOQUwJMHgwMDAyDQor I2RlZmluZSAgIFRNUl9JQ0xLX0lOVF9ESVZfMTYJMHgwMDA0DQorI2RlZmluZQkgIFRNUl9JQ0xL X1RJTgkJMHgwMDA2DQorI2RlZmluZSBUTVJfR0UJCTB4MDAwMQ0KKw0KKyNkZWZpbmUgVEVSX1JF RgkJMHgwMDAyDQorI2RlZmluZSBURVJfQ0FQCQkweDAwMDENCisNCisvKiBUaW1lciBmdW5jdGlv bnMNCisgKi8NCitzdGF0aWMgc3RydWN0IHJlc291cmNlIGNwbV90aW1lcl9yZXNvdXJjZSA9IHsN CisJLm5hbWUgPSAiQ1BNIFRpbWVycyIsDQorCS5zdGFydCA9IDAsDQorCS5lbmQgICA9IDMsDQor fTsNCisNCitzdGF0aWMgc3RydWN0IGNwbV90aW1lcl9zIHsNCisJY2hhciBuYW1lWzE2XTsNCisJ aW50IGlycTsNCisJc3RydWN0IHsNCisJCXZvbGF0aWxlIHVpbnQxNl90ICp0bXI7DQorCQl2b2xh dGlsZSB1aW50MTZfdCAqdGVyOw0KKwl9IGN0cmw7DQorCXVuaW9uIHsNCisJCXN0cnVjdCB7DQor CQkJdm9sYXRpbGUgdWludDE2X3QgKnRycjsNCisJCQl2b2xhdGlsZSB1aW50MTZfdCAqdGNyOw0K KwkJCXZvbGF0aWxlIHVpbnQxNl90ICp0Y247DQorCQl9IHIxNjsNCisJCXN0cnVjdCB7DQorCQkJ dm9sYXRpbGUgdWludDMyX3QgKnRycjsNCisJCQl2b2xhdGlsZSB1aW50MzJfdCAqdGNyOw0KKwkJ CXZvbGF0aWxlIHVpbnQzMl90ICp0Y247DQorCQl9IHIzMjsNCisJfSBkYXRhOw0KKwljcG1fdGlt ZXJfZiBmdW5jOw0KKwl2b2lkICpmdW5jX2RhdGE7DQorCWludCBvbmVfc2hvdDsNCisJY3BtX3Rp bWVyX3QgdG07DQorfSBjcG1fdGltZXJbNF07DQorDQorc3RhdGljIGNwbXRpbWVyX2NwbTJfdCAq dGltZXJfYmFzZSA9IE5VTEw7DQorDQorc3RhdGljIGlycXJldHVybl90IGNwbV90aW1lcl9pcnEo aW50IGlycSwgdm9pZCAqZGF0YSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpDQorew0KKwlzdHJ1Y3Qg Y3BtX3RpbWVyX3MgKmluZm8gPSBkYXRhOw0KKwljcG1fdGltZXJfZiBmdW5jOw0KKwl1aW50MTZf dCBldmVudHMgPSAqaW5mby0+Y3RybC50ZXI7DQorCXZvaWQgKmZ1bmNfZGF0YTsNCisNCisJZnVu Y19kYXRhID0gaW5mby0+ZnVuY19kYXRhOwkvKiBPcmRlciBpcyBpbXBvcnRhbnQgaGVyZSEgKi8N CisJZnVuYyA9IGluZm8tPmZ1bmM7DQorCWlmIChpbmZvLT5mdW5jKSB7DQorCQlmdW5jKGluZm8t PnRtLCBmdW5jX2RhdGEpOw0KKwl9DQorDQorCWlmIChpbmZvLT5vbmVfc2hvdCkgew0KKwkJKmlu Zm8tPmN0cmwudG1yICY9IH5UTVJfT1JJOwkvKiBEaXNhYmxlIGludGVycnVwdCAqLw0KKwkJaW5m by0+ZnVuYyA9IE5VTEw7DQorCQlpbmZvLT5mdW5jX2RhdGEgPSBOVUxMOw0KKwl9DQorDQorCSpp bmZvLT5jdHJsLnRlciA9IGV2ZW50czsJLyogQ2xlYXIgZXZlbnRzICovDQorDQorCXJldHVybiBJ UlFfSEFORExFRDsNCit9DQorDQorLyogQWxsb2NhdGUgYSB0aW1lci4NCisgKiBQYXNzIGEgdGlt ZXIgaWQsIGFuZCBhIHJlZmVyZW5jZSB0byBhIE5VTEwgc3RydWN0IHJlc291cmNlICoNCisgKiBS ZXR1cm5zIDAgb24gc3VjY2VzcywgLWVycm5vIG9uIGVycm9yDQorICovDQorRVhQT1JUX1NZTUJP TChjcG1fdGltZXJfYWxsb2MpOw0KK2ludCBjcG1fdGltZXJfYWxsb2MoaW50IHRpbWVyX2lkLCBj cG1fdGltZXJfdCAqcHRtKQ0KK3sNCisJc3RydWN0IHJlc291cmNlICp0bTsNCisJaW50IGVycjsN CisJdWludDE2X3QgbWFzazsNCisgICAgICANCisJdG0gPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3Qg cmVzb3VyY2UpKzE2LCBHRlBfS0VSTkVMKTsNCisJbWVtc2V0KHRtLDAsc2l6ZW9mKHN0cnVjdCBy ZXNvdXJjZSkrMTYpOw0KKwlpZiAodG0gPT0gTlVMTCkNCisJCXJldHVybiAtRU5PTUVNOw0KKw0K Kwl0bS0+c3RhcnQgPSAodGltZXJfaWQ+PjQpJjB4ZjsNCisJdG0tPmVuZCAgID0gdGltZXJfaWQg JiAweGY7DQorCWlmICh0bS0+c3RhcnQgPiAzKQ0KKwkJcmV0dXJuIC1FSU5WQUw7DQorDQorCWlm ICgodG0tPmVuZCAhPSB0bS0+c3RhcnQpICYmIA0KKwkgICAgKCh0bS0+c3RhcnQgJiAxKSB8fCAo dG0tPmVuZCAhPSAodG0tPnN0YXJ0KzEpKSkpDQorCSAgICByZXR1cm4gLUVJTlZBTDsNCisNCisJ ZXJyID0gcmVxdWVzdF9yZXNvdXJjZSgmY3BtX3RpbWVyX3Jlc291cmNlLHRtKTsNCisJaWYgKGVy ciA8IDApIHsNCisJCWtmcmVlKHRtKTsNCisJCXJldHVybiBlcnI7DQorCX0NCisNCisJKnB0bSA9 IChjcG1fdGltZXJfdCkodG0pOw0KKw0KKwl0bS0+bmFtZSA9ICgodm9pZCAqKXRtKSArIHNpemVv ZihzdHJ1Y3QgcmVzb3VyY2UpOw0KKwlpZiAodG0tPnN0YXJ0ID09IHRtLT5lbmQpIHsNCisJCXNw cmludGYoKGNoYXIgKil0bS0+bmFtZSwidGltZXIlbGQiLHRtLT5zdGFydCsxKTsNCisJfSBlbHNl IHsNCisJCXNwcmludGYoKGNoYXIgKil0bS0+bmFtZSwidGltZXIlbGQtJWxkIix0bS0+c3RhcnQr MSx0bS0+ZW5kKzEpOw0KKwl9DQorDQorCWVyciA9IHJlcXVlc3RfaXJxKGNwbV90aW1lclt0bS0+ ZW5kXS5pcnEsY3BtX3RpbWVyX2lycSxTQV9JTlRFUlJVUFQsdG0tPm5hbWUsJmNwbV90aW1lclt0 bS0+ZW5kXSk7DQorCWlmIChlcnIgPCAwKSB7DQorCQlwcmludGsoS0VSTl9FUlIgIkNQTSBUaW1l ciAlczogQ2FuJ3QgYWxsb2NhdGUgSVJRICVkLlxuIix0bS0+bmFtZSxjcG1fdGltZXJbdG0tPmVu ZF0uaXJxKTsNCisJfQ0KKw0KKwkvKiBTdGVwIDEgLSBlbmFibGUgYW5kIHN0b3AgdGhlIHRpbWVy ICovDQorCW1hc2sgPSAoVEdDUl9SU1R8VEdDUl9TVFApIDw8ICg0KigodG0tPmVuZCkmMSkpOw0K KwlpZiAodG0tPnN0YXJ0IDwgMikgew0KKwkJdGltZXJfYmFzZS0+Y3BtdF90Z2NyMSB8PSBtYXNr Ow0KKwl9IGVsc2Ugew0KKwkJdGltZXJfYmFzZS0+Y3BtdF90Z2NyMiB8PSBtYXNrOw0KKwl9DQor DQorCWNwbV90aW1lclt0bS0+ZW5kXS5mdW5jID0gTlVMTDsNCisNCisJKmNwbV90aW1lclt0bS0+ ZW5kXS5jdHJsLnRtciA9IFRNUl9GUlIgfCBUTVJfSUNMS19JTlRfRElWXzE2Ow0KKwlpZiAodG0t PnN0YXJ0ICE9IHRtLT5lbmQpIHsNCisJCWlmICh0bS0+c3RhcnQgPT0gMCkgew0KKwkJCXRpbWVy X2Jhc2UtPmNwbXRfdGdjcjEgfD0gKFRHQ1JfQ0FTIDw8IDQpOw0KKwkJfSBlbHNlIGlmICh0bS0+ c3RhcnQgPT0gMikgew0KKwkJCXRpbWVyX2Jhc2UtPmNwbXRfdGdjcjIgfD0gKFRHQ1JfQ0FTIDw8 IDQpOw0KKwkJfQ0KKwkJKmNwbV90aW1lclt0bS0+c3RhcnRdLmN0cmwudG1yID0gVE1SX0ZSUiB8 IFRNUl9JQ0xLX0lOVF9ESVZfMTY7DQorCX0gZWxzZSB7DQorCQlpZiAodG0tPnN0YXJ0IDwgMikg ew0KKwkJCXRpbWVyX2Jhc2UtPmNwbXRfdGdjcjEgJj0gfihUR0NSX0NBUyA8PCA0KTsNCisJCX0g ZWxzZSB7DQorCQkJdGltZXJfYmFzZS0+Y3BtdF90Z2NyMiAmPSB+KFRHQ1JfQ0FTIDw8IDQpOw0K KwkJfQ0KKwl9DQorDQorCWNwbV90aW1lclt0bS0+ZW5kXS50bSA9IHRtOw0KKw0KKwljcG1fdGlt ZXJfcmVzZXQodG0pOw0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorLyogRnJlZSB0aW1lciwgdXNp bmcgY3BtX3RpbWVyX3QgZnJvbSBjcG1fdGltZXJfYWxsb2MNCisgKiBjcG1fdGltZXJfZnJlZSgp IHdpbGwgc3RvcCB0aGUgdGltZXIsIGFuZCBhbnkgY3ljbGUgb3Igb25lLXNob3QgZnVuY3Rpb25z DQorICogcGVuZGluZy4NCisgKi8NCitFWFBPUlRfU1lNQk9MKGNwbV90aW1lcl9mcmVlKTsNCit2 b2lkIGNwbV90aW1lcl9mcmVlKGNwbV90aW1lcl90IHRtKQ0KK3sNCisJdWludDE2X3QgbWFzazsN CisNCisJY3BtX3RpbWVyX3N0b3AodG0pOw0KKwlmcmVlX2lycShjcG1fdGltZXJbdG0tPmVuZF0u aXJxLCZjcG1fdGltZXJbdG0tPmVuZF0pOw0KKwlpZiAodG0tPnN0YXJ0ICE9IHRtLT5lbmQpIHsN CisJCWlmICh0bS0+c3RhcnQgPT0gMCkgew0KKwkJCXRpbWVyX2Jhc2UtPmNwbXRfdGdjcjEgJj0g fihUR0NSX0NBUyA8PCA0KTsNCisJCX0gZWxzZSBpZiAodG0tPnN0YXJ0ID09IDIpIHsNCisJCQl0 aW1lcl9iYXNlLT5jcG10X3RnY3IyICY9IH4oVEdDUl9DQVMgPDwgNCk7DQorCQl9DQorCX0NCisJ d21iKCk7DQorDQorCS8qIERpc2FibGUgdGhlIHRpbWVyICovDQorCW1hc2sgPSAoVEdDUl9SU1Qg PDwgKDQqKCh0bS0+c3RhcnQpJjEpKSkgfA0KKwkgICAgICAgKFRHQ1JfUlNUIDw8ICg0KigodG0t PmVuZCkmMSkpKTsNCisJaWYgKHRtLT5zdGFydCA8IDIpIHsNCisJCXRpbWVyX2Jhc2UtPmNwbXRf dGdjcjEgJj0gfm1hc2s7DQorCX0gZWxzZSB7DQorCQl0aW1lcl9iYXNlLT5jcG10X3RnY3IyICY9 IH5tYXNrOw0KKwl9DQorCXdtYigpOw0KKw0KKwlyZWxlYXNlX3Jlc291cmNlKHRtKTsNCisJa2Zy ZWUodG0pOw0KK30NCisNCisvKiBTdG9wIHRoZSB0aW1lcg0KKyAqLw0KK0VYUE9SVF9TWU1CT0wo Y3BtX3RpbWVyX3N0b3ApOw0KK3ZvaWQgY3BtX3RpbWVyX3N0b3AoY3BtX3RpbWVyX3QgdG0pDQor ew0KKwl1aW50OF90IG1hc2s7DQorDQorCW1hc2sgPSAoVEdDUl9TVFAgPDwgKDQqKCh0bS0+ZW5k KSYxKSkpOw0KKwlpZiAodG0tPnN0YXJ0IDwgMikgew0KKwkJdGltZXJfYmFzZS0+Y3BtdF90Z2Ny MSB8PSBtYXNrOw0KKwl9IGVsc2Ugew0KKwkJdGltZXJfYmFzZS0+Y3BtdF90Z2NyMiB8PSBtYXNr Ow0KKwl9DQorCXdtYigpOw0KKw0KK30NCisNCisvKiBTdGFydCB0aGUgdGltZXINCisgKi8NCitF WFBPUlRfU1lNQk9MKGNwbV90aW1lcl9zdGFydCk7DQordm9pZCBjcG1fdGltZXJfc3RhcnQoY3Bt X3RpbWVyX3QgdG0pDQorew0KKwl1aW50OF90IG1hc2s7DQorDQorCW1hc2sgPSAoVEdDUl9TVFAg PDwgKDQqKCh0bS0+ZW5kKSYxKSkpOw0KKwlpZiAodG0tPnN0YXJ0IDwgMikgew0KKwkJdGltZXJf YmFzZS0+Y3BtdF90Z2NyMSAmPSB+bWFzazsNCisJfSBlbHNlIHsNCisJCXRpbWVyX2Jhc2UtPmNw bXRfdGdjcjIgJj0gfm1hc2s7DQorCX0NCisJd21iKCk7DQorfQ0KKw0KKy8qIFJlc2V0IHRoZSB0 aW1lciB0byAwDQorICoNCisgKiBZZXMsIHRoaXMgY29kZSBsb29rcyByYXRoZXIgaG9rZXksIGJ1 dCBldmlkZW50bHkgdGNuIGlzIGEgd3JpdGUtb25jZQ0KKyAqIHJlZ2lzdGVyLiANCisgKi8NCitF WFBPUlRfU1lNQk9MKGNwbV90aW1lcl9yZXNldCk7DQordm9pZCBjcG1fdGltZXJfcmVzZXQoY3Bt X3RpbWVyX3QgdG0pDQorew0KKwlpbnQgbWFzazsNCisJaW50IHRtcjsNCisNCisJbWFzayA9ICgo VEdDUl9TVFB8VEdDUl9SU1QpIDw8ICg0KigodG0tPmVuZCkmMSkpKTsNCisJdG1yID0gKmNwbV90 aW1lclt0bS0+ZW5kXS5jdHJsLnRtcjsNCisNCisJaWYgKHRtLT5zdGFydCA8IDIpIHsNCisJCXRp bWVyX2Jhc2UtPmNwbXRfdGdjcjEgJj0gfm1hc2s7DQorCX0gZWxzZSB7DQorCQl0aW1lcl9iYXNl LT5jcG10X3RnY3IyICY9IH5tYXNrOw0KKwl9DQorCXdtYigpOw0KKw0KKwlpZiAodG0tPnN0YXJ0 ID09IHRtLT5lbmQpIHsNCisJCSpjcG1fdGltZXJbdG0tPnN0YXJ0XS5kYXRhLnIxNi50Y24gPSAw Ow0KKwl9IGVsc2Ugew0KKwkJKmNwbV90aW1lclt0bS0+c3RhcnRdLmRhdGEucjMyLnRjbiA9IDA7 DQorCX0NCisJd21iKCk7DQorDQorCWlmICh0bS0+c3RhcnQgPCAyKSB7DQorCQl0aW1lcl9iYXNl LT5jcG10X3RnY3IxIHw9IG1hc2s7DQorCX0gZWxzZSB7DQorCQl0aW1lcl9iYXNlLT5jcG10X3Rn Y3IyIHw9IG1hc2s7DQorCX0NCisJd21iKCk7DQorCSpjcG1fdGltZXJbdG0tPmVuZF0uY3RybC50 bXIgPSB0bXI7DQorfQ0KKw0KKy8qIEdldCB0aGUgdGltZXIgcmVzb2x1dGlvbiwgaW4gbmFub3Nl Y29uZHMvdGljaw0KKyAqLw0KK0VYUE9SVF9TWU1CT0woY3BtX3RpbWVyX2dldF9yZXNvbHV0aW9u KTsNCit1bnNpZ25lZCBsb25nIGNwbV90aW1lcl9nZXRfcmVzb2x1dGlvbihjcG1fdGltZXJfdCB0 bSkNCit7DQorCS8qIEZvciB0aGUgbXBjODV4eCwgd2UncmUganVzdCB1c2luZyBjb3JlIGZyZXF1 ZW5jeS8xNg0KKwkgKi8NCisJZXh0ZXJuIHVuc2lnbmVkIGNoYXIgX19yZXNbXTsNCisJYmRfdCAq YmQgPSAoYmRfdCAqKV9fcmVzOw0KKw0KKwlyZXR1cm4gYmQtPmJpX2J1c2ZyZXEvMTAwMDAwMCox NjsNCit9DQorDQorLyogR2V0IHRoZSB0aW1lciB2YWx1ZSwgaW4gdGlja3MNCisgKi8NCitFWFBP UlRfU1lNQk9MKGNwbV90aW1lcl9nZXRfdGlja3MpOw0KK3Vuc2lnbmVkIGxvbmcgY3BtX3RpbWVy X2dldF90aWNrcyhjcG1fdGltZXJfdCB0bSkNCit7DQorCXVuc2lnbmVkIGxvbmcgdGlja3M7DQor DQorCXJtYigpOw0KKwlpZiAodG0tPmVuZCAhPSB0bS0+c3RhcnQpDQorCQl0aWNrcyA9ICpjcG1f dGltZXJbdG0tPnN0YXJ0XS5kYXRhLnIzMi50Y247DQorCWVsc2UNCisJCXRpY2tzID0gKmNwbV90 aW1lclt0bS0+c3RhcnRdLmRhdGEucjE2LnRjbjsNCisNCisJcmV0dXJuIHRpY2tzOw0KK30NCisN CisvKiBDYWxsIGEgZnVuY3Rpb24gYWZ0ZXIgc28gbWFueSB0aWNrcw0KKyAqIFRoZSBmdW5jdGlv biB3aWxsIGJlIGNhbGxlZCBpbiBpbnRlcnJ1cHQgY29udGV4dC4NCisgKg0KKyAqIFlvdSBjYW5u b3QgY2FsbCBjcG1fdGltZXJfZnJlZSgpIHdpdGhpbiB0aGF0IGNvbnRleHQuDQorICovDQorDQor c3RhdGljIGludCBjcG1fdGltZXJfY2FsbF9jb21tb24oY3BtX3RpbWVyX3QgdG0sIHVuc2lnbmVk IGxvbmcgdGlja3MsIGNwbV90aW1lcl9mIGZ1bmMsIHZvaWQgKmZ1bmNfZGF0YSkNCit7DQorCWlm IChjcG1fdGltZXJbdG0tPnN0YXJ0XS5mdW5jICE9IE5VTEwpDQorCQlyZXR1cm4gLUVCVVNZOw0K Kw0KKwljcG1fdGltZXJfcmVzZXQodG0pOw0KKw0KKwlpZiAodG0tPnN0YXJ0ICE9IHRtLT5lbmQp IHsNCisJCSpjcG1fdGltZXJbdG0tPnN0YXJ0XS5kYXRhLnIzMi50cnIgPSB0aWNrczsNCisJfSBl bHNlIHsNCisJCSpjcG1fdGltZXJbdG0tPnN0YXJ0XS5kYXRhLnIxNi50cnIgPSB0aWNrcyAmIDB4 ZmZmZjsNCisJfQ0KKwl3bWIoKTsNCisNCisJY3BtX3RpbWVyW3RtLT5lbmRdLmZ1bmMgPSBmdW5j Ow0KKwljcG1fdGltZXJbdG0tPmVuZF0uZnVuY19kYXRhID0gZnVuY19kYXRhOw0KKwl3bWIoKTsN CisNCisJKmNwbV90aW1lclt0bS0+ZW5kXS5jdHJsLnRtciB8PSBUTVJfT1JJOw0KKwlpZiAodG0t PnN0YXJ0ICE9IHRtLT5lbmQpIHsNCisJCSpjcG1fdGltZXJbdG0tPnN0YXJ0XS5jdHJsLnRtciB8 PSBUTVJfT1JJOw0KKwkJKmNwbV90aW1lclt0bS0+c3RhcnRdLmN0cmwudGVyID0gMHhmZmZmOw0K Kwl9DQorCSpjcG1fdGltZXJbdG0tPmVuZF0uY3RybC50ZXIgPSAweGZmZmY7DQorDQorCXdtYigp Ow0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorDQorLyogVGhpcyBpcyB0aGUgb25lLXNob3QgdGlt ZXIuDQorICovDQorRVhQT1JUX1NZTUJPTChjcG1fdGltZXJfY2FsbF9vbmNlKTsNCitpbnQgY3Bt X3RpbWVyX2NhbGxfb25jZShjcG1fdGltZXJfdCB0bSwgdW5zaWduZWQgbG9uZyB0aWNrcywgY3Bt X3RpbWVyX2YgZnVuYywgdm9pZCAqZnVuY19kYXRhKQ0KK3sNCisJaW50IGVycjsNCisNCisJZXJy ID0gY3BtX3RpbWVyX2NhbGxfY29tbW9uKHRtLHRpY2tzLGZ1bmMsZnVuY19kYXRhKTsNCisJaWYg KGVyciA8IDApDQorCQlyZXR1cm4gZXJyOw0KKw0KKwljcG1fdGltZXJbdG0tPmVuZF0ub25lX3No b3QgPSAxOw0KKw0KKwlyZXR1cm4gMDsNCit9DQorCQ0KKw0KKy8qIFRoaXMgaXMgdGhlIHJlcGVh dC10aW1lciBmdW5jdGlvbg0KKyAqLw0KK0VYUE9SVF9TWU1CT0woY3BtX3RpbWVyX2NhbGxfZXZl cnkpOw0KK2ludCBjcG1fdGltZXJfY2FsbF9ldmVyeShjcG1fdGltZXJfdCB0bSwgdW5zaWduZWQg bG9uZyB0aWNrcywgY3BtX3RpbWVyX2YgZnVuYywgdm9pZCAqZnVuY19kYXRhKQ0KK3sNCisJaW50 IGVycjsNCisNCisJZXJyID0gY3BtX3RpbWVyX2NhbGxfY29tbW9uKHRtLHRpY2tzLGZ1bmMsZnVu Y19kYXRhKTsNCisJaWYgKGVyciA8IDApDQorCQlyZXR1cm4gZXJyOw0KKw0KKwljcG1fdGltZXJb dG0tPmVuZF0ub25lX3Nob3QgPSAwOw0KKw0KKwlyZXR1cm4gMDsNCit9DQorCQ0KKy8qIENhbmNl bCBhbnkgcGVuZGluZyB0aW1lciBmdW5jdGlvbnMNCisgKi8NCitFWFBPUlRfU1lNQk9MKGNwbV90 aW1lcl9jYWxsX25vbmUpOw0KK2ludCBjcG1fdGltZXJfY2FsbF9ub25lKGNwbV90aW1lcl90IHRt KQ0KK3sNCisJY3BtX3RpbWVyW3RtLT5lbmRdLm9uZV9zaG90ID0gMTsNCisJd21iKCk7DQorCWNw bV90aW1lclt0bS0+ZW5kXS5mdW5jID0gTlVMTDsNCisJd21iKCk7DQorCWNwbV90aW1lclt0bS0+ ZW5kXS5mdW5jX2RhdGEgPSBOVUxMOw0KKwl3bWIoKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0K KyNpZmRlZiBDT05GSUdfUFJPQ19GUw0KKw0KK2V4dGVybiBzdHJ1Y3Qgc2VxX29wZXJhdGlvbnMg cmVzb3VyY2Vfb3A7DQorDQorc3RhdGljIGludCBjcG1fdGltZXJfb3BlbihzdHJ1Y3QgaW5vZGUg Kmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkNCit7DQorCWludCByZXMgPSBzZXFfb3BlbihmaWxl LCAmcmVzb3VyY2Vfb3ApOw0KKwlpZiAoIXJlcykgew0KKwkJc3RydWN0IHNlcV9maWxlICptID0g ZmlsZS0+cHJpdmF0ZV9kYXRhOw0KKwkJbS0+cHJpdmF0ZSA9ICZjcG1fdGltZXJfcmVzb3VyY2U7 DQorCX0NCisJcmV0dXJuIHJlczsNCit9DQorDQorc3RhdGljIHN0cnVjdCBmaWxlX29wZXJhdGlv bnMgcHJvY19jcG1fdGltZXJfb3BlcmF0aW9ucyA9IHsNCisJLm9wZW4JCT0gY3BtX3RpbWVyX29w ZW4sDQorCS5yZWFkCQk9IHNlcV9yZWFkLA0KKwkubGxzZWVrCQk9IHNlcV9sc2VlaywNCisJLnJl bGVhc2UJPSBzZXFfcmVsZWFzZSwNCit9Ow0KKw0KK3N0YXRpYyBpbnQgX19pbml0IGNwbV90aW1l cl9wcm9jX2luaXQodm9pZCkNCit7DQorCXN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqZW50cnk7DQor DQorCWVudHJ5ID0gY3JlYXRlX3Byb2NfZW50cnkoImNwbS10aW1lciIsIDAsIE5VTEwpOw0KKwlp ZiAoZW50cnkpDQorCQllbnRyeS0+cHJvY19mb3BzID0gJnByb2NfY3BtX3RpbWVyX29wZXJhdGlv bnM7DQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgdm9pZCBfX2V4aXQgY3BtX3RpbWVyX3By b2NfZXhpdCh2b2lkKQ0KK3sNCisJcmVtb3ZlX3Byb2NfZW50cnkoImNwbS10aW1lciIsIE5VTEwp Ow0KK30NCisNCisjZW5kaWYgLyogQ09ORklHX1BST0NfRlMgKi8NCisNCitzdGF0aWMgaW50IF9f ZGV2aW5pdCBjcG1fdGltZXJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KQ0KK3sNCisJc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHRvX3BsYXRmb3JtX2RldmljZShkZXYpOw0KKwlpbnQg aTsNCisJc3RydWN0IHJlc291cmNlICpyZXMsKmlycXM7DQorDQorCWlmICh0aW1lcl9iYXNlICE9 IE5VTEwpDQorCQlyZXR1cm4gLUVCVVNZOw0KKw0KKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3Vy Y2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOw0KKwlpZiAocmVzID09IE5VTEwpDQorCQlyZXR1 cm4gLUVJTlZBTDsNCisNCisJaXJxcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JF U09VUkNFX0lSUSwgMCk7DQorCWlmIChyZXMgPT0gTlVMTCB8fCAoKGlycXMtPmVuZCsxKS1pcnFz LT5zdGFydCkgIT0gNCkNCisJCXJldHVybiAtRUlOVkFMOw0KKw0KKwl0aW1lcl9iYXNlID0gaW9y ZW1hcChyZXMtPnN0YXJ0LHNpemVvZihjcG10aW1lcl9jcG0yX3QpKTsNCisJaWYgKHRpbWVyX2Jh c2UgPT0gTlVMTCkNCisJCXJldHVybiAtRU5PTUVNOw0KKw0KKyNkZWZpbmUgQ1BNX1RJTUVSX0Nf U0VUVVAoZmllbGQpIGRvIHtcDQorCWNwbV90aW1lclswXS5jdHJsLmZpZWxkID0gJnRpbWVyX2Jh c2UtPmNwbXRfIyNmaWVsZCMjMTsgXA0KKwljcG1fdGltZXJbMV0uY3RybC5maWVsZCA9ICZ0aW1l cl9iYXNlLT5jcG10XyMjZmllbGQjIzI7IFwNCisJY3BtX3RpbWVyWzJdLmN0cmwuZmllbGQgPSAm dGltZXJfYmFzZS0+Y3BtdF8jI2ZpZWxkIyMzOyBcDQorCWNwbV90aW1lclszXS5jdHJsLmZpZWxk ID0gJnRpbWVyX2Jhc2UtPmNwbXRfIyNmaWVsZCMjNDsgXA0KKwl9IHdoaWxlICgwKQ0KKw0KKyNk ZWZpbmUgQ1BNX1RJTUVSX0RfU0VUVVAoZmllbGQpIGRvIHtcDQorCWNwbV90aW1lclswXS5kYXRh LnIxNi5maWVsZCA9ICZ0aW1lcl9iYXNlLT5jcG10XyMjZmllbGQjIzE7IFwNCisJY3BtX3RpbWVy WzFdLmRhdGEucjE2LmZpZWxkID0gJnRpbWVyX2Jhc2UtPmNwbXRfIyNmaWVsZCMjMjsgXA0KKwlj cG1fdGltZXJbMl0uZGF0YS5yMTYuZmllbGQgPSAmdGltZXJfYmFzZS0+Y3BtdF8jI2ZpZWxkIyMz OyBcDQorCWNwbV90aW1lclszXS5kYXRhLnIxNi5maWVsZCA9ICZ0aW1lcl9iYXNlLT5jcG10XyMj ZmllbGQjIzQ7IFwNCisJfSB3aGlsZSAoMCkNCisNCisJQ1BNX1RJTUVSX0NfU0VUVVAodG1yKTsN CisJQ1BNX1RJTUVSX0NfU0VUVVAodGVyKTsNCisNCisJQ1BNX1RJTUVSX0RfU0VUVVAodHJyKTsN CisJQ1BNX1RJTUVSX0RfU0VUVVAodGNyKTsNCisJQ1BNX1RJTUVSX0RfU0VUVVAodGNuKTsNCisN CisJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgew0KKwkJc3ByaW50ZihjcG1fdGltZXJbaV0ubmFt ZSwiQ1BNIFRpbWVyICVkIixpKzEpOw0KKwkJY3BtX3RpbWVyW2ldLmlycSA9IGlycXMtPnN0YXJ0 K2k7DQorCX0NCisNCisjaWZkZWYgQ09ORklHX1BST0NfRlMNCisJY3BtX3RpbWVyX3Byb2NfaW5p dCgpOw0KKyNlbmRpZg0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIHZvaWQgX19kZXZl eGl0IGNwbV90aW1lcl9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KQ0KK3sNCisJaW91bm1hcCh0 aW1lcl9iYXNlKTsNCisjaWZkZWYgQ09ORklHX1BST0NfRlMNCisJY3BtX3RpbWVyX3Byb2NfZXhp dCgpOw0KKyNlbmRpZg0KK30NCisNCitzdGF0aWMgc3RydWN0IGRldmljZV9kcml2ZXIgY3BtX3Rp bWVyX2RyaXZlciA9IHsNCisJLm5hbWUgPSAiZnNsLWNwbS10aW1lciIsDQorCS5idXMgPSAmcGxh dGZvcm1fYnVzX3R5cGUsDQorCS5wcm9iZSA9IGNwbV90aW1lcl9wcm9iZSwNCisJLnJlbW92ZSA9 IF9fZGV2ZXhpdF9wKGNwbV90aW1lcl9yZW1vdmUpLA0KK307DQorDQorc3RhdGljIF9faW5pdCBp bnQgY3BtX3RpbWVyX2luaXQodm9pZCkNCit7DQorCXByaW50ayhLRVJOX0lORk8gImNwbS10aW1l cjogQ1BNMiBUaW1lcnNcbiIpOw0KKw0KKwlyZXR1cm4gZHJpdmVyX3JlZ2lzdGVyKCZjcG1fdGlt ZXJfZHJpdmVyKTsNCit9DQorDQorc3RhdGljIF9fZXhpdCB2b2lkIGNwbV90aW1lcl9leGl0KHZv aWQpDQorew0KKwlkcml2ZXJfdW5yZWdpc3RlcigmY3BtX3RpbWVyX2RyaXZlcik7DQorfQ0KKw0K K01PRFVMRV9MSUNFTlNFKCJHUEwiKTsNCisNCitNT0RVTEVfQVVUSE9SKCJKYXNvbiBNY011bGxh biA8amFzb24ubWNtdWxsYW5AdGltZXN5cy5jb20+Iik7DQorTU9EVUxFX0RFU0NSSVBUSU9OKCJD UE0yIHRpbWVyIGRyaXZlciIpOw0KKw0KK21vZHVsZV9pbml0KGNwbV90aW1lcl9pbml0KTsNCitt b2R1bGVfZXhpdChjcG1fdGltZXJfZXhpdCk7DQorDQorDQpkaWZmIC11ck4gLVggL2hvbWUvam1j bXVsbGFuL2RvbnRkaWZmIGxpbnV4LTIuNi9hcmNoL3BwYy9zeXNsaWIvTWFrZWZpbGUgbGludXgt Mi42LnBhdGNoL2FyY2gvcHBjL3N5c2xpYi9NYWtlZmlsZQ0KLS0tIGxpbnV4LTIuNi9hcmNoL3Bw Yy9zeXNsaWIvTWFrZWZpbGUJMjAwNS0wMy0zMSAxNDowNjowMy4wMDAwMDAwMDAgLTA1MDANCisr KyBsaW51eC0yLjYucGF0Y2gvYXJjaC9wcGMvc3lzbGliL01ha2VmaWxlCTIwMDUtMDMtMzEgMTQ6 NTA6MjkuMjExNDY0ODk0IC0wNTAwDQpAQCAtODQsNiArODQsNyBAQA0KIG9iai0kKENPTkZJR19Q Q0lfODI2MCkJCSs9IG04MjYwX3BjaS5vIGluZGlyZWN0X3BjaS5vDQogb2JqLSQoQ09ORklHXzgy NjBfUENJOSkJCSs9IG04MjYwX3BjaV9lcnJhdHVtOS5vDQogb2JqLSQoQ09ORklHX0NQTTIpCQkr PSBjcG0yX2NvbW1vbi5vIGNwbTJfcGljLm8NCitvYmotJChDT05GSUdfQ1BNX1RJTUVSKQkJKz0g Y3BtX3RpbWVyLm8NCiBpZmVxICgkKENPTkZJR19QUENfR0VONTUwKSx5KQ0KIG9iai0kKENPTkZJ R19LR0RCKQkJKz0gZ2VuNTUwX2tnZGIubyBnZW41NTBfZGJnLm8NCiBvYmotJChDT05GSUdfU0VS SUFMX1RFWFRfREVCVUcpCSs9IGdlbjU1MF9kYmcubw0KZGlmZiAtdXJOIC1YIC9ob21lL2ptY211 bGxhbi9kb250ZGlmZiBsaW51eC0yLjYvaW5jbHVkZS9hc20tcHBjL2NwbV90aW1lci5oIGxpbnV4 LTIuNi5wYXRjaC9pbmNsdWRlL2FzbS1wcGMvY3BtX3RpbWVyLmgNCi0tLSBsaW51eC0yLjYvaW5j bHVkZS9hc20tcHBjL2NwbV90aW1lci5oCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0w NTAwDQorKysgbGludXgtMi42LnBhdGNoL2luY2x1ZGUvYXNtLXBwYy9jcG1fdGltZXIuaAkyMDA1 LTAzLTMxIDE0OjUwOjI5LjIzOTQ1ODU1MCAtMDUwMA0KQEAgLTAsMCArMSw3NCBAQA0KKy8qIEdl bmVyaWMgaW5jbHVkZSBmaWxlIGZvciBhbGwgQ1BNIHRpbWVyIGRlZmluaXRpb25zLg0KKyAqLw0K KyNpZm5kZWYgX19BU01fQ1BNX1RJTUVSX0gNCisjZGVmaW5lIF9fQVNNX0NQTV9USU1FUl9IDQor DQorI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPg0KKyNpbmNsdWRlIDxsaW51eC9pb3BvcnQuaD4N CisNCisvKiBBbGxvY2F0ZS91dGlsaXplIHRpbWVycyANCisgKiBUaGVyZSBhcmUgZm91ciAxNi1i aXQgdGltZXJzLCB3aGljaCBjYW4gYmUgY2hhaW5lZCBhcyB0d28gMzItYml0IHRpbWVycy4NCisg Ki8NCisjZGVmaW5lIENQTTJfVElNRVIxNl8xCTB4MDANCisjZGVmaW5lIENQTTJfVElNRVIxNl8y CTB4MTENCisjZGVmaW5lIENQTTJfVElNRVIxNl8zCTB4MjINCisjZGVmaW5lIENQTTJfVElNRVIx Nl80CTB4MzMNCisjZGVmaW5lIENQTTJfVElNRVIzMl8xCTB4MDENCisjZGVmaW5lIENQTTJfVElN RVIzMl8yCTB4MjMNCisNCit0eXBlZGVmIHN0cnVjdCByZXNvdXJjZSAqY3BtX3RpbWVyX3Q7DQor dHlwZWRlZiB2b2lkICgqY3BtX3RpbWVyX2YpKGNwbV90aW1lcl90IHRtLCB2b2lkICpkYXRhKTsN CisNCisvKiBBbGxvY2F0ZSBhIHRpbWVyLg0KKyAqIFBhc3MgYSB0aW1lciBpZCwgYW5kIGEgcmVm ZXJlbmNlIHRvIGEgTlVMTCBzdHJ1Y3QgcmVzb3VyY2UgKg0KKyAqIFJldHVybnMgMCBvbiBzdWNj ZXNzLCAtZXJybm8gb24gZXJyb3INCisgKi8NCitpbnQgY3BtX3RpbWVyX2FsbG9jKGludCB0aW1l cl9pZCwgY3BtX3RpbWVyX3QgKnRtKTsNCisNCisvKiBGcmVlIHRpbWVyLCB1c2luZyBjcG1fdGlt ZXJfdCBmcm9tIGNwbV90aW1lcl9hbGxvYw0KKyAqIGNwbV90aW1lcl9mcmVlKCkgd2lsbCBzdG9w IHRoZSB0aW1lciwgYW5kIGFueSBjeWNsZSBvciBvbmUtc2hvdCBmdW5jdGlvbnMNCisgKiBwZW5k aW5nLg0KKyAqLw0KK3ZvaWQgY3BtX3RpbWVyX2ZyZWUoY3BtX3RpbWVyX3QgdG0pOw0KKw0KKy8q IFN0b3AgdGhlIHRpbWVyDQorICovDQordm9pZCBjcG1fdGltZXJfc3RvcChjcG1fdGltZXJfdCB0 bSk7DQorDQorLyogU3RhcnQgdGhlIHRpbWVyDQorICovDQordm9pZCBjcG1fdGltZXJfc3RhcnQo Y3BtX3RpbWVyX3QgdG0pOw0KKw0KKy8qIFJlc2V0IHRoZSB0aW1lciB0byAwDQorICovDQordm9p ZCBjcG1fdGltZXJfcmVzZXQoY3BtX3RpbWVyX3QgdG0pOw0KKw0KKy8qIEdldCB0aGUgdGltZXIg cmVzb2x1dGlvbiwgaW4gbmFub3NlY29uZHMvdGljaw0KKyAqLw0KK3Vuc2lnbmVkIGxvbmcgY3Bt X3RpbWVyX2dldF9yZXNvbHV0aW9uKGNwbV90aW1lcl90IHRtKTsNCisNCisvKiBHZXQgdGhlIHRp bWVyIHZhbHVlLCBpbiB0aWNrcw0KKyAqLw0KK3Vuc2lnbmVkIGxvbmcgY3BtX3RpbWVyX2dldF90 aWNrcyhjcG1fdGltZXJfdCB0bSk7DQorDQorLyogQ2FsbCBhIGZ1bmN0aW9uIGFmdGVyIHNvIG1h bnkgdGlja3MNCisgKiBUaGUgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgaW4gaW50ZXJydXB0IGNv bnRleHQuDQorICoNCisgKiBZb3UgY2Fubm90IGNhbGwgY3BtX3RpbWVyX2ZyZWUoKSB3aXRoaW4g dGhhdCBjb250ZXh0Lg0KKyAqLw0KKw0KKw0KKy8qIFRoaXMgaXMgdGhlIG9uZS1zaG90IHRpbWVy Lg0KKyAqLw0KK2ludCBjcG1fdGltZXJfY2FsbF9vbmNlKGNwbV90aW1lcl90IHRtLCB1bnNpZ25l ZCBsb25nIHRpY2tzLCBjcG1fdGltZXJfZiBmdW5jLCB2b2lkICpkYXRhKTsNCisNCisvKiBUaGlz IGlzIHRoZSByZXBlYXQtdGltZXIgZnVuY3Rpb24NCisgKi8NCitpbnQgY3BtX3RpbWVyX2NhbGxf ZXZlcnkoY3BtX3RpbWVyX3QgdG0sIHVuc2lnbmVkIGxvbmcgdGlja3MsIGNwbV90aW1lcl9mIGZ1 bmMsIHZvaWQgKmRhdGEpOw0KKw0KKy8qIENhbmNlbCBhbnkgcGVuZGluZyB0aW1lciBmdW5jdGlv bnMNCisgKi8NCitpbnQgY3BtX3RpbWVyX2NhbGxfbm9uZShjcG1fdGltZXJfdCB0bSk7DQorDQor DQorI2VuZGlmIC8qIF9fQVNNX0NQTV9USU1FUl9IICovDQo= --=-KXEnYpftYlZtN/zIaf15-- --=-0sr86ImfceoTFEGKyzId Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQBCTFWG8/0vJ5szK6kRAnU3AKClvLbVBFaIa0i5d7zDO3W8JML+awCfQbZF W4JCYpcHrCYJrCq+jfiApa4= =DNFx -----END PGP SIGNATURE----- --=-0sr86ImfceoTFEGKyzId--